QGIS API Documentation 3.27.0-Master (f261cc1f8b)
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#include <QPainter>
26#include <QVector2D>
27
31class QDomDocument;
32class QDomElement;
33class QPainter;
35class QgsLineSymbol;
36
47{
48 public:
49
54
63 void addGrid( QgsLayoutItemMapGrid *grid SIP_TRANSFER );
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 );
104
108 QList< QgsLayoutItemMapGrid * > asList() const;
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
141{
142
143 Q_OBJECT
144
145 public:
146
151 {
156 };
157
162 {
163 Solid = 0,
166 FrameAnnotationsOnly
167 };
168
173 {
174 ShowAll = 0,
177 HideAll
178 };
179
184 {
185 InsideMapFrame = 0,
187 };
188
193 {
194 Horizontal = 0,
201 };
202
207 {
208 Decimal = 0,
216 CustomFormat
217 };
218
223 {
228 };
229
234 {
235 NoFrame = 0,
243 };
244
249 {
250 OrthogonalTicks = 0,
252 };
253
258 {
259 FrameLeft = 0x01,
260 FrameRight = 0x02,
261 FrameTop = 0x04,
262 FrameBottom = 0x08
263 };
264 Q_DECLARE_FLAGS( FrameSideFlags, FrameSideFlag )
265
266
270 {
271 Longitude = 0,
272 Latitude
273 };
274
280 QgsLayoutItemMapGrid( const QString &name, QgsLayoutItemMap *map );
282
283 void draw( QPainter *painter ) override;
284 bool writeXml( QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
285 bool readXml( const QDomElement &itemElem, const QDomDocument &doc, const QgsReadWriteContext &context ) override;
286
291 void setCrs( const QgsCoordinateReferenceSystem &crs );
292
297 QgsCoordinateReferenceSystem crs() const { return mCRS; }
298
303 void setBlendMode( const QPainter::CompositionMode mode ) { mBlendMode = mode; }
304
309 QPainter::CompositionMode blendMode() const { return mBlendMode; }
310
311 bool usesAdvancedEffects() const override;
312
317 double maxExtension() const;
318
325 void calculateMaxExtension( double &top, double &right, double &bottom, double &left ) const;
326
327 void setEnabled( bool enabled ) override;
328
329 //
330 // GRID UNITS
331 //
332
338 void setUnits( GridUnit unit );
339
345 GridUnit units() const { return mGridUnit; }
346
353 void setIntervalX( double interval );
354
361 double intervalX() const { return mGridIntervalX; }
362
369 void setIntervalY( double interval );
370
377 double intervalY() const { return mGridIntervalY; }
378
385 void setOffsetX( double offset );
386
393 double offsetX() const { return mGridOffsetX; }
394
401 void setOffsetY( double offset );
402
409 double offsetY() const { return mGridOffsetY; }
410
420 double minimumIntervalWidth() const { return mMinimumIntervalWidth; }
421
431 void setMinimumIntervalWidth( double width );
432
442 double maximumIntervalWidth() const { return mMaximumIntervalWidth; }
443
453 void setMaximumIntervalWidth( double width );
454
455 //
456 // GRID APPEARANCE
457 //
458
464 void setStyle( GridStyle style );
465
471 GridStyle style() const { return mGridStyle; }
472
478 void setCrossLength( const double length );
479
485 double crossLength() const { return mCrossLength; }
486
494 void setGridLineWidth( double width );
495
503 void setGridLineColor( const QColor &color );
504
513 void setLineSymbol( QgsLineSymbol *symbol SIP_TRANSFER );
514
523 const QgsLineSymbol *lineSymbol() const; SIP_SKIP
524
532 QgsLineSymbol *lineSymbol();
533
542 void setMarkerSymbol( QgsMarkerSymbol *symbol SIP_TRANSFER );
543
552 const QgsMarkerSymbol *markerSymbol() const; SIP_SKIP
553
561 QgsMarkerSymbol *markerSymbol();
562
563 //
564 // ANNOTATIONS
565 //
566
571 void setAnnotationEnabled( const bool enabled ) { mShowGridAnnotation = enabled; }
572
577 bool annotationEnabled() const { return mShowGridAnnotation; }
578
585 void setAnnotationTextFormat( const QgsTextFormat &format ) { mAnnotationFormat = format; }
586
593 QgsTextFormat annotationTextFormat() const { return mAnnotationFormat; }
594
601 Q_DECL_DEPRECATED void setAnnotationFont( const QFont &font ) SIP_DEPRECATED;
602
609 Q_DECL_DEPRECATED QFont annotationFont() const SIP_DEPRECATED;
610
617 Q_DECL_DEPRECATED void setAnnotationFontColor( const QColor &color ) SIP_DEPRECATED;
618
625 Q_DECL_DEPRECATED QColor annotationFontColor() const SIP_DEPRECATED;
626
632 void setAnnotationPrecision( const int precision ) { mGridAnnotationPrecision = precision; }
633
639 int annotationPrecision() const { return mGridAnnotationPrecision; }
640
648 void setAnnotationDisplay( DisplayMode display, BorderSide border );
649
658 DisplayMode annotationDisplay( BorderSide border ) const;
659
665 void setAnnotationPosition( AnnotationPosition position, BorderSide side );
666
672 AnnotationPosition annotationPosition( BorderSide side ) const;
673
678 void setAnnotationFrameDistance( const double distance );
679
684 double annotationFrameDistance() const { return mAnnotationFrameDistance; }
685
690 void setAnnotationDirection( AnnotationDirection direction, BorderSide side );
691
696 void setAnnotationDirection( AnnotationDirection direction );
697
703 AnnotationDirection annotationDirection( BorderSide border ) const;
704
709 void setAnnotationFormat( const AnnotationFormat format ) { mGridAnnotationFormat = format; }
710
715 AnnotationFormat annotationFormat() const { return mGridAnnotationFormat; }
716
722 void setAnnotationExpression( const QString &expression ) { mGridAnnotationExpressionString = expression; mGridAnnotationExpression.reset(); }
723
729 QString annotationExpression() const { return mGridAnnotationExpressionString; }
730
731 //
732 // GRID FRAME
733 //
734
739 void setFrameStyle( const FrameStyle style ) { mGridFrameStyle = style; }
740
745 FrameStyle frameStyle() const { return mGridFrameStyle; }
746
751 void setFrameDivisions( DisplayMode divisions, BorderSide side );
752
757 DisplayMode frameDivisions( BorderSide side ) const;
758
766 void setFrameSideFlags( QgsLayoutItemMapGrid::FrameSideFlags flags );
767
776 void setFrameSideFlag( QgsLayoutItemMapGrid::FrameSideFlag flag, bool on = true );
777
785 QgsLayoutItemMapGrid::FrameSideFlags frameSideFlags() const;
786
796 bool testFrameSideFlag( FrameSideFlag flag ) const;
797
804 void setFrameWidth( const double width );
805
812 double frameWidth() const { return mGridFrameWidth; }
813
819 void setRotatedTicksEnabled( const bool state ) { mRotatedTicksEnabled = state; }
820
826 double rotatedTicksEnabled() const { return mRotatedTicksEnabled; }
827
833 void setRotatedTicksLengthMode( const TickLengthMode mode ) { mRotatedTicksLengthMode = mode; }
834
840 TickLengthMode rotatedTicksLengthMode() const { return mRotatedTicksLengthMode; }
841
847 void setRotatedTicksMinimumAngle( const double angle ) { mRotatedTicksMinimumAngle = angle; }
848
854 double rotatedTicksMinimumAngle() const { return mRotatedTicksMinimumAngle; }
855
861 void setRotatedTicksMarginToCorner( const double margin ) { mRotatedTicksMarginToCorner = margin; }
862
868 double rotatedTicksMarginToCorner() const { return mRotatedTicksMarginToCorner; }
869
875 void setRotatedAnnotationsEnabled( const bool state ) { mRotatedAnnotationsEnabled = state; }
876
882 double rotatedAnnotationsEnabled() const { return mRotatedAnnotationsEnabled; }
883
889 void setRotatedAnnotationsLengthMode( const TickLengthMode mode ) { mRotatedAnnotationsLengthMode = mode; }
890
896 TickLengthMode rotatedAnnotationsLengthMode() const { return mRotatedAnnotationsLengthMode; }
897
903 void setRotatedAnnotationsMinimumAngle( const double angle ) { mRotatedAnnotationsMinimumAngle = angle; }
904
910 double rotatedAnnotationsMinimumAngle() const { return mRotatedAnnotationsMinimumAngle; }
911
917 void setRotatedAnnotationsMarginToCorner( const double margin ) { mRotatedAnnotationsMarginToCorner = margin; }
918
924 double rotatedAnnotationsMarginToCorner() const { return mRotatedAnnotationsMarginToCorner; }
925
932 void setFrameMargin( const double margin );
933
940 double frameMargin() const { return mGridFrameMargin; }
941
947 void setFramePenSize( const double width );
948
954 double framePenSize() const { return mGridFramePenThickness; }
955
963 void setFramePenColor( const QColor &color ) { mGridFramePenColor = color; }
964
972 QColor framePenColor() const {return mGridFramePenColor;}
973
980 void setFrameFillColor1( const QColor &color ) { mGridFrameFillColor1 = color; }
981
988 QColor frameFillColor1() const { return mGridFrameFillColor1; }
989
996 void setFrameFillColor2( const QColor &color ) { mGridFrameFillColor2 = color; }
997
1004 QColor frameFillColor2() const { return mGridFrameFillColor2; }
1005
1006 QgsExpressionContext createExpressionContext() const override;
1007 bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
1008 void refresh() override;
1009
1010 signals:
1011
1018
1019 private:
1020
1021 QgsLayoutItemMapGrid() = delete;
1022
1023 struct GridExtension
1024 {
1025 GridExtension() = default;
1026 double top = 0.0;
1027 double right = 0.0;
1028 double bottom = 0.0;
1029 double left = 0.0;
1030
1034 void UpdateBorder( BorderSide border, double value )
1035 {
1036 switch ( border )
1037 {
1039 left = std::max( left, value );
1040 break;
1042 right = std::max( right, value );
1043 break;
1045 top = std::max( top, value );
1046 break;
1048 bottom = std::max( bottom, value );
1049 break;
1050 }
1051 }
1052
1056 void UpdateAll( double value )
1057 {
1058 left = std::max( left, value );
1059 right = std::max( right, value );
1060 top = std::max( top, value );
1061 bottom = std::max( bottom, value );
1062 }
1063 };
1064
1065 struct GridLineAnnotation
1066 {
1067 BorderSide border = Left; // border on which the annotation is
1068 QVector2D position; // position on the frame
1069 QVector2D vector; // vector towards map center
1070 double angle = 0; // the (acute) angle formed between the vector and the border
1071 };
1072
1077 struct GridLine
1078 {
1079 QPolygonF line; // the actual line, can be straight with two points or curved if transformed
1080 double coordinate; // the coordinate value
1081 QgsLayoutItemMapGrid::AnnotationCoordinate coordinateType; // whether it's a latitude or longitude line
1082 GridLineAnnotation startAnnotation; // the annotation on the start point
1083 GridLineAnnotation endAnnotation; // the annotation on the end point
1084 };
1085 mutable QList< GridLine > mGridLines;
1086
1088 mutable bool mTransformDirty = true;
1089
1091 GridStyle mGridStyle = QgsLayoutItemMapGrid::Solid;
1093 double mGridIntervalX = 0.0;
1095 double mGridIntervalY = 0.0;
1097 double mGridOffsetX = 0.0;
1099 double mGridOffsetY = 0.0;
1100
1102 QgsTextFormat mAnnotationFormat;
1103
1105 int mGridAnnotationPrecision = 3;
1107 bool mShowGridAnnotation = false;
1108
1110 DisplayMode mLeftGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1112 DisplayMode mRightGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1114 DisplayMode mTopGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1116 DisplayMode mBottomGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1117
1119 AnnotationPosition mLeftGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1121 AnnotationPosition mRightGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1123 AnnotationPosition mTopGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1125 AnnotationPosition mBottomGridAnnotationPosition = QgsLayoutItemMapGrid::OutsideMapFrame;
1126
1128 double mAnnotationFrameDistance = 1.0;
1129
1131 AnnotationDirection mLeftGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1133 AnnotationDirection mRightGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1135 AnnotationDirection mTopGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1137 AnnotationDirection mBottomGridAnnotationDirection = QgsLayoutItemMapGrid::Horizontal;
1138 AnnotationFormat mGridAnnotationFormat = QgsLayoutItemMapGrid::Decimal;
1139
1140 QString mGridAnnotationExpressionString;
1141 mutable std::unique_ptr< QgsExpression > mGridAnnotationExpression;
1142
1143 FrameStyle mGridFrameStyle = QgsLayoutItemMapGrid::NoFrame;
1144
1145 FrameSideFlags mGridFrameSides;
1146 double mGridFrameWidth = 2.0;
1147 double mGridFramePenThickness = 0.3;
1148 QColor mGridFramePenColor = QColor( 0, 0, 0 );
1149 QColor mGridFrameFillColor1 = Qt::white;
1150 QColor mGridFrameFillColor2 = Qt::black;
1151 double mCrossLength = 3.0;
1152 double mGridFrameMargin = 0.0;
1153 bool mRotatedTicksEnabled = false;
1154 TickLengthMode mRotatedTicksLengthMode = QgsLayoutItemMapGrid::OrthogonalTicks;
1155 double mRotatedTicksMinimumAngle = 0.0;
1156 double mRotatedTicksMarginToCorner = 0.0;
1157 bool mRotatedAnnotationsEnabled = false;
1158 TickLengthMode mRotatedAnnotationsLengthMode = QgsLayoutItemMapGrid::OrthogonalTicks;
1159 double mRotatedAnnotationsMinimumAngle = 0.0;
1160 double mRotatedAnnotationsMarginToCorner = 0.0;
1161
1162 double mMinimumIntervalWidth = 50;
1163 double mMaximumIntervalWidth = 100;
1164
1166 DisplayMode mLeftFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1168 DisplayMode mRightFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1170 DisplayMode mTopFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1172 DisplayMode mBottomFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1173
1174 std::unique_ptr< QgsLineSymbol > mGridLineSymbol;
1175 std::unique_ptr< QgsMarkerSymbol > mGridMarkerSymbol;
1176
1178
1179 GridUnit mGridUnit = MapUnit;
1180
1181 QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_SourceOver;
1182
1183 mutable QList< QPair< double, QPolygonF > > mTransformedXLines;
1184 mutable QList< QPair< double, QPolygonF > > mTransformedYLines;
1185 mutable QList< QgsPointXY > mTransformedIntersections;
1186 QRectF mPrevPaintRect;
1187 mutable QPolygonF mPrevMapPolygon;
1188
1189 bool mEvaluatedEnabled = true;
1190 double mEvaluatedIntervalX = 0;
1191 double mEvaluatedIntervalY = 0;
1192 double mEvaluatedOffsetX = 0;
1193 double mEvaluatedOffsetY = 0;
1194 double mEvaluatedGridFrameWidth = 0;
1195 double mEvaluatedGridFrameMargin = 0;
1196 double mEvaluatedAnnotationFrameDistance = 0;
1197 double mEvaluatedCrossLength = 0;
1198 double mEvaluatedGridFrameLineThickness = 0;
1199 DisplayMode mEvaluatedLeftGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1200 DisplayMode mEvaluatedRightGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1201 DisplayMode mEvaluatedTopGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1202 DisplayMode mEvaluatedBottomGridAnnotationDisplay = QgsLayoutItemMapGrid::ShowAll;
1203 DisplayMode mEvaluatedLeftFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1204 DisplayMode mEvaluatedRightFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1205 DisplayMode mEvaluatedTopFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1206 DisplayMode mEvaluatedBottomFrameDivisions = QgsLayoutItemMapGrid::ShowAll;
1207
1211 void updateGridLinesAnnotationsPositions() const;
1212
1217 void drawGridFrame( QPainter *p, GridExtension *extension = nullptr ) const;
1218
1226 void drawCoordinateAnnotations( QgsRenderContext &context, QgsExpressionContext &expressionContext, GridExtension *extension = nullptr ) const;
1227
1232 void drawCoordinateAnnotation( QgsRenderContext &context, GridLineAnnotation annot, const QString &annotationString, AnnotationCoordinate coordinateType, GridExtension *extension = nullptr ) const;
1233
1234 QString gridAnnotationString( double value, AnnotationCoordinate coord, QgsExpressionContext &expressionContext ) const;
1235
1240 int xGridLines() const;
1241
1246 int yGridLines() const;
1247
1248 int xGridLinesCrsTransform( const QgsRectangle &bbox, const QgsCoordinateTransform &t ) const;
1249
1250 int yGridLinesCrsTransform( const QgsRectangle &bbox, const QgsCoordinateTransform &t ) const;
1251
1252 void drawGridLine( const QLineF &line, QgsRenderContext &context ) const;
1253
1254 void drawGridLine( const QPolygonF &line, QgsRenderContext &context ) const;
1255
1260 void drawGridFrameBorder( QPainter *p, BorderSide border, double *extension = nullptr ) const;
1261
1267 BorderSide borderForLineCoord( QPointF p, AnnotationCoordinate coordinateType ) const;
1268
1270 int crsGridParams( QgsRectangle &crsRect, QgsCoordinateTransform &inverseTransform ) const;
1271
1272 static QList<QPolygonF> trimLinesToMap( const QPolygonF &line, const QgsRectangle &rect );
1273
1274 QPolygonF scalePolygon( const QPolygonF &polygon, double scale ) const;
1275
1277 void drawGridCrsTransform( QgsRenderContext &context, double dotsPerMM, bool calculateLinesOnly = false ) const;
1278
1279 void drawGridNoTransform( QgsRenderContext &context, double dotsPerMM, bool calculateLinesOnly = false ) const;
1280
1281 void createDefaultGridLineSymbol();
1282
1283 void createDefaultGridMarkerSymbol();
1284
1285 void drawGridMarker( QPointF point, QgsRenderContext &context ) const;
1286
1287 void drawGridFrameZebra( QPainter *p, GridExtension *extension = nullptr ) const;
1288
1289 void drawGridFrameZebraBorder( QPainter *p, BorderSide border, double *extension = nullptr ) const;
1290
1291 void drawGridFrameTicks( QPainter *p, GridExtension *extension = nullptr ) const;
1292
1293 void drawGridFrameLine( QPainter *p, GridExtension *extension = nullptr ) const;
1294
1295 void calculateCrsTransformLines() const;
1296
1297 bool shouldShowDivisionForSide( AnnotationCoordinate coordinate, BorderSide side ) const;
1298 bool shouldShowAnnotationForSide( AnnotationCoordinate coordinate, BorderSide side ) const;
1299 bool shouldShowForDisplayMode( AnnotationCoordinate coordinate, DisplayMode mode ) const;
1300 void refreshDataDefinedProperties();
1301
1303 double mapWidth() const;
1304
1305 friend class TestQgsLayoutMapGrid;
1306
1307};
1308
1309Q_DECLARE_OPERATORS_FOR_FLAGS( QgsLayoutItemMapGrid::FrameSideFlags )
1310
1311#endif // QGSLAYOUTITEMMAPGRID_H
This class represents a coordinate reference system (CRS).
Class for doing transforms between two map coordinate systems.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
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.
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.
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.
void setAnnotationFormat(const AnnotationFormat format)
Sets the format for drawing grid annotations.
double frameWidth() const
Gets the grid frame width in layout units.
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.
@ OutsideMapFrame
Draw annotations outside the map frame.
TickLengthMode rotatedAnnotationsLengthMode() const
Returns the grid frame style.
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.
double rotatedAnnotationsEnabled() const
Gets whether annotations rotation for rotated or reprojected grids is enabled.
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 annotated are not drawn.
double rotatedAnnotationsMinimumAngle() const
Gets the minimum angle (in degrees) below which annotated are not drawn.
void setAnnotationTextFormat(const QgsTextFormat &format)
Sets the text format to use when rendering grid annotations.
~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.
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.
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 ticks are not drawn.
double rotatedAnnotationsMarginToCorner() const
Gets the margin to corners (in canvas units) below which outwards facing ticks 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.
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.
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.
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).
double rotatedTicksEnabled() const
Gets whether ticks rotation for rotated or reprojected grids is enabled.
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.
void setAnnotationExpression(const QString &expression)
Sets the expression used for drawing grid annotations.
TickLengthMode rotatedTicksLengthMode() const
Returns the grid frame style.
double intervalX() const
Returns the interval between grid lines in the x-direction.
A collection of map items which are drawn above the map content in a QgsLayoutItemMap.
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.
QgsLayoutItemMapItem & operator[](int index)
Returns a reference to an item at the specified index within the stack.
An item which is drawn inside a QgsLayoutItemMap, e.g., a grid or map overview.
Layout graphical items for displaying a map.
A line symbol type, for rendering LineString and MultiLineString geometries.
Definition: qgslinesymbol.h:30
A marker symbol type, for rendering Point and MultiPoint geometries.
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
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.
Definition: qgstextformat.h:41
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)
Definition: MathUtils.cpp:786
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsField::ConfigurationFlags) CORE_EXPORT QDataStream &operator<<(QDataStream &out
Writes the field to stream out. QGIS version compatibility is not guaranteed.
const QgsCoordinateReferenceSystem & crs
int precision