mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
Switch to using flags for render context settings
This commit is contained in:
parent
824fd7bf32
commit
8ddc909f37
@ -10,6 +10,26 @@ class QgsRenderContext
|
||||
QgsRenderContext();
|
||||
~QgsRenderContext();
|
||||
|
||||
//! Enumeration of flags that affect rendering operations
|
||||
enum Flag
|
||||
{
|
||||
DrawEditingInfo, //!< Enable drawing of vertex markers for layers in editing mode
|
||||
ForceVectorOutput, //!< Vector graphics should not be cached and drawn as raster images
|
||||
UseAdvancedEffects, //!< Enable layer transparency and blending effects
|
||||
UseRenderingOptimization, //!< Enable vector simplification and other rendering optimizations
|
||||
DrawSelection, //!< Whether vector selections should be shown in the rendered map
|
||||
};
|
||||
typedef QFlags<QgsRenderContext::Flag> Flags;
|
||||
|
||||
//! Set combination of flags that will be used for rendering
|
||||
void setFlags( const QgsRenderContext::Flags& flags );
|
||||
//! Enable or disable a particular flag (other flags are not affected)
|
||||
void setFlag( Flag flag, bool on = true );
|
||||
//! Return combination of flags used for rendering
|
||||
Flags flags() const;
|
||||
//! Check whether a particular flag is enabled
|
||||
bool testFlag( Flag flag ) const;
|
||||
|
||||
//! create initialized QgsRenderContext instance from given QgsMapSettings
|
||||
//! @note added in 2.4
|
||||
static QgsRenderContext fromMapSettings( const QgsMapSettings& mapSettings );
|
||||
@ -35,6 +55,7 @@ class QgsRenderContext
|
||||
|
||||
/** Returns true if advanced effects such as blend modes such be used */
|
||||
bool useAdvancedEffects() const;
|
||||
|
||||
/** Used to enable or disable advanced effects such as blend modes */
|
||||
void setUseAdvancedEffects( bool enabled );
|
||||
|
||||
@ -60,13 +81,17 @@ class QgsRenderContext
|
||||
void setCoordinateTransform( const QgsCoordinateTransform* t );
|
||||
void setMapToPixel( const QgsMapToPixel& mtp );
|
||||
void setExtent( const QgsRectangle& extent );
|
||||
|
||||
void setDrawEditingInformation( bool b );
|
||||
|
||||
void setRenderingStopped( bool stopped );
|
||||
void setScaleFactor( double factor );
|
||||
void setRasterScaleFactor( double factor );
|
||||
void setRendererScale( double scale );
|
||||
void setPainter( QPainter* p );
|
||||
|
||||
void setForceVectorOutput( bool force );
|
||||
|
||||
void setLabelingEngine( QgsLabelingEngineInterface* iface );
|
||||
void setSelectionColor( const QColor& color );
|
||||
|
||||
@ -80,12 +105,35 @@ class QgsRenderContext
|
||||
|
||||
/** Returns true if the rendering optimization (geometry simplification) can be executed*/
|
||||
bool useRenderingOptimization() const;
|
||||
|
||||
void setUseRenderingOptimization( bool enabled );
|
||||
|
||||
//! Added in QGIS v2.4
|
||||
const QgsVectorSimplifyMethod& vectorSimplifyMethod() const;
|
||||
void setVectorSimplifyMethod( const QgsVectorSimplifyMethod& simplifyMethod );
|
||||
|
||||
/** Sets the expression context. This context is used for all expression evaluation
|
||||
* associated with this render context.
|
||||
* @see expressionContext()
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
void setExpressionContext( const QgsExpressionContext& context );
|
||||
|
||||
/** Gets the expression context. This context should be used for all expression evaluation
|
||||
* associated with this render context.
|
||||
* @see setExpressionContext()
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
QgsExpressionContext& expressionContext();
|
||||
|
||||
/** Gets the expression context (const version). This context should be used for all expression evaluation
|
||||
* associated with this render context.
|
||||
* @see setExpressionContext()
|
||||
* @note added in QGIS 2.12
|
||||
* @note not available in Python bindings
|
||||
*/
|
||||
//const QgsExpressionContext& expressionContext() const;
|
||||
|
||||
/** Returns pointer to the unsegmentized geometry
|
||||
@return the geometry*/
|
||||
const QgsAbstractGeometryV2* geometry() const;
|
||||
|
@ -21,19 +21,15 @@
|
||||
#include "qgsmapsettings.h"
|
||||
|
||||
QgsRenderContext::QgsRenderContext()
|
||||
: mPainter( 0 )
|
||||
: mFlags( DrawEditingInfo | UseAdvancedEffects | DrawSelection | UseRenderingOptimization )
|
||||
, mPainter( 0 )
|
||||
, mCoordTransform( 0 )
|
||||
, mDrawEditingInformation( true )
|
||||
, mForceVectorOutput( false )
|
||||
, mUseAdvancedEffects( true )
|
||||
, mRenderingStopped( false )
|
||||
, mScaleFactor( 1.0 )
|
||||
, mRasterScaleFactor( 1.0 )
|
||||
, mRendererScale( 1.0 )
|
||||
, mLabelingEngine( NULL )
|
||||
, mLabelingEngine2( 0 )
|
||||
, mShowSelection( true )
|
||||
, mUseRenderingOptimization( true )
|
||||
, mGeometry( 0 )
|
||||
{
|
||||
mVectorSimplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification );
|
||||
@ -43,18 +39,41 @@ QgsRenderContext::~QgsRenderContext()
|
||||
{
|
||||
}
|
||||
|
||||
void QgsRenderContext::setFlags( const QgsRenderContext::Flags& flags )
|
||||
{
|
||||
mFlags = flags;
|
||||
}
|
||||
|
||||
void QgsRenderContext::setFlag( QgsRenderContext::Flag flag, bool on )
|
||||
{
|
||||
if ( on )
|
||||
mFlags |= flag;
|
||||
else
|
||||
mFlags &= ~flag;
|
||||
}
|
||||
|
||||
QgsRenderContext::Flags QgsRenderContext::flags() const
|
||||
{
|
||||
return mFlags;
|
||||
}
|
||||
|
||||
bool QgsRenderContext::testFlag( QgsRenderContext::Flag flag ) const
|
||||
{
|
||||
return mFlags.testFlag( flag );
|
||||
}
|
||||
|
||||
QgsRenderContext QgsRenderContext::fromMapSettings( const QgsMapSettings& mapSettings )
|
||||
{
|
||||
QgsRenderContext ctx;
|
||||
ctx.setMapToPixel( mapSettings.mapToPixel() );
|
||||
ctx.setExtent( mapSettings.visibleExtent() );
|
||||
ctx.setDrawEditingInformation( mapSettings.testFlag( QgsMapSettings::DrawEditingInfo ) );
|
||||
ctx.setForceVectorOutput( mapSettings.testFlag( QgsMapSettings::ForceVectorOutput ) );
|
||||
ctx.setUseAdvancedEffects( mapSettings.testFlag( QgsMapSettings::UseAdvancedEffects ) );
|
||||
ctx.setUseRenderingOptimization( mapSettings.testFlag( QgsMapSettings::UseRenderingOptimization ) );
|
||||
ctx.setFlag( DrawEditingInfo, mapSettings.testFlag( QgsMapSettings::DrawEditingInfo ) );
|
||||
ctx.setFlag( ForceVectorOutput, mapSettings.testFlag( QgsMapSettings::ForceVectorOutput ) );
|
||||
ctx.setFlag( UseAdvancedEffects, mapSettings.testFlag( QgsMapSettings::UseAdvancedEffects ) );
|
||||
ctx.setFlag( UseRenderingOptimization, mapSettings.testFlag( QgsMapSettings::UseRenderingOptimization ) );
|
||||
ctx.setCoordinateTransform( 0 );
|
||||
ctx.setSelectionColor( mapSettings.selectionColor() );
|
||||
ctx.setShowSelection( mapSettings.testFlag( QgsMapSettings::DrawSelection ) );
|
||||
ctx.setFlag( DrawSelection, mapSettings.testFlag( QgsMapSettings::DrawSelection ) );
|
||||
ctx.setRasterScaleFactor( 1.0 );
|
||||
ctx.setScaleFactor( mapSettings.outputDpi() / 25.4 ); // = pixels per mm
|
||||
ctx.setRendererScale( mapSettings.scale() );
|
||||
@ -67,7 +86,57 @@ QgsRenderContext QgsRenderContext::fromMapSettings( const QgsMapSettings& mapSet
|
||||
return ctx;
|
||||
}
|
||||
|
||||
bool QgsRenderContext::forceVectorOutput() const
|
||||
{
|
||||
return mFlags.testFlag( ForceVectorOutput );
|
||||
}
|
||||
|
||||
bool QgsRenderContext::useAdvancedEffects() const
|
||||
{
|
||||
return mFlags.testFlag( UseAdvancedEffects );
|
||||
}
|
||||
|
||||
void QgsRenderContext::setUseAdvancedEffects( bool enabled )
|
||||
{
|
||||
setFlag( UseAdvancedEffects, enabled );
|
||||
}
|
||||
|
||||
bool QgsRenderContext::drawEditingInformation() const
|
||||
{
|
||||
return mFlags.testFlag( DrawEditingInfo );
|
||||
}
|
||||
|
||||
bool QgsRenderContext::showSelection() const
|
||||
{
|
||||
return mFlags.testFlag( DrawSelection );
|
||||
}
|
||||
|
||||
void QgsRenderContext::setCoordinateTransform( const QgsCoordinateTransform* t )
|
||||
{
|
||||
mCoordTransform = t;
|
||||
}
|
||||
|
||||
void QgsRenderContext::setDrawEditingInformation( bool b )
|
||||
{
|
||||
setFlag( DrawEditingInfo, b );
|
||||
}
|
||||
|
||||
void QgsRenderContext::setForceVectorOutput( bool force )
|
||||
{
|
||||
setFlag( ForceVectorOutput, force );
|
||||
}
|
||||
|
||||
void QgsRenderContext::setShowSelection( const bool showSelection )
|
||||
{
|
||||
setFlag( DrawSelection, showSelection );
|
||||
}
|
||||
|
||||
bool QgsRenderContext::useRenderingOptimization() const
|
||||
{
|
||||
return mFlags.testFlag( UseRenderingOptimization );
|
||||
}
|
||||
|
||||
void QgsRenderContext::setUseRenderingOptimization( bool enabled )
|
||||
{
|
||||
setFlag( UseRenderingOptimization, enabled );
|
||||
}
|
||||
|
@ -45,6 +45,39 @@ class CORE_EXPORT QgsRenderContext
|
||||
QgsRenderContext();
|
||||
~QgsRenderContext();
|
||||
|
||||
/** Enumeration of flags that affect rendering operations.
|
||||
* @note added in QGIS 2.14
|
||||
*/
|
||||
enum Flag
|
||||
{
|
||||
DrawEditingInfo = 0x01, //!< Enable drawing of vertex markers for layers in editing mode
|
||||
ForceVectorOutput = 0x02, //!< Vector graphics should not be cached and drawn as raster images
|
||||
UseAdvancedEffects = 0x04, //!< Enable layer transparency and blending effects
|
||||
UseRenderingOptimization = 0x08, //!< Enable vector simplification and other rendering optimizations
|
||||
DrawSelection = 0x10, //!< Whether vector selections should be shown in the rendered map
|
||||
};
|
||||
Q_DECLARE_FLAGS( Flags, Flag )
|
||||
|
||||
/** Set combination of flags that will be used for rendering.
|
||||
* @note added in QGIS 2.14
|
||||
*/
|
||||
void setFlags( const QgsRenderContext::Flags& flags );
|
||||
|
||||
/** Enable or disable a particular flag (other flags are not affected)
|
||||
* @note added in QGIS 2.14
|
||||
*/
|
||||
void setFlag( Flag flag, bool on = true );
|
||||
|
||||
/** Return combination of flags used for rendering.
|
||||
* @note added in QGIS 2.14
|
||||
*/
|
||||
Flags flags() const;
|
||||
|
||||
/** Check whether a particular flag is enabled.
|
||||
* @note added in QGIS 2.14
|
||||
*/
|
||||
bool testFlag( Flag flag ) const;
|
||||
|
||||
//! create initialized QgsRenderContext instance from given QgsMapSettings
|
||||
//! @note added in 2.4
|
||||
static QgsRenderContext fromMapSettings( const QgsMapSettings& mapSettings );
|
||||
@ -66,14 +99,17 @@ class CORE_EXPORT QgsRenderContext
|
||||
|
||||
bool renderingStopped() const {return mRenderingStopped;}
|
||||
|
||||
bool forceVectorOutput() const {return mForceVectorOutput;}
|
||||
bool forceVectorOutput() const;
|
||||
|
||||
/** Returns true if advanced effects such as blend modes such be used */
|
||||
bool useAdvancedEffects() const {return mUseAdvancedEffects;}
|
||||
/** Used to enable or disable advanced effects such as blend modes */
|
||||
void setUseAdvancedEffects( bool enabled ) { mUseAdvancedEffects = enabled; }
|
||||
/** Returns true if advanced effects such as blend modes such be used
|
||||
*/
|
||||
bool useAdvancedEffects() const;
|
||||
|
||||
bool drawEditingInformation() const {return mDrawEditingInformation;}
|
||||
/** Used to enable or disable advanced effects such as blend modes
|
||||
*/
|
||||
void setUseAdvancedEffects( bool enabled );
|
||||
|
||||
bool drawEditingInformation() const;
|
||||
|
||||
double rendererScale() const {return mRendererScale;}
|
||||
|
||||
@ -90,7 +126,7 @@ class CORE_EXPORT QgsRenderContext
|
||||
* @see selectionColor
|
||||
* @note Added in QGIS v2.4
|
||||
*/
|
||||
bool showSelection() const { return mShowSelection; }
|
||||
bool showSelection() const;
|
||||
|
||||
//setters
|
||||
|
||||
@ -98,13 +134,17 @@ class CORE_EXPORT QgsRenderContext
|
||||
void setCoordinateTransform( const QgsCoordinateTransform* t );
|
||||
void setMapToPixel( const QgsMapToPixel& mtp ) {mMapToPixel = mtp;}
|
||||
void setExtent( const QgsRectangle& extent ) {mExtent = extent;}
|
||||
void setDrawEditingInformation( bool b ) {mDrawEditingInformation = b;}
|
||||
|
||||
void setDrawEditingInformation( bool b );
|
||||
|
||||
void setRenderingStopped( bool stopped ) {mRenderingStopped = stopped;}
|
||||
void setScaleFactor( double factor ) {mScaleFactor = factor;}
|
||||
void setRasterScaleFactor( double factor ) {mRasterScaleFactor = factor;}
|
||||
void setRendererScale( double scale ) {mRendererScale = scale;}
|
||||
void setPainter( QPainter* p ) {mPainter = p;}
|
||||
void setForceVectorOutput( bool force ) {mForceVectorOutput = force;}
|
||||
|
||||
void setForceVectorOutput( bool force );
|
||||
|
||||
void setLabelingEngine( QgsLabelingEngineInterface* iface ) { mLabelingEngine = iface; }
|
||||
//! Assign new labeling engine
|
||||
void setLabelingEngineV2( QgsLabelingEngineV2* engine2 ) { mLabelingEngine2 = engine2; }
|
||||
@ -116,11 +156,13 @@ class CORE_EXPORT QgsRenderContext
|
||||
* @see setSelectionColor
|
||||
* @note Added in QGIS v2.4
|
||||
*/
|
||||
void setShowSelection( const bool showSelection ) { mShowSelection = showSelection; }
|
||||
void setShowSelection( const bool showSelection );
|
||||
|
||||
/** Returns true if the rendering optimization (geometry simplification) can be executed*/
|
||||
bool useRenderingOptimization() const { return mUseRenderingOptimization; }
|
||||
void setUseRenderingOptimization( bool enabled ) { mUseRenderingOptimization = enabled; }
|
||||
/** Returns true if the rendering optimization (geometry simplification) can be executed
|
||||
*/
|
||||
bool useRenderingOptimization() const;
|
||||
|
||||
void setUseRenderingOptimization( bool enabled );
|
||||
|
||||
//! Added in QGIS v2.4
|
||||
const QgsVectorSimplifyMethod& vectorSimplifyMethod() const { return mVectorSimplifyMethod; }
|
||||
@ -144,6 +186,7 @@ class CORE_EXPORT QgsRenderContext
|
||||
* associated with this render context.
|
||||
* @see setExpressionContext()
|
||||
* @note added in QGIS 2.12
|
||||
* @note not available in Python bindings
|
||||
*/
|
||||
const QgsExpressionContext& expressionContext() const { return mExpressionContext; }
|
||||
|
||||
@ -154,23 +197,16 @@ class CORE_EXPORT QgsRenderContext
|
||||
|
||||
private:
|
||||
|
||||
Flags mFlags;
|
||||
|
||||
/** Painter for rendering operations*/
|
||||
QPainter* mPainter;
|
||||
|
||||
/** For transformation between coordinate systems. Can be 0 if on-the-fly reprojection is not used*/
|
||||
const QgsCoordinateTransform* mCoordTransform;
|
||||
|
||||
/** True if vertex markers for editing should be drawn*/
|
||||
bool mDrawEditingInformation;
|
||||
|
||||
QgsRectangle mExtent;
|
||||
|
||||
/** If true then no rendered vector elements should be cached as image*/
|
||||
bool mForceVectorOutput;
|
||||
|
||||
/** Flag if advanced visual effects such as blend modes should be used. True by default*/
|
||||
bool mUseAdvancedEffects;
|
||||
|
||||
QgsMapToPixel mMapToPixel;
|
||||
|
||||
/** True if the rendering has been canceled*/
|
||||
@ -191,15 +227,9 @@ class CORE_EXPORT QgsRenderContext
|
||||
/** Newer labeling engine implementation (can be NULL) */
|
||||
QgsLabelingEngineV2* mLabelingEngine2;
|
||||
|
||||
/** Whether selection should be shown*/
|
||||
bool mShowSelection;
|
||||
|
||||
/** Color used for features that are marked as selected */
|
||||
QColor mSelectionColor;
|
||||
|
||||
/** True if the rendering optimization (geometry simplification) can be executed*/
|
||||
bool mUseRenderingOptimization;
|
||||
|
||||
/** Simplification object which holds the information about how to simplify the features for fast rendering */
|
||||
QgsVectorSimplifyMethod mVectorSimplifyMethod;
|
||||
|
||||
@ -210,4 +240,6 @@ class CORE_EXPORT QgsRenderContext
|
||||
const QgsAbstractGeometryV2* mGeometry;
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS( QgsRenderContext::Flags )
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user