Coverage Report

Created: 2025-07-13 06:42

/src/openbabel/data/chemdrawcdx.h
Line
Count
Source (jump to first uncovered line)
1
/**********************************************************************
2
 This file (chemdrawcdx.h) is included in Open Babel. It is assumed
3
 to be available under the public domain, as it is provided freely as
4
 a compilation of open documentation of the ChemDraw CDX file format:
5
6
http://www.cambridgesoft.com/services/documentation/sdk/chemdraw/cdx/
7
8
"As a convenience, we have provided a C++ header file with
9
human-readable enumerations of all of the CDX object and property
10
values. The enum names used in this file (kCDXProp_*, etc) are the
11
same as used throughout this documentation. This header file is
12
provided simply to save you the problem of typing the same values in
13
again youself."
14
15
  Description:  Constants defined by the CDX file format Specification
16
***********************************************************************/
17
18
#ifndef _H_CDXConstants
19
#define _H_CDXConstants
20
21
// ------------------------------------------------------------
22
// An ANSI replacement for four-byte character constants.
23
// ------------------------------------------------------------
24
#ifndef QUADCONST
25
#if defined( _X86_ ) && !defined( _CS3D )   // All 3D projects uses the second QUADCONST definition for both MAC and Windows
26
// littleEndian
27
#define QUADCONST(a, b, c, d)  \
28
   (((long) ((d) & 0xff) << 24) \
29
  | ((long) ((c) & 0xff) << 16) \
30
  | ((long) ((b) & 0xff) << 8)  \
31
  | ((long) ((a) & 0xff)))
32
33
#else // defined( _X86_ ) && !defined( _CS3D )
34
#define QUADCONST(a, b, c, d)   \
35
   (((long) ((a) & 0xff) << 24) \
36
  | ((long) ((b) & 0xff) << 16) \
37
  | ((long) ((c) & 0xff) << 8)  \
38
  | ((long) ((d) & 0xff)))
39
40
#endif //  defined( _X86_ ) && !defined( _CS3D )
41
#endif // QUADCONST
42
43
typedef unsigned short int UINT16;
44
typedef int INT32;
45
typedef unsigned int UINT32;
46
47
typedef UINT16 CDXTag;
48
typedef INT32  CDXObjectID; // signed for now, due to mac compiler bug?
49
const CDXObjectID kCDXUndefinedId = (CDXObjectID)-1;
50
51
const int kCDX_HeaderStringLen = 8;
52
0
#define kCDX_HeaderString "VjCD0100"
53
#define kCDX_Signature     QUADCONST('V','j','C','D')
54
0
#define kCDX_HeaderLength 28
55
56
#define kCDXML_HeaderString \
57
  "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" << GetTextEOL() << \
58
  "<!DOCTYPE CDXML SYSTEM \"http://www.cambridgesoft.com/xml/cdxml.dtd\" >" << GetTextEOL()
