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

📄 dxfreader.h

📁 最新osg包
💻 H
字号:
/* dxfReader for OpenSceneGraph  Copyright (C) 2005 by GraphArchitecture ( grapharchitecture.com ) * Programmed by Paul de Repentigny <pdr@grapharchitecture.com> *  * OpenSceneGraph is (C) 2004 Robert Osfield *  * This library is provided as-is, without support of any kind. * * Read DXF docs or OSG docs for any related questions. *  * You may contact the author if you have suggestions/corrections/enhancements. *//*	File handling. 	dxfFile creates a dxfReader, which in turn create a readerText or a readerBinary	depending on file type. */#ifndef DXF_READER#define DXF_READER 1#include <string>#include <sstream>#include <osg/Referenced>#include <osg/ref_ptr>#include <osgDB/fstream>class codeValue;/// readerBase. abstract base class for reading a dxf file/// and interpreting data typesclass readerBase :public osg::Referenced{public:    readerBase() {}    virtual ~readerBase() {}    bool readGroup(std::ifstream& f, codeValue& cv);protected:    virtual bool readGroupCode(std::ifstream& f, int &groupcode)  = 0;    virtual bool readValue(std::ifstream& f, std::string &s)  = 0;    virtual bool readValue(std::ifstream& f, bool &b)  = 0;    virtual bool readValue(std::ifstream& f, short &s)  = 0;    virtual bool readValue(std::ifstream& f, int &i)  = 0;    virtual bool readValue(std::ifstream& f, long &l)  = 0;    virtual bool readValue(std::ifstream& f, double &d)  = 0;};/// readerText. convert data using stringstream.class readerText : public readerBase{public:    readerText(char delim = '\n') : readerBase(), _lineCount(0), _delim(delim) {}    virtual ~readerText() {}protected:    bool success(bool inSuccess, std::string type);    bool getTrimmedLine(std::ifstream& f);    virtual bool readGroupCode(std::ifstream& f, int &groupcode);    virtual bool readValue(std::ifstream& f, std::string &s);    virtual bool readValue(std::ifstream& f, bool &b);    virtual bool readValue(std::ifstream& f, short &s);    virtual bool readValue(std::ifstream& f, int &i);    virtual bool readValue(std::ifstream& f, long &l);    virtual bool readValue(std::ifstream& f, double &d);    std::stringstream _str;    unsigned long _lineCount;    char _delim;};/// readerBinary. to be implementedclass readerBinary : public readerBase{public:    readerBinary() : readerBase() {}    virtual ~readerBinary() {}protected:    virtual bool readGroupCode(std::ifstream& /*f*/, int& /*groupcode*/) { return false; }    virtual bool readValue(std::ifstream& /*f*/, std::string& /*s*/) { return false; }    virtual bool readValue(std::ifstream& /*f*/, bool& /*b*/) { return false; }    virtual bool readValue(std::ifstream& /*f*/, short& /*s*/) { return false; }    virtual bool readValue(std::ifstream& /*f*/, int& /*i*/) { return false; }    virtual bool readValue(std::ifstream& /*f*/, long& /*l*/) { return false; }    virtual bool readValue(std::ifstream& /*f*/, double& /*d*/) { return false; }};/// dxfReader. gets you through the dxf file, one group code/value pair at a time./// just instantiate, openFile(), then loop while(nextGroupCode())class dxfReader : public osg::Referenced{public:    dxfReader() {}    virtual ~dxfReader() {}    bool    openFile(std::string fileName);    bool    nextGroupCode(codeValue& cv);protected:    osgDB::ifstream                _ifs;    osg::ref_ptr<readerBase>    _reader;};#endif

⌨️ 快捷键说明

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