QGIS API Documentation  3.21.0-Master (5b68dc587e)
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 
16 #include "qgssymbolrendercontext.h"
17 #include "qgsrendercontext.h"
18 #include "qgslegendpatchshape.h"
19 
20 QgsSymbolRenderContext::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 
41 double QgsSymbolRenderContext::outputLineWidth( double width ) const
42 {
43  return mRenderContext.convertToPainterUnits( width, mOutputUnit, mMapUnitScale );
44 }
45 
46 double 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.
QgsExpressionContext & expressionContext()
Gets the expression context.
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).
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