mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Finish implementation of @value context variable
This commit is contained in:
parent
5cfdea569b
commit
a8f8cfefe5
@ -376,6 +376,13 @@ class QgsExpressionContext
|
||||
*/
|
||||
QgsFields fields() const;
|
||||
|
||||
/** Sets the original value variable value for the context.
|
||||
* @param value value for original value variable. This usually represents the an original widget
|
||||
* value before any data defined overrides have been applied.
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
void setOriginalValueVariable( const QVariant& value );
|
||||
|
||||
};
|
||||
|
||||
/** \ingroup core
|
||||
|
@ -188,6 +188,13 @@ class QgsSymbolV2RenderContext
|
||||
QgsRenderContext& renderContext();
|
||||
//void setRenderContext( QgsRenderContext& c );
|
||||
|
||||
/** Sets the original value variable value for data defined symbology
|
||||
* @param value value for original value variable. This usually represents the symbol property value
|
||||
* before any data defined overrides have been applied.
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
void setOriginalValueVariable( const QVariant& value );
|
||||
|
||||
QgsSymbolV2::OutputUnit outputUnit() const;
|
||||
void setOutputUnit( QgsSymbolV2::OutputUnit u );
|
||||
|
||||
|
@ -50,6 +50,10 @@ static QgsExpressionContext _getExpressionContext( const void* context )
|
||||
if ( layer )
|
||||
expContext << QgsExpressionContextUtils::layerScope( layer );
|
||||
|
||||
//TODO - show actual value
|
||||
expContext.setOriginalValueVariable( QVariant() );
|
||||
expContext.setHighlightedVariables( QStringList() << QgsExpressionContext::EXPR_ORIGINAL_VALUE );
|
||||
|
||||
return expContext;
|
||||
}
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
const QString QgsExpressionContext::EXPR_FIELDS( "_fields_" );
|
||||
const QString QgsExpressionContext::EXPR_FEATURE( "_feature_" );
|
||||
const QString QgsExpressionContext::EXPR_ORIGINAL_VALUE( "value" );
|
||||
|
||||
//
|
||||
// QgsExpressionContextScope
|
||||
@ -413,6 +414,14 @@ QgsFields QgsExpressionContext::fields() const
|
||||
return qvariant_cast<QgsFields>( variable( QgsExpressionContext::EXPR_FIELDS ) );
|
||||
}
|
||||
|
||||
void QgsExpressionContext::setOriginalValueVariable( const QVariant &value )
|
||||
{
|
||||
if ( mStack.isEmpty() )
|
||||
mStack.append( new QgsExpressionContextScope() );
|
||||
|
||||
mStack.last()->setVariable( QgsExpressionContext::EXPR_ORIGINAL_VALUE, value );
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// QgsExpressionContextUtils
|
||||
|
@ -410,8 +410,16 @@ class CORE_EXPORT QgsExpressionContext
|
||||
*/
|
||||
QgsFields fields() const;
|
||||
|
||||
/** Sets the original value variable value for the context.
|
||||
* @param value value for original value variable. This usually represents the an original widget
|
||||
* value before any data defined overrides have been applied.
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
void setOriginalValueVariable( const QVariant& value );
|
||||
|
||||
static const QString EXPR_FIELDS;
|
||||
static const QString EXPR_FEATURE;
|
||||
static const QString EXPR_ORIGINAL_VALUE;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -1652,7 +1652,7 @@ QVariant QgsPalLayerSettings::dataDefinedValue( DataDefinedProperties p, QgsFeat
|
||||
return result;
|
||||
}
|
||||
|
||||
bool QgsPalLayerSettings::dataDefinedEvaluate( DataDefinedProperties p, QVariant& exprVal, const QgsExpressionContext* context ) const
|
||||
bool QgsPalLayerSettings::dataDefinedEvaluate( DataDefinedProperties p, QVariant& exprVal, QgsExpressionContext *context, QVariant originalValue ) const
|
||||
{
|
||||
// null passed-around QVariant
|
||||
exprVal.clear();
|
||||
@ -1668,8 +1668,9 @@ bool QgsPalLayerSettings::dataDefinedEvaluate( DataDefinedProperties p, QVariant
|
||||
scopedEc->setFeature( *mCurFeat );
|
||||
scopedEc->setFields( mCurFields );
|
||||
}
|
||||
const QgsExpressionContext* ec = context ? context : scopedEc.data();
|
||||
QgsExpressionContext* ec = context ? context : scopedEc.data();
|
||||
|
||||
ec->setOriginalValueVariable( originalValue );
|
||||
QVariant result = dataDefinedValue( p, *mCurFeat, mCurFields, ec );
|
||||
|
||||
if ( result.isValid() && !result.isNull() )
|
||||
@ -1734,7 +1735,7 @@ void QgsPalLayerSettings::calculateLabelSize( const QFontMetricsF* fm, QString t
|
||||
if ( f )
|
||||
scopedRc->expressionContext().setFeature( *f );
|
||||
}
|
||||
const QgsRenderContext* rc = context ? context : scopedRc.data();
|
||||
QgsRenderContext* rc = context ? context : scopedRc.data();
|
||||
|
||||
QString wrapchr = wrapChar;
|
||||
double multilineH = multilineHeight;
|
||||
@ -1783,12 +1784,14 @@ void QgsPalLayerSettings::calculateLabelSize( const QFontMetricsF* fm, QString t
|
||||
}
|
||||
else // called externally with passed-in feature, evaluate data defined
|
||||
{
|
||||
rc->expressionContext().setOriginalValueVariable( wrapChar );
|
||||
QVariant exprVal = dataDefinedValue( QgsPalLayerSettings::MultiLineWrapChar, *f, mCurFields, &rc->expressionContext() );
|
||||
if ( exprVal.isValid() )
|
||||
{
|
||||
wrapchr = exprVal.toString();
|
||||
}
|
||||
exprVal.clear();
|
||||
rc->expressionContext().setOriginalValueVariable( multilineH );
|
||||
exprVal = dataDefinedValue( QgsPalLayerSettings::MultiLineHeight, *f, mCurFields, &rc->expressionContext() );
|
||||
if ( exprVal.isValid() )
|
||||
{
|
||||
@ -1801,6 +1804,7 @@ void QgsPalLayerSettings::calculateLabelSize( const QFontMetricsF* fm, QString t
|
||||
}
|
||||
|
||||
exprVal.clear();
|
||||
rc->expressionContext().setOriginalValueVariable( addDirSymb );
|
||||
exprVal = dataDefinedValue( QgsPalLayerSettings::DirSymbDraw, *f, mCurFields, &rc->expressionContext() );
|
||||
if ( exprVal.isValid() )
|
||||
{
|
||||
@ -1810,18 +1814,21 @@ void QgsPalLayerSettings::calculateLabelSize( const QFontMetricsF* fm, QString t
|
||||
if ( addDirSymb ) // don't do extra evaluations if not adding a direction symbol
|
||||
{
|
||||
exprVal.clear();
|
||||
rc->expressionContext().setOriginalValueVariable( leftDirSymb );
|
||||
exprVal = dataDefinedValue( QgsPalLayerSettings::DirSymbLeft, *f, mCurFields, &rc->expressionContext() );
|
||||
if ( exprVal.isValid() )
|
||||
{
|
||||
leftDirSymb = exprVal.toString();
|
||||
}
|
||||
exprVal.clear();
|
||||
rc->expressionContext().setOriginalValueVariable( rightDirSymb );
|
||||
exprVal = dataDefinedValue( QgsPalLayerSettings::DirSymbRight, *f, mCurFields, &rc->expressionContext() );
|
||||
if ( exprVal.isValid() )
|
||||
{
|
||||
rightDirSymb = exprVal.toString();
|
||||
}
|
||||
exprVal.clear();
|
||||
rc->expressionContext().setOriginalValueVariable(( int )placeDirSymb );
|
||||
exprVal = dataDefinedValue( QgsPalLayerSettings::DirSymbPlacement, *f, mCurFields, &rc->expressionContext() );
|
||||
if ( exprVal.isValid() )
|
||||
{
|
||||
@ -1917,7 +1924,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
// data defined show label? defaults to show label if not 0
|
||||
if ( dataDefinedIsActive( QgsPalLayerSettings::Show ) )
|
||||
{
|
||||
bool showLabel = dataDefinedEvaluate( QgsPalLayerSettings::Show, exprVal, &context.expressionContext() );
|
||||
bool showLabel = dataDefinedEvaluate( QgsPalLayerSettings::Show, exprVal, &context.expressionContext(), true );
|
||||
showLabel = exprVal.toBool();
|
||||
QgsDebugMsgLevel( QString( "exprVal Show:%1" ).arg( showLabel ? "true" : "false" ), 4 );
|
||||
if ( !showLabel )
|
||||
@ -1928,7 +1935,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
// data defined scale visibility?
|
||||
bool useScaleVisibility = scaleVisibility;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::ScaleVisibility, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::ScaleVisibility, exprVal, &context.expressionContext(), scaleVisibility ) )
|
||||
{
|
||||
QgsDebugMsgLevel( QString( "exprVal ScaleVisibility:%1" ).arg( exprVal.toBool() ? "true" : "false" ), 4 );
|
||||
useScaleVisibility = exprVal.toBool();
|
||||
@ -1938,7 +1945,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
{
|
||||
// data defined min scale?
|
||||
double minScale = scaleMin;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::MinScale, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::MinScale, exprVal, &context.expressionContext(), scaleMin ) )
|
||||
{
|
||||
QgsDebugMsgLevel( QString( "exprVal MinScale:%1" ).arg( exprVal.toDouble() ), 4 );
|
||||
bool conversionOk;
|
||||
@ -1962,7 +1969,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
// data defined max scale?
|
||||
double maxScale = scaleMax;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::MaxScale, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::MaxScale, exprVal, &context.expressionContext(), scaleMax ) )
|
||||
{
|
||||
QgsDebugMsgLevel( QString( "exprVal MaxScale:%1" ).arg( exprVal.toDouble() ), 4 );
|
||||
bool conversionOk;
|
||||
@ -2002,7 +2009,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
//data defined label size?
|
||||
double fontSize = labelFont.pointSizeF(); // font size doesn't have its own class data member
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Size, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Size, exprVal, &context.expressionContext(), fontSize ) )
|
||||
{
|
||||
QgsDebugMsgLevel( QString( "exprVal Size:%1" ).arg( exprVal.toDouble() ), 4 );
|
||||
bool ok;
|
||||
@ -2031,7 +2038,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
if ( fontunits == QgsPalLayerSettings::MapUnits )
|
||||
{
|
||||
bool useFontLimitPixelSize = fontLimitPixelSize;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontLimitPixel, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontLimitPixel, exprVal, &context.expressionContext(), fontLimitPixelSize ) )
|
||||
{
|
||||
QgsDebugMsgLevel( QString( "exprVal FontLimitPixel:%1" ).arg( exprVal.toBool() ? "true" : "false" ), 4 );
|
||||
useFontLimitPixelSize = exprVal.toBool();
|
||||
@ -2040,7 +2047,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
if ( useFontLimitPixelSize )
|
||||
{
|
||||
int fontMinPixel = fontMinPixelSize;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontMinPixel, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontMinPixel, exprVal, &context.expressionContext(), fontMinPixelSize ) )
|
||||
{
|
||||
bool ok;
|
||||
int sizeInt = exprVal.toInt( &ok );
|
||||
@ -2052,7 +2059,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
}
|
||||
|
||||
int fontMaxPixel = fontMaxPixelSize;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontMaxPixel, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontMaxPixel, exprVal, &context.expressionContext(), fontMaxPixelSize ) )
|
||||
{
|
||||
bool ok;
|
||||
int sizeInt = exprVal.toInt( &ok );
|
||||
@ -2110,7 +2117,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
// data defined format numbers?
|
||||
bool formatnum = formatNumbers;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::NumFormat, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::NumFormat, exprVal, &context.expressionContext(), formatNumbers ) )
|
||||
{
|
||||
formatnum = exprVal.toBool();
|
||||
QgsDebugMsgLevel( QString( "exprVal NumFormat:%1" ).arg( formatnum ? "true" : "false" ), 4 );
|
||||
@ -2121,7 +2128,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
{
|
||||
// data defined decimal places?
|
||||
int decimalPlaces = decimals;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::NumDecimals, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::NumDecimals, exprVal, &context.expressionContext(), decimals ) )
|
||||
{
|
||||
bool ok;
|
||||
int dInt = exprVal.toInt( &ok );
|
||||
@ -2134,7 +2141,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
// data defined plus sign?
|
||||
bool signPlus = plusSign;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::NumPlusSign, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::NumPlusSign, exprVal, &context.expressionContext(), plusSign ) )
|
||||
{
|
||||
signPlus = exprVal.toBool();
|
||||
QgsDebugMsgLevel( QString( "exprVal NumPlusSign:%1" ).arg( signPlus ? "true" : "false" ), 4 );
|
||||
@ -2191,7 +2198,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
// data defined centroid whole or clipped?
|
||||
bool wholeCentroid = centroidWhole;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::CentroidWhole, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::CentroidWhole, exprVal, &context.expressionContext(), centroidWhole ) )
|
||||
{
|
||||
QString str = exprVal.toString().trimmed();
|
||||
QgsDebugMsgLevel( QString( "exprVal CentroidWhole:%1" ).arg( str ), 4 );
|
||||
@ -2298,7 +2305,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
//data defined quadrant offset?
|
||||
bool ddFixedQuad = false;
|
||||
QuadrantPosition quadOff = quadOffset;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::OffsetQuad, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::OffsetQuad, exprVal, &context.expressionContext(), ( int )quadOff ) )
|
||||
{
|
||||
bool ok;
|
||||
int quadInt = exprVal.toInt( &ok );
|
||||
@ -2353,7 +2360,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
//data defined label offset?
|
||||
double xOff = xOffset;
|
||||
double yOff = yOffset;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::OffsetXY, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::OffsetXY, exprVal, &context.expressionContext(), QgsSymbolLayerV2Utils::encodePoint( QPointF( xOffset, yOffset ) ) ) )
|
||||
{
|
||||
QString ptstr = exprVal.toString().trimmed();
|
||||
QgsDebugMsgLevel( QString( "exprVal OffsetXY:%1" ).arg( ptstr ), 4 );
|
||||
@ -2408,7 +2415,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
const QgsMapToPixel& m2p = context.mapToPixel();
|
||||
//data defined rotation?
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Rotation, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Rotation, exprVal, &context.expressionContext(), angleOffset ) )
|
||||
{
|
||||
bool ok;
|
||||
double rotD = exprVal.toDouble( &ok );
|
||||
@ -2559,7 +2566,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
// set repeat distance
|
||||
// data defined repeat distance?
|
||||
double repeatDist = repeatDistance;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::RepeatDistance, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::RepeatDistance, exprVal, &context.expressionContext(), repeatDistance ) )
|
||||
{
|
||||
bool ok;
|
||||
double distD = exprVal.toDouble( &ok );
|
||||
@ -2618,7 +2625,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
// data defined label-feature distance?
|
||||
double distance = dist;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::LabelDistance, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::LabelDistance, exprVal, &context.expressionContext(), dist ) )
|
||||
{
|
||||
bool ok;
|
||||
double distD = exprVal.toDouble( &ok );
|
||||
@ -2660,7 +2667,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
}
|
||||
|
||||
// data defined priority?
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Priority, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Priority, exprVal, &context.expressionContext(), priority ) )
|
||||
{
|
||||
bool ok;
|
||||
double priorityD = exprVal.toDouble( &ok );
|
||||
@ -2674,7 +2681,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
|
||||
// data defined is obstacle?
|
||||
bool isObstacle = obstacle; // start with layer default
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::IsObstacle, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::IsObstacle, exprVal, &context.expressionContext(), obstacle ) )
|
||||
{
|
||||
isObstacle = exprVal.toBool();
|
||||
}
|
||||
@ -2682,7 +2689,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
|
||||
( *labelFeature )->setIsObstacle( isObstacle );
|
||||
|
||||
double featObstacleFactor = obstacleFactor;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::ObstacleFactor, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::ObstacleFactor, exprVal, &context.expressionContext(), obstacleFactor ) )
|
||||
{
|
||||
bool ok;
|
||||
double factorD = exprVal.toDouble( &ok );
|
||||
@ -2741,9 +2748,9 @@ void QgsPalLayerSettings::registerObstacleFeature( QgsFeature& f, QgsRenderConte
|
||||
|
||||
bool QgsPalLayerSettings::dataDefinedValEval( DataDefinedValueType valType,
|
||||
QgsPalLayerSettings::DataDefinedProperties p,
|
||||
QVariant& exprVal, const QgsExpressionContext& context )
|
||||
QVariant& exprVal, QgsExpressionContext& context, QVariant originalValue )
|
||||
{
|
||||
if ( dataDefinedEvaluate( p, exprVal, &context ) )
|
||||
if ( dataDefinedEvaluate( p, exprVal, &context, originalValue ) )
|
||||
{
|
||||
QString dbgStr = QString( "exprVal %1:" ).arg( mDataDefinedNames.value( p ).first ) + "%1";
|
||||
|
||||
@ -2931,7 +2938,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
|
||||
// data defined font family?
|
||||
QString ddFontFamily( "" );
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Family, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Family, exprVal, &context.expressionContext(), labelFont.family() ) )
|
||||
{
|
||||
QString family = exprVal.toString().trimmed();
|
||||
QgsDebugMsgLevel( QString( "exprVal Font family:%1" ).arg( family ), 4 );
|
||||
@ -2958,7 +2965,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
|
||||
// data defined bold font style?
|
||||
bool ddBold = false;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Bold, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Bold, exprVal, &context.expressionContext(), labelFont.bold() ) )
|
||||
{
|
||||
bool bold = exprVal.toBool();
|
||||
QgsDebugMsgLevel( QString( "exprVal Font bold:%1" ).arg( bold ? "true" : "false" ), 4 );
|
||||
@ -2967,7 +2974,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
|
||||
// data defined italic font style?
|
||||
bool ddItalic = false;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Italic, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Italic, exprVal, &context.expressionContext(), labelFont.italic() ) )
|
||||
{
|
||||
bool italic = exprVal.toBool();
|
||||
QgsDebugMsgLevel( QString( "exprVal Font italic:%1" ).arg( italic ? "true" : "false" ), 4 );
|
||||
@ -3039,7 +3046,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
|
||||
// data defined word spacing?
|
||||
double wordspace = labelFont.wordSpacing();
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontWordSpacing, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontWordSpacing, exprVal, &context.expressionContext(), wordspace ) )
|
||||
{
|
||||
bool ok;
|
||||
double wspacing = exprVal.toDouble( &ok );
|
||||
@ -3053,7 +3060,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
|
||||
// data defined letter spacing?
|
||||
double letterspace = labelFont.letterSpacing();
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontLetterSpacing, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::FontLetterSpacing, exprVal, &context.expressionContext(), letterspace ) )
|
||||
{
|
||||
bool ok;
|
||||
double lspacing = exprVal.toDouble( &ok );
|
||||
@ -3099,7 +3106,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
}
|
||||
|
||||
// data defined strikeout font style?
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Strikeout, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Strikeout, exprVal, &context.expressionContext(), labelFont.strikeOut() ) )
|
||||
{
|
||||
bool strikeout = exprVal.toBool();
|
||||
QgsDebugMsgLevel( QString( "exprVal Font strikeout:%1" ).arg( strikeout ? "true" : "false" ), 4 );
|
||||
@ -3107,7 +3114,7 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
}
|
||||
|
||||
// data defined underline font style?
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Underline, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::Underline, exprVal, &context.expressionContext(), labelFont.underline() ) )
|
||||
{
|
||||
bool underline = exprVal.toBool();
|
||||
QgsDebugMsgLevel( QString( "exprVal Font underline:%1" ).arg( underline ? "true" : "false" ), 4 );
|
||||
@ -3117,10 +3124,10 @@ void QgsPalLayerSettings::parseTextStyle( QFont& labelFont,
|
||||
// pass the rest on to QgsPalLabeling::drawLabeling
|
||||
|
||||
// data defined font color?
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::Color, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::Color, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodeColor( textColor ) );
|
||||
|
||||
// data defined font transparency?
|
||||
dataDefinedValEval( DDTransparency, QgsPalLayerSettings::FontTransp, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDTransparency, QgsPalLayerSettings::FontTransp, exprVal, context.expressionContext(), textTransp );
|
||||
|
||||
// data defined font blend mode?
|
||||
dataDefinedValEval( DDBlendMode, QgsPalLayerSettings::FontBlendMode, exprVal, context.expressionContext() );
|
||||
@ -3133,7 +3140,7 @@ void QgsPalLayerSettings::parseTextBuffer( QgsRenderContext &context )
|
||||
|
||||
// data defined draw buffer?
|
||||
bool drawBuffer = bufferDraw;
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::BufferDraw, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::BufferDraw, exprVal, context.expressionContext(), bufferDraw ) )
|
||||
{
|
||||
drawBuffer = exprVal.toBool();
|
||||
}
|
||||
@ -3145,14 +3152,14 @@ void QgsPalLayerSettings::parseTextBuffer( QgsRenderContext &context )
|
||||
|
||||
// data defined buffer size?
|
||||
double bufrSize = bufferSize;
|
||||
if ( dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::BufferSize, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::BufferSize, exprVal, context.expressionContext(), bufferSize ) )
|
||||
{
|
||||
bufrSize = exprVal.toDouble();
|
||||
}
|
||||
|
||||
// data defined buffer transparency?
|
||||
int bufTransp = bufferTransp;
|
||||
if ( dataDefinedValEval( DDTransparency, QgsPalLayerSettings::BufferTransp, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDTransparency, QgsPalLayerSettings::BufferTransp, exprVal, context.expressionContext(), bufferTransp ) )
|
||||
{
|
||||
bufTransp = exprVal.toInt();
|
||||
}
|
||||
@ -3171,10 +3178,10 @@ void QgsPalLayerSettings::parseTextBuffer( QgsRenderContext &context )
|
||||
dataDefinedValEval( DDUnits, QgsPalLayerSettings::BufferUnit, exprVal, context.expressionContext() );
|
||||
|
||||
// data defined buffer color?
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::BufferColor, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::BufferColor, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodeColor( bufferColor ) );
|
||||
|
||||
// data defined buffer pen join style?
|
||||
dataDefinedValEval( DDJoinStyle, QgsPalLayerSettings::BufferJoinStyle, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDJoinStyle, QgsPalLayerSettings::BufferJoinStyle, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodePenJoinStyle( bufferJoinStyle ) );
|
||||
|
||||
// data defined buffer blend mode?
|
||||
dataDefinedValEval( DDBlendMode, QgsPalLayerSettings::BufferBlendMode, exprVal, context.expressionContext() );
|
||||
@ -3186,7 +3193,7 @@ void QgsPalLayerSettings::parseTextFormatting( QgsRenderContext &context )
|
||||
|
||||
// data defined multiline wrap character?
|
||||
QString wrapchr = wrapChar;
|
||||
if ( dataDefinedValEval( DDString, QgsPalLayerSettings::MultiLineWrapChar, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDString, QgsPalLayerSettings::MultiLineWrapChar, exprVal, context.expressionContext(), wrapChar ) )
|
||||
{
|
||||
wrapchr = exprVal.toString();
|
||||
}
|
||||
@ -3195,7 +3202,7 @@ void QgsPalLayerSettings::parseTextFormatting( QgsRenderContext &context )
|
||||
dataDefinedValEval( DDDouble, QgsPalLayerSettings::MultiLineHeight, exprVal, context.expressionContext() );
|
||||
|
||||
// data defined multiline text align?
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::MultiLineAlignment, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::MultiLineAlignment, exprVal, &context.expressionContext(), multilineHeight ) )
|
||||
{
|
||||
QString str = exprVal.toString().trimmed();
|
||||
QgsDebugMsgLevel( QString( "exprVal MultiLineAlignment:%1" ).arg( str ), 4 );
|
||||
@ -3223,7 +3230,7 @@ void QgsPalLayerSettings::parseTextFormatting( QgsRenderContext &context )
|
||||
|
||||
// data defined direction symbol?
|
||||
bool drawDirSymb = addDirectionSymbol;
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::DirSymbDraw, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::DirSymbDraw, exprVal, context.expressionContext(), addDirectionSymbol ) )
|
||||
{
|
||||
drawDirSymb = exprVal.toBool();
|
||||
}
|
||||
@ -3231,10 +3238,10 @@ void QgsPalLayerSettings::parseTextFormatting( QgsRenderContext &context )
|
||||
if ( drawDirSymb )
|
||||
{
|
||||
// data defined direction left symbol?
|
||||
dataDefinedValEval( DDString, QgsPalLayerSettings::DirSymbLeft, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDString, QgsPalLayerSettings::DirSymbLeft, exprVal, context.expressionContext(), leftDirectionSymbol );
|
||||
|
||||
// data defined direction right symbol?
|
||||
dataDefinedValEval( DDString, QgsPalLayerSettings::DirSymbRight, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDString, QgsPalLayerSettings::DirSymbRight, exprVal, context.expressionContext(), rightDirectionSymbol );
|
||||
|
||||
// data defined direction symbol placement?
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::DirSymbPlacement, exprVal, &context.expressionContext() ) )
|
||||
@ -3260,7 +3267,7 @@ void QgsPalLayerSettings::parseTextFormatting( QgsRenderContext &context )
|
||||
}
|
||||
|
||||
// data defined direction symbol reversed?
|
||||
dataDefinedValEval( DDBool, QgsPalLayerSettings::DirSymbReverse, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDBool, QgsPalLayerSettings::DirSymbReverse, exprVal, context.expressionContext(), reverseDirectionSymbol );
|
||||
}
|
||||
|
||||
// formatting for numbers is inline with generation of base label text and not passed to label painting
|
||||
@ -3272,7 +3279,7 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
|
||||
|
||||
// data defined draw shape?
|
||||
bool drawShape = shapeDraw;
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::ShapeDraw, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::ShapeDraw, exprVal, context.expressionContext(), shapeDraw ) )
|
||||
{
|
||||
drawShape = exprVal.toBool();
|
||||
}
|
||||
@ -3284,7 +3291,7 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
|
||||
|
||||
// data defined shape transparency?
|
||||
int shapeTransp = shapeTransparency;
|
||||
if ( dataDefinedValEval( DDTransparency, QgsPalLayerSettings::ShapeTransparency, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDTransparency, QgsPalLayerSettings::ShapeTransparency, exprVal, context.expressionContext(), shapeTransparency ) )
|
||||
{
|
||||
shapeTransp = exprVal.toInt();
|
||||
}
|
||||
@ -3333,7 +3340,7 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
|
||||
|
||||
// data defined shape SVG path?
|
||||
QString svgPath = shapeSVGFile;
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::ShapeSVGFile, exprVal, &context.expressionContext() ) )
|
||||
if ( dataDefinedEvaluate( QgsPalLayerSettings::ShapeSVGFile, exprVal, &context.expressionContext(), shapeSVGFile ) )
|
||||
{
|
||||
QString svgfile = exprVal.toString().trimmed();
|
||||
QgsDebugMsgLevel( QString( "exprVal ShapeSVGFile:%1" ).arg( svgfile ), 4 );
|
||||
@ -3366,14 +3373,14 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
|
||||
|
||||
// data defined shape size X? (SVGs only use X for sizing)
|
||||
double ddShpSizeX = shapeSize.x();
|
||||
if ( dataDefinedValEval( DDDouble, QgsPalLayerSettings::ShapeSizeX, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDDouble, QgsPalLayerSettings::ShapeSizeX, exprVal, context.expressionContext(), ddShpSizeX ) )
|
||||
{
|
||||
ddShpSizeX = exprVal.toDouble();
|
||||
}
|
||||
|
||||
// data defined shape size Y?
|
||||
double ddShpSizeY = shapeSize.y();
|
||||
if ( dataDefinedValEval( DDDouble, QgsPalLayerSettings::ShapeSizeY, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDDouble, QgsPalLayerSettings::ShapeSizeY, exprVal, context.expressionContext(), ddShpSizeY ) )
|
||||
{
|
||||
ddShpSizeY = exprVal.toDouble();
|
||||
}
|
||||
@ -3433,16 +3440,16 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
|
||||
}
|
||||
|
||||
// data defined shape rotation?
|
||||
dataDefinedValEval( DDRotation180, QgsPalLayerSettings::ShapeRotation, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDRotation180, QgsPalLayerSettings::ShapeRotation, exprVal, context.expressionContext(), shapeRotation );
|
||||
|
||||
// data defined shape offset?
|
||||
dataDefinedValEval( DDPointF, QgsPalLayerSettings::ShapeOffset, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDPointF, QgsPalLayerSettings::ShapeOffset, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodePoint( shapeOffset ) );
|
||||
|
||||
// data defined shape offset units?
|
||||
dataDefinedValEval( DDUnits, QgsPalLayerSettings::ShapeOffsetUnits, exprVal, context.expressionContext() );
|
||||
|
||||
// data defined shape radii?
|
||||
dataDefinedValEval( DDPointF, QgsPalLayerSettings::ShapeRadii, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDPointF, QgsPalLayerSettings::ShapeRadii, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodePoint( shapeRadii ) );
|
||||
|
||||
// data defined shape radii units?
|
||||
dataDefinedValEval( DDUnits, QgsPalLayerSettings::ShapeRadiiUnits, exprVal, context.expressionContext() );
|
||||
@ -3451,19 +3458,19 @@ void QgsPalLayerSettings::parseShapeBackground( QgsRenderContext &context )
|
||||
dataDefinedValEval( DDBlendMode, QgsPalLayerSettings::ShapeBlendMode, exprVal, context.expressionContext() );
|
||||
|
||||
// data defined shape fill color?
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::ShapeFillColor, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::ShapeFillColor, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodeColor( shapeFillColor ) );
|
||||
|
||||
// data defined shape border color?
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::ShapeBorderColor, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::ShapeBorderColor, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodeColor( shapeBorderColor ) );
|
||||
|
||||
// data defined shape border width?
|
||||
dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::ShapeBorderWidth, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::ShapeBorderWidth, exprVal, context.expressionContext(), shapeBorderWidth );
|
||||
|
||||
// data defined shape border width units?
|
||||
dataDefinedValEval( DDUnits, QgsPalLayerSettings::ShapeBorderWidthUnits, exprVal, context.expressionContext() );
|
||||
|
||||
// data defined shape join style?
|
||||
dataDefinedValEval( DDJoinStyle, QgsPalLayerSettings::ShapeJoinStyle, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDJoinStyle, QgsPalLayerSettings::ShapeJoinStyle, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodePenJoinStyle( shapeJoinStyle ) );
|
||||
|
||||
}
|
||||
|
||||
@ -3473,7 +3480,7 @@ void QgsPalLayerSettings::parseDropShadow( QgsRenderContext &context )
|
||||
|
||||
// data defined draw shadow?
|
||||
bool drawShadow = shadowDraw;
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::ShadowDraw, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDBool, QgsPalLayerSettings::ShadowDraw, exprVal, context.expressionContext(), shadowDraw ) )
|
||||
{
|
||||
drawShadow = exprVal.toBool();
|
||||
}
|
||||
@ -3485,21 +3492,21 @@ void QgsPalLayerSettings::parseDropShadow( QgsRenderContext &context )
|
||||
|
||||
// data defined shadow transparency?
|
||||
int shadowTransp = shadowTransparency;
|
||||
if ( dataDefinedValEval( DDTransparency, QgsPalLayerSettings::ShadowTransparency, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDTransparency, QgsPalLayerSettings::ShadowTransparency, exprVal, context.expressionContext(), shadowTransparency ) )
|
||||
{
|
||||
shadowTransp = exprVal.toInt();
|
||||
}
|
||||
|
||||
// data defined shadow offset distance?
|
||||
double shadowOffDist = shadowOffsetDist;
|
||||
if ( dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::ShadowOffsetDist, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::ShadowOffsetDist, exprVal, context.expressionContext(), shadowOffsetDist ) )
|
||||
{
|
||||
shadowOffDist = exprVal.toDouble();
|
||||
}
|
||||
|
||||
// data defined shadow offset distance?
|
||||
double shadowRad = shadowRadius;
|
||||
if ( dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::ShadowRadius, exprVal, context.expressionContext() ) )
|
||||
if ( dataDefinedValEval( DDDoublePos, QgsPalLayerSettings::ShadowRadius, exprVal, context.expressionContext(), shadowRadius ) )
|
||||
{
|
||||
shadowRad = exprVal.toDouble();
|
||||
}
|
||||
@ -3543,22 +3550,22 @@ void QgsPalLayerSettings::parseDropShadow( QgsRenderContext &context )
|
||||
}
|
||||
|
||||
// data defined shadow offset angle?
|
||||
dataDefinedValEval( DDRotation180, QgsPalLayerSettings::ShadowOffsetAngle, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDRotation180, QgsPalLayerSettings::ShadowOffsetAngle, exprVal, context.expressionContext(), shadowOffsetAngle );
|
||||
|
||||
// data defined shadow offset units?
|
||||
dataDefinedValEval( DDUnits, QgsPalLayerSettings::ShadowOffsetUnits, exprVal, context.expressionContext() );
|
||||
|
||||
// data defined shadow radius?
|
||||
dataDefinedValEval( DDDouble, QgsPalLayerSettings::ShadowRadius, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDDouble, QgsPalLayerSettings::ShadowRadius, exprVal, context.expressionContext(), shadowRadius );
|
||||
|
||||
// data defined shadow radius units?
|
||||
dataDefinedValEval( DDUnits, QgsPalLayerSettings::ShadowRadiusUnits, exprVal, context.expressionContext() );
|
||||
|
||||
// data defined shadow scale? ( gui bounds to 0-2000, no upper bound here )
|
||||
dataDefinedValEval( DDIntPos, QgsPalLayerSettings::ShadowScale, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDIntPos, QgsPalLayerSettings::ShadowScale, exprVal, context.expressionContext(), shadowScale );
|
||||
|
||||
// data defined shadow color?
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::ShadowColor, exprVal, context.expressionContext() );
|
||||
dataDefinedValEval( DDColor, QgsPalLayerSettings::ShadowColor, exprVal, context.expressionContext(), QgsSymbolLayerV2Utils::encodeColor( shadowColor ) );
|
||||
|
||||
// data defined shadow blend mode?
|
||||
dataDefinedValEval( DDBlendMode, QgsPalLayerSettings::ShadowBlendMode, exprVal, context.expressionContext() );
|
||||
|
@ -531,7 +531,7 @@ class CORE_EXPORT QgsPalLayerSettings
|
||||
* @returns true/false whether result is null or invalid
|
||||
* @note not available in python bindings
|
||||
*/
|
||||
bool dataDefinedEvaluate( QgsPalLayerSettings::DataDefinedProperties p, QVariant& exprVal, const QgsExpressionContext* context = 0 ) const;
|
||||
bool dataDefinedEvaluate( QgsPalLayerSettings::DataDefinedProperties p, QVariant& exprVal, QgsExpressionContext* context = 0, QVariant originalValue = QVariant() ) const;
|
||||
|
||||
/** Whether data definition is active
|
||||
*/
|
||||
@ -624,7 +624,7 @@ class CORE_EXPORT QgsPalLayerSettings
|
||||
// convenience data defined evaluation function
|
||||
bool dataDefinedValEval( DataDefinedValueType valType,
|
||||
QgsPalLayerSettings::DataDefinedProperties p,
|
||||
QVariant& exprVal, const QgsExpressionContext& context );
|
||||
QVariant& exprVal, QgsExpressionContext &context, QVariant originalValue = QVariant() );
|
||||
|
||||
void parseTextStyle( QFont& labelFont,
|
||||
QgsPalLayerSettings::SizeUnit fontunits,
|
||||
|
@ -207,12 +207,14 @@ void QgsEllipseSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Rend
|
||||
bool ok;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOutlineWidth );
|
||||
double width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, context, mOutlineWidth ).toDouble();
|
||||
width = QgsSymbolLayerV2Utils::convertToPainterUnits( context.renderContext(), width, mOutlineWidthUnit, mOutlineWidthMapUnitScale );
|
||||
mPen.setWidthF( width );
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenStyle( mPen.style() ) );
|
||||
QString styleString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
{
|
||||
@ -222,12 +224,14 @@ void QgsEllipseSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Rend
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mBrush.color() ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
mBrush.setColor( QgsSymbolLayerV2Utils::decodeColor( colorString ) );
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mPen.color() ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
mPen.setColor( QgsSymbolLayerV2Utils::decodeColor( colorString ) );
|
||||
@ -239,6 +243,7 @@ void QgsEllipseSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Rend
|
||||
QString symbolName = mSymbolName;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mSymbolName );
|
||||
symbolName = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME, context, mSymbolName ).toString();
|
||||
}
|
||||
preparePath( symbolName, context, &scaledWidth, &scaledHeight, context.feature() );
|
||||
@ -260,6 +265,7 @@ void QgsEllipseSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Rend
|
||||
double rotation = 0.0;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mAngle );
|
||||
rotation = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION, context, mAngle ).toDouble() + mLineAngle;
|
||||
}
|
||||
else if ( !qgsDoubleNear( mAngle + mLineAngle, 0.0 ) )
|
||||
@ -462,6 +468,7 @@ void QgsEllipseSymbolLayerV2::preparePath( const QString& symbolName, QgsSymbolV
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) ) //1. priority: data defined setting on symbol layer le
|
||||
{
|
||||
context.setOriginalValueVariable( mSymbolWidth );
|
||||
width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, context, mSymbolWidth ).toDouble();
|
||||
}
|
||||
else if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
|
||||
@ -481,6 +488,7 @@ void QgsEllipseSymbolLayerV2::preparePath( const QString& symbolName, QgsSymbolV
|
||||
double height = 0;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT ) ) //1. priority: data defined setting on symbol layer level
|
||||
{
|
||||
context.setOriginalValueVariable( mSymbolHeight );
|
||||
height = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT, context, mSymbolHeight ).toDouble();
|
||||
}
|
||||
else if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
|
||||
@ -565,6 +573,7 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) ) //1. priority: data defined setting on symbol layer le
|
||||
{
|
||||
context->setOriginalValueVariable( mSymbolWidth );
|
||||
symbolWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, *context, mSymbolWidth ).toDouble();
|
||||
}
|
||||
else if ( context->renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
|
||||
@ -580,6 +589,7 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
|
||||
double symbolHeight = mSymbolHeight;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT ) ) //1. priority: data defined setting on symbol layer level
|
||||
{
|
||||
context->setOriginalValueVariable( mSymbolHeight );
|
||||
symbolHeight = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_HEIGHT, *context, mSymbolHeight ).toDouble();
|
||||
}
|
||||
else if ( context->renderHints() & QgsSymbolV2::DataDefinedSizeScale ) //2. priority: is data defined size on symbol level
|
||||
@ -596,6 +606,7 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mOutlineWidth );
|
||||
outlineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, *context, mOutlineWidth ).toDouble();
|
||||
}
|
||||
if ( mOutlineWidthUnit == QgsSymbolV2::MM )
|
||||
@ -608,6 +619,7 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
|
||||
QColor fc = mFillColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR ) )
|
||||
{
|
||||
context->setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mFillColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_COLOR, *context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
fc = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -617,6 +629,7 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
|
||||
QColor oc = mOutlineColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR ) )
|
||||
{
|
||||
context->setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mOutlineColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_COLOR, *context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
oc = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -626,6 +639,7 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
|
||||
QString symbolName = mSymbolName;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mSymbolName );
|
||||
symbolName = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SYMBOL_NAME, *context, mSymbolName ).toString();
|
||||
}
|
||||
|
||||
@ -639,6 +653,7 @@ bool QgsEllipseSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScaleFa
|
||||
double rotation = 0.0;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mAngle );
|
||||
rotation = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ROTATION, *context, mAngle ).toDouble() + mLineAngle;
|
||||
}
|
||||
else if ( !qgsDoubleNear( mAngle + mLineAngle, 0.0 ) )
|
||||
|
@ -84,24 +84,28 @@ void QgsSimpleFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( brush.color() ) );
|
||||
QString color = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
brush.setColor( QgsSymbolLayerV2Utils::decodeColor( color ) );
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_STYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeBrushStyle( brush.style() ) );
|
||||
QString style = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL_STYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
brush.setStyle( QgsSymbolLayerV2Utils::decodeBrushStyle( style ) );
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( pen.color() ) );
|
||||
QString color = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
pen.setColor( QgsSymbolLayerV2Utils::decodeColor( color ) );
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH_BORDER ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mBorderWidth );
|
||||
double width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH_BORDER, context, mBorderWidth ).toDouble();
|
||||
width = QgsSymbolLayerV2Utils::convertToPainterUnits( context.renderContext(), width, mBorderWidthUnit, mBorderWidthMapUnitScale );
|
||||
pen.setWidthF( width );
|
||||
@ -109,6 +113,7 @@ void QgsSimpleFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_BORDER_STYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenStyle( pen.style() ) );
|
||||
QString style = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_BORDER_STYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
{
|
||||
@ -118,6 +123,7 @@ void QgsSimpleFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_JOIN_STYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenJoinStyle( pen.joinStyle() ) );
|
||||
QString style = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_JOIN_STYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
{
|
||||
@ -396,6 +402,7 @@ double QgsSimpleFillSymbolLayerV2::dxfWidth( const QgsDxfExport& e, QgsSymbolV2R
|
||||
double width = mBorderWidth;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH_BORDER ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mBorderWidth );
|
||||
width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH_BORDER, context, mBorderWidth ).toDouble();
|
||||
}
|
||||
return width * e.mapUnitScaleFactor( e.symbologyScaleDenominator(), mBorderWidthUnit, e.mapUnits() );
|
||||
@ -406,6 +413,7 @@ QColor QgsSimpleFillSymbolLayerV2::dxfColor( QgsSymbolV2RenderContext &context )
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_BORDER_COLOR ) )
|
||||
{
|
||||
bool ok;
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mBorderColor ) );
|
||||
QString color = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_BORDER_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
return QgsSymbolLayerV2Utils::decodeColor( color );
|
||||
@ -423,6 +431,7 @@ QColor QgsSimpleFillSymbolLayerV2::dxfBrushColor( QgsSymbolV2RenderContext& cont
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
bool ok;
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor ) );
|
||||
QString color = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
return QgsSymbolLayerV2Utils::decodeColor( color );
|
||||
@ -563,6 +572,7 @@ void QgsGradientFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderC
|
||||
QColor color = mColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
color = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -572,6 +582,7 @@ void QgsGradientFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderC
|
||||
QColor color2 = mColor2;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR2 ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor2 ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR2, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
color2 = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -581,6 +592,7 @@ void QgsGradientFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderC
|
||||
double angle = mAngle;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mAngle );
|
||||
angle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, context, mAngle ).toDouble();
|
||||
}
|
||||
|
||||
@ -650,16 +662,19 @@ void QgsGradientFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderC
|
||||
double refPoint1X = mReferencePoint1.x();
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE1_X ) )
|
||||
{
|
||||
context.setOriginalValueVariable( refPoint1X );
|
||||
refPoint1X = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE1_X, context, refPoint1X ).toDouble();
|
||||
}
|
||||
double refPoint1Y = mReferencePoint1.y();
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE1_Y ) )
|
||||
{
|
||||
context.setOriginalValueVariable( refPoint1Y );
|
||||
refPoint1Y = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE1_Y, context, refPoint1Y ).toDouble();
|
||||
}
|
||||
bool refPoint1IsCentroid = mReferencePoint1IsCentroid;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE1_ISCENTROID ) )
|
||||
{
|
||||
context.setOriginalValueVariable( refPoint1IsCentroid );
|
||||
refPoint1IsCentroid = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE1_ISCENTROID, context, refPoint1IsCentroid ).toBool();
|
||||
}
|
||||
|
||||
@ -667,16 +682,19 @@ void QgsGradientFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderC
|
||||
double refPoint2X = mReferencePoint2.x();
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE2_X ) )
|
||||
{
|
||||
context.setOriginalValueVariable( refPoint2X );
|
||||
refPoint2X = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE2_X, context, refPoint2X ).toDouble();
|
||||
}
|
||||
double refPoint2Y = mReferencePoint2.y();
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE2_Y ) )
|
||||
{
|
||||
context.setOriginalValueVariable( refPoint2Y );
|
||||
refPoint2Y = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE2_Y, context, refPoint2Y ).toDouble();
|
||||
}
|
||||
bool refPoint2IsCentroid = mReferencePoint2IsCentroid;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE2_ISCENTROID ) )
|
||||
{
|
||||
context.setOriginalValueVariable( refPoint2IsCentroid );
|
||||
refPoint2IsCentroid = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_REFERENCE2_ISCENTROID, context, refPoint2IsCentroid ).toBool();
|
||||
}
|
||||
|
||||
@ -1043,6 +1061,7 @@ void QgsShapeburstFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2Rende
|
||||
color = mColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
color = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -1052,6 +1071,7 @@ void QgsShapeburstFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2Rende
|
||||
color2 = mColor2;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR2 ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor2 ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR2, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
color2 = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -1061,6 +1081,7 @@ void QgsShapeburstFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2Rende
|
||||
blurRadius = mBlurRadius;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_BLUR_RADIUS ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mBlurRadius );
|
||||
blurRadius = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_BLUR_RADIUS, context, mBlurRadius ).toInt();
|
||||
}
|
||||
|
||||
@ -1068,6 +1089,7 @@ void QgsShapeburstFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2Rende
|
||||
useWholeShape = mUseWholeShape;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_USE_WHOLE_SHAPE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mUseWholeShape );
|
||||
useWholeShape = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_USE_WHOLE_SHAPE, context, mUseWholeShape ).toBool();
|
||||
}
|
||||
|
||||
@ -1075,6 +1097,7 @@ void QgsShapeburstFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2Rende
|
||||
maxDistance = mMaxDistance;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_MAX_DISTANCE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mMaxDistance );
|
||||
maxDistance = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_MAX_DISTANCE, context, mMaxDistance ).toDouble();
|
||||
}
|
||||
|
||||
@ -1082,6 +1105,7 @@ void QgsShapeburstFillSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2Rende
|
||||
ignoreRings = mIgnoreRings;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_IGNORE_RINGS ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mIgnoreRings );
|
||||
ignoreRings = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_IGNORE_RINGS, context, mIgnoreRings ).toBool();
|
||||
}
|
||||
|
||||
@ -1646,6 +1670,7 @@ double QgsImageFillSymbolLayer::dxfWidth( const QgsDxfExport& e, QgsSymbolV2Rend
|
||||
double width = mOutlineWidth;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOutlineWidth );
|
||||
width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, context, mOutlineWidth ).toDouble();
|
||||
}
|
||||
return width * e.mapUnitScaleFactor( e.symbologyScaleDenominator(), mOutlineWidthUnit, e.mapUnits() );
|
||||
@ -2136,6 +2161,7 @@ void QgsSVGFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2RenderContext &
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mAngle );
|
||||
double nextAngle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, context, QVariant(), &ok ).toDouble();
|
||||
if ( ok )
|
||||
mNextAngle = nextAngle;
|
||||
@ -2144,16 +2170,19 @@ void QgsSVGFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2RenderContext &
|
||||
double width = mPatternWidth;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mPatternWidth );
|
||||
width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, context, mPatternWidth ).toDouble();
|
||||
}
|
||||
QString svgFile = mSvgFilePath;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_FILE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mSvgFilePath );
|
||||
svgFile = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_FILE, context, mSvgFilePath ).toString();
|
||||
}
|
||||
QColor svgFillColor = mSvgFillColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_FILL_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mSvgFillColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_FILL_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
svgFillColor = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -2161,6 +2190,7 @@ void QgsSVGFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2RenderContext &
|
||||
QColor svgOutlineColor = mSvgOutlineColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_OUTLINE_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mSvgOutlineColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_OUTLINE_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
svgOutlineColor = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -2168,6 +2198,7 @@ void QgsSVGFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2RenderContext &
|
||||
double outlineWidth = mSvgOutlineWidth;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_OUTLINE_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mSvgOutlineWidth );
|
||||
outlineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SVG_OUTLINE_WIDTH, context, mSvgOutlineWidth ).toDouble();
|
||||
}
|
||||
applyPattern( mBrush, svgFile, width, mPatternWidthUnit, svgFillColor, svgOutlineColor, outlineWidth,
|
||||
@ -2849,21 +2880,25 @@ void QgsLinePatternFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2RenderC
|
||||
double lineAngle = mLineAngle;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_LINEANGLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mLineAngle );
|
||||
lineAngle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_LINEANGLE, context, mLineAngle ).toDouble();
|
||||
}
|
||||
double distance = mDistance;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISTANCE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mDistance );
|
||||
distance = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISTANCE, context, mDistance ).toDouble();
|
||||
}
|
||||
double lineWidth = mLineWidth;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_LINEWIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mLineWidth );
|
||||
lineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_LINEWIDTH, context, mLineWidth ).toDouble();
|
||||
}
|
||||
QColor color = mColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
color = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -3260,21 +3295,25 @@ void QgsPointPatternFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2Render
|
||||
double distanceX = mDistanceX;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISTANCE_X ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mDistanceX );
|
||||
distanceX = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISTANCE_X, context, mDistanceX ).toDouble();
|
||||
}
|
||||
double distanceY = mDistanceY;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISTANCE_Y ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mDistanceY );
|
||||
distanceY = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISTANCE_Y, context, mDistanceY ).toDouble();
|
||||
}
|
||||
double displacementX = mDisplacementX;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISPLACEMENT_X ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mDisplacementX );
|
||||
displacementX = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISPLACEMENT_X, context, mDisplacementX ).toDouble();
|
||||
}
|
||||
double displacementY = mDisplacementY;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISPLACEMENT_Y ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mDisplacementY );
|
||||
displacementY = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_DISPLACEMENT_Y, context, mDisplacementY ).toDouble();
|
||||
}
|
||||
applyPattern( context, mBrush, distanceX, distanceY, displacementX, displacementY );
|
||||
@ -3662,6 +3701,7 @@ void QgsRasterFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2RenderContex
|
||||
bool ok;
|
||||
if ( hasAngleExpression )
|
||||
{
|
||||
context.setOriginalValueVariable( mAngle );
|
||||
double nextAngle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, context, QVariant(), &ok ).toDouble();
|
||||
if ( ok )
|
||||
mNextAngle = nextAngle;
|
||||
@ -3675,16 +3715,19 @@ void QgsRasterFillSymbolLayer::applyDataDefinedSettings( QgsSymbolV2RenderContex
|
||||
double width = mWidth;
|
||||
if ( hasWidthExpression )
|
||||
{
|
||||
context.setOriginalValueVariable( mWidth );
|
||||
width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, context, mWidth ).toDouble();
|
||||
}
|
||||
double alpha = mAlpha;
|
||||
if ( hasAlphaExpression )
|
||||
{
|
||||
context.setOriginalValueVariable( mAlpha );
|
||||
alpha = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ALPHA, context, mAlpha ).toDouble();
|
||||
}
|
||||
QString file = mImageFilePath;
|
||||
if ( hasFileExpression )
|
||||
{
|
||||
context.setOriginalValueVariable( mImageFilePath );
|
||||
file = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILE, context, mImageFilePath ).toString();
|
||||
}
|
||||
applyPattern( mBrush, file, width, alpha, context );
|
||||
|
@ -471,6 +471,7 @@ void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
bool hasStrokeWidthExpression = false;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mWidth );
|
||||
double scaledWidth = QgsSymbolLayerV2Utils::convertToPainterUnits( context.renderContext(),
|
||||
evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, context, mWidth ).toDouble(),
|
||||
mWidthUnit, mWidthMapUnitScale );
|
||||
@ -483,6 +484,7 @@ void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
bool ok;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( pen.color() ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
pen.setColor( QgsSymbolLayerV2Utils::decodeColor( colorString ) );
|
||||
@ -491,6 +493,7 @@ void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
//offset
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOffset );
|
||||
offset = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET, context, offset ).toDouble();
|
||||
}
|
||||
|
||||
@ -531,6 +534,7 @@ void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
//line style
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_LINE_STYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenStyle( pen.style() ) );
|
||||
QString lineStyleString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_LINE_STYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
pen.setStyle( QgsSymbolLayerV2Utils::decodePenStyle( lineStyleString ) );
|
||||
@ -539,6 +543,7 @@ void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
//join style
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_JOINSTYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenJoinStyle( pen.joinStyle() ) );
|
||||
QString joinStyleString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_JOINSTYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
pen.setJoinStyle( QgsSymbolLayerV2Utils::decodePenJoinStyle( joinStyleString ) );
|
||||
@ -547,6 +552,7 @@ void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderCon
|
||||
//cap style
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_CAPSTYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenCapStyle( pen.capStyle() ) );
|
||||
QString capStyleString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_CAPSTYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
pen.setCapStyle( QgsSymbolLayerV2Utils::decodePenCapStyle( capStyleString ) );
|
||||
@ -583,6 +589,7 @@ double QgsSimpleLineSymbolLayerV2::dxfWidth( const QgsDxfExport& e, QgsSymbolV2R
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mWidth );
|
||||
width = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_WIDTH, context, mWidth ).toDouble() * e.mapUnitScaleFactor( e.symbologyScaleDenominator(), widthUnit(), e.mapUnits() );
|
||||
}
|
||||
else if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale )
|
||||
@ -598,6 +605,7 @@ QColor QgsSimpleLineSymbolLayerV2::dxfColor( QgsSymbolV2RenderContext& context )
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
bool ok;
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
return ( QgsSymbolLayerV2Utils::decodeColor( colorString ) );
|
||||
@ -612,6 +620,7 @@ double QgsSimpleLineSymbolLayerV2::dxfOffset( const QgsDxfExport& e, QgsSymbolV2
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOffset );
|
||||
offset = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET, context, mOffset ).toDouble();
|
||||
}
|
||||
return offset;
|
||||
@ -805,6 +814,7 @@ void QgsMarkerLineSymbolLayerV2::renderPolyline( const QPolygonF& points, QgsSym
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOffset );
|
||||
offset = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET, context, mOffset ).toDouble();
|
||||
}
|
||||
|
||||
@ -909,6 +919,7 @@ void QgsMarkerLineSymbolLayerV2::renderPolylineInterval( const QPolygonF& points
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_INTERVAL ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mInterval );
|
||||
interval = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_INTERVAL, context, mInterval ).toDouble();
|
||||
}
|
||||
if ( interval <= 0 )
|
||||
@ -918,6 +929,7 @@ void QgsMarkerLineSymbolLayerV2::renderPolylineInterval( const QPolygonF& points
|
||||
double offsetAlongLine = mOffsetAlongLine;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET_ALONG_LINE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOffsetAlongLine );
|
||||
offsetAlongLine = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET_ALONG_LINE, context, mOffsetAlongLine ).toDouble();
|
||||
}
|
||||
|
||||
@ -992,6 +1004,7 @@ void QgsMarkerLineSymbolLayerV2::renderPolylineVertex( const QPolygonF& points,
|
||||
double offsetAlongLine = mOffsetAlongLine;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET_ALONG_LINE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOffsetAlongLine );
|
||||
offsetAlongLine = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET_ALONG_LINE, context, mOffsetAlongLine ).toDouble();
|
||||
}
|
||||
if ( offsetAlongLine != 0 )
|
||||
|
@ -473,6 +473,7 @@ void QgsSimpleMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV
|
||||
bool ok = true;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mSize );
|
||||
scaledSize = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE, context, mSize, &ok ).toDouble();
|
||||
}
|
||||
|
||||
@ -499,6 +500,7 @@ void QgsSimpleMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV
|
||||
bool usingDataDefinedRotation = false;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( angle );
|
||||
angle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, context, mAngle, &ok ).toDouble() + mLineAngle;
|
||||
usingDataDefinedRotation = ok;
|
||||
}
|
||||
@ -530,6 +532,7 @@ void QgsSimpleMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV
|
||||
bool createdNewPath = false;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mName );
|
||||
QString name = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
{
|
||||
@ -571,12 +574,14 @@ void QgsSimpleMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mBrush.color() ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
mBrush.setColor( QgsSymbolLayerV2Utils::decodeColor( colorString ) );
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mPen.color() ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
{
|
||||
@ -586,6 +591,7 @@ void QgsSimpleMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOutlineWidth );
|
||||
double outlineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, context, QVariant(), &ok ).toDouble();
|
||||
if ( ok )
|
||||
{
|
||||
@ -595,6 +601,7 @@ void QgsSimpleMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenStyle( mOutlineStyle ) );
|
||||
QString outlineStyle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
{
|
||||
@ -815,6 +822,7 @@ bool QgsSimpleMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitSc
|
||||
{
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mSize );
|
||||
size = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE, *context, mSize, &ok ).toDouble();
|
||||
}
|
||||
|
||||
@ -843,6 +851,7 @@ bool QgsSimpleMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitSc
|
||||
|
||||
if ( context && hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mOutlineWidth );
|
||||
outlineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, *context, mOutlineWidth ).toDouble();
|
||||
}
|
||||
if ( mSizeUnit == QgsSymbolV2::MM )
|
||||
@ -855,12 +864,14 @@ bool QgsSimpleMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitSc
|
||||
QColor bc = mBrush.color();
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context->setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( bc ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, *context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
bc = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
}
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER ) )
|
||||
{
|
||||
context->setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( pc ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER, *context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
pc = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -879,12 +890,14 @@ bool QgsSimpleMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitSc
|
||||
double angle = mAngle + mLineAngle;
|
||||
if ( context && hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mAngle );
|
||||
angle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, *context, mAngle ).toDouble() + mLineAngle;
|
||||
}
|
||||
|
||||
QString name( mName );
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mName );
|
||||
name = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME, *context, QVariant(), &ok ).toString();
|
||||
}
|
||||
|
||||
@ -1197,6 +1210,7 @@ void QgsSvgMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Re
|
||||
bool ok = true;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mSize );
|
||||
scaledSize = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE, context, mSize, &ok ).toDouble();
|
||||
}
|
||||
|
||||
@ -1231,6 +1245,7 @@ void QgsSvgMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Re
|
||||
double angle = mAngle + mLineAngle;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mAngle );
|
||||
angle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, context, mAngle ).toDouble() + mLineAngle;
|
||||
}
|
||||
|
||||
@ -1265,18 +1280,21 @@ void QgsSvgMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Re
|
||||
QString path = mPath;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mPath );
|
||||
path = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME, context, mPath ).toString();
|
||||
}
|
||||
|
||||
double outlineWidth = mOutlineWidth;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mOutlineWidth );
|
||||
outlineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, context, mOutlineWidth ).toDouble();
|
||||
}
|
||||
|
||||
QColor fillColor = mFillColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mFillColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
fillColor = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -1285,6 +1303,7 @@ void QgsSvgMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2Re
|
||||
QColor outlineColor = mOutlineColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mOutlineColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
outlineColor = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -1510,6 +1529,7 @@ bool QgsSvgMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScale
|
||||
bool ok = true;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mSize );
|
||||
size = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE, *context, mSize, &ok ).toDouble();
|
||||
}
|
||||
|
||||
@ -1537,6 +1557,7 @@ bool QgsSvgMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScale
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET ) )
|
||||
{
|
||||
context->setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePoint( mOffset ) );
|
||||
QString offsetString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET, *context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
offset = QgsSymbolLayerV2Utils::decodePoint( offsetString );
|
||||
@ -1554,6 +1575,7 @@ bool QgsSvgMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScale
|
||||
double angle = mAngle + mLineAngle;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mAngle );
|
||||
angle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, *context, mAngle ).toDouble() + mLineAngle;
|
||||
}
|
||||
//angle = -angle; //rotation in Qt is counterclockwise
|
||||
@ -1563,18 +1585,21 @@ bool QgsSvgMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScale
|
||||
QString path = mPath;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mPath );
|
||||
path = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME, *context, mPath ).toString();
|
||||
}
|
||||
|
||||
double outlineWidth = mOutlineWidth;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) )
|
||||
{
|
||||
context->setOriginalValueVariable( mOutlineWidth );
|
||||
outlineWidth = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH, *context, mOutlineWidth ).toDouble();
|
||||
}
|
||||
|
||||
QColor fillColor = mFillColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL ) )
|
||||
{
|
||||
context->setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mFillColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_FILL, *context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
fillColor = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -1583,6 +1608,7 @@ bool QgsSvgMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitScale
|
||||
QColor outlineColor = mOutlineColor;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE ) )
|
||||
{
|
||||
context->setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mOutlineColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE, *context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
outlineColor = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -1716,6 +1742,7 @@ void QgsFontMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2R
|
||||
bool ok;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodeColor( mColor ) );
|
||||
QString colorString = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR, context, QVariant(), &ok ).toString();
|
||||
if ( ok )
|
||||
penColor = QgsSymbolLayerV2Utils::decodeColor( colorString );
|
||||
@ -1732,6 +1759,7 @@ void QgsFontMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2R
|
||||
QString charToRender = mChr;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_CHAR ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mChr );
|
||||
charToRender = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_CHAR, context, mChr ).toString();
|
||||
if ( charToRender != mChr )
|
||||
{
|
||||
@ -1746,6 +1774,7 @@ void QgsFontMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2R
|
||||
ok = true;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mSize );
|
||||
scaledSize = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE, context, mSize, &ok ).toDouble();
|
||||
}
|
||||
|
||||
@ -1770,6 +1799,7 @@ void QgsFontMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2R
|
||||
double angle = mAngle + mLineAngle;
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE ) )
|
||||
{
|
||||
context.setOriginalValueVariable( mAngle );
|
||||
angle = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_ANGLE, context, mAngle ).toDouble() + mLineAngle;
|
||||
}
|
||||
|
||||
|
@ -542,6 +542,7 @@ void QgsMarkerSymbolLayerV2::markerOffset( QgsSymbolV2RenderContext& context, do
|
||||
|
||||
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET ) )
|
||||
{
|
||||
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePoint( mOffset ) );
|
||||
QPointF offset = QgsSymbolLayerV2Utils::decodePoint( evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_OFFSET, context ).toString() );
|
||||
offsetX = offset.x();
|
||||
offsetY = offset.y();
|
||||
|
@ -504,6 +504,10 @@ QgsSymbolV2RenderContext::~QgsSymbolV2RenderContext()
|
||||
|
||||
}
|
||||
|
||||
void QgsSymbolV2RenderContext::setOriginalValueVariable( const QVariant& value )
|
||||
{
|
||||
mRenderContext.expressionContext().setOriginalValueVariable( value );
|
||||
}
|
||||
|
||||
double QgsSymbolV2RenderContext::outputLineWidth( double width ) const
|
||||
{
|
||||
|
@ -254,6 +254,13 @@ class CORE_EXPORT QgsSymbolV2RenderContext
|
||||
QgsRenderContext& renderContext() { return mRenderContext; }
|
||||
const QgsRenderContext& renderContext() const { return mRenderContext; }
|
||||
|
||||
/** Sets the original value variable value for data defined symbology
|
||||
* @param value value for original value variable. This usually represents the symbol property value
|
||||
* before any data defined overrides have been applied.
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
void setOriginalValueVariable( const QVariant& value );
|
||||
|
||||
QgsSymbolV2::OutputUnit outputUnit() const { return mOutputUnit; }
|
||||
void setOutputUnit( QgsSymbolV2::OutputUnit u ) { mOutputUnit = u; }
|
||||
|
||||
|
@ -73,6 +73,10 @@ static QgsExpressionContext _getExpressionContext( const void* context )
|
||||
if ( layer )
|
||||
expContext << QgsExpressionContextUtils::layerScope( layer );
|
||||
|
||||
//TODO - show actual value
|
||||
expContext.setOriginalValueVariable( QVariant() );
|
||||
expContext.setHighlightedVariables( QStringList() << QgsExpressionContext::EXPR_ORIGINAL_VALUE );
|
||||
|
||||
return expContext;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user