bool QgsSymbolV2::appendSymbolLayer( QgsSymbolLayerV2* layer ) { if ( layer == NULL || !isSymbolLayerCompatible( layer->type() ) ) return false; mLayers.append( layer ); return true; }
bool QgsSymbolV2::insertSymbolLayer( int index, QgsSymbolLayerV2* layer ) { if ( index < 0 || index > mLayers.count() ) // can be added also after the last index return false; if ( layer == NULL || !isSymbolLayerCompatible( layer->type() ) ) return false; mLayers.insert( index, layer ); return true; }
bool QgsSymbolV2::changeSymbolLayer( int index, QgsSymbolLayerV2* layer ) { if ( index < 0 || index >= mLayers.count() ) return false; if ( layer == NULL || !isSymbolLayerCompatible( layer->type() ) ) return false; delete mLayers[index]; // first delete the original layer mLayers[index] = layer; // set new layer return true; }
QgsSymbolV2::QgsSymbolV2( SymbolType type, QgsSymbolLayerV2List layers ) : mType( type ), mLayers( layers ), mAlpha( 1.0 ), mRenderHints( 0 ), mLayer( NULL ) { // check they're all correct symbol layers for ( int i = 0; i < mLayers.count(); i++ ) { if ( mLayers[i] == NULL ) { mLayers.removeAt( i-- ); } else if ( !isSymbolLayerCompatible( mLayers[i]->type() ) ) { delete mLayers[i]; mLayers.removeAt( i-- ); } } }