root/OpenSceneGraph/trunk/src/osgPlugins/dxf/dxfDataTypes.h @ 13041

Revision 13041, 2.7 kB (checked in by robert, 3 years ago)

Ran script to remove trailing spaces and tabs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/* dxfReader for OpenSceneGraph  Copyright (C) 2005 by GraphArchitecture ( grapharchitecture.com )
2 * Programmed by Paul de Repentigny <pdr@grapharchitecture.com>
3 *
4 * OpenSceneGraph is (C) 2004 Robert Osfield
5 *
6 * This library is provided as-is, without support of any kind.
7 *
8 * Read DXF docs or OSG docs for any related questions.
9 *
10 * You may contact the author if you have suggestions/corrections/enhancements.
11 */
12
13#ifndef DXF_DATATYPES
14#define DXF_DATATYPES 1
15
16#include <osg/Group>
17
18typedef std::map<std::string, osg::ref_ptr<osg::Group> > LayerTable;
19
20class dxfDataType {
21public:
22    enum TYPE {
23        UNKNOWN,
24        STRING,
25        HEX,
26        BOOL,
27        SHORT,
28        INT,
29        LONG,
30        DOUBLE
31    };
32    inline static bool between(int a, int m, int x) { return (a >= m && a <= x); }
33    inline static int typeForCode(int gc) {
34        if (    between(gc, 0, 9) ||
35                gc == 100 || gc == 102 ||
36                between(gc, 300, 309) ||
37                between(gc, 410, 419) ||
38                between(gc, 430, 439) ||
39                between(gc, 470, 479) ||
40                gc == 999 ||
41                between(gc, 1000, 1009)
42            )
43            return STRING;
44        else if ( gc == 105 ||
45                between(gc, 310, 319) ||
46                between(gc, 320, 329) ||
47                between(gc, 330, 369) ||
48                between(gc, 390, 399)
49            )
50            return HEX;
51        else if ( between(gc, 290, 299 ) )
52            return BOOL;
53        else if ( between(gc, 70, 78 ) ) // 2005.12.13 PdR 70 to 78 should be INT, not U_SHORT
54            return INT;
55        else if ( between(gc, 60, 79) ||
56                    between(gc, 170, 179) ||
57                    between(gc, 270, 279) ||
58                    between(gc, 280, 289) ||
59                    between(gc, 370, 379) ||
60                    between(gc, 380, 389) ||
61                    between(gc, 400, 409)
62            )
63            return SHORT;
64        else if ( between(gc, 90, 99) ||
65                    between(gc, 450, 459) ||
66                    between(gc, 1060, 1070)
67            )
68            return LONG;
69        else if (    between(gc, 420, 429) ||
70                    between(gc, 440, 449) ||
71                    gc == 1071
72            )
73            return INT;
74        else if ( between(gc, 10, 39) ||
75                    between(gc, 40, 59) ||
76                    between(gc, 110, 119) ||
77                    between(gc, 120, 129) ||
78                    between(gc, 130, 139) ||
79                    between(gc, 140, 149) ||
80                    between(gc, 210, 239) ||
81                    between(gc, 460, 469) ||
82                    between(gc, 1010, 1019)
83            )
84            return DOUBLE;
85        else
86            return UNKNOWN;
87    }
88};
89
90#endif
Note: See TracBrowser for help on using the browser.