QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
20 #include <QTextStream>
34 : mMapUnitsPerPixel( mapUnitsPerPixel )
37 , mRotation( rotation )
40 , xMin( xc - ( mWidth * mMapUnitsPerPixel / 2.0 ) )
41 , yMin( yc - ( mHeight * mMapUnitsPerPixel / 2.0 ) )
48 : mMapUnitsPerPixel( mapUnitsPerPixel )
59 double metersPerPixel = 25.4 / dpi / 1000.0;
79 bool QgsMapToPixel::updateMatrix()
84 if ( !newMatrix.isInvertible() )
94 QTransform matrix = mMatrix.inverted( &invertible );
97 qreal x_qreal = x, y_qreal = y;
98 matrix.map( x_qreal, y_qreal, &mx, &my );
110 return toMapCoordinates(
static_cast<double>( x ),
static_cast<double>( y ) );
120 double oldUnits = mMapUnitsPerPixel;
122 if ( !updateMatrix() )
124 mMapUnitsPerPixel = oldUnits;
130 return mMapUnitsPerPixel;
135 double oldRotation = mRotation;
136 double oldXCenter = mXCenter;
137 double oldYCenter = mYCenter;
138 double oldWidth = mWidth;
146 mWidth = ( ( mXCenter - xMin ) * 2 ) / mMapUnitsPerPixel;
149 if ( !updateMatrix() )
151 mRotation = oldRotation;
152 mXCenter = oldXCenter;
153 mYCenter = oldYCenter;
170 double oldMUPP = mMapUnitsPerPixel;
171 double oldXCenter = mXCenter;
172 double oldYCenter = mYCenter;
173 double oldWidth = mWidth;
174 double oldHeight = mHeight;
175 double oldRotation = mRotation;
176 double oldXMin = xMin;
177 double oldYMin = yMin;
184 mRotation = rotation;
185 xMin = xc - ( mWidth * mMapUnitsPerPixel / 2.0 );
186 yMin = yc - ( mHeight * mMapUnitsPerPixel / 2.0 );
188 if ( !updateMatrix() )
190 mMapUnitsPerPixel = oldMUPP;
191 mXCenter = oldXCenter;
192 mYCenter = oldYCenter;
195 mRotation = oldRotation;
204 QTextStream( &rep ) <<
"Map units/pixel: " << mMapUnitsPerPixel
205 <<
" center: " << mXCenter <<
',' << mYCenter
206 <<
" rotation: " << mRotation
207 <<
" size: " << mWidth <<
'x' << mHeight;
219 qreal x = p.
x(), y = p.
y();
227 qreal x = p->
x(), y = p->
y();
237 qreal x_qreal = x, y_qreal = y;
238 mMatrix.map( x_qreal, y_qreal, &mx, &my );
246 double mx = x, my = y;
263 return QTransform::fromScale( 1.0 / mMapUnitsPerPixel, -1.0 / mMapUnitsPerPixel )
264 .translate( -xMin, - ( yMin + mHeight * mMapUnitsPerPixel ) );
270 return QTransform::fromTranslate( cx, cy )
272 .scale( 1 / mMapUnitsPerPixel, -1 / mMapUnitsPerPixel )
273 .translate( -mXCenter, -mYCenter );
double mapUnitsPerPixel() const
Returns current map units per pixel.
void setParameters(double mapUnitsPerPixel, double centerX, double centerY, int widthPixels, int heightPixels, double rotation)
Set parameters for use in transforming coordinates.
DistanceUnit
Units of distance.
QgsPointXY toMapCoordinates(int x, int y) const
Transform device coordinates to map (world) coordinates.
void set(double x, double y) SIP_HOLDGIL
Sets the x and y value of the point.
static Q_INVOKABLE double fromUnitToUnitFactor(QgsUnitTypes::DistanceUnit fromUnit, QgsUnitTypes::DistanceUnit toUnit)
Returns the conversion factor between the specified distance units.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
int mapHeight() const
Returns current map height in pixels.
double mapRotation() const
Returns current map rotation in degrees (clockwise)
Q_DECL_DEPRECATED QgsPointXY toMapPoint(double x, double y) const
Transform device coordinates to map (world) coordinates.
QString showParameters() const
String representation of the parameters used in the transform.
QgsMapToPixel()
Constructor.
A class to represent a 2D point.
void transformInPlace(double &x, double &y) const
Transform device coordinates to map coordinates.
Perform transforms between map coordinates and device coordinates.
int mapWidth() const
Returns current map width in pixels The information is only known if setRotation was used.
QTransform transform() const
static QgsMapToPixel fromScale(double scale, QgsUnitTypes::DistanceUnit mapUnits, double dpi=96)
Returns a new QgsMapToPixel created using a specified scale and distance unit.
void setMapRotation(double degrees, double cx, double cy)
Set map rotation in degrees (clockwise)
void setMapUnitsPerPixel(double mapUnitsPerPixel)
Set map units per pixel.