59
60
const UINT16 kCDXTag_Object     = 0x8000;
61
const UINT16 kCDXTag_UserDefined  = 0x4000;
62
63
enum CDXDatumID {
64
  // General properties.
65
  kCDXProp_EndObject,           // 0x0000 Marks end of object.
66
  kCDXProp_CreationUserName,        // 0x0001 The name of the creator (program user's name) of the document. (CDXString)
67
  kCDXProp_CreationDate,          // 0x0002 The time of object creation. (CDXDate)
68
  kCDXProp_CreationProgram,       // 0x0003 The name of the program, including version and platform, that created the associated CDX object. ChemDraw 4.0 uses ChemDraw 4.0 as the value of CreationProgram. (CDXString)
69
  kCDXProp_ModificationUserName,      // 0x0004 The name of the last modifier (program user's name) of the document. (CDXString)
70
  kCDXProp_ModificationDate,        // 0x0005 Time of the last modification. (CDXDate)
71
  kCDXProp_ModificationProgram,     // 0x0006 The name of the program, including version and platform, of the last program to perform a modification. ChemDraw 4.0 uses ChemDraw 4.0 as the value of CreationProgram. (CDXString)
72
  kCDXProp_Unused1,           // 0x0007 Table of contents. (obsolete)
73
  kCDXProp_Name,              // 0x0008 Name of an object. (CDXString)
74
  kCDXProp_Comment,           // 0x0009 An arbitrary string intended to be meaningful to a user. (CDXString)
75
  kCDXProp_ZOrder,            // 0x000A Back-to-front ordering index in 2D drawing. (INT16)
76
  kCDXProp_RegistryNumber,        // 0x000B A registry or catalog number of a molecule object. (CDXString)
77
  kCDXProp_RegistryAuthority,       // 0x000C A string that specifies the authority which issued a registry or catalog number. Some examples of registry authorities are CAS, Beilstein, Aldrich, and Merck. (CDXString)
78
  kCDXProp_Unused2,           // 0x000D Indicates that this object (the reference object) is an alias to an object elsewhere in the document (the target object). The attributes and contained objects should be taken from the target object. (obsolete)
79
  kCDXProp_RepresentsProperty,      // 0x000E Indicates that this object represents some property in some other object. (CDXRepresentsProperty)
80
  kCDXProp_IgnoreWarnings,        // 0x000F Signifies whether chemical warnings should be suppressed on this object. (CDXBooleanImplied)
81
  kCDXProp_ChemicalWarning,       // 0x0010 A warning concerning possible chemical problems with this object. (CDXString)
82
  kCDXProp_Visible,           // 0x0011 The object is visible if non-zero. (CDXBoolean)
83
84
  // Fonts.
85
  kCDXProp_FontTable = 0x0100,      // 0x0100 A list of fonts used in the document. (CDXFontTable)
86
87
  // Coordinates.
88
  kCDXProp_2DPosition = 0x0200,     // 0x0200 The 2D location (in the order of vertical and horizontal locations) of an object. (CDXPoint2D)
89
  kCDXProp_3DPosition,          // 0x0201 The 3D location (in the order of X-, Y-, and Z-locations in right-handed coordinate system) of an object in CDX coordinate units. The precise meaning of this attribute varies depending on the type of object. (CDXPoint3D)
90
  kCDXProp_2DExtent,            // 0x0202 The width and height of an object in CDX coordinate units. The precise meaning of this attribute varies depending on the type of object. (CDXPoint2D)
91
  kCDXProp_3DExtent,            // 0x0203 The width, height, and depth of an object in CDX coordinate units (right-handed coordinate system). The precise meaning of this attribute varies depending on the type of object. (CDXPoint3D)
92
  kCDXProp_BoundingBox,         // 0x0204 The smallest rectangle that encloses the graphical representation of the object. (CDXRectangle)
93
  kCDXProp_RotationAngle,         // 0x0205 The angular orientation of an object in degrees * 65536. (INT32)
94
  kCDXProp_BoundsInParent,        // 0x0206 The bounds of this object in the coordinate system of its parent (used for pages within tables). (CDXRectangle)
95
  kCDXProp_3DHead,            // 0x0207 The 3D location (in the order of X-, Y-, and Z-locations in right-handed coordinate system) of the head of an object in CDX coordinate units. The precise meaning of this attribute varies depending on the type of object. (CDXPoint3D)
96
  kCDXProp_3DTail,            // 0x0208 The 3D location (in the order of X-, Y-, and Z-locations in right-handed coordinate system) of the tail of an object in CDX coordinate units. The precise meaning of this attribute varies depending on the type of object. (CDXPoint3D)
97
  kCDXProp_TopLeft,           // 0x0209 The location of the top-left corner of a quadrilateral object, possibly in a rotated or skewed frame. (CDXPoint2D)
98
  kCDXProp_TopRight,            // 0x020A The location of the top-right corner of a quadrilateral object, possibly in a rotated or skewed frame. (CDXPoint2D)
99
  kCDXProp_BottomRight,         // 0x020B The location of the bottom-right corner of a quadrilateral object, possibly in a rotated or skewed frame. (CDXPoint2D)
100
  kCDXProp_BottomLeft,          // 0x020C The location of the bottom-left corner of a quadrilateral object, possibly in a rotated or skewed frame. (CDXPoint2D)
101
102
  // Colors.
103
  kCDXProp_ColorTable = 0x0300,     // 0x0300 The color palette used throughout the document. (CDXColorTable)
104
  kCDXProp_ForegroundColor,       // 0x0301 The foreground color of an object represented as the two-based index into the object's color table. (UINT16)
105
  kCDXProp_BackgroundColor,       // 0x0302 The background color of an object represented as the two-based index into the object's color table. (INT16)
106
  
107
  // Atom properties.
108
  kCDXProp_Node_Type = 0x0400,      // 0x0400 The type of a node object. (INT16)
109
  kCDXProp_Node_LabelDisplay,       // 0x0401 The characteristics of node label display. (INT8)
110
  kCDXProp_Node_Element,          // 0x0402 The atomic number of the atom representing this node. (INT16)
111
  kCDXProp_Atom_ElementList,        // 0x0403 A list of atomic numbers. (CDXElementList)
112
  kCDXProp_Atom_Formula,          // 0x0404 The composition of a node representing a fragment whose composition is known, but whose connectivity is not. For example, C<sub>4</sub>H<sub>9</sub> represents a mixture of the 4 butyl isomers. (CDXFormula)
113
  kCDXProp_Atom_Isotope = 0x0420,     // 0x0420 The absolute isotopic mass of an atom (2 for deuterium, 14 for carbon-14). (INT16)
114
  kCDXProp_Atom_Charge,         // 0x0421 The atomic charge of an atom. (INT8)
115
  kCDXProp_Atom_Radical,          // 0x0422 The atomic radical attribute of an atom. (UINT8)
116
  kCDXProp_Atom_RestrictFreeSites,    // 0x0423 Indicates that up to the specified number of additional substituents are permitted on this atom. (UINT8)
117
  kCDXProp_Atom_RestrictImplicitHydrogens,// 0x0424 Signifies that implicit hydrogens are not allowed on this atom. (CDXBooleanImplied)
118
  kCDXProp_Atom_RestrictRingBondCount,  // 0x0425 The number of ring bonds attached to an atom. (INT8)
119
  kCDXProp_Atom_RestrictUnsaturatedBonds, // 0x0426 Indicates whether unsaturation should be present or absent. (INT8)
120
  kCDXProp_Atom_RestrictRxnChange,    // 0x0427 If present, signifies that the reaction change of an atom must be as specified. (CDXBooleanImplied)
121
  kCDXProp_Atom_RestrictRxnStereo,    // 0x0428 The change of stereochemistry of an atom during a reaction. (INT8)
122
  kCDXProp_Atom_AbnormalValence,      // 0x0429 Signifies that an abnormal valence for an atom is permitted. (CDXBooleanImplied)
123
  kCDXProp_Unused3,           // 0x042A 
124
  kCDXProp_Atom_NumHydrogens,       // 0x042B The number of (explicit) hydrogens in a labeled atom consisting of one heavy atom and (optionally) the symbol H (e.g., CH<sub>3</sub>). (UINT16)
125
  kCDXProp_Unused4,           // 0x042C 
126
  kCDXProp_Unused5,           // 0x042D 
127
  kCDXProp_Atom_HDot,           // 0x042E Signifies the presence of an implicit hydrogen with stereochemistry specified equivalent to an explicit H atom with a wedged bond. (CDXBooleanImplied)
128
  kCDXProp_Atom_HDash,          // 0x042F Signifies the presence of an implicit hydrogen with stereochemistry specified equivalent to an explicit H atom with a hashed bond. (CDXBooleanImplied)
129
  kCDXProp_Atom_Geometry,         // 0x0430 The geometry of the bonds about this atom. (INT8)
130
  kCDXProp_Atom_BondOrdering,       // 0x0431 An ordering of the bonds to this node, used for stereocenters, fragments, and named alternative groups with more than one attachment. (CDXObjectIDArray)
131
  kCDXProp_Node_Attachments,        // 0x0432 For multicenter attachment nodes or variable attachment nodes, a list of IDs of the nodes which are multiply or variably attached to this node. (CDXObjectIDArrayWithCounts)
132
  kCDXProp_Atom_GenericNickname,      // 0x0433 The name of the generic nickname. (CDXString)
133
  kCDXProp_Atom_AltGroupID,       // 0x0434 The ID of the alternative group object that describes this node. (CDXObjectID)
134
  kCDXProp_Atom_RestrictSubstituentsUpTo, // 0x0435 Indicates that substitution is restricted to no more than the specified value. (UINT8)
135
  kCDXProp_Atom_RestrictSubstituentsExactly,  // 0x0436 Indicates that exactly the specified number of substituents must be present. (UINT8)
136
  kCDXProp_Atom_CIPStereochemistry,   // 0x0437 The node's absolute stereochemistry according to the Cahn-Ingold-Prelog system. (INT8)
137
  kCDXProp_Atom_Translation,        // 0x0438 Provides for restrictions on whether a given node may match other more- or less-general nodes. (INT8)
138
  kCDXProp_Atom_AtomNumber,       // 0x0439 Atom number, as text. (CDXString)
139
  kCDXProp_Atom_ShowQuery,        // 0x043A Show the query indicator if non-zero. (CDXBoolean)
140
  kCDXProp_Atom_ShowStereo,       // 0x043B Show the stereochemistry indicator if non-zero. (CDXBoolean)
141
  kCDXProp_Atom_ShowAtomNumber,     // 0x043C Show the atom number if non-zero. (CDXBoolean)
142
  kCDXProp_Atom_LinkCountLow,       // 0x043D Low end of repeat count for link nodes. (INT16)
143
  kCDXProp_Atom_LinkCountHigh,      // 0x043E High end of repeat count for link nodes. (INT16)
144
  kCDXProp_Atom_IsotopicAbundance,    // 0x043F Isotopic abundance of this atom's isotope. (INT8)
145
  kCDXProp_Atom_ExternalConnectionType, // 0x0440 Type of external connection, for atoms of type kCDXNodeType_ExternalConnectionPoint. (INT8)
146
147
  // Molecule properties.
148
  kCDXProp_Mole_Racemic = 0x0500,     // 0x0500 Indicates that the molecule is a racemic mixture. (CDXBoolean)
149
  kCDXProp_Mole_Absolute,         // 0x0501 Indicates that the molecule has known absolute configuration. (CDXBoolean)
150
  kCDXProp_Mole_Relative,         // 0x0502 Indicates that the molecule has known relative stereochemistry, but unknown absolute configuration. (CDXBoolean)
151
  kCDXProp_Mole_Formula,          // 0x0503 The molecular formula representation of a molecule object. (CDXFormula)
152
  kCDXProp_Mole_Weight,         // 0x0504 The average molecular weight of a molecule object. (FLOAT64)
153
  kCDXProp_Frag_ConnectionOrder,      // 0x0505 An ordered list of attachment points within a fragment. (CDXObjectIDArray)
154
155
  // Bond properties.
156
  kCDXProp_Bond_Order = 0x0600,     // 0x0600 The order of a bond object. (INT16)
157
  kCDXProp_Bond_Display,          // 0x0601 The display type of a bond object. (INT16)
158
  kCDXProp_Bond_Display2,         // 0x0602 The display type for the second line of a double bond. (INT16)
159
  kCDXProp_Bond_DoublePosition,     // 0x0603 The position of the second line of a double bond. (INT16)
160
  kCDXProp_Bond_Begin,          // 0x0604 The ID of the CDX node object at the first end of a bond. (CDXObjectID)
161
  kCDXProp_Bond_End,            // 0x0605 The ID of the CDX node object at the second end of a bond. (CDXObjectID)
162
  kCDXProp_Bond_RestrictTopology,     // 0x0606 Indicates the desired topology of a bond in a query. (INT8)
163
  kCDXProp_Bond_RestrictRxnParticipation, // 0x0607 Specifies that a bond is affected by a reaction. (INT8)
164
  kCDXProp_Bond_BeginAttach,        // 0x0608 Indicates where within the Bond_Begin node a bond is attached. (UINT8)
165
  kCDXProp_Bond_EndAttach,        // 0x0609 Indicates where within the Bond_End node a bond is attached. (UINT8)
166
  kCDXProp_Bond_CIPStereochemistry,   // 0x060A The bond's absolute stereochemistry according to the Cahn-Ingold-Prelog system. (INT8)
167
  kCDXProp_Bond_BondOrdering,       // 0x060B Ordered list of attached bond IDs. (CDXObjectIDArray)
168
  kCDXProp_Bond_ShowQuery,        // 0x060C Show the query indicator if non-zero. (CDXBoolean)
169
  kCDXProp_Bond_ShowStereo,       // 0x060D Show the stereochemistry indicator if non-zero. (CDXBoolean)
170
  kCDXProp_Bond_CrossingBonds,      // 0x060E Unordered list of IDs of bonds that cross this one (either above or below). (CDXObjectIDArray)
171
  kCDXProp_Bond_ShowRxn,          // 0x060F Show the reaction-change indicator if non-zero. (CDXBoolean)
172
173
  // Text properties.
174
  kCDXProp_Text = 0x0700,         // 0x0700 The text of a text object. (CDXString)
175
  kCDXProp_Justification,         // 0x0701 The horizontal justification of a text object. (INT8)
176
  kCDXProp_LineHeight,          // 0x0702 The line height of a text object. (UINT16)
177
  kCDXProp_WordWrapWidth,         // 0x0703 The word-wrap width of a text object. (INT16)
178
  kCDXProp_LineStarts,          // 0x0704 The number of lines of a text object followed by that many values indicating the zero-based text position of each line start. (INT16ListWithCounts)
179
  kCDXProp_LabelAlignment,        // 0x0705 The alignment of the text with respect to the node position. (INT8)
180
  kCDXProp_LabelLineHeight,       // 0x0706 Text line height for atom labels (INT16)
181
  kCDXProp_CaptionLineHeight,       // 0x0707 Text line height for non-atomlabel text objects (INT16)
182
  kCDXProp_InterpretChemically,     // 0x0708 Signifies whether to the text label should be interpreted chemically (if possible). (CDXBooleanImplied)
183
184
  // Document properties.
185
  kCDXProp_MacPrintInfo = 0x0800,     // 0x0800 The 120 byte Macintosh TPrint data associated with the CDX document object. Refer to Macintosh Toolbox manual for detailed description. (Unformatted)
186
  kCDXProp_WinPrintInfo,          // 0x0801 The Windows DEVMODE structure associated with the CDX document object. (Unformatted)
187
  kCDXProp_PrintMargins,          // 0x0802 The outer margins of the Document. (CDXRectangle)
188
  kCDXProp_ChainAngle,          // 0x0803 The default chain angle setting in degrees * 65536. (INT32)
189
  kCDXProp_BondSpacing,         // 0x0804 The spacing between segments of a multiple bond, measured relative to bond length. (INT16)
190
  kCDXProp_BondLength,          // 0x0805 The default bond length. (CDXCoordinate)
191
  kCDXProp_BoldWidth,           // 0x0806 The default bold bond width. (CDXCoordinate)
192
  kCDXProp_LineWidth,           // 0x0807 The default line width. (CDXCoordinate)
193
  kCDXProp_MarginWidth,         // 0x0808 The default amount of space surrounding atom labels. (CDXCoordinate)
194
  kCDXProp_HashSpacing,         // 0x0809 The default spacing between hashed lines used in wedged hashed bonds. (CDXCoordinate)
195
  kCDXProp_LabelStyle,          // 0x080A The default style for atom labels. (CDXFontStyle)
196
  kCDXProp_CaptionStyle,          // 0x080B The default style for non-atomlabel text objects. (CDXFontStyle)
197
  kCDXProp_CaptionJustification,      // 0x080C The horizontal justification of a caption (non-atomlabel text object) (INT8)
198
  kCDXProp_FractionalWidths,        // 0x080D Signifies whether to use fractional width information when drawing text. (CDXBooleanImplied)
199
  kCDXProp_Magnification,         // 0x080E The view magnification factor (INT16)
200
  kCDXProp_WidthPages,          // 0x080F The width of the document in pages. (INT16)
201
  kCDXProp_HeightPages,         // 0x0810 The height of the document in pages. (INT16)
202
  kCDXProp_DrawingSpaceType,        // 0x0811 The type of drawing space used for this document. (INT8)
203
  kCDXProp_Width,             // 0x0812 The width of an object in CDX coordinate units, possibly in a rotated or skewed frame. (CDXCoordinate)
204
  kCDXProp_Height,            // 0x0813 The height of an object in CDX coordinate units, possibly in a rotated or skewed frame. (CDXCoordinate)
205
  kCDXProp_PageOverlap,         // 0x0814 The amount of overlap of pages when a poster is tiled. (CDXCoordinate)
206
  kCDXProp_Header,            // 0x0815 The text of the header. (CDXString)
207
  kCDXProp_HeaderPosition,        // 0x0816 The vertical offset of the header baseline from the top of the page. (CDXCoordinate)
208
  kCDXProp_Footer,            // 0x0817 The text of the footer. (CDXString)
209
  kCDXProp_FooterPosition,        // 0x0818 The vertical offset of the footer baseline from the bottom of the page. (CDXCoordinate)
210
  kCDXProp_PrintTrimMarks,        // 0x0819 If present, trim marks are to printed in the margins. (CDXBooleanImplied)
211
  kCDXProp_LabelStyleFont,        // 0x081A The default font family for atom labels. (INT16)
212
  kCDXProp_CaptionStyleFont,        // 0x081B The default font style for captions (non-atom-label text objects). (INT16)
213
  kCDXProp_LabelStyleSize,        // 0x081C The default font size for atom labels. (INT16)
214
  kCDXProp_CaptionStyleSize,        // 0x081D The default font size for captions (non-atom-label text objects). (INT16)
215
  kCDXProp_LabelStyleFace,        // 0x081E The default font style for atom labels. (INT16)
216
  kCDXProp_CaptionStyleFace,        // 0x081F The default font face for captions (non-atom-label text objects). (INT16)
217
  kCDXProp_LabelStyleColor,       // 0x0820 The default color for atom labels (INT16)
218
  kCDXProp_CaptionStyleColor,       // 0x0821 The default color for captions (non-atom-label text objects). (INT16)
219
  kCDXProp_BondSpacingAbs,        // 0x0822 The absolute distance between segments of a multiple bond. (CDXCoordinate)
220
  kCDXProp_LabelJustification,      // 0x0823 The default justification for atom labels. (INT8)
221
  kCDXProp_FixInplaceExtent,        // 0x0824 Defines a size for OLE In-Place editing. (CDXPoint2D)
222
  kCDXProp_Side,              // 0x0825 A specific side of an object (rectangle). (INT16)
223
  kCDXProp_FixInplaceGap,         // 0x0826 Defines a padding for OLE In-Place editing. (CDXPoint2D)
224
225
  // Window properties.
226
  kCDXProp_Window_IsZoomed = 0x0900,    // 0x0900 Signifies whether the main viewing window is zoomed (maximized). (CDXBooleanImplied)
227
  kCDXProp_Window_Position,       // 0x0901 The top-left position of the main viewing window. (CDXPoint2D)
228
  kCDXProp_Window_Size,         // 0x0902 Height and width of the document window. (CDXPoint2D)
229
  
230
  // Graphic object properties.
231
  kCDXProp_Graphic_Type = 0x0A00,     // 0x0A00 The type of graphical object. (INT16)
232
  kCDXProp_Line_Type,           // 0x0A01 The type of a line object. (INT16)
233
  kCDXProp_Arrow_Type,          // 0x0A02 The type of arrow object, which represents line, arrow, arc, rectangle, or orbital. (INT16)
234
  kCDXProp_Rectangle_Type,        // 0x0A03 The type of a rectangle object. (INT16)
235
  kCDXProp_Oval_Type,           // 0x0A04 The type of an arrow object that represents a circle or ellipse. (INT16)
236
  kCDXProp_Orbital_Type,          // 0x0A05 The type of orbital object. (INT16)
237
  kCDXProp_Bracket_Type,          // 0x0A06 The type of symbol object. (INT16)
238
  kCDXProp_Symbol_Type,         // 0x0A07 The type of symbol object. (INT16)
239
  kCDXProp_Curve_Type,          // 0x0A08 The type of curve object. (INT16)
240
  kCDXProp_Arrow_HeadSize = 0x0A20,   // 0x0A20 The size of the arrow's head. (INT16)
241
  kCDXProp_Arc_AngularSize,       // 0x0A21 The size of an arc (in degrees * 10, so 90 degrees = 900). (INT16)
242
  kCDXProp_Bracket_LipSize,       // 0x0A22 The size of a bracket. (INT16)
243
  kCDXProp_Curve_Points,          // 0x0A23 The B&eacute;zier curve's control point locations. (CDXCurvePoints)
244
  kCDXProp_Bracket_Usage,         // 0x0A24 The syntactical chemical meaning of the bracket (SRU, mer, mon, xlink, etc). (INT8)
245
  kCDXProp_Polymer_RepeatPattern,     // 0x0A25 The head-to-tail connectivity of objects contained within the bracket. (INT8)
246
  kCDXProp_Polymer_FlipType,        // 0x0A26 The flip state of objects contained within the bracket. (INT8)
247
  kCDXProp_BracketedObjects,        // 0x0A27 The set of objects contained in a BracketedGroup. (CDXObjectIDArray)
248
  kCDXProp_Bracket_RepeatCount,     // 0x0A28 The number of times a multiple-group BracketedGroup is repeated. (INT16)
249
  kCDXProp_Bracket_ComponentOrder,    // 0x0A29 The component order associated with a BracketedGroup. (INT16)
250
  kCDXProp_Bracket_SRULabel,        // 0x0A2A The label associated with a BracketedGroup that represents an SRU. (CDXString)
251
  kCDXProp_Bracket_GraphicID,       // 0x0A2B The ID of a graphical object (bracket, brace, or parenthesis) associated with a Bracket Attachment. (CDXObjectID)
252
  kCDXProp_Bracket_BondID,        // 0x0A2C The ID of a bond that crosses a Bracket Attachment. (CDXObjectID)
253
  kCDXProp_Bracket_InnerAtomID,     // 0x0A2D The ID of the node located within the Bracketed Group and attached to a bond that crosses a Bracket Attachment. (CDXObjectID)
254
  kCDXProp_Curve_Points3D,        // 0x0A2E The B&eacute;zier curve's control point locations. (CDXCurvePoints3D)
255
256
  // Embedded pictures.
257
  kCDXProp_Picture_Edition = 0x0A60,    // 0x0A60 The section information (SectionHandle) of the Macintosh Publish & Subscribe edition embedded in the CDX picture object. (Unformatted)
258
  kCDXProp_Picture_EditionAlias,      // 0x0A61 The alias information of the Macintosh Publish & Subscribe edition embedded in the CDX picture object. (Unformatted)
259
  kCDXProp_MacPICT,           // 0x0A62 A Macintosh PICT data object. (Unformatted)
260
  kCDXProp_WindowsMetafile,       // 0x0A63 A Microsoft Windows Metafile object. (Unformatted)
261
  kCDXProp_OLEObject,           // 0x0A64 An OLE object. (Unformatted)
262
  kCDXProp_EnhancedMetafile,        // 0x0A65 A Microsoft Windows Enhanced Metafile object. (Unformatted)
263
264
  // Spectrum properties
265
  kCDXProp_Spectrum_XSpacing = 0x0A80,  // 0x0A80 The spacing in logical units (ppm, Hz, wavenumbers) between points along the X-axis of an evenly-spaced grid. (FLOAT64)
266
  kCDXProp_Spectrum_XLow,         // 0x0A81 The first data point for the X-axis of an evenly-spaced grid. (FLOAT64)
267
  kCDXProp_Spectrum_XType,        // 0x0A82 The type of units the X-axis represents. (INT16)
268
  kCDXProp_Spectrum_YType,        // 0x0A83 The type of units the Y-axis represents. (INT16)
269
  kCDXProp_Spectrum_XAxisLabel,     // 0x0A84 A label for the X-axis. (CDXString)
270
  kCDXProp_Spectrum_YAxisLabel,     // 0x0A85 A label for the Y-axis. (CDXString)
271
  kCDXProp_Spectrum_DataPoint,      // 0x0A86 The Y-axis values for the spectrum. It is an array of double values corresponding to X-axis values. (FLOAT64)
272
  kCDXProp_Spectrum_Class,        // 0x0A87 The type of spectrum represented. (INT16)
273
  kCDXProp_Spectrum_YLow,         // 0x0A88 Y value to be used to offset data when storing XML. (FLOAT64)
274
  kCDXProp_Spectrum_YScale,       // 0x0A89 Y scaling used to scale data when storing XML. (FLOAT64)
275
276
  // TLC properties
277
  kCDXProp_TLC_OriginFraction = 0x0AA0, // 0x0AA0 The distance of the origin line from the bottom of a TLC Plate, as a fraction of the total height of the plate. (FLOAT64)
278
  kCDXProp_TLC_SolventFrontFraction,    // 0x0AA1 The distance of the solvent front from the top of a TLC Plate, as a fraction of the total height of the plate. (FLOAT64)
279
  kCDXProp_TLC_ShowOrigin,        // 0x0AA2 Show the origin line near the base of the TLC Plate if non-zero. (CDXBoolean)
280
  kCDXProp_TLC_ShowSolventFront,      // 0x0AA3 Show the solvent front line near the top of the TLC Plate if non-zero. (CDXBoolean)
281
  kCDXProp_TLC_ShowBorders,       // 0x0AA4 Show borders around the edges of the TLC Plate if non-zero. (CDXBoolean)
282
  kCDXProp_TLC_ShowSideTicks,       // 0x0AA5 Show tickmarks up the side of the TLC Plate if non-zero. (CDXBoolean)
283
  kCDXProp_TLC_Rf = 0x0AB0,       // 0x0AB0 The Retention Factor of an individual spot. (FLOAT64)
284
  kCDXProp_TLC_Tail,            // 0x0AB1 The length of the "tail" of an individual spot. (CDXCoordinate)
285
  kCDXProp_TLC_ShowRf,          // 0x0AB2 Show the spot's Retention Fraction (Rf) value if non-zero. (CDXBoolean)
286
287
  // Alternate Group properties
288
  kCDXProp_NamedAlternativeGroup_TextFrame = 0x0B00,  // 0x0B00 The bounding box of upper portion of the Named Alternative Group, containing the name of the group. (CDXRectangle)
289
  kCDXProp_NamedAlternativeGroup_GroupFrame,      // 0x0B01 The bounding box of the lower portion of the Named Alternative Group, containing the definition of the group. (CDXRectangle)
290
  kCDXProp_NamedAlternativeGroup_Valence,       // 0x0B02 The number of attachment points in each alternative in a named alternative group. (INT16)
291
292
  // Geometry and Constraint properties
293
  kCDXProp_GeometricFeature = 0x0B80,   // 0x0B80 The type of the geometrical feature (point, line, plane, etc.). (INT8)
294
  kCDXProp_RelationValue,         // 0x0B81 The numeric relationship (if any) among the basis objects used to define this object. (INT8)
295
  kCDXProp_BasisObjects,          // 0x0B82 An ordered list of objects used to define this object. (CDXObjectIDArray)
296
  kCDXProp_ConstraintType,        // 0x0B83 The constraint type (distance or angle). (INT8)
297
  kCDXProp_ConstraintMin,         // 0x0B84 The minimum value of the constraint (FLOAT64)
298
  kCDXProp_ConstraintMax,         // 0x0B85 The maximum value of the constraint (FLOAT64)
299
  kCDXProp_IgnoreUnconnectedAtoms,    // 0x0B86 Signifies whether unconnected atoms should be ignored within the exclusion sphere. (CDXBooleanImplied)
300
  kCDXProp_DihedralIsChiral,        // 0x0B87 Signifies whether a dihedral is signed or unsigned. (CDXBooleanImplied)
301
  kCDXProp_PointIsDirected,       // 0x0B88 For a point based on a normal, signifies whether it is in a specific direction relative to the reference point. (CDXBooleanImplied)
302
303
  // Reaction properties
304
  kCDXProp_ReactionStep_Atom_Map = 0x0C00,// 0x0C00 Represents pairs of mapped atom IDs; each pair is a reactant atom mapped to to a product atom. (CDXObjectIDArray)
305
  kCDXProp_ReactionStep_Reactants,    // 0x0C01 An order list of reactants present in the Reaction Step. (CDXObjectIDArray)
306
  kCDXProp_ReactionStep_Products,     // 0x0C02 An order list of products present in the Reaction Step. (CDXObjectIDArray)
307
  kCDXProp_ReactionStep_Plusses,      // 0x0C03 An ordered list of pluses used to separate components of the Reaction Step. (CDXObjectIDArray)
308
  kCDXProp_ReactionStep_Arrows,     // 0x0C04 An ordered list of arrows used to separate components of the Reaction Step. (CDXObjectIDArray)
309
  kCDXProp_ReactionStep_ObjectsAboveArrow,// 0x0C05 An order list of objects above the arrow in the Reaction Step. (CDXObjectIDArray)
310
  kCDXProp_ReactionStep_ObjectsBelowArrow,// 0x0C06 An order list of objects below the arrow in the Reaction Step. (CDXObjectIDArray)
311
  kCDXProp_ReactionStep_Atom_Map_Manual,  // 0x0C07 Represents pairs of mapped atom IDs; each pair is a reactant atom mapped to to a product atom. (CDXObjectIDArray)
312
  kCDXProp_ReactionStep_Atom_Map_Auto,  // 0x0C08 Represents pairs of mapped atom IDs; each pair is a reactant atom mapped to to a product atom. (CDXObjectIDArray)
313
314
  // CDObjectTag properties
315
  kCDXProp_ObjectTag_Type = 0x0D00,   // 0x0D00 The tag's data type. (INT16)
316
  kCDXProp_Unused6,           // 0x0D01 obsolete (obsolete)
317
  kCDXProp_Unused7,           // 0x0D02 obsolete (obsolete)
318
  kCDXProp_ObjectTag_Tracking,      // 0x0D03 The tag will participate in tracking if non-zero. (CDXBoolean)
319
  kCDXProp_ObjectTag_Persistent,      // 0x0D04 The tag will be resaved to a CDX file if non-zero. (CDXBoolean)
320
  kCDXProp_ObjectTag_Value,       // 0x0D05 The value is a INT32, FLOAT64 or unformatted string depending on the value of ObjectTag_Type. (varies)
321
  kCDXProp_Positioning,         // 0x0D06 How the indicator should be positioned with respect to its containing object. (INT8)
322
  kCDXProp_PositioningAngle,        // 0x0D07 Angular positioning, in radians * 65536. (INT32)
323
  kCDXProp_PositioningOffset,       // 0x0D08 Offset positioning. (CDXPoint2D)
324
325
  // CDSequence properties
326
  kCDXProp_Sequence_Identifier = 0x0E00,  // 0x0E00 A unique (but otherwise random) identifier for a given Sequence object. (CDXString)
327
328
  // CDCrossReference properties
329
  kCDXProp_CrossReference_Container = 0x0F00, // 0x0F00 An external object containing (as an embedded object) the document containing the Sequence object being referenced. (CDXString)
330
  kCDXProp_CrossReference_Document,   // 0x0F01 An external document containing the Sequence object being referenced. (CDXString)
331
  kCDXProp_CrossReference_Identifier,   // 0x0F02 A unique (but otherwise random) identifier for a given Cross-Reference object. (CDXString)
332
  kCDXProp_CrossReference_Sequence,   // 0x0F03 A value matching the SequenceIdentifier of the Sequence object to be referenced. (CDXString)
333
334
  // Miscellaneous properties.
335
  kCDXProp_Template_PaneHeight = 0x1000,  // 0x1000 The height of the viewing window of a template grid. (CDXCoordinate)
336
  kCDXProp_Template_NumRows,        // 0x1001 The number of rows of the CDX TemplateGrid object. (INT16)
337
  kCDXProp_Template_NumColumns,     // 0x1002 The number of columns of the CDX TemplateGrid object. (INT16)
338
339
  kCDXProp_Group_Integral = 0x1100,   // 0x1100 The group is considered to be integral (non-subdivisible) if non-zero. (CDXBoolean)
340
341
  kCDXProp_SplitterPositions = 0x1ff0,  // 0x1FF0 An array of vertical positions that subdivide a page into regions. (CDXObjectIDArray)
342
  kCDXProp_PageDefinition,        // 0x1FF1 An array of vertical positions that subdivide a page into regions. (CDXObjectIDArray)
343
344
  // User defined properties
345
  // First 1024 tags are reserved for temporary tags used only during the runtime.
346
  kCDXUser_TemporaryBegin = kCDXTag_UserDefined,
347
  kCDXUser_TemporaryEnd = kCDXTag_UserDefined + 0x0400,
348
349
  // Objects.
350
  kCDXObj_Document = kCDXTag_Object,  // 0x8000
351
  kCDXObj_Page,           // 0x8001
352
  kCDXObj_Group,            // 0x8002
353
  kCDXObj_Fragment,         // 0x8003
354
  kCDXObj_Node,           // 0x8004
355
  kCDXObj_Bond,           // 0x8005
356
  kCDXObj_Text,           // 0x8006
357
  kCDXObj_Graphic,          // 0x8007
358
  kCDXObj_Curve,            // 0x8008
359
  kCDXObj_EmbeddedObject,       // 0x8009
360
  kCDXObj_NamedAlternativeGroup,    // 0x800a
361
  kCDXObj_TemplateGrid,       // 0x800b
362
  kCDXObj_RegistryNumber,       // 0x800c
363
  kCDXObj_ReactionScheme,       // 0x800d
364
  kCDXObj_ReactionStep,       // 0x800e
365
  kCDXObj_ObjectDefinition,     // 0x800f
366
  kCDXObj_Spectrum,         // 0x8010
367
  kCDXObj_ObjectTag,          // 0x8011
368
  kCDXObj_OleClientItem,        // 0x8012 // obsolete
369
  kCDXObj_Sequence,                   // 0x8013
370
  kCDXObj_CrossReference,             // 0x8014
371
  kCDXObj_Splitter,           // 0x8015
372
  kCDXObj_Table,              // 0x8016
373
  kCDXObj_BracketedGroup,       // 0x8017
374
  kCDXObj_BracketAttachment,      // 0x8018
375
  kCDXObj_CrossingBond,       // 0x8019
376
  kCDXObj_Border = 0x8020,            // 0x8020
377
  kCDXObj_Geometry,         // 0x8021
378
  kCDXObj_Constraint,         // 0x8022
379
  kCDXObj_TLCPlate,         // 0x8023
380
  kCDXObj_TLCLane,          // 0x8024
381
  kCDXObj_TLCSpot,          // 0x8025
382
  // Add new objects here
383
  kCDXObj_UnknownObject = 0x8FFF
384
};
385
386
enum CDXNodeType {
387
  kCDXNodeType_Unspecified,
388
  kCDXNodeType_Element,
389
  kCDXNodeType_ElementList,
390
  kCDXNodeType_ElementListNickname,
391
  kCDXNodeType_Nickname,
392
  kCDXNodeType_Fragment,
393
  kCDXNodeType_Formula,
394
  kCDXNodeType_GenericNickname,
395
  kCDXNodeType_AnonymousAlternativeGroup,
396
  kCDXNodeType_NamedAlternativeGroup,
397
  kCDXNodeType_MultiAttachment,
398
  kCDXNodeType_VariableAttachment,
399
  kCDXNodeType_ExternalConnectionPoint,
400
  kCDXNodeType_LinkNode
401
};
402
403
enum CDXLabelDisplay {
404
  kCDXLabelDisplay_Auto,
405
  kCDXLabelDisplay_Left,
406
  kCDXLabelDisplay_Center,
407
  kCDXLabelDisplay_Right,
408
  kCDXLabelDisplay_Above,
409
  kCDXLabelDisplay_Below,
410
  kCDXLabelDisplay_BestInitial
411
};
412
413
enum CDXRadical { // Same as MDL codes
414
  kCDXRadical_None        = 0,
415
  kCDXRadical_Singlet       = 1,  // diradical singlet  (two dots)
416
  kCDXRadical_Doublet       = 2,  // monoradical      (one dot)
417
  kCDXRadical_Triplet       = 3   // diradical triplet  (two dots)
418
};
419
420
enum CDXIsotope {
421
  kCDXIsotope_Natural       = 0
422
};
423
424
enum CDXRingBondCount {
425
  kCDXRingBondCount_Unspecified = -1,
426
  kCDXRingBondCount_NoRingBonds = 0,
427
  kCDXRingBondCount_AsDrawn   = 1,
428
  kCDXRingBondCount_SimpleRing  = 2,
429
  kCDXRingBondCount_Fusion    = 3,
430
  kCDXRingBondCount_SpiroOrHigher = 4
431
};
432
433
enum CDXUnsaturation {
434
  kCDXUnsaturation_Unspecified  = 0,
435
  kCDXUnsaturation_MustBeAbsent = 1,
436
  kCDXUnsaturation_MustBePresent  = 2,
437
  kCDXUnsaturationLastEnum
438
};
439
440
enum CDXReactionStereo {
441
  kCDXReactionStereo_Unspecified  = 0,
442
  kCDXReactionStereo_Inversion  = 1,
443
  kCDXReactionStereo_Retention  = 2
444
};
445
446
enum CDXTranslation {
447
  kCDXTranslation_Equal = 0,
448
  kCDXTranslation_Broad = 1,
449
  kCDXTranslation_Narrow  = 2,
450
  kCDXTranslation_Any   = 3
451
};
452
453
enum CDXAbundance {
454
  kCDXAbundance_Unspecified = 0,
455
  kCDXAbundance_Any     = 1,
456
  kCDXAbundance_Natural   = 2,
457
  kCDXAbundance_Enriched    = 3,
458
  kCDXAbundance_Deficient   = 4,
459
  kCDXAbundance_Nonnatural  = 5
460
};
461
462
enum CDXExternalConnectionType {
463
  kCDXExternalConnection_Unspecified  = 0,
464
  kCDXExternalConnection_Diamond    = 1,
465
  kCDXExternalConnection_Star     = 2,
466
  kCDXExternalConnection_PolymerBead  = 3,
467
  kCDXExternalConnection_Wavy     = 4
468
};
469
470
enum CDXAtomGeometry {
471
  kCDXAtomGeometry_Unknown        =  0,
472
  kCDXAtomGeometry_1Ligand        =  1,
473
  kCDXAtomGeometry_Linear         =  2,
474
  kCDXAtomGeometry_Bent         =  3,
475
  kCDXAtomGeometry_TrigonalPlanar     =  4,
476
  kCDXAtomGeometry_TrigonalPyramidal    =  5,
477
  kCDXAtomGeometry_SquarePlanar     =  6,
478
  kCDXAtomGeometry_Tetrahedral      =  7,
479
  kCDXAtomGeometry_TrigonalBipyramidal  =  8,
480
  kCDXAtomGeometry_SquarePyramidal    =  9,
481
  kCDXAtomGeometry_5Ligand        = 10,
482
  kCDXAtomGeometry_Octahedral       = 11,
483
  kCDXAtomGeometry_6Ligand        = 12,
484
  kCDXAtomGeometry_7Ligand        = 13,
485
  kCDXAtomGeometry_8Ligand        = 14,
486
  kCDXAtomGeometry_9Ligand        = 15,
487
  kCDXAtomGeometry_10Ligand       = 16
488
};
489
490
enum CDXBondOrder {
491
  kCDXBondOrder_Single    = 0x0001,
492
  kCDXBondOrder_Double    = 0x0002,
493
  kCDXBondOrder_Triple    = 0x0004,
494
  kCDXBondOrder_Quadruple   = 0x0008,
495
  kCDXBondOrder_Quintuple   = 0x0010,
496
  kCDXBondOrder_Sextuple    = 0x0020,
497
  kCDXBondOrder_Half      = 0x0040,
498
  kCDXBondOrder_OneHalf   = 0x0080,
499
  kCDXBondOrder_TwoHalf   = 0x0100,
500
  kCDXBondOrder_ThreeHalf   = 0x0200,
501
  kCDXBondOrder_FourHalf    = 0x0400,
502
  kCDXBondOrder_FiveHalf    = 0x0800,
503
  kCDXBondOrder_Dative    = 0x1000,
504
  kCDXBondOrder_Ionic     = 0x2000,
505
  kCDXBondOrder_Hydrogen    = 0x4000,
506
  kCDXBondOrder_ThreeCenter = 0x8000,
507
  kCDXBondOrder_SingleOrDouble = kCDXBondOrder_Single | kCDXBondOrder_Double,
508
  kCDXBondOrder_SingleOrAromatic = kCDXBondOrder_Single | kCDXBondOrder_OneHalf,
509
  kCDXBondOrder_DoubleOrAromatic = kCDXBondOrder_Double | kCDXBondOrder_OneHalf,
510
  kCDXBondOrder_Any = -1
511
};
512
// Permit combination of CDXBondOrder values
513
inline CDXBondOrder &operator |= (CDXBondOrder &lhs, const CDXBondOrder &rhs)
514
0
{
515
0
  return lhs = CDXBondOrder(UINT32(lhs) | UINT32(rhs));
516
0
}
517
518
enum CDXBondDisplay {
519
  kCDXBondDisplay_Solid       =  0,
520
  kCDXBondDisplay_Dash        =  1,
521
  kCDXBondDisplay_Hash        =  2,
522
  kCDXBondDisplay_WedgedHashBegin   =  3,
523
  kCDXBondDisplay_WedgedHashEnd   =  4,
524
  kCDXBondDisplay_Bold        =  5,
525
  kCDXBondDisplay_WedgeBegin      =  6,
526
  kCDXBondDisplay_WedgeEnd      =  7,
527
  kCDXBondDisplay_Wavy        =  8,
528
  kCDXBondDisplay_HollowWedgeBegin  =  9,
529
  kCDXBondDisplay_HollowWedgeEnd    = 10,
530
  kCDXBondDisplay_WavyWedgeBegin    = 11,
531
  kCDXBondDisplay_WavyWedgeEnd    = 12,
532
  kCDXBondDisplay_Dot         = 13,
533
  kCDXBondDisplay_DashDot       = 14
534
};
535
536
enum CDXBondDoublePosition {
537
  kCDXBondDoublePosition_AutoCenter = 0x0000,
538
  kCDXBondDoublePosition_AutoRight  = 0x0001,
539
  kCDXBondDoublePosition_AutoLeft   = 0x0002,
540
  kCDXBondDoublePosition_UserCenter = 0x0100,
541
  kCDXBondDoublePosition_UserRight  = 0x0101,
542
  kCDXBondDoublePosition_UserLeft   = 0x0102
543
};  
544
    
