This file is indexed.

/usr/include/osgEarth/ModelSource 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
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
/* -*-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_MODEL_SOURCE_H
#define OSGEARTH_MODEL_SOURCE_H 1

#include <osgEarth/Common>
#include <osgEarth/Config>
#include <osgEarth/GeoData>
#include <osgEarth/NodeUtils>
#include <osgEarth/Revisioning>
#include <osgEarth/ThreadingUtils>
#include <osgEarth/Status>
#include <osgEarth/SceneGraphCallback>
#include <osg/Referenced>

namespace osgEarth
{   
    class Map;
    class ProgressCallback;
    
    /**
     * Configuration options for a models source.
     */
    class OSGEARTH_EXPORT ModelSourceOptions : public DriverConfigOptions
    {
    public:
        ModelSourceOptions( const ConfigOptions& options =ConfigOptions() );

        /** dtor */
        virtual ~ModelSourceOptions();

    public: // properties

        /** minimum camera range at which the data is visible */
        optional<float>& minRange() { return _minRange; }
        const optional<float>& minRange() const { return _minRange; }

        /** maximum camera range at which the data is visible */
        optional<float>& maxRange() { return _maxRange; }
        const optional<float>& maxRange() const { return _maxRange; }

        /** render bin order */
        optional<int>& renderOrder() { return _renderOrder; }
        const optional<int>& renderOrder() const { return _renderOrder; }

        optional<std::string>& renderBin() { return _renderBin; }
        const optional<std::string>& renderBin() const { return _renderBin; }

        /** whether to read the depth buffer when rendering */
        optional<bool>& depthTestEnabled() { return _depthTestEnabled; }
        const optional<bool>& depthTestEnabled() const { return _depthTestEnabled; }

    public:
        virtual Config getConfig() const;

    protected:
        virtual void mergeConfig( const Config& conf );
        
    private:
        void fromConfig( const Config& conf );

        optional<float> _minRange, _maxRange;
        optional<int> _renderOrder;
        optional<std::string> _renderBin;
        optional<bool> _depthTestEnabled;
        optional<bool> _overlay;
    };


    /**
     * A ModelSource is a plugin object that generates OSG nodes.
     */
    class OSGEARTH_EXPORT ModelSource : public osg::Object, public Revisioned
    {
    public:
        ModelSource( const ModelSourceOptions& options =ModelSourceOptions() );

        /** dtor */
        virtual ~ModelSource();

        /**
         * Opens the model source and returns a status. 
         */
        const Status& open(const osgDB::Options* readOptions);

        /**
         * Status after calling open.
         */
        const Status& getStatus() const { return _status; }

        /**
         * Creates the top level node for this model source.
         */
        osg::Node* createNode(
            const Map*        map,
            ProgressCallback* progress );

        /**
         * Access to the scene graph callbacks
         */
        void setSceneGraphCallbacks(SceneGraphCallbacks* value) { _sgCallbacks = value; }
        SceneGraphCallbacks* getSceneGraphCallbacks() const { return _sgCallbacks.get(); }


    public: // META_Object specialization
        // these are neseccary to we can load ModelSource implementations as plugins
        virtual osg::Object* cloneType() const { return 0; } // cloneType() not appropriate
        virtual osg::Object* clone(const osg::CopyOp&) const { return 0; } // clone() not appropriate
        virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const ModelSource*>(obj)!=NULL; }
        virtual const char* className() const { return "ModelSource"; }
        virtual const char* libraryName() const { return "osgEarth"; }

    public:

        /** Get the options used to create this model source */
        const ModelSourceOptions& getOptions() const { return _options; }

        /**
         * Gets the list of areas with data for this ModelSource
         */
        const DataExtentList& getDataExtents() const { return _dataExtents; }
        DataExtentList& getDataExtents() { return _dataExtents; }

    protected:

        /**
         * Perform one-time initialization and return the initial status.
         * This is called internally by open().
         */
        virtual Status initialize(const osgDB::Options* readOptions) =0;

        /**
         * Subclass implements this method to create a scene graph within the
         * context of the provided Map.
         */
        virtual osg::Node* createNodeImplementation(
            const Map*        map,
            ProgressCallback* progress ) =0;

    protected:
        
        /** Subclass can set the status with this */
        void setStatus(const Status& value) { _status = value; }

    private:
        const ModelSourceOptions _options;
        optional<double> _minRange;
        optional<double> _maxRange;
        optional<int>    _renderOrder;
        DataExtentList   _dataExtents;
        Status _status;

        osg::ref_ptr<SceneGraphCallbacks> _sgCallbacks;        

        friend class Map;
        friend class MapEngine;
        friend class ModelSourceFactory;

    };

    //--------------------------------------------------------------------

    class OSGEARTH_EXPORT ModelSourceDriver : public osgDB::ReaderWriter
    {
    protected:
        const ModelSourceOptions& getModelSourceOptions( const osgDB::ReaderWriter::Options* rwOpt ) const;

        virtual ~ModelSourceDriver();
    };

    //--------------------------------------------------------------------

    /**
     * Creates TileSource instances and chains them together to create
     * tile source "pipelines" for data access and processing.
     */
    class OSGEARTH_EXPORT ModelSourceFactory
    {   
    public:
        static ModelSource* create( const ModelSourceOptions& options );

        virtual ~ModelSourceFactory();
    };
}

#endif // OSGEARTH_MODEL_SOURCE_H