Canvas Module Documentation
The canvas module provides functionalities for creating and manipulating graphical elements.
Functions
new_context(width, height)
Creates a new canvas context with the specified width and height.
- width: Width of the canvas context.
- height: Height of the canvas context.
load_image(image_bytes)
Loads an image from the provided byte array.
- image_bytes: Byte array representing the image data.
radians(degrees)
Converts degrees to radians.
- degrees: Angle in degrees.
degrees(radians)
Converts radians to degrees.
- radians: Angle in radians.
new_window(width, height, title, update_function)
Creates a new window with the specified width, height, and title. The update_function is called to update the content of the window.
- width: Width of the window.
- height: Height of the window.
- title: Title of the window.
- update_function: Function responsible for updating the content of the window.
import "canvas"
canvas.new_window(600, 400, "Hello World", fn(w){
    for {}
})
new_window(options, update_function)
Note: Only supports on windows platform.
Creates a new window with the specified options. The update_function is called to update the content of the window.
import "canvas"
var options = {
    width: 600,
    height: 400,
    title: "Hello World",
    fullscreen: false,
    borderless: false,
    top_most: false,
    no_scaling: false,
    x: 200,
    y: 10
}
canvas.new_window(options, fn(w){
    for {}
})
canvas Context Functions
Drawing Functions
- drawimage(image_bytes, x, y)
- drawimage_anchored(image_bytes, x, y, anchor_x, anchor_y)
- savepng(filename)
- point(x, y)
- line(x1, y1, x2, y2)
- rect(x, y, width, height)
- polygon(sides, x_center, y_center, radius, rotation)
- rounderect(x, y, width, height, radius)
- circle(x, y, radius)
- arc(x, y, radius, start_angle, end_angle)
- ellipse(x, y, x_radius, y_radius)
- ellipsearc(x, y, x_radius, y_radius, start_angle, end_angle)
Style Functions
- set_pixel(x, y)
- rgb(r, g, b)
- rgba(r, g, b, a)
- rgb255(r, g, b)
- rgba255(r, g, b, a)
- hex(color)
- linewidth(width)
- dashoffset(offset)
- dash(...)
Path Functions
- move_to(x, y)
- line_to(x, y)
- quadratic_to(x1, y1, x2, y2)
- cubic_to(x1, y1, x2, y2, x3, y3)
- closepath()
- clearpath()
- newsubpath()
- clear()
Drawing State Functions
- stroke()
- fill()
- stroke_preserve()
- fill_preserve()
- push()
- pop()
- clip()
- clip_preserve()
- resetclip()
Text Functions
- text(text, x, y)
- text_anchored(text, x, y, anchor_x, anchor_y)
- measure_text(text)
- measure_multiline_text(text)
- load_fontface(font_path, size)
- fontface(font_data, size)
- fontheight()
Transformation Functions
- identity()
- translate(x, y)
- scale(scale_x, scale_y)
- rotate(angle)
- shear(shear_x, shear_y)
- scaleabout(scale_x, scale_y, x, y)
- rotateabout(angle, x, y)
- shearabout(shear_x, shear_y, x, y)
- transform_point(x, y)
Other Functions
- height()
- width()
- wordwrap(text, max_width)
Image Functions
- image()
Example Usage
import "canvas"
ctx := canvas.new_context(200, 200)
ctx.hex(`#121212`)
ctx.clear()
ctx.hex("#0f0")
ctx.dash(4)
ctx.rect(50, 50, 100, 100)
ctx.stroke()    
ctx.save_png("output.png")