QGIS API Documentation  2.12.0-Lyon
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 
28 class CORE_EXPORT QgsComposerArrow: public QgsComposerItem
29 {
30  public:
31 
33  {
36  SVGMarker
37  };
38 
43 
49  QgsComposerArrow( const QPointF& startPoint, const QPointF& stopPoint, QgsComposition* c );
50 
52 
54  virtual int type() const override { return ComposerArrow; }
55 
57  void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget ) override;
58 
61  void setSceneRect( const QRectF& rectangle ) override;
62 
67  void setArrowHeadWidth( double width );
68 
73  double arrowHeadWidth() const { return mArrowHeadWidth; }
74 
78  Q_DECL_DEPRECATED void setOutlineWidth( double width );
79 
83  Q_DECL_DEPRECATED double outlineWidth() const;
84 
90  void setStartMarker( const QString& svgPath );
91 
97  QString startMarker() const { return mStartMarkerFile; }
98 
104  void setEndMarker( const QString& svgPath );
105 
111  QString endMarker() const { return mEndMarkerFile; }
112 
116  Q_DECL_DEPRECATED QColor arrowColor() const;
117 
121  Q_DECL_DEPRECATED void setArrowColor( const QColor& c );
122 
129  QColor arrowHeadOutlineColor() const { return mArrowHeadOutlineColor; }
130 
137  void setArrowHeadOutlineColor( const QColor& color );
138 
145  QColor arrowHeadFillColor() const { return mArrowHeadFillColor; }
146 
153  void setArrowHeadFillColor( const QColor& color );
154 
161  void setArrowHeadOutlineWidth( const double width );
162 
169  double arrowHeadOutlineWidth() const { return mArrowHeadOutlineWidth; }
170 
176  void setLineSymbol( QgsLineSymbolV2* symbol );
177 
183  QgsLineSymbolV2* lineSymbol() { return mLineSymbol; }
184 
189  MarkerMode markerMode() const { return mMarkerMode; }
190 
195  void setMarkerMode( MarkerMode mode );
196 
201  bool writeXML( QDomElement& elem, QDomDocument & doc ) const override;
202 
207  bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) override;
208 
209  private:
210 
211  enum MarkerType
212  {
213  StartMarker,
214  EndMarker
215  };
216 
217  QPointF mStartPoint;
218  QPointF mStopPoint;
219 
223  int mStartXIdx;
224  int mStartYIdx;
225 
226  QPen mPen;
227  QBrush mBrush;
228 
230  double mArrowHeadWidth;
232  double mStartArrowHeadHeight;
233  double mStopArrowHeadHeight;
234 
236  QString mStartMarkerFile;
238  QString mEndMarkerFile;
240  MarkerMode mMarkerMode;
241 
242  double mArrowHeadOutlineWidth;
243  QColor mArrowHeadOutlineColor;
244  QColor mArrowHeadFillColor;
248  int mBoundsBehaviour;
249 
250  QgsLineSymbolV2* mLineSymbol;
251 
254  void adaptItemSceneRect();
256  double computeMarkerMargin() const;
258  void drawHardcodedMarker( QPainter* p, MarkerType type );
260  void drawSVGMarker( QPainter* p, MarkerType type, const QString& markerPath );
262  void init();
266  void createDefaultLineSymbol();
270  void drawLine( QPainter *painter );
271 };
272 
273 #endif // QGSCOMPOSERARROW_H
274 
275 
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 to 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.