QGIS API Documentation  3.6.0-Noosa (5873452)
qgstransformeffect.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgstransformeffect.h
3  --------------------
4  begin : March 2015
5  copyright : (C) 2015 Nyall Dawson
6  email : nyall dot dawson at gmail dot com
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 #ifndef QGSTRANSFORMEFFECT_H
18 #define QGSTRANSFORMEFFECT_H
19 
20 #include "qgis_core.h"
21 #include "qgspainteffect.h"
22 #include "qgis_sip.h"
23 #include "qgsmapunitscale.h"
24 #include "qgsunittypes.h"
25 #include <QPainter>
26 
36 class CORE_EXPORT QgsTransformEffect : public QgsPaintEffect
37 {
38 
39  public:
40 
46  static QgsPaintEffect *create( const QgsStringMap &map ) SIP_FACTORY;
47 
51  QgsTransformEffect() = default;
52 
53  QString type() const override { return QStringLiteral( "transform" ); }
54  QgsStringMap properties() const override;
55  void readProperties( const QgsStringMap &props ) override;
56  QgsTransformEffect *clone() const override SIP_FACTORY;
57 
66  void setTranslateX( const double translateX ) { mTranslateX = translateX; }
67 
76  double translateX() const { return mTranslateX; }
77 
86  void setTranslateY( const double translateY ) { mTranslateY = translateY; }
87 
96  double translateY() const { return mTranslateY; }
97 
106  void setTranslateUnit( const QgsUnitTypes::RenderUnit unit ) { mTranslateUnit = unit; }
107 
116  QgsUnitTypes::RenderUnit translateUnit() const { return mTranslateUnit; }
117 
126  void setTranslateMapUnitScale( const QgsMapUnitScale &scale ) { mTranslateMapUnitScale = scale; }
127 
136  const QgsMapUnitScale &translateMapUnitScale() const { return mTranslateMapUnitScale; }
137 
144  void setScaleX( const double scaleX ) { mScaleX = scaleX; }
145 
152  double scaleX() const { return mScaleX; }
153 
159  void setScaleY( const double scaleY ) { mScaleY = scaleY; }
160 
167  double scaleY() const { return mScaleY; }
168 
173  void setRotation( const double rotation ) { mRotation = rotation; }
174 
179  double rotation() const { return mRotation; }
180 
187  void setShearX( const double shearX ) { mShearX = shearX; }
188 
195  double shearX() const { return mShearX; }
196 
203  void setShearY( const double shearY ) { mShearY = shearY; }
204 
211  double shearY() const { return mShearY; }
212 
219  void setReflectX( const bool reflectX ) { mReflectX = reflectX; }
220 
227  bool reflectX() const { return mReflectX; }
228 
235  void setReflectY( const bool reflectY ) { mReflectY = reflectY; }
236 
243  bool reflectY() const { return mReflectY; }
244 
245  protected:
246 
247  void draw( QgsRenderContext &context ) override;
248  QRectF boundingRect( const QRectF &rect, const QgsRenderContext &context ) const override;
249 
250  private:
251 
252  double mTranslateX = 0.0;
253  double mTranslateY = 0.0;
255  QgsMapUnitScale mTranslateMapUnitScale;
256  double mScaleX = 1.0;
257  double mScaleY = 1.0;
258  double mRotation = 0.0;
259  double mShearX = 0.0;
260  double mShearY = 0.0;
261  bool mReflectX = false;
262  bool mReflectY = false;
263 
264  QTransform createTransform( const QgsRenderContext &context ) const;
265 
266 };
267 
268 #endif // QGSTRANSFORMEFFECT_H
269 
void setShearY(const double shearY)
Sets the y axis shearing factor.
void setShearX(const double shearX)
Sets the x axis shearing factor.
virtual QgsStringMap properties() const =0
Returns the properties describing the paint effect encoded in a string format.
bool reflectX() const
Returns whether transform will be reflected along the x-axis.
QString type() const override
Returns the effect type.
Base class for visual effects which can be applied to QPicture drawings.
double shearY() const
Returns the y axis shearing factor.
double scaleX() const
Returns the x axis scaling factor.
QMap< QString, QString > QgsStringMap
Definition: qgis.h:587
void setTranslateY(const double translateY)
Sets the transform y translation.
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
void setScaleY(const double scaleY)
Sets the y axis scaling factor.
void setTranslateMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the transform translation.
double translateX() const
Returns the transform x translation.
double scaleY() const
Returns the y axis scaling factor.
bool reflectY() const
Returns whether transform will be reflected along the y-axis.
#define SIP_FACTORY
Definition: qgis_sip.h:69
double rotation() const
Returns the transform rotation, in degrees clockwise.
A paint effect which applies transformations (such as move, scale and rotate) to a picture...
virtual void readProperties(const QgsStringMap &props)=0
Reads a string map of an effect&#39;s properties and restores the effect to the state described by the pr...
double shearX() const
Returns the x axis shearing factor.
void setTranslateUnit(const QgsUnitTypes::RenderUnit unit)
Sets the units used for the transform translation.
QgsUnitTypes::RenderUnit translateUnit() const
Returns the units used for the transform translation.
void setScaleX(const double scaleX)
Sets the x axis scaling factor.
Contains information about the context of a rendering operation.
virtual QRectF boundingRect(const QRectF &rect, const QgsRenderContext &context) const
Returns the bounding rect required for drawing the effect.
Struct for storing maximum and minimum scales for measurements in map units.
void setTranslateX(const double translateX)
Sets the transform x translation.
void setReflectY(const bool reflectY)
Sets whether to reflect along the y-axis.
const QgsMapUnitScale & translateMapUnitScale() const
Returns the map unit scale used for the transform translation.
void setRotation(const double rotation)
Sets the transform rotation, in degrees clockwise.
void setReflectX(const bool reflectX)
Sets whether to reflect along the x-axis.
virtual void draw(QgsRenderContext &context)=0
Handles drawing of the effect&#39;s result on to the specified render context.
double translateY() const
Returns the transform y translation.
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:111