QgsFeatureRendererV2* QgsPointDisplacementRenderer::create( QDomElement& symbologyElem ) { QgsPointDisplacementRenderer* r = new QgsPointDisplacementRenderer(); r->setLabelAttributeName( symbologyElem.attribute( "labelAttributeName" ) ); QFont labelFont; labelFont.fromString( symbologyElem.attribute( "labelFont", "" ) ); r->setLabelFont( labelFont ); r->setCircleWidth( symbologyElem.attribute( "circleWidth", "0.4" ).toDouble() ); r->setCircleColor( QgsSymbolLayerV2Utils::decodeColor( symbologyElem.attribute( "circleColor", "" ) ) ); r->setLabelColor( QgsSymbolLayerV2Utils::decodeColor( symbologyElem.attribute( "labelColor", "" ) ) ); r->setCircleRadiusAddition( symbologyElem.attribute( "circleRadiusAddition", "0.0" ).toDouble() ); r->setMaxLabelScaleDenominator( symbologyElem.attribute( "maxLabelScaleDenominator", "-1" ).toDouble() ); //look for an embedded renderer <renderer-v2> QDomElement embeddedRendererElem = symbologyElem.firstChildElement( "renderer-v2" ); if ( !embeddedRendererElem.isNull() ) { QString rendererName = embeddedRendererElem.attribute( "type" ); QgsRendererV2AbstractMetadata* metaData = QgsRendererV2Registry::instance()->rendererMetadata( rendererName ); if ( metaData ) { r->setEmbeddedRenderer( metaData->createRenderer( embeddedRendererElem ) ); } } //center symbol QDomElement centerSymbolElem = symbologyElem.firstChildElement( "symbol" ); if ( !centerSymbolElem.isNull() ) { r->setCenterSymbol( dynamic_cast<QgsMarkerSymbolV2*>( QgsSymbolLayerV2Utils::loadSymbol( centerSymbolElem ) ) ); } return r; }
QgsFeatureRendererV2* QgsFeatureRendererV2::load( QDomElement& element ) { // <renderer-v2 type=""> ... </renderer-v2> if ( element.isNull() ) return nullptr; // load renderer QString rendererType = element.attribute( "type" ); QgsRendererV2AbstractMetadata* m = QgsRendererV2Registry::instance()->rendererMetadata( rendererType ); if ( !m ) return nullptr; QgsFeatureRendererV2* 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; }
QgsFeatureRendererV2* QgsGrassEditRenderer::create( QDomElement& element ) { QgsGrassEditRenderer *renderer = new QgsGrassEditRenderer(); QDomElement childElem = element.firstChildElement(); while ( !childElem.isNull() ) { QDomElement elem = childElem.firstChildElement(); if ( !elem.isNull() ) { QString rendererType = elem.attribute( "type" ); QgsDebugMsg( "childElem.tagName() = " + childElem.tagName() + " rendererType = " + rendererType ); QgsRendererV2AbstractMetadata* meta = QgsRendererV2Registry::instance()->rendererMetadata( rendererType ); if ( meta ) { QgsFeatureRendererV2* subRenderer = meta->createRenderer( elem ); if ( subRenderer ) { QgsDebugMsg( "renderer created : " + renderer->type() ); if ( childElem.tagName() == "line" ) { renderer->setLineRenderer( subRenderer ); } else if ( childElem.tagName() == "marker" ) { renderer->setMarkerRenderer( subRenderer ); } } } } childElem = childElem.nextSiblingElement(); } return renderer; }