Polygon Crucher SDK - Documentation
Documentation
Loading...
Searching...
No Matches
common_types.h
1#ifndef COMMON_TYPES_H
2#define COMMON_TYPES_H
3
4BEGIN_MOOTOOLS_NAMESPACE
5
6//////////////////////////////
7// defines
8#ifndef XASSERT
9#ifdef _DEBUG
10 #define XASSERT(f) assert(f)
11#else
12 #define XASSERT(...) (__noop)
13#endif
14#endif
15
16#ifndef XVERIFY
17#ifdef _DEBUG
18#define XVERIFY(f) assert(f)
19#else
20#define XVERIFY(f) ((void)(f))
21#endif
22#endif
23
24#ifdef _DEBUG
25 #define XIFDEBUG(a) { a }
26#else
27 #define XIFDEBUG(a) (__noop)
28#endif
29
30#ifndef __min
31 #define __max(a,b) (((a) > (b)) ? (a) : (b))
32 #define __min(a,b) (((a) < (b)) ? (a) : (b))
33#endif
34
35#define SIZEOF_WCHAR32 4
36#define SIZEOF_WCHAR16 2
37
38#ifndef XEnumType
39#define XEnumType(a) : a // Specified enum type if not C98
40#endif
41// Conversion cast operators
42#ifdef __64BITS__
43 typedef longuint varuint; // Variable int depending on the 32/64 system
44 typedef longint varint;
45#else
46 typedef unsigned int varuint; // Variable int depending on the 32/64 system
47 typedef int varint;
48#endif
49
50#define Pair2LUint(a, b) ((longuint)(((longuint)a << 32)|((longuint)b)))
51#define Pair2LInt(a, b) ((longint)(((longint)a << 32)|((longint)b)))
52
53#define IntPtr2Int(a) ((int)(varint)(a))
54#define IntPtr2UInt(a) ((unsigned int)(varint)(a))
55#define Int2VoidPtr(a) ((void *)(longint)(a)) // Can also be longuint, or longint
56#define LInt2VoidPtr(a) ((void *)(longint)(a))
57#define LUInt2VoidPtr(a) ((void *)(longuint)(a))
58#define VoidPtr2UInt(a) ((unsigned int)(longint)(void *)(a))
59#define VoidPtr2Int(a) ((int)(longint)(void *)(a))
60#define VoidPtr2LUInt(a) ((longuint)(void *)(a))
61#define VoidPtr2LInt(a) ((longint)(void *)(a))
62
63#define Int2Void(ptrvalue) ((void *)(longint)(ptrvalue)) // Can also be longuint, or longint
64#define LUInt2UInt(a) ((unsigned int)(a))
65#define LInt2Int(a) ((int)(a))
66#define B2bool(a) (!!(a))
67
68// Types
69typedef size_t SIZET;
70
71#ifndef MAKE_CUSTOM_ID2
72# define MAKE_CUSTOM_ID2(a) ((const unsigned int) (a))
73#endif
74
75//! @def MAKE_CUSTOM_ID is a convenient macro to make an identifier using a combination of letter. Ie MAKE_CUSTOM_ID('N', 'I', 'C', 'E')
76#define MAKE_CUSTOM_ID(a, b, c, d) ((const unsigned int) \
77((const unsigned int) (a) << 24) | \
78((const unsigned int) (b) << 16) | \
79((const unsigned int) (c) << 8) | \
80((const unsigned int) (d)))
81
82#define QSORT_PROTO int(*)(const void *, const void *)
83
84#define MYCONST const
85#define PATH_SIZE 256
86#define CREATE_ID(a, b, c, d) ((unsigned int)(((unsigned char)a << 24)|((unsigned char)b << 16)|((unsigned char)c << 8)|(unsigned char)d))
87
88#define F_PI (3.1415926535f)
89#define D_PI (3.1415926535897932384626433832795028841968) // Whoa!
90#define DEG2RAD(angle) (((angle)*D_PI)/180.0)
91#define RAD2DEG(angle) (((angle)*180.0)/D_PI)
92#define DEG2RADF(angle) ((float)DEG2RAD(angle))
93#define RAD2DEGF(angle) ((float)RAD2DEG(angle))
94
95#define FLOAT_EPSILON (0.005)
96#define FLOAT_EPSILON2 (1e-6)
97#define FLOAT_EPSILON3 (1e-9)
98#define PRECISION_LIMIT (1.0e-15)
99#define ABS_MACRO(a) (((a)<0) ? -(a) : (a))
100#define FOUR_ROOT3 (6.928203230275509)
101
102#define INCH_VALUE_IN_MM 25.4f
103
104#define COMMANDVIEW_DEFAULT_BACKGROUND_COLOR1 RGB(128, 128, 128)
105#define COMMANDVIEW_DEFAULT_BACKGROUND_COLOR2 RGB(192, 192, 192)
106
107typedef enum _UNIT_MODE XEnumType(unsigned int)
108{
109 UNIT_NONE = 0,
110 UNIT_UNDEFINED = 0, // By default no unit is specified. When specified, C3DVector(1, 0, 0) has a length of 1 cm. C3DScene::SetScaleFactor can be used to modify the scale
111 UNIT_NM,
112 UNIT_MICRO,
113 UNIT_MM,
114 UNIT_CM,
115 UNIT_M,
116 UNIT_KM,
117 UNIT_INCH,
118 UNIT_FOOT,
119 UNIT_YARD,
120 UNIT_MILE,
121 UNIT_PIXELS,
122} UNIT_MODE;
123
124#define MAKEDWORD(a, b) ((DWORD)(((WORD)(a)) | ((DWORD)((WORD)(b))) << 16))
125#define MAKE_CUSTOM_ID2(a) ((const unsigned int) (a))
126
127// typedefs
128typedef enum _DeiDllInit XEnumType(unsigned int)
129{
130 DLL_INIT_DEFAULT = 0x00,
131 DLL_NO_COMMAND_MGR = 0x01, // No command manager
132 DLL_NO_IO_PLUGIN = 0x02, // No plugin
133 DLL_MINIMUM_INIT = 0xFF,
134 DLL_MINIMUM_WITH_IO_PLUGIN = (DLL_MINIMUM_INIT&(~DLL_NO_IO_PLUGIN)),
135 DLL_CALL_FROM_REGULAR_DLL = 0x100, // means that need to create xNew(CDynLinkLibrary) (cf. Initializing Extension DLLs)
136} DeiDllInit;
137
138typedef enum KeyAccess XEnumType(unsigned int)
139{
140 KEY_NO_MODIFIER = 0x00,
141 KEY_SHIFT = 0x01,
142 KEY_CONTROL = 0x02,
143 KEY_ALT = 0x04,
144 MODIFIER_KEY = 0x0F,
145 KEY_NUMPAD = 0x100, // Use without KEY_VIRTUAL
146 KEY_VIRTUAL = 0x200,
147} KeyAccess;
148
149typedef enum DOCUMENT_POSITION XEnumType(unsigned int)
150{
151 DOCUMENT_POS_NONE = 0x00,
152 DOCUMENT_HORIZONTAL_INFO = 0x07,
153 DOCUMENT_POS_LEFT = 0x01,
154 DOCUMENT_POS_HCENTER = 0x02,
155 DOCUMENT_POS_RIGHT = 0x04,
156 DOCUMENT_VERTICAL_POSITION_SHIFT = 3,
157 DOCUMENT_VERTICAL_INFO = 0x38,
158 DOCUMENT_POS_TOP = 0x08,
159 DOCUMENT_POS_VCENTER = 0x10,
160 DOCUMENT_POS_BOTTOM = 0x20,
161} DOCUMENT_POSITION;
162
163typedef enum DOCUMENT_ALIGN XEnumType(unsigned int)
164{
165 DOCUMENT_ALIGN_NONE = 0x00,
166 DOCUMENT_HORIZONTAL_ALIGN = 0x07,
167 DOCUMENT_ALIGN_LEFT = 0x01,
168 DOCUMENT_ALIGN_HCENTER = 0x02,
169 DOCUMENT_ALIGN_RIGHT = 0x04,
170 DOCUMENT_VERTICAL_ALIGN_SHIFT = 3,
171 DOCUMENT_VERTICAL_ALIGN = 0x38,
172 DOCUMENT_ALIGN_TOP = 0x08,
173 DOCUMENT_ALIGN_VCENTER = 0x10,
174 DOCUMENT_ALIGN_BOTTOM = 0x20,
175} DOCUMENT_ALIGN;
176
177END_MOOTOOLS_NAMESPACE
178
179#endif // COMMON_TYPES_H
The class defines an x, y, z 3D point which can use int, float or double.
Definition 3DPoint.h:27