packages feed

fudgets-0.18.3: Demos/Tiles/DrawingF.hs

module DrawingF where

import AllFudgets
import MyUtils

{-
drawDisplayF size drawing =
  let startcmds = [ ConfigureWindow [CWBorderWidth 0],
		    layoutRequestCmd (plainLayout size True True),
		    ChangeWindowAttributes [ CWEventMask [ExposureMask]
					     --,CWBackingStore WhenMapped
					   ]
		  ]
  in windowF startcmds (drawDisplayK drawing)

drawDisplayK drawing =
  wCreateGC rootGC [GCFunction GXcopy] (\gc -> drawDisplayP gc drawing)

drawDisplayP gc drawing0 =
  let draw drawing = map (Low . Draw MyWindow gc) drawing
  in let step drawing msg =
	   case msg of
		Low (Expose _ 0) -> (drawing, draw drawing)
		High drawing'   -> (drawing',Low ClearWindow:(draw drawing'))
		_		 -> (drawing,[])
  in putsK (draw drawing0) $ mapstateSP step drawing0
-}
------

drawDisplayCF size drawing =
  let startcmds =  [ XCmd $ ConfigureWindow [CWBorderWidth 0],
		    layoutRequestCmd (plainLayout size True True),
		     XCmd $ ChangeWindowAttributes [ CWEventMask [ExposureMask
							,ButtonPressMask]
					     --,CWBackingStore WhenMapped
					   ]
		  ]
  in windowF startcmds (drawDisplayCK drawing)

drawDisplayCK drawing =
  wCreateGC rootGC [GCFunction GXcopy] (\gc -> drawDisplayCP gc drawing)

drawDisplayCP gc drawing0 =
  let draw drawing = map (Low . wDraw gc) drawing
  in let step drawing msg =
	   case msg of
		Low (XEvt (Expose _ 0)) -> (drawing, draw drawing)
		High drawingf'   -> let drawing' = drawingf' drawing
				    in (drawing',Low (XCmd ClearWindow):(draw drawing'))
		Low (XEvt (ButtonEvent t x y m Pressed b)) -> 
		    (drawing,High (ButtonEvent t x y m Pressed b):(draw drawing))
		_		 -> (drawing,[])
  in putsK (draw drawing0) $ K $ mapstateSP step drawing0

------

drawDisplayCKF size drawing =
  let startcmds = [ XCmd $ ConfigureWindow [CWBorderWidth 0],
		    layoutRequestCmd (plainLayout size True True),
		    XCmd $ ChangeWindowAttributes [ CWEventMask [ExposureMask
							,ButtonPressMask]
					     --,CWBackingStore WhenMapped
					   ]
		  ]
  in windowF startcmds (drawDisplayCKK drawing)

drawDisplayCKK drawing =
  wCreateGC rootGC [GCFunction GXcopy] (\gc -> drawDisplayCKP gc drawing)

drawDisplayCKP gc drawing0 =
  let draw drawing = map (Low . wDraw gc) (drawing0++drawing)
  in let step drawing msg =
	   case msg of
		Low (XEvt (Expose _ 0)) -> (drawing, draw drawing)
		High drawingf'   -> let drawing' = drawingf' drawing
				    in (drawing',Low (XCmd ClearWindow):(draw drawing'))
		Low (XEvt (ButtonEvent t x y m Pressed b)) -> 
		    (drawing,High (ButtonEvent t x y m Pressed b):(draw drawing))
		_		 -> (drawing,[])
  in putsK (draw []) $ K $ mapstateSP step drawing0

------

drawDisplayDF size drawing =
  let startcmds = [ XCmd $ ConfigureWindow [CWBorderWidth 0],
		    layoutRequestCmd (plainLayout size True True),
		    XCmd $ ChangeWindowAttributes [ CWEventMask [ExposureMask
							,ButtonPressMask]
					     --,CWBackingStore WhenMapped
					   ]
		  ]
  in windowF startcmds (drawDisplayDK drawing)

drawDisplayDK drawing =
  wCreateGC rootGC [GCFunction GXcopy] (\gc -> drawDisplayDP gc drawing)

drawDisplayDP gc drawing0 =
  let draw drawing = map (Low . wDraw gc) drawing
  in let step drawing msg =
	   case msg of
		Low (XEvt (Expose _ 0)) -> (drawing, draw drawing)
		High drawingf'   -> let drawing' = drawingf' drawing
				    in (drawing',Low (XCmd ClearWindow):(draw drawing'))
		Low (XEvt (ButtonEvent _ _ _ _ Pressed _)) -> 
		    (drawing,High (drawing):(draw drawing))
		_		 -> (drawing,[])
  in putsK (draw drawing0) $ K $ mapstateSP step drawing0