Use consistent names for data defined property collections

This commit is contained in:
Nyall Dawson 2017-01-23 11:55:51 +10:00
parent fa26b45736
commit e06192ec3f
35 changed files with 528 additions and 554 deletions

View File

@ -203,24 +203,11 @@ class QgsDiagramLayerSettings
*/
QSet< QString > referencedFields( const QgsExpressionContext& context = QgsExpressionContext() ) const;
/** Returns a reference to the diagram's property collection, used for data defined overrides.
* @note added in QGIS 2.16
* @see setProperties()
*/
QgsPropertyCollection& properties();
QgsPropertyCollection& dataDefinedProperties();
/** Returns a reference to the diagram's property collection, used for data defined overrides.
* @note added in QGIS 2.16
* @see setProperties()
*/
//const QgsPropertyCollection& properties() const;
//const dataDefinedProperties& properties() const;
/** Sets the diagram's property collection, used for data defined overrides.
* @param collection property collection. Existing properties will be replaced.
* @note adde in QGIS 2.16
* @see properties()
*/
void setProperties( const QgsPropertyCollection& collection );
void setDataDefinedProperties( const QgsPropertyCollection& collection );
};

View File

@ -427,24 +427,11 @@ class QgsPalLayerSettings
*/
QDomElement writeXml( QDomDocument& doc );
/** Returns a reference to the label's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setProperties()
*/
QgsPropertyCollection& properties();
QgsPropertyCollection& dataDefinedProperties();
/** Returns a reference to the label's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setProperties()
*/
//const QgsPropertyCollection& properties() const { return mProperties; }
//const QgsPropertyCollection& dataDefinedProperties() const;
/** Sets the label's property collection, used for data defined overrides.
* @param collection property collection. Existing properties will be replaced.
* @note added in QGIS 3.0
* @see properties()
*/
void setProperties( const QgsPropertyCollection& collection );
void setDataDefinedProperties( const QgsPropertyCollection& collection );
/** Returns the label text formatting settings, e.g., font settings, buffer settings, etc.
* @see setFormat()

View File

@ -359,43 +359,43 @@ void QgsDwgImportDialog::createGroup( QgsLayerTreeGroup *group, QString name, QS
pls.fieldName = "text";
pls.wrapChar = "\\P";
pls.properties().setProperty( QgsPalLayerSettings::Size, QgsProperty::fromField( QStringLiteral( "height" ) ) );
pls.properties().setProperty( QgsPalLayerSettings::Color, QgsProperty::fromField( QStringLiteral( "color" ) ) );
pls.properties().setProperty( QgsPalLayerSettings::MultiLineHeight, QgsProperty::fromExpression( QStringLiteral( "CASE WHEN interlin<0 THEN 1 ELSE interlin*1.5 END" ) ) );
pls.properties().setProperty( QgsPalLayerSettings::PositionX, QgsProperty::fromExpression( QStringLiteral( "$x" ) ) );
pls.properties().setProperty( QgsPalLayerSettings::PositionY, QgsProperty::fromExpression( QStringLiteral( "$y" ) ) );
pls.properties().setProperty( QgsPalLayerSettings::Hali, QgsProperty::fromExpression( QStringLiteral( "CASE"
" WHEN etype=%1 THEN"
" CASE"
" WHEN alignv IN (1,4,7) THEN 'Left'"
" WHEN alignv IN (2,5,6) THEN 'Center'"
" ELSE 'Right'"
" END"
" ELSE"
" CASE"
" WHEN alignh=0 THEN 'Left'"
" WHEN alignh=1 THEN 'Center'"
" WHEN alignh=2 THEN 'Right'"
" WHEN alignh=3 THEN 'Left'"
" WHEN alignh=4 THEN 'Left'"
" END "
" END" ).arg( DRW::MTEXT ) ) );
pls.properties().setProperty( QgsPalLayerSettings::Vali, QgsProperty::fromExpression( QStringLiteral( "CASE"
" WHEN etype=%1 THEN"
" CASE"
" WHEN alignv < 4 THEN 'Top'"
" WHEN alignv < 7 THEN 'Half'"
" ELSE 'Bottom'"
" END"
" ELSE"
" CASE"
" WHEN alignv=0 THEN 'Base'"
" WHEN alignv=1 THEN 'Bottom'"
" WHEN alignv=2 THEN 'Half'"
" WHEN alignv=3 THEN 'Top'"
" END"
" END" ).arg( DRW::MTEXT ) ) );
pls.properties().setProperty( QgsPalLayerSettings::Rotation, QgsProperty::fromExpression( QStringLiteral( "angle*180.0/pi()" ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::Size, QgsProperty::fromField( QStringLiteral( "height" ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::Color, QgsProperty::fromField( QStringLiteral( "color" ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::MultiLineHeight, QgsProperty::fromExpression( QStringLiteral( "CASE WHEN interlin<0 THEN 1 ELSE interlin*1.5 END" ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::PositionX, QgsProperty::fromExpression( QStringLiteral( "$x" ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::PositionY, QgsProperty::fromExpression( QStringLiteral( "$y" ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::Hali, QgsProperty::fromExpression( QStringLiteral( "CASE"
" WHEN etype=%1 THEN"
" CASE"
" WHEN alignv IN (1,4,7) THEN 'Left'"
" WHEN alignv IN (2,5,6) THEN 'Center'"
" ELSE 'Right'"
" END"
" ELSE"
" CASE"
" WHEN alignh=0 THEN 'Left'"
" WHEN alignh=1 THEN 'Center'"
" WHEN alignh=2 THEN 'Right'"
" WHEN alignh=3 THEN 'Left'"
" WHEN alignh=4 THEN 'Left'"
" END "
" END" ).arg( DRW::MTEXT ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::Vali, QgsProperty::fromExpression( QStringLiteral( "CASE"
" WHEN etype=%1 THEN"
" CASE"
" WHEN alignv < 4 THEN 'Top'"
" WHEN alignv < 7 THEN 'Half'"
" ELSE 'Bottom'"
" END"
" ELSE"
" CASE"
" WHEN alignv=0 THEN 'Base'"
" WHEN alignv=1 THEN 'Bottom'"
" WHEN alignv=2 THEN 'Half'"
" WHEN alignv=3 THEN 'Top'"
" END"
" END" ).arg( DRW::MTEXT ) ) );
pls.dataDefinedProperties().setProperty( QgsPalLayerSettings::Rotation, QgsProperty::fromExpression( QStringLiteral( "angle*180.0/pi()" ) ) );
pls.placement = QgsPalLayerSettings::OrderedPositionsAroundPoint;
pls.writeToLayer( l );

View File

@ -383,7 +383,7 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
mShowAllCheckBox->setChecked( dls->showAllDiagrams() );
mProperties = dls->properties();
mDataDefinedProperties = dls->dataDefinedProperties();
}
if ( dr->diagram() )
@ -429,7 +429,7 @@ QgsDiagramProperties::~QgsDiagramProperties()
void QgsDiagramProperties::registerDataDefinedButton( QgsPropertyOverrideButton * button, QgsDiagramLayerSettings::Property key )
{
button->init( key, mProperties, QgsDiagramLayerSettings::PROPERTY_DEFINITIONS, mLayer );
button->init( key, mDataDefinedProperties, QgsDiagramLayerSettings::PROPERTY_DEFINITIONS, mLayer );
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsDiagramProperties::updateProperty );
button->registerExpressionContextGenerator( this );
}
@ -438,7 +438,7 @@ void QgsDiagramProperties::updateProperty()
{
QgsPropertyOverrideButton* button = qobject_cast<QgsPropertyOverrideButton*>( sender() );
QgsDiagramLayerSettings::Property key = static_cast< QgsDiagramLayerSettings::Property >( button->propertyKey() );
mProperties.setProperty( key, button->toProperty() );
mDataDefinedProperties.setProperty( key, button->toProperty() );
}
void QgsDiagramProperties::on_mDiagramTypeComboBox_currentIndexChanged( int index )
@ -821,7 +821,7 @@ void QgsDiagramProperties::apply()
mLayer->setDiagramRenderer( renderer );
QgsDiagramLayerSettings dls;
dls.setProperties( mProperties );
dls.setDataDefinedProperties( mDataDefinedProperties );
dls.setDistance( mDiagramDistanceSpinBox->value() );
dls.setPriority( mPrioritySlider->value() );
dls.setZIndex( mZIndexSpinBox->value() );

View File

@ -76,7 +76,7 @@ class APP_EXPORT QgsDiagramProperties : public QWidget, private Ui::QgsDiagramPr
QString showExpressionBuilder( const QString& initialExpression );
QgsPropertyCollection mProperties;
QgsPropertyCollection mDataDefinedProperties;
// Keeps track of the diagram type to properly save / restore settings when the diagram type combo box is set to no diagram.
QString mDiagramType;

View File

@ -44,7 +44,7 @@ QgsExpressionContext QgsLabelingGui::createExpressionContext() const
void QgsLabelingGui::registerDataDefinedButton( QgsPropertyOverrideButton* button, QgsPalLayerSettings::Property key )
{
button->init( key, mProperties, QgsPalLayerSettings::PROPERTY_DEFINITIONS, mLayer );
button->init( key, mDataDefinedProperties, QgsPalLayerSettings::PROPERTY_DEFINITIONS, mLayer );
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsLabelingGui::updateProperty );
button->registerExpressionContextGenerator( this );
}
@ -53,7 +53,7 @@ void QgsLabelingGui::updateProperty()
{
QgsPropertyOverrideButton* button = qobject_cast<QgsPropertyOverrideButton*>( sender() );
QgsPalLayerSettings::Property key = static_cast< QgsPalLayerSettings::Property >( button->propertyKey() );
mProperties.setProperty( key, button->toProperty() );
mDataDefinedProperties.setProperty( key, button->toProperty() );
}
QgsLabelingGui::QgsLabelingGui( QgsVectorLayer* layer, QgsMapCanvas* mapCanvas, const QgsPalLayerSettings* layerSettings, QWidget* parent )
@ -264,7 +264,7 @@ void QgsLabelingGui::setLayer( QgsMapLayer* mapLayer )
mZIndexSpinBox->setValue( lyr.zIndex );
mProperties = lyr.properties();
mDataDefinedProperties = lyr.dataDefinedProperties();
updatePlacementWidgets();
updateLinePlacementOptions();
@ -452,7 +452,7 @@ QgsPalLayerSettings QgsLabelingGui::layerSettings()
lyr.zIndex = mZIndexSpinBox->value();
lyr.setProperties( mProperties );
lyr.setDataDefinedProperties( mDataDefinedProperties );
return lyr;
}

View File

@ -57,7 +57,7 @@ class APP_EXPORT QgsLabelingGui : public QgsTextFormatWidget, private QgsExpress
private:
QgsVectorLayer* mLayer;
const QgsPalLayerSettings* mSettings;
QgsPropertyCollection mProperties;
QgsPropertyCollection mDataDefinedProperties;
LabelMode mMode;
QgsExpressionContext createExpressionContext() const override;

View File

@ -150,7 +150,7 @@ void QgsLabelPropertyDialog::init( const QString& layerId, const QString& provid
disableGuiElements();
mDataDefinedProperties = layerSettings.properties();
mDataDefinedProperties = layerSettings.dataDefinedProperties();
//set widget values from data defined results
setDataDefinedValues( vlayer );

View File

@ -410,10 +410,10 @@ bool QgsMapToolLabel::hasDataDefinedColumn( QgsPalLayerSettings::DataDefinedProp
QString QgsMapToolLabel::dataDefinedColumnName( QgsPalLayerSettings::Property p, const QgsPalLayerSettings& labelSettings ) const
{
if ( !labelSettings.properties().isActive( p ) )
if ( !labelSettings.dataDefinedProperties().isActive( p ) )
return QString();
QgsProperty prop = labelSettings.properties().property( p );
QgsProperty prop = labelSettings.dataDefinedProperties().property( p );
if ( prop.propertyType() != QgsProperty::FieldBasedProperty )
return QString();
@ -568,7 +568,7 @@ bool QgsMapToolLabel::diagramMoveable( QgsVectorLayer* vlayer, int& xCol, int& y
if ( dls )
{
xCol = -1;
if ( QgsProperty ddX = dls->properties().property( QgsDiagramLayerSettings::PositionX ) )
if ( QgsProperty ddX = dls->dataDefinedProperties().property( QgsDiagramLayerSettings::PositionX ) )
{
if ( ddX.propertyType() == QgsProperty::FieldBasedProperty && ddX.isActive() )
{
@ -576,7 +576,7 @@ bool QgsMapToolLabel::diagramMoveable( QgsVectorLayer* vlayer, int& xCol, int& y
}
}
yCol = -1;
if ( QgsProperty ddY = dls->properties().property( QgsDiagramLayerSettings::PositionY ) )
if ( QgsProperty ddY = dls->dataDefinedProperties().property( QgsDiagramLayerSettings::PositionY ) )
{
if ( ddY.propertyType() == QgsProperty::FieldBasedProperty && ddY.isActive() )
{
@ -672,7 +672,7 @@ bool QgsMapToolLabel::diagramCanShowHide( QgsVectorLayer* vlayer, int& showCol )
{
if ( const QgsDiagramLayerSettings *dls = vlayer->diagramLayerSettings() )
{
if ( QgsProperty ddShow = dls->properties().property( QgsDiagramLayerSettings::Show ) )
if ( QgsProperty ddShow = dls->dataDefinedProperties().property( QgsDiagramLayerSettings::Show ) )
{
if ( ddShow.propertyType() == QgsProperty::FieldBasedProperty && ddShow.isActive() )
{

View File

@ -143,7 +143,7 @@ void QgsComposerHtml::loadHtml( const bool useCache, const QgsExpressionContext
//data defined url set?
bool ok = false;
currentUrl = mProperties.valueAsString( QgsComposerObject::SourceUrl, *evalContext, currentUrl, &ok );
currentUrl = mDataDefinedProperties.valueAsString( QgsComposerObject::SourceUrl, *evalContext, currentUrl, &ok );
if ( ok )
{
currentUrl = currentUrl.trimmed();

View File

@ -718,13 +718,13 @@ QRectF QgsComposerItem::evalItemRect( const QRectF &newRect, const bool resizeOn
//data defined position or size set? if so, update rect with data defined values
bool ok = false;
double ddWidth = mProperties.valueAsDouble( QgsComposerObject::ItemWidth, *evalContext, 0, &ok );
double ddWidth = mDataDefinedProperties.valueAsDouble( QgsComposerObject::ItemWidth, *evalContext, 0, &ok );
//evaulate width and height first, since they may affect position if non-top-left reference point set
if ( ok )
{
result.setWidth( ddWidth );
}
double ddHeight = mProperties.valueAsDouble( QgsComposerObject::ItemHeight, *evalContext, 0, &ok );
double ddHeight = mDataDefinedProperties.valueAsDouble( QgsComposerObject::ItemHeight, *evalContext, 0, &ok );
if ( ok )
{
result.setHeight( ddHeight );
@ -755,7 +755,7 @@ QRectF QgsComposerItem::evalItemRect( const QRectF &newRect, const bool resizeOn
x += rect().width();
}
}
double ddPosX = mProperties.valueAsDouble( QgsComposerObject::PositionX, *evalContext, 0.0, &ok );
double ddPosX = mDataDefinedProperties.valueAsDouble( QgsComposerObject::PositionX, *evalContext, 0.0, &ok );
if ( ok )
{
x = ddPosX;
@ -786,7 +786,7 @@ QRectF QgsComposerItem::evalItemRect( const QRectF &newRect, const bool resizeOn
y += rect().height();
}
}
double ddPosY = mProperties.valueAsDouble( QgsComposerObject::PositionY, *evalContext, 0, &ok );
double ddPosY = mDataDefinedProperties.valueAsDouble( QgsComposerObject::PositionY, *evalContext, 0, &ok );
if ( ok )
{
y = ddPosY;
@ -873,7 +873,7 @@ void QgsComposerItem::refreshBlendMode( const QgsExpressionContext& context )
//data defined blend mode set?
bool ok = false;
QString blendStr = mProperties.valueAsString( QgsComposerObject::BlendMode, context, QString(), &ok );
QString blendStr = mDataDefinedProperties.valueAsString( QgsComposerObject::BlendMode, context, QString(), &ok );
if ( ok && !blendStr.isEmpty() )
{
QString blendstr = blendStr.trimmed();
@ -899,7 +899,7 @@ void QgsComposerItem::refreshTransparency( const bool updateItem, const QgsExpre
int transparency = mTransparency;
//data defined transparency set?
transparency = mProperties.valueAsInt( QgsComposerObject::Transparency, context, mTransparency );
transparency = mDataDefinedProperties.valueAsInt( QgsComposerObject::Transparency, context, mTransparency );
// Set the QGraphicItem's opacity
setOpacity( 1. - ( transparency / 100. ) );
@ -914,7 +914,7 @@ void QgsComposerItem::refreshFrameColor( const bool updateItem, const QgsExpress
{
//data defined outline color set?
bool ok = false;
QColor frameColor = mProperties.valueAsColor( QgsComposerObject::FrameColor, context, mFrameColor, &ok );
QColor frameColor = mDataDefinedProperties.valueAsColor( QgsComposerObject::FrameColor, context, mFrameColor, &ok );
if ( ok )
{
QPen itemPen = pen();
@ -937,7 +937,7 @@ void QgsComposerItem::refreshBackgroundColor( const bool updateItem, const QgsEx
{
//data defined color set?
bool ok = false;
QColor backgroundColor = mProperties.valueAsColor( QgsComposerObject::BackgroundColor, context, mBackgroundColor, &ok );
QColor backgroundColor = mDataDefinedProperties.valueAsColor( QgsComposerObject::BackgroundColor, context, mBackgroundColor, &ok );
if ( ok )
{
setBrush( QBrush( backgroundColor, Qt::SolidPattern ) );
@ -1016,7 +1016,7 @@ void QgsComposerItem::refreshRotation( const bool updateItem, const bool adjustP
double rotation = mItemRotation;
//data defined rotation set?
rotation = mProperties.valueAsDouble( QgsComposerObject::ItemRotation, context, rotation );
rotation = mDataDefinedProperties.valueAsDouble( QgsComposerObject::ItemRotation, context, rotation );
if ( qgsDoubleNear( rotation, mEvaluatedItemRotation ) )
{
@ -1154,7 +1154,7 @@ void QgsComposerItem::refreshDataDefinedProperty( const QgsComposerObject::DataD
{
bool exclude = mExcludeFromExports;
//data defined exclude from exports set?
exclude = mProperties.valueAsBool( QgsComposerObject::ExcludeFromExports, *evalContext, exclude );
exclude = mDataDefinedProperties.valueAsBool( QgsComposerObject::ExcludeFromExports, *evalContext, exclude );
mEvaluatedExcludeFromExports = exclude;
}

View File

@ -655,7 +655,7 @@ void QgsComposerLegend::refreshDataDefinedProperty( const QgsComposerObject::Dat
if ( property == QgsComposerObject::LegendTitle || property == QgsComposerObject::AllProperties )
{
bool ok = false;
QString t = mProperties.valueAsString( QgsComposerObject::LegendTitle, *evalContext, mTitle, &ok );
QString t = mDataDefinedProperties.valueAsString( QgsComposerObject::LegendTitle, *evalContext, mTitle, &ok );
if ( ok )
{
mSettings.setTitle( t );
@ -665,7 +665,7 @@ void QgsComposerLegend::refreshDataDefinedProperty( const QgsComposerObject::Dat
if ( property == QgsComposerObject::LegendColumnCount || property == QgsComposerObject::AllProperties )
{
bool ok = false;
int cols = mProperties.valueAsInt( QgsComposerObject::LegendColumnCount, *evalContext, mColumnCount, &ok );
int cols = mDataDefinedProperties.valueAsInt( QgsComposerObject::LegendColumnCount, *evalContext, mColumnCount, &ok );
if ( ok && cols >= 0 )
{
mSettings.setColumnCount( cols );

View File

@ -518,7 +518,7 @@ QList<QgsMapLayer*> QgsComposerMap::layersToRender( const QgsExpressionContext*
QString presetName = mFollowVisibilityPresetName;
// preset name can be overridden by data-defined one
presetName = mProperties.valueAsString( QgsComposerObject::MapStylePreset, *evalContext, presetName );
presetName = mDataDefinedProperties.valueAsString( QgsComposerObject::MapStylePreset, *evalContext, presetName );
if ( mComposition->project()->mapThemeCollection()->hasMapTheme( presetName ) )
renderLayers = mComposition->project()->mapThemeCollection()->mapThemeVisibleLayers( presetName );
@ -535,7 +535,7 @@ QList<QgsMapLayer*> QgsComposerMap::layersToRender( const QgsExpressionContext*
}
bool ok = false;
QString ddLayers = mProperties.valueAsString( QgsComposerObject::MapLayers, *evalContext, QString(), &ok );
QString ddLayers = mDataDefinedProperties.valueAsString( QgsComposerObject::MapLayers, *evalContext, QString(), &ok );
if ( ok )
{
renderLayers.clear();
@ -577,7 +577,7 @@ QMap<QString, QString> QgsComposerMap::layerStyleOverridesToRender( const QgsExp
QString presetName = mFollowVisibilityPresetName;
// data defined preset name?
presetName = mProperties.valueAsString( QgsComposerObject::MapStylePreset, context, presetName );
presetName = mDataDefinedProperties.valueAsString( QgsComposerObject::MapStylePreset, context, presetName );
if ( mComposition->project()->mapThemeCollection()->hasMapTheme( presetName ) )
return mComposition->project()->mapThemeCollection()->mapThemeStyleOverrides( presetName );
@ -957,25 +957,25 @@ void QgsComposerMap::refreshMapExtents( const QgsExpressionContext* context )
double maxYD = 0;
bool ok = false;
minXD = mProperties.valueAsDouble( QgsComposerObject::MapXMin, *evalContext, 0.0, &ok );
minXD = mDataDefinedProperties.valueAsDouble( QgsComposerObject::MapXMin, *evalContext, 0.0, &ok );
if ( ok )
{
useDdXMin = true;
newExtent.setXMinimum( minXD );
}
minYD = mProperties.valueAsDouble( QgsComposerObject::MapYMin, *evalContext, 0.0, &ok );
minYD = mDataDefinedProperties.valueAsDouble( QgsComposerObject::MapYMin, *evalContext, 0.0, &ok );
if ( ok )
{
useDdYMin = true;
newExtent.setYMinimum( minYD );
}
maxXD = mProperties.valueAsDouble( QgsComposerObject::MapXMax, *evalContext, 0.0, &ok );
maxXD = mDataDefinedProperties.valueAsDouble( QgsComposerObject::MapXMax, *evalContext, 0.0, &ok );
if ( ok )
{
useDdXMax = true;
newExtent.setXMaximum( maxXD );
}
maxYD = mProperties.valueAsDouble( QgsComposerObject::MapYMax, *evalContext, 0.0, &ok );
maxYD = mDataDefinedProperties.valueAsDouble( QgsComposerObject::MapYMax, *evalContext, 0.0, &ok );
if ( ok )
{
useDdYMax = true;
@ -1014,7 +1014,7 @@ void QgsComposerMap::refreshMapExtents( const QgsExpressionContext* context )
//now refresh scale, as this potentially overrides extents
//data defined map scale set?
double scaleD = mProperties.valueAsDouble( QgsComposerObject::MapScale, *evalContext, 0.0, &ok );
double scaleD = mDataDefinedProperties.valueAsDouble( QgsComposerObject::MapScale, *evalContext, 0.0, &ok );
if ( ok )
{
setNewScale( scaleD, false );
@ -1060,7 +1060,7 @@ void QgsComposerMap::refreshMapExtents( const QgsExpressionContext* context )
double mapRotation = mMapRotation;
//data defined map rotation set?
mapRotation = mProperties.valueAsDouble( QgsComposerObject::MapRotation, *evalContext, mapRotation );
mapRotation = mDataDefinedProperties.valueAsDouble( QgsComposerObject::MapRotation, *evalContext, mapRotation );
if ( !qgsDoubleNear( mEvaluatedMapRotation, mapRotation ) )
{
@ -2004,7 +2004,7 @@ double QgsComposerMap::atlasMargin( const QgsComposerObject::PropertyValueType v
QgsExpressionContext context = createExpressionContext();
bool ok = false;
double ddMargin = mProperties.valueAsDouble( QgsComposerObject::MapAtlasMargin, context, 0.0, &ok );
double ddMargin = mDataDefinedProperties.valueAsDouble( QgsComposerObject::MapAtlasMargin, context, 0.0, &ok );
if ( ok )
{
//divide by 100 to convert to 0 -> 1.0 range

View File

@ -101,7 +101,7 @@ bool QgsComposerObject::writeXml( QDomElement &elem, QDomDocument &doc ) const
}
QDomElement ddPropsElement = doc.createElement( QStringLiteral( "dataDefinedProperties" ) );
mProperties.writeXml( ddPropsElement, doc, PROPERTY_DEFINITIONS );
mDataDefinedProperties.writeXml( ddPropsElement, doc, PROPERTY_DEFINITIONS );
elem.appendChild( ddPropsElement );
//custom properties
@ -119,12 +119,12 @@ bool QgsComposerObject::readXml( const QDomElement &itemElem, const QDomDocument
}
//old (pre 3.0) data defined properties
QgsComposerUtils::readOldDataDefinedPropertyMap( itemElem, mProperties );
QgsComposerUtils::readOldDataDefinedPropertyMap( itemElem, mDataDefinedProperties );
QDomNode propsNode = itemElem.namedItem( QStringLiteral( "dataDefinedProperties" ) );
if ( !propsNode.isNull() )
{
mProperties.readXml( propsNode.toElement(), doc, PROPERTY_DEFINITIONS );
mDataDefinedProperties.readXml( propsNode.toElement(), doc, PROPERTY_DEFINITIONS );
}
//custom properties
@ -149,7 +149,7 @@ void QgsComposerObject::refreshDataDefinedProperty( const DataDefinedProperty pr
void QgsComposerObject::prepareProperties() const
{
QgsExpressionContext context = createExpressionContext();
mProperties.prepare( context );
mDataDefinedProperties.prepare( context );
}
void QgsComposerObject::setCustomProperty( const QString& key, const QVariant& value )

View File

@ -131,20 +131,20 @@ class CORE_EXPORT QgsComposerObject: public QObject, public QgsExpressionContext
* @note added in QGIS 3.0
* @see setDataDefinedProperties()
*/
QgsPropertyCollection& dataDefinedProperties() { return mProperties; }
QgsPropertyCollection& dataDefinedProperties() { return mDataDefinedProperties; }
/** Returns a reference to the object's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setDataDefinedProperties()
*/
const QgsPropertyCollection& dataDefinedProperties() const { return mProperties; }
const QgsPropertyCollection& dataDefinedProperties() const { return mDataDefinedProperties; }
/** Sets the objects's property collection, used for data defined overrides.
* @param collection property collection. Existing properties will be replaced.
* @note added in QGIS 3.0
* @see dataDefinedProperties()
*/
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mProperties = collection; }
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mDataDefinedProperties = collection; }
/** Set a custom property for the object.
* @param key property key. If a property with the same key already exists it will be overwritten.
@ -212,7 +212,7 @@ class CORE_EXPORT QgsComposerObject: public QObject, public QgsExpressionContext
//! Custom properties for object
QgsObjectCustomProperties mCustomProperties;
QgsPropertyCollection mProperties;
QgsPropertyCollection mDataDefinedProperties;
signals:

View File

@ -298,10 +298,10 @@ void QgsComposerPicture::refreshPicture( const QgsExpressionContext *context )
//data defined source set?
mHasExpressionError = false;
if ( mProperties.isActive( QgsComposerObject::PictureSource ) )
if ( mDataDefinedProperties.isActive( QgsComposerObject::PictureSource ) )
{
bool ok = false;
source = mProperties.valueAsString( QgsComposerObject::PictureSource, *evalContext, source, &ok );
source = mDataDefinedProperties.valueAsString( QgsComposerObject::PictureSource, *evalContext, source, &ok );
if ( ok )
{
source = source.trimmed();
@ -364,9 +364,9 @@ void QgsComposerPicture::loadLocalPicture( const QString &path )
{
//try to open svg
QgsExpressionContext context = createExpressionContext();
QColor fillColor = mProperties.valueAsColor( QgsComposerObject::PictureSvgBackgroundColor, context, mSvgFillColor );
QColor outlineColor = mProperties.valueAsColor( QgsComposerObject::PictureSvgOutlineColor, context, mSvgBorderColor );
double outlineWidth = mProperties.valueAsDouble( QgsComposerObject::PictureSvgOutlineWidth, context, mSvgBorderWidth );
QColor fillColor = mDataDefinedProperties.valueAsColor( QgsComposerObject::PictureSvgBackgroundColor, context, mSvgFillColor );
QColor outlineColor = mDataDefinedProperties.valueAsColor( QgsComposerObject::PictureSvgOutlineColor, context, mSvgBorderColor );
double outlineWidth = mDataDefinedProperties.valueAsDouble( QgsComposerObject::PictureSvgOutlineWidth, context, mSvgBorderWidth );
const QByteArray &svgContent = QgsApplication::svgCache()->svgContent( pic.fileName(), rect().width(), fillColor, outlineColor, outlineWidth,
1.0 );
mSVG.load( svgContent );
@ -816,7 +816,7 @@ bool QgsComposerPicture::readXml( const QDomElement& itemElem, const QDomDocumen
expressionActive = false;
}
mProperties.setProperty( QgsComposerObject::PictureSource, QgsProperty::fromExpression( sourceExpression, expressionActive ) );
mDataDefinedProperties.setProperty( QgsComposerObject::PictureSource, QgsProperty::fromExpression( sourceExpression, expressionActive ) );
}
mSourcePath = mComposition->project()->readPath( itemElem.attribute( QStringLiteral( "file" ) ) );

View File

@ -234,22 +234,22 @@ void QgsComposerScaleBar::refreshDataDefinedProperty( const QgsComposerObject::D
//updates data defined properties and redraws item to match
if ( property == QgsComposerObject::ScalebarFillColor || property == QgsComposerObject::AllProperties )
{
mBrush.setColor( mProperties.valueAsColor( QgsComposerObject::ScalebarFillColor, *evalContext, mFillColor ) );
mBrush.setColor( mDataDefinedProperties.valueAsColor( QgsComposerObject::ScalebarFillColor, *evalContext, mFillColor ) );
forceUpdate = true;
}
if ( property == QgsComposerObject::ScalebarFillColor2 || property == QgsComposerObject::AllProperties )
{
mBrush2.setColor( mProperties.valueAsColor( QgsComposerObject::ScalebarFillColor2, *evalContext, mFillColor2 ) );
mBrush2.setColor( mDataDefinedProperties.valueAsColor( QgsComposerObject::ScalebarFillColor2, *evalContext, mFillColor2 ) );
forceUpdate = true;
}
if ( property == QgsComposerObject::ScalebarLineColor || property == QgsComposerObject::AllProperties )
{
mPen.setColor( mProperties.valueAsColor( QgsComposerObject::ScalebarLineColor, *evalContext, mLineColor ) );
mPen.setColor( mDataDefinedProperties.valueAsColor( QgsComposerObject::ScalebarLineColor, *evalContext, mLineColor ) );
forceUpdate = true;
}
if ( property == QgsComposerObject::ScalebarLineWidth || property == QgsComposerObject::AllProperties )
{
mPen.setWidthF( mProperties.valueAsDouble( QgsComposerObject::ScalebarLineWidth, *evalContext, mLineWidth ) );
mPen.setWidthF( mDataDefinedProperties.valueAsDouble( QgsComposerObject::ScalebarLineWidth, *evalContext, mLineWidth ) );
forceUpdate = true;
}
if ( forceUpdate )

View File

@ -443,7 +443,7 @@ void QgsComposition::setNumPages( const int pages )
//data defined num pages set?
QgsExpressionContext context = createExpressionContext();
desiredPages = mProperties.valueAsInt( QgsComposerObject::NumPages, context, desiredPages );
desiredPages = mDataDefinedProperties.valueAsInt( QgsComposerObject::NumPages, context, desiredPages );
int diff = desiredPages - currentPages;
if ( diff >= 0 )
@ -903,7 +903,7 @@ bool QgsComposition::writeXml( QDomElement& composerElem, QDomDocument& doc )
//data defined properties
QDomElement ddPropsElement = doc.createElement( QStringLiteral( "dataDefinedProperties" ) );
mProperties.writeXml( ddPropsElement, doc, QgsComposerObject::PROPERTY_DEFINITIONS );
mDataDefinedProperties.writeXml( ddPropsElement, doc, QgsComposerObject::PROPERTY_DEFINITIONS );
compositionElem.appendChild( ddPropsElement );
composerElem.appendChild( compositionElem );
@ -985,12 +985,12 @@ bool QgsComposition::readXml( const QDomElement& compositionElem, const QDomDocu
//data defined properties
//read old (pre 3.0) style data defined properties
QgsComposerUtils::readOldDataDefinedPropertyMap( compositionElem, mProperties );
QgsComposerUtils::readOldDataDefinedPropertyMap( compositionElem, mDataDefinedProperties );
QDomNode propsNode = compositionElem.namedItem( QStringLiteral( "dataDefinedProperties" ) );
if ( !propsNode.isNull() )
{
mProperties.readXml( propsNode.toElement(), doc, QgsComposerObject::PROPERTY_DEFINITIONS );
mDataDefinedProperties.readXml( propsNode.toElement(), doc, QgsComposerObject::PROPERTY_DEFINITIONS );
}
//custom properties
@ -3269,10 +3269,10 @@ bool QgsComposition::setAtlasMode( const AtlasMode mode )
bool QgsComposition::ddPageSizeActive() const
{
//check if any data defined page settings are active
return mProperties.isActive( QgsComposerObject::PresetPaperSize ) ||
mProperties.isActive( QgsComposerObject::PaperWidth ) ||
mProperties.isActive( QgsComposerObject::PaperHeight ) ||
mProperties.isActive( QgsComposerObject::PaperOrientation );
return mDataDefinedProperties.isActive( QgsComposerObject::PresetPaperSize ) ||
mDataDefinedProperties.isActive( QgsComposerObject::PaperWidth ) ||
mDataDefinedProperties.isActive( QgsComposerObject::PaperHeight ) ||
mDataDefinedProperties.isActive( QgsComposerObject::PaperOrientation );
}
void QgsComposition::refreshPageSize( const QgsExpressionContext* context )
@ -3286,7 +3286,7 @@ void QgsComposition::refreshPageSize( const QgsExpressionContext* context )
QVariant exprVal;
//in order of precedence - first consider predefined page size
bool ok = false;
QString presetString = mProperties.valueAsString( QgsComposerObject::PresetPaperSize, *evalContext, QString(), &ok );
QString presetString = mDataDefinedProperties.valueAsString( QgsComposerObject::PresetPaperSize, *evalContext, QString(), &ok );
if ( ok && !presetString.isEmpty() )
{
double widthD = 0;
@ -3299,11 +3299,11 @@ void QgsComposition::refreshPageSize( const QgsExpressionContext* context )
}
//which is overwritten by data defined width/height
pageWidth = mProperties.valueAsDouble( QgsComposerObject::PaperWidth, *evalContext, pageWidth );
pageHeight = mProperties.valueAsDouble( QgsComposerObject::PaperHeight, *evalContext, pageHeight );
pageWidth = mDataDefinedProperties.valueAsDouble( QgsComposerObject::PaperWidth, *evalContext, pageWidth );
pageHeight = mDataDefinedProperties.valueAsDouble( QgsComposerObject::PaperHeight, *evalContext, pageHeight );
//which is finally overwritten by data defined orientation
QString orientationString = mProperties.valueAsString( QgsComposerObject::PaperOrientation, *evalContext, QString(), &ok );
QString orientationString = mDataDefinedProperties.valueAsString( QgsComposerObject::PaperOrientation, *evalContext, QString(), &ok );
if ( ok && !orientationString.isEmpty() )
{
orientationString = orientationString.trimmed();
@ -3369,6 +3369,6 @@ QgsExpressionContext QgsComposition::createExpressionContext() const
void QgsComposition::prepareAllDataDefinedExpressions()
{
QgsExpressionContext context = createExpressionContext();
mProperties.prepare( context );
mDataDefinedProperties.prepare( context );
}

View File

@ -842,20 +842,20 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene, public QgsExpressionCo
* @note added in QGIS 3.0
* @see setDataDefinedProperties()
*/
QgsPropertyCollection& dataDefinedProperties() { return mProperties; }
QgsPropertyCollection& dataDefinedProperties() { return mDataDefinedProperties; }
/** Returns a reference to the composition's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setDataDefinedProperties()
*/
const QgsPropertyCollection& dataDefinedProperties() const { return mProperties; }
const QgsPropertyCollection& dataDefinedProperties() const { return mDataDefinedProperties; }
/** Sets the composition's property collection, used for data defined overrides.
* @param collection property collection. Existing properties will be replaced.
* @note added in QGIS 3.0
* @see dataDefinedProperties()
*/
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mProperties = collection; }
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mDataDefinedProperties = collection; }
protected:
void init();
@ -937,7 +937,7 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene, public QgsExpressionCo
QgsComposerModel * mItemsModel;
QgsPropertyCollection mProperties;
QgsPropertyCollection mDataDefinedProperties;
QgsObjectCustomProperties mCustomProperties;

