DysFRP-Craftwerk-0.1: Control/DysFRP/Craftwerk.hs
module Control.DysFRP.Craftwerk(
drawFigureOnDrawable,
render, renderB,
compositionB, rotateB, translateB, translate2B, scaleB, scale2B
) where
import qualified Control.DysFRP as R
import Control.DysFRP.Cairo
import Data.IORef
import Control.Applicative
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Gdk.GC
import Graphics.Craftwerk.Core
import Graphics.Craftwerk.UI.Gtk hiding (RenderContext)
import qualified Graphics.Rendering.Cairo as C
import Foreign.Ptr
import qualified Data.Map as Map
import Data.Traversable
drawFigureOnDrawable :: DrawableClass d => Double -> Double -> d -> Figure -> IO ()
drawFigureOnDrawable px py srf fig = drawContextOnDrawable srf (render px py fig)
renderB :: Double -> Double -> R.Behavior Figure -> R.Behavior (RenderContext)
renderB px py = fmap (render px py)
render :: Double -> Double -> Figure -> RenderContext
render px py fig = cairo (renderFigure px py (\_ -> return fig)) Map.empty
compositionB :: [R.Behavior Figure] -> R.Behavior Figure
compositionB = fmap composition . sequenceA
rotateB :: R.Behavior Double -> R.Behavior Figure -> R.Behavior Figure
rotateB = liftA2 rotate
translateB :: R.Behavior Vector -> R.Behavior Figure -> R.Behavior Figure
translateB = liftA2 translate
translate2B :: R.Behavior Double -> R.Behavior Double -> R.Behavior Figure -> R.Behavior Figure
translate2B x y = translateB (liftA2 (,) x y)
scaleB :: R.Behavior Vector -> R.Behavior Figure -> R.Behavior Figure
scaleB = liftA2 scale
scale2B :: R.Behavior Double -> R.Behavior Double -> R.Behavior Figure -> R.Behavior Figure
scale2B x y = scaleB (liftA2 (,) x y)