/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
|