AT&T Home | AT&T Labs | Research

# The Yoix® Scripting Language

Home | What's New | Grammar | Documentation | Download | License | YChart | YDAT | YWAIT | Byzgraf | FAQs

# Yoix / YDAT Drawing Directives from Yoix Source Code Comments

```
//
// Here's a brief and incomplete summary of the drawing directives.
// Our goal is to conform with the directives described here:
//    http://www.graphviz.org/pub/scm/graphviz2/doc/info/output.html#d:xdot
//
//	  E xcenter ycenter width height
//	    Fill an ellispe
//
//	  e xcenter ycenter width height
//	    Draw an ellipse
//
//	  P n x1 y1 x2 y2 ... xn yn
//	    Fill the polygon connecting the n points, where n
//	    must be greater than 2. The first and last points
//	    points are automatically connected if necessary.
//
//	  p n x1 y1 x2 y2 ... xn yn
//	    Draw the polygon (the outline) connecting the n points,
//	    where n must be greater than 2. The first and last
//	    points are automatically connected if necessary, so
//	    this isn't quite the same as the L command.
//
//	  P 2 xcenter yxcenter width height
//	    Fill a rectangle (instance of polygon described above)
//
//	  p 2 xcenter yxcenter width height
//	    Draw a rectangle (instance of polygon described above)
//
//    L n x1 y1 x2 y2 ... xn yn
//	    Draw a line connecting the n point
//
//	  B n x1 y1 x2 y2 x3 y3 ... xn yn
//	    Draw a Bezier spline that starts at (x1, y1) ends at
//	    (xn, yn) and is described by the remaining points. The
//	    value of n must be at least 4 and (n - 1) must also be
//	    divisible by 3. If you set the filled attribute (see
//	    the "A 1 filled" description below) before the spline
//	    and the path will be automatically closed, which means
//	    the shape described by the S command will be completely
//	    outlined when it's used as a node.
//
//	  b n x1 y1 x2 y2 x3 y3 ... xn yn
//	    Fill a Bezier spline that starts at (x1, y1) ends at
//	    (xn, yn) and is described by the remaining points. The
//	    value of n must be at least 4 and (n - 1) must also be
//	    divisible by 3. If you set the filled attribute (see
//	    the "A 1 filled" description below) before the spline
//	    and the path will be automatically closed, which means
//	    the shape described by the S command will be completely
//	    outlined when it's used as a node.
//
//	  T x y justification width n -[n chars]
//	    Place n characters at (x, y) using justification (-1
//	    means left justified, 0 means centered, and 1 means
//	    right justified) to control the positioning relative
//	    to (x, y). The width argument is currently unused but
//	    must be supplied (any number works). The n characters
//	    of the text that's draw must be introduced by the -
//	    character.
//
//    C n -[n chars]
//      Set the fill color. The color value can be a text name
//      (e.g., red), or an RGB spec starting with a pound-sign
//      and with each color specified by a 2 hex characters
//      (e.g., #FF0000) or an RGBA spec (e.g., #FF0000F8) or
//      an HSB spec with each value in the range 0 to 1 and
//      separated by either a comma or a space character
//      (e.g., 0.482 0.714 0.878 or 0.482,0.714,0.878)
//
//    c n -[n chars]
//      Set the line color. The color value can be a text name
//      (e.g., red), or an RGB spec starting with a pound-sign
//      and with each color specified by a 2 hex characters
//      (e.g., #FF0000) or an RGBA spec (e.g., #FF0000F8) or
//      an HSB spec with each value in the range 0 to 1 and
//      separated by either a comma or a space character
//      (e.g., 0.482 0.714 0.878 or 0.482,0.714,0.878)
//
//    F s n -[n chars]
//      Set the font to size s and as specified (e.g., F 12 14 -Helvetica-Bold)
//
//    S n -[n chars]
//      Set the style as specified (e.g., S 15 -setlinewidth(3))
//
//   ====== below here are not used by graphviz, but we use them ======
//
//	  < label related commands >
//	    The delimiters sever to bracket one or more commands
//	    that are supposed to be grouped together and handled
//	    as a label. Bracketing a single T command is allowed,
//	    and you'll see it in many of our examples, but it's
//
//    w n
//      Switch to subpath n. Currently only used by edges and
//      in that case 0 is the main path, 1 is the head, and 2
//      is the tail.
//
//    x n x1 y1 ... xn yn
//      Position infomation specified a n 2-D points.
//
//    n n x1 ... xn
//    N n x1 ... xn
//      Numeric info specified by n numbers. An upper-case N
//      can also signal a numeric value. Only understood within
//      an attribute spec (see below).
//
//    s n -[n chars]
//    S n -[n chars]
//      String info speficied by n characters. An upper-case S
//      can also signal a string value. Only understood within
//      an attribute spec (see below).
//
//    t n -[n chars]
//      Tip text.
//
//    a n n-fields
//    A n n-fields
//      Attribute information specified with n fields. A one
//      field attribute is a flag value, a two field
//      attribute is a name-value pair (e.g. a 2 length n 1 25 or
//      a 2 title s 11 -hello world). An upper-case A can also signal
//      an attribute.
//
// An incomplete list of attribute examples follow:
//
//	  A 1 bold
//	    Text is drawn in a bold font (equivalent to: S 4 -bold)
//
//	  A 1 italic
//	    Text is drawn in an italic font (equivalent to: S 6 -italic)
//
//	  A 1 dashed
//	    Lines and curves are drawn dashed rather than solid
//	    (which is the default) or dotted. (equivalent to: S 6 -dashed)
//
//	  A 1 dotted
//	    Lines and curves are drawn dotted rather than solid
//	    (which is the default) or dashed. (equivalent to: S 6 -dotted)
//
//	  A 1 solid
//	    Lines and curves are drawn solid (this is the default)
//	    rather than dashed or dotted. (equivalent to S 5 -solid)
//
//	  A 1 filled
//	    Unnecessary when you use P or E commands, but it may
//	    be useful when a node is described by a spline using
//	    the B command. Would also work for the L command, but
//	    seems unnecessary because you might as well have used
//	    the P command. (equivalent to: S 6 -filled)
//
//	  A 2 color N 3 red green blue
//	    Pick the color specified by the red, green, and blue
//	    components, which must be integers in the range 0 to
//	    255 inclusive. (equivalent to: C 7 -#FF0088 or c 7 -#FF0088,
//      [the color value is just an example])
//
//	  A 2 fontname s n -[n chars]
//	    Changes the font used to draw text from the default,
//	    which is Times-Roman to the font named by the n chars
//	    that immediately follow the - character. (can be
//      subsumed by a "F" reference).
//
//	  A 2 fontsize N 1 pointsize
//	    Changes the size of the font used to draw characters
//	    to pointsize (the default is 14, but your graph and
//	    all the text are always scaled to fit into the space
//	    that's available). (can be subsumed by a "F" reference).
//
//	  A 2 fontcolor N 3 red green blue
//	    Sets the color used to draw text, which is black by
//	    default, to the color specified by the red, green,
//	    and blue components, which must be integers in the
//	    range 0 to 255 inclusive. (can just use a "c" reference)
//
//	  A 2 setlinewidth N 1 num
//	    Lines and curves are drawn num units wide (where 1 is
//	    the default). (equivalent to: S 15 -setlinewidth(1))
//
```

Yoix is a registered trademark of AT&T Inc.