static inline QRectF qwtScaledBoundingRect( const QwtGraphic &graphic, const QSizeF size ) { QSizeF scaledSize = size; if ( scaledSize.isEmpty() ) scaledSize = graphic.defaultSize(); const QSizeF sz = graphic.controlPointRect().size(); double sx = 1.0; if ( sz.width() > 0.0 ) sx = scaledSize.width() / sz.width(); double sy = 1.0; if ( sz.height() > 0.0 ) sy = scaledSize.height() / sz.height(); return graphic.scaledBoundingRect( sx, sy ); }
static inline void qwtDrawGraphicSymbols( QPainter *painter, const QPointF *points, int numPoints, const QwtGraphic &graphic, const QwtSymbol &symbol ) { const QRectF pointRect = graphic.controlPointRect(); if ( pointRect.isEmpty() ) return; double sx = 1.0; double sy = 1.0; const QSize sz = symbol.size(); if ( sz.isValid() ) { sx = sz.width() / pointRect.width(); sy = sz.height() / pointRect.height(); } QPointF pinPoint = pointRect.center(); if ( symbol.isPinPointEnabled() ) pinPoint = symbol.pinPoint(); const QTransform transform = painter->transform(); for ( int i = 0; i < numPoints; i++ ) { QTransform tr = transform; tr.translate( points[i].x(), points[i].y() ); tr.scale( sx, sy ); tr.translate( -pinPoint.x(), -pinPoint.y() ); painter->setTransform( tr ); graphic.render( painter ); } painter->setTransform( transform ); }