QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 : radim.blazek@gmail.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 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 { return ComposerPicture; }
61 
63  void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget );
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 );
106 
111  bool writeXML( QDomElement& elem, QDomDocument & doc ) const;
112 
117  bool readXML( const QDomElement& itemElem, const QDomDocument& doc );
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 );
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( QString expression );
269 
274  void refreshPicture();
275 
281  Q_DECL_DEPRECATED void updatePictureExpression() {};
282 
286  void recalculateSize();
287 
289 
290  signals:
292  void pictureRotationChanged( double newRotation );
293 
294  private:
295 
296  //default constructor is forbidden
299  QRectF boundedSVGRect( double deviceWidth, double deviceHeight );
301  QRectF boundedImageRect( double deviceWidth, double deviceHeight );
302 
304  QSizeF pictureSize();
305 
306  QImage mImage;
307  QSvgRenderer mSVG;
308  QString mSourcePath;
310 
312 
321 
324 
326  bool mLoaded;
327 
329  void loadPicture( const QString &path );
330 
332  void init();
333 
337  QRect clippedImageRect( double &boundRectWidthMM, double &boundRectHeightMM, QSize imageRectPixels );
338 
341  void loadRemotePicture( const QString &url );
342 
345  void loadLocalPicture( const QString &path );
346 
347  private slots:
348 
349  void remotePictureLoaded();
350 };
351 
352 #endif