-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
qgsmapsettings.h
173 lines (122 loc) · 4.68 KB
/
qgsmapsettings.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#ifndef QGSMAPSETTINGS_H
#define QGSMAPSETTINGS_H
#include <QColor>
#include <QSize>
#include <QStringList>
#include "qgscoordinatereferencesystem.h"
#include "qgsmaptopixel.h"
#include "qgsrectangle.h"
#include "qgsscalecalculator.h"
class QPainter;
class QgsCoordinateTransform;
class QgsScaleCalculator;
class QgsMapRendererJob;
class QgsMapLayer;
class QgsMapSettings
{
public:
QgsMapSettings();
QgsRectangle extent() const;
void setExtent(const QgsRectangle& rect);
QSize outputSize() const;
void setOutputSize(const QSize& size);
int outputDpi() const;
void setOutputDpi(int dpi);
QStringList layers() const;
void setLayers(const QStringList& layers);
//! sets whether to use projections for this layer set
void setProjectionsEnabled( bool enabled );
//! returns true if projections are enabled for this layer set
bool hasCrsTransformEnabled() const;
//! sets destination coordinate reference system
void setDestinationCrs( const QgsCoordinateReferenceSystem& crs );
//! returns CRS of destination coordinate reference system
const QgsCoordinateReferenceSystem& destinationCrs() const;
QGis::UnitType mapUnits() const;
void setMapUnits( QGis::UnitType u );
void setBackgroundColor( const QColor& color ) { mBackgroundColor = color; }
QColor backgroundColor() const { return mBackgroundColor; }
void setSelectionColor( const QColor& color ) { mSelectionColor = color; }
QColor selectionColor() const { return mSelectionColor; }
enum Flag
{
Antialiasing = 0x01,
DrawEditingInfo = 0x02,
ForceVectorOutput = 0x04,
UseAdvancedEffects = 0x08,
DrawLabeling = 0x10
// TODO: ignore scale-based visibiity (overview)
};
Q_DECLARE_FLAGS(Flags, Flag)
void setFlags( Flags flags );
void setFlag( Flag flag, bool on = true );
Flags flags() const;
bool testFlag( Flag flag ) const;
bool hasValidSettings() const;
QgsRectangle visibleExtent() const;
double mapUnitsPerPixel() const;
double scale() const;
// TODO: utility functions
const QgsMapToPixel& mapToPixel() const { return mMapToPixel; }
/**
* @brief transform bounding box from layer's CRS to output CRS
* @see layerToMapCoordinates( QgsMapLayer* theLayer, QgsRectangle rect ) if you want to transform a rectangle
* @return a bounding box (aligned rectangle) containing the transformed extent
*/
QgsRectangle layerExtentToOutputExtent( QgsMapLayer* theLayer, QgsRectangle extent ) const;
/**
* @brief transform bounding box from output CRS to layer's CRS
* @see mapToLayerCoordinates( QgsMapLayer* theLayer,QgsRectangle rect ) if you want to transform a rectangle
* @return a bounding box (aligned rectangle) containing the transformed extent
*/
QgsRectangle outputExtentToLayerExtent( QgsMapLayer* theLayer, QgsRectangle extent ) const;
/**
* @brief transform point coordinates from layer's CRS to output CRS
* @return the transformed point
*/
QgsPoint layerToMapCoordinates( QgsMapLayer* theLayer, QgsPoint point ) const;
/**
* @brief transform rectangle from layer's CRS to output CRS
* @see layerExtentToOutputExtent() if you want to transform a bounding box
* @return the transformed rectangle
*/
QgsRectangle layerToMapCoordinates( QgsMapLayer* theLayer, QgsRectangle rect ) const;
/**
* @brief transform point coordinates from output CRS to layer's CRS
* @return the transformed point
*/
QgsPoint mapToLayerCoordinates( QgsMapLayer* theLayer, QgsPoint point ) const;
/**
* @brief transform rectangle from output CRS to layer's CRS
* @see outputExtentToLayerExtent() if you want to transform a bounding box
* @return the transformed rectangle
*/
QgsRectangle mapToLayerCoordinates( QgsMapLayer* theLayer, QgsRectangle rect ) const;
//! returns current extent of layer set
QgsRectangle fullExtent() const;
/* serialization */
void readXML( QDomNode& theNode );
void writeXML( QDomNode& theNode, QDomDocument& theDoc );
protected:
int mDpi;
QSize mSize;
QgsRectangle mExtent;
QStringList mLayers;
bool mProjectionsEnabled;
QgsCoordinateReferenceSystem mDestCRS;
QColor mBackgroundColor;
QColor mSelectionColor;
Flags mFlags;
// derived properties
bool mValid; //!< whether the actual settings are valid (set in updateDerived())
QgsRectangle mVisibleExtent; //!< extent with some additional white space that matches the output aspect ratio
double mMapUnitsPerPixel;
double mScale;
// utiity stuff
QgsScaleCalculator mScaleCalculator;
QgsMapToPixel mMapToPixel;
void updateDerived();
const QgsCoordinateTransform* coordTransform( QgsMapLayer *layer ) const;
};
Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapSettings::Flags )
#endif // QGSMAPSETTINGS_H