This file is indexed.

/usr/include/qgis/qgssnapper.h is in libqgis-dev 2.8.6+dfsg-1build1.

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
/***************************************************************************
                              qgssnapper.h
                              ------------
  begin                : June 7, 2007
  copyright            : (C) 2007 by Marco Hugentobler
  email                : marco dot hugentobler at karto dot baug dot ethz dot ch
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 QGSSNAPPER_H
#define QGSSNAPPER_H

#include "qgspoint.h"
#include "qgstolerance.h"
#include "qgsfeature.h"

#include <QList>
#include <QMultiMap>

class QgsMapRenderer;
class QgsMapSettings;
class QgsVectorLayer;
class QPoint;

/** \ingroup core
 * Represents the result of a snapping operation.
 * */
struct CORE_EXPORT QgsSnappingResult
{
  /**The coordinates of the snapping result*/
  QgsPoint snappedVertex;
  /**The vertex index of snappedVertex
   or -1 if no such vertex number (e.g. snap to segment)*/
  int snappedVertexNr;
  /**The layer coordinates of the vertex before snappedVertex*/
  QgsPoint beforeVertex;
  /**The index of the vertex before snappedVertex
   or -1 if no such vertex*/
  int beforeVertexNr;
  /**The layer coordinates of the vertex after snappedVertex*/
  QgsPoint afterVertex;
  /**The index of the vertex after snappedVertex
   or -1 if no such vertex*/
  int afterVertexNr;
  /**Index of the snapped geometry*/
  QgsFeatureId snappedAtGeometry;
  /**Layer where the snap occurred*/
  const QgsVectorLayer* layer;
};



/**A class that allows advanced snapping operations on a set of vector layers*/
class CORE_EXPORT QgsSnapper
{
  public:
    /**Snap to vertex, to segment or both*/
    enum SnappingType
    {
      SnapToVertex,
      SnapToSegment,
      //snap to vertex and also to segment if no vertex is within the search tolerance
      SnapToVertexAndSegment
    };

    enum SnappingMode
    {
      /**Only one snapping result is returned*/
      SnapWithOneResult,
      /**Several snapping results which have the same position are returned.
         This is useful for topological editing*/
      SnapWithResultsForSamePosition,
      /**All results within the given layer tolerances are returned*/
      SnapWithResultsWithinTolerances
    };

    struct SnapLayer
    {
      /**The layer to which snapping is applied*/
      QgsVectorLayer* mLayer;
      /**The snapping tolerances for the layers, always in source coordinate systems of the layer*/
      double mTolerance;
      /**What snapping type to use (snap to segment or to vertex)*/
      QgsSnapper::SnappingType mSnapTo;
      /**What unit is used for tolerance*/
      QgsTolerance::UnitType mUnitType;
    };

    //!@ deprecated since 2.4 - use constructor with QgsMapSettings
    Q_DECL_DEPRECATED QgsSnapper( QgsMapRenderer *mapRender );

    explicit QgsSnapper( const QgsMapSettings& mapSettings );

    ~QgsSnapper();

    /** Does the snapping operation
     @param startPoint the start point for snapping (in pixel coordinates)
     @param snappingResult the list where the results are inserted (everything in map coordinate system)
     @param excludePoints a list with (map coordinate) points that should be excluded in the snapping result. Useful e.g. for vertex moves where a vertex should not be snapped to its original position
     @return 0 in case of success
     @deprecated
     */
    Q_DECL_DEPRECATED int snapPoint( const QPoint &startPoint, QList<QgsSnappingResult> &snappingResult, const QList<QgsPoint> &excludePoints = QList<QgsPoint>() );

    /** Does the snapping operation
     @param mapCoordPoint the start point for snapping (in map coordinates)
     @param snappingResult the list where the results are inserted (everything in map coordinate system)
     @param excludePoints a list with (map coordinate) points that should be excluded in the snapping result. Useful e.g. for vertex moves where a vertex should not be snapped to its original position
     @return 0 in case of success
    */
    int snapMapPoint( const QgsPoint &mapCoordPoint, QList<QgsSnappingResult> &snappingResult, const QList<QgsPoint> &excludePoints = QList<QgsPoint>() );

    //setters
    void setSnapLayers( const QList<QgsSnapper::SnapLayer>& snapLayers );
    void setSnapMode( QgsSnapper::SnappingMode snapMode );

  private:

    /**Removes the snapping results that contains points in exclude list*/
    void cleanResultList( QMultiMap<double, QgsSnappingResult>& list, const QList<QgsPoint>& excludeList ) const;

    /**The map settings object contains information about the output coordinate system
     of the map and about the relationship between pixel space and map space*/
    const QgsMapSettings& mMapSettings;
    /**Snap mode to apply*/
    QgsSnapper::SnappingMode mSnapMode;
    /**List of layers to which snapping is applied*/
    QList<QgsSnapper::SnapLayer> mSnapLayers;
};

#endif