// _EUF_FileFormat.h : コモンヘッダ // ///////////////////////////////////////////////////////////////////////////// // // Program by Mitsuhiro Shirai // E-mail shirai@as.email.ne.jp // // EUFのフォーマットに関わる設定 // Last update 2004.01.22 // ///////////////////////////////////////////////////////////////////////////// #if !defined(__EUF_FILE_FORMAT_H__) #define __EUF_FILE_FORMAT_H__ // EUFは、完全に解析していないので、SPACE_XX.EUF ファイル(E000に空白1つの外字) // の利用を前提にロジックを作成している // EUFと認識するためのタグ #define EUF_FILE_TAG "Windows EUDC Editor Bitmap File (Uni-Code)" // 構造体の定義をバイト境界で利用するためのプラグマ #pragma pack( push, before_include1 ) #pragma pack(1) // EUFの先頭部分を読み込み、外字ビットマップ管理テーブルの先頭を見つける定義体 typedef struct EUF_DATA_HEAD { BYTE head1[98]; // Windows EUDtor Bitmap (Uni-Code).. // 0x004A〜2バイトに開始コード(0xE0,0x00) // 0x004C〜4バイトに終了コード(0xF8,0xFF) UINT bitmapTblAddr; // ビットマップ管理テーブルヘッダの開始アドレス+6(4バイト) // この後ろに開始コード〜終了コードの2バイト値が続く // 0x00,0xE0 - 0x01,0x0E - 0x02,0x0E - ... 0xFF,0xF8 // 更にこの後ろにダミーのバイトもあるが未解析 // そして、ビットマップ管理テーブルが続く } EUF_DATA_HEAD; // EUFのビットマップ管理テーブルヘッダ定義体 (bitmapTblAddr値−6バイトの位置) typedef struct EUF_BITMAP_TBL { USHORT startCode; // 外字の開始コード Unicode(2バイト) USHORT endCode; // 外字の終了コード Unicode(2バイト) BYTE unclear_0[2]; // 未解析(2バイト) UINT nextWriteAddr; // 次に書き込むビットマップ開始アドレス(4バイト) BYTE unclear_1[4]; // 未解析(4バイト) UINT firstAddr; // 最初のビットマップアドレス(4バイト) BYTE unclear_2[2]; // 未解析(2バイト) // これ以降は↓ // ビットマップのアドレステーブル(4バイト×(0xF8FF-0xE000)件) // これは、 0xE000〜0xF8FF の並びで、未使用アドレスには // 0x0000 が代入されている // 更にこの後ろにダミーのバイトもあるが未解析 // そして、ビットマップデータが続く } EUF_BITMAP_TBL; // EUFのビットマップヘッダ定義体 typedef struct EUF_BITMAP_DATA { UINT dataLen; // データ長(4バイト) USHORT bitmapSizeX; // ビットマップサイズ(2バイト) USHORT bitmapSizeY; // ビットマップサイズ(2バイト) // これ以降は↓ // ビットマップ // (bitmapSize × bitmapSize ÷ 8 バイト) } EUF_BITMAP_DATA; #pragma pack( push, before_include1 ) #endif // !defined(__EUF_FILE_FORMAT_H__)