QGIS API Documentation  3.27.0-Master (e113457133)
qgssnaptogridcanvasitem.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgssnaptogridcanvasitem.h
3  ----------------------
4  begin : August 2018
5  copyright : (C) Matthias Kuhn
6  email : [email protected].ch
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSSNAPTOGRIDCANVASITEM_H
17 #define QGSSNAPTOGRIDCANVASITEM_H
18 
19 #include <QObject>
20 #include <QPen>
21 
23 #include "qgsmapcanvasitem.h"
24 #include "qgscoordinatetransform.h"
25 
26 #ifdef SIP_RUN
27 % ModuleHeaderCode
28 // For ConvertToSubClassCode.
30 % End
31 #endif
32 
40 #ifndef SIP_RUN
41 class GUI_EXPORT QgsSnapToGridCanvasItem : public QObject, public QgsMapCanvasItem
42 {
43 #else
44 class GUI_EXPORT QgsSnapToGridCanvasItem : public QgsMapCanvasItem
45 {
46 #endif
47 
48  Q_OBJECT
49 
50 #ifdef SIP_RUN
52  if ( dynamic_cast<QgsSnapToGridCanvasItem *>( sipCpp ) )
53  {
54  sipType = sipType_QgsSnapToGridCanvasItem;
55  // We need to tweak the pointer as sip believes it is single inheritance
56  // from QgsMapCanvasItem, but the raw address of QgsSnapToGridCanvasItem (sipCpp)
57  // is actually a QObject
58  *sipCppRet = dynamic_cast<QgsSnapToGridCanvasItem *>( sipCpp );
59  }
60  else
61  sipType = nullptr;
62  SIP_END
63 #endif
64 
65  public:
66 
71 
72  void paint( QPainter *painter ) override;
73 
79  QgsPointXY point() const;
80 
86  void setPoint( const QgsPointXY &point );
87 
92  double precision() const;
93 
98  void setPrecision( double precision );
99 
106 
112  void setCrs( const QgsCoordinateReferenceSystem &crs );
113 
117  bool enabled() const;
118 
122  void setEnabled( bool enabled );
123 
124  private slots:
125  void updateMapCanvasCrs();
126 
127  void updateZoomFactor();
128 
129  private:
130  QPen mGridPen = QPen( QColor( 127, 127, 127, 150 ) );
131  QPen mCurrentPointPen = QPen( QColor( 200, 200, 200, 150 ) );
132 
133  bool mEnabled = true;
134  bool mAvailableByZoomFactor = false;
135 
136  double mPrecision = 0.0;
137  QgsCoordinateTransform mTransform;
138  QgsPointXY mPoint;
139 };
140 
141 #endif // QGSSNAPTOGRIDCANVASITEM_H
This class represents a coordinate reference system (CRS).
Class for doing transforms between two map coordinate systems.
An abstract class for items that can be placed on the map canvas.
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:90
A class to represent a 2D point.
Definition: qgspointxy.h:59
Shows a grid on the map canvas given a spatial resolution.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition: qgis_sip.h:186
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_END
Definition: qgis_sip.h:203
const QgsCoordinateReferenceSystem & crs
int precision