17#ifndef QGSLAYOUTITEMMAP_H
18#define QGSLAYOUTITEMMAP_H
63 void setEnabled(
bool enabled );
84 bool forceLabelsInsideFeature()
const;
91 void setForceLabelsInsideFeature(
bool forceInside );
99 bool restrictToLayers()
const;
107 void setRestrictToLayers(
bool enabled );
117 QList< QgsMapLayer * > layersToClip()
const;
127 void setLayersToClip(
const QList< QgsMapLayer * > &layers );
134 bool writeXml( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext &context )
const;
141 bool readXml(
const QDomElement &element,
const QDomDocument &doc,
const QgsReadWriteContext &context );
151 void layersAboutToBeRemoved(
const QList<QgsMapLayer *> &layers );
156 bool mClipToAtlasFeature =
false;
157 bool mRestrictToLayers =
false;
158 QList< QgsMapLayerRef > mLayersToClip;
160 bool mForceLabelsInsideFeature =
false;
187 bool isActive()
const;
194 bool enabled()
const;
201 void setEnabled(
bool enabled );
262 bool forceLabelsInsideClipPath()
const;
269 void setForceLabelsInsideClipPath(
bool forceInside );
276 bool writeXml( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext &context )
const;
284 bool readXml(
const QDomElement &element,
const QDomDocument &doc,
const QgsReadWriteContext &context );
290 void finalizeRestoreFromXml();
302 bool mEnabled =
false;
304 bool mForceLabelsInsideClipPath =
false;
306 QPointer< QgsLayoutItem > mClipPathSource;
307 QString mClipPathUuid;
353 ShowPartialLabels = 1 << 0,
354 ShowUnplacedLabels = 1 << 1,
364 int type()
const override;
365 QIcon icon()
const override;
388 QString displayName()
const override;
398 void paint( QPainter *painter,
const QStyleOptionGraphicsItem *itemStyle, QWidget *pWidget )
override;
403 Q_DECL_DEPRECATED
int numberExportLayers() const override
SIP_DEPRECATED;
405 void startLayeredExport() override;
406 void stopLayeredExport() override;
407 bool nextExportPart() override;
417 double scale() const;
426 void setScale(
double scale,
bool forceUpdate = true );
461 QPolygonF visibleExtentPolygon() const;
518 QList<QgsMapLayer *> layers()
const;
529 void setLayers(
const QList<QgsMapLayer *> &layers );
553 void setLayerStyleOverrides(
const QMap<QString, QString> &overrides );
558 void storeCurrentLayerStyles();
575 void setFollowVisibilityPreset(
bool follow );
592 void setFollowVisibilityPresetName(
const QString &name );
594 void moveContent(
double dx,
double dy )
override;
595 void setMoveContentPreviewOffset(
double dx,
double dy )
override;
597 void zoomContent(
double factor, QPointF point )
override;
601 bool containsWmsLayer()
const;
603 bool requiresRasterization()
const override;
604 bool containsAdvancedEffects()
const override;
612 void setMapRotation(
double rotation );
651 void setAtlasDriven(
bool enabled );
755 double mapUnitsToLayoutUnits()
const;
766 void finalizeRestoreFromXml()
override;
855 QTransform layoutToMapCoordsTransform()
const;
878 void setZRangeEnabled(
bool enabled );
888 bool zRangeEnabled()
const;
915 double estimatedFrameBleed()
const override;
920 bool writePropertiesToElement( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext &context )
const override;
921 bool readPropertiesFromElement(
const QDomElement &element,
const QDomDocument &document,
const QgsReadWriteContext &context )
override;
922 QPainterPath framePath()
const override;
928 QRectF boundingRect()
const override;
931 QPolygonF transformedMapPolygon()
const;
934 QPointF mapToItemCoords( QPointF mapCoords )
const;
992 void refresh()
override;
994 void invalidateCache()
override;
997 void updateBoundingRect();
1002 void layersAboutToBeRemoved(
const QList<QgsMapLayer *> &layers );
1004 void painterJobFinished();
1006 void shapeChanged();
1008 void mapThemeChanged(
const QString &theme );
1011 void currentMapThemeRenamed(
const QString &theme,
const QString &newTheme );
1014 void recreateCachedImageInBackground();
1016 void updateAtlasFeature();
1024 std::unique_ptr< QgsLayoutItemMapGridStack > mGridStack;
1025 std::unique_ptr< QgsLayoutItemMapOverviewStack > mOverviewStack;
1047 std::unique_ptr< QImage > mCacheFinalImage;
1048 std::unique_ptr< QImage > mCacheRenderingImage;
1049 bool mUpdatesEnabled =
true;
1052 bool mCacheInvalidated =
true;
1055 int mNumCachedLayers;
1058 bool mDrawing =
false;
1060 QTimer *mBackgroundUpdateTimer =
nullptr;
1061 double mPreviewScaleFactor = 0;
1062 double mPreviewDevicePixelRatio = 1.0;
1064 bool mDrawingPreview =
false;
1067 double mXOffset = 0.0;
1069 double mYOffset = 0.0;
1071 double mLastRenderedImageOffsetX = 0.0;
1072 double mLastRenderedImageOffsetY = 0.0;
1075 double mMapRotation = 0;
1081 double mEvaluatedMapRotation = 0;
1083 bool mZRangeEnabled =
false;
1087 bool mKeepLayerSet =
false;
1090 QList< QgsMapLayerRef > mLayers;
1092 bool mKeepLayerStyles =
false;
1094 QMap<QString, QString> mLayerStyleOverrides;
1097 mutable QString mCachedLayerStyleOverridesPresetName;
1099 mutable QMap<QString, QString> mCachedPresetLayerStyleOverrides;
1106 bool mFollowVisibilityPreset =
false;
1112 QString mFollowVisibilityPresetName;
1115 QString mLastEvaluatedThemeName;
1124 void drawMap( QPainter *painter,
const QgsRectangle &extent, QSizeF size,
double dpi );
1127 void connectUpdateSlot();
1130 void syncLayerSet();
1142 QList< QgsLabelBlockingRegion > createLabelBlockingRegions(
const QgsMapSettings &mapSettings )
const;
1145 QRectF mCurrentRectangle;
1147 bool mDrawAnnotations =
true;
1150 bool mAtlasDriven =
false;
1154 double mAtlasMargin = 0.10;
1156 std::unique_ptr< QPainter > mPainter;
1157 std::unique_ptr< QgsMapRendererCustomPainterJob > mPainterJob;
1158 bool mPainterCancelWait =
false;
1163 QStringList mBlockingLabelItemUuids;
1164 QList< QPointer< QgsLayoutItem > > mBlockingLabelItems;
1169 QList< QgsRenderedFeatureHandlerInterface * > mRenderedFeatureHandlers;
1171 std::unique_ptr< QgsMapRendererStagedRenderJob > mStagedRendererJob;
1173 std::unique_ptr< QgsLabelingResults > mPreviewLabelingResults;
1174 std::unique_ptr< QgsLabelingResults > mExportLabelingResults;
1179 void updateToolTip();
1184 QMap<QString, QString> layerStyleOverridesToRender(
const QgsExpressionContext &context )
const;
1190 void mapPolygon(
const QgsRectangle &extent, QPolygonF &poly )
const;
1197 void transformShift(
double &xShift,
double &yShift )
const;
1199 void drawAnnotations( QPainter *painter );
1201 QPointF layoutMapPosForItem(
const QgsAnnotation *item )
const;
1203 void drawMapFrame( QPainter *p );
1204 void drawMapBackground( QPainter *p );
1220 bool shouldDrawPart( PartType part )
const;
1222 PartType mCurrentExportPart = NotLayered;
1223 QStringList mExportThemes;
1224 QStringList::iterator mExportThemeIt;
1235 void refreshLabelMargin(
bool updateItem );
1239 void createStagedRenderJob(
const QgsRectangle &extent,
const QSizeF size,
double dpi );
1241 QPolygonF calculateVisibleExtentPolygon(
bool includeClipping )
const;
1246 std::map<QString, std::unique_ptr<QgsGroupLayer>> mGroupLayers;
1251 friend class TestQgsLayoutMap;
1253 friend class QgsGeospatialPdfRenderedFeatureHandler;
Abstract base class for annotation items which are drawn over a map.
QgsCompositionConverter class converts a QGIS 2.x composition to a QGIS 3.x layout.
This class represents a coordinate reference system (CRS).
QgsRange which stores a range of double values.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
A geometry is the spatial representation of a feature.
Class that stores computed placement from labeling engine.
Handles rendering and exports of layouts to various formats.
A layout item subclass for map legends.
Contains settings relating to clipping a layout map by the current atlas feature.
void changed()
Emitted when the atlas clipping settings are changed.
A collection of grids which is drawn above the map content in a QgsLayoutItemMap.
An individual grid which is drawn above the map content in a QgsLayoutItemMap.
Contains settings relating to clipping a layout map by another layout item.
void changed()
Emitted when the item clipping settings are changed.
A collection of overviews which are drawn above the map content in a QgsLayoutItemMap.
An individual overview which is drawn above the map content in a QgsLayoutItemMap,...
Layout graphical items for displaying a map.
void extentChanged()
Emitted when the map's extent changes.
void preparedForAtlas()
Emitted when the map has been prepared for atlas rendering, just before actual rendering.
QgsMapRendererJob::Errors renderingErrors() const
Returns map rendering errors.
bool keepLayerSet() const
Returns whether a stored layer set should be used or the current layer set from the project associate...
void setKeepLayerSet(bool enabled)
Sets whether the stored layer set should be used or the current layer set of the associated project.
AtlasScalingMode
Scaling modes used for the serial rendering (atlas)
@ Predefined
A scale is chosen from the predefined scales.
@ Fixed
The current scale of the map is used for each feature of the atlas.
void layerStyleOverridesChanged()
Emitted when layer style overrides are changed... a means to let associated legend items know they sh...
void mapRotationChanged(double newRotation)
Emitted when the map's rotation changes.
bool isDrawing() const
True if a draw is already in progress.
QString followVisibilityPresetName() const
Preset name that decides which layers and layer styles are used for map rendering.
void previewRefreshed()
Emitted whenever the item's map preview has been refreshed.
void setDrawAnnotations(bool draw)
Sets whether annotations are drawn within the map.
QFlags< MapItemFlag > MapItemFlags
bool followVisibilityPreset() const
Returns whether the map should follow a map theme.
void crsChanged()
Emitted when the map's coordinate reference system is changed.
QgsLayoutItemMapOverviewStack * overviews()
Returns the map item's overview stack, which is used to control how overviews are drawn over the map'...
bool atlasDriven() const
Returns whether the map extent is set to follow the current atlas feature.
bool keepLayerStyles() const
Returns whether current styles of layers should be overridden by previously stored styles.
QMap< QString, QString > layerStyleOverrides() const
Returns stored overrides of styles for layers.
AtlasScalingMode atlasScalingMode() const
Returns the current atlas scaling mode.
void setAtlasScalingMode(AtlasScalingMode mode)
Sets the current atlas scaling mode.
void themeChanged(const QString &theme)
Emitted when the map's associated theme is changed.
MapItemFlag
Various flags that affect drawing of map items.
bool drawAnnotations() const
Returns whether annotations are drawn within the map.
QgsLayoutItemMapGridStack * grids()
Returns the map item's grid stack, which is used to control how grids are drawn over the map's conten...
QgsLayoutItemMapAtlasClippingSettings * atlasClippingSettings()
Returns the map's atlas clipping settings.
void setAtlasMargin(double margin)
Sets the margin size (percentage) used when the map is in atlas mode.
void setKeepLayerStyles(bool enabled)
Sets whether current styles of layers should be overridden by previously stored styles.
QgsLayoutItemMapItemClipPathSettings * itemClippingSettings()
Returns the map's item based clip path settings.
Contains settings and helpers relating to a render of a QgsLayoutItem.
Base class for graphical items within a QgsLayout.
ExportLayerBehavior
Behavior of item when exporting to layered outputs.
This class provides a method of storing measurements for use in QGIS layouts using a variety of diffe...
DataDefinedProperty
Data defined properties for different item types.
@ AllProperties
All properties for item.
PropertyValueType
Specifies whether the value returned by a function should be the original, user set value,...
@ EvaluatedValue
Return the current evaluated value for the property.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
A map clipping region (in map coordinates and CRS).
FeatureClippingType
Feature clipping behavior, which controls how features from vector layers will be clipped.
@ ClipPainterOnly
Applying clipping on the painter only (i.e. feature boundaries will be unchanged, but may be invisibl...
QList< QgsMapRendererJob::Error > Errors
The QgsMapSettings class contains configuration for rendering of the map.
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
An interface for classes which provider custom handlers for features rendered as part of a map render...
An interface for classes which can visit style entity (e.g.
Base class for objects with an associated (optional) temporal range.
#define SIP_ENUM_BASETYPE(type)
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsTextRendererUtils::CurvedTextFlags)
const QgsCoordinateReferenceSystem & crs
Contains details of a particular export layer relating to a layout item.