Skip to content

Latest commit

 

History

History
176 lines (127 loc) · 3.37 KB

stdlib-canvas.md

File metadata and controls

176 lines (127 loc) · 3.37 KB

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")