{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
module Miso.Canvas.FFI
( jsString
, clearRect
, fillRect
, strokeRect
, rect
, quadraticCurveTo
, beginPath
, closePath
, fill
, stroke
, clip
, save
, restore
, moveTo
, lineTo
, scale
, translate
, rotate
, bezierCurveTo
, transform
, setTransform
, arc
, arcTo
, fillText
, strokeText
, drawImage
, drawImage4
, putImageData
, lineWidth
, miterLimit
, shadowBlur
, shadowOffsetX
, shadowOffsetY
, globalAlpha
, font
, lineCap
, lineJoin
, direction
, textAlign
, textBaseline
, globalCompositeOperation
, shadowColor
, fillStyle
, strokeStyle
, fillStyleRGB
, fillStyleRGBA
, strokeStyleRGB
, strokeStyleRGBA
, shadowColorRGB
, shadowColorRGBA
) where
import Miso.String (MisoString)
#if defined(GHCJS_NEW) || defined(wasm32_HOST_ARCH) || defined(__MHS__)
import Miso.DSL.FFI (JSVal, JSString (..))
#ifdef MISO_TEXT
import Miso.DSL.FFI (textToJSString)
#endif
#else
import Control.Monad (void)
import Miso.CSS.Color (Color (..), renderColor)
import Miso.DSL (JSVal, (#), setField)
#endif
#if !(defined(GHCJS_NEW) || defined(wasm32_HOST_ARCH) || defined(__MHS__))
jsString :: MisoString -> MisoString
jsString :: Text -> Text
jsString Text
s = Text
s
#elif defined(MISO_TEXT)
jsString :: MisoString -> JSString
jsString = textToJSString
#else
jsString :: MisoString -> JSString
jsString s = s
#endif
#if defined(GHCJS_NEW)
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.clearRect($2,$3,$4,$5); })"
clearRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.fillRect($2,$3,$4,$5); })"
fillRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.strokeRect($2,$3,$4,$5); })"
strokeRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.rect($2,$3,$4,$5); })"
rect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.quadraticCurveTo($2,$3,$4,$5); })"
quadraticCurveTo :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1) => { $1.beginPath(); })"
beginPath :: JSVal -> IO ()
foreign import javascript unsafe "(($1) => { $1.closePath(); })"
closePath :: JSVal -> IO ()
foreign import javascript unsafe "(($1) => { $1.fill(); })"
fill :: JSVal -> IO ()
foreign import javascript unsafe "(($1) => { $1.stroke(); })"
stroke :: JSVal -> IO ()
foreign import javascript unsafe "(($1) => { $1.clip(); })"
clip :: JSVal -> IO ()
foreign import javascript unsafe "(($1) => { $1.save(); })"
save :: JSVal -> IO ()
foreign import javascript unsafe "(($1) => { $1.restore(); })"
restore :: JSVal -> IO ()
foreign import javascript unsafe "(($1,$2,$3) => { $1.moveTo($2,$3); })"
moveTo :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3) => { $1.lineTo($2,$3); })"
lineTo :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3) => { $1.scale($2,$3); })"
scale :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3) => { $1.translate($2,$3); })"
translate :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.rotate($2); })"
rotate :: JSVal -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5,$6,$7) => { $1.bezierCurveTo($2,$3,$4,$5,$6,$7); })"
bezierCurveTo :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5,$6,$7) => { $1.transform($2,$3,$4,$5,$6,$7); })"
transform :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5,$6,$7) => { $1.setTransform($2,$3,$4,$5,$6,$7); })"
setTransform :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5,$6) => { $1.arc($2,$3,$4,$5,$6); })"
arc :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5,$6) => { $1.arcTo($2,$3,$4,$5,$6); })"
arcTo :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4) => { $1.fillText($2,$3,$4); })"
fillText :: JSVal -> JSString -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4) => { $1.strokeText($2,$3,$4); })"
strokeText :: JSVal -> JSString -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4) => { $1.drawImage($2,$3,$4); })"
drawImage :: JSVal -> JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5,$6) => { $1.drawImage($2,$3,$4,$5,$6); })"
drawImage4 :: JSVal -> JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4) => { $1.putImageData($2,$3,$4); })"
putImageData :: JSVal -> JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.lineWidth = $2; })"
lineWidth :: JSVal -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.miterLimit = $2; })"
miterLimit :: JSVal -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.shadowBlur = $2; })"
shadowBlur :: JSVal -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.shadowOffsetX = $2; })"
shadowOffsetX :: JSVal -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.shadowOffsetY = $2; })"
shadowOffsetY :: JSVal -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.globalAlpha = $2; })"
globalAlpha :: JSVal -> Double -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.font = $2; })"
font :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.lineCap = $2; })"
lineCap :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.lineJoin = $2; })"
lineJoin :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.direction = $2; })"
direction :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.textAlign = $2; })"
textAlign :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.textBaseline = $2; })"
textBaseline :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.globalCompositeOperation = $2; })"
globalCompositeOperation :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.shadowColor = $2; })"
shadowColor :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.fillStyle = $2; })"
fillStyle :: JSVal -> JSVal -> IO ()
foreign import javascript unsafe "(($1,$2) => { $1.strokeStyle = $2; })"
strokeStyle :: JSVal -> JSVal -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4) => { $1.fillStyle = 'rgb(' + $2 + ',' + $3 + ',' + $4 + ')'; })"
fillStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.fillStyle = 'rgba(' + $2 + ',' + $3 + ',' + $4 + ',' + $5 + ')'; })"
fillStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4) => { $1.strokeStyle = 'rgb(' + $2 + ',' + $3 + ',' + $4 + ')'; })"
strokeStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.strokeStyle = 'rgba(' + $2 + ',' + $3 + ',' + $4 + ',' + $5 + ')'; })"
strokeStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4) => { $1.shadowColor = 'rgb(' + $2 + ',' + $3 + ',' + $4 + ')'; })"
shadowColorRGB :: JSVal -> Int -> Int -> Int -> IO ()
foreign import javascript unsafe "(($1,$2,$3,$4,$5) => { $1.shadowColor = 'rgba(' + $2 + ',' + $3 + ',' + $4 + ',' + $5 + ')'; })"
shadowColorRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
#elif defined(wasm32_HOST_ARCH) || defined(__MHS__)
foreign import javascript unsafe "$1.clearRect($2,$3,$4,$5)"
clearRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.fillRect($2,$3,$4,$5)"
fillRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.strokeRect($2,$3,$4,$5)"
strokeRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.rect($2,$3,$4,$5)"
rect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.quadraticCurveTo($2,$3,$4,$5)"
quadraticCurveTo :: JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.beginPath()"
beginPath :: JSVal -> IO ()
foreign import javascript unsafe "$1.closePath()"
closePath :: JSVal -> IO ()
foreign import javascript unsafe "$1.fill()"
fill :: JSVal -> IO ()
foreign import javascript unsafe "$1.stroke()"
stroke :: JSVal -> IO ()
foreign import javascript unsafe "$1.clip()"
clip :: JSVal -> IO ()
foreign import javascript unsafe "$1.save()"
save :: JSVal -> IO ()
foreign import javascript unsafe "$1.restore()"
restore :: JSVal -> IO ()
foreign import javascript unsafe "$1.moveTo($2,$3)"
moveTo :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.lineTo($2,$3)"
lineTo :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.scale($2,$3)"
scale :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.translate($2,$3)"
translate :: JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.rotate($2)"
rotate :: JSVal -> Double -> IO ()
foreign import javascript unsafe "$1.bezierCurveTo($2,$3,$4,$5,$6,$7)"
bezierCurveTo :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.transform($2,$3,$4,$5,$6,$7)"
transform :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.setTransform($2,$3,$4,$5,$6,$7)"
setTransform :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.arc($2,$3,$4,$5,$6)"
arc :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.arcTo($2,$3,$4,$5,$6)"
arcTo :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.fillText($2,$3,$4)"
fillText :: JSVal -> JSString -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.strokeText($2,$3,$4)"
strokeText :: JSVal -> JSString -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.drawImage($2,$3,$4)"
drawImage :: JSVal -> JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.drawImage($2,$3,$4,$5,$6)"
drawImage4 :: JSVal -> JSVal -> Double -> Double -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.putImageData($2,$3,$4)"
putImageData :: JSVal -> JSVal -> Double -> Double -> IO ()
foreign import javascript unsafe "$1.lineWidth = $2"
lineWidth :: JSVal -> Double -> IO ()
foreign import javascript unsafe "$1.miterLimit = $2"
miterLimit :: JSVal -> Double -> IO ()
foreign import javascript unsafe "$1.shadowBlur = $2"
shadowBlur :: JSVal -> Double -> IO ()
foreign import javascript unsafe "$1.shadowOffsetX = $2"
shadowOffsetX :: JSVal -> Double -> IO ()
foreign import javascript unsafe "$1.shadowOffsetY = $2"
shadowOffsetY :: JSVal -> Double -> IO ()
foreign import javascript unsafe "$1.globalAlpha = $2"
globalAlpha :: JSVal -> Double -> IO ()
foreign import javascript unsafe "$1.font = $2"
font :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.lineCap = $2"
lineCap :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.lineJoin = $2"
lineJoin :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.direction = $2"
direction :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.textAlign = $2"
textAlign :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.textBaseline = $2"
textBaseline :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.globalCompositeOperation = $2"
globalCompositeOperation :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.shadowColor = $2"
shadowColor :: JSVal -> JSString -> IO ()
foreign import javascript unsafe "$1.fillStyle = $2"
fillStyle :: JSVal -> JSVal -> IO ()
foreign import javascript unsafe "$1.strokeStyle = $2"
strokeStyle :: JSVal -> JSVal -> IO ()
foreign import javascript unsafe "$1.fillStyle = 'rgb(' + $2 + ',' + $3 + ',' + $4 + ')'"
fillStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
foreign import javascript unsafe "$1.fillStyle = 'rgba(' + $2 + ',' + $3 + ',' + $4 + ',' + $5 + ')'"
fillStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
foreign import javascript unsafe "$1.strokeStyle = 'rgb(' + $2 + ',' + $3 + ',' + $4 + ')'"
strokeStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
foreign import javascript unsafe "$1.strokeStyle = 'rgba(' + $2 + ',' + $3 + ',' + $4 + ',' + $5 + ')'"
strokeStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
foreign import javascript unsafe "$1.shadowColor = 'rgb(' + $2 + ',' + $3 + ',' + $4 + ')'"
shadowColorRGB :: JSVal -> Int -> Int -> Int -> IO ()
foreign import javascript unsafe "$1.shadowColor = 'rgba(' + $2 + ',' + $3 + ',' + $4 + ',' + $5 + ')'"
shadowColorRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
#else
clearRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
clearRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
clearRect JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"clearRect" ((Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3))
fillRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
fillRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
fillRect JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"fillRect" ((Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3))
strokeRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
strokeRect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
strokeRect JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"strokeRect" ((Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3))
rect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
rect :: JSVal -> Double -> Double -> Double -> Double -> IO ()
rect JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"rect" ((Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3))
quadraticCurveTo :: JSVal -> Double -> Double -> Double -> Double -> IO ()
quadraticCurveTo :: JSVal -> Double -> Double -> Double -> Double -> IO ()
quadraticCurveTo JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"quadraticCurveTo" ((Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3))
beginPath :: JSVal -> IO ()
beginPath :: JSVal -> IO ()
beginPath JSVal
ctx = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"beginPath" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
closePath :: JSVal -> IO ()
closePath :: JSVal -> IO ()
closePath JSVal
ctx = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"closePath" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
fill :: JSVal -> IO ()
fill :: JSVal -> IO ()
fill JSVal
ctx = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"fill" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
stroke :: JSVal -> IO ()
stroke :: JSVal -> IO ()
stroke JSVal
ctx = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"stroke" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
clip :: JSVal -> IO ()
clip :: JSVal -> IO ()
clip JSVal
ctx = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"clip" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
save :: JSVal -> IO ()
save :: JSVal -> IO ()
save JSVal
ctx = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"save" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
restore :: JSVal -> IO ()
restore :: JSVal -> IO ()
restore JSVal
ctx = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"restore" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
moveTo :: JSVal -> Double -> Double -> IO ()
moveTo :: JSVal -> Double -> Double -> IO ()
moveTo JSVal
ctx Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"moveTo" ((Double, Double) -> IO JSVal) -> (Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1))
lineTo :: JSVal -> Double -> Double -> IO ()
lineTo :: JSVal -> Double -> Double -> IO ()
lineTo JSVal
ctx Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"lineTo" ((Double, Double) -> IO JSVal) -> (Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1))
scale :: JSVal -> Double -> Double -> IO ()
scale :: JSVal -> Double -> Double -> IO ()
scale JSVal
ctx Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"scale" ((Double, Double) -> IO JSVal) -> (Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1))
translate :: JSVal -> Double -> Double -> IO ()
translate :: JSVal -> Double -> Double -> IO ()
translate JSVal
ctx Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"translate" ((Double, Double) -> IO JSVal) -> (Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1))
rotate :: JSVal -> Double -> IO ()
rotate :: JSVal -> Double -> IO ()
rotate JSVal
ctx Double
a0 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> Double -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"rotate" (Double -> IO JSVal) -> Double -> IO JSVal
forall a b. (a -> b) -> a -> b
$ Double
a0)
bezierCurveTo :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
bezierCurveTo :: JSVal
-> Double
-> Double
-> Double
-> Double
-> Double
-> Double
-> IO ()
bezierCurveTo JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 Double
a4 Double
a5 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal
-> Text
-> (Double, Double, Double, Double, Double, Double)
-> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"bezierCurveTo" ((Double, Double, Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3,Double
a4,Double
a5))
transform :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
transform :: JSVal
-> Double
-> Double
-> Double
-> Double
-> Double
-> Double
-> IO ()
transform JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 Double
a4 Double
a5 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal
-> Text
-> (Double, Double, Double, Double, Double, Double)
-> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"transform" ((Double, Double, Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3,Double
a4,Double
a5))
setTransform :: JSVal -> Double -> Double -> Double -> Double -> Double -> Double -> IO ()
setTransform :: JSVal
-> Double
-> Double
-> Double
-> Double
-> Double
-> Double
-> IO ()
setTransform JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 Double
a4 Double
a5 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal
-> Text
-> (Double, Double, Double, Double, Double, Double)
-> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"setTransform" ((Double, Double, Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3,Double
a4,Double
a5))
arc :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
arc :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
arc JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 Double
a4 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal
-> Text -> (Double, Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"arc" ((Double, Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3,Double
a4))
arcTo :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
arcTo :: JSVal -> Double -> Double -> Double -> Double -> Double -> IO ()
arcTo JSVal
ctx Double
a0 Double
a1 Double
a2 Double
a3 Double
a4 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal
-> Text -> (Double, Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"arcTo" ((Double, Double, Double, Double, Double) -> IO JSVal)
-> (Double, Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Double
a0,Double
a1,Double
a2,Double
a3,Double
a4))
fillText :: JSVal -> MisoString -> Double -> Double -> IO ()
fillText :: JSVal -> Text -> Double -> Double -> IO ()
fillText JSVal
ctx Text
o Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Text, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"fillText" ((Text, Double, Double) -> IO JSVal)
-> (Text, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Text
o,Double
a0,Double
a1))
strokeText :: JSVal -> MisoString -> Double -> Double -> IO ()
strokeText :: JSVal -> Text -> Double -> Double -> IO ()
strokeText JSVal
ctx Text
o Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (Text, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"strokeText" ((Text, Double, Double) -> IO JSVal)
-> (Text, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Text
o,Double
a0,Double
a1))
drawImage :: JSVal -> JSVal -> Double -> Double -> IO ()
drawImage :: JSVal -> JSVal -> Double -> Double -> IO ()
drawImage JSVal
ctx JSVal
o Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (JSVal, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"drawImage" ((JSVal, Double, Double) -> IO JSVal)
-> (JSVal, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
o,Double
a0,Double
a1))
drawImage4 :: JSVal -> JSVal -> Double -> Double -> Double -> Double -> IO ()
drawImage4 :: JSVal -> JSVal -> Double -> Double -> Double -> Double -> IO ()
drawImage4 JSVal
ctx JSVal
o Double
a0 Double
a1 Double
a2 Double
a3 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal
-> Text -> (JSVal, Double, Double, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"drawImage" ((JSVal, Double, Double, Double, Double) -> IO JSVal)
-> (JSVal, Double, Double, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
o,Double
a0,Double
a1,Double
a2,Double
a3))
putImageData :: JSVal -> JSVal -> Double -> Double -> IO ()
putImageData :: JSVal -> JSVal -> Double -> Double -> IO ()
putImageData JSVal
ctx JSVal
o Double
a0 Double
a1 = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal
ctx JSVal -> Text -> (JSVal, Double, Double) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> Text -> args -> IO JSVal
# Text
"putImageData" ((JSVal, Double, Double) -> IO JSVal)
-> (JSVal, Double, Double) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
o,Double
a0,Double
a1))
lineWidth :: JSVal -> Double -> IO ()
lineWidth :: JSVal -> Double -> IO ()
lineWidth JSVal
ctx Double
v = JSVal -> Text -> Double -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"lineWidth" Double
v
miterLimit :: JSVal -> Double -> IO ()
miterLimit :: JSVal -> Double -> IO ()
miterLimit JSVal
ctx Double
v = JSVal -> Text -> Double -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"miterLimit" Double
v
shadowBlur :: JSVal -> Double -> IO ()
shadowBlur :: JSVal -> Double -> IO ()
shadowBlur JSVal
ctx Double
v = JSVal -> Text -> Double -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"shadowBlur" Double
v
shadowOffsetX :: JSVal -> Double -> IO ()
shadowOffsetX :: JSVal -> Double -> IO ()
shadowOffsetX JSVal
ctx Double
v = JSVal -> Text -> Double -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"shadowOffsetX" Double
v
shadowOffsetY :: JSVal -> Double -> IO ()
shadowOffsetY :: JSVal -> Double -> IO ()
shadowOffsetY JSVal
ctx Double
v = JSVal -> Text -> Double -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"shadowOffsetY" Double
v
globalAlpha :: JSVal -> Double -> IO ()
globalAlpha :: JSVal -> Double -> IO ()
globalAlpha JSVal
ctx Double
v = JSVal -> Text -> Double -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"globalAlpha" Double
v
font :: JSVal -> MisoString -> IO ()
font :: JSVal -> Text -> IO ()
font JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"font" Text
v
lineCap :: JSVal -> MisoString -> IO ()
lineCap :: JSVal -> Text -> IO ()
lineCap JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"lineCap" Text
v
lineJoin :: JSVal -> MisoString -> IO ()
lineJoin :: JSVal -> Text -> IO ()
lineJoin JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"lineJoin" Text
v
direction :: JSVal -> MisoString -> IO ()
direction :: JSVal -> Text -> IO ()
direction JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"direction" Text
v
textAlign :: JSVal -> MisoString -> IO ()
textAlign :: JSVal -> Text -> IO ()
textAlign JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"textAlign" Text
v
textBaseline :: JSVal -> MisoString -> IO ()
textBaseline :: JSVal -> Text -> IO ()
textBaseline JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"textBaseline" Text
v
globalCompositeOperation :: JSVal -> MisoString -> IO ()
globalCompositeOperation :: JSVal -> Text -> IO ()
globalCompositeOperation JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"globalCompositeOperation" Text
v
shadowColor :: JSVal -> MisoString -> IO ()
shadowColor :: JSVal -> Text -> IO ()
shadowColor JSVal
ctx Text
v = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"shadowColor" Text
v
fillStyle :: JSVal -> JSVal -> IO ()
fillStyle :: JSVal -> JSVal -> IO ()
fillStyle JSVal
ctx JSVal
v = JSVal -> Text -> JSVal -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"fillStyle" JSVal
v
strokeStyle :: JSVal -> JSVal -> IO ()
strokeStyle :: JSVal -> JSVal -> IO ()
strokeStyle JSVal
ctx JSVal
v = JSVal -> Text -> JSVal -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"strokeStyle" JSVal
v
fillStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
fillStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
fillStyleRGB JSVal
ctx Int
r Int
g Int
b = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"fillStyle" (Color -> Text
renderColor (Int -> Int -> Int -> Color
RGB Int
r Int
g Int
b))
fillStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
fillStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
fillStyleRGBA JSVal
ctx Int
r Int
g Int
b Double
a = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"fillStyle" (Color -> Text
renderColor (Int -> Int -> Int -> Double -> Color
RGBA Int
r Int
g Int
b Double
a))
strokeStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
strokeStyleRGB :: JSVal -> Int -> Int -> Int -> IO ()
strokeStyleRGB JSVal
ctx Int
r Int
g Int
b = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"strokeStyle" (Color -> Text
renderColor (Int -> Int -> Int -> Color
RGB Int
r Int
g Int
b))
strokeStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
strokeStyleRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
strokeStyleRGBA JSVal
ctx Int
r Int
g Int
b Double
a = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"strokeStyle" (Color -> Text
renderColor (Int -> Int -> Int -> Double -> Color
RGBA Int
r Int
g Int
b Double
a))
shadowColorRGB :: JSVal -> Int -> Int -> Int -> IO ()
shadowColorRGB :: JSVal -> Int -> Int -> Int -> IO ()
shadowColorRGB JSVal
ctx Int
r Int
g Int
b = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"shadowColor" (Color -> Text
renderColor (Int -> Int -> Int -> Color
RGB Int
r Int
g Int
b))
shadowColorRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
shadowColorRGBA :: JSVal -> Int -> Int -> Int -> Double -> IO ()
shadowColorRGBA JSVal
ctx Int
r Int
g Int
b Double
a = JSVal -> Text -> Text -> IO ()
forall o v. (ToObject o, ToJSVal v) => o -> Text -> v -> IO ()
setField JSVal
ctx Text
"shadowColor" (Color -> Text
renderColor (Int -> Int -> Int -> Double -> Color
RGBA Int
r Int
g Int
b Double
a))
#endif