+typedef enum dmFileImageDataType {
+ dmFileImageDataTypeInt2 = 1,
+ dmFileImageDataTypeReal4 = 2,
+ dmFileImageDataTypeComplex8 = 3,
+ dmFileImageDataTypeUnknown = 4,
+ dmFileImageDataTypePackedComplex = 5,
+ dmFileImageDataTypeUInt1 = 6,
+ dmFileImageDataTypeInt4 = 7,
+ dmFileImageDataTypeRGBInt4 = 8,
+ dmFileImageDataTypeInt1 = 9,
+ dmFileImageDataTypeUInt2 = 10,
+ dmFileImageDataTypeUInt4 = 11,
+ dmFileImageDataTypeReal8 = 12,
+ dmFileImageDataTypeComplex16= 13,
+ dmFileImageDataTypeBool1 = 14,
+ dmFileImageDataTypeIRGInt4Thumnail = 23
+} dmFileImageDataType;
+
+static size_t __dmFileImageDataTypeSize[] = {
+ 0, 2, 3, 8, 0, 4, 1, 4,
+ 4, 1, 2, 4, 6, 16, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 4
+};
+
+static size_t __dmFileTagDataTypeSize[] = {
+ 0, 0, 2, 4, 2, 4, 4, 8,
+ 1, 1, 1, 8, 8, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/*
+static char* __dmFileTagDataTypeFormat[] = {
+ 0, 0, "%d", "%d", "%u", "%u", "%f", "%f",
+ "%d", "%c", "%d", "%lld", "%llu", 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+};
+*/
+
+static char* __dmFileTagDataTypeFormat[] = {
+ 0, 0, "%#0x", "%#0x", "%#0X", "%#0X", "%f", "%f",
+ "%#0x", "%c", "%#0x", "%#0x", "%#0llX", 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+
+static char* __dmFileTagDataTypeChar[] = {
+ "", "", "Int2", "Int4", "UInt2", "UInt4", "Real4", "Real8",
+"Bool1", "Char1", "Int1", "Int8", "UInt8", "", "", "Struct",
+ "", "", "String", "", "Array", "Tags", "", ""
+};
+
+
+
+// Header
+typedef struct dmFile3Header {