545
enum CDXBondTopology {
546
  kCDXBondTopology_Unspecified  = 0,
547
  kCDXBondTopology_Ring     = 1,
548
  kCDXBondTopology_Chain      = 2,
549
  kCDXBondTopology_RingOrChain  = 3
550
};
551
552
enum CDXBondReactionParticipation {
553
  kCDXBondReactionParticipation_Unspecified   = 0,
554
  kCDXBondReactionParticipation_ReactionCenter  = 1,
555
  kCDXBondReactionParticipation_MakeOrBreak   = 2,
556
  kCDXBondReactionParticipation_ChangeType    = 3,
557
  kCDXBondReactionParticipation_MakeAndChange   = 4,
558
  kCDXBondReactionParticipation_NotReactionCenter = 5,
559
  kCDXBondReactionParticipation_NoChange      = 6,
560
  kCDXBondReactionParticipation_Unmapped      = 7
561
};
562
563
enum CDXTextJustification {
564
  kCDXTextJustification_Right = -1,
565
  kCDXTextJustification_Left,
566
  kCDXTextJustification_Center,
567
  kCDXTextJustification_Full,
568
  kCDXTextJustification_Above,
569
  kCDXTextJustification_Below,
570
  kCDXTextJustification_Auto,
571
  kCDXTextJustification_BestInitial
572
};
573
574
#define kCDXTagType_Unknown     "unknown"
575
#define kCDXTagType_Query     "query"
576
#define kCDXTagType_Rxn       "reaction"
577
#define kCDXTagType_Stereo      "stereo"
578
#define kCDXTagType_Number      "number"
579
#define kCDXTagType_Heading     "heading"
580
#define kCDXTagType_IDTerm      "idterm"
581
#define kCDXTagType_BracketUsage  "bracketusage"
582
#define kCDXTagType_PolymerRepeat "polymerrepeat"
583
#define kCDXTagType_PolymerFlip   "polymerflip"
584
#define kCDXTagType_Deviation   "deviation"
585
#define kCDXTagType_Distance    "distance"
586
#define kCDXTagType_Angle     "angle"
587
#define kCDXTagType_Rf        "rf"
588
589
enum CDXPositioningType {
590
  kCDXPositioningType_Auto = 0,
591
  kCDXPositioningType_Angle,
592
  kCDXPositioningType_Offset,
593
  kCDXPositioningType_Absolute
594
};
595
596
enum CDXPageDefinition {
597
  kCDXPageDefinition_Undefined = 0,
598
  kCDXPageDefinition_Center,
599
  kCDXPageDefinition_TL4,
600
  kCDXPageDefinition_IDTerm,
601
  kCDXPageDefinition_FlushLeft,
602
  kCDXPageDefinition_FlushRight,
603
  kCDXPageDefinition_Reaction1,
604
  kCDXPageDefinition_Reaction2,
605
  kCDXPageDefinition_MulticolumnTL4,
606
  kCDXPageDefinition_MulticolumnNonTL4,
607
  kCDXPageDefinition_UserDefined
608
};
609
610
#define kCDXLineHeight_Variable  0
611
#define kCDXLineHeight_Automatic 1
612
613
enum CDXGraphicType {
614
  kCDXGraphicType_Undefined = 0,
615
  kCDXGraphicType_Line,
616
  kCDXGraphicType_Arc,
617
  kCDXGraphicType_Rectangle,
618
  kCDXGraphicType_Oval,
619
  kCDXGraphicType_Orbital,
620
  kCDXGraphicType_Bracket,
621
  kCDXGraphicType_Symbol
622
};
623
624
enum CDXBracketType
625
{
626
  kCDXBracketType_RoundPair,
627
  kCDXBracketType_SquarePair,
628
  kCDXBracketType_CurlyPair,
629
  kCDXBracketType_Square,
630
  kCDXBracketType_Curly,
631
  kCDXBracketType_Round
632
};
633
634
enum CDXRectangleType
635
{
636
  kCDXRectangleType_Plain = 0x0000,
637
  kCDXRectangleType_RoundEdge = 0x0001,
638
  kCDXRectangleType_Shadow = 0x0002,
639
  kCDXRectangleType_Shaded = 0x0004,
640
  kCDXRectangleType_Filled = 0x0008,
641
  kCDXRectangleType_Dashed = 0x0010,
642
  kCDXRectangleType_Bold = 0x0020
643
};
644
645
enum CDXOvalType
646
{
647
  kCDXOvalType_Circle = 0x0001,
648
  kCDXOvalType_Shaded = 0x0002,
649
  kCDXOvalType_Filled = 0x0004,
650
  kCDXOvalType_Dashed = 0x0008,
651
  kCDXOvalType_Bold   = 0x0010,
652
  kCDXOvalType_Shadowed   = 0x0020
653
};
654
655
enum CDXSymbolType
656
{
657
  kCDXSymbolType_LonePair,
658
  kCDXSymbolType_Electron,
659
  kCDXSymbolType_RadicalCation,
660
  kCDXSymbolType_RadicalAnion,
661
  kCDXSymbolType_CirclePlus,
662
  kCDXSymbolType_CircleMinus,
663
  kCDXSymbolType_Dagger,
664
  kCDXSymbolType_DoubleDagger,
665
  kCDXSymbolType_Plus,
666
  kCDXSymbolType_Minus,
667
  kCDXSymbolType_Racemic,
668
  kCDXSymbolType_Absolute,
669
  kCDXSymbolType_Relative
670
};
671
672
enum CDXLineType
673
{
674
  kCDXLineType_Solid  = 0x0000,
675
  kCDXLineType_Dashed = 0x0001,
676
  kCDXLineType_Bold = 0x0002,
677
  kCDXLineType_Wavy = 0x0004
678
};
679
680
enum CDXArrowType
681
{
682
  kCDXArrowType_NoHead      =  0,
683
  kCDXArrowType_HalfHead      =  1,
684
  kCDXArrowType_FullHead      =  2,
685
  kCDXArrowType_Resonance     =  4,
686
  kCDXArrowType_Equilibrium   =  8,
687
  kCDXArrowType_Hollow      = 16,
688
  kCDXArrowType_RetroSynthetic  = 32
689
};
690
691
enum CDXOrbitalType
692
{
693
  kCDXOrbitalType_s,          // s orbital
694
  kCDXOrbitalType_oval,       // Oval-shaped sigma or pi orbital
695
  kCDXOrbitalType_lobe,       // One lobe of a p orbital
696
  kCDXOrbitalType_p,          // Complete p orbital
697
  kCDXOrbitalType_hybridPlus,     // hydrid orbital
698
  kCDXOrbitalType_hybridMinus,    // hydrid orbital (opposite shading)
699
  kCDXOrbitalType_dz2Plus,      // dz2 orbital
700
  kCDXOrbitalType_dz2Minus,     // dz2 orbital (opposite shading)
701
  kCDXOrbitalType_dxy,        // dxy orbital
702
703
  kCDXOrbitalType_sShaded = 0x0100, // shaded s orbital
704
  kCDXOrbitalType_ovalShaded,     // shaded Oval-shaped sigma or pi orbital
705
  kCDXOrbitalType_lobeShaded,     // shaded single lobe of a p orbital
706
  kCDXOrbitalType_pShaded,      // shaded Complete p orbital
707
  
708
  kCDXOrbitalType_sFilled = 0x0200, // filled s orbital
709
  kCDXOrbitalType_ovalFilled,     // filled Oval-shaped sigma or pi orbital
710
  kCDXOrbitalType_lobeFilled,     // filled single lobe of a p orbital
711
  kCDXOrbitalType_pFilled,      // filled Complete p orbital
712
  kCDXOrbitalType_hybridPlusFilled, // filled hydrid orbital
713
  kCDXOrbitalType_hybridMinusFilled,  // filled hydrid orbital (opposite shading)
714
  kCDXOrbitalType_dz2PlusFilled,    // filled dz2 orbital
715
  kCDXOrbitalType_dz2MinusFilled,   // filled dz2 orbital (opposite shading)
716
  kCDXOrbitalType_dxyFilled     // filled dxy orbital
717
718
};
719
720
enum CDXBracketUsage
721
{
722
  kCDXBracketUsage_Unspecified = 0,
723
  kCDXBracketUsage_Anypolymer = 18,
724
  kCDXBracketUsage_Component = 13,
725
  kCDXBracketUsage_Copolymer = 6,
726
  kCDXBracketUsage_CopolymerAlternating = 7,
727
  kCDXBracketUsage_CopolymerBlock = 9,
728
  kCDXBracketUsage_CopolymerRandom = 8,
729
  kCDXBracketUsage_Crosslink = 10,
730
  kCDXBracketUsage_Generic = 17,
731
  kCDXBracketUsage_Graft = 11,
732
  kCDXBracketUsage_Mer = 5,
733
  kCDXBracketUsage_MixtureOrdered = 15,
734
  kCDXBracketUsage_MixtureUnordered = 14,
735
  kCDXBracketUsage_Modification = 12,
736
  kCDXBracketUsage_Monomer = 4,
737
  kCDXBracketUsage_MultipleGroup = 16,
738
  kCDXBracketUsage_SRU = 3,
739
  kCDXBracketUsage_Unused1 = 1,
740
  kCDXBracketUsage_Unused2 = 2
741
};
742
743
enum CDXPolymerRepeatPattern
744
{
745
  kCDXPolymerRepeatPattern_HeadToTail = 0,
746
  kCDXPolymerRepeatPattern_HeadToHead,
747
  kCDXPolymerRepeatPattern_EitherUnknown
748
};
749
750
enum CDXPolymerFlipType
751
{
752
  kCDXPolymerFlipType_Unspecified = 0,
753
  kCDXPolymerFlipType_NoFlip,
754
  kCDXPolymerFlipType_Flip
755
};
756
757
enum CDXSpectrumYType
758
{
759
  kCDXSpectrumYType_Unknown,
760
  kCDXSpectrumYType_Absorbance, 
761
  kCDXSpectrumYType_Transmittance, 
762
  kCDXSpectrumYType_PercentTransmittance, 
763
  kCDXSpectrumYType_Other, 
764
  kCDXSpectrumYType_ArbitraryUnits
765
};
766
767
enum CDXSpectrumXType
768
{
769
  kCDXSpectrumXType_Unknown,
770
  kCDXSpectrumXType_Wavenumbers,
771
  kCDXSpectrumXType_Microns,
772
  kCDXSpectrumXType_Hertz,
773
  kCDXSpectrumXType_MassUnits,
774
  kCDXSpectrumXType_PartsPerMillion,
775
  kCDXSpectrumXType_Other
776
};
777
778
enum CDXSpectrumClass
779
{
780
  kCDXSpectrumClass_Unknown,
781
  kCDXSpectrumClass_Chromatogram,
782
  kCDXSpectrumClass_Infrared,
783
  kCDXSpectrumClass_UVVis,
784
  kCDXSpectrumClass_XRayDiffraction,
785
  kCDXSpectrumClass_MassSpectrum,
786
  kCDXSpectrumClass_NMR,
787
  kCDXSpectrumClass_Raman,
788
  kCDXSpectrumClass_Fluorescence,
789
  kCDXSpectrumClass_Atomic
790
};
791
792
enum CDXDrawingSpaceType
793
{
794
  kCDXDrawingSpace_Pages,
795
  kCDXDrawingSpace_Poster
796
};
797
798
enum CDXAtomCIPType
799
{
800
  kCDXCIPAtom_Undetermined      = 0,
801
  kCDXCIPAtom_None,
802
  kCDXCIPAtom_R,
803
  kCDXCIPAtom_S,
804
  kCDXCIPAtom_r,
805
  kCDXCIPAtom_s,
806
  kCDXCIPAtom_Unspecified           // No hash/wedge, but if there were one, it would have stereochemistry.
807
};
808
809
enum CDXBondCIPType
810
{
811
  kCDXCIPBond_Undetermined      = 0,
812
  kCDXCIPBond_None,
813
  kCDXCIPBond_E,
814
  kCDXCIPBond_Z
815
};
816
817
enum CDXObjectTagType
818
{
819
  kCDXObjectTagType_Undefined     = 0,
820
  kCDXObjectTagType_Double,
821
  kCDXObjectTagType_Long,
822
  kCDXObjectTagType_String
823
};
824
825
enum CDXSideType
826
{
827
  kCDXSideType_Undefined        = 0,
828
  kCDXSideType_Top,
829
  kCDXSideType_Left,
830
  kCDXSideType_Bottom,
831
  kCDXSideType_Right
832
};
833
834
enum CDXGeometricFeature
835
{
836
  kCDXGeometricFeature_Undefined        = 0,
837
  kCDXGeometricFeature_PointFromPointPointDistance,
838
  kCDXGeometricFeature_PointFromPointPointPercentage,
839
  kCDXGeometricFeature_PointFromPointNormalDistance,
840
  kCDXGeometricFeature_LineFromPoints,
841
  kCDXGeometricFeature_PlaneFromPoints,
842
  kCDXGeometricFeature_PlaneFromPointLine,
843
  kCDXGeometricFeature_CentroidFromPoints,
844
  kCDXGeometricFeature_NormalFromPointPlane
845
};
846
847
enum CDXConstraintType
848
{
849
  kCDXConstraintType_Undefined      = 0,
850
  kCDXConstraintType_Distance,
851
  kCDXConstraintType_Angle,
852
  kCDXConstraintType_ExclusionSphere
853
};
854
855
enum CDXCharSet
856
{
857
  kCDXCharSetUnknown = 0,
858
  kCDXCharSetEBCDICOEM = 37,
859
  kCDXCharSetMSDOSUS = 437,
860
  kCDXCharSetEBCDIC500V1 = 500,
861
  kCDXCharSetArabicASMO708 = 708,
862
  kCDXCharSetArabicASMO449P,
863
  kCDXCharSetArabicTransparent,
864
  kCDXCharSetArabicTransparentASMO = 720,
865
  kCDXCharSetGreek437G = 737,
866
  kCDXCharSetBalticOEM = 775,
867
  kCDXCharSetMSDOSLatin1 = 850,
868
  kCDXCharSetMSDOSLatin2 = 852,
869
  kCDXCharSetIBMCyrillic = 855,
870
  kCDXCharSetIBMTurkish = 857,
871
  kCDXCharSetMSDOSPortuguese = 860,
872
  kCDXCharSetMSDOSIcelandic,
873
  kCDXCharSetHebrewOEM,
874
  kCDXCharSetMSDOSCanadianFrench,
875
  kCDXCharSetArabicOEM,
876
  kCDXCharSetMSDOSNordic,
877
  kCDXCharSetMSDOSRussian,
878
  kCDXCharSetIBMModernGreek = 869,
879
  kCDXCharSetThai = 874,
880
  kCDXCharSetEBCDIC,
881
  kCDXCharSetJapanese = 932,
882
  kCDXCharSetChineseSimplified = 936, // PRC, Singapore
883
  kCDXCharSetKorean = 949,
884
  kCDXCharSetChineseTraditional = 950, // Taiwan, Hong Kong
885
  kCDXCharSetUnicodeISO10646 = 1200,
886
  kCDXCharSetWin31EasternEuropean = 1250,
887
  kCDXCharSetWin31Cyrillic,
888
  kCDXCharSetWin31Latin1,
889
  kCDXCharSetWin31Greek,
890
  kCDXCharSetWin31Turkish,
891
  kCDXCharSetHebrew,
892
  kCDXCharSetArabic,
893
  kCDXCharSetBaltic,
894
  kCDXCharSetVietnamese,
895
  kCDXCharSetKoreanJohab = 1361,
896
  kCDXCharSetMacRoman = 10000,
897
  kCDXCharSetMacJapanese,
898
  kCDXCharSetMacTradChinese,
899
  kCDXCharSetMacKorean,
900
  kCDXCharSetMacArabic,
901
  kCDXCharSetMacHebrew,
902
  kCDXCharSetMacGreek,
903
  kCDXCharSetMacCyrillic,
904
  kCDXCharSetMacReserved,
905
  kCDXCharSetMacDevanagari,
906
  kCDXCharSetMacGurmukhi,
907
  kCDXCharSetMacGujarati,
908
  kCDXCharSetMacOriya,
909
  kCDXCharSetMacBengali,
910
  kCDXCharSetMacTamil,
911
  kCDXCharSetMacTelugu,
912
  kCDXCharSetMacKannada,
913
  kCDXCharSetMacMalayalam,
914
  kCDXCharSetMacSinhalese,
915
  kCDXCharSetMacBurmese,
916
  kCDXCharSetMacKhmer,
917
  kCDXCharSetMacThai,
918
  kCDXCharSetMacLao,
919
  kCDXCharSetMacGeorgian,
920
  kCDXCharSetMacArmenian,
921
  kCDXCharSetMacSimpChinese,
922
  kCDXCharSetMacTibetan,
923
  kCDXCharSetMacMongolian,
924
  kCDXCharSetMacEthiopic,
925
  kCDXCharSetMacCentralEuroRoman,
926
  kCDXCharSetMacVietnamese,
927
  kCDXCharSetMacExtArabic,
928
  kCDXCharSetMacUninterpreted,
929
  kCDXCharSetMacIcelandic = 10079,
930
  kCDXCharSetMacTurkish = 10081
931
};
932
933
#endif // _H_CDXConstants