開発者向け、ViXのカタログファイルの仕様です。
カタログファイル1個が1つのフォルダに対応します。
特に断りのない限り、2バイト以上の数値のバイトオーダーはリトルインディアン、文字列はシフトJISで'\0'で終了、整数は符号なし、画像の幅の単位はドットです。
カタログファイルは、通常のファイルシステムで読み込めるフォルダについてのみ作成されます。「マイコンピュータ」のようなシステムフォルダには作成してはいけません。
カタログファイルは、画像ファイルがあるのと同じフォルダ、ホームフォルダのどちらに作成しても構いませんが、読み出すときはそのどちらにあっても読み出せるようにしなくてはいけません。
カタログファイルのファイル名は、通常「_CATALOG.VIX」ですが、ホームフォルダ下のカタログファイルには「0000ffff.VIX」のように、8桁の16進数のファイル名がつけられます。この16進数は、検索速度の都合上可能な限り連番でなくてはなりません。
ViXのカタログファイルは、次のような構成になっています。
ID
ファイルヘッダ
カタログデータ1
カタログデータ2
……
カタログデータn
IDは4バイトで、「0x56 0x69 0x58 0x20」です。
ファイルヘッダは、次のような構成になっています。
ファイルヘッダ スタートマーカー
フィールド1
フィールド2
……
フィールドn
ファイルヘッダ エンドマーカー
ファイルヘッダ スタートマーカーは2バイト整数で 0xff00 です。
ファイルヘッダ エンドマーカーは2バイト整数で 0xff01 です。
フィールドについては後述します。
1つの画像について、1つのカタログデータがあります。カタログデータには縮小画像本体の他、さまざまな情報が含まれています。
カタログデータは次のように、ファイルヘッダと似た構成になっています。
カタログデータ スタートマーカー
フィールド1
フィールド2
……
フィールドn
カタログデータ エンドマーカー
カタログデータ スタートマーカーは2バイト整数で 0x0001 です。
カタログデータ エンドマーカーは2バイト整数で 0x0002 です。
フィールドについては後述します。
フィールドは任意長の何らかのデータであり、次のような構成です。
マーカー
データ長
データ フィールド
マーカーは2バイトの整数で、データ
フィールドの種類を表します。データ長は4バイトの整数で、データ
フィールドの長さをバイトで表します。
以下で、フィールドのデータフィールド中にどんなデータが入るかを、マーカーごとに説明します。
(任意)と書いてなければ、そのフィールドは必ずカタログデータ内になくてはなりません。それ以外のものは任意フィールドです。
特に断りのない限り、あるフィールドはカタログデータ1つの中に1個だけです。
マーカー | 名称 | データフィールドの意味 |
---|---|---|
0x0003 | ファイル名 | 画像の、フォルダ名を除いたファイル名です。画像が書庫ファイル内にあるときは、書庫ファイルの名前です。 |
0x0004 | 書庫内ファイル名 | 画像が書庫ファイルの中にあるときは必須です。画像の書庫の中でのファイル名です。 |
0x0005 | コメント(任意) | 任意長の文字列であり、画像についてのコメントです。最大で65536バイトまでです。 |
0x0006 | キーワード(任意) | 任意長の文字列であり、画像についてのキーワードです。このフィールドはカタログデータ内に何個現れても構いません。1つのキーワードは最大1024バイトまでです。 |
0x0007 | データタイプ | 4バイト整数で、現在は1(画像)で固定です。 |
0x0008 | 縮小画像タイプ | 4バイト整数で、現在は0(JPEG)で固定です。 |
0x0009 | 元の画像情報 | 3つの4バイト整数が入っており、先頭から画像の横幅、縦幅、ビット深さを表します。 |
0x000A | 縮小画像情報 | 3つの4バイト整数が入っており、先頭から縮小画像の横幅、縦幅、ビット深さを表します。 |
0x000B | 縮小画像作成日時 | 縮小画像を作成した日時です。画像ファイルのタイムスタンプと比較して、元画像と縮小画像が異なっているかどうか調べることができるでしょう。 2バイト整数が1つ、1バイト整数が5つ入っており、先頭からそれぞれ年、月、日、時、分、秒を表します。 |
0x000C | カタログデータサイズ | 4バイトの整数で、このフィールドが属するカタログデータのサイズをバイト数で表します。 |
0x000D | 縮小画像 | 縮小画像本体が入ります。格納形式は縮小画像タイプのフィールドに記述されています。 現在格納形式はJPEGのみで、その縮小画像をJPEGで保存したときのファイルイメージがそのまま入ります。 |
0x000E | 更新日時(任意) | ファイルの更新日時です。日時の記録形式は縮小画像作成日時と同じです。 |
0x000F | ユーザー定義キー(任意) | ユーザーが任意に定義・記録できるキーです。このフィールドは1つカタログデータ内に何個現れても構いません。
この数値はWindowsのVARIANT構造体のvtメンバに入る数値(VT_I4, VT_DATE, VT_BSTRなど)に対応しています。 |
0xff02 | フォルダ | このフィールドはファイルヘッダにのみ存在します。 カタログファイルに対応するフォルダ名が入ります。現在、ViXではこれを参照していません。 |
0xff03 | ボリュームラベル | このフィールドはファイルヘッダにのみ存在します。 カタログファイルに対応するドライブの、ボリュームラベルが入ります。現在、ViXではこれを参照していません。 |
書き込み不能なフォルダに対するカタログファイルが作成されたときは、フォルダとカタログファイルとの対応が、ホームフォルダにある「catalogTable.xml」というテーブルファイルにXMLの仕様にのっとり記録されます。
catalogFile要素の下にtargetPathとvolumeNameの各要素があり、それぞれカタログファイルを作成したフォルダ、そのフォルダのあるディスクのボリューム名を表します。targetPathに記録されるフォルダ名にはドライブ名も入れますが、対応を調べるときにはドライブ名は無視せねばなりません。(メディアが異なるドライブに入れられた場合に対処するため) 例えば、「E:\Images\Photo」というフォルダの時は「\Images\Photo」の部分のみを比較し、ネットワーク上のドライブで「\\AT_Note\c\Image」というフォルダ名のときは、「\Image」の部分だけを比較することとします。