void paintAreas( AbstractDiagram::Private* diagramPrivate, PaintContext* ctx, const QModelIndex& index, const QList< QPolygonF >& areas, uint opacity ) { AbstractDiagram* diagram = diagramPrivate->diagram; QPainterPath path; for ( int i = 0; i < areas.count(); ++i ) { const QPolygonF& p = areas[ i ]; path.addPolygon( p ); diagramPrivate->reverseMapper.addPolygon( index.row(), index.column(), p ); path.closeSubpath(); } ThreeDLineAttributes threeDAttrs = threeDLineAttributes( diagram, index ); QBrush trans = diagram->brush( index ); if ( threeDAttrs.isEnabled() ) { trans = threeDAttrs.threeDBrush( trans, path.boundingRect() ); } QColor transColor = trans.color(); transColor.setAlpha( opacity ); trans.setColor(transColor); QPen indexPen = diagram->pen(index); indexPen.setBrush( trans ); const PainterSaver painterSaver( ctx->painter() ); ctx->painter()->setRenderHint( QPainter::Antialiasing, diagram->antiAliasing() ); ctx->painter()->setPen( PrintingParameters::scalePen( indexPen ) ); ctx->painter()->setBrush( trans ); ctx->painter()->drawPath( path ); }
void paintThreeDLines( PaintContext* ctx, AbstractDiagram *diagram, const QModelIndex& index, const QPointF& from, const QPointF& to, const ThreeDLineAttributes& tdAttributes, ReverseMapper* reverseMapper ) { const QPointF topLeft = project( from, tdAttributes ); const QPointF topRight = project ( to, tdAttributes ); const QPolygonF segment = QPolygonF() << from << topLeft << topRight << to; QBrush indexBrush( diagram->brush( index ) ); indexBrush = tdAttributes.threeDBrush( indexBrush, QRectF(topLeft, topRight) ); const PainterSaver painterSaver( ctx->painter() ); ctx->painter()->setRenderHint( QPainter::Antialiasing, diagram->antiAliasing() ); ctx->painter()->setBrush( indexBrush ); ctx->painter()->setPen( PrintingParameters::scalePen( diagram->pen( index ) ) ); reverseMapper->addPolygon( index.row(), index.column(), segment ); ctx->painter()->drawPolygon( segment ); }