This file is indexed.

/usr/include/osgEarth/Locators is in libosgearth-dev 2.9.0+dfsg-1.

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
/* -*-c++-*- */
/* osgEarth - Dynamic map generation toolkit for OpenSceneGraph
 * Copyright 2016 Pelican Mapping
 * http://osgearth.org
 *
 * osgEarth is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 */

#ifndef OSGEARTH_LOCATORS_H
#define OSGEARTH_LOCATORS_H 1

#include <osgEarth/Common>
#include <osgEarth/GeoData>
#include <osgTerrain/Locator>

namespace osgEarth
{
    class MapInfo;
    class TileKey;

    /**
     * Locator that stores the extent of its source data (which might be different
     * than the extent of the locator's transform). This locator can also automatically
     * crop out a section of the source image.
     */
    class OSGEARTH_EXPORT GeoLocator : public osgTerrain::Locator
    {
    public:
        GeoLocator();

        GeoLocator( const GeoExtent& dataExtent );

        GeoLocator( const osgTerrain::Locator& prototype, const GeoExtent& dataExtent );

        /** Construct a locator that crops to a display extent. */
        GeoLocator( const osgTerrain::Locator& prototype, const GeoExtent& dataExtent, const GeoExtent& displayExtent );

        /** dtor */
        virtual ~GeoLocator() { }

        static GeoLocator* createForKey( const TileKey& key, const MapInfo& mapInfo );
        static GeoLocator* createForExtent( const GeoExtent& extent, const MapInfo& mapInfo);

        GeoLocator* createSameTypeForKey(const TileKey& key, const MapInfo& mapInfo );
        virtual GeoLocator* createSameTypeForExtent(const GeoExtent& extent, const MapInfo& mapInfo);

        void setDataExtent( const GeoExtent& extent );
        const GeoExtent& getDataExtent() const;

        virtual GeoLocator* getGeographicFromGeocentric() const;

        virtual bool isEquivalentTo( const GeoLocator& rhs ) const;

        // generates linear (evenly-spaced) coordinates
        virtual bool isLinear() const { return true; }

        virtual bool createScaleBiasMatrix(const GeoExtent& window, osg::Matrixd& out_m) const;
        virtual bool createScaleBiasMatrix(const GeoExtent& window, osg::Matrixf& out_m) const;

    public: // better-sounding functions.

        bool modelToUnit(const osg::Vec3d& model, osg::Vec3d& unit) const {
            return convertModelToLocal(model, unit);
        }
        
        bool unitToModel(const osg::Vec3d& unit, osg::Vec3d& model) const {
            return convertLocalToModel(unit, model);
        }
        
    public: // Locator
        virtual bool convertModelToLocal(const osg::Vec3d& world, osg::Vec3d& local) const;

    protected:
        void cropLocal( osg::Vec3d& local ) const;

        bool _inverseCalculated;

    private:
        GeoExtent _dataExtent;
        double _x0, _y0, _x1, _y1;
    };

    
    /**
     * A terrain locator that generates texture coordinates that warp a Mercator image.
     *
     * Note: the MercatorLocator doesn't have a "cropping" variation b/c it automatically
     * self-crops as necessary.
     */
    class OSGEARTH_EXPORT MercatorLocator : public GeoLocator
    {
    public:
        MercatorLocator( const GeoExtent& dataExtent );

        MercatorLocator( const osgTerrain::Locator& prototype, const GeoExtent& dataExtent );

        //virtual bool convertLocalToModel(const osg::Vec3d& local, osg::Vec3d& model) const;
        virtual bool convertModelToLocal(const osg::Vec3d& world, osg::Vec3d& local) const;

        virtual GeoLocator* getGeographicFromGeocentric() const;

        // does NOT generate linear coordinates
        virtual bool isLinear() const { return false; }

        // override.
        virtual GeoLocator* createSameTypeForExtent(const GeoExtent& extent, const class MapInfo& mapInfo);

    private:
        GeoExtent _geoDataExtent;

        void postInit();
    };
}

#endif // OSGEARTH_LOCATORS_H