struct Atlas

type Atlas* = struct {
	i: image::Image // source image
	cs: th::Vf2 // size of a cell in pixels
	dm: th::Vf2 // amount of cells in image
}

Atlas is an image containing tiles in a square grid.

fn mk

fn mk*(i: image::Image, dm: th::Vf2): Atlas {

i: source image dm: amount of cells

fn mk2

fn mk2*(i: image::Image, cs: th::Vf2): Atlas {

i: source image cs: size of a cell in pixels

fn Atlas.coords

fn (a: ^Atlas) coords*(n: int): th::Vf2 {

returns the coordinates of the nth tile

fn Atlas.rect

fn (a: ^Atlas) rect*(n: int): rect::Rect {

returns the rectangle of the nth tile

fn Atlas.index

fn (a: ^Atlas) index*(at: th::Vf2): int {

returns the index of the tile at the given coordinates

fn Atlas.has

fn (a: ^Atlas) has*(at: th::Vf2): bool {

returns true if the tile at the given coordinates exists

fn Atlas.hasIndex

fn (a: ^Atlas) hasIndex*(n: int): bool {

returns true if the tile at the given index exists

fn Atlas.cropSource

fn (a: ^Atlas) cropSource*(at: th::Vf2) {

Crops the sourse image to only show a wanted tile

enum PackStrategy

type PackStrategy = enum {
	square
	row
	column
}

fn pack

fn pack*(images: []image::Image, strategy: PackStrategy): (Atlas, std::Err) {

Packs an array of images into an atlas

fn Atlas.draw

fn (a: ^Atlas) draw*(at: th::Vf2, t: th::Transform) {

Draws the tile at at