Ipelib

#include <ipeshape.h>
Public Types  
enum  Type { EArc, ESegment, ESpline, EOldSpline } 
Public Member Functions  
Type  type () const 
int  countCP () const 
Vector  cp (int i) const 
Vector  last () const 
Matrix  matrix () const 
Arc  arc () const 
void  beziers (std::vector< Bezier > &bez) const 
void  draw (Painter &painter) const 
void  addToBBox (Rect &box, const Matrix &m, bool cp) const 
double  distance (const Vector &v, const Matrix &m, double bound) const 
void  snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const 
void  snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const 
Friends  
class  Curve 
A segment on an SubPath.
A segment is either an elliptic arc, a straight segment, or a Bspline curve, depending on its type(). This is a lightweight object, created on the fly by Curve::segment(). There is no public constructor, so the only way to create such an object is through that method.
The type() is one of the following:
ESegment:
the segment has two control points, and represents a line segment.ESpline:
a Bspline curve with n control points. The first and last control point's knot value is repeated three times, so the curve begins and ends in these points. A spline with 4 control points is a single Bezier curve with those control points. A spline with 3 control points is defined to be a quadratic Bezier curve with those control points.EOldSpline:
an incorrectly defined Bspline, used by Ipe for many years. Supported for compatibility.EArc:
an elliptic arc, with begin and end point. The supporting ellipse is defined by the matrix(), it is the image under the affine transformation matrix() of the unit circle. matrix() is such that its inverse transforms both start and end position to points (nearly) on the unit circle. The arc is the image of the positively (counterclockwise) directed arc from the preimage of the start position to the preimage of the end position. Whether this is a positively or negatively oriented arc in user space depends on the matrix.

inline 
Type of segment.
Referenced by ipe::Path::clone(), ipe::Shape::isSegment(), and matrix().

inline 
Number of control points.
Referenced by ipe::Path::clone().

inline 
Return control point.
Referenced by ipe::Path::clone(), ipe::Curve::closed(), matrix(), and ipe::Ellipse::matrix().

inline 
Return last control point.
Referenced by ipe::Path::clone().

inline 
References addToBBox(), arc(), beziers(), cp(), distance(), draw(), snapBnd(), snapVtx(), and type().
Referenced by ipe::Path::clone(), and ipe::Path::draw().
Arc CurveSegment::arc  (  )  const 
void CurveSegment::beziers  (  std::vector< Bezier > &  bez  )  const 
Convert Bspline to a sequence of Bezier splines.
References ipe::Bezier::oldSpline(), and ipe::Bezier::spline().
Referenced by matrix().
void CurveSegment::draw  (  Painter &  painter  )  const 
Draw the segment.
Current position of the painter is already on first control point.
References ipe::Painter::curveTo(), ipe::Painter::drawArc(), and ipe::Painter::lineTo().
Referenced by ipe::Curve::closed(), matrix(), ipe::Ellipse::matrix(), and ipe::Shape::subPath().
Add segment to bounding box.
Does not assume that first control point has already been added.
If cpf is true, then control points of splines, Bezier curves, and the center of arcs are included in the bbox (so that snapping can find them). Otherwise, a tight bounding box for the geometric object itself is computed.
References ipe::Rect::addPoint(), and ipe::Rect::addRect().
Referenced by ipe::Curve::closed(), matrix(), and ipe::Ellipse::matrix().
Return distance to the segment.
References ipe::Segment::distance().
Referenced by ipe::Curve::closed(), matrix(), and ipe::Ellipse::matrix().
void CurveSegment::snapVtx  (  const Vector &  mouse, 
const Matrix &  m,  
Vector &  pos,  
double &  bound,  
bool  ctl  
)  const 
Snap to vertex of the segment.
The method assumes that the first control point has already been tested.
References ipe::CanvasBase::pos().
Referenced by ipe::Curve::closed(), matrix(), and ipe::Ellipse::matrix().
void CurveSegment::snapBnd  (  const Vector &  mouse, 
const Matrix &  m,  
Vector &  pos,  
double &  bound  
)  const 
References ipe::Curve::Curve(), ipe::Arc::distance(), and ipe::Segment::snap().
Referenced by ipe::Curve::closed(), matrix(), and ipe::Ellipse::matrix().

friend 