QwtPainter Class Reference

A collection of QPainter workarounds. More...

`#include <qwt_painter.h>`

## Static Public Member Functions

static void | setPolylineSplitting (bool)
| En/Disable line splitting for the raster paint engine. More...
static bool | polylineSplitting ()
static void | setRoundingAlignment (bool)
static bool | roundingAlignment ()
static bool | roundingAlignment (QPainter *)
static void | drawText (QPainter *, double x, double y, const QString &)
| Wrapper for QPainter::drawText()
static void | drawText (QPainter *, const QPointF &, const QString &)
| Wrapper for QPainter::drawText()
static void | drawText (QPainter *, double x, double y, double w, double h, int flags, const QString &)
| Wrapper for QPainter::drawText()
static void | drawText (QPainter *, const QRectF &, int flags, const QString &)
| Wrapper for QPainter::drawText()
static void | drawSimpleRichText (QPainter *, const QRectF &, int flags, const QTextDocument &)
static void | drawRect (QPainter *, double x, double y, double w, double h)
| Wrapper for QPainter::drawRect()
static void | drawRect (QPainter *, const QRectF &rect)
| Wrapper for QPainter::drawRect()
static void | fillRect (QPainter *, const QRectF &, const QBrush &)
| Wrapper for QPainter::fillRect()
static void | drawEllipse (QPainter *, const QRectF &)
| Wrapper for QPainter::drawEllipse()
static void | drawPie (QPainter *, const QRectF &, int a, int alen)
| Wrapper for QPainter::drawPie()
static void | drawLine (QPainter *, double x1, double y1, double x2, double y2)
| Wrapper for QPainter::drawLine()
static void | drawLine (QPainter *, const QPointF &p1, const QPointF &p2)
| Wrapper for QPainter::drawLine()
static void | drawLine (QPainter *, const QLineF &)
| Wrapper for QPainter::drawLine()
static void | drawPolygon (QPainter *, const QPolygonF &)
| Wrapper for QPainter::drawPolygon()
static void | drawPolyline (QPainter *, const QPolygonF &)
| Wrapper for QPainter::drawPolyline()
static void | drawPolyline (QPainter *, const QPointF *, int pointCount)
| Wrapper for QPainter::drawPolyline()
static void | drawPolygon (QPainter *, const QPolygon &)
| Wrapper for QPainter::drawPolygon()
static void | drawPolyline (QPainter *, const QPolygon &)
| Wrapper for QPainter::drawPolyline()
static void | drawPolyline (QPainter *, const QPoint *, int pointCount)
| Wrapper for QPainter::drawPolyline()
static void | drawPoint (QPainter *, const QPoint &)
| Wrapper for QPainter::drawPoint()
static void | drawPoints (QPainter *, const QPolygon &)
| Wrapper for QPainter::drawPoints()
static void | drawPoints (QPainter *, const QPoint *, int pointCount)
| Wrapper for QPainter::drawPoints()
static void | drawPoint (QPainter *, double x, double y)
| Wrapper for QPainter::drawPoint()
static void | drawPoint (QPainter *, const QPointF &)
| Wrapper for QPainter::drawPoint()
static void | drawPoints (QPainter *, const QPolygonF &)
| Wrapper for QPainter::drawPoints()
static void | drawPoints (QPainter *, const QPointF *, int pointCount)
| Wrapper for QPainter::drawPoints()
static void | drawPath (QPainter *, const QPainterPath &)
| Wrapper for QPainter::drawPath()
static void | drawImage (QPainter *, const QRectF &, const QImage &)
| Wrapper for QPainter::drawImage()
static void | drawPixmap (QPainter *, const QRectF &, const QPixmap &)
| Wrapper for QPainter::drawPixmap()
static void | drawRoundFrame (QPainter *, const QRectF &, const QPalette &, int lineWidth, int frameStyle)
static void | drawRoundedFrame (QPainter *, const QRectF &, double xRadius, double yRadius, const QPalette &, int lineWidth, int frameStyle)
static void | drawFrame (QPainter *, const QRectF &rect, const QPalette &palette, QPalette::ColorRole foregroundRole, int frameWidth, int midLineWidth, int frameStyle)
static void | drawFocusRect (QPainter *, const QWidget *)
| Draw a focus rectangle on a widget using its style.
static void | drawFocusRect (QPainter *, const QWidget *, const QRect &)
| Draw a focus rectangle on a widget using its style.
static void | drawColorBar (QPainter *painter, const QwtColorMap &, const QwtInterval &, const QwtScaleMap &, Qt::Orientation, const QRectF &)
static bool | isAligning (QPainter *painter)
static bool | isX11GraphicsSystem ()
static void | fillPixmap (const QWidget *, QPixmap &, const QPoint &offset=QPoint())
static void | drawBackgound (QPainter *painter, const QRectF &rect, const QWidget *widget)
static QPixmap | backingStore (QWidget *, const QSize &)

