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 (const QPainter *)
static void | drawText (QPainter *, qreal x, qreal y, const QString &)
| Wrapper for QPainter::drawText()
static void | drawText (QPainter *, const QPointF &, const QString &)
| Wrapper for QPainter::drawText()
static void | drawText (QPainter *, qreal x, qreal y, qreal w, qreal 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 *, qreal x, qreal y, qreal w, qreal 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 &r, int a, int alen)
| Wrapper for QPainter::drawPie()
static void | drawLine (QPainter *, qreal x1, qreal y1, qreal x2, qreal 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 *, qreal x, qreal 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 &, qreal xRadius, qreal yRadius, const QPalette &, int lineWidth, int frameStyle)
static void | drawFrame (QPainter *, const QRectF &rect, const QPalette &palette, QPalette::ColorRole foregroundRole, int lineWidth, 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 *, const QwtColorMap &, const QwtInterval &, const QwtScaleMap &, Qt::Orientation, const QRectF &)
static bool | isAligning (const QPainter *)
static bool | isX11GraphicsSystem ()
static void | fillPixmap (const QWidget *, QPixmap &, const QPoint &offset=QPoint())
static void | drawBackgound (QPainter *, const QRectF &, const QWidget *)
static QPixmap | backingStore (QWidget *, const QSize &)
static qreal | devicePixelRatio (const QPaintDevice *)
static qreal | effectivePenWidth (const QPen &)
static int | horizontalAdvance (const QFontMetrics &, const QString &)
static qreal | horizontalAdvance (const QFontMetricsF &, const QString &)
static int | horizontalAdvance (const QFontMetrics &, QChar)
static qreal | horizontalAdvance (const QFontMetricsF &, QChar)
static QFont | scaledFont (const QFont &, const QPaintDevice *=nullptr)

## Detailed Description

A collection of QPainter workarounds.

Definition at line 36 of file qwt_painter.h.

## 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

Definition at line 1525 of file qwt_painter.cpp.

## devicePixelRatio()

qreal QwtPainter::devicePixelRatio | ( | const QPaintDevice * | paintDevice | ) |

static

Returns
  Pixel ratio for a paint device

Parameters

  paintDevice | Paint device

Definition at line 1491 of file qwt_painter.cpp.

## 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()

Definition at line 1351 of file qwt_painter.cpp.

## 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 | Target rectangle

Definition at line 1205 of file qwt_painter.cpp.

## 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

Definition at line 911 of file qwt_painter.cpp.

## drawRoundedFrame()

void QwtPainter::drawRoundedFrame | ( | QPainter * | painter,
|  | const QRectF & | rect,
|  | qreal | xRadius,
|  | qreal | 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

Definition at line 1065 of file qwt_painter.cpp.

## 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

Definition at line 845 of file qwt_painter.cpp.

## 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 | Target rectangle
  flags | Alignments/Text flags, see QPainter::drawText()
  text | Text document

Definition at line 489 of file qwt_painter.cpp.

## effectivePenWidth()

qreal QwtPainter::effectivePenWidth | ( | const QPen & | pen | ) |

inline static

Returns
  pen.widthF() expanded to at least 1.0

Parameters

  pen | Pen

Definition at line 201 of file qwt_painter.h.

## 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()

Definition at line 1311 of file qwt_painter.cpp.

## horizontalAdvance() [1/4]

int QwtPainter::horizontalAdvance | ( | const QFontMetrics & | fontMetrics,
|  | const QString & | text
| ) |  |

static

Distance appropriate for drawing a subsequent character after text.

Parameters

  fontMetrics | Font metrics
  text | Text

Returns
  horizontal advance in pixels

Definition at line 1379 of file qwt_painter.cpp.

## horizontalAdvance() [2/4]

int QwtPainter::horizontalAdvance | ( | const QFontMetrics & | fontMetrics,
|  | QChar | ch
| ) |  |

static

Distance appropriate for drawing a subsequent character after ch.

Parameters

  fontMetrics | Font metrics
  ch | Character

Returns
  horizontal advance in pixels

Definition at line 1414 of file qwt_painter.cpp.

## horizontalAdvance() [3/4]

qreal QwtPainter::horizontalAdvance | ( | const QFontMetricsF & | fontMetrics,
|  | const QString & | text
| ) |  |

static

Distance appropriate for drawing a subsequent character after text.

Parameters

  fontMetrics | Font metrics
  text | Text

Returns
  horizontal advance in pixels

Definition at line 1397 of file qwt_painter.cpp.

## horizontalAdvance() [4/4]

qreal QwtPainter::horizontalAdvance | ( | const QFontMetricsF & | fontMetrics,
|  | QChar | ch
| ) |  |

static

Distance appropriate for drawing a subsequent character after ch.

Parameters

  fontMetrics | Font metrics
  ch | Character

Returns
  horizontal advance in pixels

Definition at line 1431 of file qwt_painter.cpp.

## isAligning()

bool QwtPainter::isAligning | ( | const 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()

Definition at line 267 of file qwt_painter.cpp.

## 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

Definition at line 233 of file qwt_painter.cpp.

## polylineSplitting()

bool QwtPainter::polylineSplitting | ( |  | ) |

inline static

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

See also
  setPolylineSplitting()

Definition at line 170 of file qwt_painter.h.

## 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()

Definition at line 183 of file qwt_painter.h.

## roundingAlignment() [2/2]

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

inline static

Returns
  roundingAlignment() && isAligning(painter);

Parameters

  painter | Painter

Definition at line 192 of file qwt_painter.h.

## scaledFont()

QFont QwtPainter::scaledFont | ( | const QFont & | font,
|  | const QPaintDevice * | paintDevice = `nullptr`
| ) |  |

static

Adjust the DPI value of font according to the DPI value of the paint device

Parameters

  font | Unscaled font
  paintDevice | Paint device providing a DPI value. If paintDevice == null the DPI value of the primary screen will be used

Returns
  Font being adjusted to the DPI value of the paint device

Definition at line 1450 of file qwt_painter.cpp.

## 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()

Definition at line 335 of file qwt_painter.cpp.

## 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()

Definition at line 315 of file qwt_painter.cpp.