-- $Date: 2004/01/25 09:24:23 $
-- $Revision: 1.19 $
-- $Author: jcrocholl $

with Lists;

with Real_Numbers; use Real_Numbers;
with Real_Vectors; use Real_Vectors;
with Lines; use Lines;

package Outlines is

   -- Instance of generic package Lists with Lines.Line as the
   -- component type.
   package Line_Lists is new Lists(Lines.Line_Access);
   use Line_Lists;

   -- A list of lines, each of which may be either straight
   -- (Lines.Line) or a quadratic (Lines.Quadratic) or cubic
   -- (Lines.Cubic) bezier curve.
   subtype Outline is Line_Lists.List;
   subtype Outline_Access is Line_Lists.List_Access;

   function Create
     return Outline_Access
     renames Line_Lists.Create;

   ----------------------------
   -- Step-by-step construction
   ----------------------------

   -- Add a straight line to an outline.
   procedure Add_Straight
     (This : access Outline-- Add to this outline.
      To   : in Vector);     -- End point of straight line.

   -- Add a cubic bezier curve to an outline.
   procedure Add_Cubic
     (This      : access Outline-- Add to this outline.
      Control_A : in Vector;      -- Control point A of bezier curve.
      Control_B : in Vector;      -- Control point B of bezier curve.
      To        : in Vector);     -- End point of bezier curve.

end Outlines;