/usr/include/osgEarthFeatures/FeatureTileSource 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 | /* -*-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 OSGEARTHFEATURES_FEATURE_TILE_SOURCE_H
#define OSGEARTHFEATURES_FEATURE_TILE_SOURCE_H 1
#include <osgEarthFeatures/Common>
#include <osgEarthFeatures/FeatureSource>
#include <osgEarthSymbology/StyleSheet>
#include <osgEarth/TileSource>
#include <osgEarth/Map>
#include <osg/Node>
#include <osgDB/ReaderWriter>
#include <list>
namespace osgEarth { namespace Features
{
using namespace osgEarth;
using namespace osgEarth::Symbology;
class OSGEARTHFEATURES_EXPORT FeatureTileSourceOptions : public TileSourceOptions
{
public: // serializable properties
optional<FeatureSourceOptions>& featureOptions() { return _featureOptions; }
const optional<FeatureSourceOptions>& featureOptions() const { return _featureOptions; }
osg::ref_ptr<StyleSheet>& styles() { return _styles; }
const osg::ref_ptr<StyleSheet>& styles() const { return _styles; }
//TODO: deprecate in favor of convert filter
optional<Geometry::Type>& geometryTypeOverride() { return _geomTypeOverride; }
const optional<Geometry::Type>& geometryTypeOverride() const { return _geomTypeOverride; }
public:
/** A live feature source instance to use. Note, this does not serialize. */
osg::ref_ptr<FeatureSource>& featureSource() { return _featureSource; }
const osg::ref_ptr<FeatureSource>& featureSource() const { return _featureSource; }
FeatureTileSourceOptions( const ConfigOptions& rhs =ConfigOptions() );
virtual ~FeatureTileSourceOptions() { }
public:
virtual Config getConfig() const;
protected:
virtual void mergeConfig( const Config& conf );
optional<FeatureSourceOptions> _featureOptions;
osg::ref_ptr<StyleSheet> _styles;
optional<Geometry::Type> _geomTypeOverride;
osg::ref_ptr<FeatureSource> _featureSource;
private:
void fromConfig( const Config& conf );
};
/**
* A TileSource that renders Feature data from a FeatureSource. An implementation of
* this base class will render image or heightfield tiles from feature data.
*/
class OSGEARTHFEATURES_EXPORT FeatureTileSource : public TileSource
{
public:
/**
* Constructs a new feature tile source with the provided options.
*/
FeatureTileSource( const TileSourceOptions& options =TileSourceOptions() );
//override
virtual Status initialize( const osgDB::Options* options );
//override
virtual osg::Image* createImage(
const TileKey& key,
ProgressCallback* progress );
public: // properties:
/** The underlying feature source. */
FeatureSource* getFeatureSource() { return _features.get(); }
/** Sets the source from which to read feature data. It is only legal to call this method
before this TileSource has been initialized by the map engine. Afterwards it will have
no effect. */
void setFeatureSource( FeatureSource* source );
protected:
/** Custom image allocation bu the subclass. Default image is getPixelsPerTile() RGBA. */
virtual osg::Image* allocateImage() { return NULL; }
/** Creates an implementation-specific data object to be passed to buildNodeForStyle */
virtual osg::Referenced* createBuildData() { return NULL; }
/**
* Creates OSG graph(s) representing the specified feature list.
*
* @param session
* Feature processing session (shared)
* @param style
* Styling information for the feature geometry
* @param features
* Features to render
* @param buildData
* Implementation-specific build data (from createBuildData)
* @param out_image
* Pre-allocated image to which the implementation would render.
*
* @return true if the rendering succeeded, false if the out_image did not change.
*/
virtual bool renderFeaturesForStyle(
Session* session,
const Style& style,
const FeatureList& features,
osg::Referenced* buildData,
const GeoExtent& imageExtent,
osg::Image* out_image ) { return renderFeaturesForStyle(style, features, buildData, imageExtent, out_image); }
/** Backwards compatibility */
virtual bool renderFeaturesForStyle(
const Style& style,
const FeatureList& features,
osg::Referenced* buildData,
const GeoExtent& imageExtent,
osg::Image* out_image ) { return false; }
/**
* Optional implementation hook to pre-process an image tile before any calls to
* renderFeaturesForStyle().
*/
virtual bool preProcess(
osg::Image* image,
osg::Referenced* buildData ) { return true; }
/**
* Optional implementation hook to post-process an image tile after all calls to
* renderFeaturesForStyle() are complete.
*/
virtual bool postProcess(
osg::Image* image,
osg::Referenced* buildData ) { return true; }
/**
* Gets all of the features to be rendered for the given query.
* If a TileKey is specified on the query this will attempt to fallback on previous levels to get feature data.
*/
void getFeatures(const Query& query, const GeoExtent& imageExtent, FeatureList& features);
public:
// META_Object specialization:
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 FeatureTileSource*>(obj)!=NULL; }
virtual const char* className() const { return "FeatureTileSource"; }
virtual const char* libraryName() const { return "osgEarthFeatures"; }
protected:
/** DTOR is protected to prevent this object from being allocated on the stack */
virtual ~FeatureTileSource() { }
osg::ref_ptr<FeatureSource> _features;
const FeatureTileSourceOptions _options;
//osg::ref_ptr<const FeatureTileSourceOptions> _options;
osg::ref_ptr<const osgEarth::Map> _map;
bool _initialized;
osg::ref_ptr<Session> _session;
bool queryAndRenderFeaturesForStyle(
const Style& style,
const Query& query,
osg::Referenced* data,
const GeoExtent& imageExtent,
osg::Image* out_image );
};
} } // namespace osgEarth::Features
#endif // OSGEARTHFEATURES_FEATURE_TILE_SOURCE_H
|