QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgssymbolrendercontext.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgssymbolrendercontext.cpp
3 ---------------------
4 begin : November 2009
5 copyright : (C) 2009 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17#include "qgsrendercontext.h"
18#include "qgslegendpatchshape.h"
19
20QgsSymbolRenderContext::QgsSymbolRenderContext( QgsRenderContext &c, QgsUnitTypes::RenderUnit u, qreal opacity, bool selected, Qgis::SymbolRenderHints renderHints, const QgsFeature *f, const QgsFields &fields, const QgsMapUnitScale &mapUnitScale )
21 : mRenderContext( c )
22 , mOutputUnit( u )
23 , mMapUnitScale( mapUnitScale )
24 , mOpacity( opacity )
25 , mSelected( selected )
26 , mRenderHints( renderHints )
27 , mFeature( f )
28 , mFields( fields )
29 , mGeometryPartCount( 0 )
30 , mGeometryPartNum( 0 )
31{
32}
33
35
37{
38 mRenderContext.expressionContext().setOriginalValueVariable( value );
39}
40
41double QgsSymbolRenderContext::outputLineWidth( double width ) const
42{
43 return mRenderContext.convertToPainterUnits( width, mOutputUnit, mMapUnitScale );
44}
45
46double QgsSymbolRenderContext::outputPixelSize( double size ) const
47{
48 return mRenderContext.convertToPainterUnits( size, mOutputUnit, mMapUnitScale );
49}
50
51// cppcheck-suppress operatorEqVarError
53{
54 // This is just a dummy implementation of assignment.
55 // sip 4.7 generates a piece of code that needs this function to exist.
56 // It's not generated automatically by the compiler because of
57 // mRenderContext member which is a reference (and thus can't be changed).
58 Q_ASSERT( false );
59 return *this;
60}
61
63{
64 return mExpressionContextScope.get();
65}
66
68{
69 mExpressionContextScope.reset( contextScope );
70}
71
73{
74 return mPatchShape.get();
75}
76
78{
79 mPatchShape.reset( new QgsLegendPatchShape( patchShape ) );
80}
Single scope for storing variables and functions for use within a QgsExpressionContext.
void setOriginalValueVariable(const QVariant &value)
Sets the original value variable value for the context.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
Container of fields for a vector layer.
Definition: qgsfields.h:45
Represents a patch shape for use in map legends.
Struct for storing maximum and minimum scales for measurements in map units.
Contains information about the context of a rendering operation.
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
QgsExpressionContext & expressionContext()
Gets the expression context.
void setExpressionContextScope(QgsExpressionContextScope *contextScope)
Set an expression scope for this symbol.
QgsSymbolRenderContext & operator=(const QgsSymbolRenderContext &)
Q_DECL_DEPRECATED double outputLineWidth(double width) const
Q_DECL_DEPRECATED double outputPixelSize(double size) const
void setOriginalValueVariable(const QVariant &value)
Sets the original value variable value for data defined symbology.
void setPatchShape(const QgsLegendPatchShape &shape)
Sets the symbol patch shape, to use if rendering symbol preview icons.
QgsExpressionContextScope * expressionContextScope()
This scope is always available when a symbol of this type is being rendered.
QgsSymbolRenderContext(QgsRenderContext &c, QgsUnitTypes::RenderUnit u, qreal opacity=1.0, bool selected=false, Qgis::SymbolRenderHints renderHints=Qgis::SymbolRenderHints(), const QgsFeature *f=nullptr, const QgsFields &fields=QgsFields(), const QgsMapUnitScale &mapUnitScale=QgsMapUnitScale())
Constructor for QgsSymbolRenderContext.
const QgsLegendPatchShape * patchShape() const
Returns the symbol patch shape, to use if rendering symbol preview icons.
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:168
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c