This file is indexed.

/usr/include/osgEarthSymbology/ModelSymbol 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
/* -*-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 OSGEARTHSYMBOLOGY_MODEL_SYMBOL_H
#define OSGEARTHSYMBOLOGY_MODEL_SYMBOL_H 1

#include <climits>

#include <osgEarth/Common>
#include <osgEarthSymbology/InstanceSymbol>
#include <osg/Vec3f>

namespace osgEarth { namespace Symbology
{
    class InstanceResource;

    /**
     * Represents an external 3D model
     */
    class OSGEARTHSYMBOLOGY_EXPORT ModelSymbol : public InstanceSymbol
    {
    public:
        META_Object(osgEarthSymbology, ModelSymbol);

        ModelSymbol(const ModelSymbol& rhs,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
        ModelSymbol( const Config& conf =Config() );

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

        /** heading in degrees */
        optional<NumericExpression>& heading() { return _heading; }
        const optional<NumericExpression>& heading() const { return _heading; }

        /** pitch in degrees */
        optional<NumericExpression>& pitch() { return _pitch; }
        const optional<NumericExpression>& pitch() const { return _pitch; }
        
        /** roll in degrees */
        optional<NumericExpression>& roll() { return _roll; }
        const optional<NumericExpression>& roll() const { return _roll; }

        /** whether to automatically scale the model from meters to pixels */
        optional<bool>& autoScale() { return _autoScale; }
        const optional<bool>& autoScale() const { return _autoScale; }

		/** minimum scale of the model when autoscale is enabled */
        optional<double>& minAutoScale() { return _minAutoScale; }
        const optional<double>& minAutoScale() const { return _minAutoScale; }
		
		/** maximum scale of the model when autoscale is enabled */
        optional<double>& maxAutoScale() { return _maxAutoScale; }
        const optional<double>& maxAutoScale() const { return _maxAutoScale; }
		
        /** Name of a specific model in the catalog */
        optional<StringExpression>& name() { return _name; }
        const optional<StringExpression>& name() const { return _name; }
        
        /** Maximum acceptable model length (size in the X dimension) */
        optional<float>& maxSizeX() { return _maxSizeX; }
        const optional<float>& maxSizeX() const { return _maxSizeX; }
        
        /** Maximum acceptable model width (size in the Y dimension) */
        optional<float>& maxSizeY() { return _maxSizeY; }
        const optional<float>& maxSizeY() const { return _maxSizeY; }

        /** Model instance scale factor */
        optional<NumericExpression>& scaleX() { return _scaleX; }
        const optional<NumericExpression>& scaleX() const { return _scaleX; }

        /** Model instance scale factor */
        optional<NumericExpression>& scaleY() { return _scaleY; }
        const optional<NumericExpression>& scaleY() const { return _scaleY; }

        /** Model instance scale factor */
        optional<NumericExpression>& scaleZ() { return _scaleZ; }
        const optional<NumericExpression>& scaleZ() const { return _scaleZ; }

        
        
    public: // non-serialized properties (for programmatic use only)

        /** Explicit model to use for model placement */
        void setModel( osg::Node* node ) { _node = node; }
        osg::Node* getModel() const { return _node.get(); }

    public:
        virtual Config getConfig() const;
        virtual void mergeConfig( const Config& conf );
        static void parseSLD(const Config& c, class Style& style);
    
    public: // InstanceSymbol
        /** Creates a new (empty) resource appropriate for this symbol */
        virtual InstanceResource* createResource() const;

    protected:
        optional<NumericExpression>  _heading;
        optional<NumericExpression>  _pitch;
        optional<NumericExpression>  _roll;
        optional<bool>               _autoScale;
		optional<double>			 _minAutoScale;
		optional<double>			 _maxAutoScale;
        osg::ref_ptr<osg::Node>      _node;
        optional<StringExpression>   _name;
        optional<float>              _maxSizeX;
        optional<float>              _maxSizeY;
        optional<NumericExpression>  _scaleX;
        optional<NumericExpression>  _scaleY;
        optional<NumericExpression>  _scaleZ;
    };

} } // namespace osgEarth::Symbology

#endif