void QgsMarkerSymbolV2::setDataDefinedAngle( const QgsDataDefined& dd ) { const double symbolRotation = angle(); for ( QgsSymbolLayerV2List::iterator it = mLayers.begin(); it != mLayers.end(); ++it ) { QgsMarkerSymbolLayerV2* layer = static_cast<QgsMarkerSymbolLayerV2 *>( *it ); if ( dd.hasDefaultValues() ) { layer->removeDataDefinedProperty( "angle" ); } else { if ( qgsDoubleNear( layer->angle(), symbolRotation ) ) { layer->setDataDefinedProperty( "angle", new QgsDataDefined( dd ) ); } else { QgsDataDefined* rotatedDD = rotateWholeSymbol( layer->angle() - symbolRotation, dd ); layer->setDataDefinedProperty( "angle", rotatedDD ); } } } }
void QgsMarkerSymbolV2::setAngle( double ang ) { double origAngle = angle(); double angleDiff = ang - origAngle; for ( QgsSymbolLayerV2List::iterator it = mLayers.begin(); it != mLayers.end(); ++it ) { QgsMarkerSymbolLayerV2* layer = ( QgsMarkerSymbolLayerV2* ) * it; layer->setAngle( layer->angle() + angleDiff ); } }