## Detailed Description

A collection of QPainter workarounds.

## Member Function Documentation

## backingStore()

QPixmap QwtPainter::backingStore | ( | QWidget * | widget,
|  | const QSize & | size
| ) |  |

static

Returns
  A pixmap that can be used as backing store

Parameters

  widget | Widget, for which the backingstore is intended
  size | Size of the pixmap

## drawBackgound()

void QwtPainter::drawBackgound | ( | QPainter * | painter,
|  | const QRectF & | rect,
|  | const QWidget * | widget
| ) |  |

static

Fill rect with the background of a widget

Parameters

  painter | Painter
  rect | Rectangle to be filled
  widget | Widget

See also
  QStyle::PE_Widget, QWidget::backgroundRole()

## drawColorBar()

void QwtPainter::drawColorBar | ( | QPainter * | painter,
|  | const QwtColorMap & | colorMap,
|  | const QwtInterval & | interval,
|  | const QwtScaleMap & | scaleMap,
|  | Qt::Orientation | orientation,
|  | const QRectF & | rect
| ) |  |

static

Draw a color bar into a rectangle

Parameters

  painter | Painter
  colorMap | Color map
  interval | Value range
  scaleMap | Scale map
  orientation | Orientation
  rect | Traget rectangle

## drawFrame()

void QwtPainter::drawFrame | ( | QPainter * | painter,
|  | const QRectF & | rect,
|  | const QPalette & | palette,
|  | QPalette::ColorRole | foregroundRole,
|  | int | frameWidth,
|  | int | midLineWidth,
|  | int | frameStyle
| ) |  |

static

Draw a rectangular frame

Parameters

  painter | Painter
  rect | Frame rectangle
  palette | Palette
  foregroundRole | Foreground role used for QFrame::Plain
  frameWidth | Frame width
  midLineWidth | Used for QFrame::Box
  frameStyle | bitwise OR´ed value of QFrame::Shape and QFrame::Shadow

## drawRoundedFrame()

void QwtPainter::drawRoundedFrame | ( | QPainter * | painter,
|  | const QRectF & | rect,
|  | double | xRadius,
|  | double | yRadius,
|  | const QPalette & | palette,
|  | int | lineWidth,
|  | int | frameStyle
| ) |  |

static

Draw a rectangular frame with rounded borders

Parameters

  painter | Painter
  rect | Frame rectangle
  xRadius | x-radius of the ellipses defining the corners
  yRadius | y-radius of the ellipses defining the corners
  palette | QPalette::WindowText is used for plain borders QPalette::Dark and QPalette::Light for raised or sunken borders
  lineWidth | Line width
  frameStyle | bitwise OR´ed value of QFrame::Shape and QFrame::Shadow

## drawRoundFrame()

void QwtPainter::drawRoundFrame | ( | QPainter * | painter,
|  | const QRectF & | rect,
|  | const QPalette & | palette,
|  | int | lineWidth,
|  | int | frameStyle
| ) |  |

