Copyright | (c) 2015 Jeffrey Rosenbluth |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | jeffrey.rosenbluth@gmail.com |
Safe Haskell | None |
Language | Haskell2010 |
A small DSL for creating HTML5 Canvas with haskell.
module Main where import Graphics.Static import Graphics.Static.ColorNames text :: CanvasFree () text = do font "italic 60pt Calibri" lineWidth 6 strokeStyle blue fillStyle goldenrod textBaseline TextBaselineMiddle strokeText "Hello" 25 100 fillText "Hello static-canvas!" 25 100 main :: IO () main = writeCanvasDoc "example.html" 650 300 text
The static-canvas API shadows the actual Javascript API, and thus the best place to look for a more detailed definition of the canvas functions including the definitions of it's aruments see http://www.w3.org/TR/2dcontext/.
- evalScript :: Text -> CanvasFree a -> Builder
- buildScript :: Int -> Int -> CanvasFree () -> Builder
- buildScript' :: Int -> Int -> Text -> CanvasFree () -> Builder
- buildDoc :: Int -> Int -> CanvasFree () -> Builder
- writeCanvasScript :: FilePath -> Int -> Int -> CanvasFree () -> IO ()
- writeCanvasScript' :: FilePath -> Int -> Int -> Text -> CanvasFree () -> IO ()
- writeCanvasDoc :: FilePath -> Int -> Int -> CanvasFree () -> IO ()
- type CanvasFree = F Canvas
- beginPath :: CanvasFree ()
- closePath :: CanvasFree ()
- fill :: CanvasFree ()
- stroke :: CanvasFree ()
- clip :: CanvasFree ()
- moveTo :: Double -> Double -> CanvasFree ()
- lineTo :: Double -> Double -> CanvasFree ()
- quadraticCurveTo :: Double -> Double -> Double -> Double -> CanvasFree ()
- bezierCurveTo :: Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree ()
- arcTo :: Double -> Double -> Double -> Double -> Double -> CanvasFree ()
- arc :: Double -> Double -> Double -> Double -> Double -> Bool -> CanvasFree ()
- rect :: Double -> Double -> Double -> Double -> CanvasFree ()
- lineWidth :: Double -> CanvasFree ()
- lineCap :: LineCapStyle -> CanvasFree ()
- lineJoin :: LineJoinStyle -> CanvasFree ()
- miterLimit :: Double -> CanvasFree ()
- data LineCapStyle
- data LineJoinStyle
- strokeStyle :: Style -> CanvasFree ()
- fillStyle :: Style -> CanvasFree ()
- shadowOffsetX :: Double -> CanvasFree ()
- shadowOffsetY :: Double -> CanvasFree ()
- shadowBlur :: Double -> CanvasFree ()
- shadowColor :: Color -> CanvasFree ()
- createLinearGradient :: Double -> Double -> Double -> Double -> CanvasFree Style
- createRadialGradient :: Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree Style
- addColorStop :: Double -> Color -> Style -> CanvasFree ()
- data Gradient
- createPattern :: Int -> RepeatStyle -> CanvasFree Style
- data RepeatStyle
- data Color
- data Style
- rgb :: Int -> Int -> Int -> Style
- rgba :: Int -> Int -> Int -> Double -> Style
- font :: Text -> CanvasFree ()
- textAlign :: TextAlignStyle -> CanvasFree ()
- textBaseline :: TextBaselineStyle -> CanvasFree ()
- fillText :: Text -> Double -> Double -> CanvasFree ()
- strokeText :: Text -> Double -> Double -> CanvasFree ()
- data TextAlignStyle
- data TextBaselineStyle
- clearRect :: Double -> Double -> Double -> Double -> CanvasFree ()
- fillRect :: Double -> Double -> Double -> Double -> CanvasFree ()
- strokeRect :: Double -> Double -> Double -> Double -> CanvasFree ()
- save :: CanvasFree ()
- restore :: CanvasFree ()
- scale :: Double -> Double -> CanvasFree ()
- rotate :: Double -> CanvasFree ()
- translate :: Double -> Double -> CanvasFree ()
- transform :: Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree ()
- setTransform :: Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree ()
- drawImageAt :: Int -> Double -> Double -> CanvasFree ()
- drawImageSize :: Int -> Double -> Double -> Double -> Double -> CanvasFree ()
- drawImageCrop :: Int -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree ()
- newImage :: Text -> CanvasFree Int
- onImageLoad :: Int -> CanvasFree () -> CanvasFree ()
- globalAlpha :: Double -> CanvasFree ()
- globalCompositeOperation :: CompositeOperation -> CanvasFree ()
- data CompositeOperation
Building and Writing
evalScript :: Text -> CanvasFree a -> Builder Source
Evaluate a static-canvas program and return the javascript code in a Builder
.
The first parameter should be a unique identifier to avoid name clashes with
other canvas elements in the html document.
buildScript :: Int -> Int -> CanvasFree () -> Builder Source
Create a Builder
representing a canvas script.
buildScript' :: Int -> Int -> Text -> CanvasFree () -> Builder Source
More general version of buildScript
, that takes a unique identifier
as an additional parameter so that multiple canvas elements can be included
in the same html document.
buildDoc :: Int -> Int -> CanvasFree () -> Builder Source
Create a Builder
representing a canvas document.
writeCanvasScript :: FilePath -> Int -> Int -> CanvasFree () -> IO () Source
Write a canvas script element to a file.
writeCanvasScript' :: FilePath -> Int -> Int -> Text -> CanvasFree () -> IO () Source
More general version of writeCanvasScript
, that takes a unique identifier
as an additional parameter so that multiple canvas elements can be included
in the same html document.
writeCanvasDoc :: FilePath -> Int -> Int -> CanvasFree () -> IO () Source
Write a canvas document to a file.
HTML5 Canvas API
type CanvasFree = F Canvas Source
Paths
beginPath :: CanvasFree () Source
closePath :: CanvasFree () Source
fill :: CanvasFree () Source
stroke :: CanvasFree () Source
clip :: CanvasFree () Source
moveTo :: Double -> Double -> CanvasFree () Source
lineTo :: Double -> Double -> CanvasFree () Source
quadraticCurveTo :: Double -> Double -> Double -> Double -> CanvasFree () Source
A quadratic bezier curve.
bezierCurveTo :: Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree () Source
Cubic Bezier curve.
Line styles
lineWidth :: Double -> CanvasFree () Source
Set the line width.
lineCap :: LineCapStyle -> CanvasFree () Source
lineJoin :: LineJoinStyle -> CanvasFree () Source
miterLimit :: Double -> CanvasFree () Source
Colors, styles and shadows
strokeStyle :: Style -> CanvasFree () Source
fillStyle :: Style -> CanvasFree () Source
shadowOffsetX :: Double -> CanvasFree () Source
shadowOffsetY :: Double -> CanvasFree () Source
shadowBlur :: Double -> CanvasFree () Source
shadowColor :: Color -> CanvasFree () Source
createLinearGradient :: Double -> Double -> Double -> Double -> CanvasFree Style Source
createRadialGradient :: Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree Style Source
addColorStop :: Double -> Color -> Style -> CanvasFree () Source
createPattern :: Int -> RepeatStyle -> CanvasFree Style Source
Color utilities
Text
font :: Text -> CanvasFree () Source
textAlign :: TextAlignStyle -> CanvasFree () Source
textBaseline :: TextBaselineStyle -> CanvasFree () Source
strokeText :: Text -> Double -> Double -> CanvasFree () Source
data TextBaselineStyle Source
Rectangles
strokeRect :: Double -> Double -> Double -> Double -> CanvasFree () Source
Context
save :: CanvasFree () Source
Push the current state onto the stack.
restore :: CanvasFree () Source
Pop the top state of the stack.
Transformations
scale :: Double -> Double -> CanvasFree () Source
rotate :: Double -> CanvasFree () Source
translate :: Double -> Double -> CanvasFree () Source
setTransform :: Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree () Source
Images
drawImageAt :: Int -> Double -> Double -> CanvasFree () Source
drawImageSize :: Int -> Double -> Double -> Double -> Double -> CanvasFree () Source
drawImageCrop :: Int -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> CanvasFree () Source
newImage :: Text -> CanvasFree Int Source
onImageLoad :: Int -> CanvasFree () -> CanvasFree () Source
Useful for commands that need to wait for an image to load before being called. For example
image = do img <- newImage "http://www.staticcanvas.com/picture.png" onImageLoad img (drawImageAt img 0 0)
Compositing
globalAlpha :: Double -> CanvasFree () Source