Files
OpenSceneGraph/src/osgPlugins/dxf/ReaderWriterDXF.cpp
2005-11-17 15:03:51 +00:00

62 lines
1.7 KiB
C++

/* 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.
*/
#include <osgDB/Registry>
#include <osgDB/ReadFile>
#include <osgDB/FileUtils>
#include <osgDB/FileNameUtils>
#include <map>
#include <iostream>
#include <utility>
#include <string>
#include <sstream>
#include "dxfFile.h"
using namespace osg;
using namespace osgDB;
using namespace std;
class ReaderWriterdxf : public osgDB::ReaderWriter
{
public:
ReaderWriterdxf() { }
virtual const char* className() { return "Autodesk DXF Reader"; }
virtual bool acceptsExtension(const std::string& extension) const {
return osgDB::equalCaseInsensitive(extension,"dxf");
}
virtual ReadResult readNode(const std::string& fileName, const osgDB::ReaderWriter::Options*) const;
protected:
};
// register with Registry to instantiate the above reader/writer.
osgDB::RegisterReaderWriterProxy<ReaderWriterdxf> g_dxfReaderWriterProxy;
// read file and convert to OSG.
osgDB::ReaderWriter::ReadResult
ReaderWriterdxf::readNode(const std::string& filename, const osgDB::ReaderWriter::Options*) const
{
std::string ext = osgDB::getFileExtension(filename);
if (!acceptsExtension(ext)) return ReadResult::FILE_NOT_HANDLED;
// Open
dxfFile df(filename);
if (df.parseFile()) {
// convert to OSG
osg::Group* osg_top = df.dxf2osg();
return (osg_top);
}
return ReadResult::FILE_NOT_HANDLED;
}