ipe::Curve Class Reference
Ipe Geometry

`#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
CurveSegment | segment (int i) const
CurveSegment | closingSegment (Vector u[2]) 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 | setClosed (bool closed)
Public Member Functions inherited from ipe::SubPath
virtual | ~SubPath ()=0
virtual const Ellipse * | asEllipse () const
virtual const ClosedSpline * | asClosedSpline () const

## Additional Inherited Members

Public Types inherited from ipe::SubPath
enum | Type { ECurve, EEllipse, EClosedSpline }

## Detailed Description

Subpath consisting of a sequence of CurveSegment's.

## Constructor & Destructor Documentation

## Curve()

Curve::Curve | ( |  | ) |

Create an empty, open subpath.

Referenced by ipe::CurveSegment::snapBnd().

## Member Function Documentation

## type()

SubPath::Type Curve::type | ( |  | ) | const

virtual

Return type of this subpath.

Implements ipe::SubPath.

## closed()

virtual bool ipe::Curve::closed | ( |  | ) | const

inlinevirtual

Is this subpath closed?

Default implementation returns `true`.

Reimplemented from ipe::SubPath.

References ipe::CurveSegment::addToBBox(), ipe::CurveSegment::cp(), ipe::CurveSegment::distance(), ipe::CurveSegment::draw(), ipe::CurveSegment::snapBnd(), and ipe::CurveSegment::snapVtx().

## asCurve()

const Curve * Curve::asCurve | ( |  | ) | const

virtual

Return this object as an Curve, or else nullptr.

Reimplemented from ipe::SubPath.

## save()

void Curve::save | ( | Stream & | stream | ) | const

virtual

Save subpath to XML stream.

Implements ipe::SubPath.

References ipe::CurveSegment::EArc, ipe::CurveSegment::EOldSpline, ipe::CurveSegment::ESegment, and ipe::CurveSegment::ESpline.

## draw()

void Curve::draw | ( | Painter & | painter | ) | const

virtual

Draw subpath (does not call drawPath()).

Implements ipe::SubPath.

References ipe::Painter::closePath(), and ipe::Painter::moveTo().

## addToBBox()

void Curve::addToBBox | ( | Rect & | box,
|  | const Matrix & | m,
|  | bool | cp
| ) |  | const

virtual

Add subpath to box.

Implements ipe::SubPath.

## distance()

double Curve::distance | ( | const Vector & | v,
|  | const Matrix & | m,
|  | double | bound
| ) |  | const

virtual

Return distance from v to subpath transformed by m.

Implements ipe::SubPath.

## snapVtx()

void Curve::snapVtx | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound,
|  | bool | cp
| ) |  | const

virtual

Snap to vertex.

Implements ipe::SubPath.

## snapBnd()

void Curve::snapBnd | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound
| ) |  | const

virtual

Snap to boundary of subpath.

Implements ipe::SubPath.

## countSegments()

int ipe::Curve::countSegments | ( |  | ) | const

inline

Return number of segments. This does not include the closing segment for a closed path.

Referenced by ipe::Shape::isSegment().

## segment()

CurveSegment Curve::segment | ( | int | i | ) | const

Return segment.

If i is negative, elements from the end are returned. The closing segment of a closed path is not accessible this way (use closingSegment() instead)!

Referenced by ipe::Path::clone(), ipe::Path::draw(), and ipe::Shape::isSegment().

## closingSegment()

CurveSegment Curve::closingSegment | ( | Vector | u[2] | ) | const

Returns the closing segment of a closed path.

Since the closing segment isn't actually stored inside this object, you have to provide a length-2 vector for the control points.

This method panics if the Curve is not closed.

References ipe::CurveSegment::ESegment, and ipe::SubPath::~SubPath().

## appendSegment()

void Curve::appendSegment | ( | const Vector & | v0,
|  | const Vector & | v1
| ) |  |

Append a straight segment to the subpath.

References ipe::CurveSegment::ESegment.

Referenced by ipe::Shape::load(), and ipe::Shape::Shape().

## appendArc()

void Curve::appendArc | ( | const Matrix & | m,
|  | const Vector & | v0,
|  | const Vector & | v1
| ) |  |

Append elliptic arc to the subpath.

References appendSpline(), ipe::CurveSegment::EArc, ipe::CurveSegment::EOldSpline, ipe::CurveSegment::ESpline, and ipe::size().

Referenced by ipe::Shape::load(), and ipe::Shape::Shape().

## appendSpline()

void ipe::Curve::appendSpline | ( | const std::vector< Vector > & | v | ) |

inline

References ipe::CurveSegment::ESpline.

Referenced by appendArc(), and ipe::Shape::load().

## appendOldSpline()

void ipe::Curve::appendOldSpline | ( | const std::vector< Vector > & | v | ) |

inline

References ipe::CurveSegment::EOldSpline.

Referenced by ipe::Shape::load().

## setClosed()

void Curve::setClosed | ( | bool | closed | ) |

Set whether subpath is closed or not.

Referenced by ipe::Shape::load(), and ipe::Shape::Shape().

The documentation for this class was generated from the following files:

- ipeshape.h
- ipeshape.cpp