⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esrishapeparser.h

📁 最新osg包
💻 H
字号:
#ifndef ESRI_SHAPE_PARSER_H#define ESRI_SHAPE_PARSER_H#include <string>#include <osg/Geode>#include "ESRIShape.h"namespace ESRIShape {class ArrayHelper{    public:        ArrayHelper(bool useDouble)        {            if (useDouble) _vec3darray = new osg::Vec3dArray;            else _vec3farray = new osg::Vec3Array;        }        osg::Array* get() { return _vec3farray.valid() ?                 static_cast<osg::Array*>(_vec3farray.get()) :                 static_cast<osg::Array*>(_vec3darray.get()); }        unsigned int size() { return _vec3farray.valid() ?                 _vec3farray->size() :                 _vec3darray->size(); }        void add(double x, double y, double z)        {            if (_vec3farray.valid()) _vec3farray->push_back(osg::Vec3(x,y,z));            else _vec3darray->push_back(osg::Vec3d(x,y,z));        }        void add(const osg::Vec3& v)        {            if (_vec3farray.valid()) _vec3farray->push_back(v);            else _vec3darray->push_back(osg::Vec3d(v.x(),v.y(),v.z()));        }        void add(const osg::Vec3d& v)        {            if (_vec3farray.valid()) _vec3farray->push_back(osg::Vec3(v.x(),v.y(),v.z()));            else _vec3darray->push_back(v);        }        void add(osg::Array* array, unsigned int index)        {            osg::Vec3Array* vec3Array = dynamic_cast<osg::Vec3Array*>(array);            if (vec3Array && index<vec3Array->size()) add((*vec3Array)[index]);                        osg::Vec3dArray* vec3dArray = dynamic_cast<osg::Vec3dArray*>(array);            if (vec3dArray && index<vec3dArray->size()) add((*vec3dArray)[index]);        }        osg::ref_ptr<osg::Vec3Array> _vec3farray;        osg::ref_ptr<osg::Vec3dArray> _vec3darray;};class ESRIShapeParser{    public:            ESRIShapeParser( const std::string fileName, bool useDouble);        osg::Geode *getGeode();#if 0#if 1        typedef osg::Vec3d ShapeVec3;        typedef osg::Vec3dArray ShapeVec3Array;#else        typedef osg::Vec3 ShapeVec3;        typedef osg::Vec3Array ShapeVec3Array;#endif#endif    private:                    bool _valid;        bool _useDouble;                osg::ref_ptr<osg::Geode> _geode;        void _combinePointToMultipoint();        void _process( const std::vector<ESRIShape::Point> &);        void _process( const std::vector<ESRIShape::MultiPoint> &);        void _process( const std::vector<ESRIShape::PolyLine> &);        void _process( const std::vector<ESRIShape::Polygon> &);        void _process( const std::vector<ESRIShape::PointM> &);        void _process( const std::vector<ESRIShape::MultiPointM> &);        void _process( const std::vector<ESRIShape::PolyLineM> &);        void _process( const std::vector<ESRIShape::PolygonM> &);        void _process( const std::vector<ESRIShape::PointZ> &);        void _process( const std::vector<ESRIShape::MultiPointZ> &);        void _process( const std::vector<ESRIShape::PolyLineZ> &);        void _process( const std::vector<ESRIShape::PolygonZ> &);        void _process( const std::vector<ESRIShape::MultiPatch> &);};}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -