QGIS API Documentation  2.17.0-Master (8784312)
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 
187  QColor svgFillColor() const { return mSvgFillColor; }
188 
197  void setSvgFillColor( const QColor& color );
198 
204  QColor svgBorderColor() const { return mSvgBorderColor; }
205 
214  void setSvgBorderColor( const QColor& color );
215 
221  double svgBorderWidth() const { return mSvgBorderWidth; }
222 
231  void setSvgBorderWidth( double width );
232 
242  Q_DECL_DEPRECATED bool usePictureExpression() const;
243 
252  Q_DECL_DEPRECATED QString pictureExpression() const;
253 
258  Q_DECL_DEPRECATED bool imageSizeConsideringRotation( double& width, double& height ) const;
259 
264  Q_DECL_DEPRECATED bool cornerPointOnRotatedAndScaledRect( double& x, double& y, double width, double height ) const;
265 
270  Q_DECL_DEPRECATED void sizeChangedByRotation( double& width, double& height );
271 
276  Mode mode() const { return mMode; }
277 
278  public slots:
283  virtual void setRotation( double r ) override;
284 
291  virtual void setPictureRotation( double r );
292 
298  virtual void setResizeMode( ResizeMode mode );
299 
309  virtual void setUsePictureExpression( bool useExpression );
310 
319  virtual void setPictureExpression( const QString& expression );
320 
326  void refreshPicture( const QgsExpressionContext* context = nullptr );
327 
333  Q_DECL_DEPRECATED void updatePictureExpression() {}
334 
338  void recalculateSize();
339 
340  virtual void refreshDataDefinedProperty( const QgsComposerObject::DataDefinedProperty property = QgsComposerObject::AllProperties, const QgsExpressionContext *context = nullptr ) override;
341 
342  signals:
344  void pictureRotationChanged( double newRotation );
345 
346  private:
347 
348  //default constructor is forbidden
351  QRectF boundedSVGRect( double deviceWidth, double deviceHeight );
353  QRectF boundedImageRect( double deviceWidth, double deviceHeight );
354 
356  QSizeF pictureSize();
357 
358  QImage mImage;
359  QSvgRenderer mSVG;
360  QString mSourcePath;
361  Mode mMode;
362 
363  QSize mDefaultSvgSize;
364 
366  double mPictureRotation;
368  const QgsComposerMap* mRotationMap;
370  double mPictureWidth;
372  double mPictureHeight;
373 
374  ResizeMode mResizeMode;
375  QgsComposerItem::ItemPositionMode mPictureAnchor;
376 
377  QColor mSvgFillColor;
378  QColor mSvgBorderColor;
379  double mSvgBorderWidth;
380 
381  bool mHasExpressionError;
382  bool mLoaded;
383  bool mLoadingSvg;
384 
386  void loadPicture( const QString &path );
387 
389  void init();
390 
394  QRect clippedImageRect( double &boundRectWidthMM, double &boundRectHeightMM, QSize imageRectPixels );
395 
398  void loadRemotePicture( const QString &url );
399 
402  void loadLocalPicture( const QString &path );
403 
404  private slots:
405 
406  void remotePictureLoaded();
407 };
408 
409 #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.
QColor svgFillColor() const
Returns the fill color used for parameterized SVG files.
Q_DECL_DEPRECATED double rotation() const
Returns the rotation used for drawing the picture within the composer item.
double svgBorderWidth() const
Returns the border width (in mm) used for parameterized SVG files.
Mode mode() const
Returns the current picture mode (image format).
A item that forms part of a map composition.
QColor svgBorderColor() const
Returns the border color used for parameterized SVG files.
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.