QwtSymbol Class Reference

A class for drawing symbols. More...

`#include <qwt_symbol.h>`

## Public Types

enum | Style { NoSymbol = -1, Ellipse, Rect, Diamond, Triangle, DTriangle, UTriangle, LTriangle, RTriangle, Cross, XCross, HLine, VLine, Star1, Star2, Hexagon, Path, Pixmap, Graphic, SvgDocument, UserStyle = 1000 }
enum | CachePolicy { NoCache, Cache, AutoCache }

## Public Member Functions

| QwtSymbol (Style=NoSymbol)
| QwtSymbol (Style, const QBrush &, const QPen &, const QSize &)
| Constructor. More...
| QwtSymbol (const QPainterPath &, const QBrush &, const QPen &)
| Constructor. More...
virtual | ~QwtSymbol ()
| Destructor.
void | setCachePolicy (CachePolicy)
CachePolicy | cachePolicy () const
void | setSize (const QSize &)
void | setSize (int width, int height=-1)
| Specify the symbol's size. More...
const QSize & | size () const
void | setPinPoint (const QPointF &pos, bool enable=true)
| Set and enable a pin point. More...
QPointF | pinPoint () const
void | setPinPointEnabled (bool)
bool | isPinPointEnabled () const
virtual void | setColor (const QColor &)
| Set the color of the symbol. More...
void | setBrush (const QBrush &b)
| Assign a brush. More...
const QBrush & | brush () const
void | setPen (const QColor &, qreal width=0.0, Qt::PenStyle=Qt::SolidLine)
void | setPen (const QPen &)
const QPen & | pen () const
void | setStyle (Style)
Style | style () const
void | setPath (const QPainterPath &)
| Set a painter path as symbol. More...
const QPainterPath & | path () const
void | setPixmap (const QPixmap &)
const QPixmap & | pixmap () const
void | setGraphic (const QwtGraphic &)
const QwtGraphic & | graphic () const
void | setSvgDocument (const QByteArray &)
void | drawSymbol (QPainter *, const QRectF &) const
| Draw the symbol into a rectangle. More...
void | drawSymbol (QPainter *, const QPointF &) const
| Draw the symbol at a specified position. More...
void | drawSymbols (QPainter *, const QPolygonF &) const
| Draw symbols at the specified points. More...
void | drawSymbols (QPainter *, const QPointF *, int numPoints) const
virtual QRect | boundingRect () const
void | invalidateCache ()

## Protected Member Functions

virtual void | renderSymbols (QPainter *, const QPointF *, int numPoints) const

## Detailed Description

A class for drawing symbols.

## Member Enumeration Documentation

enum QwtSymbol::CachePolicy

Depending on the render engine and the complexity of the symbol shape it might be faster to render the symbol to a pixmap and to paint this pixmap.

F.e. the raster paint engine is a pure software renderer where in cache mode a draw operation usually ends in raster operation with the the backing store, that are usually faster, than the algorithms for rendering polygons. But the opposite can be expected for graphic pipelines that can make use of hardware acceleration.

The default setting is AutoCache

See also
  setCachePolicy(), cachePolicy()

Note
  The policy has no effect, when the symbol is painted to a vector graphics format ( PDF, SVG ).

Warning
  Since Qt 4.8 raster is the default backend on X11

Enumerator
NoCache | Don't use a pixmap cache.
Cache | Always use a pixmap cache.

AutoCache

Use a cache when one of the following conditions is true:

- The symbol is rendered with the software renderer ( QPaintEngine::Raster )

enum QwtSymbol::Style

Symbol Style

See also
  setStyle(), style()

Enumerator
NoSymbol | No Style. The symbol cannot be drawn.
Ellipse | Ellipse or circle.
Rect | Rectangle.
Diamond | Diamond.
Triangle | Triangle pointing upwards.
DTriangle | Triangle pointing downwards.
UTriangle | Triangle pointing upwards.
LTriangle | Triangle pointing left.
RTriangle | Triangle pointing right.
Cross | Cross (+)
XCross | Diagonal cross (X)
HLine | Horizontal line.
VLine | Vertical line.
Star1 | X combined with +.
Star2 | Six-pointed star.
Hexagon | Hexagon.

Path

The symbol is represented by a painter path, where the origin ( 0, 0 ) of the path coordinate system is mapped to the position of the symbol.

See also
  setPath(), path()

Pixmap

The symbol is represented by a pixmap. The pixmap is centered or aligned to its pin point.

See also
  setPinPoint()

Graphic

The symbol is represented by a graphic. The graphic is centered or aligned to its pin point.

See also
  setPinPoint()

SvgDocument

The symbol is represented by a SVG graphic. The graphic is centered or aligned to its pin point.

See also
  setPinPoint()

UserStyle | Styles >= QwtSymbol::UserSymbol are reserved for derived classes of QwtSymbol that overload drawSymbols() with additional application specific symbol types.