View File

@ -51,7 +51,7 @@ QgsDiagramLayerSettings::QgsDiagramLayerSettings( const QgsDiagramLayerSettings&
, mDistance( rh.mDistance )
, mRenderer( rh.mRenderer ? rh.mRenderer->clone() : nullptr )
, mShowAll( rh.mShowAll )
, mProperties( rh.mProperties )
, mDataDefinedProperties( rh.mDataDefinedProperties )
{}
QgsDiagramLayerSettings& QgsDiagramLayerSettings::operator=( const QgsDiagramLayerSettings & rh )
@ -65,7 +65,7 @@ QgsDiagramLayerSettings& QgsDiagramLayerSettings::operator=( const QgsDiagramLay
mRenderer = rh.mRenderer ? rh.mRenderer->clone() : nullptr;
mCt = rh.mCt;
mShowAll = rh.mShowAll;
mProperties = rh.mProperties;
mDataDefinedProperties = rh.mDataDefinedProperties;
return *this;
}
@ -95,11 +95,11 @@ void QgsDiagramLayerSettings::readXml( const QDomElement& elem, const QgsVectorL
QDomNodeList propertyElems = elem.elementsByTagName( "properties" );
if ( !propertyElems.isEmpty() )
{
( void )mProperties.readXml( propertyElems.at( 0 ).toElement(), elem.ownerDocument(), PROPERTY_DEFINITIONS );
( void )mDataDefinedProperties.readXml( propertyElems.at( 0 ).toElement(), elem.ownerDocument(), PROPERTY_DEFINITIONS );
}
else
{
mProperties.clear();
mDataDefinedProperties.clear();
}
mPlacement = static_cast< Placement >( elem.attribute( QStringLiteral( "placement" ) ).toInt() );
@ -113,21 +113,21 @@ void QgsDiagramLayerSettings::readXml( const QDomElement& elem, const QgsVectorL
// upgrade old project
int xPosColumn = elem.attribute( QStringLiteral( "xPosColumn" ) ).toInt();
if ( xPosColumn >= 0 && xPosColumn < layer->fields().count() )
mProperties.setProperty( PositionX, QgsProperty::fromField( layer->fields().at( xPosColumn ).name(), true ) );
mDataDefinedProperties.setProperty( PositionX, QgsProperty::fromField( layer->fields().at( xPosColumn ).name(), true ) );
}
if ( elem.hasAttribute( QStringLiteral( "yPosColumn" ) ) )
{
// upgrade old project
int yPosColumn = elem.attribute( QStringLiteral( "yPosColumn" ) ).toInt();
if ( yPosColumn >= 0 && yPosColumn < layer->fields().count() )
mProperties.setProperty( PositionY, QgsProperty::fromField( layer->fields().at( yPosColumn ).name(), true ) );
mDataDefinedProperties.setProperty( PositionY, QgsProperty::fromField( layer->fields().at( yPosColumn ).name(), true ) );
}
if ( elem.hasAttribute( QStringLiteral( "showColumn" ) ) )
{
// upgrade old project
int showColumn = elem.attribute( QStringLiteral( "showColumn" ) ).toInt();
if ( showColumn >= 0 && showColumn < layer->fields().count() )
mProperties.setProperty( Show, QgsProperty::fromField( layer->fields().at( showColumn ).name(), true ) );
mDataDefinedProperties.setProperty( Show, QgsProperty::fromField( layer->fields().at( showColumn ).name(), true ) );
}
mShowAll = ( elem.attribute( QStringLiteral( "showAll" ), QStringLiteral( "0" ) ) != QLatin1String( "0" ) );
}
@ -138,7 +138,7 @@ void QgsDiagramLayerSettings::writeXml( QDomElement& layerElem, QDomDocument& do
QDomElement diagramLayerElem = doc.createElement( QStringLiteral( "DiagramLayerSettings" ) );
QDomElement propertiesElem = doc.createElement( "properties" );
( void )mProperties.writeXml( propertiesElem, doc, PROPERTY_DEFINITIONS );
( void )mDataDefinedProperties.writeXml( propertiesElem, doc, PROPERTY_DEFINITIONS );
diagramLayerElem.appendChild( propertiesElem );
diagramLayerElem.setAttribute( QStringLiteral( "placement" ), mPlacement );
diagramLayerElem.setAttribute( QStringLiteral( "linePlacementFlags" ), mPlacementFlags );
@ -152,7 +152,7 @@ void QgsDiagramLayerSettings::writeXml( QDomElement& layerElem, QDomDocument& do
bool QgsDiagramLayerSettings::prepare( const QgsExpressionContext& context ) const
{
return mProperties.prepare( context );
return mDataDefinedProperties.prepare( context );
}
QSet<QString> QgsDiagramLayerSettings::referencedFields( const QgsExpressionContext &context ) const
@ -162,7 +162,7 @@ QSet<QString> QgsDiagramLayerSettings::referencedFields( const QgsExpressionCont
referenced = mRenderer->referencedFields( context );
//add the ones needed for data defined settings
referenced.unite( mProperties.referencedFields( context ) );
referenced.unite( mDataDefinedProperties.referencedFields( context ) );
return referenced;
}

View File

@ -269,22 +269,22 @@ class CORE_EXPORT QgsDiagramLayerSettings
/** Returns a reference to the diagram's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setProperties()
* @see setDataDefinedProperties()
*/
QgsPropertyCollection& properties() { return mProperties; }
QgsPropertyCollection& dataDefinedProperties() { return mDataDefinedProperties; }
/** Returns a reference to the diagram's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setProperties()
*/
const QgsPropertyCollection& properties() const { return mProperties; }
const QgsPropertyCollection& dataDefinedProperties() const { return mDataDefinedProperties; }
/** Sets the diagram's property collection, used for data defined overrides.
* @param collection property collection. Existing properties will be replaced.
* @note added in QGIS 3.0
* @see properties()
* @see dataDefinedProperties()
*/
void setProperties( const QgsPropertyCollection& collection ) { mProperties = collection; }
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mDataDefinedProperties = collection; }
//! Property definitions
static const QgsPropertiesDefinition PROPERTY_DEFINITIONS;
@ -321,7 +321,7 @@ class CORE_EXPORT QgsDiagramLayerSettings
bool mShowAll = true;
//! Property collection for data defined diagram settings
QgsPropertyCollection mProperties;
QgsPropertyCollection mDataDefinedProperties;
};

View File

@ -280,7 +280,7 @@ QgsPalLayerSettings::QgsPalLayerSettings( const QgsPalLayerSettings& s )
, mFeaturesToLabel( 0 )
, mFeatsSendingToPal( 0 )
, mFeatsRegPal( 0 )
, mProperties( s.mProperties )
, mDataDefinedProperties( s.mDataDefinedProperties )
, expression( nullptr )
{
*this = s;
@ -361,7 +361,7 @@ QgsPalLayerSettings& QgsPalLayerSettings::operator=( const QgsPalLayerSettings &
zIndex = s.zIndex;
mFormat = s.mFormat;
mProperties = s.mProperties;
mDataDefinedProperties = s.mDataDefinedProperties;
return *this;
}
@ -445,11 +445,11 @@ void QgsPalLayerSettings::readOldDataDefinedProperty( QgsVectorLayer* layer, Qgs
bool active = ddv.at( 0 ).toInt();
if ( ddv.at( 1 ).toInt() )
{
mProperties.setProperty( p, QgsProperty::fromExpression( ddv.at( 2 ), active ) );
mDataDefinedProperties.setProperty( p, QgsProperty::fromExpression( ddv.at( 2 ), active ) );
}
else
{
mProperties.setProperty( p, QgsProperty::fromField( ddv.at( 3 ), active ) );
mDataDefinedProperties.setProperty( p, QgsProperty::fromField( ddv.at( 3 ), active ) );
}
}
else
@ -484,11 +484,11 @@ void QgsPalLayerSettings::readOldDataDefinedPropertyMap( QgsVectorLayer* layer,
bool isExpression = e.attribute( QStringLiteral( "useExpr" ) ).compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0;
if ( isExpression )
{
mProperties.setProperty( i.key(), QgsProperty::fromExpression( e.attribute( QStringLiteral( "expr" ) ), active ) );
mDataDefinedProperties.setProperty( i.key(), QgsProperty::fromExpression( e.attribute( QStringLiteral( "expr" ) ), active ) );
}
else
{
mProperties.setProperty( i.key(), QgsProperty::fromField( e.attribute( QStringLiteral( "field" ) ), active ) );
mDataDefinedProperties.setProperty( i.key(), QgsProperty::fromField( e.attribute( QStringLiteral( "field" ) ), active ) );
}
}
}
@ -634,13 +634,13 @@ void QgsPalLayerSettings::readFromLayer( QgsVectorLayer* layer )
obstacleType = static_cast< ObstacleType >( layer->customProperty( QStringLiteral( "labeling/obstacleType" ), QVariant( PolygonInterior ) ).toUInt() );
zIndex = layer->customProperty( QStringLiteral( "labeling/zIndex" ), QVariant( 0.0 ) ).toDouble();
mProperties.clear();
mDataDefinedProperties.clear();
if ( layer->customProperty( QStringLiteral( "labeling/ddProperties" ) ).isValid() )
{
QDomDocument doc( QStringLiteral( "dd" ) );
doc.setContent( layer->customProperty( QStringLiteral( "labeling/ddProperties" ) ).toString() );
QDomElement elem = doc.firstChildElement( QStringLiteral( "properties" ) );
mProperties.readXml( elem, doc, PROPERTY_DEFINITIONS );
mDataDefinedProperties.readXml( elem, doc, PROPERTY_DEFINITIONS );
}
else
{
@ -731,7 +731,7 @@ void QgsPalLayerSettings::writeToLayer( QgsVectorLayer* layer )
doc = QDomDocument( QStringLiteral( "dd" ) );
QDomElement ddElem = doc.createElement( QStringLiteral( "properties" ) );
mProperties.writeXml( ddElem, doc, PROPERTY_DEFINITIONS );
mDataDefinedProperties.writeXml( ddElem, doc, PROPERTY_DEFINITIONS );
QString ddProps;
QTextStream streamProps( &ddProps );
ddElem.save( streamProps, -1 );
@ -847,12 +847,12 @@ void QgsPalLayerSettings::readXml( QDomElement& elem )
QDomElement ddElem = elem.firstChildElement( QStringLiteral( "dd_properties" ) );
if ( !ddElem.isNull() )
{
mProperties.readXml( ddElem, ddElem.ownerDocument(), PROPERTY_DEFINITIONS );
mDataDefinedProperties.readXml( ddElem, ddElem.ownerDocument(), PROPERTY_DEFINITIONS );
}
else
{
// upgrade 2.x style dd project
mProperties.clear();
mDataDefinedProperties.clear();
QDomElement ddElem = elem.firstChildElement( QStringLiteral( "data-defined" ) );
readOldDataDefinedPropertyMap( nullptr, &ddElem );
}
@ -936,7 +936,7 @@ QDomElement QgsPalLayerSettings::writeXml( QDomDocument& doc )
renderingElem.setAttribute( QStringLiteral( "zIndex" ), zIndex );
QDomElement ddElem = doc.createElement( QStringLiteral( "dd_properties" ) );
mProperties.writeXml( ddElem, doc, PROPERTY_DEFINITIONS );
mDataDefinedProperties.writeXml( ddElem, doc, PROPERTY_DEFINITIONS );
QDomElement elem = doc.createElement( QStringLiteral( "settings" ) );
elem.appendChild( textStyleElem );
@ -1017,24 +1017,24 @@ void QgsPalLayerSettings::calculateLabelSize( const QFontMetricsF* fm, QString t
else // called externally with passed-in feature, evaluate data defined
{
rc->expressionContext().setOriginalValueVariable( wrapChar );
wrapchr = mProperties.value( QgsPalLayerSettings::MultiLineWrapChar, rc->expressionContext(), wrapchr ).toString();
wrapchr = mDataDefinedProperties.value( QgsPalLayerSettings::MultiLineWrapChar, rc->expressionContext(), wrapchr ).toString();
rc->expressionContext().setOriginalValueVariable( multilineH );
multilineH = mProperties.valueAsDouble( QgsPalLayerSettings::MultiLineHeight, rc->expressionContext(), multilineH );
multilineH = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::MultiLineHeight, rc->expressionContext(), multilineH );
rc->expressionContext().setOriginalValueVariable( addDirSymb );
addDirSymb = mProperties.valueAsBool( QgsPalLayerSettings::DirSymbDraw, rc->expressionContext(), addDirSymb );
addDirSymb = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::DirSymbDraw, rc->expressionContext(), addDirSymb );
if ( addDirSymb ) // don't do extra evaluations if not adding a direction symbol
{
rc->expressionContext().setOriginalValueVariable( leftDirSymb );
leftDirSymb = mProperties.value( QgsPalLayerSettings::DirSymbLeft, rc->expressionContext(), leftDirSymb ).toString();
leftDirSymb = mDataDefinedProperties.value( QgsPalLayerSettings::DirSymbLeft, rc->expressionContext(), leftDirSymb ).toString();
rc->expressionContext().setOriginalValueVariable( rightDirSymb );
rightDirSymb = mProperties.value( QgsPalLayerSettings::DirSymbLeft, rc->expressionContext(), rightDirSymb ).toString();
rightDirSymb = mDataDefinedProperties.value( QgsPalLayerSettings::DirSymbLeft, rc->expressionContext(), rightDirSymb ).toString();
rc->expressionContext().setOriginalValueVariable( static_cast< int >( placeDirSymb ) );
placeDirSymb = static_cast< QgsPalLayerSettings::DirectionSymbols >( mProperties.valueAsInt( QgsPalLayerSettings::DirSymbPlacement, rc->expressionContext(), placeDirSymb ) );
placeDirSymb = static_cast< QgsPalLayerSettings::DirectionSymbols >( mDataDefinedProperties.valueAsInt( QgsPalLayerSettings::DirSymbPlacement, rc->expressionContext(), placeDirSymb ) );
}
}
@ -1100,7 +1100,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
mCurFeat = &f;
// data defined is obstacle? calculate this first, to avoid wasting time working with obstacles we don't require
bool isObstacle = mProperties.valueAsBool( QgsPalLayerSettings::IsObstacle, context.expressionContext(), obstacle ); // default to layer default
bool isObstacle = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::IsObstacle, context.expressionContext(), obstacle ); // default to layer default
if ( !drawLabels )
{
@ -1118,18 +1118,18 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
// data defined show label? defaults to show label if not set
context.expressionContext().setOriginalValueVariable( true );
if ( !mProperties.valueAsBool( QgsPalLayerSettings::Show, context.expressionContext(), true ) )
if ( !mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::Show, context.expressionContext(), true ) )
{
return;
}
// data defined scale visibility?
bool useScaleVisibility = mProperties.valueAsBool( QgsPalLayerSettings::ScaleVisibility, context.expressionContext(), scaleVisibility );
bool useScaleVisibility = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::ScaleVisibility, context.expressionContext(), scaleVisibility );
if ( useScaleVisibility )
{
// data defined min scale?
double minScale = mProperties.valueAsDouble( QgsPalLayerSettings::MinScale, context.expressionContext(), scaleMin );
double minScale = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::MinScale, context.expressionContext(), scaleMin );
// scales closer than 1:1
if ( minScale < 0 )
@ -1143,7 +1143,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
}
// data defined max scale?
double maxScale = mProperties.valueAsDouble( QgsPalLayerSettings::MaxScale, context.expressionContext(), scaleMax );
double maxScale = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::MaxScale, context.expressionContext(), scaleMax );
// scales closer than 1:1
if ( maxScale < 0 )
@ -1162,7 +1162,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
// data defined font units?
QgsUnitTypes::RenderUnit fontunits = mFormat.sizeUnit();
exprVal = mProperties.value( QgsPalLayerSettings::FontSizeUnit, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::FontSizeUnit, context.expressionContext() );
if ( exprVal.isValid() )
{
QString units = exprVal.toString();
@ -1176,7 +1176,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
}
//data defined label size?
double fontSize = mProperties.valueAsDouble( QgsPalLayerSettings::Size, context.expressionContext(), mFormat.size() );
double fontSize = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::Size, context.expressionContext(), mFormat.size() );
if ( fontSize <= 0.0 )
{
return;
@ -1195,10 +1195,10 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
// defined 'minimum/maximum pixel font size'?
if ( fontunits == QgsUnitTypes::RenderMapUnits )
{
if ( mProperties.valueAsBool( QgsPalLayerSettings::FontLimitPixel, context.expressionContext(), fontLimitPixelSize ) )
if ( mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::FontLimitPixel, context.expressionContext(), fontLimitPixelSize ) )
{
int fontMinPixel = mProperties.valueAsInt( QgsPalLayerSettings::FontMinPixel, context.expressionContext(), fontMinPixelSize );
int fontMaxPixel = mProperties.valueAsInt( QgsPalLayerSettings::FontMaxPixel, context.expressionContext(), fontMaxPixelSize );
int fontMinPixel = mDataDefinedProperties.valueAsInt( QgsPalLayerSettings::FontMinPixel, context.expressionContext(), fontMinPixelSize );
int fontMaxPixel = mDataDefinedProperties.valueAsInt( QgsPalLayerSettings::FontMaxPixel, context.expressionContext(), fontMaxPixelSize );
if ( fontMinPixel > labelFont.pixelSize() || labelFont.pixelSize() > fontMaxPixel )
{
@ -1259,7 +1259,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
capitalization = static_cast< QgsStringUtils::Capitalization >( mFormat.font().capitalization() );
}
// data defined font capitalization?
exprVal = mProperties.value( QgsPalLayerSettings::FontCase, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::FontCase, context.expressionContext() );
if ( exprVal.isValid() )
{
QString fcase = exprVal.toString().trimmed();
@ -1288,15 +1288,15 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
labelText = QgsStringUtils::capitalize( labelText, capitalization );
// format number if label text is coercible to a number
if ( mProperties.valueAsBool( QgsPalLayerSettings::NumFormat, context.expressionContext(), formatNumbers ) )
if ( mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::NumFormat, context.expressionContext(), formatNumbers ) )
{
// data defined decimal places?
int decimalPlaces = mProperties.valueAsInt( QgsPalLayerSettings::NumDecimals, context.expressionContext(), decimals );
int decimalPlaces = mDataDefinedProperties.valueAsInt( QgsPalLayerSettings::NumDecimals, context.expressionContext(), decimals );
if ( decimalPlaces <= 0 ) // needs to be positive
decimalPlaces = decimals;
// data defined plus sign?
bool signPlus = mProperties.valueAsBool( QgsPalLayerSettings::NumPlusSign, context.expressionContext(), plusSign );
bool signPlus = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::NumPlusSign, context.expressionContext(), plusSign );
QVariant textV( labelText );
bool ok;
@ -1330,7 +1330,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
maxcharangleout = maxCurvedCharAngleOut;
//data defined maximum angle between curved label characters?
exprVal = mProperties.value( QgsPalLayerSettings::CurvedCharAngleInOut, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::CurvedCharAngleInOut, context.expressionContext() );
if ( exprVal.isValid() )
{
QString ptstr = exprVal.toString().trimmed();
@ -1349,7 +1349,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
// data defined centroid whole or clipped?
bool wholeCentroid = centroidWhole;
exprVal = mProperties.value( QgsPalLayerSettings::CentroidWhole, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::CentroidWhole, context.expressionContext() );
if ( exprVal.isValid() )
{
QString str = exprVal.toString().trimmed();
@ -1490,7 +1490,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
bool ddFixedQuad = false;
QuadrantPosition quadOff = quadOffset;
context.expressionContext().setOriginalValueVariable( static_cast< int >( quadOff ) );
exprVal = mProperties.value( QgsPalLayerSettings::OffsetQuad, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::OffsetQuad, context.expressionContext() );
if ( exprVal.isValid() )
{
bool ok;
@ -1547,7 +1547,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
double xOff = xOffset;
double yOff = yOffset;
context.expressionContext().setOriginalValueVariable( QgsSymbolLayerUtils::encodePoint( QPointF( xOffset, yOffset ) ) );
exprVal = mProperties.value( QgsPalLayerSettings::OffsetXY, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::OffsetXY, context.expressionContext() );
if ( exprVal.isValid() )
{
QString ptstr = exprVal.toString().trimmed();
@ -1563,7 +1563,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
// data defined label offset units?
bool offinmapunits = labelOffsetInMapUnits;
exprVal = mProperties.value( QgsPalLayerSettings::OffsetUnits, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::OffsetUnits, context.expressionContext() );
if ( exprVal.isValid() )
{
QString units = exprVal.toString().trimmed();
@ -1605,7 +1605,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
const QgsMapToPixel& m2p = context.mapToPixel();
//data defined rotation?
context.expressionContext().setOriginalValueVariable( angleOffset );
exprVal = mProperties.value( QgsPalLayerSettings::Rotation, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::Rotation, context.expressionContext() );
if ( exprVal.isValid() )
{
bool ok;
@ -1621,14 +1621,14 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
}
}
exprVal = mProperties.value( QgsPalLayerSettings::PositionX, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::PositionX, context.expressionContext() );
if ( exprVal.isValid() )
{
if ( !exprVal.isNull() )
xPos = exprVal.toDouble( &ddXPos );
QgsDebugMsgLevel( QString( "exprVal PositionX:%1" ).arg( xPos ), 4 );
exprVal = mProperties.value( QgsPalLayerSettings::PositionY, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::PositionY, context.expressionContext() );
if ( exprVal.isValid() )
{
//data defined position. But field values could be NULL -> positions will be generated by PAL
@ -1650,7 +1650,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
double ydiff = 0.0;
//horizontal alignment
exprVal = mProperties.value( QgsPalLayerSettings::Hali, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::Hali, context.expressionContext() );
if ( exprVal.isValid() )
{
QString haliString = exprVal.toString();
@ -1666,7 +1666,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
}
//vertical alignment
exprVal = mProperties.value( QgsPalLayerSettings::Vali, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::Vali, context.expressionContext() );
if ( exprVal.isValid() )
{
QString valiString = exprVal.toString();
@ -1731,16 +1731,16 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
}
// data defined always show?
bool alwaysShow = mProperties.valueAsBool( QgsPalLayerSettings::AlwaysShow, context.expressionContext(), false );
bool alwaysShow = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::AlwaysShow, context.expressionContext(), false );
// set repeat distance
// data defined repeat distance?
context.expressionContext().setOriginalValueVariable( repeatDistance );
double repeatDist = mProperties.valueAsDouble( QgsPalLayerSettings::RepeatDistance, context.expressionContext(), repeatDistance );
double repeatDist = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::RepeatDistance, context.expressionContext(), repeatDistance );
// data defined label-repeat distance units?
bool repeatdistinmapunit = repeatDistanceUnit == QgsPalLayerSettings::MapUnits;
exprVal = mProperties.value( QgsPalLayerSettings::RepeatDistanceUnit, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::RepeatDistanceUnit, context.expressionContext() );
if ( exprVal.isValid() )
{
QString units = exprVal.toString().trimmed();
@ -1810,11 +1810,11 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
// data defined label-feature distance?
context.expressionContext().setOriginalValueVariable( dist );
double distance = mProperties.valueAsDouble( QgsPalLayerSettings::LabelDistance, context.expressionContext(), dist );
double distance = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::LabelDistance, context.expressionContext(), dist );
// data defined label-feature distance units?
bool distinmapunit = distInMapUnits;
exprVal = mProperties.value( QgsPalLayerSettings::DistanceUnits, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::DistanceUnits, context.expressionContext() );
if ( exprVal.isValid() )
{
QString units = exprVal.toString().trimmed();
@ -1854,12 +1854,12 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
// data defined z-index?
context.expressionContext().setOriginalValueVariable( zIndex );
double z = mProperties.valueAsDouble( QgsPalLayerSettings::ZIndex, context.expressionContext(), zIndex );
double z = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::ZIndex, context.expressionContext(), zIndex );
( *labelFeature )->setZIndex( z );
// data defined priority?
context.expressionContext().setOriginalValueVariable( priority );
exprVal = mProperties.value( QgsPalLayerSettings::Priority, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::Priority, context.expressionContext() );
if ( exprVal.isValid() )
{
bool ok;
@ -1876,7 +1876,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
double featObstacleFactor = obstacleFactor;
context.expressionContext().setOriginalValueVariable( obstacleFactor );
exprVal = mProperties.value( QgsPalLayerSettings::ObstacleFactor, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::ObstacleFactor, context.expressionContext() );
if ( exprVal.isValid() )
{
bool ok;
@ -1895,7 +1895,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
positionOrder = QgsPalLayerSettings::DEFAULT_PLACEMENT_ORDER;
context.expressionContext().setOriginalValueVariable( QgsLabelingUtils::encodePredefinedPositionOrder( predefinedPositionOrder ) );
QString dataDefinedOrder = mProperties.valueAsString( QgsPalLayerSettings::PredefinedPositionOrder, context.expressionContext() );
QString dataDefinedOrder = mDataDefinedProperties.valueAsString( QgsPalLayerSettings::PredefinedPositionOrder, context.expressionContext() );
if ( !dataDefinedOrder.isEmpty() )
{
positionOrder = QgsLabelingUtils::decodePredefinedPositionOrder( dataDefinedOrder );
@ -1958,11 +1958,11 @@ bool QgsPalLayerSettings::dataDefinedValEval( DataDefinedValueType valType,
QgsPalLayerSettings::Property p,
QVariant& exprVal, QgsExpressionContext& context, const QVariant& originalValue )
{
if ( !mProperties.isActive( p ) )
if ( !mDataDefinedProperties.isActive( p ) )
return false;
context.setOriginalValueVariable( originalValue );
exprVal = mProperties.value( p, context );
exprVal = mDataDefinedProperties.value( p, context );
if ( exprVal.isValid() )
{
switch ( valType )
@ -2137,7 +2137,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
// data defined font family?
QString ddFontFamily;
context.expressionContext().setOriginalValueVariable( labelFont.family() );
exprVal = mProperties.value( QgsPalLayerSettings::Family, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::Family, context.expressionContext() );
if ( exprVal.isValid() )
{
QString family = exprVal.toString().trimmed();
@ -2156,7 +2156,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
// data defined named font style?
QString ddFontStyle;
exprVal = mProperties.value( QgsPalLayerSettings::FontStyle, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::FontStyle, context.expressionContext() );
if ( exprVal.isValid() )
{
QString fontstyle = exprVal.toString().trimmed();
@ -2166,11 +2166,11 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
// data defined bold font style?
context.expressionContext().setOriginalValueVariable( labelFont.bold() );
bool ddBold = mProperties.valueAsBool( QgsPalLayerSettings::Bold, context.expressionContext(), false );
bool ddBold = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::Bold, context.expressionContext(), false );
// data defined italic font style?
context.expressionContext().setOriginalValueVariable( labelFont.italic() );
bool ddItalic = mProperties.valueAsBool( QgsPalLayerSettings::Italic, context.expressionContext(), false );
bool ddItalic = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::Italic, context.expressionContext(), false );
// TODO: update when pref for how to resolve missing family (use matching algorithm or just default font) is implemented
// (currently defaults to what has been read in from layer settings)
@ -2237,28 +2237,28 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
// data defined word spacing?
double wordspace = labelFont.wordSpacing();
context.expressionContext().setOriginalValueVariable( wordspace );
wordspace = mProperties.valueAsDouble( QgsPalLayerSettings::FontWordSpacing, context.expressionContext(), wordspace );
wordspace = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::FontWordSpacing, context.expressionContext(), wordspace );
labelFont.setWordSpacing( context.convertToPainterUnits( wordspace, fontunits, mFormat.sizeMapUnitScale() ) );
// data defined letter spacing?
double letterspace = labelFont.letterSpacing();
context.expressionContext().setOriginalValueVariable( letterspace );
letterspace = mProperties.valueAsDouble( QgsPalLayerSettings::FontLetterSpacing, context.expressionContext(), letterspace );
letterspace = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::FontLetterSpacing, context.expressionContext(), letterspace );
labelFont.setLetterSpacing( QFont::AbsoluteSpacing, context.convertToPainterUnits( letterspace, fontunits, mFormat.sizeMapUnitScale() ) );
// data defined strikeout font style?
if ( mProperties.isActive( QgsPalLayerSettings::Strikeout ) )
if ( mDataDefinedProperties.isActive( QgsPalLayerSettings::Strikeout ) )
{
context.expressionContext().setOriginalValueVariable( labelFont.strikeOut() );
bool strikeout = mProperties.valueAsBool( QgsPalLayerSettings::Strikeout, context.expressionContext(), false );
bool strikeout = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::Strikeout, context.expressionContext(), false );
labelFont.setStrikeOut( strikeout );
}
// data defined underline font style?
if ( mProperties.isActive( QgsPalLayerSettings::Underline ) )
if ( mDataDefinedProperties.isActive( QgsPalLayerSettings::Underline ) )
{
context.expressionContext().setOriginalValueVariable( labelFont.underline() );
bool underline = mProperties.valueAsBool( QgsPalLayerSettings::Underline, context.expressionContext(), false );
bool underline = mDataDefinedProperties.valueAsBool( QgsPalLayerSettings::Underline, context.expressionContext(), false );
labelFont.setUnderline( underline );
}
@ -2346,7 +2346,7 @@ void QgsPalLayerSettings::parseTextFormatting( QgsRenderContext &context )
// data defined multiline text align?
context.expressionContext().setOriginalValueVariable( mFormat.lineHeight() );
exprVal = mProperties.value( QgsPalLayerSettings::MultiLineAlignment, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::MultiLineAlignment, context.expressionContext() );
if ( exprVal.isValid() )
{
QString str = exprVal.toString().trimmed();
@ -2389,7 +2389,7 @@ void QgsPalLayerSettings::parseTextFormatting( QgsRenderContext &context )
dataDefinedValEval( DDString, QgsPalLayerSettings::DirSymbRight, exprVal, context.expressionContext(), rightDirectionSymbol );
// data defined direction symbol placement?
exprVal = mProperties.value( QgsPalLayerSettings::DirSymbPlacement, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::DirSymbPlacement, context.expressionContext() );
if ( exprVal.isValid() )
{
QString str = exprVal.toString().trimmed();
@ -2455,7 +2455,7 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
// data defined shape kind?
QgsTextBackgroundSettings::ShapeType shapeKind = background.type();
exprVal = mProperties.value( QgsPalLayerSettings::ShapeKind, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::ShapeKind, context.expressionContext() );
if ( exprVal.isValid() )
{
QString skind = exprVal.toString().trimmed();
@ -2490,7 +2490,7 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
// data defined shape SVG path?
QString svgPath = background.svgFile();
context.expressionContext().setOriginalValueVariable( svgPath );
exprVal = mProperties.value( QgsPalLayerSettings::ShapeSVGFile, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::ShapeSVGFile, context.expressionContext() );
if ( exprVal.isValid() )
{
QString svgfile = exprVal.toString().trimmed();
@ -2503,7 +2503,7 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
// data defined shape size type?
QgsTextBackgroundSettings::SizeType shpSizeType = background.sizeType();
exprVal = mProperties.value( QgsPalLayerSettings::ShapeSizeType, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::ShapeSizeType, context.expressionContext() );
if ( exprVal.isValid() )
{
QString stype = exprVal.toString().trimmed();
@ -2569,7 +2569,7 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
dataDefinedValEval( DDUnits, QgsPalLayerSettings::ShapeSizeUnits, exprVal, context.expressionContext() );
// data defined shape rotation type?
exprVal = mProperties.value( QgsPalLayerSettings::ShapeRotationType, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::ShapeRotationType, context.expressionContext() );
if ( exprVal.isValid() )
{
QString rotstr = exprVal.toString().trimmed();
@ -2678,7 +2678,7 @@ void QgsPalLayerSettings::parseDropShadow( QgsRenderContext &context )
}
// data defined shadow under type?
exprVal = mProperties.value( QgsPalLayerSettings::ShadowUnder, context.expressionContext() );
exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::ShadowUnder, context.expressionContext() );
if ( exprVal.isValid() )
{
QString str = exprVal.toString().trimmed();

View File

@ -530,22 +530,22 @@ class CORE_EXPORT QgsPalLayerSettings
/** Returns a reference to the label's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setProperties()
* @see setDataDefinedProperties()
*/
QgsPropertyCollection& properties() { return mProperties; }
QgsPropertyCollection& dataDefinedProperties() { return mDataDefinedProperties; }
/** Returns a reference to the label's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setProperties()
* @see setDataDefinedProperties()
*/
const QgsPropertyCollection& properties() const { return mProperties; }
const QgsPropertyCollection& dataDefinedProperties() const { return mDataDefinedProperties; }
/** Sets the label's property collection, used for data defined overrides.
* @param collection property collection. Existing properties will be replaced.
* @note added in QGIS 3.0
* @see properties()
* @see dataDefinedProperties()
*/
void setProperties( const QgsPropertyCollection& collection ) { mProperties = collection; }
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mDataDefinedProperties = collection; }
/** Returns the label text formatting settings, e.g., font settings, buffer settings, etc.
* @see setFormat()
@ -634,7 +634,7 @@ class CORE_EXPORT QgsPalLayerSettings
QMap<Property, QVariant> dataDefinedValues;
//! Property collection for data defined label settings
QgsPropertyCollection mProperties;
QgsPropertyCollection mDataDefinedProperties;
QgsExpression* expression;

View File

@ -149,7 +149,7 @@ void QgsVectorLayerDiagramProvider::drawLabel( QgsRenderContext& context, pal::L
QgsPoint centerPt = xform.transform( outPt.x() - label->getWidth() / 2,
outPt.y() - label->getHeight() / 2 );
mSettings.renderer()->renderDiagram( feature, context, centerPt.toQPointF(), mSettings.properties() );
mSettings.renderer()->renderDiagram( feature, context, centerPt.toQPointF(), mSettings.dataDefinedProperties() );
//insert into label search tree to manipulate position interactively
mEngine->results()->mLabelSearchTree->insertLabel( label, label->getFeaturePart()->featureId(), mLayerId, QString(), QFont(), true, false );
@ -220,11 +220,11 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea
}
// data defined show diagram? check this before doing any other processing
if ( !mSettings.properties().valueAsBool( QgsDiagramLayerSettings::Show, context.expressionContext(), true ) )
if ( !mSettings.dataDefinedProperties().valueAsBool( QgsDiagramLayerSettings::Show, context.expressionContext(), true ) )
return nullptr;
// data defined obstacle?
bool isObstacle = mSettings.properties().valueAsBool( QgsDiagramLayerSettings::IsObstacle, context.expressionContext(), mSettings.isObstacle() );
bool isObstacle = mSettings.dataDefinedProperties().valueAsBool( QgsDiagramLayerSettings::IsObstacle, context.expressionContext(), mSettings.isObstacle() );
//convert geom to geos
QgsGeometry geom = feat.geometry();
@ -280,19 +280,19 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea
// feature to the layer
bool alwaysShow = mSettings.showAllDiagrams();
context.expressionContext().setOriginalValueVariable( alwaysShow );
alwaysShow = mSettings.properties().valueAsBool( QgsDiagramLayerSettings::AlwaysShow, context.expressionContext(), alwaysShow );
alwaysShow = mSettings.dataDefinedProperties().valueAsBool( QgsDiagramLayerSettings::AlwaysShow, context.expressionContext(), alwaysShow );
// new style data defined position
bool ddPos = false;
double ddPosX = 0.0;
double ddPosY = 0.0;
if ( mSettings.properties().hasProperty( QgsDiagramLayerSettings::PositionX )
&& mSettings.properties().property( QgsDiagramLayerSettings::PositionX ).isActive()
&& mSettings.properties().hasProperty( QgsDiagramLayerSettings::PositionY )
&& mSettings.properties().property( QgsDiagramLayerSettings::PositionY ).isActive() )
if ( mSettings.dataDefinedProperties().hasProperty( QgsDiagramLayerSettings::PositionX )
&& mSettings.dataDefinedProperties().property( QgsDiagramLayerSettings::PositionX ).isActive()
&& mSettings.dataDefinedProperties().hasProperty( QgsDiagramLayerSettings::PositionY )
&& mSettings.dataDefinedProperties().property( QgsDiagramLayerSettings::PositionY ).isActive() )
{
ddPosX = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::PositionX, context.expressionContext(), std::numeric_limits<double>::quiet_NaN() );
ddPosY = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::PositionY, context.expressionContext(), std::numeric_limits<double>::quiet_NaN() );
ddPosX = mSettings.dataDefinedProperties().valueAsDouble( QgsDiagramLayerSettings::PositionX, context.expressionContext(), std::numeric_limits<double>::quiet_NaN() );
ddPosY = mSettings.dataDefinedProperties().valueAsDouble( QgsDiagramLayerSettings::PositionY, context.expressionContext(), std::numeric_limits<double>::quiet_NaN() );
ddPos = !qIsNaN( ddPosX ) && !qIsNaN( ddPosY );
@ -329,11 +329,11 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea
}
// data defined priority?
if ( mSettings.properties().hasProperty( QgsDiagramLayerSettings::Priority )
&& mSettings.properties().property( QgsDiagramLayerSettings::Priority ).isActive() )
if ( mSettings.dataDefinedProperties().hasProperty( QgsDiagramLayerSettings::Priority )
&& mSettings.dataDefinedProperties().property( QgsDiagramLayerSettings::Priority ).isActive() )
{
context.expressionContext().setOriginalValueVariable( mSettings.priority() );
double priorityD = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::Priority, context.expressionContext(), mSettings.priority() );
double priorityD = mSettings.dataDefinedProperties().valueAsDouble( QgsDiagramLayerSettings::Priority, context.expressionContext(), mSettings.priority() );
priorityD = qBound( 0.0, priorityD, 10.0 );
priorityD = 1 - priorityD / 10.0; // convert 0..10 --> 1..0
lf->setPriority( priorityD );
@ -341,11 +341,11 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea
// z-Index
double zIndex = mSettings.zIndex();
if ( mSettings.properties().hasProperty( QgsDiagramLayerSettings::ZIndex )
&& mSettings.properties().property( QgsDiagramLayerSettings::ZIndex ).isActive() )
if ( mSettings.dataDefinedProperties().hasProperty( QgsDiagramLayerSettings::ZIndex )
&& mSettings.dataDefinedProperties().property( QgsDiagramLayerSettings::ZIndex ).isActive() )
{
context.expressionContext().setOriginalValueVariable( zIndex );
zIndex = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::ZIndex, context.expressionContext(), zIndex );
zIndex = mSettings.dataDefinedProperties().valueAsDouble( QgsDiagramLayerSettings::ZIndex, context.expressionContext(), zIndex );
}
lf->setZIndex( zIndex );
@ -354,11 +354,11 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea
QgsPoint ptOne = mapSettings.mapToPixel().toMapCoordinates( 1, 0 );
double dist = mSettings.distance();
if ( mSettings.properties().hasProperty( QgsDiagramLayerSettings::Distance )
&& mSettings.properties().property( QgsDiagramLayerSettings::Distance ).isActive() )
if ( mSettings.dataDefinedProperties().hasProperty( QgsDiagramLayerSettings::Distance )
&& mSettings.dataDefinedProperties().property( QgsDiagramLayerSettings::Distance ).isActive() )
{
context.expressionContext().setOriginalValueVariable( dist );
dist = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::Distance, context.expressionContext(), dist );
dist = mSettings.dataDefinedProperties().valueAsDouble( QgsDiagramLayerSettings::Distance, context.expressionContext(), dist );
}
dist *= ptOne.distance( ptZero );

View File

@ -176,9 +176,9 @@ bool QgsVectorLayerLabelProvider::prepare( const QgsRenderContext& context, QSet
attributeNames.insert( lyr.fieldName );
}
lyr.properties().prepare( context.expressionContext() );
lyr.dataDefinedProperties().prepare( context.expressionContext() );
// add field indices of data defined expression or field
attributeNames.unite( lyr.properties().referencedFields( context.expressionContext() ) );
attributeNames.unite( lyr.dataDefinedProperties().referencedFields( context.expressionContext() ) );
}
// NOW INITIALIZE QgsPalLayerSettings

View File

@ -614,49 +614,49 @@ void QgsArrowSymbolLayer::_resolveDataDefined( QgsSymbolRenderContext& context )
QVariant exprVal;
bool ok;
if ( mProperties.isActive( QgsSymbolLayer::PropertyArrowWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyArrowWidth ) )
{
exprVal = mProperties.value( QgsSymbolLayer::PropertyArrowWidth, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyArrowWidth, context.renderContext().expressionContext() );
double w = exprVal.toDouble( &ok );
if ( ok )
{
mScaledArrowWidth = context.renderContext().convertToPainterUnits( w, arrowWidthUnit(), arrowWidthUnitScale() );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyArrowStartWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyArrowStartWidth ) )
{
context.setOriginalValueVariable( arrowStartWidth() );
exprVal = mProperties.value( QgsSymbolLayer::PropertyArrowStartWidth, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyArrowStartWidth, context.renderContext().expressionContext() );
double w = exprVal.toDouble( &ok );
if ( ok )
{
mScaledArrowStartWidth = context.renderContext().convertToPainterUnits( w, arrowStartWidthUnit(), arrowStartWidthUnitScale() );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyArrowHeadLength ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyArrowHeadLength ) )
{
context.setOriginalValueVariable( headLength() );
exprVal = mProperties.value( QgsSymbolLayer::PropertyArrowHeadLength, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyArrowHeadLength, context.renderContext().expressionContext() );
double w = exprVal.toDouble( &ok );
if ( ok )
{
mScaledHeadLength = context.renderContext().convertToPainterUnits( w, headLengthUnit(), headLengthUnitScale() );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyArrowHeadThickness ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyArrowHeadThickness ) )
{
context.setOriginalValueVariable( headThickness() );
exprVal = mProperties.value( QgsSymbolLayer::PropertyArrowHeadThickness, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyArrowHeadThickness, context.renderContext().expressionContext() );
double w = exprVal.toDouble( &ok );
if ( ok )
{
mScaledHeadThickness = context.renderContext().convertToPainterUnits( w, headThicknessUnit(), headThicknessUnitScale() );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
{
context.setOriginalValueVariable( offset() );
exprVal = mProperties.value( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext() );
double w = exprVal.toDouble( &ok );
if ( ok )
{
@ -664,10 +664,10 @@ void QgsArrowSymbolLayer::_resolveDataDefined( QgsSymbolRenderContext& context )
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyArrowHeadType ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyArrowHeadType ) )
{
context.setOriginalValueVariable( headType() );
exprVal = mProperties.value( QgsSymbolLayer::PropertyArrowHeadType, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyArrowHeadType, context.renderContext().expressionContext() );
int h = exprVal.toInt( &ok );
if ( ok )
{
@ -675,10 +675,10 @@ void QgsArrowSymbolLayer::_resolveDataDefined( QgsSymbolRenderContext& context )
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyArrowType ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyArrowType ) )
{
context.setOriginalValueVariable( arrowType() );
exprVal = mProperties.value( QgsSymbolLayer::PropertyArrowType, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyArrowType, context.renderContext().expressionContext() );
int h = exprVal.toInt( &ok );
if ( ok )
{

View File

@ -179,11 +179,11 @@ void QgsEllipseSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContext&
double scaledWidth = mSymbolWidth;
double scaledHeight = mSymbolHeight;
if ( mProperties.hasActiveProperties() )
if ( mDataDefinedProperties.hasActiveProperties() )
{
bool ok;
context.setOriginalValueVariable( mOutlineWidth );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
double width = exprVal.toDouble( &ok );
@ -195,30 +195,30 @@ void QgsEllipseSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContext&
}
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenStyle( mOutlineStyle ) );
exprVal = mProperties.value( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
mPen.setStyle( QgsSymbolLayerUtils::decodePenStyle( exprVal.toString() ) );
}
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenJoinStyle( mPenJoinStyle ) );
exprVal = mProperties.value( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
mPen.setJoinStyle( QgsSymbolLayerUtils::decodePenJoinStyle( exprVal.toString() ) );
}
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
mBrush.setColor( mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor ) );
mBrush.setColor( mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor ) );
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mOutlineColor ) );
mPen.setColor( mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor ) );
mPen.setColor( mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor ) );
if ( mProperties.isActive( QgsSymbolLayer::PropertyWidth ) || mProperties.isActive( QgsSymbolLayer::PropertyHeight ) || mProperties.isActive( QgsSymbolLayer::PropertyName ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyWidth ) || mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyHeight ) || mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) )
{
QString symbolName = mSymbolName;
context.setOriginalValueVariable( mSymbolName );
exprVal = mProperties.value( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext() );
exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
symbolName = exprVal.toString();
@ -268,10 +268,10 @@ void QgsEllipseSymbolLayer::calculateOffsetAndRotation( QgsSymbolRenderContext&
bool ok = true;
angle = mAngle + mLineAngle;
bool usingDataDefinedRotation = false;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( angle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), 0 ) + mLineAngle;
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), 0 ) + mLineAngle;
usingDataDefinedRotation = ok;
}
@ -376,7 +376,7 @@ void QgsEllipseSymbolLayer::writeSldMarker( QDomDocument &doc, QDomElement &elem
QgsSymbolLayerUtils::wellKnownMarkerToSld( doc, graphicElem, mSymbolName, mColor, mOutlineColor, mOutlineStyle, outlineWidth, symbolWidth );
// <Rotation>
QgsProperty ddRotation = mProperties.property( QgsSymbolLayer::PropertyAngle );
QgsProperty ddRotation = mDataDefinedProperties.property( QgsSymbolLayer::PropertyAngle );
QString angleFunc = props.value( QStringLiteral( "angle" ), QLatin1String( "" ) );
if ( angleFunc.isEmpty() ) // symbol has no angle set
@ -506,10 +506,10 @@ QSizeF QgsEllipseSymbolLayer::calculateSize( QgsSymbolRenderContext& context, do
{
double width = 0;
if ( mProperties.isActive( QgsSymbolLayer::PropertyWidth ) ) //1. priority: data defined setting on symbol layer le
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyWidth ) ) //1. priority: data defined setting on symbol layer le
{
context.setOriginalValueVariable( mSymbolWidth );
width = mProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mSymbolWidth );
width = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mSymbolWidth );
}
else //2. priority: global width setting
{
@ -522,10 +522,10 @@ QSizeF QgsEllipseSymbolLayer::calculateSize( QgsSymbolRenderContext& context, do
width = context.renderContext().convertToPainterUnits( width, mSymbolWidthUnit, mSymbolHeightMapUnitScale );
double height = 0;
if ( mProperties.isActive( QgsSymbolLayer::PropertyHeight ) ) //1. priority: data defined setting on symbol layer level
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyHeight ) ) //1. priority: data defined setting on symbol layer level
{
context.setOriginalValueVariable( mSymbolHeight );
height = mProperties.valueAsDouble( QgsSymbolLayer::PropertyHeight, context.renderContext().expressionContext(), mSymbolHeight );
height = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyHeight, context.renderContext().expressionContext(), mSymbolHeight );
}
else //2. priority: global height setting
{
@ -651,10 +651,10 @@ QRectF QgsEllipseSymbolLayer::bounds( QPointF point, QgsSymbolRenderContext& con
transform.rotate( angle );
double penWidth = 0.0;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
@ -666,10 +666,10 @@ QRectF QgsEllipseSymbolLayer::bounds( QPointF point, QgsSymbolRenderContext& con
}
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenStyle( mOutlineStyle ) );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext() );
if ( exprVal.isValid() && exprVal.toString() == QLatin1String( "no" ) )
{
penWidth = 0.0;
@ -696,10 +696,10 @@ bool QgsEllipseSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFact
//width
double symbolWidth = mSymbolWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyWidth ) ) //1. priority: data defined setting on symbol layer le
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyWidth ) ) //1. priority: data defined setting on symbol layer le
{
context.setOriginalValueVariable( mSymbolWidth );
symbolWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mSymbolWidth );
symbolWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mSymbolWidth );
}
if ( mSymbolWidthUnit == QgsUnitTypes::RenderMillimeters )
{
@ -708,10 +708,10 @@ bool QgsEllipseSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFact
//height
double symbolHeight = mSymbolHeight;
if ( mProperties.isActive( QgsSymbolLayer::PropertyHeight ) ) //1. priority: data defined setting on symbol layer level
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyHeight ) ) //1. priority: data defined setting on symbol layer level
{
context.setOriginalValueVariable( mSymbolHeight );
symbolWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyHeight, context.renderContext().expressionContext(), mSymbolHeight );
symbolWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyHeight, context.renderContext().expressionContext(), mSymbolHeight );
}
if ( mSymbolHeightUnit == QgsUnitTypes::RenderMillimeters )
{
@ -721,10 +721,10 @@ bool QgsEllipseSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFact
//outline width
double outlineWidth = mOutlineWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
}
if ( mOutlineWidthUnit == QgsUnitTypes::RenderMillimeters )
{
@ -733,26 +733,26 @@ bool QgsEllipseSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFact
//fill color
QColor fc = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
fc = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
fc = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
}
//outline color
QColor oc = mOutlineColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mOutlineColor ) );
oc = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
oc = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
}
//symbol name
QString symbolName = mSymbolName;
if ( mProperties.isActive( QgsSymbolLayer::PropertyName ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) )
{
context.setOriginalValueVariable( mSymbolName );
symbolName = mProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mSymbolName );
symbolName = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mSymbolName );
}
//offset
@ -763,10 +763,10 @@ bool QgsEllipseSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFact
//priority for rotation: 1. data defined symbol level, 2. symbol layer rotation (mAngle)
double rotation = 0.0;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( mAngle );
rotation = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
rotation = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
}
else if ( !qgsDoubleNear( mAngle + mLineAngle, 0.0 ) )
{

View File

@ -85,27 +85,27 @@ void QgsSimpleFillSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderContext
bool ok;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
brush.setColor( mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor ) );
brush.setColor( mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor ) );
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeBrushStyle( mBrushStyle ) );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyFillStyle, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyFillStyle, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
brush.setStyle( QgsSymbolLayerUtils::decodeBrushStyle( exprVal.toString() ) );
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mBorderColor ) );
pen.setColor( mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mBorderColor ) );
pen.setColor( mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mBorderColor ) );
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mBorderWidth );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext() );
double width = exprVal.toDouble( &ok );
if ( ok )
{
@ -114,20 +114,20 @@ void QgsSimpleFillSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderContext
selPen.setWidthF( width );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenStyle( mBorderStyle ) );
QString style = mProperties.valueAsString( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext(), QString(), &ok );
QString style = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
pen.setStyle( QgsSymbolLayerUtils::decodePenStyle( style ) );
selPen.setStyle( QgsSymbolLayerUtils::decodePenStyle( style ) );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenJoinStyle( mPenJoinStyle ) );
QString style = mProperties.valueAsString( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext(), QString(), &ok );
QString style = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
pen.setJoinStyle( QgsSymbolLayerUtils::decodePenJoinStyle( style ) );
@ -396,10 +396,10 @@ double QgsSimpleFillSymbolLayer::estimateMaxBleed() const
double QgsSimpleFillSymbolLayer::dxfWidth( const QgsDxfExport& e, QgsSymbolRenderContext &context ) const
{
double width = mBorderWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mBorderWidth );
width = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mBorderWidth );
width = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mBorderWidth );
}
return width * e.mapUnitScaleFactor( e.symbologyScaleDenominator(), mBorderWidthUnit, e.mapUnits() );
}
@ -407,10 +407,10 @@ double QgsSimpleFillSymbolLayer::dxfWidth( const QgsDxfExport& e, QgsSymbolRende
QColor QgsSimpleFillSymbolLayer::dxfColor( QgsSymbolRenderContext &context ) const
{
QColor c = mBorderColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mBorderColor ) );
c = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), c );
c = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), c );
}
return c;
}
@ -418,10 +418,10 @@ QColor QgsSimpleFillSymbolLayer::dxfColor( QgsSymbolRenderContext &context ) con
double QgsSimpleFillSymbolLayer::dxfAngle( QgsSymbolRenderContext &context ) const
{
double angle = mAngle;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( mAngle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle );
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle );
}
return angle;
}
@ -434,9 +434,9 @@ Qt::PenStyle QgsSimpleFillSymbolLayer::dxfPenStyle() const
QColor QgsSimpleFillSymbolLayer::dxfBrushColor( QgsSymbolRenderContext& context ) const
{
QColor c = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
c = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), c );
c = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), c );
}
return c;
}
@ -580,33 +580,33 @@ void QgsGradientFillSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderConte
//first gradient color
QColor color = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
color = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
color = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
}
//second gradient color
QColor color2 = mColor2;
if ( mProperties.isActive( QgsSymbolLayer::PropertySecondaryColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySecondaryColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor2 ) );
color2 = mProperties.valueAsColor( QgsSymbolLayer::PropertySecondaryColor, context.renderContext().expressionContext(), mColor2 );
color2 = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertySecondaryColor, context.renderContext().expressionContext(), mColor2 );
}
//gradient rotation angle
double angle = mAngle;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( mAngle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle );
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle );
}
//gradient type
QgsGradientFillSymbolLayer::GradientType gradientType = mGradientType;
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientType ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientType ) )
{
QString currentType = mProperties.valueAsString( QgsSymbolLayer::PropertyGradientType, context.renderContext().expressionContext(), QString(), &ok );
QString currentType = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyGradientType, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
if ( currentType == QObject::tr( "linear" ) )
@ -626,9 +626,9 @@ void QgsGradientFillSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderConte
//coordinate mode
GradientCoordinateMode coordinateMode = mCoordinateMode;
if ( mProperties.isActive( QgsSymbolLayer::PropertyCoordinateMode ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyCoordinateMode ) )
{
QString currentCoordMode = mProperties.valueAsString( QgsSymbolLayer::PropertyCoordinateMode, context.renderContext().expressionContext(), QString(), &ok );
QString currentCoordMode = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyCoordinateMode, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
if ( currentCoordMode == QObject::tr( "feature" ) )
@ -644,9 +644,9 @@ void QgsGradientFillSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderConte
//gradient spread
GradientSpread spread = mGradientSpread;
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientSpread ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientSpread ) )
{
QString currentSpread = mProperties.valueAsString( QgsSymbolLayer::PropertyGradientSpread, context.renderContext().expressionContext(), QString(), &ok );
QString currentSpread = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyGradientSpread, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
if ( currentSpread == QObject::tr( "pad" ) )
@ -666,42 +666,42 @@ void QgsGradientFillSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderConte
//reference point 1 x & y
double refPoint1X = mReferencePoint1.x();
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientReference1X ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientReference1X ) )
{
context.setOriginalValueVariable( refPoint1X );
refPoint1X = mProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference1X, context.renderContext().expressionContext(), refPoint1X );
refPoint1X = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference1X, context.renderContext().expressionContext(), refPoint1X );
}
double refPoint1Y = mReferencePoint1.y();
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientReference1Y ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientReference1Y ) )
{
context.setOriginalValueVariable( refPoint1Y );
refPoint1Y = mProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference1Y, context.renderContext().expressionContext(), refPoint1Y );
refPoint1Y = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference1Y, context.renderContext().expressionContext(), refPoint1Y );
}
bool refPoint1IsCentroid = mReferencePoint1IsCentroid;
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientReference1IsCentroid ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientReference1IsCentroid ) )
{
context.setOriginalValueVariable( refPoint1IsCentroid );
refPoint1IsCentroid = mProperties.valueAsBool( QgsSymbolLayer::PropertyGradientReference1IsCentroid, context.renderContext().expressionContext(), refPoint1IsCentroid );
refPoint1IsCentroid = mDataDefinedProperties.valueAsBool( QgsSymbolLayer::PropertyGradientReference1IsCentroid, context.renderContext().expressionContext(), refPoint1IsCentroid );
}
//reference point 2 x & y
double refPoint2X = mReferencePoint2.x();
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientReference2X ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientReference2X ) )
{
context.setOriginalValueVariable( refPoint2X );
refPoint2X = mProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference2X, context.renderContext().expressionContext(), refPoint2X );
refPoint2X = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference2X, context.renderContext().expressionContext(), refPoint2X );
}
double refPoint2Y = mReferencePoint2.y();
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientReference2Y ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientReference2Y ) )
{
context.setOriginalValueVariable( refPoint2Y );
refPoint2Y = mProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference2Y, context.renderContext().expressionContext(), refPoint2Y );
refPoint2Y = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyGradientReference2Y, context.renderContext().expressionContext(), refPoint2Y );
}
bool refPoint2IsCentroid = mReferencePoint2IsCentroid;
if ( mProperties.isActive( QgsSymbolLayer::PropertyGradientReference2IsCentroid ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyGradientReference2IsCentroid ) )
{
context.setOriginalValueVariable( refPoint2IsCentroid );
refPoint2IsCentroid = mProperties.valueAsBool( QgsSymbolLayer::PropertyGradientReference2IsCentroid, context.renderContext().expressionContext(), refPoint2IsCentroid );
refPoint2IsCentroid = mDataDefinedProperties.valueAsBool( QgsSymbolLayer::PropertyGradientReference2IsCentroid, context.renderContext().expressionContext(), refPoint2IsCentroid );
}
if ( refPoint1IsCentroid || refPoint2IsCentroid )
@ -1067,50 +1067,50 @@ void QgsShapeburstFillSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderCon
{
//first gradient color
color = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
color = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
color = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
}
//second gradient color
color2 = mColor2;
if ( mProperties.isActive( QgsSymbolLayer::PropertySecondaryColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySecondaryColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor2 ) );
color = mProperties.valueAsColor( QgsSymbolLayer::PropertySecondaryColor, context.renderContext().expressionContext(), mColor2 );
color = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertySecondaryColor, context.renderContext().expressionContext(), mColor2 );
}
//blur radius
blurRadius = mBlurRadius;
if ( mProperties.isActive( QgsSymbolLayer::PropertyBlurRadius ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyBlurRadius ) )
{
context.setOriginalValueVariable( mBlurRadius );
blurRadius = mProperties.valueAsInt( QgsSymbolLayer::PropertyBlurRadius, context.renderContext().expressionContext(), mBlurRadius );
blurRadius = mDataDefinedProperties.valueAsInt( QgsSymbolLayer::PropertyBlurRadius, context.renderContext().expressionContext(), mBlurRadius );
}
//use whole shape
useWholeShape = mUseWholeShape;
if ( mProperties.isActive( QgsSymbolLayer::PropertyShapeburstUseWholeShape ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyShapeburstUseWholeShape ) )
{
context.setOriginalValueVariable( mUseWholeShape );
useWholeShape = mProperties.valueAsBool( QgsSymbolLayer::PropertyShapeburstUseWholeShape, context.renderContext().expressionContext(), mUseWholeShape );
useWholeShape = mDataDefinedProperties.valueAsBool( QgsSymbolLayer::PropertyShapeburstUseWholeShape, context.renderContext().expressionContext(), mUseWholeShape );
}
//max distance
maxDistance = mMaxDistance;
if ( mProperties.isActive( QgsSymbolLayer::PropertyShapeburstMaxDistance ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyShapeburstMaxDistance ) )
{
context.setOriginalValueVariable( mMaxDistance );
maxDistance = mProperties.valueAsDouble( QgsSymbolLayer::PropertyShapeburstMaxDistance, context.renderContext().expressionContext(), mMaxDistance );
maxDistance = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyShapeburstMaxDistance, context.renderContext().expressionContext(), mMaxDistance );
}
//ignore rings
ignoreRings = mIgnoreRings;
if ( mProperties.isActive( QgsSymbolLayer::PropertyShapeburstIgnoreRings ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyShapeburstIgnoreRings ) )
{
context.setOriginalValueVariable( mIgnoreRings );
ignoreRings = mProperties.valueAsBool( QgsSymbolLayer::PropertyShapeburstIgnoreRings, context.renderContext().expressionContext(), mIgnoreRings );
ignoreRings = mDataDefinedProperties.valueAsBool( QgsSymbolLayer::PropertyShapeburstIgnoreRings, context.renderContext().expressionContext(), mIgnoreRings );
}
}
@ -1667,10 +1667,10 @@ double QgsImageFillSymbolLayer::estimateMaxBleed() const
double QgsImageFillSymbolLayer::dxfWidth( const QgsDxfExport& e, QgsSymbolRenderContext &context ) const
{
double width = mOutlineWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
width = mProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mOutlineWidth );
width = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mOutlineWidth );
}
return width * e.mapUnitScaleFactor( e.symbologyScaleDenominator(), mOutlineWidthUnit, e.mapUnits() );
}
@ -2159,48 +2159,48 @@ QgsSymbolLayer* QgsSVGFillSymbolLayer::createFromSld( QDomElement &element )
void QgsSVGFillSymbolLayer::applyDataDefinedSettings( QgsSymbolRenderContext &context )
{
if ( !mProperties.isActive( QgsSymbolLayer::PropertyWidth ) && !mProperties.isActive( QgsSymbolLayer::PropertyFile )
&& !mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) && !mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor )
&& !mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) && !mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyWidth ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFile )
&& !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor )
&& !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
return; //no data defined settings
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( mAngle );
mNextAngle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mNextAngle );
mNextAngle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mNextAngle );
}
double width = mPatternWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyWidth ) )
{
context.setOriginalValueVariable( mPatternWidth );
width = mProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mPatternWidth );
width = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), mPatternWidth );
}
QString svgFile = mSvgFilePath;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFile ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFile ) )
{
context.setOriginalValueVariable( mSvgFilePath );
svgFile = mProperties.valueAsString( QgsSymbolLayer::PropertyFile, context.renderContext().expressionContext(), mSvgFilePath );
svgFile = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyFile, context.renderContext().expressionContext(), mSvgFilePath );
}
QColor svgFillColor = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
svgFillColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
svgFillColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
}
QColor svgOutlineColor = mSvgOutlineColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mSvgOutlineColor ) );
svgOutlineColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mSvgOutlineColor );
svgOutlineColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mSvgOutlineColor );
}
double outlineWidth = mSvgOutlineWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mSvgOutlineWidth );
outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mSvgOutlineWidth );
outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mSvgOutlineWidth );
}
applyPattern( mBrush, svgFile, width, mPatternWidthUnit, svgFillColor, svgOutlineColor, outlineWidth,
mSvgOutlineWidthUnit, context, mPatternWidthMapUnitScale, mSvgOutlineWidthMapUnitScale );
@ -2885,23 +2885,23 @@ QString QgsLinePatternFillSymbolLayer::ogrFeatureStyleWidth( double widthScaleFa
void QgsLinePatternFillSymbolLayer::applyDataDefinedSettings( QgsSymbolRenderContext &context )
{
if ( !mProperties.isActive( QgsSymbolLayer::PropertyLineAngle ) && !mProperties.isActive( QgsSymbolLayer::PropertyLineDistance )
if ( !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyLineAngle ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyLineDistance )
&& ( !mFillLineSymbol || !mFillLineSymbol->hasDataDefinedProperties() ) )
{
return; //no data defined settings
}
double lineAngle = mLineAngle;
if ( mProperties.isActive( QgsSymbolLayer::PropertyLineAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyLineAngle ) )
{
context.setOriginalValueVariable( mLineAngle );
lineAngle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyLineAngle, context.renderContext().expressionContext(), mLineAngle );
lineAngle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyLineAngle, context.renderContext().expressionContext(), mLineAngle );
}
double distance = mDistance;
if ( mProperties.isActive( QgsSymbolLayer::PropertyLineDistance ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyLineDistance ) )
{
context.setOriginalValueVariable( mDistance );
distance = mProperties.valueAsDouble( QgsSymbolLayer::PropertyLineDistance, context.renderContext().expressionContext(), mDistance );
distance = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyLineDistance, context.renderContext().expressionContext(), mDistance );
}
applyPattern( context, mBrush, lineAngle, distance );
}
@ -3296,36 +3296,36 @@ bool QgsPointPatternFillSymbolLayer::setSubSymbol( QgsSymbol* symbol )
void QgsPointPatternFillSymbolLayer::applyDataDefinedSettings( QgsSymbolRenderContext &context )
{
if ( !mProperties.isActive( QgsSymbolLayer::PropertyDistanceX ) && !mProperties.isActive( QgsSymbolLayer::PropertyDistanceY )
&& !mProperties.isActive( QgsSymbolLayer::PropertyDisplacementX ) && !mProperties.isActive( QgsSymbolLayer::PropertyDisplacementY )
if ( !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDistanceX ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDistanceY )
&& !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDisplacementX ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDisplacementY )
&& ( !mMarkerSymbol || !mMarkerSymbol->hasDataDefinedProperties() ) )
{
return;
}
double distanceX = mDistanceX;
if ( mProperties.isActive( QgsSymbolLayer::PropertyDistanceX ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDistanceX ) )
{
context.setOriginalValueVariable( mDistanceX );
distanceX = mProperties.valueAsDouble( QgsSymbolLayer::PropertyDistanceX, context.renderContext().expressionContext(), mDistanceX );
distanceX = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyDistanceX, context.renderContext().expressionContext(), mDistanceX );
}
double distanceY = mDistanceY;
if ( mProperties.isActive( QgsSymbolLayer::PropertyDistanceY ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDistanceY ) )
{
context.setOriginalValueVariable( mDistanceY );
distanceY = mProperties.valueAsDouble( QgsSymbolLayer::PropertyDistanceY, context.renderContext().expressionContext(), mDistanceY );
distanceY = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyDistanceY, context.renderContext().expressionContext(), mDistanceY );
}
double displacementX = mDisplacementX;
if ( mProperties.isActive( QgsSymbolLayer::PropertyDisplacementX ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDisplacementX ) )
{
context.setOriginalValueVariable( mDisplacementX );
displacementX = mProperties.valueAsDouble( QgsSymbolLayer::PropertyDisplacementX, context.renderContext().expressionContext(), mDisplacementX );
displacementX = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyDisplacementX, context.renderContext().expressionContext(), mDisplacementX );
}
double displacementY = mDisplacementY;
if ( mProperties.isActive( QgsSymbolLayer::PropertyDisplacementY ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyDisplacementY ) )
{
context.setOriginalValueVariable( mDisplacementY );
displacementY = mProperties.valueAsDouble( QgsSymbolLayer::PropertyDisplacementY, context.renderContext().expressionContext(), mDisplacementY );
displacementY = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyDisplacementY, context.renderContext().expressionContext(), mDisplacementY );
}
applyPattern( context, mBrush, distanceX, distanceY, displacementX, displacementY );
}
@ -3757,10 +3757,10 @@ void QgsRasterFillSymbolLayer::applyDataDefinedSettings( QgsSymbolRenderContext
if ( !dataDefinedProperties().hasActiveProperties() )
return; // shortcut
bool hasWidthExpression = mProperties.isActive( QgsSymbolLayer::PropertyWidth );
bool hasFileExpression = mProperties.isActive( QgsSymbolLayer::PropertyFile );
bool hasAlphaExpression = mProperties.isActive( QgsSymbolLayer::PropertyAlpha );
bool hasAngleExpression = mProperties.isActive( QgsSymbolLayer::PropertyAngle );
bool hasWidthExpression = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyWidth );
bool hasFileExpression = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFile );
bool hasAlphaExpression = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAlpha );
bool hasAngleExpression = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle );
if ( !hasWidthExpression && !hasAngleExpression && !hasAlphaExpression && !hasFileExpression )
{
@ -3771,7 +3771,7 @@ void QgsRasterFillSymbolLayer::applyDataDefinedSettings( QgsSymbolRenderContext
if ( hasAngleExpression )
{
context.setOriginalValueVariable( mAngle );
double nextAngle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), 0, &ok );
double nextAngle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), 0, &ok );
if ( ok )
mNextAngle = nextAngle;
}
@ -3785,19 +3785,19 @@ void QgsRasterFillSymbolLayer::applyDataDefinedSettings( QgsSymbolRenderContext
if ( hasWidthExpression )
{
context.setOriginalValueVariable( mWidth );
width = mProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), width );
width = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyWidth, context.renderContext().expressionContext(), width );
}
double alpha = mAlpha;
if ( hasAlphaExpression )
{
context.setOriginalValueVariable( mAlpha );
alpha = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAlpha, context.renderContext().expressionContext(), alpha );
alpha = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAlpha, context.renderContext().expressionContext(), alpha );
}
QString file = mImageFilePath;
if ( hasFileExpression )
{
context.setOriginalValueVariable( mImageFilePath );
file = mProperties.valueAsString( QgsSymbolLayer::PropertyFile, context.renderContext().expressionContext(), file );
file = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyFile, context.renderContext().expressionContext(), file );
}
applyPattern( mBrush, file, width, alpha, context );
}

View File

@ -478,11 +478,11 @@ void QgsSimpleLineSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderContext
//data defined properties
bool hasStrokeWidthExpression = false;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mWidth );
double scaledWidth = context.renderContext().convertToPainterUnits(
mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mWidth ),
mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mWidth ),
mWidthUnit, mWidthMapUnitScale );
pen.setWidthF( scaledWidth );
selPen.setWidthF( scaledWidth );
@ -490,21 +490,21 @@ void QgsSimpleLineSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderContext
}
//color
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
pen.setColor( mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mColor ) );
pen.setColor( mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mColor ) );
}
//offset
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
{
context.setOriginalValueVariable( mOffset );
offset = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), offset );
offset = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), offset );
}
//dash dot vector
if ( mProperties.isActive( QgsSymbolLayer::PropertyCustomDash ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyCustomDash ) )
{
double scaledWidth = context.renderContext().convertToPainterUnits( mWidth, mWidthUnit, mWidthMapUnitScale );
double dashWidthDiv = mPen.widthF();
@ -525,7 +525,7 @@ void QgsSimpleLineSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderContext
}
QVector<qreal> dashVector;
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyCustomDash, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyCustomDash, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
QStringList dashList = exprVal.toString().split( ';' );
@ -539,28 +539,28 @@ void QgsSimpleLineSymbolLayer::applyDataDefinedSymbology( QgsSymbolRenderContext
}
//line style
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenStyle( mPenStyle ) );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
pen.setStyle( QgsSymbolLayerUtils::decodePenStyle( exprVal.toString() ) );
}
//join style
if ( mProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenJoinStyle( mPenJoinStyle ) );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
pen.setJoinStyle( QgsSymbolLayerUtils::decodePenJoinStyle( exprVal.toString() ) );
}
//cap style
if ( mProperties.isActive( QgsSymbolLayer::PropertyCapStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyCapStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenCapStyle( mPenCapStyle ) );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyCapStyle, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyCapStyle, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
pen.setCapStyle( QgsSymbolLayerUtils::decodePenCapStyle( exprVal.toString() ) );
}
@ -594,10 +594,10 @@ double QgsSimpleLineSymbolLayer::dxfWidth( const QgsDxfExport& e, QgsSymbolRende
{
double width = mWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mWidth );
width = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mWidth )
width = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mWidth )
* e.mapUnitScaleFactor( e.symbologyScaleDenominator(), widthUnit(), e.mapUnits() );
}
@ -606,10 +606,10 @@ double QgsSimpleLineSymbolLayer::dxfWidth( const QgsDxfExport& e, QgsSymbolRende
QColor QgsSimpleLineSymbolLayer::dxfColor( QgsSymbolRenderContext& context ) const
{
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
return mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mColor );
return mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mColor );
}
return mColor;
}
@ -619,10 +619,10 @@ double QgsSimpleLineSymbolLayer::dxfOffset( const QgsDxfExport& e, QgsSymbolRend
Q_UNUSED( e );
double offset = mOffset;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
{
context.setOriginalValueVariable( mOffset );
offset = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), mOffset );
offset = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), mOffset );
}
return offset;
}
@ -819,17 +819,17 @@ void QgsMarkerLineSymbolLayer::renderPolyline( const QPolygonF& points, QgsSymbo
{
double offset = mOffset;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
{
context.setOriginalValueVariable( mOffset );
offset = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), mOffset );
offset = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), mOffset );
}
Placement placement = mPlacement;
if ( mProperties.isActive( QgsSymbolLayer::PropertyPlacement ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyPlacement ) )
{
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyPlacement, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyPlacement, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
QString placementString = exprVal.toString();
@ -931,20 +931,20 @@ void QgsMarkerLineSymbolLayer::renderPolylineInterval( const QPolygonF& points,
QgsExpressionContextScope* scope = new QgsExpressionContextScope();
context.renderContext().expressionContext().appendScope( scope );
if ( mProperties.isActive( QgsSymbolLayer::PropertyInterval ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyInterval ) )
{
context.setOriginalValueVariable( mInterval );
interval = mProperties.valueAsDouble( QgsSymbolLayer::PropertyInterval, context.renderContext().expressionContext(), mInterval );
interval = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyInterval, context.renderContext().expressionContext(), mInterval );
}
if ( interval <= 0 )
{
interval = 0.1;
}
double offsetAlongLine = mOffsetAlongLine;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffsetAlongLine ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffsetAlongLine ) )
{
context.setOriginalValueVariable( mOffsetAlongLine );
offsetAlongLine = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOffsetAlongLine, context.renderContext().expressionContext(), mOffsetAlongLine );
offsetAlongLine = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOffsetAlongLine, context.renderContext().expressionContext(), mOffsetAlongLine );
}
double painterUnitInterval = rc.convertToPainterUnits( interval, mIntervalUnit, mIntervalMapUnitScale );
@ -1018,10 +1018,10 @@ void QgsMarkerLineSymbolLayer::renderPolylineVertex( const QPolygonF& points, Qg
scope->addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_GEOMETRY_POINT_COUNT, points.size(), true ) );
double offsetAlongLine = mOffsetAlongLine;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffsetAlongLine ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffsetAlongLine ) )
{
context.setOriginalValueVariable( mOffsetAlongLine );
offsetAlongLine = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOffsetAlongLine, context.renderContext().expressionContext(), mOffsetAlongLine );
offsetAlongLine = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOffsetAlongLine, context.renderContext().expressionContext(), mOffsetAlongLine );
}
if ( !qgsDoubleNear( offsetAlongLine, 0.0 ) )
{

View File

@ -131,8 +131,8 @@ bool QgsSimpleMarkerSymbolLayerBase::shapeIsFilled( QgsSimpleMarkerSymbolLayerBa
void QgsSimpleMarkerSymbolLayerBase::startRender( QgsSymbolRenderContext &context )
{
bool hasDataDefinedRotation = context.renderHints() & QgsSymbol::DynamicRotation
|| mProperties.isActive( QgsSymbolLayer::PropertyAngle );
bool hasDataDefinedSize = mProperties.isActive( QgsSymbolLayer::PropertySize );
|| mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle );
bool hasDataDefinedSize = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySize );
// use either QPolygonF or QPainterPath for drawing
if ( !prepareMarkerShape( mShape ) ) // drawing as a polygon
@ -192,10 +192,10 @@ void QgsSimpleMarkerSymbolLayerBase::renderPoint( QPointF point, QgsSymbolRender
bool createdNewPath = false;
bool ok = true;
Shape symbol = mShape;
if ( mProperties.isActive( QgsSymbolLayer::PropertyName ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) )
{
context.setOriginalValueVariable( encodeShape( symbol ) );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
Shape decoded = decodeShape( exprVal.toString(), &ok );
@ -611,13 +611,13 @@ double QgsSimpleMarkerSymbolLayerBase::calculateSize( QgsSymbolRenderContext &co
{
double scaledSize = mSize;
hasDataDefinedSize = mProperties.isActive( QgsSymbolLayer::PropertySize );
hasDataDefinedSize = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySize );
bool ok = true;
if ( hasDataDefinedSize )
{
context.setOriginalValueVariable( mSize );
scaledSize = mProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(),
mSize, &ok );
scaledSize = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(),
mSize, &ok );
}
if ( hasDataDefinedSize && ok )
@ -647,10 +647,10 @@ void QgsSimpleMarkerSymbolLayerBase::calculateOffsetAndRotation( QgsSymbolRender
bool ok = true;
angle = mAngle + mLineAngle;
bool usingDataDefinedRotation = false;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( angle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle, &ok ) + mLineAngle;
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle, &ok ) + mLineAngle;
usingDataDefinedRotation = ok;
}
@ -823,16 +823,16 @@ void QgsSimpleMarkerSymbolLayer::startRender( QgsSymbolRenderContext& context )
mSelPen.setStyle( mOutlineStyle );
mSelPen.setWidthF( context.renderContext().convertToPainterUnits( mOutlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale ) );
bool hasDataDefinedRotation = context.renderHints() & QgsSymbol::DynamicRotation || mProperties.isActive( QgsSymbolLayer::PropertyAngle );
bool hasDataDefinedSize = mProperties.isActive( QgsSymbolLayer::PropertySize );
bool hasDataDefinedRotation = context.renderHints() & QgsSymbol::DynamicRotation || mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle );
bool hasDataDefinedSize = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySize );
// use caching only when:
// - size, rotation, shape, color, border color is not data-defined
// - drawing to screen (not printer)
mUsingCache = !hasDataDefinedRotation && !hasDataDefinedSize && !context.renderContext().forceVectorOutput()
&& !mProperties.isActive( QgsSymbolLayer::PropertyName ) && !mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) && !mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor )
&& !mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) && !mProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle )
&& !mProperties.isActive( QgsSymbolLayer::PropertyJoinStyle );
&& !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor )
&& !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) && !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle )
&& !mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyJoinStyle );
if ( !shapeIsFilled( mShape ) )
{
@ -931,47 +931,47 @@ void QgsSimpleMarkerSymbolLayer::draw( QgsSymbolRenderContext &context, QgsSimpl
}
bool ok = true;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
QColor c = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor, &ok );
QColor c = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor, &ok );
if ( ok )
mBrush.setColor( c );
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mBorderColor ) );
QColor c = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mColor, &ok );
QColor c = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mColor, &ok );
if ( ok )
{
mPen.setColor( c );
mSelPen.setColor( c );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
double outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), 0, &ok );
double outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), 0, &ok );
if ( ok )
{
mPen.setWidthF( context.renderContext().convertToPainterUnits( outlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale ) );
mSelPen.setWidthF( context.renderContext().convertToPainterUnits( outlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale ) );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenStyle( mOutlineStyle ) );
QString outlineStyle = mProperties.valueAsString( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext(), QString(), &ok );
QString outlineStyle = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
mPen.setStyle( QgsSymbolLayerUtils::decodePenStyle( outlineStyle ) );
mSelPen.setStyle( QgsSymbolLayerUtils::decodePenStyle( outlineStyle ) );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenJoinStyle( mPenJoinStyle ) );
QString style = mProperties.valueAsString( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext(), QString(), &ok );
QString style = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
mPen.setJoinStyle( QgsSymbolLayerUtils::decodePenJoinStyle( style ) );
@ -1222,14 +1222,14 @@ bool QgsSimpleMarkerSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScal
//data defined size?
double size = mSize;
bool hasDataDefinedSize = mProperties.isActive( QgsSymbolLayer::PropertySize );
bool hasDataDefinedSize = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySize );
//data defined size
bool ok = true;
if ( hasDataDefinedSize )
{
context.setOriginalValueVariable( mSize );
size = mProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
size = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
if ( ok )
{
@ -1254,10 +1254,10 @@ bool QgsSimpleMarkerSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScal
//outlineWidth
double outlineWidth = mOutlineWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
}
if ( mSizeUnit == QgsUnitTypes::RenderMillimeters )
{
@ -1267,15 +1267,15 @@ bool QgsSimpleMarkerSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScal
//color
QColor pc = mPen.color();
QColor bc = mBrush.color();
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
bc = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), bc );
bc = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), bc );
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mBorderColor ) );
pc = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), pc );
pc = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), pc );
}
//offset
@ -1287,17 +1287,17 @@ bool QgsSimpleMarkerSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScal
//angle
double angle = mAngle + mLineAngle;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( mAngle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
}
Shape shape = mShape;
if ( mProperties.isActive( QgsSymbolLayer::PropertyName ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) )
{
context.setOriginalValueVariable( encodeShape( shape ) );
QString shapeName = mProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), QString(), &ok );
QString shapeName = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
shape = decodeShape( shapeName, &ok );
@ -1439,19 +1439,19 @@ QRectF QgsSimpleMarkerSymbolLayer::bounds( QPointF point, QgsSymbolRenderContext
// need to account for outline width
double penWidth = 0.0;
bool ok = true;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
double outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth, &ok );
double outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth, &ok );
if ( ok )
{
penWidth = context.renderContext().convertToPainterUnits( outlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenStyle( mOutlineStyle ) );
QString outlineStyle = mProperties.valueAsString( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext(), QString(), &ok );
QString outlineStyle = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyOutlineStyle, context.renderContext().expressionContext(), QString(), &ok );
if ( ok && outlineStyle == QLatin1String( "no" ) )
{
penWidth = 0.0;
@ -1922,32 +1922,32 @@ void QgsSvgMarkerSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContext
p->rotate( angle );
QString path = mPath;
if ( mProperties.isActive( QgsSymbolLayer::PropertyName ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) )
{
context.setOriginalValueVariable( mPath );
path = mProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mPath );
path = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mPath );
}
double outlineWidth = mOutlineWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
}
outlineWidth = context.renderContext().convertToPainterUnits( outlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale );
QColor fillColor = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
fillColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
fillColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
}
QColor outlineColor = mOutlineColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mOutlineColor ) );
outlineColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
outlineColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
}
bool fitsInCache = true;
@ -2023,13 +2023,13 @@ void QgsSvgMarkerSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContext
double QgsSvgMarkerSymbolLayer::calculateSize( QgsSymbolRenderContext& context, bool& hasDataDefinedSize ) const
{
double scaledSize = mSize;
hasDataDefinedSize = mProperties.isActive( QgsSymbolLayer::PropertySize );
hasDataDefinedSize = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySize );
bool ok = true;
if ( hasDataDefinedSize )
{
context.setOriginalValueVariable( mSize );
scaledSize = mProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
scaledSize = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
}
if ( hasDataDefinedSize && ok )
@ -2056,13 +2056,13 @@ void QgsSvgMarkerSymbolLayer::calculateOffsetAndRotation( QgsSymbolRenderContext
offset = QPointF( offsetX, offsetY );
angle = mAngle + mLineAngle;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( mAngle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
}
bool hasDataDefinedRotation = context.renderHints() & QgsSymbol::DynamicRotation || mProperties.isActive( QgsSymbolLayer::PropertyAngle );
bool hasDataDefinedRotation = context.renderHints() & QgsSymbol::DynamicRotation || mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle );
if ( hasDataDefinedRotation )
{
// For non-point markers, "dataDefinedRotation" means following the
@ -2238,13 +2238,13 @@ bool QgsSvgMarkerSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
//size
double size = mSize;
bool hasDataDefinedSize = mProperties.isActive( QgsSymbolLayer::PropertySize );
bool hasDataDefinedSize = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySize );
bool ok = true;
if ( hasDataDefinedSize )
{
context.setOriginalValueVariable( mSize );
size = mProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
size = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
}
if ( hasDataDefinedSize && ok )
@ -2269,10 +2269,10 @@ bool QgsSvgMarkerSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
//offset, angle
QPointF offset = mOffset;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePoint( mOffset ) );
QString offsetString = mProperties.valueAsString( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), QString(), &ok );
QString offsetString = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
offset = QgsSymbolLayerUtils::decodePoint( offsetString );
}
@ -2287,42 +2287,42 @@ bool QgsSvgMarkerSymbolLayer::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
QPointF outputOffset( offsetX, offsetY );
double angle = mAngle + mLineAngle;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( mAngle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle ) + mLineAngle;
}
//angle = -angle; //rotation in Qt is counterclockwise
if ( angle )
outputOffset = _rotatedOffset( outputOffset, angle );
QString path = mPath;
if ( mProperties.isActive( QgsSymbolLayer::PropertyName ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) )
{
context.setOriginalValueVariable( mPath );
path = mProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mPath );
path = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mPath );
}
double outlineWidth = mOutlineWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
}
outlineWidth = context.renderContext().convertToPainterUnits( outlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale );
QColor fillColor = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
fillColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
fillColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
}
QColor outlineColor = mOutlineColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mOutlineColor ) );
fillColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
fillColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
}
const QByteArray &svgContent = QgsApplication::svgCache()->svgContent( path, size, fillColor, outlineColor, outlineWidth,
@ -2373,33 +2373,33 @@ QRectF QgsSvgMarkerSymbolLayer::bounds( QPointF point, QgsSymbolRenderContext& c
calculateOffsetAndRotation( context, scaledSize, outputOffset, angle );
QString path = mPath;
if ( mProperties.isActive( QgsSymbolLayer::PropertyName ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyName ) )
{
context.setOriginalValueVariable( mPath );
path = mProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mPath );
path = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyName, context.renderContext().expressionContext(), mPath );
}
double outlineWidth = mOutlineWidth;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth );
}
outlineWidth = context.renderContext().convertToPainterUnits( outlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale );
//need to get colors to take advantage of cached SVGs
QColor fillColor = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
fillColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
fillColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), mColor );
}
QColor outlineColor = mOutlineColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mOutlineColor ) );
fillColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
fillColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), mOutlineColor );
}
QSizeF svgViewbox = QgsApplication::svgCache()->svgViewboxSize( path, scaledSize, fillColor, outlineColor, outlineWidth,
@ -2544,10 +2544,10 @@ QString QgsFontMarkerSymbolLayer::characterToRender( QgsSymbolRenderContext& con
{
charOffset = mChrOffset;
QString charToRender = mChr;
if ( mProperties.isActive( QgsSymbolLayer::PropertyCharacter ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyCharacter ) )
{
context.setOriginalValueVariable( mChr );
charToRender = mProperties.valueAsString( QgsSymbolLayer::PropertyCharacter, context.renderContext().expressionContext(), mChr );
charToRender = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyCharacter, context.renderContext().expressionContext(), mChr );
if ( charToRender != mChr )
{
charWidth = mFontMetrics->width( charToRender );
@ -2573,10 +2573,10 @@ void QgsFontMarkerSymbolLayer::calculateOffsetAndRotation( QgsSymbolRenderContex
bool ok = true;
angle = mAngle + mLineAngle;
bool usingDataDefinedRotation = false;
if ( mProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyAngle ) )
{
context.setOriginalValueVariable( angle );
angle = mProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle, &ok ) + mLineAngle;
angle = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyAngle, context.renderContext().expressionContext(), mAngle, &ok ) + mLineAngle;
usingDataDefinedRotation = ok;
}
@ -2606,13 +2606,13 @@ void QgsFontMarkerSymbolLayer::calculateOffsetAndRotation( QgsSymbolRenderContex
double QgsFontMarkerSymbolLayer::calculateSize( QgsSymbolRenderContext& context )
{
double scaledSize = mSize;
bool hasDataDefinedSize = mProperties.isActive( QgsSymbolLayer::PropertySize );
bool hasDataDefinedSize = mDataDefinedProperties.isActive( QgsSymbolLayer::PropertySize );
bool ok = true;
if ( hasDataDefinedSize )
{
context.setOriginalValueVariable( mSize );
scaledSize = mProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
scaledSize = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertySize, context.renderContext().expressionContext(), mSize, &ok );
}
if ( hasDataDefinedSize && ok )
@ -2639,38 +2639,38 @@ void QgsFontMarkerSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContex
bool ok;
QColor brushColor = mColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyFillColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mColor ) );
brushColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), brushColor );
brushColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyFillColor, context.renderContext().expressionContext(), brushColor );
}
brushColor = context.selected() ? context.renderContext().selectionColor() : brushColor;
brushColor.setAlphaF( brushColor.alphaF() * context.alpha() );
mBrush.setColor( brushColor );
QColor penColor = mOutlineColor;
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineColor ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodeColor( mOutlineColor ) );
penColor = mProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), penColor );
penColor = mDataDefinedProperties.valueAsColor( QgsSymbolLayer::PropertyOutlineColor, context.renderContext().expressionContext(), penColor );
}
penColor.setAlphaF( penColor.alphaF() * context.alpha() );
double penWidth = context.renderContext().convertToPainterUnits( mOutlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale );
if ( mProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOutlineWidth ) )
{
context.setOriginalValueVariable( mOutlineWidth );
double outlineWidth = mProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth, &ok );
double outlineWidth = mDataDefinedProperties.valueAsDouble( QgsSymbolLayer::PropertyOutlineWidth, context.renderContext().expressionContext(), mOutlineWidth, &ok );
if ( ok )
{
penWidth = context.renderContext().convertToPainterUnits( outlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyJoinStyle ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePenJoinStyle( mPenJoinStyle ) );
QString style = mProperties.valueAsString( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext(), QString(), &ok );
QString style = mDataDefinedProperties.valueAsString( QgsSymbolLayer::PropertyJoinStyle, context.renderContext().expressionContext(), QString(), &ok );
if ( ok )
{
mPen.setJoinStyle( QgsSymbolLayerUtils::decodePenJoinStyle( style ) );

View File

@ -172,7 +172,7 @@ QgsSymbolLayer::QgsSymbolLayer( QgsSymbol::SymbolType type, bool locked )
void QgsSymbolLayer::prepareExpressions( const QgsSymbolRenderContext& context )
{
mProperties.prepare( context.renderContext().expressionContext() );
mDataDefinedProperties.prepare( context.renderContext().expressionContext() );
if ( !context.fields().isEmpty() )
{
@ -196,7 +196,7 @@ bool QgsSymbolLayer::isCompatibleWithSymbol( QgsSymbol* symbol ) const
QSet<QString> QgsSymbolLayer::usedAttributes( const QgsRenderContext& context ) const
{
QSet<QString> columns = mProperties.referencedFields( context.expressionContext() );
QSet<QString> columns = mDataDefinedProperties.referencedFields( context.expressionContext() );
return columns;
}
@ -351,7 +351,7 @@ void QgsSymbolLayer::copyDataDefinedProperties( QgsSymbolLayer* destLayer ) cons
if ( !destLayer )
return;
destLayer->setDataDefinedProperties( mProperties );
destLayer->setDataDefinedProperties( mDataDefinedProperties );
}
void QgsSymbolLayer::copyPaintEffect( QgsSymbolLayer *destLayer ) const
@ -429,10 +429,10 @@ void QgsMarkerSymbolLayer::markerOffset( QgsSymbolRenderContext& context, double
offsetX = mOffset.x();
offsetY = mOffset.y();
if ( mProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyOffset ) )
{
context.setOriginalValueVariable( QgsSymbolLayerUtils::encodePoint( mOffset ) );
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyOffset, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
QPointF offset = QgsSymbolLayerUtils::decodePoint( exprVal.toString() );
@ -446,17 +446,17 @@ void QgsMarkerSymbolLayer::markerOffset( QgsSymbolRenderContext& context, double
HorizontalAnchorPoint horizontalAnchorPoint = mHorizontalAnchorPoint;
VerticalAnchorPoint verticalAnchorPoint = mVerticalAnchorPoint;
if ( mProperties.isActive( QgsSymbolLayer::PropertyHorizontalAnchor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyHorizontalAnchor ) )
{
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyHorizontalAnchor, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyHorizontalAnchor, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
horizontalAnchorPoint = decodeHorizontalAnchorPoint( exprVal.toString() );
}
}
if ( mProperties.isActive( QgsSymbolLayer::PropertyVerticalAnchor ) )
if ( mDataDefinedProperties.isActive( QgsSymbolLayer::PropertyVerticalAnchor ) )
{
QVariant exprVal = mProperties.value( QgsSymbolLayer::PropertyVerticalAnchor, context.renderContext().expressionContext() );
QVariant exprVal = mDataDefinedProperties.value( QgsSymbolLayer::PropertyVerticalAnchor, context.renderContext().expressionContext() );
if ( exprVal.isValid() )
{
verticalAnchorPoint = decodeVerticalAnchorPoint( exprVal.toString() );

View File

@ -292,20 +292,20 @@ class CORE_EXPORT QgsSymbolLayer
* @note added in QGIS 3.0
* @see setProperties()
*/
QgsPropertyCollection& dataDefinedProperties() { return mProperties; }
QgsPropertyCollection& dataDefinedProperties() { return mDataDefinedProperties; }
/** Returns a reference to the symbol layer's property collection, used for data defined overrides.
* @note added in QGIS 3.0
* @see setProperties()
*/
const QgsPropertyCollection& dataDefinedProperties() const { return mProperties; }
const QgsPropertyCollection& dataDefinedProperties() const { return mDataDefinedProperties; }
/** Sets the symbol layer's property collection, used for data defined overrides.
* @param collection property collection. Existing properties will be replaced.
* @note added in QGIS 3.0
* @see properties()
*/
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mProperties = collection; }
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mDataDefinedProperties = collection; }
protected:
QgsSymbolLayer( QgsSymbol::SymbolType type, bool locked = false );
@ -319,7 +319,7 @@ class CORE_EXPORT QgsSymbolLayer
QColor mColor;
int mRenderingPass;
QgsPropertyCollection mProperties;
QgsPropertyCollection mDataDefinedProperties;
QgsPaintEffect* mPaintEffect;
QgsFields mFields;

View File

@ -244,8 +244,8 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( true );
//Set data defined position
dls.properties().setProperty( QgsDiagramLayerSettings::PositionX, QgsProperty::fromExpression( "$x + -5", true ) );
dls.properties().setProperty( QgsDiagramLayerSettings::PositionY, QgsProperty::fromExpression( "$y + 5", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::PositionX, QgsProperty::fromExpression( "$x + -5", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::PositionY, QgsProperty::fromExpression( "$y + 5", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -281,8 +281,8 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( true );
//setup data defined outline
dls.properties().setProperty( QgsDiagramLayerSettings::OutlineColor, QgsProperty::fromExpression( "if(\"Pilots\">1,'0,0,0,255','255,0,0,255')", true ) );
dls.properties().setProperty( QgsDiagramLayerSettings::OutlineWidth, QgsProperty::fromExpression( "\"Staff\" / 2.0", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::OutlineColor, QgsProperty::fromExpression( "if(\"Pilots\">1,'0,0,0,255','255,0,0,255')", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::OutlineWidth, QgsProperty::fromExpression( "\"Staff\" / 2.0", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -318,7 +318,7 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( true );
//setup data defined start angle
dls.properties().setProperty( QgsDiagramLayerSettings::StartAngle, QgsProperty::fromExpression( "\"Importance\"/20.0 * 360.0", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::StartAngle, QgsProperty::fromExpression( "\"Importance\"/20.0 * 360.0", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -354,7 +354,7 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( true );
//setup data defined distance
dls.properties().setProperty( QgsDiagramLayerSettings::Distance, QgsProperty::fromExpression( "\"Staff\"*2", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::Distance, QgsProperty::fromExpression( "\"Staff\"*2", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -390,7 +390,7 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( true );
//setup data defined show
dls.properties().setProperty( QgsDiagramLayerSettings::Show, QgsProperty::fromExpression( "\"Pilots\"=1", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::Show, QgsProperty::fromExpression( "\"Pilots\"=1", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -426,7 +426,7 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( false );
//setup data defined priority
dls.properties().setProperty( QgsDiagramLayerSettings::Priority, QgsProperty::fromExpression( "\"importance\"/2", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::Priority, QgsProperty::fromExpression( "\"importance\"/2", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -460,7 +460,7 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( true );
//setup data defined z index
dls.properties().setProperty( QgsDiagramLayerSettings::ZIndex, QgsProperty::fromExpression( "\"importance\"/2", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::ZIndex, QgsProperty::fromExpression( "\"importance\"/2", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -496,9 +496,9 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( false );
//setup data defined priority (required to only show certain diagrams)
dls.properties().setProperty( QgsDiagramLayerSettings::Priority, QgsProperty::fromExpression( "\"importance\"/2", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::Priority, QgsProperty::fromExpression( "\"importance\"/2", true ) );
//setup data defined "always show"
dls.properties().setProperty( QgsDiagramLayerSettings::AlwaysShow, QgsProperty::fromExpression( "\"Staff\">=6", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::AlwaysShow, QgsProperty::fromExpression( "\"Staff\">=6", true ) );
mPointsLayer->setDiagramLayerSettings( dls );
@ -537,7 +537,7 @@ class TestQgsDiagram : public QObject
dls.setShowAllDiagrams( true );
//setup data defined outline
dls.properties().setProperty( QgsDiagramLayerSettings::BackgroundColor, QgsProperty::fromExpression( "if(\"Pilots\">1,'0,0,255,150','255,0,0,150')", true ) );
dls.dataDefinedProperties().setProperty( QgsDiagramLayerSettings::BackgroundColor, QgsProperty::fromExpression( "if(\"Pilots\">1,'0,0,255,150','255,0,0,150')", true ) );
mPointsLayer->setDiagramLayerSettings( dls );

View File

@ -238,7 +238,7 @@ void TestQgsLabelingEngine::testRuleBased()
s2.quadOffset = QgsPalLayerSettings::QuadrantBelowRight;
s2.displayAll = true;
s2.properties().setProperty( QgsPalLayerSettings::Size, QgsProperty::fromValue( QStringLiteral( "18" ) ) );
s2.dataDefinedProperties().setProperty( QgsPalLayerSettings::Size, QgsProperty::fromValue( QStringLiteral( "18" ) ) );
root->appendChild( new QgsRuleBasedLabeling::Rule( new QgsPalLayerSettings( s2 ), 0, 0, QStringLiteral( "Class = 'Jet'" ) ) );
@ -312,8 +312,8 @@ void TestQgsLabelingEngine::zOrder()
pls1.setFormat( format );
//use data defined coloring and font size so that stacking order of labels can be determined
pls1.properties().setProperty( QgsPalLayerSettings::Color, QgsProperty::fromExpression( QStringLiteral( "case when \"Class\"='Jet' then '#ff5500' when \"Class\"='B52' then '#00ffff' else '#ff00ff' end" ) ) );
pls1.properties().setProperty( QgsPalLayerSettings::Size, QgsProperty::fromExpression( QStringLiteral( "case when \"Class\"='Jet' then 100 when \"Class\"='B52' then 30 else 50 end" ) ) );
pls1.dataDefinedProperties().setProperty( QgsPalLayerSettings::Color, QgsProperty::fromExpression( QStringLiteral( "case when \"Class\"='Jet' then '#ff5500' when \"Class\"='B52' then '#00ffff' else '#ff00ff' end" ) ) );
pls1.dataDefinedProperties().setProperty( QgsPalLayerSettings::Size, QgsProperty::fromExpression( QStringLiteral( "case when \"Class\"='Jet' then 100 when \"Class\"='B52' then 30 else 50 end" ) ) );
QgsVectorLayerLabelProvider* provider1 = new QgsVectorLayerLabelProvider( vl, QString(), true, &pls1 );
QgsLabelingEngine engine;
@ -330,7 +330,7 @@ void TestQgsLabelingEngine::zOrder()
img = job.renderedImage();
//test data defined z-index
pls1.properties().setProperty( QgsPalLayerSettings::ZIndex, QgsProperty::fromExpression( QStringLiteral( "case when \"Class\"='Jet' then 3 when \"Class\"='B52' then 1 else 2 end" ) ) );
pls1.dataDefinedProperties().setProperty( QgsPalLayerSettings::ZIndex, QgsProperty::fromExpression( QStringLiteral( "case when \"Class\"='Jet' then 3 when \"Class\"='B52' then 1 else 2 end" ) ) );
provider1 = new QgsVectorLayerLabelProvider( vl, QString(), true, &pls1 );
engine.addProvider( provider1 );
p.begin( &img );
@ -342,7 +342,7 @@ void TestQgsLabelingEngine::zOrder()
QVERIFY( imageCheck( "label_order_zindex", img, 20 ) );
img = job.renderedImage();
pls1.properties().clear();
pls1.dataDefinedProperties().clear();
format = pls1.format();
format.setColor( QColor( 255, 50, 100 ) );
format.setSize( 30 );
@ -387,7 +387,7 @@ void TestQgsLabelingEngine::zOrder()
//try mixing layer order and z-index
engine.removeProvider( provider1 );
pls1.properties().setProperty( QgsPalLayerSettings::ZIndex, QgsProperty::fromExpression( QStringLiteral( "if(\"Class\"='Jet',3,0)" ) ) );
pls1.dataDefinedProperties().setProperty( QgsPalLayerSettings::ZIndex, QgsProperty::fromExpression( QStringLiteral( "if(\"Class\"='Jet',3,0)" ) ) );
provider1 = new QgsVectorLayerLabelProvider( vl, QString(), true, &pls1 );
engine.addProvider( provider1 );

View File

@ -235,10 +235,10 @@ class TestPointPlacement(TestPlacementBase):
self._TestMapSettings = self.cloneMapSettings(self._MapSettings)
self.lyr.placement = QgsPalLayerSettings.OrderedPositionsAroundPoint
self.lyr.dist = 2
#self.lyr.properties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty.fromExpression("'T,B'"))
self.lyr.dataDefinedProperties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty.fromExpression("'T,B'"))
self.checkTest()
self.removeMapLayer(self.layer)
#self.lyr.properties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty())
self.lyr.dataDefinedProperties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty())
self.layer = None
def test_point_dd_ordered_placement1(self):
@ -248,11 +248,11 @@ class TestPointPlacement(TestPlacementBase):
self._TestMapSettings = self.cloneMapSettings(self._MapSettings)
self.lyr.placement = QgsPalLayerSettings.OrderedPositionsAroundPoint
self.lyr.dist = 2
self.lyr.properties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty.fromExpression("'T,B'"))
self.lyr.dataDefinedProperties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty.fromExpression("'T,B'"))
self.checkTest()
self.removeMapLayer(obstacleLayer)
self.removeMapLayer(self.layer)
self.lyr.properties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty())
self.lyr.dataDefinedProperties().setProperty(QgsPalLayerSettings.PredefinedPositionOrder, QgsProperty())
self.layer = None
def test_point_ordered_symbol_bound_offset(self):