NAME

Graphics::GVG::AST -- Abstract Syntax Tree for GVG scripts

DESCRIPTION

GVG scripts are compiled into an Abstract Syntax Tree (AST). Renderers will walk the AST and generate the code they need to render the vectors.

Everything is a Moose object.

Graphics::GVG::AST

This is the root object returned by <Graphics::GVG-parse()>>. It has one attribute, commands, which returns an arrayref of Graphics::GVG::AST::Node objects. Each of these nodes correspond to a command or an effect.

Note that variables are filled in statically. They don't appear in the generated AST.

COMMANDS

These all do the role Graphics::GVG::AST::Command, which in turn does the Graphics::GVG::AST::Node role.

The attributes on each object correspond to their function description in the language. See Graphics::GVG for details.

Circle

Attributes:

  • cx -- Num

  • cy -- Num

  • r -- Num

  • color -- Int

Ellipse

Attributes:

  • cx -- Num

  • cy -- Num

  • rx -- Num

  • ry -- Num

  • color -- Int

Line

Attributes:

  • x1 -- Num

  • y1 -- Num

  • x2 -- Num

  • y2 -- Num

  • color -- Int

Polygon

Attributes:

  • cx -- Num

  • cy -- Num

  • r -- Num

  • rotate -- Num

  • sides -- Int

  • color -- Int

There is also a special attribute, coords, which returns an arrayref of arrayrefs of coordinates (numbers). These are the list of x/y coords of the calculated polygon.

Rect

Attributes:

  • x -- Num

  • y -- Num

  • width -- Num

  • height -- Num

  • color -- Int

EFFECTS

These all do the role Graphics::GVG::AST::Effect, which in turn does the Graphics::GVG::AST::Node role.

The Graphics::GVG::AST::Effect role has the commands attribute. This returns an arrayref of Graphics::GVG::AST::Node objects, which are all the nodes under this effect. Note that effects can be nested:

glow {
    glow {
        line( #ff33ff00, 0.0, 0.0, 1.0, 1.1 );
    }
}

What this means is left to the renderer.

Glow