## Constructor & Destructor Documentation

QwtSymbol::QwtSymbol | ( | Style | style = `NoSymbol` | ) |

Default Constructor

Parameters

  style | Symbol Style

The symbol is constructed with gray interior, black outline with zero width, no size and style 'NoSymbol'.

QwtSymbol::QwtSymbol | ( | QwtSymbol::Style | style,
|  | const QBrush & | brush,
|  | const QPen & | pen,
|  | const QSize & | size
| ) |  |

Constructor.

Parameters

  style | Symbol Style
  brush | brush to fill the interior
  pen | outline pen
  size | size

See also
  setStyle(), setBrush(), setPen(), setSize()

QwtSymbol::QwtSymbol | ( | const QPainterPath & | path,
|  | const QBrush & | brush,
|  | const QPen & | pen
| ) |  |

Constructor.

The symbol gets initialized by a painter path. The style is set to QwtSymbol::Path, the size is set to empty ( the path is displayed unscaled ).

Parameters

  path | painter path
  brush | brush to fill the interior
  pen | outline pen

See also
  setPath(), setBrush(), setPen(), setSize()

## Member Function Documentation

QRect QwtSymbol::boundingRect | ( |  | ) | const

virtual

Calculate the bounding rectangle for a symbol at position (0,0).

Returns
  Bounding rectangle

const QBrush & QwtSymbol::brush | ( |  | ) | const

Returns
  Brush

See also
  setBrush()

QwtSymbol::CachePolicy QwtSymbol::cachePolicy | ( |  | ) | const

Returns
  Cache policy

See also
  CachePolicy, setCachePolicy()

void QwtSymbol::drawSymbol | ( | QPainter * | painter,
|  | const QRectF & | rect
| ) |  | const

Draw the symbol into a rectangle.

The symbol is painted centered and scaled into the target rectangle. It is always painted uncached and the pin point is ignored.

This method is primarily intended for drawing a symbol to the legend.

Parameters

  painter | Painter
  rect | Target rectangle for the symbol

void QwtSymbol::drawSymbol | ( | QPainter * | painter,
|  | const QPointF & | pos
| ) |  | const

inline

Draw the symbol at a specified position.

Parameters

  painter | Painter
  pos | Position of the symbol in screen coordinates

void QwtSymbol::drawSymbols | ( | QPainter * | painter,
|  | const QPolygonF & | points
| ) |  | const

inline

Draw symbols at the specified points.

Parameters

  painter | Painter
  points | Positions of the symbols in screen coordinates

void QwtSymbol::drawSymbols | ( | QPainter * | painter,
|  | const QPointF * | points,
|  | int | numPoints
| ) |  | const

Render an array of symbols

Painting several symbols is more effective than drawing symbols one by one, as a couple of layout calculations and setting of pen/brush can be done once for the complete array.

Parameters

  painter | Painter
  points | Array of points
  numPoints | Number of points

const QwtGraphic & QwtSymbol::graphic | ( |  | ) | const

Returns
  Assigned graphic

See also
  setGraphic()

void QwtSymbol::invalidateCache | ( |  | ) |

Invalidate the cached symbol pixmap

The symbol invalidates its cache, whenever an attribute is changed that has an effect ob how to display a symbol. In case of derived classes with individual styles ( >= QwtSymbol::UserStyle ) it might be necessary to call invalidateCache() for attributes that are relevant for this style.

See also
  CachePolicy, setCachePolicy(), drawSymbols()

bool QwtSymbol::isPinPointEnabled | ( |  | ) | const

Returns
  True, when the pin point translation is enabled

See also
  setPinPoint(), setPinPointEnabled()

const QPainterPath & QwtSymbol::path | ( |  | ) | const

Returns
  Painter path for displaying the symbol

See also
  setPath()

const QPen & QwtSymbol::pen | ( |  | ) | const

Returns
  Pen

See also
  setPen(), brush()

QPointF QwtSymbol::pinPoint | ( |  | ) | const

Returns
  Pin point

See also
  setPinPoint(), setPinPointEnabled()

const QPixmap & QwtSymbol::pixmap | ( |  | ) | const

Returns
  Assigned pixmap

See also
  setPixmap()

void QwtSymbol::renderSymbols | ( | QPainter * | painter,
|  | const QPointF * | points,
|  | int | numPoints
| ) |  | const

protected virtual

Render the symbol to series of points

Parameters

  painter | Qt painter
  points | Positions of the symbols
  numPoints | Number of points

void QwtSymbol::setBrush | ( | const QBrush & | brush | ) |

Assign a brush.

The brush is used to draw the interior of the symbol.

Parameters

  brush | Brush

See also
  brush()

void QwtSymbol::setCachePolicy | ( | QwtSymbol::CachePolicy | policy | ) |

