mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Use consistent names for data defined property collections
This commit is contained in:
parent
fa26b45736
commit
e06192ec3f
@ -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 );
|
||||
|
||||
};
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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 );
|
||||
|
@ -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() );
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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 );
|
||||
|
@ -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() )
|
||||
{
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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" ) ) );
|
||||
|
@ -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 )
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
};
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 );
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -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 ) )
|
||||
{
|
||||
|
@ -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 );
|
||||
}
|
||||
|
@ -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 ) )
|
||||
{
|
||||
|
@ -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 ) );
|
||||
|
@ -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() );
|
||||
|
@ -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;
|
||||
|
@ -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 );
|
||||
|
||||
|
@ -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 );
|
||||
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user