| Safe Haskell | None | 
|---|
Graphics.Blank
- blankCanvas :: Int -> (Context -> IO ()) -> IO ()
 - blankCanvasMany :: Int -> [(String, Context -> IO ())] -> IO ()
 - blankCanvasManyParams :: Int -> [(String, Context -> IO ())] -> FilePath -> Bool -> IO ()
 - blankCanvasParams :: Int -> (Context -> IO ()) -> FilePath -> Bool -> String -> IO ()
 - blankCanvasParamsScotty :: (Context -> IO ()) -> FilePath -> Bool -> String -> IO (ScottyM ())
 - data Context
 - send :: Context -> Canvas a -> IO a
 - events :: Context -> EventName -> IO EventQueue
 - data Canvas
 - arc :: (Float, Float, Float, Float, Float, Bool) -> Canvas ()
 - beginPath :: Canvas ()
 - bezierCurveTo :: (Float, Float, Float, Float, Float, Float) -> Canvas ()
 - clearRect :: (Float, Float, Float, Float) -> Canvas ()
 - closePath :: Canvas ()
 - custom :: String -> Canvas ()
 - fill :: Canvas ()
 - fillRect :: (Float, Float, Float, Float) -> Canvas ()
 - fillStyle :: String -> Canvas ()
 - fillText :: (String, Float, Float) -> Canvas ()
 - font :: String -> Canvas ()
 - globalAlpha :: Float -> Canvas ()
 - lineCap :: String -> Canvas ()
 - lineJoin :: String -> Canvas ()
 - lineTo :: (Float, Float) -> Canvas ()
 - lineWidth :: Float -> Canvas ()
 - miterLimit :: Float -> Canvas ()
 - moveTo :: (Float, Float) -> Canvas ()
 - restore :: Canvas ()
 - rotate :: Float -> Canvas ()
 - scale :: (Float, Float) -> Canvas ()
 - save :: Canvas ()
 - stroke :: Canvas ()
 - strokeRect :: (Float, Float, Float, Float) -> Canvas ()
 - strokeText :: (String, Float, Float) -> Canvas ()
 - strokeStyle :: String -> Canvas ()
 - textAlign :: String -> Canvas ()
 - textBaseline :: String -> Canvas ()
 - transform :: (Float, Float, Float, Float, Float, Float) -> Canvas ()
 - translate :: (Float, Float) -> Canvas ()
 - readEvent :: EventName -> Canvas Event
 - tryReadEvent :: EventName -> Canvas (Maybe Event)
 - size :: Canvas (Float, Float)
 - data Event = Event {}
 - data EventName
 - type EventQueue = TChan Event
 - readEventQueue :: EventQueue -> IO Event
 - tryReadEventQueue :: EventQueue -> IO (Maybe Event)
 
Starting blank-canvas
blankCanvas :: Int -> (Context -> IO ()) -> IO ()Source
blankCanvas is the main entry point into blank-canvas. A typical invocation would be
module Main where
import Graphics.Blank
main = blankCanvas 3000 $ \ context -> do
        send context $ do
                moveTo(50,50)
                lineTo(200,100)
                lineWidth 10
                strokeStyle "red"
                stroke()
launch single-canvas app on specified port
blankCanvasMany :: Int -> [(String, Context -> IO ())] -> IO ()Source
launch multiple canvas apps, each with a prefix, like `/myprefix/foo/bar`
blankCanvasManyParams :: Int -> [(String, Context -> IO ())] -> FilePath -> Bool -> IO ()Source
as blankCanvasMany but takes customization parameters dataDir and performLogging
blankCanvasParams :: Int -> (Context -> IO ()) -> FilePath -> Bool -> String -> IO ()Source
as blankCanvas but takes customization parameters dataDir and performLogging
blankCanvasParamsScotty :: (Context -> IO ()) -> FilePath -> Bool -> String -> IO (ScottyM ())Source
parametrised version of blankCanvas, also returns ScottyM application instead of running a server. use scotty to run it.
Graphics Context
send :: Context -> Canvas a -> IO aSource
Sends a set of Canvas commands to the canvas. Attempts to common up as many commands as possible.
events :: Context -> EventName -> IO EventQueueSource
events gets the raw event queue for a specific event type.
Drawing pictures using the Canvas DSL
custom :: String -> Canvas ()Source
sends command (JS) unchanged. useful for extending this library with functionality it doesn't currently have. example:
 custom $ unlines $ [
       "var grd=c.createRadialGradient(0,0,3,20,20,10); "
      ,"grd.addColorStop(0,\"white\");"
      ,"grd.addColorStop(1,\"red\");"
      ,"c.fillStyle=grd;"]
see bottom of http://www.w3schools.com/tags/ref_canvas.asp
see bottom of http://www.w3schools.com/tags/ref_canvas.asp
readEvent :: EventName -> Canvas EventSource
read a specific event; wait for it if the event is not in queue.
tryReadEvent :: EventName -> Canvas (Maybe Event)Source
read a specific event; or return Nothing if the event is not in queue.
Events
Basic Event from Browser, the code is event-type specific.
EventName mirrors event names from jquery, where 'map toLower (show name)' gives
 the jquery event name.
type EventQueue = TChan EventSource
EventQueue is a STM channel (TChan) of Events.
 Intentionally, EventQueue is not abstract.
tryReadEventQueue :: EventQueue -> IO (Maybe Event)Source