class interface DRAWABLE_BEZIER

creation
   make
      --  Create.


feature(s) from DRAWABLE_POLYLINE
   --  Position

   empty: BOOLEAN
      --  Is the polyline empty (no points)?


   reset
      --  Reset the point list representing the polyline.

      ensure
         done: empty

   add_point (pt: POINT)
      --  Add a new point at the end of the polyline.

      require
         valid_point: pt /= Void
      ensure
         ok: not empty

feature(s) from DRAWABLE_BEZIER
   --  Position

   set_start_point (pt: POINT)
      --  Set the starting point

      require
         valid_point: pt /= Void;
         empty: empty

   add_curve (cp1, cp2, final: POINT)
      --  Add a new bezier curve component. It will start from the 
      --  end of the previous curve or the starting point, and will 
      --  finish at the 'final' point. 'cp1' and 'cp2' are the control 
      --  points.

      require
         valid_points: cp1 /= Void and cp2 /= Void and final /= Void;
         not_empty: not empty

invariant
   valid_position: line /= Void;
   bezier_curve: line.count /= 0 implies line.count \\ 3 = 1;

end of DRAWABLE_BEZIER