18 #include "qgsexpression.h" 32 QMapIterator<QString, QgsExpression *> i( mExpressions );
43 if ( !mExpressions.contains( expression ) )
45 QgsExpression *expr =
new QgsExpression( expression );
46 expr->prepare( &context );
47 mExpressions[expression] = expr;
49 return mExpressions[expression];
74 f.setPixelSize( pixelsize > 0 ? pixelsize : 1 );
86 double scaledValue = value;
93 scaledValue = std::sqrt( scaledValue );
94 scaledLowerValue = std::sqrt( scaledLowerValue );
95 scaledUpperValue = std::sqrt( scaledUpperValue );
99 double scaledRatio = ( scaledValue - scaledLowerValue ) / ( scaledUpperValue - scaledLowerValue );
101 QSizeF size = QSizeF( is.
upperSize.width() * scaledRatio + is.
lowerSize.width() * ( 1 - scaledRatio ),
115 size.setWidth( size.height() );
QSizeF sizePainterUnits(QSizeF size, const QgsDiagramSettings &s, const QgsRenderContext &c)
Calculates a size to match the current settings and rendering context.
QgsUnitTypes::RenderUnit lineSizeUnit
Line unit index.
double minimumSize
Scale diagrams smaller than mMinimumSize to mMinimumSize.
bool qgsDoubleNear(double a, double b, double epsilon=4 *DBL_EPSILON)
Compare two doubles (but allow some difference)
QgsDiagram()=default
Constructor for QgsDiagram.
QgsExpression * getExpression(const QString &expression, const QgsExpressionContext &context)
Returns a prepared expression for the specified context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QgsMapUnitScale sizeScale
Diagram size unit scale.
double mapUnitsPerPixel() const
Return current map units per pixel.
Base class for all diagram types.
QgsUnitTypes::RenderUnit sizeType
Diagram size unit.
QSizeF sizeForValue(double value, const QgsDiagramSettings &s, const QgsDiagramInterpolationSettings &is) const
Returns the scaled size of a diagram for a value, respecting the specified diagram interpolation sett...
Additional diagram settings for interpolated size rendering.
Contains information about the context of a rendering operation.
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to painter units (pixels).
QFont scaledFont(const QgsDiagramSettings &s, const QgsRenderContext &c)
Calculates a size to match the current settings and rendering context.
const QgsMapToPixel & mapToPixel() const
QgsMapUnitScale lineSizeScale
Line unit scale.
void setPenWidth(QPen &pen, const QgsDiagramSettings &s, const QgsRenderContext &c)
Changes the pen width to match the current settings and rendering context.
double scaleFactor() const
Returns the scaling factor for the render to convert painter units to physical sizes.
Stores the settings for rendering a single diagram.