QGIS API Documentation  2.13.0-Master
qgscomposerpicture.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscomposerpicture.h
3  -------------------
4  begin : September 2005
5  copyright : (C) 2005 by Radim Blazek
6  email : [email protected]
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 QGSCOMPOSERPICTURE_H
18 #define QGSCOMPOSERPICTURE_H
19 
20 #include "qgscomposeritem.h"
21 #include <QFile>
22 #include <QImage>
23 #include <QSvgRenderer>
24 
25 class QgsComposerMap;
26 class QgsExpression;
27 
31 class CORE_EXPORT QgsComposerPicture: public QgsComposerItem
32 {
33  Q_OBJECT
34  public:
35 
39  {
40  Zoom,
42  Clip,
44  FrameToImageSize
45  };
46 
49  enum Mode
50  {
51  SVG,
54  };
55 
56  QgsComposerPicture( QgsComposition *composition );
58 
60  virtual int type() const override { return ComposerPicture; }
61 
63  void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget ) override;
64 
72  Q_DECL_DEPRECATED void setPictureFile( const QString& path );
73 
81  Q_DECL_DEPRECATED QString pictureFile() const;
82 
91  void setPicturePath( const QString& path );
92 
100  QString picturePath() const;
101 
105  void setSceneRect( const QRectF& rectangle ) override;
106 
111  bool writeXML( QDomElement& elem, QDomDocument & doc ) const override;
112 
117  bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) override;
118 
122  Q_DECL_DEPRECATED double rotation() const { return mPictureRotation; }
123 
130  double pictureRotation() const { return mPictureRotation; }
131 
140  void setRotationMap( int composerMapId );
141 
149  int rotationMap() const;
150 
156  bool useRotationMap() const { return mRotationMap; }
157 
164  ResizeMode resizeMode() const { return mResizeMode; }
165 
172  void setPictureAnchor( QgsComposerItem::ItemPositionMode anchor );
173 
180  ItemPositionMode pictureAnchor() const { return mPictureAnchor; }
181 
191  Q_DECL_DEPRECATED bool usePictureExpression() const;
192 
201  Q_DECL_DEPRECATED QString pictureExpression() const;
202 
207  Q_DECL_DEPRECATED bool imageSizeConsideringRotation( double& width, double& height ) const;
208 
213  Q_DECL_DEPRECATED bool cornerPointOnRotatedAndScaledRect( double& x, double& y, double width, double height ) const;
214 
219  Q_DECL_DEPRECATED void sizeChangedByRotation( double& width, double& height );
220 
225  Mode mode() const { return mMode; }
226 
227  public slots:
232  virtual void setRotation( double r ) override;
233 
240  virtual void setPictureRotation( double r );
241 
247  virtual void setResizeMode( ResizeMode mode );
248 
258  virtual void setUsePictureExpression( bool useExpression );
259 
268  virtual void setPictureExpression( const QString& expression );
269 
275  void refreshPicture( const QgsExpressionContext* context = nullptr );
276 
282  Q_DECL_DEPRECATED void updatePictureExpression() {}
283 
287  void recalculateSize();
288 
289  virtual void refreshDataDefinedProperty( const QgsComposerObject::DataDefinedProperty property = QgsComposerObject::AllProperties, const QgsExpressionContext *context = nullptr ) override;
290 
291  signals:
293  void pictureRotationChanged( double newRotation );
294 
295  private:
296 
297  //default constructor is forbidden
300  QRectF boundedSVGRect( double deviceWidth, double deviceHeight );
302  QRectF boundedImageRect( double deviceWidth, double deviceHeight );
303 
305  QSizeF pictureSize();
306 
307  QImage mImage;
308  QSvgRenderer mSVG;
309  QString mSourcePath;
310  Mode mMode;
311 
312  QSize mDefaultSvgSize;
313 
315  double mPictureRotation;
317  const QgsComposerMap* mRotationMap;
319  double mPictureWidth;
321  double mPictureHeight;
322 
323  ResizeMode mResizeMode;
324  QgsComposerItem::ItemPositionMode mPictureAnchor;
325 
326  bool mHasExpressionError;
327  bool mLoaded;
328 
330  void loadPicture( const QString &path );
331 
333  void init();
334 
338  QRect clippedImageRect( double &boundRectWidthMM, double &boundRectHeightMM, QSize imageRectPixels );
339 
342  void loadRemotePicture( const QString &url );
343 
346  void loadLocalPicture( const QString &path );
347 
348  private slots:
349 
350  void remotePictureLoaded();
351 };
352 
353 #endif
Class for parsing and evaluation of expressions (formerly called "search strings").
Q_DECL_DEPRECATED bool imageSizeConsideringRotation(double &width, double &height, double rotation) const
Calculates width and hight of the picture (in mm) such that it fits into the item frame with the give...
virtual bool writeXML(QDomElement &elem, QDomDocument &doc) const
Stores item state in DOM element.
Mode
Format of source image.
virtual void setRotation(double r)
Sets the item rotation.
Q_DECL_DEPRECATED double rotation() const
Returns the rotation used for drawing the picture within the composer item.
Mode mode() const
Returns the current picture mode (image format).
A item that forms part of a map composition.
Q_DECL_DEPRECATED void updatePictureExpression()
Prepares the picture&#39;s source expression after it is altered or the compositions atlas coverage layer...
DataDefinedProperty
Data defined properties for different item types.
A composer class that displays svg files or raster format (jpg, png, ...)
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
ResizeMode resizeMode() const
Returns the resize mode used for drawing the picture within the composer item&#39;s frame.
ItemPositionMode pictureAnchor() const
Returns the picture&#39;s current anchor, which controls how it is placed within the picture item&#39;s frame...
ResizeMode
Controls how pictures are scaled within the item&#39;s frame.
virtual int type() const override
Return correct graphics item type.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
virtual void refreshDataDefinedProperty(const QgsComposerObject::DataDefinedProperty property=QgsComposerObject::AllProperties, const QgsExpressionContext *context=nullptr) override
Refreshes a data defined property for the item by reevaluating the property&#39;s value and redrawing the...
bool useRotationMap() const
True if the picture rotation is matched to a map item.
Graphics scene for map printing.
Object representing map window.
Q_DECL_DEPRECATED bool cornerPointOnRotatedAndScaledRect(double &x, double &y, double width, double height, double rotation) const
Calculates corner point after rotation and scaling.
virtual bool readXML(const QDomElement &itemElem, const QDomDocument &doc)
Sets item state from DOM element.
virtual void setSceneRect(const QRectF &rectangle)
Sets this items bound in scene coordinates such that 1 item size units corresponds to 1 scene size un...
double pictureRotation() const
Returns the rotation used for drawing the picture within the item&#39;s frame.
Q_DECL_DEPRECATED void sizeChangedByRotation(double &width, double &height, double rotation)
Calculates width / height of the bounding box of a rotated rectangle.