OCAD 12 File Format: Difference between revisions
Line 75: | Line 75: | ||
|} | |} | ||
<nowiki> TFileHeader = record // Size = 48 Byte | <nowiki> TFileHeader = record // Size = 48 Byte<br /> | ||
:OCADMark: SmallInt; // 3245 (hex 0cad) | :OCADMark: SmallInt; // 3245 (hex 0cad)<br /> | ||
:FileType: Byte; // File type | :FileType: Byte; // File type<br /> | ||
// 0: normal map | // 0: normal map<br /> | ||
// 1: course setting project | // 1: course setting project<br /> | ||
// 3: OCAD 8 course setting project | // 3: OCAD 8 course setting project<br /> | ||
:FileStatus: Byte; // Not used | :FileStatus: Byte; // Not used<br /> | ||
:Version: SmallInt; // 10 | :Version: SmallInt; // 10<br /> | ||
:Subversion: Byte; // number of subversion (0 for 10.00, 1 for 10.1 etc.) | :Subversion: Byte; // number of subversion (0 for 10.00, 1 for 10.1 etc.) | ||
:SubSubversion: Byte; // number of subsubversion (0 for 10.0.0, 1 for 10.0.1) | :SubSubversion: Byte; // number of subsubversion (0 for 10.0.0, 1 for 10.0.1) |
Revision as of 17:34, 9 February 2012
Version: 2012-02-09
General
This is a description of the file format of OCAD 11 files.
Be aware that this is an internal format and may change in future versions.
Data types used
OCAD is written in 32-bit Delphi and this description uses the names for the data types as they appear in Delphi. However the same data types are available in other development systems like C++.
Integer | 32-bit signed integer |
SmallInt | 16-bit signed integer |
Word | 16-bit unsigned integer |
WordBool | 16-bit boolean |
String[x] |
Pascal-style string. The first byte contains the number of characters followed by the characters. The string is not zero-terminated. The maximum number of characters is x. It occupies x + 1 bytes in the file. |
Double | 64-bit floating point number |
TDPoly | A special data type (64-bit) used for all coordinates and text. It is defined as
TDPoly = record The lowest 8 Bits are used to mark special points: Marks for the x-coordinate: Marks for y-coordinate: The upper 24 bits contain the coordinate value measured in units of 0.01 mm. |
Note: all file positions are in bytes starting from the beginning of the file.
File Header
OCAD files start with a file header.
TFileHeader = record | // Size = 48 Byte |
---|---|
OCADMark: SmallInt; | Example |
FileType: Byte; | Example |
FileStatus: Byte; | Example |
Version: SmallInt; | Example |
Subversion: Byte; | number of subversion (0 for 10.00, 1 for 10.1 etc.) |
SubSubversion: Byte; | number of subsubversion (0 for 10.0.0, 1 for 10.0.1) |
FirstSymbolIndexBlock: integer; | file position of the first symbol index block |
ObjectIndexBlk: integer; | file position of object index block -> TObjectIndexBlock // max 65536 * 256 objects |
Example | Example |
Example | Example |
TFileHeader = record // Size = 48 Byte<br /> :OCADMark: SmallInt; // 3245 (hex 0cad)<br /> :FileType: Byte; // File type<br /> // 0: normal map<br /> // 1: course setting project<br /> // 3: OCAD 8 course setting project<br /> :FileStatus: Byte; // Not used<br /> :Version: SmallInt; // 10<br /> :Subversion: Byte; // number of subversion (0 for 10.00, 1 for 10.1 etc.) :SubSubversion: Byte; // number of subsubversion (0 for 10.0.0, 1 for 10.0.1) :FirstSymbolIndexBlock: integer; // file position of the first symbol index block :ObjectIndexBlk: integer; // file position of object index block -> TObjectIndexBlock // max 65536 * 256 objects Res0: integer; // Not used Res1: integer; // Not used Res2: longint; // Not used Res3: longint; // Not used FirstStringIndexBlk: longint; // file position of string index block -> TStringIndexBlock // max 256 strings FileNamePos: integer; // file position of file name, used for temporary files only FileNameSize: integer; // size of the file name, used for temporary files only Res4: longint; // Not used end;