//
// Class to draw and move a T-shirt
//
// @author Kim Bruce
//

dialect "rtobjectdraw"
import "AbstractLaundry" as al
type Laundry = al.Laundry

class pantsAt (startPosn: Point) size (size': Number)
      on (canvas: DrawingCanvas) -> Laundry {
    inherit al.abstractLaundryAt (startPosn) size (size') on (canvas)

    // dimensions of t-shirt pieces relative to size
    def hipWidth: Number = size / 3
    def hipHeight: Number = size / 3

    def legWidth: Number = hipWidth / 2 - 3
    def legHeight: Number = size - hipHeight

    //draw legs and hips
    def leftLegStart: Point = startPosn + (0 @ hipHeight)

    def leftLeg: Graphic2D =
          filledRectAt (leftLegStart) size (legWidth @ legHeight) on (canvas)
    addSolid (leftLeg)

    def leftLegTrim: Graphic2D =
          framedRectAt (leftLegStart) size (legWidth @ legHeight) on (canvas)
    addOutline (leftLegTrim)

    def rightLegStart: Point = startPosn + ((hipWidth - legWidth) @ hipHeight)

    def rightLeg: Graphic2D =
          filledRectAt (rightLegStart) size (legWidth @ legHeight) on (canvas)
    addSolid(rightLeg)

    def rightLegTrim: Graphic2D =
          framedRectAt (rightLegStart) size (legWidth @ legHeight) on (canvas)
    addOutline (rightLegTrim)

    def hips: Graphic2D =
          filledRectAt (startPosn) size (hipWidth @ hipHeight) on (canvas)
    addSolid (hips)

    def hipTrim: Graphic2D =
          framedRectAt (startPosn) size (hipWidth @ hipHeight) on (canvas)
    addOutline (hipTrim)

          // string representation of shirt
    method asString -> String {
        "Pants at {upperLeft} colored {solid.at (1).color} having size {size'}"
    }
}

