void QgsCentroidFillSymbolLayerV2::startRender( QgsSymbolV2RenderContext& context ) { mMarker->setAlpha( context.alpha() ); mMarker->setOutputUnit( context.outputUnit() ); mMarker->startRender( context.renderContext() ); }
void QgsMarkerLineSymbolLayerV2::startRender( QgsSymbolV2RenderContext& context ) { mMarker->setAlpha( context.alpha() ); mMarker->setOutputUnit( context.outputUnit() ); // if being rotated, it gets initialized with every line segment int hints = 0; if ( mRotateMarker ) hints |= QgsSymbolV2::DataDefinedRotation; if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale ) hints |= QgsSymbolV2::DataDefinedSizeScale; mMarker->setRenderHints( hints ); mMarker->startRender( context.renderContext() ); }
void QgsPointPatternFillSymbolLayer::startRender( QgsSymbolV2RenderContext& context ) { //render 3 rows and columns in one go to easily incorporate displacement double width = context.outputPixelSize( mDistanceX ) * 2.0; double height = context.outputPixelSize( mDistanceY ) * 2.0; QImage patternImage( width, height, QImage::Format_ARGB32 ); patternImage.fill( 0 ); if ( mMarkerSymbol ) { QPainter p( &patternImage ); //marker rendering needs context for drawing on patternImage QgsRenderContext pointRenderContext; pointRenderContext.setPainter( &p ); pointRenderContext.setRasterScaleFactor( 1.0 ); pointRenderContext.setScaleFactor( context.renderContext().scaleFactor() * context.renderContext().rasterScaleFactor() ); QgsMapToPixel mtp( context.renderContext().mapToPixel().mapUnitsPerPixel() / context.renderContext().rasterScaleFactor() ); pointRenderContext.setMapToPixel( mtp ); pointRenderContext.setForceVectorOutput( false ); mMarkerSymbol->setOutputUnit( context.outputUnit() ); mMarkerSymbol->startRender( pointRenderContext ); //render corner points mMarkerSymbol->renderPoint( QPointF( 0, 0 ), context.feature(), pointRenderContext ); mMarkerSymbol->renderPoint( QPointF( width, 0 ), context.feature(), pointRenderContext ); mMarkerSymbol->renderPoint( QPointF( 0, height ), context.feature(), pointRenderContext ); mMarkerSymbol->renderPoint( QPointF( width, height ), context.feature(), pointRenderContext ); //render displaced points double displacementPixelX = context.outputPixelSize( mDisplacementX ); double displacementPixelY = context.outputPixelSize( mDisplacementY ); mMarkerSymbol->renderPoint( QPointF( width / 2.0, -displacementPixelY ), context.feature(), pointRenderContext ); mMarkerSymbol->renderPoint( QPointF( displacementPixelX, height / 2.0 ), context.feature(), pointRenderContext ); mMarkerSymbol->renderPoint( QPointF( width / 2.0 + displacementPixelX, height / 2.0 - displacementPixelY ), context.feature(), pointRenderContext ); mMarkerSymbol->renderPoint( QPointF( width + displacementPixelX, height / 2.0 ), context.feature(), pointRenderContext ); mMarkerSymbol->renderPoint( QPointF( width / 2.0, height - displacementPixelY ), context.feature(), pointRenderContext ); mMarkerSymbol->stopRender( pointRenderContext ); } if ( !doubleNear( context.alpha(), 1.0 ) ) { QImage transparentImage = patternImage.copy(); QgsSymbolLayerV2Utils::multiplyImageOpacity( &transparentImage, context.alpha() ); mBrush.setTextureImage( transparentImage ); } else { mBrush.setTextureImage( patternImage ); } QTransform brushTransform; brushTransform.scale( 1.0 / context.renderContext().rasterScaleFactor(), 1.0 / context.renderContext().rasterScaleFactor() ); mBrush.setTransform( brushTransform ); if ( mOutline ) { mOutline->startRender( context.renderContext() ); } }