OCAD 11 Dateiformat

Aus OCAD 11 Wiki - Deutsch
Zur Navigation springen Zur Suche springen
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

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]

Widestring. 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
x, y: integer;
end;

The lowest 8 Bits are used to mark special points:

Marks for the x-coordinate:
1: this point is the first bezier curve point
2: this point is the second bezier curve point
4: for double lines: there is no left line between this point and the next point
8: this point is a area border line or a virtual line gap

Marks for y-coordinate:
1: this point is a corner point
2: this point is the first point of a hole in an area
4: for double lines: there is no right line between this point and the next point
8: this point is a dash point

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; 3245 (hex 0cad)
FileType: Byte; file type (0: normal map, 1: course setting project)
FileStatus: Byte; not used
Version: SmallInt; 11
Subversion: Byte; number of subversion (0 for 11.00, 1 for 11.1 etc.)
SubSubversion: Byte; number of subsubversion (0 for 11.0.0, 1 for 11.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: integer; not used
Res3: integer; 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

Symbols

TODO

Objects

TODO

Parameter Strings

TODO