Vespucci  1.0.0
QCPLineEnding Class Reference

Handles the different ending decorations for line-like items. More...

#include <qcustomplot.h>

Public Types

enum  EndingStyle {
  esNone, esFlatArrow, esSpikeArrow, esLineArrow,
  esDisc, esSquare, esDiamond, esBar,
  esHalfBar, esSkewedBar

Public Member Functions

 QCPLineEnding ()
 QCPLineEnding (EndingStyle style, double width=8, double length=10, bool inverted=false)
EndingStyle style () const
double width () const
double length () const
bool inverted () const
void setStyle (EndingStyle style)
void setWidth (double width)
void setLength (double length)
void setInverted (bool inverted)
double boundingDistance () const
double realLength () const
void draw (QCPPainter *painter, const QVector2D &pos, const QVector2D &dir) const
void draw (QCPPainter *painter, const QVector2D &pos, double angle) const

Protected Attributes

EndingStyle mStyle
double mWidth
double mLength
bool mInverted

Detailed Description

Handles the different ending decorations for line-like items.

The various ending styles currently supported

For every ending a line-like item has, an instance of this class exists. For example, QCPItemLine has two endings which can be set with QCPItemLine::setHead and QCPItemLine::setTail.

The styles themselves are defined via the enum QCPLineEnding::EndingStyle. Most decorations can be modified regarding width and length, see setWidth and setLength. The direction of the ending decoration (e.g. direction an arrow is pointing) is controlled by the line-like item. For example, when both endings of a QCPItemLine are set to be arrows, they will point to opposite directions, e.g. "outward". This can be changed by setInverted, which would make the respective arrow point inward.

Note that due to the overloaded QCPLineEnding constructor, you may directly specify a QCPLineEnding::EndingStyle where actually a QCPLineEnding is expected, e.g.


Definition at line 877 of file qcustomplot.h.

Member Enumeration Documentation

Defines the type of ending decoration for line-like items, e.g. an arrow.


The width and length of these decorations can be controlled with the functions setWidth and setLength. Some decorations like esDisc, esSquare, esDiamond and esBar only support a width, the length property is ignored.

See also
QCPItemLine::setHead, QCPItemLine::setTail, QCPItemCurve::setHead, QCPItemCurve::setTail, QCPAxis::setLowerEnding, QCPAxis::setUpperEnding

No ending decoration.


A filled arrow head with a straight/flat back (a triangle)


A filled arrow head with an indented back.


A non-filled arrow head with open back.


A filled circle.


A filled square.


A filled diamond (45° rotated square)


A bar perpendicular to the line.


A bar perpendicular to the line, pointing out to only one side (to which side can be changed with setInverted)


A bar that is skewed (skew controllable via setLength)

Definition at line 893 of file qcustomplot.h.

Constructor & Destructor Documentation

QCPLineEnding::QCPLineEnding ( )

Creates a QCPLineEnding instance with default values (style esNone).

Definition at line 3402 of file qcustomplot.cpp.

QCPLineEnding::QCPLineEnding ( QCPLineEnding::EndingStyle  style,
double  width = 8,
double  length = 10,
bool  inverted = false 

Creates a QCPLineEnding instance with the specified values.

Definition at line 3413 of file qcustomplot.cpp.

Member Function Documentation

double QCPLineEnding::boundingDistance ( ) const

Definition at line 3473 of file qcustomplot.cpp.

void QCPLineEnding::draw ( QCPPainter painter,
const QVector2D &  pos,
const QVector2D &  dir 
) const

Definition at line 3538 of file qcustomplot.cpp.

void QCPLineEnding::draw ( QCPPainter painter,
const QVector2D &  pos,
double  angle 
) const

Definition at line 3666 of file qcustomplot.cpp.

bool QCPLineEnding::inverted ( ) const

Definition at line 912 of file qcustomplot.h.

double QCPLineEnding::length ( ) const

Definition at line 911 of file qcustomplot.h.

double QCPLineEnding::realLength ( ) const

Starting from the origin of this line ending (which is style specific), returns the length covered by the line ending symbol, in backward direction.

For example, the esSpikeArrow has a shorter real length than a esFlatArrow, even if both have the same setLength value, because the spike arrow has an inward curved back, which reduces the length along its center axis (the drawing origin for arrows is at the tip).

This function is used for precise, style specific placement of line endings, for example in QCPAxes.

Definition at line 3508 of file qcustomplot.cpp.

void QCPLineEnding::setInverted ( bool  inverted)

Sets whether the ending decoration shall be inverted. For example, an arrow decoration will point inward when inverted is set to true.

Note that also the width direction is inverted. For symmetrical ending styles like arrows or discs, this doesn't make a difference. However, asymmetric styles like esHalfBar are affected by it, which can be used to control to which side the half bar points to.

Definition at line 3459 of file qcustomplot.cpp.

void QCPLineEnding::setLength ( double  length)

Sets the length of the ending decoration, if the style supports it. On arrows, for example, the length defines the size in pointing direction.

See also

Definition at line 3446 of file qcustomplot.cpp.

void QCPLineEnding::setStyle ( QCPLineEnding::EndingStyle  style)

Sets the style of the ending decoration.

Definition at line 3424 of file qcustomplot.cpp.

void QCPLineEnding::setWidth ( double  width)

Sets the width of the ending decoration, if the style supports it. On arrows, for example, the width defines the size perpendicular to the arrow's pointing direction.

See also

Definition at line 3435 of file qcustomplot.cpp.

EndingStyle QCPLineEnding::style ( ) const

Definition at line 909 of file qcustomplot.h.

double QCPLineEnding::width ( ) const

Definition at line 910 of file qcustomplot.h.

Member Data Documentation

bool QCPLineEnding::mInverted

Definition at line 930 of file qcustomplot.h.

double QCPLineEnding::mLength

Definition at line 929 of file qcustomplot.h.

EndingStyle QCPLineEnding::mStyle

Definition at line 928 of file qcustomplot.h.

double QCPLineEnding::mWidth

Definition at line 929 of file qcustomplot.h.

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