# vivid v1.0.0 - Table of Contents

> Simple 2D rendering graphics rendering library.

## Pages

- [Getting Started with Vivid](getting-started.md)
- [Vivid](readme.md)
- [Change Log](changelog.md)

## Modules

- [Vivid](Vivid.md): Vivid is a 2D rendering engine implemented purely in Elixir.
- [Vivid.Arc](Vivid.Arc.md): This module represents an Arc, otherwise known as a circle segment.
- [Vivid.BDF](Vivid.BDF.md): Reads bitmap fonts in Adobe's Glyph Bitmap Distribution Format.
- [Vivid.BDF.Glyph](Vivid.BDF.Glyph.md): A single glyph from a bitmap font: how far the pen advances, and which pixels
are lit.
- [Vivid.Bezier](Vivid.Bezier.md): This module represents a Bézier curve of arbitrary degree, defined by a list
of control points.
- [Vivid.Bitmap](Vivid.Bitmap.md): A grid of lit cells - a bitmap - as a shape.
- [Vivid.Bounds](Vivid.Bounds.md): Provides information about the bounds of a box and pixel positions within it.
- [Vivid.Bounds.Of](Vivid.Bounds.Of.md): This protocol is used to calculate the bounds of a given shape.
- [Vivid.Box](Vivid.Box.md): Short-hand for creating rectangle polygons.
- [Vivid.Buffer](Vivid.Buffer.md): Used to convert a Frame into a buffer for display.
- [Vivid.CFF](Vivid.CFF.md): Reads the Compact Font Format table carried by OpenType fonts with PostScript
outlines - the ones whose files begin with `OTTO`.
- [Vivid.CFF.Charstring](Vivid.CFF.Charstring.md): Interprets Type 2 charstrings, which is how a CFF font describes a glyph.
- [Vivid.CFF.Glyph](Vivid.CFF.Glyph.md): A single glyph from a CFF font.
- [Vivid.Circle](Vivid.Circle.md): Represents a circle based on it's center point and radius.
- [Vivid.Font](Vivid.Font.md): Describes a font as a map of codepoints to glyphs, along with the metrics
needed to lay them out.
- [Vivid.Font.Char](Vivid.Font.Char.md): Describes an individual character defined by a Hershey font file.

- [Vivid.Font.Glyph](Vivid.Font.Glyph.md): Everything laying out a line of text needs to know about a single glyph.
- [Vivid.Frame](Vivid.Frame.md): Frame represents a collection of colours and shapes.
- [Vivid.Group](Vivid.Group.md): Represents a collection of shapes which can be Rasterized in a single pass.
- [Vivid.Hershey](Vivid.Hershey.md): Supports reading the Hershey Vector Font format and converting them into paths.

- [Vivid.Line](Vivid.Line.md): Represents a line segment between two Points in 2D space.
- [Vivid.Math](Vivid.Math.md): 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.

- [Vivid.OpenType](Vivid.OpenType.md): 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.
- [Vivid.OpenType.CMap](Vivid.OpenType.CMap.md): Reads a font's character map: the table which says which glyph draws which
codepoint.
- [Vivid.Path](Vivid.Path.md): Describes a path as a series of vertices.
- [Vivid.Point](Vivid.Point.md): Represents an individual point in (2D) space.
- [Vivid.Polygon](Vivid.Polygon.md): Describes a Polygon as a series of vertices.
- [Vivid.Polygon.Fill](Vivid.Polygon.Fill.md): Computes the filled area of a polygon by scanline conversion.
- [Vivid.RGBA](Vivid.RGBA.md): Defines a colour in RGBA colour space.
- [Vivid.Rasterize](Vivid.Rasterize.md): The Rasterize protocol is responsible for converting shapes into bitmaps.
- [Vivid.Region](Vivid.Region.md): A filled area bounded by one or more closed contours.
- [Vivid.Shape](Vivid.Shape.md): Doesn't do anything - is merely a type to represent an arbitrary shape in typespecs.

- [Vivid.ShapeToString](Vivid.ShapeToString.md): Handle conversions of arbitrary shapes into strings.

- [Vivid.Transform](Vivid.Transform.md): Creates and applies a "pipeline" of transformations to a shape.
Transformation operations are collected up and only run once, when `apply` is called.
- [Vivid.Transform.Operation](Vivid.Transform.Operation.md): An operation that can be applied to a shape.

- [Vivid.Transform.Point](Vivid.Transform.Point.md): Standard transformations which can be applied to points without
knowing the details of the geometry.
- [Vivid.Transformable](Vivid.Transformable.md): This protocol is used to apply *point* transformations to a shape.

- [Vivid.TrueType.Glyph](Vivid.TrueType.Glyph.md): A single glyph read from a font's `glyf` table.

