QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgslayoutitemmapgrid.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayoutitemmapgrid.h
3 ----------------------
4 begin : October 2017
5 copyright : (C) 2017 by Marco Hugentobler, Nyall Dawson
6 email : marco dot hugentobler at sourcepole dot ch
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSLAYOUTITEMMAPGRID_H
19#define QGSLAYOUTITEMMAPGRID_H
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
24#include "qgstextformat.h"
25
26#include <QPainter>
27#include <QVector2D>
28
32class QDomDocument;
33class QDomElement;
34class QPainter;
36class QgsLineSymbol;
37
47{
48 public:
49
54
64
71 void removeGrid( const QString &gridId );
72
79 void moveGridUp( const QString &gridId );
80
87 void moveGridDown( const QString &gridId );
88
92 QgsLayoutItemMapGrid *grid( const QString &gridId ) const;
93
97 QgsLayoutItemMapGrid *grid( int index ) const;
98
103 QgsLayoutItemMapGrid &operator[]( int index ); // cppcheck-suppress duplInheritedMember
104
108 QList< QgsLayoutItemMapGrid * > asList() const; // cppcheck-suppress duplInheritedMember
109
110 bool readXml( const QDomElement &elem, const QDomDocument &doc, const QgsReadWriteContext &context ) override;
111
117 double maxGridExtension() const;
118
125 void calculateMaxGridExtension( double &top, double &right, double &bottom, double &left ) const;
126};
127
128//
129// QgsLayoutItemMapGrid
130//
131
140{
141
142 Q_OBJECT
143
144 public:
145
156
167
178
187
201
217
228
243
252
257 {
258 FrameLeft = 0x01,
259 FrameRight = 0x02,
260 FrameTop = 0x04,
262 };
263 Q_DECLARE_FLAGS( FrameSideFlags, FrameSideFlag )
264
265
273
279 QgsLayoutItemMapGrid( const QString &name, QgsLayoutItemMap *map );
281
282 void draw( QPainter *painter ) override;
283 bool writeXml( QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
284 bool readXml( const QDomElement &itemElem, const QDomDocument &doc, const QgsReadWriteContext &context ) override;
285
291
296 QgsCoordinateReferenceSystem crs() const { return mCRS; }
297
302 void setBlendMode( const QPainter::CompositionMode mode ) { mBlendMode = mode; }
303
308 QPainter::CompositionMode blendMode() const { return mBlendMode; }
309
310 bool usesAdvancedEffects() const override;
311
316 double maxExtension() const;
317
324 void calculateMaxExtension( double &top, double &right, double &bottom, double &left ) const;
325
326 void setEnabled( bool enabled ) override;
327
328 //
329 // GRID UNITS
330 //
331
337 void setUnits( GridUnit unit );
338
344 GridUnit units() const { return mGridUnit; }
345
352 void setIntervalX( double interval );
353
360 double intervalX() const { return mGridIntervalX; }
361
368 void setIntervalY( double interval );
369
376 double intervalY() const { return mGridIntervalY; }
377
384 void setOffsetX( double offset );
385
392 double offsetX() const { return mGridOffsetX; }
393
400 void setOffsetY( double offset );
401
408 double offsetY() const { return mGridOffsetY; }
409
419 double minimumIntervalWidth() const { return mMinimumIntervalWidth; }
420
430 void setMinimumIntervalWidth( double width );
431
441 double maximumIntervalWidth() const { return mMaximumIntervalWidth; }
442
452 void setMaximumIntervalWidth( double width );
453
454 //
455 // GRID APPEARANCE
456 //
457
463 void setStyle( GridStyle style );
464
470 GridStyle style() const { return mGridStyle; }
471
477 void setCrossLength( const double length );
478
484 double crossLength() const { return mCrossLength; }
485
493 void setGridLineWidth( double width );
494
502 void setGridLineColor( const QColor &color );
503
512 void setLineSymbol( QgsLineSymbol *symbol SIP_TRANSFER );
513
522 const QgsLineSymbol *lineSymbol() const; SIP_SKIP
523
531 QgsLineSymbol *lineSymbol();
532
541 void setMarkerSymbol( QgsMarkerSymbol *symbol SIP_TRANSFER );
542
551 const QgsMarkerSymbol *markerSymbol() const; SIP_SKIP
552
560 QgsMarkerSymbol *markerSymbol();
561
562 //
563 // ANNOTATIONS
564 //
565
570 void setAnnotationEnabled( const bool enabled ) { mShowGridAnnotation = enabled; }
571
576 bool annotationEnabled() const { return mShowGridAnnotation; }
577
584 void setAnnotationTextFormat( const QgsTextFormat &format ) { mAnnotationFormat = format; }
585
592 QgsTextFormat annotationTextFormat() const { return mAnnotationFormat; }
593
600 Q_DECL_DEPRECATED void setAnnotationFont( const QFont &font ) SIP_DEPRECATED;
601
608 Q_DECL_DEPRECATED QFont annotationFont() const SIP_DEPRECATED;
609
616 Q_DECL_DEPRECATED void setAnnotationFontColor( const QColor &color ) SIP_DEPRECATED;
617
624 Q_DECL_DEPRECATED QColor annotationFontColor() const SIP_DEPRECATED;
625
631 void setAnnotationPrecision( const int precision ) { mGridAnnotationPrecision = precision; }
632
638 int annotationPrecision() const { return mGridAnnotationPrecision; }
639
647 void setAnnotationDisplay( DisplayMode display, BorderSide border );
648
657 DisplayMode annotationDisplay( BorderSide border ) const;
658
664 void setAnnotationPosition( AnnotationPosition position, BorderSide side );
665
671 AnnotationPosition annotationPosition( BorderSide side ) const;
672
677 void setAnnotationFrameDistance( const double distance );
678
683 double annotationFrameDistance() const { return mAnnotationFrameDistance; }
684
689 void setAnnotationDirection( AnnotationDirection direction, BorderSide side );
690
695 void setAnnotationDirection( AnnotationDirection direction );
696
702 AnnotationDirection annotationDirection( BorderSide border ) const;
703
708 void setAnnotationFormat( const AnnotationFormat format ) { mGridAnnotationFormat = format; }
709
714 AnnotationFormat annotationFormat() const { return mGridAnnotationFormat; }
715
721 void setAnnotationExpression( const QString &expression );
722
728 QString annotationExpression() const { return mGridAnnotationExpressionString; }
729
730 //
731 // GRID FRAME
732 //
733
738 void setFrameStyle( const FrameStyle style ) { mGridFrameStyle = style; }
739
744 FrameStyle frameStyle() const { return mGridFrameStyle; }
745
750 void setFrameDivisions( DisplayMode divisions, BorderSide side );
751
756 DisplayMode frameDivisions( BorderSide side ) const;
757
765 void setFrameSideFlags( QgsLayoutItemMapGrid::FrameSideFlags flags );
766
775 void setFrameSideFlag( QgsLayoutItemMapGrid::FrameSideFlag flag, bool on = true );
776
784 QgsLayoutItemMapGrid::FrameSideFlags frameSideFlags() const;
785
795 bool testFrameSideFlag( FrameSideFlag flag ) const;
796
803 void setFrameWidth( const double width );
804
811 double frameWidth() const { return mGridFrameWidth; }
812
818 void setRotatedTicksEnabled( const bool state ) { mRotatedTicksEnabled = state; }
819
825 bool rotatedTicksEnabled() const { return mRotatedTicksEnabled; }
826
832 void setRotatedTicksLengthMode( const TickLengthMode mode ) { mRotatedTicksLengthMode = mode; }
833
839 TickLengthMode rotatedTicksLengthMode() const { return mRotatedTicksLengthMode; }
840
846 void setRotatedTicksMinimumAngle( const double angle ) { mRotatedTicksMinimumAngle = angle; }
847
853 double rotatedTicksMinimumAngle() const { return mRotatedTicksMinimumAngle; }
854
860 void setRotatedTicksMarginToCorner( const double margin ) { mRotatedTicksMarginToCorner = margin; }
861
867 double rotatedTicksMarginToCorner() const { return mRotatedTicksMarginToCorner; }
868
874 void setRotatedAnnotationsEnabled( const bool state ) { mRotatedAnnotationsEnabled = state; }
875
881 bool rotatedAnnotationsEnabled() const { return mRotatedAnnotationsEnabled; }
882
888 void setRotatedAnnotationsLengthMode( const TickLengthMode mode ) { mRotatedAnnotationsLengthMode = mode; }
889
895 TickLengthMode rotatedAnnotationsLengthMode() const { return mRotatedAnnotationsLengthMode; }
896
902 void setRotatedAnnotationsMinimumAngle( const double angle ) { mRotatedAnnotationsMinimumAngle = angle; }
903
909 double rotatedAnnotationsMinimumAngle() const { return mRotatedAnnotationsMinimumAngle; }
910
916 void setRotatedAnnotationsMarginToCorner( const double margin ) { mRotatedAnnotationsMarginToCorner = margin; }
917
923 double rotatedAnnotationsMarginToCorner() const { return mRotatedAnnotationsMarginToCorner; }
924
931 void setFrameMargin( const double margin );
932
939 double frameMargin() const { return mGridFrameMargin; }
940
946 void setFramePenSize( const double width );
947
953 double framePenSize() const { return mGridFramePenThickness; }
954
962 void setFramePenColor( const QColor &color ) { mGridFramePenColor = color; }
963
971 QColor framePenColor() const {return mGridFramePenColor;}
972
979 void setFrameFillColor1( const QColor &color ) { mGridFrameFillColor1 = color; }
980
987 QColor frameFillColor1() const { return mGridFrameFillColor1; }
988
995 void setFrameFillColor2( const QColor &color ) { mGridFrameFillColor2 = color; }
996
1003 QColor frameFillColor2() const { return mGridFrameFillColor2; }
1004
1005 QgsExpressionContext createExpressionContext() const override;
1006 bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
1007 void refresh() override;
1008
1014 void copyProperties( const QgsLayoutItemMapGrid *other );
1015
1016 signals:
1017
1024
1025 private:
1026
1027 QgsLayoutItemMapGrid() = delete;
1028
1029 struct GridExtension
1030 {
1031 GridExtension() = default;
1032 double top = 0.0;
1033 double right = 0.0;
1034 double bottom = 0.0;
1035 double left = 0.0;
1036
1040 void UpdateBorder( BorderSide border, double value )
1041 {
1042 switch ( border )
1043 {
1045 left = std::max( left, value );
1046 break;
1048 right = std::max( right, value );
1049 break;
1051 top = std::max( top, value );
1052 break;
1054 bottom = std::max( bottom, value );
1055 break;
1056 }
1057 }
1058
1062 void UpdateAll( double value )
1063 {
1064 left = std::max( left, value );
1065 right = std::max( right, value );
1066 top = std::max( top, value );
1067 bottom = std::max( bottom, value );
1068 }
1069 };
1070
1071 struct GridLineAnnotation
1072 {
1073 BorderSide border = Left; // border on which the annotation is
1074 QVector2D position; // position on the frame
1075 QVector2D vector; // vector towards map center
1076 double angle = 0; // the (acute) angle formed between the vector and the border
1077 };
1078
1083 struct GridLine
1084 {
1085 QPolygonF line; // the actual line, can be straight with two points or curved if transformed
1086 double coordinate; // the coordinate value
1087 QgsLayoutItemMapGrid::AnnotationCoordinate coordinateType; // whether it's a latitude or longitude line
1088 GridLineAnnotation startAnnotation; // the annotation on the start point
1089 GridLineAnnotation endAnnotation; // the annotation on the end point
1090 };
1091 mutable QList< GridLine > mGridLines;
1092
1094 mutable bool mTransformDirty = true;
1095
1097 GridStyle mGridStyle = QgsLayoutItemMapGrid::Solid;
1099 double mGridIntervalX = 0.0;
1101 double mGridIntervalY = 0.0;
1103 double mGridOffsetX = 0.0;
1105 double mGridOffsetY = 0.0;
1106
1108 QgsTextFormat mAnnotationFormat;
1109
1111 int mGridAnnotationPrecision = 3;
1113 bool mShowGridAnnotation = false;
1114
1116 DisplayMode mLeftGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1118 DisplayMode mRightGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1120 DisplayMode mTopGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1122 DisplayMode mBottomGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1123
1125 AnnotationPosition mLeftGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1127 AnnotationPosition mRightGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1129 AnnotationPosition mTopGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1131 AnnotationPosition mBottomGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1132
1134 double mAnnotationFrameDistance = 1.0;
1135
1137 AnnotationDirection mLeftGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1139 AnnotationDirection mRightGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1141 AnnotationDirection mTopGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1143 AnnotationDirection mBottomGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1144 AnnotationFormat mGridAnnotationFormat = QgsLayoutItemMapGrid::Decimal;
1145
1146 QString mGridAnnotationExpressionString;
1147 mutable std::unique_ptr< QgsExpression > mGridAnnotationExpression;
1148
1149 FrameStyle mGridFrameStyle = QgsLayoutItemMapGrid::NoFrame;
1150
1151 FrameSideFlags mGridFrameSides;
1152 double mGridFrameWidth = 2.0;
1153 double mGridFramePenThickness = 0.3;
1154 QColor mGridFramePenColor = QColor( 0, 0, 0 );
1155 QColor mGridFrameFillColor1 = Qt::white;
1156 QColor mGridFrameFillColor2 = Qt::black;
1157 double mCrossLength = 3.0;
1158 double mGridFrameMargin = 0.0;
1159 bool mRotatedTicksEnabled = false;
1160 TickLengthMode mRotatedTicksLengthMode = QgsLayoutItemMapGrid::OrthogonalTicks;
1161 double mRotatedTicksMinimumAngle = 0.0;
1162 double mRotatedTicksMarginToCorner = 0.0;
1163 bool mRotatedAnnotationsEnabled = false;
1164 TickLengthMode mRotatedAnnotationsLengthMode = QgsLayoutItemMapGrid::OrthogonalTicks;
1165 double mRotatedAnnotationsMinimumAngle = 0.0;
1166 double mRotatedAnnotationsMarginToCorner = 0.0;
1167
1168 double mMinimumIntervalWidth = 50;
1169 double mMaximumIntervalWidth = 100;
1170
1172 DisplayMode mLeftFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1174 DisplayMode mRightFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1176 DisplayMode mTopFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1178 DisplayMode mBottomFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1179
1180 std::unique_ptr< QgsLineSymbol > mGridLineSymbol;
1181 std::unique_ptr< QgsMarkerSymbol > mGridMarkerSymbol;
1182
1183 QgsCoordinateReferenceSystem mCRS;
1184
1185 GridUnit mGridUnit = MapUnit;
1186
1187 QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_SourceOver;
1188
1189 mutable QList< QPair< double, QPolygonF > > mTransformedXLines;
1190 mutable QList< QPair< double, QPolygonF > > mTransformedYLines;
1191 mutable QList< QgsPointXY > mTransformedIntersections;
1192 QRectF mPrevPaintRect;
1193 mutable QPolygonF mPrevMapPolygon;
1194
1195 bool mEvaluatedEnabled = true;
1196 double mEvaluatedIntervalX = 0;
1197 double mEvaluatedIntervalY = 0;
1198 double mEvaluatedOffsetX = 0;
1199 double mEvaluatedOffsetY = 0;
1200 double mEvaluatedGridFrameWidth = 0;
1201 double mEvaluatedGridFrameMargin = 0;
1202 double mEvaluatedAnnotationFrameDistance = 0;
1203 double mEvaluatedCrossLength = 0;
1204 double mEvaluatedGridFrameLineThickness = 0;
1205 DisplayMode mEvaluatedLeftGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1206 DisplayMode mEvaluatedRightGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1207 DisplayMode mEvaluatedTopGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1208 DisplayMode mEvaluatedBottomGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1209 DisplayMode mEvaluatedLeftFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1210 DisplayMode mEvaluatedRightFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1211 DisplayMode mEvaluatedTopFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1212 DisplayMode mEvaluatedBottomFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1213
1217 void updateGridLinesAnnotationsPositions() const;
1218
1223 void drawGridFrame( QPainter *p, GridExtension *extension = nullptr ) const;
1224
1232 void drawCoordinateAnnotations( QgsRenderContext &context, QgsExpressionContext &expressionContext, GridExtension *extension = nullptr ) const;
1233
1238 void drawCoordinateAnnotation( QgsRenderContext &context, GridLineAnnotation annot, const QString &annotationString, AnnotationCoordinate coordinateType, GridExtension *extension = nullptr ) const;
1239
1240 QString gridAnnotationString( double value, AnnotationCoordinate coord, QgsExpressionContext &expressionContext ) const;
1241
1246 int xGridLines() const;
1247
1252 int yGridLines() const;
1253
1254 int xGridLinesCrsTransform( const QgsRectangle &bbox, const QgsCoordinateTransform &t ) const;
1255
1256 int yGridLinesCrsTransform( const QgsRectangle &bbox, const QgsCoordinateTransform &t ) const;
1257
1258 void drawGridLine( const QLineF &line, QgsRenderContext &context ) const;
1259
1260 void drawGridLine( const QPolygonF &line, QgsRenderContext &context ) const;
1261
1266 void drawGridFrameBorder( QPainter *p, BorderSide border, double *extension = nullptr ) const;
1267
1273 BorderSide borderForLineCoord( QPointF p, AnnotationCoordinate coordinateType ) const;
1274
1276 int crsGridParams( QgsRectangle &crsRect, QgsCoordinateTransform &inverseTransform ) const;
1277
1278 static QList<QPolygonF> trimLinesToMap( const QPolygonF &line, const QgsRectangle &rect );
1279
1280 QPolygonF scalePolygon( const QPolygonF &polygon, double scale ) const;
1281
1283 void drawGridCrsTransform( QgsRenderContext &context, double dotsPerMM, bool calculateLinesOnly = false ) const;
1284
1285 void drawGridNoTransform( QgsRenderContext &context, double dotsPerMM, bool calculateLinesOnly = false ) const;
1286
1287 void createDefaultGridLineSymbol();
1288
1289 void createDefaultGridMarkerSymbol();
1290
1291 void drawGridMarker( QPointF point, QgsRenderContext &context ) const;
1292
1293 void drawGridFrameZebra( QPainter *p, GridExtension *extension = nullptr ) const;
1294
1295 void drawGridFrameZebraBorder( QPainter *p, BorderSide border, double *extension = nullptr ) const;
1296
1297 void drawGridFrameTicks( QPainter *p, GridExtension *extension = nullptr ) const;
1298
1299 void drawGridFrameLine( QPainter *p, GridExtension *extension = nullptr ) const;
1300
1301 void calculateCrsTransformLines() const;
1302
1303 bool shouldShowDivisionForSide( AnnotationCoordinate coordinate, BorderSide side ) const;
1304 bool shouldShowAnnotationForSide( AnnotationCoordinate coordinate, BorderSide side ) const;
1305 bool shouldShowForDisplayMode( AnnotationCoordinate coordinate, DisplayMode mode ) const;
1306 void refreshDataDefinedProperties();
1307
1309 double mapWidth() const;
1310
1312
1313 // Needs access to evaluated properties to compute frame bleed
1314 friend class QgsLayoutItemMap;
1315
1316};
1317
1319
1320#endif // QGSLAYOUTITEMMAPGRID_H
Represents a coordinate reference system (CRS).
Handles coordinate transforms between two coordinate systems.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void calculateMaxGridExtension(double &top, double &right, double &bottom, double &left) const
Calculates the maximum distance grids within the stack extend beyond the QgsLayoutItemMap's item rect...
void removeGrid(const QString &gridId)
Removes a grid with matching gridId from the stack and deletes the corresponding QgsLayoutItemMapGrid...
double maxGridExtension() const
Calculates the maximum distance grids within the stack extend beyond the QgsLayoutItemMap's item rect...
void addGrid(QgsLayoutItemMapGrid *grid)
Adds a new map grid to the stack and takes ownership of the grid.
QgsLayoutItemMapGrid * grid(const QString &gridId) const
Returns a reference to a grid with matching gridId within the stack.
void moveGridUp(const QString &gridId)
Moves a grid with matching gridId up the stack, causing it to be rendered above other grids.
void moveGridDown(const QString &gridId)
Moves a grid with matching gridId down the stack, causing it to be rendered below other grids.
QgsLayoutItemMapGridStack(QgsLayoutItemMap *map)
Constructor for QgsLayoutItemMapGridStack, attached to the specified map.
An individual grid which is drawn above the map content in a QgsLayoutItemMap.
bool rotatedAnnotationsEnabled() const
Gets whether annotations rotation for rotated or reprojected grids is enabled.
QString annotationExpression() const
Returns the expression used for drawing grid annotations.
double rotatedTicksMarginToCorner() const
Gets the margin to corners (in canvas units) below which outwards facing ticks are not drawn.
GridStyle
Grid drawing style.
@ Markers
Draw markers at intersections of grid lines.
@ Cross
Draw line crosses at intersections of grid lines.
@ FrameAnnotationsOnly
No grid lines over the map, only draw frame and annotations.
void setFrameFillColor2(const QColor &color)
Sets the second fill color used for the grid frame.
GridUnit
Unit for grid values.
@ CM
Grid units in centimeters.
@ MM
Grid units in millimeters.
@ DynamicPageSizeBased
Dynamically sized, based on a on-page size range.
@ MapUnit
Grid units follow map units.
GridStyle style() const
Returns the grid's style, which controls how the grid is drawn over the map's contents.
FrameSideFlag
Flags for controlling which side of the map a frame is drawn on.
@ FrameBottom
Bottom side of map.
@ FrameLeft
Left side of map.
@ FrameRight
Right side of map.
void setAnnotationFormat(const AnnotationFormat format)
Sets the format for drawing grid annotations.
double frameWidth() const
Gets the grid frame width in layout units.
void draw(QPainter *painter) override
Draws the item on to a destination painter.
double crossLength() const
Retrieves the length (in layout units) of the cross segments drawn for the grid.
void setRotatedTicksMinimumAngle(const double angle)
Sets the minimum angle (in degrees) below which ticks are not drawn.
QPainter::CompositionMode blendMode() const
Retrieves the blending mode used for drawing the grid.
void setAnnotationEnabled(const bool enabled)
Sets whether annotations should be shown for the grid.
QgsTextFormat annotationTextFormat() const
Returns the text format used when rendering grid annotations.
AnnotationFormat annotationFormat() const
Returns the format for drawing grid annotations.
double framePenSize() const
Retrieves the width of the stroke drawn in the grid frame.
void setFramePenColor(const QColor &color)
Sets the color of the stroke drawn in the grid frame.
void setRotatedTicksEnabled(const bool state)
Enable/disable ticks rotation for rotated or reprojected grids.
AnnotationPosition
Position for grid annotations.
@ InsideMapFrame
Draw annotations inside the map frame.
@ OutsideMapFrame
Draw annotations outside the map frame.
TickLengthMode rotatedAnnotationsLengthMode() const
Returns the annotation length calculation mode.
double rotatedTicksMinimumAngle() const
Gets the minimum angle (in degrees) below which ticks are not drawn.
double offsetY() const
Returns the offset for grid lines in the y-direction.
AnnotationCoordinate
Annotation coordinate type.
@ Latitude
Coordinate is a latitude value.
@ Longitude
Coordinate is a longitude value.
void setRotatedTicksLengthMode(const TickLengthMode mode)
Sets the tick length calculation mode.
DisplayMode
Display settings for grid annotations and frames.
@ LongitudeOnly
Show longitude/x annotations/divisions only.
@ ShowAll
Show both latitude and longitude annotations/divisions.
@ LatitudeOnly
Show latitude/y annotations/divisions only.
void crsChanged()
Emitted whenever the grid's CRS is changed.
void setRotatedAnnotationsMinimumAngle(const double angle)
Sets the minimum angle (in degrees) below which annotations are not drawn.
double rotatedAnnotationsMinimumAngle() const
Gets the minimum angle (in degrees) below which annotations are not drawn.
void setAnnotationTextFormat(const QgsTextFormat &format)
Sets the text format to use when rendering grid annotations.
QgsLayoutItemMapGrid(const QString &name, QgsLayoutItemMap *map)
Constructor for QgsLayoutItemMapGrid.
~QgsLayoutItemMapGrid() override
void setBlendMode(const QPainter::CompositionMode mode)
Sets the blending mode used for drawing the grid.
bool annotationEnabled() const
Returns whether annotations are shown for the grid.
void setFrameStyle(const FrameStyle style)
Sets the grid frame style.
QFlags< FrameSideFlag > FrameSideFlags
QColor framePenColor() const
Retrieves the color of the stroke drawn in the grid frame.
FrameStyle frameStyle() const
Returns the grid frame style.
void setRotatedTicksMarginToCorner(const double margin)
Sets the margin to corners (in canvas units) below which outwards facing ticks are not drawn.
void setAnnotationPrecision(const int precision)
Sets the coordinate precision for grid annotations.
QColor frameFillColor2() const
Retrieves the second fill color for the grid frame.
QgsCoordinateReferenceSystem crs() const
Retrieves the CRS for the grid.
void setRotatedAnnotationsMarginToCorner(const double margin)
Sets the margin to corners (in canvas units) below which outwards facing annotations are not drawn.
double rotatedAnnotationsMarginToCorner() const
Gets the margin to corners (in canvas units) below which outwards facing annotations are not drawn.
void setRotatedAnnotationsLengthMode(const TickLengthMode mode)
Sets the annotation length calculation mode.
TickLengthMode
Tick length mode (useful for rotated grids).
@ OrthogonalTicks
Align ticks orthogonaly.
@ NormalizedTicks
Constant tick lengths.
double offsetX() const
Returns the offset for grid lines in the x-direction.
bool rotatedTicksEnabled() const
Gets whether ticks rotation for rotated or reprojected grids is enabled.
AnnotationFormat
Format for displaying grid annotations.
@ DegreeMinuteSecondNoSuffix
Degree/minutes/seconds, use - for S/W coordinates.
@ DegreeMinuteSecondPadded
Degree/minutes/seconds, with minutes using leading zeros where required.
@ DegreeMinuteSecond
Degree/minutes/seconds, use NSEW suffix.
@ DecimalWithSuffix
Decimal degrees, use NSEW suffix.
@ DegreeMinute
Degree/minutes, use NSEW suffix.
@ DegreeMinuteNoSuffix
Degree/minutes, use - for S/W coordinates.
@ Decimal
Decimal degrees, use - for S/W coordinates.
@ DegreeMinutePadded
Degree/minutes, with minutes using leading zeros where required.
@ CustomFormat
Custom expression-based format.
AnnotationDirection
Direction of grid annotations.
@ OnTick
Draw annotations parallel to tick (on the line).
@ Horizontal
Draw annotations horizontally.
@ Vertical
Draw annotations vertically, ascending.
@ BoundaryDirection
Annotations follow the boundary direction.
@ AboveTick
Draw annotations parallel to tick (above the line).
@ UnderTick
Draw annotations parallel to tick (under the line).
@ VerticalDescending
Draw annotations vertically, descending.
double annotationFrameDistance() const
Returns the distance between the map frame and annotations.
double intervalY() const
Returns the interval between grid lines in the y-direction.
GridUnit units() const
Returns the units used for grid measurements such as the interval and offset for grid lines.
void setCrs(const QgsCoordinateReferenceSystem &crs)
Sets the crs for the grid.
double minimumIntervalWidth() const
Returns the minimum width (in millimeters) for grid segments.
QColor frameFillColor1() const
Retrieves the first fill color for the grid frame.
void setRotatedAnnotationsEnabled(const bool state)
Enable/disable annotations rotation for rotated or reprojected grids.
FrameStyle
Style for grid frame.
@ Zebra
Black/white pattern.
@ InteriorTicks
Tick markers drawn inside map frame.
@ LineBorder
Simple solid line frame.
@ InteriorExteriorTicks
Tick markers drawn both inside and outside the map frame.
@ LineBorderNautical
Simple solid line frame, with nautical style diagonals on corners.
@ ExteriorTicks
Tick markers drawn outside map frame.
@ NoFrame
Disable grid frame.
@ ZebraNautical
Black/white pattern, with nautical style diagonals on corners.
void setFrameFillColor1(const QColor &color)
Sets the first fill color used for the grid frame.
double frameMargin() const
Sets the grid frame Margin (in layout units).
BorderSide
Border sides for annotations.
int annotationPrecision() const
Returns the coordinate precision for grid annotations, which is the number of decimal places shown wh...
double maximumIntervalWidth() const
Returns the maximum width (in millimeters) for grid segments.
TickLengthMode rotatedTicksLengthMode() const
Returns the grid frame style.
double intervalX() const
Returns the interval between grid lines in the x-direction.
virtual bool writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context) const
Stores the state of the item stack in a DOM node, where element is the DOM element corresponding to a...
virtual bool readXml(const QDomElement &element, const QDomDocument &doc, const QgsReadWriteContext &context)=0
Sets the item stack's state from a DOM document, where element is a DOM node corresponding to a 'Layo...
QList< QgsLayoutItemMapItem * > asList() const
Returns a list of QgsLayoutItemMapItems contained by the stack.
QgsLayoutItemMapItemStack(QgsLayoutItemMap *map)
Constructor for QgsLayoutItemMapItemStack, attached to the specified map.
QgsLayoutItemMapItem & operator[](int index)
Returns a reference to an item at the specified index within the stack.
QgsLayoutItemMapItem(const QString &name, QgsLayoutItemMap *map)
Constructor for QgsLayoutItemMapItem, attached to the specified map.
bool enabled() const
Returns whether the item will be drawn.
Layout graphical items for displaying a map.
A line symbol type, for rendering LineString and MultiLineString geometries.
A marker symbol type, for rendering Point and MultiPoint geometries.
A container for the context for various read/write operations on objects.
Contains information about the context of a rendering operation.
An interface for classes which can visit style entity (e.g.
Container for all settings relating to text rendering.
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored).
#define SIP_DEPRECATED
Definition qgis_sip.h:114
#define SIP_ENUM_BASETYPE(type)
Definition qgis_sip.h:275
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_TRANSFER
Definition qgis_sip.h:36
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsProjectionSelectionWidget::CrsOptions)