Horizon
3rd_party
dxflib
dl_codes.h
1
/****************************************************************************
2
** Copyright (C) 2001-2013 RibbonSoft, GmbH. All rights reserved.
3
** Copyright (C) 2001 Robert J. Campbell Jr.
4
**
5
** This file is part of the dxflib project.
6
**
7
** This file is free software; you can redistribute it and/or modify
8
** it under the terms of the GNU General Public License as published by
9
** the Free Software Foundation; either version 2 of the License, or
10
** (at your option) any later version.
11
**
12
** Licensees holding valid dxflib Professional Edition licenses may use
13
** this file in accordance with the dxflib Commercial License
14
** Agreement provided with the Software.
15
**
16
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
17
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18
**
19
** See http://www.ribbonsoft.com for further details.
20
**
21
** Contact info@ribbonsoft.com if any conditions of this licensing are
22
** not clear to you.
23
**
24
**********************************************************************/
25
30
#ifndef DXF_CODES_H
31
#define DXF_CODES_H
32
33
#include "dl_global.h"
34
35
#if _MSC_VER > 1000
36
#pragma once
37
#endif // _MSC_VER > 1000
38
39
#if defined(__OS2__)||defined(__EMX__)
40
#define strcasecmp(s,t) stricmp(s,t)
41
#endif
42
43
#if defined(_WIN32)
44
#define strcasecmp(s,t) _stricmp(s,t)
45
#endif
46
47
48
#ifdef _WIN32
49
#undef M_PI
50
#define M_PI 3.14159265358979323846
51
#pragma warning(disable : 4800)
52
#endif
53
54
#ifndef M_PI
55
#define M_PI 3.1415926535897932384626433832795
56
#endif
57
58
#define DL_DXF_MAXLINE 1024
59
#define DL_DXF_MAXGROUPCODE 1100
60
61
// used to mark invalid vectors:
62
//#define DL_DXF_MAXDOUBLE 1.0E+10
63
67
class
DXFLIB_EXPORT
DL_Codes
{
68
public
:
72
enum
color
{
73
black = 250,
74
green = 3,
75
red = 1,
76
brown = 15,
77
yellow = 2,
78
cyan = 4,
79
magenta = 6,
80
gray = 8,
81
blue = 5,
82
l_blue = 163,
83
l_green = 121,
84
l_cyan = 131,
85
l_red = 23,
86
l_magenta = 221,
87
l_gray = 252,
88
white = 7,
89
bylayer = 256,
90
byblock = 0
91
};
92
96
enum
version
{
97
AC1009_MIN,
// R12, minimalistic
98
AC1009,
// R12
99
AC1012,
100
AC1014,
101
AC1015
// R2000
102
};
103
};
104
105
106
// Extended color palette:
107
// The first entry is only for direct indexing starting with [1]
108
// Color 1 is red (1,0,0)
109
const
double
dxfColors[][3] = {
110
{0,0,0},
// unused
111
{1,0,0},
// 1
112
{1,1,0},
113
{0,1,0},
114
{0,1,1},
115
{0,0,1},
116
{1,0,1},
117
{1,1,1},
// black or white
118
{0.5,0.5,0.5},
119
{0.75,0.75,0.75},
120
{1,0,0},
// 10
121
{1,0.5,0.5},
122
{0.65,0,0},
123
{0.65,0.325,0.325},
124
{0.5,0,0},
125
{0.5,0.25,0.25},
126
{0.3,0,0},
127
{0.3,0.15,0.15},
128
{0.15,0,0},
129
{0.15,0.075,0.075},
130
{1,0.25,0},
// 20
131
{1,0.625,0.5},
132
{0.65,0.1625,0},
133
{0.65,0.4063,0.325},
134
{0.5,0.125,0},
135
{0.5,0.3125,0.25},
136
{0.3,0.075,0},
137
{0.3,0.1875,0.15},
138
{0.15,0.0375,0},
139
{0.15,0.0938,0.075},
140
{1,0.5,0},
// 30
141
{1,0.75,0.5},
142
{0.65,0.325,0},
143
{0.65,0.4875,0.325},
144
{0.5,0.25,0},
145
{0.5,0.375,0.25},
146
{0.3,0.15,0},
147
{0.3,0.225,0.15},
148
{0.15,0.075,0},
149
{0.15,0.1125,0.075},
150
{1,0.75,0},
// 40
151
{1,0.875,0.5},
152
{0.65,0.4875,0},
153
{0.65,0.5688,0.325},
154
{0.5,0.375,0},
155
{0.5,0.4375,0.25},
156
{0.3,0.225,0},
157
{0.3,0.2625,0.15},
158
{0.15,0.1125,0},
159
{0.15,0.1313,0.075},
160
{1,1,0},
// 50
161
{1,1,0.5},
162
{0.65,0.65,0},
163
{0.65,0.65,0.325},
164
{0.5,0.5,0},
165
{0.5,0.5,0.25},
166
{0.3,0.3,0},
167
{0.3,0.3,0.15},
168
{0.15,0.15,0},
169
{0.15,0.15,0.075},
170
{0.75,1,0},
// 60
171
{0.875,1,0.5},
172
{0.4875,0.65,0},
173
{0.5688,0.65,0.325},
174
{0.375,0.5,0},
175
{0.4375,0.5,0.25},
176
{0.225,0.3,0},
177
{0.2625,0.3,0.15},
178
{0.1125,0.15,0},
179
{0.1313,0.15,0.075},
180
{0.5,1,0},
// 70
181
{0.75,1,0.5},
182
{0.325,0.65,0},
183
{0.4875,0.65,0.325},
184
{0.25,0.5,0},
185
{0.375,0.5,0.25},
186
{0.15,0.3,0},
187
{0.225,0.3,0.15},
188
{0.075,0.15,0},
189
{0.1125,0.15,0.075},
190
{0.25,1,0},
// 80
191
{0.625,1,0.5},
192
{0.1625,0.65,0},
193
{0.4063,0.65,0.325},
194
{0.125,0.5,0},
195
{0.3125,0.5,0.25},
196
{0.075,0.3,0},
197
{0.1875,0.3,0.15},
198
{0.0375,0.15,0},
199
{0.0938,0.15,0.075},
200
{0,1,0},
// 90
201
{0.5,1,0.5},
202
{0,0.65,0},
203
{0.325,0.65,0.325},
204
{0,0.5,0},
205
{0.25,0.5,0.25},
206
{0,0.3,0},
207
{0.15,0.3,0.15},
208
{0,0.15,0},
209
{0.075,0.15,0.075},
210
{0,1,0.25},
// 100
211
{0.5,1,0.625},
212
{0,0.65,0.1625},
213
{0.325,0.65,0.4063},
214
{0,0.5,0.125},
215
{0.25,0.5,0.3125},
216
{0,0.3,0.075},
217
{0.15,0.3,0.1875},
218
{0,0.15,0.0375},
219
{0.075,0.15,0.0938},
220
{0,1,0.5},
// 110
221
{0.5,1,0.75},
222
{0,0.65,0.325},
223
{0.325,0.65,0.4875},
224
{0,0.5,0.25},
225
{0.25,0.5,0.375},
226
{0,0.3,0.15},
227
{0.15,0.3,0.225},
228
{0,0.15,0.075},
229
{0.075,0.15,0.1125},
230
{0,1,0.75},
// 120
231
{0.5,1,0.875},
232
{0,0.65,0.4875},
233
{0.325,0.65,0.5688},
234
{0,0.5,0.375},
235
{0.25,0.5,0.4375},
236
{0,0.3,0.225},
237
{0.15,0.3,0.2625},
238
{0,0.15,0.1125},
239
{0.075,0.15,0.1313},
240
{0,1,1},
// 130
241
{0.5,1,1},
242
{0,0.65,0.65},
243
{0.325,0.65,0.65},
244
{0,0.5,0.5},
245
{0.25,0.5,0.5},
246
{0,0.3,0.3},
247
{0.15,0.3,0.3},
248
{0,0.15,0.15},
249
{0.075,0.15,0.15},
250
{0,0.75,1},
// 140
251
{0.5,0.875,1},
252
{0,0.4875,0.65},
253
{0.325,0.5688,0.65},
254
{0,0.375,0.5},
255
{0.25,0.4375,0.5},
256
{0,0.225,0.3},
257
{0.15,0.2625,0.3},
258
{0,0.1125,0.15},
259
{0.075,0.1313,0.15},
260
{0,0.5,1},
// 150
261
{0.5,0.75,1},
262
{0,0.325,0.65},
263
{0.325,0.4875,0.65},
264
{0,0.25,0.5},
265
{0.25,0.375,0.5},
266
{0,0.15,0.3},
267
{0.15,0.225,0.3},
268
{0,0.075,0.15},
269
{0.075,0.1125,0.15},
270
{0,0.25,1},
// 160
271
{0.5,0.625,1},
272
{0,0.1625,0.65},
273
{0.325,0.4063,0.65},
274
{0,0.125,0.5},
275
{0.25,0.3125,0.5},
276
{0,0.075,0.3},
277
{0.15,0.1875,0.3},
278
{0,0.0375,0.15},
279
{0.075,0.0938,0.15},
280
{0,0,1},
// 170
281
{0.5,0.5,1},
282
{0,0,0.65},
283
{0.325,0.325,0.65},
284
{0,0,0.5},
285
{0.25,0.25,0.5},
286
{0,0,0.3},
287
{0.15,0.15,0.3},
288
{0,0,0.15},
289
{0.075,0.075,0.15},
290
{0.25,0,1},
// 180
291
{0.625,0.5,1},
292
{0.1625,0,0.65},
293
{0.4063,0.325,0.65},
294
{0.125,0,0.5},
295
{0.3125,0.25,0.5},
296
{0.075,0,0.3},
297
{0.1875,0.15,0.3},
298
{0.0375,0,0.15},
299
{0.0938,0.075,0.15},
300
{0.5,0,1},
// 190
301
{0.75,0.5,1},
302
{0.325,0,0.65},
303
{0.4875,0.325,0.65},
304
{0.25,0,0.5},
305
{0.375,0.25,0.5},
306
{0.15,0,0.3},
307
{0.225,0.15,0.3},
308
{0.075,0,0.15},
309
{0.1125,0.075,0.15},
310
{0.75,0,1},
// 200
311
{0.875,0.5,1},
312
{0.4875,0,0.65},
313
{0.5688,0.325,0.65},
314
{0.375,0,0.5},
315
{0.4375,0.25,0.5},
316
{0.225,0,0.3},
317
{0.2625,0.15,0.3},
318
{0.1125,0,0.15},
319
{0.1313,0.075,0.15},
320
{1,0,1},
// 210
321
{1,0.5,1},
322
{0.65,0,0.65},
323
{0.65,0.325,0.65},
324
{0.5,0,0.5},
325
{0.5,0.25,0.5},
326
{0.3,0,0.3},
327
{0.3,0.15,0.3},
328
{0.15,0,0.15},
329
{0.15,0.075,0.15},
330
{1,0,0.75},
// 220
331
{1,0.5,0.875},
332
{0.65,0,0.4875},
333
{0.65,0.325,0.5688},
334
{0.5,0,0.375},
335
{0.5,0.25,0.4375},
336
{0.3,0,0.225},
337
{0.3,0.15,0.2625},
338
{0.15,0,0.1125},
339
{0.15,0.075,0.1313},
340
{1,0,0.5},
// 230
341
{1,0.5,0.75},
342
{0.65,0,0.325},
343
{0.65,0.325,0.4875},
344
{0.5,0,0.25},
345
{0.5,0.25,0.375},
346
{0.3,0,0.15},
347
{0.3,0.15,0.225},
348
{0.15,0,0.075},
349
{0.15,0.075,0.1125},
350
{1,0,0.25},
// 240
351
{1,0.5,0.625},
352
{0.65,0,0.1625},
353
{0.65,0.325,0.4063},
354
{0.5,0,0.125},
355
{0.5,0.25,0.3125},
356
{0.3,0,0.075},
357
{0.3,0.15,0.1875},
358
{0.15,0,0.0375},
359
{0.15,0.075,0.0938},
360
{0.33,0.33,0.33},
// 250
361
{0.464,0.464,0.464},
362
{0.598,0.598,0.598},
363
{0.732,0.732,0.732},
364
{0.866,0.866,0.866},
365
{1,1,1}
// 255
366
}
367
;
368
369
370
// AutoCAD VERSION aliases
371
#define DL_VERSION_R12 DL_Codes::AC1009
372
#define DL_VERSION_LT2 DL_Codes::AC1009
373
#define DL_VERSION_R13 DL_Codes::AC1012 // not supported yet
374
#define DL_VERSION_LT95 DL_Codes::AC1012 // not supported yet
375
#define DL_VERSION_R14 DL_Codes::AC1014 // not supported yet
376
#define DL_VERSION_LT97 DL_Codes::AC1014 // not supported yet
377
#define DL_VERSION_LT98 DL_Codes::AC1014 // not supported yet
378
#define DL_VERSION_2000 DL_Codes::AC1015
379
#define DL_VERSION_2002 DL_Codes::AC1015
380
381
382
// DXF Group Codes:
383
384
// Strings
385
#define DL_STRGRP_START 0
386
#define DL_STRGRP_END 9
387
388
// Coordinates
389
#define DL_CRDGRP_START 10
390
#define DL_CRDGRP_END 19
391
392
// Real values
393
#define DL_RLGRP_START 38
394
#define DL_RLGRP_END 59
395
396
// Short integer values
397
#define DL_SHOGRP_START 60
398
#define DL_SHOGRP_END 79
399
400
// New in Release 13,
401
#define DL_SUBCLASS 100
402
403
// More coordinates
404
#define DL_CRD2GRP_START 210
405
#define DL_CRD2GRP_END 239
406
407
// Extended data strings
408
#define DL_ESTRGRP_START 1000
409
#define DL_ESTRGRP_END 1009
410
411
// Extended data reals
412
#define DL_ERLGRP_START 1010
413
#define DL_ERLGRP_END 1059
414
415
416
#define DL_Y8_COORD_CODE 28
417
#define DL_Z0_COORD_CODE 30
418
#define DL_Z8_COORD_CODE 38
419
420
#define DL_POINT_COORD_CODE 10
421
#define DL_INSERT_COORD_CODE 10
422
423
#define DL_CRD2GRP_START 210
424
#define DL_CRD2GRP_END 239
425
426
#define DL_THICKNESS 39
427
#define DL_FIRST_REAL_CODE THICKNESS
428
#define DL_LAST_REAL_CODE 59
429
#define DL_FIRST_INT_CODE 60
430
#define DL_ATTFLAGS_CODE 70
431
#define DL_PLINE_FLAGS_CODE 70
432
#define DL_LAYER_FLAGS_CODE 70
433
#define DL_FLD_LEN_CODE 73 // Inside ATTRIB resbuf
434
#define DL_LAST_INT_CODE 79
435
#define DL_X_EXTRU_CODE 210
436
#define DL_Y_EXTRU_CODE 220
437
#define DL_Z_EXTRU_CODE 230
438
#define DL_COMMENT_CODE 999
439
440
// Start and endpoints of a line
441
#define DL_LINE_START_CODE 10 // Followed by x coord
442
#define DL_LINE_END_CODE 11 // Followed by x coord
443
444
// Some codes used by blocks
445
#define DL_BLOCK_FLAGS_CODE 70 // An int containing flags
446
#define DL_BLOCK_BASE_CODE 10 // Origin of block definition
447
#define DL_XREF_DEPENDENT 16 // If a block contains an XREF
448
#define DL_XREF_RESOLVED 32 // If a XREF resolved ok
449
#define DL_REFERENCED 64 // If a block is ref'd in DWG
450
451
#define DL_XSCALE_CODE 41
452
#define DL_YSCALE_CODE 42
453
#define DL_ANGLE_CODE 50
454
#define DL_INS_POINT_CODE 10 // Followed by x of ins pnt
455
#define DL_NAME2_CODE 3 // Second appearance of name
456
457
// Some codes used by circle entities
458
#define DL_CENTER_CODE 10 // Followed by x of center
459
#define DL_RADIUS_CODE 40 // Followd by radius of circle
460
461
#define DL_COND_OP_CODE -4 // Conditional op,ads_ssget
462
463
// When using ads_buildlist you MUST use RTDXF0 instead of these
464
#define DL_ENTITY_TYPE_CODE 0 // Then there is LINE, 3DFACE..
465
#define DL_SES_CODE 0 // Start End String Code
466
#define DL_FILE_SEP_CODE 0 // File separator
467
#define DL_SOT_CODE 0 // Start Of Table
468
#define DL_TEXTVAL_CODE 1
469
#define DL_NAME_CODE 2
470
#define DL_BLOCK_NAME_CODE 2
471
#define DL_SECTION_NAME_CODE 2
472
#define DL_ENT_HAND_CODE 5 // What follows is hexa string
473
#define DL_TXT_STYLE_CODE 7 // Inside attributes
474
#define DL_LAYER_NAME_CODE 8 // What follows is layer name
475
#define DL_FIRST_XCOORD_CODE 10 // Group code x of 1st coord
476
#define DL_FIRST_YCOORD_CODE 20 // Group code y of 1st coord
477
#define DL_FIRST_ZCOORD_CODE 30 // Group code z of 1st coord
478
#define DL_L_START_CODE 10
479
#define DL_L_END_CODE 11
480
#define DL_TXTHI_CODE 40
481
#define DL_SCALE_X_CODE 41
482
#define DL_SCALE_Y_CODE 42
483
#define DL_SCALE_Z_CODE 43
484
#define DL_BULGE_CODE 42 // Used in PLINE verts for arcs
485
#define DL_ROTATION_CODE 50
486
#define DL_COLOUR_CODE 62 // What follows is a color int
487
#define DL_LTYPE_CODE 6 // What follows is a linetype
488
489
490
// Attribute flags
491
#define DL_ATTS_FOLLOW_CODE 66
492
#define DL_ATT_TAG_CODE 2
493
#define DL_ATT_VAL_CODE 1
494
#define DL_ATT_FLAGS_CODE 70 // 4 1 bit flags as follows...
495
#define DL_ATT_INVIS_FLAG 1
496
#define DL_ATT_CONST_FLAG 2
497
#define DL_ATT_VERIFY_FLAG 4 // Prompt and verify
498
#define DL_ATT_PRESET_FLAG 8 // No prompt and no verify
499
500
// PLINE defines
501
// Flags
502
#define DL_OPEN_PLINE 0x00
503
#define DL_CLOSED_PLINE 0x01
504
#define DL_POLYLINE3D 0x80
505
#define DL_PFACE_MESH 0x40
506
#define DL_PGON_MESH 0x10
507
// Vertices follow entity, required in POLYLINES
508
#define DL_VERTS_FOLLOW_CODE 66 // Value should always be 1
509
#define DL_VERTEX_COORD_CODE 10
510
511
512
// LAYER flags
513
#define DL_FROZEN 1
514
#define DL_FROZEN_BY_DEF 2
515
#define DL_LOCKED 4
516
#define DL_OBJECT_USED 64 // Object is ref'd in the dwg
517
518
#define DL_BLOCK_EN_CODE -2 // Block entity definition
519
#define DL_E_NAME -1 // Entity name
520
521
// Extended data codes
522
#define DL_EXTD_SENTINEL (-3)
523
#define DL_EXTD_STR 1000
524
#define DL_EXTD_APP_NAME 1001
525
#define DL_EXTD_CTL_STR 1002
526
#define DL_EXTD_LYR_STR 1003
527
#define DL_EXTD_CHUNK 1004
528
#define DL_EXTD_HANDLE 1005
529
#define DL_EXTD_POINT 1010
530
#define DL_EXTD_POS 1011
531
#define DL_EXTD_DISP 1012
532
#define DL_EXTD_DIR 1013
533
#define DL_EXTD_FLOAT 1040
534
#define DL_EXTD_DIST 1041
535
#define DL_EXTD_SCALE 1042
536
#define DL_EXTD_INT16 1070
537
#define DL_EXTD_INT32 1071
538
539
// UCS codes for use in ads_trans
540
#define DL_WCS_TRANS_CODE 0
541
#define DL_UCS_TRANS_CODE 1
542
#define DL_DCS_TRANS_CODE 2
543
#define DL_PCS_TRANS_CODE 3
544
545
#endif
546
DL_Codes::color
color
Standard DXF colors.
Definition:
dl_codes.h:72
DL_Codes
Codes for colors and DXF versions.
Definition:
dl_codes.h:67
DL_Codes::version
version
Version numbers for the DXF Format.
Definition:
dl_codes.h:96
Generated by
1.8.20