QGIS API Documentation  3.21.0-Master (5b68dc587e)
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"
23 #include "qgslayoutitemmapitem.h"
24 #include "qgstextformat.h"
25 #include <QPainter>
26 #include <QVector2D>
27 
30 class QgsLayoutItemMap;
31 class QDomDocument;
32 class QDomElement;
33 class QPainter;
34 class QgsRenderContext;
35 class 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 
140 class CORE_EXPORT QgsLayoutItemMapGrid : public QgsLayoutItemMapItem
141 {
142 
143  Q_OBJECT
144 
145  public:
146 
150  enum GridUnit
151  {
153  MM,
154  CM,
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  {
227  Top,
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 
1017  void crsChanged();
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 
1309 Q_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