Ipelib
|
#include <ipeshape.h>
Inherits ipe::SubPath.
Public Member Functions | |
Curve () | |
virtual Type | type () const |
virtual bool | closed () const |
virtual const Curve * | asCurve () const |
virtual void | save (Stream &stream) const |
virtual void | draw (Painter &painter) const |
virtual void | addToBBox (Rect &box, const Matrix &m, bool cp) const |
virtual double | distance (const Vector &v, const Matrix &m, double bound) const |
virtual void | snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const |
virtual void | snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const |
int | countSegments () const |
int | countSegmentsClosing () const |
CurveSegment | segment (int i) const |
CurveSegment | closingSegment () const |
void | appendSegment (const Vector &v0, const Vector &v1) |
void | appendArc (const Matrix &m, const Vector &v0, const Vector &v1) |
void | appendSpline (const std::vector< Vector > &v) |
void | appendOldSpline (const std::vector< Vector > &v) |
void | appendCardinalSpline (const std::vector< Vector > &v, float tension) |
void | appendSpiroSpline (const std::vector< Vector > &v) |
void | appendSpiroSplinePrecomputed (const std::vector< Vector > &v, int sep) |
void | setClosed (bool closed) |
Public Member Functions inherited from ipe::SubPath | |
virtual | ~SubPath ()=0 |
virtual const Ellipse * | asEllipse () const |
virtual const ClosedSpline * | asClosedSpline () const |
Friends | |
class | CurveSegment |
Additional Inherited Members | |
Public Types inherited from ipe::SubPath | |
enum | Type { ECurve , EEllipse , EClosedSpline } |
Subpath consisting of a sequence of CurveSegment's.
Curve::Curve | ( | ) |
Create an empty, open subpath.
|
virtual |
|
inlinevirtual |
Is this subpath closed?
Default implementation returns true
.
Reimplemented from ipe::SubPath.
Referenced by draw(), save(), setClosed(), and snapVtx().
|
virtual |
Return this object as an Curve, or else nullptr.
Reimplemented from ipe::SubPath.
|
virtual |
Save subpath to XML stream.
Implements ipe::SubPath.
References closed(), ipe::CurveSegment::EArc, ipe::CurveSegment::ECardinalSpline, ipe::CurveSegment::EOldSpline, ipe::CurveSegment::ESegment, ipe::CurveSegment::ESpiroSpline, and ipe::CurveSegment::ESpline.
|
virtual |
Draw subpath (does not call drawPath()).
Implements ipe::SubPath.
References closed(), ipe::Painter::closePath(), countSegments(), ipe::CurveSegment::draw(), ipe::Painter::moveTo(), and segment().
Add subpath to box.
Implements ipe::SubPath.
References ipe::CurveSegment::addToBBox(), countSegments(), and segment().
Return distance from v to subpath transformed by m.
Implements ipe::SubPath.
References countSegmentsClosing(), ipe::CurveSegment::distance(), and segment().
|
virtual |
Snap to vertex.
Implements ipe::SubPath.
References closed(), closingSegment(), countSegments(), segment(), and ipe::CurveSegment::snapVtx().
|
virtual |
Snap to boundary of subpath.
Implements ipe::SubPath.
References countSegmentsClosing(), segment(), and ipe::CurveSegment::snapBnd().
|
inline |
Return number of segments. This does not include the closing segment for a closed path.
Referenced by addToBBox(), draw(), ipe::Shape::isSegment(), ipe::Shape::load(), and snapVtx().
|
inline |
Return number of segments including the closing segment.
Referenced by distance(), and snapBnd().
CurveSegment Curve::segment | ( | int | i | ) | const |
Return segment.
If i is negative, elements from the end are returned. If i == countSegments(), the closing segment of a closed path is returned.
References CurveSegment.
Referenced by addToBBox(), distance(), draw(), ipe::Path::draw(), ipe::Shape::isSegment(), snapBnd(), and snapVtx().
CurveSegment Curve::closingSegment | ( | ) | const |
Returns the closing segment of a closed path.
This method panics if the Curve is not closed.
References CurveSegment.
Referenced by snapVtx().
Append a straight segment to the subpath.
References ipe::CurveSegment::ESegment.
Referenced by ipe::Shape::load(), setClosed(), and ipe::Shape::Shape().
Append elliptic arc to the subpath.
References ipe::CurveSegment::EArc.
Referenced by ipe::Shape::load(), and ipe::Shape::Shape().
|
inline |
References ipe::CurveSegment::ESpline.
Referenced by appendCardinalSpline(), appendOldSpline(), and ipe::Shape::load().
|
inline |
References appendSpline(), and ipe::CurveSegment::EOldSpline.
Referenced by ipe::Shape::load().
void Curve::appendCardinalSpline | ( | const std::vector< Vector > & | v, |
float | tension | ||
) |
Append a cardinal spline curve.
References appendSpline(), and ipe::CurveSegment::ECardinalSpline.
Referenced by ipe::Shape::load().
void Curve::appendSpiroSpline | ( | const std::vector< Vector > & | v | ) |
Append a spiro spline curve.
References ipe::CurveSegment::ESpiroSpline, ipe::size(), and ipe::Bezier::spiroSpline().
Referenced by ipe::Shape::load().
void Curve::appendSpiroSplinePrecomputed | ( | const std::vector< Vector > & | v, |
int | sep | ||
) |
Append a spiro spline curve with precomputed Bezier control points.
References ipe::CurveSegment::ESpiroSpline, and ipe::size().
Referenced by ipe::Shape::load().
void Curve::setClosed | ( | bool | closed | ) |
Set whether subpath is closed or not.
Must be called after all segments have been added to the path.
References appendSegment(), and closed().
Referenced by ipe::Shape::load(), and ipe::Shape::Shape().
|
friend |
Referenced by closingSegment(), and segment().