QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgslayoutrendercontext.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgslayoutrendercontext.cpp
3  --------------------
4  begin : July 2017
5  copyright : (C) 2017 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 
17 #include "qgslayoutrendercontext.h"
18 #include "qgslayout.h"
19 
21  : QObject( layout )
22  , mFlags( FlagAntialiasing | FlagUseAdvancedEffects )
23  , mLayout( layout )
24 {
26 }
27 
28 void QgsLayoutRenderContext::setFlags( const QgsLayoutRenderContext::Flags flags )
29 {
30  if ( flags == mFlags )
31  return;
32 
33  mFlags = flags;
34  emit flagsChanged( mFlags );
35 }
36 
38 {
39  Flags newFlags = mFlags;
40  if ( on )
41  newFlags |= flag;
42  else
43  newFlags &= ~flag;
44 
45  if ( newFlags == mFlags )
46  return;
47 
48  mFlags = newFlags;
49  emit flagsChanged( mFlags );
50 }
51 
52 QgsLayoutRenderContext::Flags QgsLayoutRenderContext::flags() const
53 {
54  return mFlags;
55 }
56 
58 {
59  return mFlags.testFlag( flag );
60 }
61 
62 Qgis::RenderContextFlags QgsLayoutRenderContext::renderContextFlags() const
63 {
64  Qgis::RenderContextFlags flags = Qgis::RenderContextFlags();
65  if ( mFlags & FlagAntialiasing )
66  {
69  }
70  if ( mFlags & FlagUseAdvancedEffects )
72  if ( mFlags & FlagLosslessImageRendering )
74 
75  // TODO - expose as layout context flag?
77  return flags;
78 }
79 
81 {
82  if ( qgsDoubleNear( dpi, mMeasurementConverter.dpi() ) )
83  return;
84 
85  mMeasurementConverter.setDpi( dpi );
86  emit dpiChanged();
87 }
88 
90 {
91  return mMeasurementConverter.dpi();
92 }
93 
95 {
96  return mGridVisible;
97 }
98 
100 {
101  mGridVisible = visible;
102 }
103 
105 {
106  return mBoundingBoxesVisible;
107 }
108 
110 {
111  mBoundingBoxesVisible = visible;
112 }
113 
115 {
116  mPagesVisible = visible;
117 }
118 
120 {
121  return mExportThemes;
122 }
123 
124 void QgsLayoutRenderContext::setExportThemes( const QStringList &exportThemes )
125 {
126  mExportThemes = exportThemes;
127 }
128 
129 void QgsLayoutRenderContext::setPredefinedScales( const QVector<qreal> &scales )
130 {
131  if ( scales == mPredefinedScales )
132  return;
133 
134  mPredefinedScales = scales;
135  // make sure the list is sorted
136  std::sort( mPredefinedScales.begin(), mPredefinedScales.end() ); // clazy:exclude=detaching-member
138 }
139 
141 {
142  return mFeatureFilterProvider;
143 }
144 
146 {
147  mFeatureFilterProvider = featureFilterProvider;
148 }
QgsLayoutRenderContext::FlagUseAdvancedEffects
@ FlagUseAdvancedEffects
Enable advanced effects such as blend modes.
Definition: qgslayoutrendercontext.h:49
QgsLayoutRenderContext::flags
QgsLayoutRenderContext::Flags flags() const
Returns the current combination of flags used for rendering the layout.
Definition: qgslayoutrendercontext.cpp:52
QgsVectorSimplifyMethod::NoSimplification
@ NoSimplification
No simplification can be applied.
Definition: qgsvectorsimplifymethod.h:52
Qgis::RenderContextFlag::HighQualityImageTransforms
@ HighQualityImageTransforms
Enable high quality image transformations, which results in better appearance of scaled or rotated ra...
Qgis::RenderContextFlag::ForceVectorOutput
@ ForceVectorOutput
Vector graphics should not be cached and drawn as raster images.
QgsLayoutRenderContext::predefinedScalesChanged
void predefinedScalesChanged()
Emitted when the list of predefined scales changes.
QgsLayoutRenderContext::renderContextFlags
Qgis::RenderContextFlags renderContextFlags() const
Returns the combination of render context flags matched to the layout context's settings.
Definition: qgslayoutrendercontext.cpp:62
QgsVectorSimplifyMethod::setSimplifyHints
void setSimplifyHints(SimplifyHints simplifyHints)
Sets the simplification hints of the vector layer managed.
Definition: qgsvectorsimplifymethod.h:62
QgsLayoutRenderContext::setFlags
void setFlags(QgsLayoutRenderContext::Flags flags)
Sets the combination of flags that will be used for rendering the layout.
Definition: qgslayoutrendercontext.cpp:28
QgsLayoutMeasurementConverter::setDpi
void setDpi(const double dpi)
Sets the dots per inch (dpi) for the measurement converter.
Definition: qgslayoutmeasurementconverter.h:54
QgsLayoutRenderContext::QgsLayoutRenderContext
QgsLayoutRenderContext(QgsLayout *layout)
Constructor for QgsLayoutRenderContext.
Definition: qgslayoutrendercontext.cpp:20
QgsLayoutRenderContext::testFlag
bool testFlag(Flag flag) const
Check whether a particular rendering flag is enabled for the layout.
Definition: qgslayoutrendercontext.cpp:57
QgsLayoutRenderContext::setDpi
void setDpi(double dpi)
Sets the dpi for outputting the layout.
Definition: qgslayoutrendercontext.cpp:80
QgsLayoutRenderContext::setPredefinedScales
void setPredefinedScales(const QVector< qreal > &scales)
Sets the list of predefined scales to use with the layout.
Definition: qgslayoutrendercontext.cpp:129
qgsDoubleNear
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
Definition: qgis.h:2265
QgsLayoutRenderContext::featureFilterProvider
QgsFeatureFilterProvider * featureFilterProvider() const
Returns the possibly NULL feature filter provider.
Definition: qgslayoutrendercontext.cpp:140
QgsLayoutRenderContext::exportThemes
QStringList exportThemes() const
Returns a list of map themes to use during the export.
Definition: qgslayoutrendercontext.cpp:119
QgsLayoutRenderContext::flagsChanged
void flagsChanged(QgsLayoutRenderContext::Flags flags)
Emitted whenever the context's flags change.
qgslayout.h
QgsLayoutRenderContext::FlagLosslessImageRendering
@ FlagLosslessImageRendering
Render images losslessly whenever possible, instead of the default lossy jpeg rendering used for some...
Definition: qgslayoutrendercontext.h:55
QgsLayoutRenderContext::setFlag
void setFlag(QgsLayoutRenderContext::Flag flag, bool on=true)
Enables or disables a particular rendering flag for the layout.
Definition: qgslayoutrendercontext.cpp:37
Qgis::RenderContextFlag::Antialiasing
@ Antialiasing
Use antialiasing while drawing.
qgslayoutrendercontext.h
QgsLayoutRenderContext::Flag
Flag
Flags for controlling how a layout is rendered.
Definition: qgslayoutrendercontext.h:44
QgsLayoutRenderContext::setFeatureFilterProvider
void setFeatureFilterProvider(QgsFeatureFilterProvider *featureFilterProvider)
Sets feature filter provider to featureFilterProvider.
Definition: qgslayoutrendercontext.cpp:145
QgsLayout
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:50
QgsLayoutMeasurementConverter::dpi
double dpi() const
Returns the Dots per inch (DPI) of the measurement converter.
Definition: qgslayoutmeasurementconverter.h:61
QgsLayoutRenderContext::setExportThemes
void setExportThemes(const QStringList &themes)
Sets a list of map themes to use during the export.
Definition: qgslayoutrendercontext.cpp:124
QgsLayoutRenderContext::setGridVisible
void setGridVisible(bool visible)
Sets whether the page grid should be visible.
Definition: qgslayoutrendercontext.cpp:99
QgsLayoutRenderContext::boundingBoxesVisible
bool boundingBoxesVisible() const
Returns true if the item bounding boxes should be drawn.
Definition: qgslayoutrendercontext.cpp:104
QgsLayoutRenderContext::setPagesVisible
void setPagesVisible(bool visible)
Sets whether the page items should be visible in the layout.
Definition: qgslayoutrendercontext.cpp:114
QgsFeatureFilterProvider
Abstract interface for use by classes that filter the features or attributes of a layer.
Definition: qgsfeaturefilterprovider.h:43
QgsLayoutRenderContext::dpi
double dpi() const
Returns the dpi for outputting the layout.
Definition: qgslayoutrendercontext.cpp:89
QgsLayoutRenderContext::gridVisible
bool gridVisible() const
Returns true if the page grid should be drawn.
Definition: qgslayoutrendercontext.cpp:94
QgsLayoutRenderContext::FlagAntialiasing
@ FlagAntialiasing
Use antialiasing when drawing items.
Definition: qgslayoutrendercontext.h:48
Qgis::RenderContextFlag::UseAdvancedEffects
@ UseAdvancedEffects
Enable layer opacity and blending effects.
QgsLayoutRenderContext::setBoundingBoxesVisible
void setBoundingBoxesVisible(bool visible)
Sets whether the item bounding boxes should be visible.
Definition: qgslayoutrendercontext.cpp:109
Qgis::RenderContextFlag::LosslessImageRendering
@ LosslessImageRendering
Render images losslessly whenever possible, instead of the default lossy jpeg rendering used for some...
QgsLayoutRenderContext::dpiChanged
void dpiChanged()
Emitted when the context's DPI is changed.