# IpeSegmentSubPath Class Reference
[Ipe Objects]

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

Inherits IpeSubPath.

List of all members.

## Public Member Functions

- IpeSegmentSubPath ()
- virtual TType Type () const
- virtual bool Closed () const
- virtual const IpeSegmentSubPath * AsSegs () const
- virtual IpeSegmentSubPath * AsSegs ()
- virtual IpeSubPath * Clone () const
- virtual IpeSubPath * Transform (const IpeMatrix &m) const
- virtual void SaveAsXml (IpeStream &stream) const
- virtual void Draw (IpePainter &painter) const
- virtual void AddToBBox (IpeRect &box, const IpeMatrix &m) const
- virtual double Distance (const IpeVector &v, const IpeMatrix &m, double bound) const
- virtual void SnapVtx (const IpeVector &mouse, const IpeMatrix &m, IpeVector &pos, double &bound) const
- virtual void SnapBnd (const IpeVector &mouse, const IpeMatrix &m, IpeVector &pos, double &bound) const
- int NumSegments () const
- IpePathSegment Segment (int i) const
- IpePathSegment ClosingSegment (IpeVector u[2]) const
- void Append (const IpePathSegment &seg)
- void AppendReversed (const IpePathSegment &seg)
- void AppendSegment (const IpeVector &v0, const IpeVector &v1)
- void AppendArc (const IpeMatrix &m, const IpeVector &v0, const IpeVector &v1)
- void AppendQuad (const IpeVector &v0, const IpeVector &v1, const IpeVector &v2)
- void AppendBezier (const IpeVector &v0, const IpeVector &v1, const IpeVector &v2, const IpeVector &v3)
- void AppendSpline (const std::vector< IpeVector > &v)
- void SetClosed (bool closed)
- void MoveCP (int seg, int cp, const IpeVector &pos)
- void InsertCP (int seg, int cp, const IpeVector &pos)
- void InsertSegment (int seg)
- void DeleteSegment (int seg)
- void DeleteCP (int seg, int cp)
- void Straighten (int seg)
- void SetMatrix (int seg, const IpeMatrix &m)

## Detailed Description

Subpath consisting of a sequence of IpePathSegment's.

## Constructor & Destructor Documentation

IpeSegmentSubPath::IpeSegmentSubPath | ( |  | ) |

| Create an empty, open subpath.

## Member Function Documentation

IpeSubPath::TType IpeSegmentSubPath::Type | ( |  | ) | const`[virtual]`

| Return type of this subpath. Implements IpeSubPath.

virtual bool IpeSegmentSubPath::Closed | ( |  | ) | const`[inline, virtual]`

| Is this subpath closed? Default implementation returns `true`. Reimplemented from IpeSubPath.

const IpeSegmentSubPath * IpeSegmentSubPath::AsSegs | ( |  | ) | const`[virtual]`

| Return this object as an IpeSegmentSubPath, or else 0. Reimplemented from IpeSubPath.

IpeSegmentSubPath * IpeSegmentSubPath::AsSegs | ( |  | ) | `[virtual]`

| Return this object as an IpeSegmentSubPath, or else 0. Reimplemented from IpeSubPath.

IpeSubPath * IpeSegmentSubPath::Clone | ( |  | ) | const`[virtual]`

| Return a copy of this subpath. Implements IpeSubPath.

IpeSubPath * IpeSegmentSubPath::Transform | ( | const IpeMatrix & | m | ) | const`[virtual]`

| Return a transformed copy of this subpath. Implements IpeSubPath.

void IpeSegmentSubPath::SaveAsXml | ( | IpeStream & | stream | ) | const`[virtual]`

| Save subpath to XML stream. Implements IpeSubPath.

void IpeSegmentSubPath::Draw | ( | IpePainter & | painter | ) | const`[virtual]`

| Draw subpath (does not call DrawPath()). Implements IpeSubPath.

void IpeSegmentSubPath::AddToBBox | ( | IpeRect & | box,
|  | const IpeMatrix & | m
| ) | const`[virtual]`

