diff --git a/README.md b/README.md index cf0d7e1..c9ca9c5 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ type ScaleTransform = { scaleY :: Number, scaleX :: Number } + type TextMetrics = { width :: Number } + type Transform = { m32 :: Number, m31 :: Number, m22 :: Number, m21 :: Number, m12 :: Number, m11 :: Number } type TranslateTransform = { translateY :: Number, translateX :: Number } @@ -46,6 +48,10 @@ fillRect :: forall eff. Context2D -> Rectangle -> Eff (canvas :: Canvas | eff) Context2D + fillText :: forall eff. Context2D -> String -> Number -> Number -> Eff (canvas :: Canvas | eff) Context2D + + font :: forall eff. Context2D -> Eff (canvas :: Canvas | eff) String + getCanvasDimensions :: forall eff. CanvasElement -> Eff (canvas :: Canvas | eff) Dimensions getCanvasElementById :: forall eff. String -> Eff (canvas :: Canvas | eff) CanvasElement @@ -58,6 +64,8 @@ lineTo :: forall eff. Context2D -> Number -> Number -> Eff (canvas :: Canvas | eff) Context2D + measureText :: forall eff. Context2D -> String -> Eff (canvas :: Canvas | eff) TextMetrics + moveTo :: forall eff. Context2D -> Number -> Number -> Eff (canvas :: Canvas | eff) Context2D rect :: forall eff. Context2D -> Rectangle -> Eff (canvas :: Canvas | eff) Context2D @@ -78,6 +86,8 @@ setFillStyle :: forall eff. String -> Context2D -> Eff (canvas :: Canvas | eff) Context2D + setFont :: forall eff. String -> Context2D -> Eff (canvas :: Canvas | eff) Context2D + setLineCap :: forall eff. LineCap -> Context2D -> Eff (canvas :: Canvas | eff) Context2D setLineCapImpl :: forall eff. String -> Context2D -> Eff (canvas :: Canvas | eff) Context2D @@ -100,6 +110,8 @@ strokeRect :: forall eff. Context2D -> Rectangle -> Eff (canvas :: Canvas | eff) Context2D + strokeText :: forall eff. Context2D -> String -> Number -> Number -> Eff (canvas :: Canvas | eff) Context2D + transform :: forall eff. Transform -> Context2D -> Eff (canvas :: Canvas | eff) Context2D translate :: forall eff. TranslateTransform -> Context2D -> Eff (canvas :: Canvas | eff) Context2D diff --git a/src/Graphics/Canvas.purs b/src/Graphics/Canvas.purs index 84bb77c..e6418c7 100644 --- a/src/Graphics/Canvas.purs +++ b/src/Graphics/Canvas.purs @@ -376,6 +376,66 @@ foreign import transform \ };\ \}" :: forall eff. Transform -> Context2D -> Eff (canvas :: Canvas | eff) Context2D +-- | +-- Text +-- + +type TextMetrics = { width :: Number } + +foreign import font + "function font(ctx) {\ + \ return function() {\ + \ return ctx.font;\ + \ };\ + \}" :: forall eff. Context2D -> Eff (canvas :: Canvas | eff) String + +foreign import setFont + "function setFont(fontspec) {\ + \ return function(ctx) {\ + \ return function() {\ + \ ctx.font = fontspec;\ + \ return ctx;\ + \ };\ + \ };\ + \}" :: forall eff. String -> Context2D -> Eff (canvas :: Canvas | eff) Context2D + +foreign import fillText + "function fillText(ctx) {\ + \ return function(text) {\ + \ return function(x) {\ + \ return function(y) {\ + \ return function() {\ + \ ctx.fillText(text, x, y);\ + \ return ctx;\ + \ };\ + \ };\ + \ };\ + \ };\ + \}" :: forall eff. Context2D -> String -> Number -> Number -> Eff (canvas :: Canvas | eff) Context2D + +foreign import strokeText + "function strokeText(ctx) {\ + \ return function(text) {\ + \ return function(x) {\ + \ return function(y) {\ + \ return function() {\ + \ ctx.fillText(text, x, y);\ + \ return ctx;\ + \ };\ + \ };\ + \ };\ + \ };\ + \}" :: forall eff. Context2D -> String -> Number -> Number -> Eff (canvas :: Canvas | eff) Context2D + +foreign import measureText + "function measureText(ctx) {\ + \ return function(text) {\ + \ return function() {\ + \ return ctx.measureText(text);\ + \ };\ + \ };\ + \}" :: forall eff. Context2D -> String -> Eff (canvas :: Canvas | eff) TextMetrics + -- | -- Context --