This file is indexed.

/usr/include/qgis/qgscomposerarrow.h is in libqgis-dev 2.14.11+dfsg-3+deb9u1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
/***************************************************************************
                         qgscomposerarrow.h
                         ----------------------
    begin                : November 2009
    copyright            : (C) 2009 by Marco Hugentobler
    email                : marco@hugis.net
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef QGSCOMPOSERARROW_H
#define QGSCOMPOSERARROW_H

#include "qgscomposeritem.h"
#include <QBrush>
#include <QPen>

class QgsLineSymbolV2;

/** An item that draws an arrow between to points*/
class CORE_EXPORT QgsComposerArrow: public QgsComposerItem
{
    Q_OBJECT

  public:

    enum MarkerMode
    {
      DefaultMarker,
      NoMarker,
      SVGMarker
    };

    /** Constructor
     * @param c parent composition
     */
    QgsComposerArrow( QgsComposition* c );

    /** Constructor
     * @param startPoint start point for line
     * @param stopPoint end point for line
     * @param c parent composition
     */
    QgsComposerArrow( QPointF startPoint, QPointF stopPoint, QgsComposition* c );

    ~QgsComposerArrow();

    /** Return composer item type. */
    virtual int type() const override { return ComposerArrow; }

    /** \brief Reimplementation of QCanvasItem::paint - draw on canvas */
    void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget ) override;

    /** Modifies position of start and endpoint and calls QgsComposerItem::setSceneRect
     */
    void setSceneRect( const QRectF& rectangle ) override;

    /** Sets the width of the arrow head in mm
     * @param width width of arrow head
     * @see arrowHeadWidth
     */
    void setArrowHeadWidth( double width );

    /** Returns the width of the arrow head in mm
     * @returns width of arrow head
     * @see setArrowHeadWidth
     */
    double arrowHeadWidth() const { return mArrowHeadWidth; }

    /** Sets the pen width for drawing the line and arrow head
     * @deprecated use setArrowHeadOutlineWidth or setLineSymbol instead
     */
    Q_DECL_DEPRECATED void setOutlineWidth( double width );

    /** Returns the pen width for drawing the line and arrow head
     * @deprecated use arrowHeadOutlineWidth or lineSymbol instead
     */
    Q_DECL_DEPRECATED double outlineWidth() const;

    /** Sets the marker to draw at the start of the line
     * @param svgPath file path for svg marker graphic to draw
     * @see startMarker
     * @see setEndMarker
     */
    void setStartMarker( const QString& svgPath );

    /** Returns the marker drawn at the start of the line
     * @returns file path for svg marker graphic
     * @see setStartMarker
     * @see endMarker
     */
    QString startMarker() const { return mStartMarkerFile; }

    /** Sets the marker to draw at the end of the line
     * @param svgPath file path for svg marker graphic to draw
     * @see endMarker
     * @see setStartMarker
     */
    void setEndMarker( const QString& svgPath );

    /** Returns the marker drawn at the end of the line
     * @returns file path for svg marker graphic
     * @see setEndMarker
     * @see startMarker
     */
    QString endMarker() const { return mEndMarkerFile; }

    /** Returns the color for the line and arrow head
     * @deprecated use arrowHeadOutlineColor, arrowHeadFillColor or lineStyle instead
     */
    Q_DECL_DEPRECATED QColor arrowColor() const;

    /** Sets the color for the line and arrow head
     * @deprecated use setArrowHeadOutlineColor, setArrowHeadFillColor or setLineStyle instead
     */
    Q_DECL_DEPRECATED void setArrowColor( const QColor& c );

    /** Returns the color used to draw outline around the the arrow head.
     * @returns arrow head outline color
     * @see arrowHeadFillColor
     * @see setArrowHeadOutlineColor
     * @note added in 2.5
     */
    QColor arrowHeadOutlineColor() const { return mArrowHeadOutlineColor; }

    /** Sets the color used to draw the outline around the arrow head.
     * @param color arrow head outline color
     * @see setArrowHeadFillColor
     * @see arrowHeadOutlineColor
     * @note added in 2.5
     */
    void setArrowHeadOutlineColor( const QColor& color );

    /** Returns the color used to fill the arrow head.
     * @returns arrow head fill color
     * @see arrowHeadOutlineColor
     * @see setArrowHeadFillColor
     * @note added in 2.5
     */
    QColor arrowHeadFillColor() const { return mArrowHeadFillColor; }

    /** Sets the color used to fill the arrow head.
     * @param color arrow head fill color
     * @see arrowHeadFillColor
     * @see setArrowHeadOutlineColor
     * @note added in 2.5
     */
    void setArrowHeadFillColor( const QColor& color );

    /** Sets the pen width for the outline of the arrow head
     * @param width pen width for arrow head outline
     * @see arrowHeadOutlineWidth
     * @see setArrowHeadOutlineColor
     * @note added in 2.5
     */
    void setArrowHeadOutlineWidth( const double width );

    /** Returns the pen width for the outline of the arrow head
     * @returns pen width for arrow head outline
     * @see setArrowHeadOutlineWidth
     * @see arrowHeadOutlineColor
     * @note added in 2.5
     */
    double arrowHeadOutlineWidth() const { return mArrowHeadOutlineWidth; }

    /** Sets the line symbol used for drawing the line portion of the arrow
     * @param symbol line symbol
     * @see lineSymbol
     * @note added in 2.5
     */
    void setLineSymbol( QgsLineSymbolV2* symbol );

    /** Returns the line symbol used for drawing the line portion of the arrow
     * @returns line symbol
     * @see setLineSymbol
     * @note added in 2.5
     */
    QgsLineSymbolV2* lineSymbol() { return mLineSymbol; }

    /** Returns marker mode, which controls how the arrow endpoints are drawn
     * @returns marker mode
     * @see setMarkerMode
     */
    MarkerMode markerMode() const { return mMarkerMode; }

    /** Sets the marker mode, which controls how the arrow endpoints are drawn
     * @param mode marker mode
     * @see setMarkerMode
     */
    void setMarkerMode( MarkerMode mode );

    /** Stores state in DOM element
     * @param elem is DOM element corresponding to 'Composer' tag
     * @param doc document
     */
    bool writeXML( QDomElement& elem, QDomDocument & doc ) const override;

    /** Sets state from DOM document
     * @param itemElem is DOM node corresponding to item tag
     * @param doc is the document to read
     */
    bool readXML( const QDomElement& itemElem, const QDomDocument& doc ) override;

  private:

    enum MarkerType
    {
      StartMarker,
      EndMarker
    };

    QPointF mStartPoint;
    QPointF mStopPoint;

    /** Considering the rectangle as spanning [x[0], x[1]] x [y[0], y[1]], these
     * indices specify which index {0, 1} corresponds to the start point
     * coordinate of the respective dimension*/
    int mStartXIdx;
    int mStartYIdx;

    QPen mPen;
    QBrush mBrush;

    /** Width of the arrow marker in mm. May be specified by the user. The height is automatically adapted*/
    double mArrowHeadWidth;
    /** Height of the arrow marker in mm. Is calculated from arrow marker width and apsect ratio of svg*/
    double mStartArrowHeadHeight;
    double mStopArrowHeadHeight;

    /** Path to the start marker file*/
    QString mStartMarkerFile;
    /** Path to the end marker file*/
    QString mEndMarkerFile;
    /** Default marker, no marker or svg marker*/
    MarkerMode mMarkerMode;

    double mArrowHeadOutlineWidth;
    QColor mArrowHeadOutlineColor;
    QColor mArrowHeadFillColor;
    /** Indicates QGIS version to mimic bounding box behaviour for. The line placement changed in version 2.4, so a value
     * of 22 is used to indicate that the line should be drawn using the older placement routine.
     */
    int mBoundsBehaviour;

    QgsLineSymbolV2* mLineSymbol;

    /** Adapts the item scene rect to contain the start point, the stop point including the arrow marker and the outline.
     *  Needs to be called whenever the arrow width/height, the outline with or the endpoints are changed
     */
    void adaptItemSceneRect();
    /** Computes the margin around the line necessary to include the markers */
    double computeMarkerMargin() const;
    /** Draws the default marker at the line end*/
    void drawHardcodedMarker( QPainter* p, MarkerType type );
    /** Draws a user-defined marker (must be an svg file)*/
    void drawSVGMarker( QPainter* p, MarkerType type, const QString& markerPath );
    /** Apply default graphics settings*/
    void init();
    /** Creates the default line symbol
     * @note added in QGIS 2.5
     */
    void createDefaultLineSymbol();
    /** Draws the arrow line
     * @note added in QGIS 2.5
     */
    void drawLine( QPainter *painter );
};

#endif // QGSCOMPOSERARROW_H