-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | HTML5 Canvas Graphics Library - forked Blank Canvas -- -- A Haskell port of the HTML5 Canvas API. blank-canvas works by -- providing a web service that displays the users' Haskell commands -- inside a browser. @package null-canvas @version 0.2.4 module Graphics.Blank -- | 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() --blankCanvas :: Int -> (Context -> IO ()) -> IO () blankCanvasParams :: Int -> (Context -> IO ()) -> FilePath -> Bool -> IO () -- | Context is our abstact handle into a specific 2d-context inside -- a browser. data Context -- | Sends a set of Canvas commands to the canvas. Attempts to common up as -- many commands as possible. send :: Context -> Canvas a -> IO a -- | events gets the raw event queue for a specific event type. 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 () 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 () -- | read a specific event; wait for it if the event is not in queue. readEvent :: EventName -> Canvas Event -- | read a specific event; or return Nothing if the event is not in queue. tryReadEvent :: EventName -> Canvas (Maybe Event) -- | size of the canvas size :: Canvas (Float, Float) -- | Basic Event from Browser, the code is event-type specific. data Event Event :: Int -> Maybe (Int, Int) -> Event jsCode :: Event -> Int jsMouse :: Event -> Maybe (Int, Int) -- | EventName mirrors event names from jquery, where 'map toLower -- (show name)' gives the jquery event name. data EventName KeyPress :: EventName KeyDown :: EventName KeyUp :: EventName MouseDown :: EventName MouseEnter :: EventName MouseMove :: EventName MouseOut :: EventName MouseOver :: EventName MouseUp :: EventName -- | EventQueue is a STM channel (TChan) of Events. -- Intentionally, EventQueue is not abstract. type EventQueue = TChan Event readEventQueue :: EventQueue -> IO Event tryReadEventQueue :: EventQueue -> IO (Maybe Event)