QgsFeatureRenderer* QgsFeatureRenderer::load( QDomElement& element ) { // <renderer-v2 type=""> ... </renderer-v2> if ( element.isNull() ) return nullptr; // load renderer QString rendererType = element.attribute( "type" ); QgsRendererAbstractMetadata* m = QgsRendererRegistry::instance()->rendererMetadata( rendererType ); if ( !m ) return nullptr; QgsFeatureRenderer* r = m->createRenderer( element ); if ( r ) { r->setUsingSymbolLevels( element.attribute( "symbollevels", "0" ).toInt() ); r->setForceRasterRender( element.attribute( "forceraster", "0" ).toInt() ); //restore layer effect QDomElement effectElem = element.firstChildElement( "effect" ); if ( !effectElem.isNull() ) { r->setPaintEffect( QgsPaintEffectRegistry::instance()->createEffect( effectElem ) ); } // restore order by QDomElement orderByElem = element.firstChildElement( "orderby" ); r->mOrderBy.load( orderByElem ); r->setOrderByEnabled( element.attribute( "enableorderby", "0" ).toInt() ); } return r; }
QgsFeatureRenderer *QgsGrassEditRenderer::create( QDomElement &element, const QgsReadWriteContext &context ) { QgsGrassEditRenderer *renderer = new QgsGrassEditRenderer(); QDomElement childElem = element.firstChildElement(); while ( !childElem.isNull() ) { QDomElement elem = childElem.firstChildElement(); if ( !elem.isNull() ) { QString rendererType = elem.attribute( QStringLiteral( "type" ) ); QgsDebugMsg( "childElem.tagName() = " + childElem.tagName() + " rendererType = " + rendererType ); QgsRendererAbstractMetadata *meta = QgsApplication::rendererRegistry()->rendererMetadata( rendererType ); if ( meta ) { QgsFeatureRenderer *subRenderer = meta->createRenderer( elem, context ); if ( subRenderer ) { QgsDebugMsg( "renderer created : " + renderer->type() ); if ( childElem.tagName() == QLatin1String( "line" ) ) { renderer->setLineRenderer( subRenderer ); } else if ( childElem.tagName() == QLatin1String( "marker" ) ) { renderer->setMarkerRenderer( subRenderer ); } } } } childElem = childElem.nextSiblingElement(); } return renderer; }