/**************************************************************************** ** Copyright (C) 2001-2013 RibbonSoft, GmbH. All rights reserved. ** Copyright (C) 2001 Robert J. Campbell Jr. ** ** This file is part of the dxflib project. ** ** This file is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** Licensees holding valid dxflib Professional Edition licenses may use ** this file in accordance with the dxflib Commercial License ** Agreement provided with the Software. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.ribbonsoft.com for further details. ** ** Contact info@ribbonsoft.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ /** * Defines common DXF codes and constants. */ #ifndef DXF_CODES_H #define DXF_CODES_H #include "dl_global.h" #if defined(__OS2__)||defined(__EMX__) #define strcasecmp( s, t ) stricmp( s, t ) #endif #if defined(_WIN32) #ifndef strcasecmp // on mingw, strcasecmp is defined #define strcasecmp( s, t ) stricmp( s, t ) #endif #endif #ifdef _WIN32 #undef M_PI #define M_PI 3.14159265358979323846 #endif #ifndef M_PI #define M_PI 3.1415926535897932384626433832795 #endif #define DL_DXF_MAXLINE 1024 #define DL_DXF_MAXGROUPCODE 1100 // used to mark invalid vectors: // #define DL_DXF_MAXDOUBLE 1.0E+10 /** * Codes for colors and DXF versions. */ class DXFLIB_EXPORT DL_Codes { public: /** * Standard DXF colors. */ enum color { black = 250, green = 3, red = 1, brown = 15, yellow = 2, cyan = 4, magenta = 6, gray = 8, blue = 5, l_blue = 163, l_green = 121, l_cyan = 131, l_red = 23, l_magenta = 221, l_gray = 252, white = 7, bylayer = 256, byblock = 0 }; /** * Version numbers for the DXF Format. */ enum version { AC1009_MIN, // R12, minimalistic AC1009, // R12 AC1012, AC1014, AC1015 // R2000 }; }; // Extended color palette: // The first entry is only for direct indexing starting with [1] // Color 1 is red (1,0,0) const double dxfColors[][3] = { { 0, 0, 0 }, // unused { 1, 0, 0 }, // 1 { 1, 1, 0 }, { 0, 1, 0 }, { 0, 1, 1 }, { 0, 0, 1 }, { 1, 0, 1 }, { 1, 1, 1 }, // black or white { 0.5, 0.5, 0.5 }, { 0.75, 0.75, 0.75 }, { 1, 0, 0 }, // 10 { 1, 0.5, 0.5 }, { 0.65, 0, 0 }, { 0.65, 0.325, 0.325 }, { 0.5, 0, 0 }, { 0.5, 0.25, 0.25 }, { 0.3, 0, 0 }, { 0.3, 0.15, 0.15 }, { 0.15, 0, 0 }, { 0.15, 0.075, 0.075 }, { 1, 0.25, 0 }, // 20 { 1, 0.625, 0.5 }, { 0.65, 0.1625, 0 }, { 0.65, 0.4063, 0.325 }, { 0.5, 0.125, 0 }, { 0.5, 0.3125, 0.25 }, { 0.3, 0.075, 0 }, { 0.3, 0.1875, 0.15 }, { 0.15, 0.0375, 0 }, { 0.15, 0.0938, 0.075 }, { 1, 0.5, 0 }, // 30 { 1, 0.75, 0.5 }, { 0.65, 0.325, 0 }, { 0.65, 0.4875, 0.325 }, { 0.5, 0.25, 0 }, { 0.5, 0.375, 0.25 }, { 0.3, 0.15, 0 }, { 0.3, 0.225, 0.15 }, { 0.15, 0.075, 0 }, { 0.15, 0.1125, 0.075 }, { 1, 0.75, 0 }, // 40 { 1, 0.875, 0.5 }, { 0.65, 0.4875, 0 }, { 0.65, 0.5688, 0.325 }, { 0.5, 0.375, 0 }, { 0.5, 0.4375, 0.25 }, { 0.3, 0.225, 0 }, { 0.3, 0.2625, 0.15 }, { 0.15, 0.1125, 0 }, { 0.15, 0.1313, 0.075 }, { 1, 1, 0 }, // 50 { 1, 1, 0.5 }, { 0.65, 0.65, 0 }, { 0.65, 0.65, 0.325 }, { 0.5, 0.5, 0 }, { 0.5, 0.5, 0.25 }, { 0.3, 0.3, 0 }, { 0.3, 0.3, 0.15 }, { 0.15, 0.15, 0 }, { 0.15, 0.15, 0.075 }, { 0.75, 1, 0 }, // 60 { 0.875, 1, 0.5 }, { 0.4875, 0.65, 0 }, { 0.5688, 0.65, 0.325 }, { 0.375, 0.5, 0 }, { 0.4375, 0.5, 0.25 }, { 0.225, 0.3, 0 }, { 0.2625, 0.3, 0.15 }, { 0.1125, 0.15, 0 }, { 0.1313, 0.15, 0.075 }, { 0.5, 1, 0 }, // 70 { 0.75, 1, 0.5 }, { 0.325, 0.65, 0 }, { 0.4875, 0.65, 0.325 }, { 0.25, 0.5, 0 }, { 0.375, 0.5, 0.25 }, { 0.15, 0.3, 0 }, { 0.225, 0.3, 0.15 }, { 0.075, 0.15, 0 }, { 0.1125, 0.15, 0.075 }, { 0.25, 1, 0 }, // 80 { 0.625, 1, 0.5 }, { 0.1625, 0.65, 0 }, { 0.4063, 0.65, 0.325 }, { 0.125, 0.5, 0 }, { 0.3125, 0.5, 0.25 }, { 0.075, 0.3, 0 }, { 0.1875, 0.3, 0.15 }, { 0.0375, 0.15, 0 }, { 0.0938, 0.15, 0.075 }, { 0, 1, 0 }, // 90 { 0.5, 1, 0.5 }, { 0, 0.65, 0 }, { 0.325, 0.65, 0.325 }, { 0, 0.5, 0 }, { 0.25, 0.5, 0.25 }, { 0, 0.3, 0 }, { 0.15, 0.3, 0.15 }, { 0, 0.15, 0 }, { 0.075, 0.15, 0.075 }, { 0, 1, 0.25 }, // 100 { 0.5, 1, 0.625 }, { 0, 0.65, 0.1625 }, { 0.325, 0.65, 0.4063 }, { 0, 0.5, 0.125 }, { 0.25, 0.5, 0.3125 }, { 0, 0.3, 0.075 }, { 0.15, 0.3, 0.1875 }, { 0, 0.15, 0.0375 }, { 0.075, 0.15, 0.0938 }, { 0, 1, 0.5 }, // 110 { 0.5, 1, 0.75 }, { 0, 0.65, 0.325 }, { 0.325, 0.65, 0.4875 }, { 0, 0.5, 0.25 }, { 0.25, 0.5, 0.375 }, { 0, 0.3, 0.15 }, { 0.15, 0.3, 0.225 }, { 0, 0.15, 0.075 }, { 0.075, 0.15, 0.1125 }, { 0, 1, 0.75 }, // 120 { 0.5, 1, 0.875 }, { 0, 0.65, 0.4875 }, { 0.325, 0.65, 0.5688 }, { 0, 0.5, 0.375 }, { 0.25, 0.5, 0.4375 }, { 0, 0.3, 0.225 }, { 0.15, 0.3, 0.2625 }, { 0, 0.15, 0.1125 }, { 0.075, 0.15, 0.1313 }, { 0, 1, 1 }, // 130 { 0.5, 1, 1 }, { 0, 0.65, 0.65 }, { 0.325, 0.65, 0.65 }, { 0, 0.5, 0.5 }, { 0.25, 0.5, 0.5 }, { 0, 0.3, 0.3 }, { 0.15, 0.3, 0.3 }, { 0, 0.15, 0.15 }, { 0.075, 0.15, 0.15 }, { 0, 0.75, 1 }, // 140 { 0.5, 0.875, 1 }, { 0, 0.4875, 0.65 }, { 0.325, 0.5688, 0.65 }, { 0, 0.375, 0.5 }, { 0.25, 0.4375, 0.5 }, { 0, 0.225, 0.3 }, { 0.15, 0.2625, 0.3 }, { 0, 0.1125, 0.15 }, { 0.075, 0.1313, 0.15 }, { 0, 0.5, 1 }, // 150 { 0.5, 0.75, 1 }, { 0, 0.325, 0.65 }, { 0.325, 0.4875, 0.65 }, { 0, 0.25, 0.5 }, { 0.25, 0.375, 0.5 }, { 0, 0.15, 0.3 }, { 0.15, 0.225, 0.3 }, { 0, 0.075, 0.15 }, { 0.075, 0.1125, 0.15 }, { 0, 0.25, 1 }, // 160 { 0.5, 0.625, 1 }, { 0, 0.1625, 0.65 }, { 0.325, 0.4063, 0.65 }, { 0, 0.125, 0.5 }, { 0.25, 0.3125, 0.5 }, { 0, 0.075, 0.3 }, { 0.15, 0.1875, 0.3 }, { 0, 0.0375, 0.15 }, { 0.075, 0.0938, 0.15 }, { 0, 0, 1 }, // 170 { 0.5, 0.5, 1 }, { 0, 0, 0.65 }, { 0.325, 0.325, 0.65 }, { 0, 0, 0.5 }, { 0.25, 0.25, 0.5 }, { 0, 0, 0.3 }, { 0.15, 0.15, 0.3 }, { 0, 0, 0.15 }, { 0.075, 0.075, 0.15 }, { 0.25, 0, 1 }, // 180 { 0.625, 0.5, 1 }, { 0.1625, 0, 0.65 }, { 0.4063, 0.325, 0.65 }, { 0.125, 0, 0.5 }, { 0.3125, 0.25, 0.5 }, { 0.075, 0, 0.3 }, { 0.1875, 0.15, 0.3 }, { 0.0375, 0, 0.15 }, { 0.0938, 0.075, 0.15 }, { 0.5, 0, 1 }, // 190 { 0.75, 0.5, 1 }, { 0.325, 0, 0.65 }, { 0.4875, 0.325, 0.65 }, { 0.25, 0, 0.5 }, { 0.375, 0.25, 0.5 }, { 0.15, 0, 0.3 }, { 0.225, 0.15, 0.3 }, { 0.075, 0, 0.15 }, { 0.1125, 0.075, 0.15 }, { 0.75, 0, 1 }, // 200 { 0.875, 0.5, 1 }, { 0.4875, 0, 0.65 }, { 0.5688, 0.325, 0.65 }, { 0.375, 0, 0.5 }, { 0.4375, 0.25, 0.5 }, { 0.225, 0, 0.3 }, { 0.2625, 0.15, 0.3 }, { 0.1125, 0, 0.15 }, { 0.1313, 0.075, 0.15 }, { 1, 0, 1 }, // 210 { 1, 0.5, 1 }, { 0.65, 0, 0.65 }, { 0.65, 0.325, 0.65 }, { 0.5, 0, 0.5 }, { 0.5, 0.25, 0.5 }, { 0.3, 0, 0.3 }, { 0.3, 0.15, 0.3 }, { 0.15, 0, 0.15 }, { 0.15, 0.075, 0.15 }, { 1, 0, 0.75 }, // 220 { 1, 0.5, 0.875 }, { 0.65, 0, 0.4875 }, { 0.65, 0.325, 0.5688 }, { 0.5, 0, 0.375 }, { 0.5, 0.25, 0.4375 }, { 0.3, 0, 0.225 }, { 0.3, 0.15, 0.2625 }, { 0.15, 0, 0.1125 }, { 0.15, 0.075, 0.1313 }, { 1, 0, 0.5 }, // 230 { 1, 0.5, 0.75 }, { 0.65, 0, 0.325 }, { 0.65, 0.325, 0.4875 }, { 0.5, 0, 0.25 }, { 0.5, 0.25, 0.375 }, { 0.3, 0, 0.15 }, { 0.3, 0.15, 0.225 }, { 0.15, 0, 0.075 }, { 0.15, 0.075, 0.1125 }, { 1, 0, 0.25 }, // 240 { 1, 0.5, 0.625 }, { 0.65, 0, 0.1625 }, { 0.65, 0.325, 0.4063 }, { 0.5, 0, 0.125 }, { 0.5, 0.25, 0.3125 }, { 0.3, 0, 0.075 }, { 0.3, 0.15, 0.1875 }, { 0.15, 0, 0.0375 }, { 0.15, 0.075, 0.0938 }, { 0.33, 0.33, 0.33 }, // 250 { 0.464, 0.464, 0.464 }, { 0.598, 0.598, 0.598 }, { 0.732, 0.732, 0.732 }, { 0.866, 0.866, 0.866 }, { 1, 1, 1 } // 255 } ; // AutoCAD VERSION aliases #define DL_VERSION_R12 DL_Codes::AC1009 #define DL_VERSION_LT2 DL_Codes::AC1009 #define DL_VERSION_R13 DL_Codes::AC1012 // not supported yet #define DL_VERSION_LT95 DL_Codes::AC1012 // not supported yet #define DL_VERSION_R14 DL_Codes::AC1014 // not supported yet #define DL_VERSION_LT97 DL_Codes::AC1014 // not supported yet #define DL_VERSION_LT98 DL_Codes::AC1014 // not supported yet #define DL_VERSION_2000 DL_Codes::AC1015 #define DL_VERSION_2002 DL_Codes::AC1015 // DXF Group Codes: // Strings #define DL_STRGRP_START 0 #define DL_STRGRP_END 9 // Coordinates #define DL_CRDGRP_START 10 #define DL_CRDGRP_END 19 // Real values #define DL_RLGRP_START 38 #define DL_RLGRP_END 59 // Short integer values #define DL_SHOGRP_START 60 #define DL_SHOGRP_END 79 // New in Release 13, #define DL_SUBCLASS 100 // More coordinates #define DL_CRD2GRP_START 210 #define DL_CRD2GRP_END 239 // Extended data strings #define DL_ESTRGRP_START 1000 #define DL_ESTRGRP_END 1009 // Extended data reals #define DL_ERLGRP_START 1010 #define DL_ERLGRP_END 1059 #define DL_Y8_COORD_CODE 28 #define DL_Z0_COORD_CODE 30 #define DL_Z8_COORD_CODE 38 #define DL_POINT_COORD_CODE 10 #define DL_INSERT_COORD_CODE 10 #define DL_CRD2GRP_START 210 #define DL_CRD2GRP_END 239 #define DL_THICKNESS 39 #define DL_FIRST_REAL_CODE THICKNESS #define DL_LAST_REAL_CODE 59 #define DL_FIRST_INT_CODE 60 #define DL_ATTFLAGS_CODE 70 #define DL_PLINE_FLAGS_CODE 70 #define DL_LAYER_FLAGS_CODE 70 #define DL_FLD_LEN_CODE 73 // Inside ATTRIB resbuf #define DL_LAST_INT_CODE 79 #define DL_X_EXTRU_CODE 210 #define DL_Y_EXTRU_CODE 220 #define DL_Z_EXTRU_CODE 230 #define DL_COMMENT_CODE 999 // Start and endpoints of a line #define DL_LINE_START_CODE 10 // Followed by x coord #define DL_LINE_END_CODE 11 // Followed by x coord // Some codes used by blocks #define DL_BLOCK_FLAGS_CODE 70 // An int containing flags #define DL_BLOCK_BASE_CODE 10 // Origin of block definition #define DL_XREF_DEPENDENT 16 // If a block contains an XREF #define DL_XREF_RESOLVED 32 // If a XREF resolved ok #define DL_REFERENCED 64 // If a block is ref'd in DWG #define DL_XSCALE_CODE 41 #define DL_YSCALE_CODE 42 #define DL_ANGLE_CODE 50 #define DL_INS_POINT_CODE 10 // Followed by x of ins pnt #define DL_NAME2_CODE 3 // Second appearance of name // Some codes used by circle entities #define DL_CENTER_CODE 10 // Followed by x of center #define DL_RADIUS_CODE 40 // Followd by radius of circle #define DL_COND_OP_CODE -4 // Conditional op,ads_ssget // When using ads_buildlist you MUST use RTDXF0 instead of these #define DL_ENTITY_TYPE_CODE 0 // Then there is LINE, 3DFACE.. #define DL_SES_CODE 0 // Start End String Code #define DL_FILE_SEP_CODE 0 // File separator #define DL_SOT_CODE 0 // Start Of Table #define DL_TEXTVAL_CODE 1 #define DL_NAME_CODE 2 #define DL_BLOCK_NAME_CODE 2 #define DL_SECTION_NAME_CODE 2 #define DL_ENT_HAND_CODE 5 // What follows is hexa string #define DL_TXT_STYLE_CODE 7 // Inside attributes #define DL_LAYER_NAME_CODE 8 // What follows is layer name #define DL_FIRST_XCOORD_CODE 10 // Group code x of 1st coord #define DL_FIRST_YCOORD_CODE 20 // Group code y of 1st coord #define DL_FIRST_ZCOORD_CODE 30 // Group code z of 1st coord #define DL_L_START_CODE 10 #define DL_L_END_CODE 11 #define DL_TXTHI_CODE 40 #define DL_SCALE_X_CODE 41 #define DL_SCALE_Y_CODE 42 #define DL_SCALE_Z_CODE 43 #define DL_BULGE_CODE 42 // Used in PLINE verts for arcs #define DL_ROTATION_CODE 50 #define DL_COLOUR_CODE 62 // What follows is a color int #define DL_LTYPE_CODE 6 // What follows is a linetype // Attribute flags #define DL_ATTS_FOLLOW_CODE 66 #define DL_ATT_TAG_CODE 2 #define DL_ATT_VAL_CODE 1 #define DL_ATT_FLAGS_CODE 70 // 4 1 bit flags as follows... #define DL_ATT_INVIS_FLAG 1 #define DL_ATT_CONST_FLAG 2 #define DL_ATT_VERIFY_FLAG 4 // Prompt and verify #define DL_ATT_PRESET_FLAG 8 // No prompt and no verify // PLINE defines // Flags #define DL_OPEN_PLINE 0x00 #define DL_CLOSED_PLINE 0x01 #define DL_POLYLINE3D 0x80 #define DL_PFACE_MESH 0x40 #define DL_PGON_MESH 0x10 // Vertices follow entity, required in POLYLINES #define DL_VERTS_FOLLOW_CODE 66 // Value should always be 1 #define DL_VERTEX_COORD_CODE 10 // LAYER flags #define DL_FROZEN 1 #define DL_FROZEN_BY_DEF 2 #define DL_LOCKED 4 #define DL_OBJECT_USED 64 // Object is ref'd in the dwg #define DL_BLOCK_EN_CODE -2 // Block entity definition #define DL_E_NAME -1 // Entity name // Extended data codes #define DL_EXTD_SENTINEL (-3) #define DL_EXTD_STR 1000 #define DL_EXTD_APP_NAME 1001 #define DL_EXTD_CTL_STR 1002 #define DL_EXTD_LYR_STR 1003 #define DL_EXTD_CHUNK 1004 #define DL_EXTD_HANDLE 1005 #define DL_EXTD_POINT 1010 #define DL_EXTD_POS 1011 #define DL_EXTD_DISP 1012 #define DL_EXTD_DIR 1013 #define DL_EXTD_FLOAT 1040 #define DL_EXTD_DIST 1041 #define DL_EXTD_SCALE 1042 #define DL_EXTD_INT16 1070 #define DL_EXTD_INT32 1071 // UCS codes for use in ads_trans #define DL_WCS_TRANS_CODE 0 #define DL_UCS_TRANS_CODE 1 #define DL_DCS_TRANS_CODE 2 #define DL_PCS_TRANS_CODE 3 #endif