Change the cache policy

The default policy is AutoCache

Parameters

  policy | Cache policy

See also
  CachePolicy, cachePolicy()

void QwtSymbol::setColor | ( | const QColor & | color | ) |

virtual

Set the color of the symbol.

Change the color of the brush for symbol types with a filled area. For all other symbol types the color will be assigned to the pen.

Parameters

  color | Color

See also
  setBrush(), setPen(), brush(), pen()

void QwtSymbol::setGraphic | ( | const QwtGraphic & | graphic | ) |

Set a graphic as symbol

Parameters

  graphic | Graphic

See also
  graphic(), setPixmap()

Note
  the style() is set to QwtSymbol::Graphic
  brush() and pen() have no effect

void QwtSymbol::setPath | ( | const QPainterPath & | path | ) |

Set a painter path as symbol.

The symbol is represented by a painter path, where the origin ( 0, 0 ) of the path coordinate system is mapped to the position of the symbol.

When the symbol has valid size the painter path gets scaled to fit into the size. Otherwise the symbol size depends on the bounding rectangle of the path.

The following code defines a symbol drawing an arrow:

    #include <qwt_symbol.h>

    QwtSymbol *symbol = new QwtSymbol();

    QPen pen( Qt::black, 2 );
    pen.setJoinStyle( Qt::MiterJoin );

    symbol->setPen( pen );
    symbol->setBrush( Qt::red );

    QPainterPath path;
    path.moveTo( 0, 8 );
    path.lineTo( 0, 5 );
    path.lineTo( -3, 5 );
    path.lineTo( 0, 0 );
    path.lineTo( 3, 5 );
    path.lineTo( 0, 5 );

    QTransform transform;
    transform.rotate( -30.0 );
    path = transform.map( path );

    symbol->setPath( path );
    symbol->setPinPoint( QPointF( 0.0, 0.0 ) );

    setSize( 10, 14 );

Parameters

  path | Painter path

Note
  The style is implicitely set to QwtSymbol::Path.

See also
  path(), setSize()

void QwtSymbol::setPen | ( | const QColor & | color,
|  | qreal | width = `0.0`,
|  | Qt::PenStyle | style = `Qt::SolidLine`
| ) |  |

Build and assign a pen

In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic ( see QPen::isCosmetic() ). This method has been introduced to hide this incompatibility.

Parameters

  color | Pen color
  width | Pen width
  style | Pen style

See also
  pen(), brush()

void QwtSymbol::setPen | ( | const QPen & | pen | ) |

Assign a pen

The pen is used to draw the symbol's outline.

Parameters

  pen | Pen

See also
  pen(), setBrush()

void QwtSymbol::setPinPoint | ( | const QPointF & | pos,
|  | bool | enable = `true`
| ) |  |

Set and enable a pin point.

The position of a complex symbol is not always aligned to its center ( f.e an arrow, where the peak points to a position ). The pin point defines the position inside of a Pixmap, Graphic, SvgDocument or PainterPath symbol where the represented point has to be aligned to.

Parameters

  pos | Position
  enable | En/Disable the pin point alignment

See also
  pinPoint(), setPinPointEnabled()

void QwtSymbol::setPinPointEnabled | ( | bool | on | ) |

En/Disable the pin point alignment

Parameters

  on | Enabled, when on is true

See also
  setPinPoint(), isPinPointEnabled()

void QwtSymbol::setPixmap | ( | const QPixmap & | pixmap | ) |

Set a pixmap as symbol

Parameters

  pixmap | Pixmap

See also
  pixmap(), setGraphic()

Note
  the style() is set to QwtSymbol::Pixmap
  brush() and pen() have no effect

void QwtSymbol::setSize | ( | const QSize & | size | ) |

Set the symbol's size

Parameters

  size | Size

See also
  size()

void QwtSymbol::setSize | ( | int | width,
|  | int | height = `-1`
| ) |  |

Specify the symbol's size.

If the 'h' parameter is left out or less than 0, and the 'w' parameter is greater than or equal to 0, the symbol size will be set to (w,w).

Parameters

  width | Width
  height | Height (defaults to -1)

See also
  size()

void QwtSymbol::setStyle | ( | QwtSymbol::Style | style | ) |

Specify the symbol style

Parameters

  style | Style

See also
  style()

void QwtSymbol::setSvgDocument | ( | const QByteArray & | svgDocument | ) |

Set a SVG icon as symbol

Parameters

  svgDocument | SVG icon

See also
  setGraphic(), setPixmap()

Note
  the style() is set to QwtSymbol::SvgDocument
  brush() and pen() have no effect

const QSize & QwtSymbol::size | ( |  | ) | const

Returns
  Size

See also
  setSize()

QwtSymbol::Style QwtSymbol::style | ( |  | ) | const

Returns
  Current symbol style

See also
  setStyle()