static inline void qwtDrawSvgSymbols( QPainter *painter, const QPointF *points, int numPoints, QSvgRenderer *renderer, const QwtSymbol &symbol ) { if ( renderer == NULL || !renderer->isValid() ) return; const QRectF viewBox = renderer->viewBoxF(); if ( viewBox.isEmpty() ) return; QSizeF sz = symbol.size(); if ( !sz.isValid() ) sz = viewBox.size(); const double sx = sz.width() / viewBox.width(); const double sy = sz.height() / viewBox.height(); QPointF pinPoint = viewBox.center(); if ( symbol.isPinPointEnabled() ) pinPoint = symbol.pinPoint(); const double dx = sx * ( pinPoint.x() - viewBox.left() ); const double dy = sy * ( pinPoint.y() - viewBox.top() ); for ( int i = 0; i < numPoints; i++ ) { const double x = points[i].x() - dx; const double y = points[i].y() - dy; renderer->render( painter, QRectF( x, y, sz.width(), sz.height() ) ); } }
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 ); }