Module

Hylograph.Canvas

Package
purescript-hylograph-canvas
Repository
afcondon/purescript-hylograph-canvas

Canvas Rendering Library for Hylograph

High-performance Canvas-based rendering for visualizations. Designed for force simulations and other cases where DOM-per-element would be too slow.

Key features:

  • Opaque CanvasContext handle for safe FFI
  • Transform support for zoom/pan
  • Batch drawing operations for performance
  • Simple primitives (circles, lines) with extensible specs

#CanvasContext Source

data CanvasContext

Opaque handle to a Canvas rendering context

#CanvasElement Source

data CanvasElement

Opaque canvas element type for event binding

#CanvasConfig Source

type CanvasConfig = { background :: String, centerOrigin :: Boolean, height :: Int, width :: Int }

Configuration for creating a Canvas

#defaultConfig Source

defaultConfig :: CanvasConfig

Default canvas configuration

#createCanvas Source

createCanvas :: String -> CanvasConfig -> Effect CanvasContext

Create a Canvas in the specified container

#clearCanvas Source

clearCanvas :: CanvasContext -> Effect Unit

Clear the canvas

#getCanvasElement Source

getCanvasElement :: CanvasContext -> Effect CanvasElement

Get the canvas DOM element (for attaching event listeners)

#Transform Source

type Transform = { scale :: Number, translateX :: Number, translateY :: Number }

View transform for zoom/pan

#defaultTransform Source

defaultTransform :: Transform

Default transform (no zoom, no pan)

#setTransform Source

setTransform :: CanvasContext -> Transform -> Effect Unit

Set the view transform (for zoom/pan)

#resetTransform Source

resetTransform :: CanvasContext -> Effect Unit

Reset transform to default

#applyTransform Source

applyTransform :: Transform -> Transform -> Transform

Apply a transform to the current transform (multiply)

#CircleSpec Source

type CircleSpec = { fill :: String, opacity :: Number, radius :: Number, stroke :: String, strokeWidth :: Number, x :: Number, y :: Number }

Specification for drawing a circle

#LineSpec Source

type LineSpec = { opacity :: Number, stroke :: String, strokeWidth :: Number, x1 :: Number, x2 :: Number, y1 :: Number, y2 :: Number }

Specification for drawing a line

#drawCircle Source

drawCircle :: CanvasContext -> CircleSpec -> Effect Unit

Draw a single circle

#drawLine Source

drawLine :: CanvasContext -> LineSpec -> Effect Unit

Draw a single line

#drawCircles Source

drawCircles :: CanvasContext -> Array CircleSpec -> Effect Unit

Draw multiple circles (more efficient than repeated drawCircle)

#drawLines Source

drawLines :: CanvasContext -> Array LineSpec -> Effect Unit

Draw multiple lines (more efficient than repeated drawLine)

#beginScene Source

beginScene :: CanvasContext -> Effect Unit

Begin a new scene (clears canvas)

#endScene Source

endScene :: CanvasContext -> Effect Unit

End the current scene