Skip to content

add methods for dealing with text #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 30, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
60 changes: 60 additions & 0 deletions src/Graphics/Canvas.purs
Original file line number Diff line number Diff line change
Expand Up @@ -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
--
Expand Down