Draw Module
Pipe-friendly drawing DSL. Each function takes a RenderBuffer2D as its last argument, adds the corresponding command, and returns the buffer for chaining.
Commands are built via Command2D and added to the buffer. Partial application of styling parameters (layer, color) is supported — bind them once and reuse across multiple draw calls.
Usage:
buffer
|> Draw.beginCamera 0<RenderLayer> worldCamera
|> Draw.fillRect (10<RenderLayer>, Color.Red) groundRect
|> Draw.fillCircle (10<RenderLayer>, Color.Blue) (center, radius)
|> Draw.line (5<RenderLayer>, Color.Green) (p1, p2)
|> Draw.endCamera 1000<RenderLayer>
|> Draw.drop
Functions and values
| Function or value |
Description
|
Full Usage:
beginCamera layer camera buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
camera : Camera2D
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Begins a 2D camera transform. (layer) can be partially applied.
|
Full Usage:
beginCameraWith layer config buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
config : Camera2DConfig
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Begins a 2D camera with viewport/clear config. (layer) can be partially applied.
|
Full Usage:
beginShader layer shader buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
shader : Effect
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Begins a custom shader/effect block. (layer) can be partially applied.
|
Full Usage:
beginTarget layer target buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
target : RenderTarget2D
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Begins rendering to a render target. (layer) can be partially applied.
|
Full Usage:
bezier (layer, color, thickness) (start, control, finish) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
start : Vector2
control : Vector2
finish : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Quadratic bezier curve. (layer, color, thickness) can be partially applied.
|
Full Usage:
circleGradient layer (centerX, centerY, radius, inner, outer) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
centerX : int
centerY : int
radius : float32
inner : Color
outer : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Gradient circle. (layer) can be partially applied.
|
Full Usage:
circleOutline (layer, color) (center, radius) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Circle outline. (layer, color) can be partially applied.
|
Full Usage:
circleSector (layer, color) (center, radius, startAngle, endAngle, segments) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled circle sector (pie slice). (layer, color) can be partially applied.
|
Full Usage:
circleSectorOutline (layer, color) (center, radius, startAngle, endAngle, segments) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Circle sector outline. (layer, color) can be partially applied.
|
Full Usage:
clear layer color buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Clears the current framebuffer to the given color.
|
Full Usage:
clearScissor layer buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Disables the scissor rectangle.
|
Full Usage:
drawImmediate layer action buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
action : unit -> unit
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Flushes the SpriteBatch, exits camera, runs the action, then restores state. (layer) can be partially applied.
|
|
Terminal function that discards the buffer, silencing the unused-value warning. Does nothing.
|
Full Usage:
ellipseOutline (layer, color) (centerX, centerY, radiusH, radiusV) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
centerX : int
centerY : int
radiusH : float32
radiusV : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Ellipse outline. (layer, color) can be partially applied.
|
Full Usage:
endCamera layer buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Ends the current 2D camera transform.
|
Full Usage:
endShader layer buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Ends the current shader block.
|
Full Usage:
endTarget layer buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Ends the current render target and resumes back-buffer rendering.
|
Full Usage:
fillCircle (layer, color) (center, radius) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
radius : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled circle. (layer, color) can be partially applied.
|
Full Usage:
fillEllipse (layer, color) (centerX, centerY, radiusH, radiusV) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
centerX : int
centerY : int
radiusH : float32
radiusV : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled ellipse. (layer, color) can be partially applied.
|
Full Usage:
fillPoly (layer, color) (center, sides, radius, rotation) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
sides : int
radius : float32
rotation : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled regular polygon. (layer, color) can be partially applied.
|
Full Usage:
fillRect (layer, color) rect buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled rectangle. (layer, color) can be partially applied.
|
Full Usage:
fillRectRounded (layer, color, roundness, segments) rect buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
roundness : float32
segments : int
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled rounded rectangle. (layer, color, roundness, segments) can be partially applied.
|
Full Usage:
fillRing (layer, color) (center, innerR, outerR, startAngle, endAngle, segments) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
innerR : float32
outerR : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled ring / arc. (layer, color) can be partially applied.
|
Full Usage:
line (layer, color) (start, finish) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
start : Vector2
finish : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
1-pixel line. (layer, color) can be partially applied.
|
Full Usage:
lineStrip (layer, color) points buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
points : Vector2[]
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Connected line segments. (layer, color) can be partially applied.
|
Full Usage:
lineThick (layer, color, thickness) (start, finish) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
start : Vector2
finish : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Line with custom thickness. (layer, color, thickness) can be partially applied.
|
Full Usage:
particles layer texture particleData particleCount buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
texture : Texture2D
particleData : Particle2D[]
particleCount : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Adds a batched particle render command to the buffer.
|
Full Usage:
polyOutline (layer, color, thickness) (center, sides, radius, rotation) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
center : Vector2
sides : int
radius : float32
rotation : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Regular polygon outline with thickness. (layer, color, thickness) can be partially applied.
|
Full Usage:
rectGradient layer (rect, tl, bl, tr, br) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
rect : Rectangle
tl : Color
bl : Color
tr : Color
br : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
4-corner gradient rectangle. (layer) can be partially applied.
|
Full Usage:
rectGradientH layer (x, y, w, h, left, right) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
left : Color
right : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Horizontal gradient rectangle. (layer) can be partially applied.
|
Full Usage:
rectGradientV layer (x, y, w, h, top, bottom) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
top : Color
bottom : Color
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Vertical gradient rectangle. (layer) can be partially applied.
|
Full Usage:
rectOutline (layer, color, thickness) rect buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
thickness : float32
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Rectangle outline with thickness. (layer, color, thickness) can be partially applied.
|
Full Usage:
rectRoundedOutline (layer, color, roundness, segments, thickness) rect buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
roundness : float32
segments : int
thickness : float32
rect : Rectangle
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Rounded rectangle outline with thickness. (layer, color, roundness, segments, thickness) can be partially applied.
|
Full Usage:
ringOutline (layer, color) (center, innerR, outerR, startAngle, endAngle, segments) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
center : Vector2
innerR : float32
outerR : float32
startAngle : float32
endAngle : float32
segments : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Ring / arc outline. (layer, color) can be partially applied.
|
Full Usage:
setBlend layer mode buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
mode : BlendMode
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Sets the active blend mode. (layer) can be partially applied.
|
Full Usage:
setLineWidth layer width buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
width : float32
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Sets the default line width for thick line primitives.
|
Full Usage:
setScissor layer (x, y, w, h) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Enables a scissor rectangle. (layer) can be partially applied.
|
Full Usage:
setViewport layer (x, y, w, h) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
x : int
y : int
w : int
h : int
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Sets the device viewport. (layer) can be partially applied.
|
Full Usage:
sprite state buffer
Parameters:
SpriteState
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Draws a sprite from a pre-configured SpriteState.
|
Full Usage:
text state buffer
Parameters:
TextState
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Draws text from a pre-configured TextState.
|
Full Usage:
triangle (layer, color) (v1, v2, v3) buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
v1 : Vector2
v2 : Vector2
v3 : Vector2
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled triangle from 3 vertices. (layer, color) can be partially applied.
|
Full Usage:
triangleFan (layer, color) points buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
points : Vector2[]
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled triangle fan. (layer, color) can be partially applied.
|
Full Usage:
triangleStrip (layer, color) points buffer
Parameters:
int<MeasureProduct<RenderLayer, MeasureOne>>
color : Color
points : Vector2[]
buffer : RenderBuffer2D
Returns: RenderBuffer2D
Modifiers: inline |
Filled triangle strip. (layer, color) can be partially applied.
|
Mibo