Drawcmd

module Drawcmd(move, moveDrawCommands, moveDrawCommand) where
import DrawTypes
import Geometry(Move(..))
--import Xtypes

instance Move DrawCommand where move = flip moveDrawCommand

moveDrawCommand cmd v =
    case cmd of
      DrawLine l -> DrawLine (move v l)
      DrawLines cm ps -> DrawLines cm (movePoints cm ps v)
      DrawImageString p s -> DrawImageString (move v p) s
      DrawString p s -> DrawString (move v p) s
      DrawRectangle r -> DrawRectangle (move v r)
      FillRectangle r -> FillRectangle (move v r)
      FillPolygon shape coordMode ps ->
	FillPolygon shape coordMode (movePoints coordMode ps v)
      DrawArc r a1 a2 -> DrawArc (move v r) a1 a2
      FillArc r a1 a2 -> FillArc (move v r) a1 a2
      CopyArea d r p -> CopyArea d r (move v p)
      CopyPlane d r p n -> CopyPlane d r (move v p) n
      DrawPoint p -> DrawPoint (move v p)
      CreatePutImage r fmt pxls -> CreatePutImage (move v r) fmt pxls
      DrawImageStringPS p s -> DrawImageStringPS (move v p) s
      DrawStringPS p s -> DrawStringPS (move v p) s
      DrawImageString16 p s -> DrawImageString16 (move v p) s
      DrawString16 p s -> DrawString16 (move v p) s

movePoints cm ps v =
 case cm of
   CoordModeOrigin -> move v ps
   CoordModePrevious ->
     case ps of
       p:ps' -> move v p:ps'
       [] -> []

moveDrawCommands cmds p = map (`moveDrawCommand` p) cmds