static

Draw a round frame

Parameters

  painter | Painter
  rect | Frame rectangle
  palette | QPalette::WindowText is used for plain borders QPalette::Dark and QPalette::Light for raised or sunken borders
  lineWidth | Line width
  frameStyle | bitwise OR´ed value of QFrame::Shape and QFrame::Shadow

## drawSimpleRichText()

void QwtPainter::drawSimpleRichText | ( | QPainter * | painter,
|  | const QRectF & | rect,
|  | int | flags,
|  | const QTextDocument & | text
| ) |  |

static

Draw a text document into a rectangle

Parameters

  painter | Painter
  rect | Traget rectangle
  flags | Alignments/Text flags, see QPainter::drawText()
  text | Text document

## fillPixmap()

void QwtPainter::fillPixmap | ( | const QWidget * | widget,
|  | QPixmap & | pixmap,
|  | const QPoint & | offset = `QPoint()`
| ) |  |

static

Fill a pixmap with the content of a widget

In Qt >= 5.0 QPixmap::fill() is a nop, in Qt 4.x it is buggy for backgrounds with gradients. Thus fillPixmap() offers an alternative implementation.

Parameters

  widget | Widget
  pixmap | Pixmap to be filled
  offset | Offset

See also
  QPixmap::fill()

## isAligning()

bool QwtPainter::isAligning | ( | QPainter * | painter | ) |

static

Check if the painter is using a paint engine, that aligns coordinates to integers. Today these are all paint engines beside QPaintEngine::Pdf and QPaintEngine::SVG.

If we have an integer based paint engine it is also checked if the painter has a transformation matrix, that rotates or scales.

Parameters

  painter | Painter

Returns
  true, when the painter is aligning

See also
  setRoundingAlignment()

## isX11GraphicsSystem()

bool QwtPainter::isX11GraphicsSystem | ( |  | ) |

static

Check is the application is running with the X11 graphics system that has some special capabilities that can be used for incremental painting to a widget.

Returns
  True, when the graphics system is X11

## polylineSplitting()

bool QwtPainter::polylineSplitting | ( |  | ) |

inline static

Returns
  True, when line splitting for the raster paint engine is enabled.

See also
  setPolylineSplitting()

## roundingAlignment() [1/2]

bool QwtPainter::roundingAlignment | ( |  | ) |

inline static

Check whether coordinates should be rounded, before they are painted to a paint engine that rounds to integer values. For other paint engines ( PDF, SVG ), this flag has no effect.

Returns
  True, when rounding is enabled

See also
  setRoundingAlignment(), isAligning()

## roundingAlignment() [2/2]

bool QwtPainter::roundingAlignment | ( | QPainter * | painter | ) |

inline static

Returns
  roundingAlignment() && isAligning(painter);

Parameters

  painter | Painter

## setPolylineSplitting()

void QwtPainter::setPolylineSplitting | ( | bool | enable | ) |

static

En/Disable line splitting for the raster paint engine.

In some Qt versions the raster paint engine paints polylines of many points much faster when they are split in smaller chunks: f.e all supported Qt versions >= Qt 5.0 when drawing an antialiased polyline with a pen width >=2.

Also the raster paint engine has a nasty bug in many versions ( Qt 4.8 - ... ) for short lines ( https://codereview.qt-project.org/#/c/99456 ), that is worked around in this mode.

The default setting is true.

See also
  polylineSplitting()

## setRoundingAlignment()

void QwtPainter::setRoundingAlignment | ( | bool | enable | ) |

static

Enable whether coordinates should be rounded, before they are painted to a paint engine that floors to integer values. For other paint engines ( PDF, SVG ) this flag has no effect. QwtPainter stores this flag only, the rounding itself is done in the painting code ( f.e the plot items ).

The default setting is true.

See also
  roundingAlignment(), isAligning()