Modules
Vivid is a 2D rendering engine implemented purely in Elixir.
This module represents an Arc, otherwise known as a circle segment.
Reads bitmap fonts in Adobe's Glyph Bitmap Distribution Format.
A single glyph from a bitmap font: how far the pen advances, and which pixels are lit.
This module represents a Bézier curve of arbitrary degree, defined by a list of control points.
A grid of lit cells - a bitmap - as a shape.
Provides information about the bounds of a box and pixel positions within it.
This protocol is used to calculate the bounds of a given shape.
Short-hand for creating rectangle polygons.
Used to convert a Frame into a buffer for display.
Reads the Compact Font Format table carried by OpenType fonts with PostScript
outlines - the ones whose files begin with OTTO.
Interprets Type 2 charstrings, which is how a CFF font describes a glyph.
A single glyph from a CFF font.
Represents a circle based on it's center point and radius.
Describes a font as a map of codepoints to glyphs, along with the metrics needed to lay them out.
Describes an individual character defined by a Hershey font file.
Everything laying out a line of text needs to know about a single glyph.
Frame represents a collection of colours and shapes.
Represents a collection of shapes which can be Rasterized in a single pass.
Supports reading the Hershey Vector Font format and converting them into paths.
Represents a line segment between two Points in 2D space.
I made this because I was constantly importing a small selection of
Erlang's :math module, and then manually implementing
degrees_to_radians/1 which got pretty annoying after a while.
Reads OpenType fonts - both the TrueType outlines in a .ttf and the
PostScript ones in a .otf - and says clearly why it can't when it can't.
Reads a font's character map: the table which says which glyph draws which codepoint.
Describes a path as a series of vertices.
Represents an individual point in (2D) space.
Describes a Polygon as a series of vertices.
Computes the filled area of a polygon by scanline conversion.
Defines a colour in RGBA colour space.
The Rasterize protocol is responsible for converting shapes into bitmaps.
A filled area bounded by one or more closed contours.
Doesn't do anything - is merely a type to represent an arbitrary shape in typespecs.
Handle conversions of arbitrary shapes into strings.
Creates and applies a "pipeline" of transformations to a shape.
Transformation operations are collected up and only run once, when apply is called.
An operation that can be applied to a shape.
Standard transformations which can be applied to points without knowing the details of the geometry.
This protocol is used to apply point transformations to a shape.
A single glyph read from a font's glyf table.