From Paul de Repentinguy, DXF loader plugin. Ported to Linux by Robert Osfield.

This commit is contained in:
Robert Osfield
2005-04-15 20:39:06 +00:00
parent 08f593a54b
commit 47a2b3aa23
23 changed files with 3094 additions and 1 deletions

View File

@@ -0,0 +1,46 @@
/* 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 "dxfTable.h"
#include "dxfFile.h"
#include "codeValue.h"
void dxfLayer::assign(dxfFile* dxf, codeValue& cv)
{
switch (cv._groupCode) {
case 2:
_name = cv._string;
break;
case 62:
_color = cv._short;
if ((short)_color < 0) _frozen = true;
break;
case 70:
_frozen = (bool)(cv._short & 1);
break;
}
}
void dxfLayerTable::assign(dxfFile* dxf, codeValue& cv)
{
std::string s = cv._string;
if (cv._groupCode == 0 ) {
if (_currentLayer.get()) {
_layers[_currentLayer->getName()] = _currentLayer.get();
}
if (s == "LAYER") {
_currentLayer = new dxfLayer;
} // otherwise it's the close call from ENDTAB
} else if (_currentLayer.get()) {
_currentLayer->assign(dxf, cv);
}
}