void QgsMapRendererParallelJob::renderLabelsStatic( QgsMapRendererParallelJob* self ) { QPainter painter( &self->mFinalImage ); try { drawLabeling( self->mSettings, self->mLabelingRenderContext, self->mLabelingEngine, self->mLabelingEngineV2, &painter ); } catch ( QgsException & e ) { Q_UNUSED( e ); QgsDebugMsg( "Caught unhandled QgsException: " + e.what() ); } catch ( std::exception & e ) { Q_UNUSED( e ); QgsDebugMsg( "Caught unhandled std::exception: " + QString::fromAscii( e.what() ) ); } catch ( ... ) { QgsDebugMsg( "Caught unhandled unknown exception" ); } painter.end(); }
void QgsMapRendererParallelJob::renderLabelsStatic( QgsMapRendererParallelJob *self ) { LabelRenderJob &job = self->mLabelJob; if ( !job.cached ) { QTime labelTime; labelTime.start(); QPainter painter; if ( job.img ) { job.img->fill( 0 ); painter.begin( job.img ); } else { painter.begin( &self->mFinalImage ); } // draw the labels! try { drawLabeling( self->mSettings, job.context, self->mLabelingEngineV2.get(), &painter ); } catch ( QgsException &e ) { Q_UNUSED( e ); QgsDebugMsg( "Caught unhandled QgsException: " + e.what() ); } catch ( std::exception &e ) { Q_UNUSED( e ); QgsDebugMsg( "Caught unhandled std::exception: " + QString::fromAscii( e.what() ) ); } catch ( ... ) { QgsDebugMsg( "Caught unhandled unknown exception" ); } painter.end(); job.renderingTime = labelTime.elapsed(); job.complete = true; job.participatingLayers = _qgis_listRawToQPointer( self->mLabelingEngineV2->participatingLayers() ); if ( job.img ) { self->mFinalImage = composeImage( self->mSettings, self->mLayerJobs, self->mLabelJob ); } } }
void QgsMapRendererCustomPainterJob::doRender() { QgsDebugMsg( "Starting to render layer stack." ); QTime renderTime; renderTime.start(); for ( LayerRenderJobs::iterator it = mLayerJobs.begin(); it != mLayerJobs.end(); ++it ) { LayerRenderJob& job = *it; if ( job.context.renderingStopped() ) break; if ( job.context.useAdvancedEffects() ) { // Set the QPainter composition mode so that this layer is rendered using // the desired blending mode mPainter->setCompositionMode( job.blendMode ); } if ( !job.cached ) { QTime layerTime; layerTime.start(); if ( job.img ) job.img->fill( 0 ); job.renderer->render(); job.renderingTime = layerTime.elapsed(); } if ( job.img ) { // If we flattened this layer for alternate blend modes, composite it now mPainter->setOpacity( job.opacity ); mPainter->drawImage( 0, 0, *job.img ); mPainter->setOpacity( 1.0 ); } } QgsDebugMsg( "Done rendering map layers" ); if ( mSettings.testFlag( QgsMapSettings::DrawLabeling ) && !mLabelingRenderContext.renderingStopped() ) drawLabeling( mSettings, mLabelingRenderContext, mLabelingEngineV2, mPainter ); QgsDebugMsg( "Rendering completed in (seconds): " + QString( "%1" ).arg( renderTime.elapsed() / 1000.0 ) ); }