QGIS API Documentation  2.17.0-Master (bf77d09)
qgscomposerarrow.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscomposerarrow.h
3  ----------------------
4  begin : November 2009
5  copyright : (C) 2009 by Marco Hugentobler
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 
18 #ifndef QGSCOMPOSERARROW_H
19 #define QGSCOMPOSERARROW_H
20 
21 #include "qgscomposeritem.h"
22 #include <QBrush>
23 #include <QPen>
24 
25 class QgsLineSymbolV2;
26 
30 class CORE_EXPORT QgsComposerArrow: public QgsComposerItem
31 {
32  Q_OBJECT
33 
34  public:
35 
37  {
40  SVGMarker
41  };
42 
47 
53  QgsComposerArrow( QPointF startPoint, QPointF stopPoint, QgsComposition* c );
54 
56 
58  virtual int type() const override { return ComposerArrow; }
59 
61  void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget ) override;
62 
65  void setSceneRect( const QRectF& rectangle ) override;
66 
71  void setArrowHeadWidth( double width );
72 
77  double arrowHeadWidth() const { return mArrowHeadWidth; }
78 
82  Q_DECL_DEPRECATED void setOutlineWidth( double width );
83 
87  Q_DECL_DEPRECATED double outlineWidth() const;
88 
94  void setStartMarker( const QString& svgPath );
95 
101  QString startMarker() const { return mStartMarkerFile; }
102 
108  void setEndMarker( const QString& svgPath );
109 
115  QString endMarker() const { return mEndMarkerFile; }
116 
120  Q_DECL_DEPRECATED QColor arrowColor() const;
121 
125  Q_DECL_DEPRECATED void setArrowColor( const QColor& c );
126 
133  QColor arrowHeadOutlineColor() const { return mArrowHeadOutlineColor; }
134 
141  void setArrowHeadOutlineColor( const QColor& color );
142 
149  QColor arrowHeadFillColor() const { return mArrowHeadFillColor; }
150 
157  void setArrowHeadFillColor( const QColor& color );
158 
165  void setArrowHeadOutlineWidth( const double width );
166 
173  double arrowHeadOutlineWidth() const { return mArrowHeadOutlineWidth; }
174 
180  void setLineSymbol( QgsLineSymbolV2* symbol );
181 
187  QgsLineSymbolV2* lineSymbol() { return mLineSymbol; }
188 
193  MarkerMode markerMode() const { return mMarkerMode; }
194 
199  void setMarkerMode( MarkerMode mode );
200 
205  bool writeXML( QDomElement& elem, QDomDocument & doc ) const override;
206 
211  bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) override;
212 
213  private:
214 
215  enum MarkerType
216  {
217  StartMarker,
218  EndMarker
219  };
220 
221  QPointF mStartPoint;
222  QPointF mStopPoint;
223 
227  int mStartXIdx;
228  int mStartYIdx;
229 
230  QPen mPen;
231  QBrush mBrush;
232 
234  double mArrowHeadWidth;
236  double mStartArrowHeadHeight;
237  double mStopArrowHeadHeight;
238 
240  QString mStartMarkerFile;
242  QString mEndMarkerFile;
244  MarkerMode mMarkerMode;
245 
246  double mArrowHeadOutlineWidth;
247  QColor mArrowHeadOutlineColor;
248  QColor mArrowHeadFillColor;
252  int mBoundsBehaviour;
253 
254  QgsLineSymbolV2* mLineSymbol;
255 
259  void adaptItemSceneRect();
261  double computeMarkerMargin() const;
263  void drawHardcodedMarker( QPainter* p, MarkerType type );
265  void drawSVGMarker( QPainter* p, MarkerType type, const QString& markerPath );
267  void init();
271  void createDefaultLineSymbol();
275  void drawLine( QPainter *painter );
276 };
277 
278 #endif // QGSCOMPOSERARROW_H
279 
280 
QgsLineSymbolV2 * lineSymbol()
Returns the line symbol used for drawing the line portion of the arrow.
virtual bool writeXML(QDomElement &elem, QDomDocument &doc) const
Stores item state in DOM element.
An item that draws an arrow between two points.
virtual int type() const override
Return composer item type.
A item that forms part of a map composition.
QColor arrowHeadFillColor() const
Returns the color used to fill the arrow head.
MarkerMode markerMode() const
Returns marker mode, which controls how the arrow endpoints are drawn.
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
QColor arrowHeadOutlineColor() const
Returns the color used to draw outline around the the arrow head.
QString endMarker() const
Returns the marker drawn at the end of the line.
Graphics scene for map printing.
QString startMarker() const
Returns the marker drawn at the start of the line.
double arrowHeadOutlineWidth() const
Returns the pen width for the outline of the arrow head.
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 arrowHeadWidth() const
Returns the width of the arrow head in mm.