| Add subpath to box. Implements IpeSubPath.

double IpeSegmentSubPath::Distance | ( | const IpeVector & | v,
|  | const IpeMatrix & | m,
|  | double | bound
| ) | const`[virtual]`

| Return distance from v to subpath transformed by m. Implements IpeSubPath.

void IpeSegmentSubPath::SnapVtx | ( | const IpeVector & | mouse,
|  | const IpeMatrix & | m,
|  | IpeVector & | pos,
|  | double & | bound
| ) | const`[virtual]`

| Snap to vertex. Implements IpeSubPath.

void IpeSegmentSubPath::SnapBnd | ( | const IpeVector & | mouse,
|  | const IpeMatrix & | m,
|  | IpeVector & | pos,
|  | double & | bound
| ) | const`[virtual]`

| Snap to boundary of subpath. Implements IpeSubPath.

int IpeSegmentSubPath::NumSegments | ( |  | ) | const`[inline]`

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

IpePathSegment IpeSegmentSubPath::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)!

IpePathSegment IpeSegmentSubPath::ClosingSegment | ( | IpeVector | 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.

void IpeSegmentSubPath::Append | ( | const IpePathSegment & | seg | ) |

| Append a segment (from a different path) to the subpath.

void IpeSegmentSubPath::AppendReversed | ( | const IpePathSegment & | seg | ) |

| Append a segment to the subpath, reversing its orientation.

void IpeSegmentSubPath::AppendSegment | ( | const IpeVector & | v0,
|  | const IpeVector & | v1
| ) |

| Append a straight segment to the subpath.

void IpeSegmentSubPath::AppendArc | ( | const IpeMatrix & | m,
|  | const IpeVector & | v0,
|  | const IpeVector & | v1
| ) |

| Append elliptic arc to the subpath.

void IpeSegmentSubPath::AppendQuad | ( | const IpeVector & | v0,
|  | const IpeVector & | v1,
|  | const IpeVector & | v2
| ) |

| Append quadratic Bezier spline.

void IpeSegmentSubPath::AppendBezier | ( | const IpeVector & | v0,
|  | const IpeVector & | v1,
|  | const IpeVector & | v2,
|  | const IpeVector & | v3
| ) |

| Append cubic Bezier spline.

void IpeSegmentSubPath::AppendSpline | ( | const std::vector< IpeVector > & | v | ) |

| Append B-spline curve.

void IpeSegmentSubPath::SetClosed | ( | bool | closed | ) |

| Set whether subpath is closed or not.

void IpeSegmentSubPath::MoveCP | ( | int | seg,
|  | int | cp,
|  | const IpeVector & | pos
| ) |

| Move control point cp of segment cp to position pos. If seg or cp are negative, they count from the end.

void IpeSegmentSubPath::InsertCP | ( | int | seg,
|  | int | cp,
|  | const IpeVector & | pos
| ) |

| Insert a control point into a spline segment. If seg is negative, counts from the end. If cp is negative, append to segment.

void IpeSegmentSubPath::InsertSegment | ( | int | seg | ) |

| Insert a zero-length segment before segment seg. If seg is negative, it counts from the end.

void IpeSegmentSubPath::DeleteSegment | ( | int | seg | ) |

| Delete a segment from the subpath. If seg is negative, it counts from the end. If a segment in the middle is deleted, the first and last control point must be identical.

void IpeSegmentSubPath::DeleteCP | ( | int | seg,
|  | int | cp
| ) |

| Delete a control point from a spline segment. If seg or cp are negative, count from the end. This cannot be used to remove the first or last CP of a spline curve, unless the spline is the first or last segment of the subpath. If the spline has only two vertices, it is simply deleted.

void IpeSegmentSubPath::Straighten | ( | int | seg | ) |

| Replace segment by a straight segment. If seg is negative, counts from the end.

void IpeSegmentSubPath::SetMatrix | ( | int | seg,
|  | const IpeMatrix & | m
| ) |

| Change the matrix of arc segment. If seg is negative, counts from the end.

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

- ipepath.h
- ipepath.cpp