# ipe::Curve Class Reference
[Ipe Geometry]

Subpath consisting of a sequence of CurveSegment's. More...

`#include <ipeshape.h>`

Inherits ipe::SubPath.

List of all members.

## Classes

- struct Seg

## 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) 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 appendQuad (const Vector &v0, const Vector &v1, const Vector &v2)
- void appendBezier (const Vector &v0, const Vector &v1, const Vector &v2, const Vector &v3)
- void appendSpline (const std::vector< Vector > &v)
- void setClosed (bool closed)

## Detailed Description

Subpath consisting of a sequence of CurveSegment's.

## Constructor & Destructor Documentation

Curve::Curve | ( |  | ) |

Create an empty, open subpath.

## Member Function Documentation

SubPath::Type Curve::type | ( |  | ) | const`[virtual]`

Return type of this subpath.

Implements ipe::SubPath.

virtual bool ipe::Curve::closed | ( |  | ) | const`[inline, virtual]`

Is this subpath closed?

Default implementation returns `true`.

Reimplemented from ipe::SubPath.

const Curve * Curve::asCurve | ( |  | ) | const`[virtual]`

Return this object as an Curve, or else 0.

Reimplemented from ipe::SubPath.

void Curve::save | ( | Stream & | stream | ) | const`[virtual]`

Save subpath to XML stream.

Implements ipe::SubPath.

void Curve::draw | ( | Painter & | painter | ) | const`[virtual]`

Draw subpath (does not call drawPath()).

Implements ipe::SubPath.

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

Add subpath to box.

Implements ipe::SubPath.

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.

void Curve::snapVtx | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound |
| ) |  |  | const`[virtual]`

Snap to vertex.

Implements ipe::SubPath.

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

Snap to boundary of subpath.

Implements ipe::SubPath.

int ipe::Curve::countSegments | ( |  | ) | const`[inline]`

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

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)!

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.

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

Append a straight segment to the subpath.

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

Append elliptic arc to the subpath.

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

Append quadratic Bezier spline.

void Curve::appendBezier | ( | const Vector & | v0,
|  | const Vector & | v1,
|  | const Vector & | v2,
|  | const Vector & | v3 |
| ) |  |  |

Append cubic Bezier spline.

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

Append B-spline curve.

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

Set whether subpath is closed or not.

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

- ipeshape.h
- ipeshape.cpp