Macintosh PICT Format


●Macintosh PICT形式の概要
 Macintoshの標準ファイル形式であるPICT形式について説明します。PICT形式は2つのバージョンがあります。バージョン1は初期のMacintoshで使用されていたもので1バイトのオプコードと続くデータによって定義されています。バージョン2はカラーQuickDrawとともに登場し現在まで使用されています。
 バージョン2ではオプコードが2バイトに変更され、保存できる画像データも白黒からフルカラー画像まで可能になっています。PICT形式はビットマップ/ピクセルマップ画像だけでなく、テキストデータやライン、サークルなどのテキスト、ベクトルデータも格納することができます。またPicCommentという特殊なコードを利用することでEPSF(Encapsulated PostScript)形式も埋め込むことが可能です。QuickTimeがあればJPEG形式としても画像を保存することができます。


●PICT形式説明
 PICT形式は先頭512バイトがヘッダーとなっていますが、ここは通常0で何もありません。まれにアプリケーションによってデータが書き込まれることがありますが解析時には無視されます。
 512〜513バイト目には「最終データサイズ - 512」の演算結果の下位2バイトが格納されます。PICTバージョン1の時は画像データは32Kbytes以内という制限があり、その時に画像データサイズを格納する場所でしたが、現在使用されているバージョン2では実質意味がありません。
 次に続くのは画像サイズです。この画像サイズはPICTデータを72dpiで描いた場合のサイズです。例えば144dpiの画像データがあり、100*50ピクセルであれば72dpiで描いた場合50*25ピクセル(72dpi/144dpi=0.5=50%)となります。そのため、ここで画像サイズを求め実際の解像度(つまりPICTデータに存在する)のピクセル数を決定することはできません。実際のピクセル数を求めるにはバージョン2固有のヘッダー内のデータを読み込む必要があります。Future BASICではPICT画像サイズは先頭にある72dpiで描いた場合のサイズを返します。画像処理ソフトなどを作成する場合は要注意です。
 次にバージョンオプコードが続きます。ここはバージョン1と互換性を保つための、ちょっとした仕掛けがあります。ここのオプコードは以下のようになっています。

00 11 02 FF

 バージョン1ではオプコードは1バイト単位で解釈されバージョン2では2バイト単位で解釈されます。この場合それぞれ以下のように解釈されます。

●バージョン1
00:何もしない。
11:以下の1バイトのバージョンを示すオプコード。
02:バージョン2を示す。
FF:終了を示すオプコード。ここで解析終了。

●バージョン2
00 11:以下の2バイトのバージョンを示すオプコード。
02 FF:バージョン2を示す。FFは無視される。

 これによりバージョン1しか解析できない場合、何も処理されません。バージョン2の場合は次に続くオプコードが解析されていきます。

 バージョン2では24バイトのヘッダーが存在し画像のサイズ、解像度情報が格納されています。このヘッダーは以下のようになっています。

2バイト:バージョン2ヘッダーオプコード(0C00H)
2バイト:座標位置指定形式(-2)
2バイト:予約
4バイト:水平解像度
4バイト:垂直解像度
2バイト:左上Y座標
2バイト:左上X座標
2バイト:右下Y座標
2バイト:右下X座標
4バイト:予約(0)

 水平解像度、垂直解像度の値は固定小数値となっており先頭2バイトが整数部分、後の2バイトが小数部となっています。
 座標は水平解像度、垂直解像度での画像サイズです。実際のピクセル数を求める場合は、この座標値を元に計算します。

 バージョン2ヘッダーの後に実際の描画オプコードが続きます。オプコードについては表にまとめておきましたので参考にしてください。バージョン1と2ではオプコードが異なります。
 PICT画像を保存したアプリケーションによっては独自のPicCommentを埋め込んでいる場合があります。PicCommentは特殊な処理を行う場合をのぞき無視します。解析して処理する場合はPicCommentオプコードを認識したら続くKindコード(種類を示します)を読み込み、次に続く2バイトを読み込みます。この2バイトがPicCommentデータ長となっているので、この分だけスキップして解析すればよい事になります。
 通常ヘッダーの後には「クリッピング領域」が指定されています。オプコードに続く2バイト値がクリッピング座標値の数となっています。
 以後、オプコードに対応したデータが続きます。


●画像データ
 画像データを示すオプコードは、0090H〜009FHです。実際には0090H,0091H,0098H,0099H,009AH,009BHが該当オプコードです。また8200H,8201Hオプコードに続くデータはQuickTimeによって解凍されるJPEGデータです。0090H,0091Hはバージョン1,2ともにビットマップ画像データを示すオプコードです。0090H,0091Hの場合は保存されているビットマップデータは圧縮されていません。0098H,0099Hの場合ビットマップデータはランレングス法(PackBits)によって圧縮されています。16bit,32bitカラーデータを示す009AHの場合はデータは圧縮されており同様のランレングス法で圧縮されます。0090H,0098Hで保存されるデータはマスク領域が矩形、0091H,0099Hはマスク領域が矩形以外となっています。(領域データによりマスク領域が設定されます)

 画像データオプコードに続くデータはバージョン1と2で異なっており以下のようになっています。

★バージョン1
2バイト:ベースアドレス(未使用なので0)
2バイト:横方向の実際に必要なバイト数(rowBytes)
2バイト:左上Y座標
2バイト:左上X座標
2バイト:右下Y座標
2バイト:右下X座標
2バイト:元解像度での左上Y座標
2バイト:元解像度での左上X座標
2バイト:元解像度での右下Y座標
2バイト:元解像度での右下X座標
2バイト:72dpiでの左上Y座標
2バイト:72dpiでの左上X座標
2バイト:72dpiでの右下Y座標
2バイト:72dpiでの右下X座標
2バイト:転送モード

★バージョン2
2バイト:ベースアドレス(未使用なので0)
2バイト:横方向の実際に必要なバイト数(rowBytes)
2バイト:左上Y座標
2バイト:左上X座標
2バイト:右下Y座標
2バイト:右下X座標
2バイト:バージョン(常に0)
2バイト:圧縮タイプ(0)
4バイト:圧縮サイズ(0)
4バイト:水平解像度
4バイト:垂直解像度
2バイト:ピクセルタイプ
2バイト:1ピクセルあたりのビット数(4ビット=16色)
2バイト:次のピクセルまでのバイトオフセット(256色以下=1,32768色=2,1677万色=4)
2バイト:コンポーネントサイズ(1,2,4,8,16,32ビット)
4バイト:次のカラープレーンまでのオフセット(0)
4バイト:反転(0)
4バイト:予約(0)
4バイト:カラーテーブル識別番号(存在しない場合は0)
2バイト:パレットフラグ(0)
2バイト:パレットデータ数
2バイト:パレット番号0(以下6バイトがパレット色データ)
6バイト:パレットデータ(RGB順)
  :
  :(パレットの数だけデータが繰り返される)
  :
2バイト:元解像度での左上Y座標
2バイト:元解像度での左上X座標
2バイト:元解像度での右下Y座標
2バイト:元解像度での右下X座標
2バイト:72dpiでの左上Y座標
2バイト:72dpiでの左上X座標
2バイト:72dpiでの右下Y座標
2バイト:72dpiでの右下X座標
2バイト:転送モード

 白黒、32768色、1677万色モード以外ではカラーパレットデータが存在します。パレットデータはパレット番号、赤、緑、青の順番にデータが並んでいますが、色を示す値は0〜65535(0000H〜FFFFH)までの2バイト(1ワード)です。1バイトでなく2バイトなのは描画を行うQuickDrawが扱う内部色情報が16ビットのためです。

 転送モードは通常0です。しかし、ここに特定の値(2バイト)を設定することで通常以外の描画を行わせることが可能です。この転送モードはOh!X 復刊1号77ページの「文字の表示モード」とほぼ同じです。設定できる値は表のとおりですが、描画モードによっては効果がないものがあります。もしAというアプリで作成されたPICT画像をBというアプリで描画させた場合、画像が汚くなるようであれば、PICTファイルのデータを変更して対処することも可能です。通常転送モードは 0 = srcCopyになっているためディザがかかりません。これを64 = ditherCopy(16進数では40H)に変更すれば描画時に自動的にディザがかかります。こういう方法はすごくイレギュラーなもので普通は覚えていてもメリットはないかもしれません。

★表
-------------------------
名 称  | 値(10進数)
srcCopy 0
srcOr 1
srcXor 2
srcBic 3
notSrcCopy 4
notSrcOr 5
notSrcXor 6
notSrcBic 7
patCopy 8
patOr 9
patXor 10
patBic 11
notPatCopy 12
notPatOr 13
notPatXor 14
notPatBic 15
blend 32
addPin 33
addOver 34
subPin 35
transparent 36
adMax 37
subOver 38
adMin 39
grayishTextOr 49
ditherCopy 64
-------------------------

 転送モードの後に実際の画像データが続きます。画像データは圧縮されている場合と圧縮されていない場合があります。0090H,0091Hのオプコードで示される画像データは圧縮されていません。また、rowBytesの値が8未満の場合でもデータは圧縮されていません。データが圧縮されていない場合は、データ=ビットマップデータとなります。
 圧縮データの前には圧縮データの長さを示す値(バイト値)があります。 これに続いて以下の規則に従った圧縮データが続きます。

・圧縮データは[長さ][データ....]の形式
・rowBytesが251以上であれば[長さ]は2バイト、251未満であれば[長さ]は1バイト

 [長さ]が128以上か未満かにより続くデータの意味が異なります。[長さ]が128以上の場合は同じデータが指定数続き、128未満の場合は異なるデータが指定数続きます。指定された長さのデータは以下の計算式により求めます。

★128以上(連続ピクセル/ビットマップデータ)
256 - [長さ] + 1

★128未満(非連続ピクセル/ビットマップデータ)
[長さ] + 1

 データを展開し描画する場合は上記規則にしたがえばよいことになります。データは水平方向に圧縮され垂直/ブロック圧縮などは行われません。(8200H,8201HはJPEG圧縮)
 ピクセル/ビットマップの並び順ですが、これは図のようになっています。


●最後に
 MacintoshのPICT形式は結構面倒で解説した書籍もほとんどありません。(InsideMacintosh, Graphic File Format) インターネット上では以下のアドレスでPICT形式についての説明が英語で読むことができます。

http://developer.apple.com/techpubs/mac/QuickDraw/QuickDraw-2.html

 ちょっと実験、解析しつつやった部分もありますので、勘違いなどがあるかもしれません。間違っていたらごめんなさいm(_ _)m
 以下に実際のPICTデータのダンプリスト/解析リストを示します。


=====================================================================
●24bit(RGB).pict
 16*8サイズで全て白色。解像度は72dpi、保存形式は32bitフルカラー。

00.......00 |先頭512バイト(全て0)
00 A8 |データサイズ(168バイト)
00 00 |左上Y座標(0)
00 00 |左上X座標(0)
00 05 |右下Y座標(5)
00 10 |右下X座標(16)
00 11 |バージョンオプコード(0011H)
02 FF |バージョン番号(バージョン2なので02FFH)
0C 00 |バージョン2ヘッダーオプコード(0C00H)
FF FE |座標位置指定形式(-2)
00 00 |予約(0)
00 48 00 00 |水平解像度(72dpi)
00 48 00 00 |垂直解像度(72dpi)
00 00 |左上Y座標(0)
00 00 |左上X座標(0)
00 05 |右下Y座標(5)
00 10 |右下X座標(16)
00 00 00 00 |予約(0)
00 A1 |ロングコメント(00A1H)
01 F2 |ロングコメント番号(01F2H)*0
00 16 |ロングデータ長(22バイト)
38 42 49 4D 00 00 00 00 00 00 00 05 00 10 47 72 89 70 68 AF 62 6A |ロングコメントデータ
00 01 |クリップ領域オプコード(0001H)
00 0A |クリップ領域:データサイズ+2(10バイト)
00 00 00 00 00 05 00 10 |クリップ領域:データ(ここでは矩形座標)
00 9A |ピクセル圧縮オプコード(009AH)
00 00 00 FF |ピクセル圧縮データ:ベースアドレス(0:未使用)
80 40 |ピクセル圧縮データ:横方向の実際に必要なバイト数、rowBytes(16ピクセル×32ビット[4bytes]=64)
00 00 |ピクセル圧縮データ:左上Y座標(0)
00 00 |ピクセル圧縮データ:左上X座標(0)
00 05 |ピクセル圧縮データ:右下Y座標(5)
00 10 |ピクセル圧縮データ:右下X座標(16)
00 00 |ピクセル圧縮データ:バージョン(これは常に0)
00 04 |ピクセル圧縮データ:圧縮タイプ(4)
00 00 00 00 |ピクセル圧縮データ:圧縮サイズ(これは0)
00 48 00 00 |ピクセル圧縮データ:水平解像度(72dpi)
00 48 00 00 |ピクセル圧縮データ:垂直解像度(72dpi)
00 10 |ピクセル圧縮データ:ピクセルタイプ
00 20 |ピクセル圧縮データ:1ピクセルあたりのビット数(32ビット)
00 03 |ピクセル圧縮データ:次のピクセルまでのバイトオフセット(RGBなので3)
00 08 |ピクセル圧縮データ:コンポーネントサイズ(8ビット)
00 00 00 00 |ピクセル圧縮データ:次のカラープレーンまでのオフセット(0)
00 00 00 00 |ピクセル圧縮データ:反転(0)
00 00 00 00 |ピクセル圧縮データ:予約(0)
00 00 |ピクセル圧縮データ:元解像度での左上Y座標(0)
00 00 |ピクセル圧縮データ:元解像度での左上X座標(0)
00 05 |ピクセル圧縮データ:元解像度での右下Y座標(5)
00 10 |ピクセル圧縮データ:元解像度での右下X座標(16)
00 00 |ピクセル圧縮データ:72dpiでの左上Y座標(0)
00 00 |ピクセル圧縮データ:72dpiでの左上X座標(0)
00 05 |ピクセル圧縮データ:72dpiでの右下Y座標(5)
00 10 |ピクセル圧縮データ:72dpiでの右下X座標(16)
00 40 |ピクセル圧縮データ:横一列のバイト数(16ピクセル×32ビット[4bytes])
02 D1 FF
02 D1 FF
02 D1 FF
02 D1 FF
02 D1 FF |圧縮されたデータ*1
00 |Padding?
00 FF |エンドコード

*0
 01F2HはAdobe Photoshopの独自PicCommentのようです。続くデータは8BIM...となっていますので、クリエータなどのファイル情報などが格納されているようです。

*1
02:パックデータバイト長(2)
D1:データ長(同じデータの場合80H以上。FFH-D1H+1=48(描画リピート回数)。1ライン=16バイト×3ピクセル)
FF:実際の色の値(白なのでR=FFH,G=FFH,B=FFH)
 5ライン(5行)あるので、5つ同じものが繰り返されています。

●24bit(RGB).pictダンプリスト
---------------------------------------------------------------------
0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0200 00 A8 00 00 00 00 00 05 00 10 00 11 02 FF 0C 00
0210 FF FE 00 00 00 48 00 00 00 48 00 00 00 00 00 00
0220 00 05 00 10 00 00 00 00 00 A1 01 F2 00 16 38 42
0230 49 4D 00 00 00 00 00 00 00 05 00 10 47 72 89 70
0240 68 AF 62 6A 00 01 00 0A 00 00 00 00 00 05 00 10
0250 00 9A 00 00 00 FF 80 40 00 00 00 00 00 05 00 10
0260 00 00 00 04 00 00 00 00 00 48 00 00 00 48 00 00
0270 00 10 00 20 00 03 00 08 00 00 00 00 00 00 00 00
0280 00 00 00 00 00 00 00 00 00 05 00 10 00 00 00 00
0290 00 05 00 10 00 40 02 D1 FF 02 D1 FF 02 D1 FF 02
02A0 D1 FF 02 D1 FF 00 00 FF
=====================================================================
●8bit(Index).pict
 33*10サイズで上から「黒赤緑青白」の5色。解像度は144dpi。保存形式は8bitインデックスカラー(16色)。

00.......00|先頭512バイト(全て0)
01 02|データサイズ(258バイト)
00 00|左上Y座標(0)
00 00|左上X座標(0)
00 05|右下Y座標(5)
00 11|右下X座標(17),72dpi描画時のサイズ
00 11|バージョンオプコード(0011H)
02 FF|バージョン番号(バージョン2なので02FFH)
0C 00|バージョン2ヘッダーオプコード(0C00H)
FF FE|座標位置指定形式(-2)
00 00|予約(0)
00 90 00 00|水平解像度(144dpi)
00 90 00 00|垂直解像度(144dpi)
00 00|左上Y座標(0)
00 00|左上X座標(0)
00 0A|右下Y座標(10)
00 21|右下X座標(33)
00 00 00 00|予約(0)
00 A1|ロングコメント(00A1H)
01 F2|ロングコメント番号(01F2H)
00 16|ロングデータ長(22バイト)
38 42 49 4D 00 00 00 00 00 00 00 05 00 11 47 72 89 70 68 AF 62 6A |ロングコメントデータ
00 01|クリップ領域オプコード(0001H)
00 0A|クリップ領域:データサイズ+2(10バイト)
00 00 00 00 00 0A 00 21|クリップ領域:データ(ここでは矩形座標)
00 98|ピクセル圧縮オプコード(0098H)
80 14|ピクセル圧縮データ:横方向の実際に必要なバイト数、rowBytes(33ピクセル×4ビット[0.5bytes]=17-->20)*2
00 00|ピクセル圧縮データ:左上Y座標(0)
00 00|ピクセル圧縮データ:左上X座標(0)
00 0A|ピクセル圧縮データ:右下Y座標(10)
00 21|ピクセル圧縮データ:右下X座標(33)
00 00|ピクセル圧縮データ:バージョン(これは常に0)
00 00|ピクセル圧縮データ:圧縮タイプ(0)
00 00 00 00|ピクセル圧縮データ:圧縮サイズ(これは0)
00 90 00 00|ピクセル圧縮データ:水平解像度(144dpi)
00 90 00 00|ピクセル圧縮データ:垂直解像度(144dpi)
00 00|ピクセル圧縮データ:ピクセルタイプ
00 04|ピクセル圧縮データ:1ピクセルあたりのビット数(4ビット=16色)
00 01|ピクセル圧縮データ:次のピクセルまでのバイトオフセット(16色インデックスカラーなので1)
00 04|ピクセル圧縮データ:コンポーネントサイズ(4ビット)
00 00 00 00|ピクセル圧縮データ:次のカラープレーンまでのオフセット(0)
00 00 00 00|ピクセル圧縮データ:反転(0)
00 00 00 00|ピクセル圧縮データ:カラーテーブル識別番号(0)
00 43 65 5B|カラーテーブルID
00 00|カラーテーブルフラグ(0)
00 04|登録されているパレット数(0から4。合計5)
00 00|パレット番号0(以下6バイトがパレット色データ)
FF FF FF FF FF FF|ピクセル圧縮データ:0番のパレット(R=FFFFH,G=FFFFH,B=FFFFH/白)
00 01|パレット番号1(以下6バイトがパレット色データ)
FF FF 00 00 00 00|ピクセル圧縮データ:1番のパレット(R=FFFFH,G=0000H,B=0000H/赤)
00 02|パレット番号2(以下6バイトがパレット色データ)
00 00 FF FF 00 00|ピクセル圧縮データ:2番のパレット(R=0000H,G=FFFFH,B=0000H/緑)
00 03|ピクセル圧縮データ:パレット番号3(以下6バイトがパレット色データ)
00 00 00 00 FF FF|ピクセル圧縮データ:3番のパレット(R=0000H,G=0000H,B=FFFFH/青)
00 04|ピクセル圧縮データ:パレット番号4(以下6バイトがパレット色データ)
00 00 00 00 00 00|4番のパレット(R=0000H,G=FFFFH,B=0000H/黒)
00 00|ピクセル圧縮データ:元解像度での左上Y座標(0)
00 00|ピクセル圧縮データ:元解像度での左上X座標(0)
00 0A|ピクセル圧縮データ:元解像度での右下Y座標(10)
00 21|ピクセル圧縮データ:元解像度での右下X座標(33)
00 00|ピクセル圧縮データ:72dpiでの左上Y座標(0)
00 00|ピクセル圧縮データ:72dpiでの左上X座標(0)
00 0A|ピクセル圧縮データ:72dpiでの右下Y座標(10)
00 21|ピクセル圧縮データ:72dpiでの右下X座標(33)
00 00|ピクセル圧縮データ:転送モード
06 F1 44 00 40 FE 00
06 F1 44 00 40 FE 00
06 F1 11 00 10 FE 00
06 F1 11 00 10 FE 00
06 F1 22 00 20 FE 00
06 F1 22 00 20 FE 00
06 F1 33 00 30 FE 00
06 F1 33 00 30 FE 00
02 ED 00
02 ED 00|圧縮されたデータ*3
00 FF|エンドコード

*2
 rowBytesの上位3ビットはフラグとして使用されている。そのため実際のrowBytes、つまり横幅を求めるには

rowBytes = rowBytes AND &H03FF(Future BASIC)
rowBytes = rowBytes & 0x3FFF(C/C++)

 のようにする必要がある。またrowBytesは16の倍数でなければならないため実際の画像の横幅よりも大きい値になる場合がある。

*3
06:パックデータバイト長(6)
F1:データ長(同じデータの場合80H以上。100H-F1H+1=16。(描画リピート回数))
44:1バイトで2ピクセル分。16色なので1バイトに2ピクセル分のデータが入る。繰り返し数が16なので16*2=32。4はパレット番号。
00:データ長(異なるデータの場合80H未満。00H+1=1。(描画リピート回数))
40:1ピクセルのみ。パレット番号は4。横が33ピクセルなので、その端数。
FE:データ長(同じデータの場合80H以上。100H-FEH+1=3。(描画リピート回数))
00:パレット0のデータ。ピクセル幅を偶数にするために3ピクセル追加。パディング処理をします。


●8bit(Index).pictダンプリスト
---------------------------------------------------------------------
0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0200 01 02 00 00 00 00 00 05 00 11 00 11 02 FF 0C 00
0210 FF FE 00 00 00 90 00 00 00 90 00 00 00 00 00 00
0220 00 0A 00 21 00 00 00 00 00 A1 01 F2 00 16 38 42
0230 49 4D 00 00 00 00 00 00 00 05 00 11 47 72 89 70
0240 68 AF 62 6A 00 01 00 0A 00 00 00 00 00 0A 00 21
0250 00 98 80 14 00 00 00 00 00 0A 00 21 00 00 00 00
0260 00 00 00 00 00 90 00 00 00 90 00 00 00 00 00 04
0270 00 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00
0280 00 43 65 5B 00 00 00 04 00 00 FF FF FF FF FF FF
0290 00 01 FF FF 00 00 00 00 00 02 00 00 FF FF 00 00
02A0 00 03 00 00 00 00 FF FF 00 04 00 00 00 00 00 00
02B0 00 00 00 00 00 0A 00 21 00 00 00 00 00 0A 00 21
02C0 00 00 06 F1 44 00 40 FE 00 06 F1 44 00 40 FE 00
02D0 06 F1 11 00 10 FE 00 06 F1 11 00 10 FE 00 06 F1
02E0 22 00 20 FE 00 06 F1 22 00 20 FE 00 06 F1 33 00
02F0 30 FE 00 06 F1 33 00 30 FE 00 02 ED 00 02 ED 00
0300 00 FF

=====================================================================
●1bit(BW).pict
 24*3サイズで以下の画像。解像度は72dpi。保存形式は白黒。PICTバージョンは1。

■■■■■■■■■■■■■■■■■■■■■■■■
■□■□■□■□□□□□□□□□■□■□■□■□
□□□□□□□□□□□□□□□□□□□□□□□□

00.......00|先頭512バイト(全て0)
00 5C|データサイズ(92バイト)
00 00|左上Y座標(0)
00 00|左上X座標(0)
00 03|右下Y座標(3)
00 18|右下X座標(24),72dpi描画時のサイズ
11|バージョンオプコード(11H)
01|バージョン番号(バージョン1なので01H)
A1|ロングコメント(A1H)
01 F2|ロングコメント番号(01F2H)
00 16|ロングデータ長(22バイト)
38 42 49 4D 00 00 00 00 00 00 00 03 00 18 47 72 89 70 68 AF 62 6A|ロングコメントデータ
01|クリップ領域オプコード(0001H)
00 0A|クリップ領域:データサイズ+2(10バイト)
00 00 00 00 00 03 00 18|クリップ領域:データ(ここでは矩形座標)
90|ビットマップ非圧縮オプコード(90H)
00 04|ビットマップ非圧縮データ:横方向の実際に必要なバイト数、rowBytes(24ドット/8ビット[1bytes]=3-->4)*4
00 00|ビットマップ非圧縮データ:左上Y座標(0)
00 00|ビットマップ非圧縮データ:左上X座標(0)
00 03|ビットマップ非圧縮データ:右下Y座標(10)
00 18|ビットマップ非圧縮データ:右下X座標(33)
00 00|ビットマップ非圧縮データ:元解像度での左上Y座標(0)
00 00|ビットマップ非圧縮データ:元解像度での左上X座標(0)
00 03|ビットマップ非圧縮データ:元解像度での右下Y座標(10)
00 18|ビットマップ非圧縮データ:元解像度での右下X座標(33)
00 00|ビットマップ非圧縮データ:72dpiでの左上Y座標(0)
00 00|ビットマップ非圧縮データ:72dpiでの左上X座標(0)
00 03|ビットマップ非圧縮データ:72dpiでの右下Y座標(10)
00 18|ビットマップ非圧縮データ:72dpiでの右下X座標(33)
00 00|ビットマップ非圧縮データ:転送モード
FF FF FF 00
AA 00 AA 00
00 00 00 00|圧縮されていないデータ*5
FF|エンドコード

*4
 rowBytesは偶数で終わらせる必要があるため3バイトでなく4バイトとなります(パディング)。

*5
 圧縮の効果がない場合、非圧縮データつまり生データとして保存されます。


0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0200 00 5C 00 00 00 00 00 03 00 18 11 01 A1 01 F2 00
0210 16 38 42 49 4D 00 00 00 00 00 00 00 03 00 18 47
0220 72 89 70 68 AF 62 6A 01 00 0A 00 00 00 00 00 03
0230 00 18 90 00 04 00 00 00 00 00 03 00 18 00 00 00
0240 00 00 03 00 18 00 00 00 00 00 03 00 18 00 00 FF
0250 FF FF 00 AA 00 AA 00 00 00 00 00 FF



●バージョン1
-----------------
バイト数|内 容
-----------------
 512|ヘッダー(基本的にはゼロ)
   2|データサイズ(ヘッダーの512バイトは含まない)
   2|画像の左上のY座標(Top)
   2|画像の左上のX座標(Left)
   2|画像の右下のY座標(Bottom)
   2|画像の右下のX座標(Right)
   1|バージョンオプコード(11H)
   1|バージョン番号(01H)
-----------------
以下指定オプコード


●バージョン2
-----------------
バイト数|内 容
-----------------
 512|ヘッダー(基本的にはゼロ)
   2|データサイズ(ヘッダーの512バイトは含まない。データサイズの下位2バイトが入る)
   2|画像の左上のY座標(Top)
   2|画像の左上のX座標(Left)
   2|画像の右下のY座標(Bottom)
   2|画像の右下のX座標(Right)
   2|バージョンオプコード(0011H)
   2|バージョン番号(02FFH)
   2|バージョン2オプコード(00C0H)
   2|形式(下記参照)


・形式(FFFEHの場合)
   2|予約(ゼロ)
   4|水平解像度
   4|垂直解像度
   8|72dpiの時の矩形サイズ(Top,Left,Bottom,Right)
   4|予約(ゼロ)
-----------------
・形式(FFFFHの場合)
   2|FFFFH
   4|固定小数点での画像の左上のY座標(Top)
   4|固定小数点での画像の左上のX座標(Left)
   4|固定小数点での画像の右下のY座標(Bottom)
   4|固定小数点での画像の右下のX座標(Right)
   4|予約(ゼロ)
-----------------
以下指定オプコード


********************************************* 
●バージョン1 オプコード
--------------------------------------------------
オプコード|データサイズ|データタイプ|内 容
--------------------------------------------------
   00|     0| |何も処理しない
   01| 領域データ| region|クリップ領域
   02|     8| pattern|背景パターン
   03|     2| |書体ID
   04|     1| |文字形状
   05|     2| mode|描画モード
   06|     4| fixedPoint|字間(固定小数点で指定)
   07|     4| point|ペンサイズ
   08|     2| mode|ペンモード
   09|     8| pattern|ペンパターン
   0A|     8| pattern|塗りつぶしパターン
   0B|     4| point|楕円サイズ
   0C|     4| dx,dy|描画開始点
   0D|     2| textsize|文字サイズ
   0E|     4| |前景色
   0F|     4| |背景色
   10|     8| point,point|文字縦横比
   11|     1| |バージョン番号
   12|     0| |予約
   13|     0| |予約
   14|     0| |予約
   15|     0| |予約
   16|     0| |予約
   17|     0| |予約
   18|     0| |予約
   19|     0| |予約
   1A|     0| |予約
   1B|     0| |予約
   1C|     0| |予約
   1D|     0| |予約
   1E|     0| |予約
   1F|     0| |予約
   20|     8| x,y,x,y|線(開始点、終了点)
   21|     4| x,y|線(終了点)
   22|     6| point,dx,dy|線(ペン位置、相対位置)
   23|     4| dx,dy|線(相対位置)
   24|     0| |予約
   25|     0| |予約
   26|     0| |予約
   27|     0| |予約
   28|5+文字列長|point,count,str255|文字     
   29|2+文字列長| dx,count,str255|文字(水平相対座標)
   2A|2+文字列長| dy,count,str255|文字(垂直相対座標)
   2B|3+文字列長|dx,dy,count,str255|文字(水平垂直相対座標)
   2C|     0| |予約
   2D|     0| |予約
   2E|     0| |予約
   2F|     0| |予約
   30|     8| rect|矩形描画(枠)
   31|     8| rect|矩形描画(ペイント)
   32|     8| rect|矩形描画(消去)
   33|     8| rect|矩形描画(反転)
   34|     8| rect|矩形描画(フィル)
   35|     0| |予約
   36|     0| |予約
   37|     0| |予約
   38|     0| rect|最後に設定された矩形座標で描画(枠)
   39|     0| rect|最後に設定された矩形座標で描画(ペイント)
   3A|     0| rect|最後に設定された矩形座標で描画(消去)
   3B|     0| rect|最後に設定された矩形座標で描画(反転)
   3C|     0| rect|最後に設定された矩形座標で描画(フィル)
   3D|     0| |予約
   3E|     0| |予約
   3F|     0| |予約
   40|     8| rect|角丸四角形描画(枠)
   41|     8| rect|角丸四角形描画(ペイント)
   42|     8| rect|角丸四角形描画(消去)
   43|     8| rect|角丸四角形描画(反転)
   44|     8| rect|角丸四角形描画(フィル)
   45|     0| |予約
   46|     0| |予約
   47|     0| |予約
   48|     0| rect|最後に設定された矩形座標で角丸四角形描画(枠)
   49|     0| rect|最後に設定された矩形座標で角丸四角形描画(ペイント)
   4A|     0| rect|最後に設定された矩形座標で角丸四角形描画(消去)
   4B|     0| rect|最後に設定された矩形座標で角丸四角形描画(反転)
   4C|     0| rect|最後に設定された矩形座標で角丸四角形描画(フィル)
   4D|     0| |予約
   4E|     0| |予約
   4F|     0| |予約
   50|     8| rect|楕円描画(枠)
   51|     8| rect|楕円描画(ペイント)
   52|     8| rect|楕円描画(消去)
   53|     8| rect|楕円描画(反転)
   54|     8| rect|楕円描画(フィル)
   55|     0| |予約
   56|     0| |予約
   57|     0| |予約
   58|     0| rect|最後に設定された楕円の座標で再度楕円描画(枠)
   59|     0| rect|最後に設定された楕円の座標で再度楕円描画(ペイント)
   5A|     0| rect|最後に設定された楕円の座標で再度楕円描画(消去)
   5B|     0| rect|最後に設定された楕円の座標で再度楕円描画(反転)
   5C|     0| rect|最後に設定された楕円の座標で再度楕円描画(フィル)
   5D|     0| |予約
   5E|     0| |予約
   5F|     0| |予約
   60|    12| rect,angle,angle|円弧描画(枠)
   61|    12| rect,angle,angle|円弧描画(ペイント)
   62|    12| rect,angle,angle|円弧描画(消去)
   63|    12| rect,angle,angle|円弧描画(反転)
   64|    12| rect,angle,angle|円弧描画(フィル)
   65|     0| |予約
   66|     0| |予約
   67|     0| |予約
   68|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(枠)
   69|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(ペイント)
   6A|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(消去)
   6B|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(反転)
   6C|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(フィル)
   6D|     0| |予約
   6E|     0| |予約
   6F|     0| |予約
   70|データサイズ| polygon|多角形描画(枠)
   71|データサイズ| polygon|多角形描画(ペイント)
   72|データサイズ| polygon|多角形描画(消去)
   73|データサイズ| polygon|多角形描画(反転)
   74|データサイズ| polygon|多角形描画(フィル)
   75|     0| |予約
   76|     0| |予約
   77|     0| |予約
   78|     0| |未実装。多角形描画(枠)
   79|     0| |未実装。多角形描画(ペイント)
   7A|     0| |未実装。多角形描画(消去)
   7B|     0| |未実装。多角形描画(反転)
   7C|     0| |未実装。多角形描画(フィル)
   7D|     0| |予約
   7E|     0| |予約
   7F|     0| |予約
   80|データサイズ| region|領域描画(枠)
   81|データサイズ| region|領域描画(ペイント)
   82|データサイズ| region|領域描画(消去)
   83|データサイズ| region|領域描画(反転)
   84|データサイズ| region|領域描画(フィル)
   85|     0| |予約
   86|     0| |予約
   87|     0| |予約
   88|データサイズ| |未実装。領域描画(枠)
   89|データサイズ| |未実装。領域描画(ペイント)
   8A|データサイズ| |未実装。領域描画(消去)
   8B|データサイズ| |未実装。領域描画(反転)
   8C|データサイズ| |未実装。領域描画(フィル)
   8D|     0| |予約
   8E|     0| |予約
   8F|     0| |予約
   90|データサイズ| |非圧縮ビットマップデータ(矩形)
   91|データサイズ| |非圧縮ビットマップデータ(領域)
   92|     0| |予約
   93|     0| |予約
   94|     0| |予約
   95|     0| |予約
   96|     0| |予約
   97|     0| |予約
   98|データサイズ| |圧縮ビットマップデータ(矩形)
   99|データサイズ| |圧縮ビットマップデータ(領域)
   9A|     0| |予約
   9B|     0| |予約
   9C|     0| |予約
   9D|     0| |予約
   9E|     0| |予約
   9F|     0| |予約
   A0|     2| kind|ショートコメント
   A1|4+データ長| kind,length,data|ロングコメント
A2〜FE|     0| |予約
   FF|     0| |エンドコード
--------------------------------------------------------- 


********************************************* 
●バージョン2 オプコード
------------------------------------------------------------------------------------
    オプコード|データサイズ|データタイプ|内 容
------------------------------------------------------------------------------------
     0000|     0| |何も処理しない
     0001| 領域サイズ| region|クリップ領域
     0002|     8| pattern|背景パターン
     0003|     2| |書体ID
     0004|     1| |文字形状
     0005|     2| mode|描画モード
     0006|     4| fixedPoint|字間(固定小数点で指定)
     0007|     4| point|ペンサイズ
     0008|     2| mode|ペンモード
     0009|     8| pattern|ペンパターン
     000A|     8| pattern|塗りつぶしパターン
     000B|     4| point|楕円サイズ
     000C|     4| dx,dy|描画開始点
     000D|     2| textsize|文字サイズ
     000E|     4| |前景色
     000F|     4| |背景色
     0010|     8| point,point|文字縦横比
     0011|     1| |バージョン番号
     0012|データサイズ| colorPattern|背景パターン(カラー)
     0013|データサイズ| colorPattern|ペンパターン(カラー)
     0014|データサイズ| colorPattern|塗りつぶしパターン(カラー)
     0015|     2| |ペン位置
     0016|     2| |文字間隔(カーニング)
     0017|     0| |予約
     0018|     0| |予約
     0019|     0| |予約
     001A|     6| RGBcolor|前景色(RGB)
     001B|     6| RGBcolor|背景色(RGB)
     001C|     0| |ハイライトモード
     001D|     6| RGBcolor|ハイライトカラー(RGB)
     001E|     0| |デフォルトのハイライトカラー使用
     001F|     6| RGBcolor|RGB演算モード
     0020|     8| x,y,x,y|線(開始点、終了点)
     0021|     4| x,y|線(終了点)
     0022|     6| point,dx,dy|線(ペン位置、相対位置)
     0023|     4| dx,dy|線(相対位置)
     0024|2+データ長| |予約
     0025|2+データ長| |予約
     0026|2+データ長| |予約
     0027|2+データ長| |予約
     0028|5+文字列長| point,count,str255|文字     
     0029|2+文字列長| dx,count,str255|文字(水平相対座標)
     002A|2+文字列長| dy,count,str255|文字(垂直相対座標)
     002B|3+文字列長| dx,dy,count,str255|文字(水平垂直相対座標)
     002C|2+データ長| |予約
     002D|2+データ長|count,fixPoint,fixPoint|行間調整(Script Managerが使用)
     002E|2+データ長| |予約
     002F|2+データ長| |予約
     0030|     8| rect|矩形描画(枠)
     0031|     8| rect|矩形描画(ペイント)
     0032|     8| rect|矩形描画(消去)
     0033|     8| rect|矩形描画(反転)
     0034|     8| rect|矩形描画(フィル)
     0035|     8| |予約
     0036|     8| |予約
     0037|     8| |予約
     0038|     0| rect|最後に設定された矩形座標で描画(枠)
     0039|     0| rect|最後に設定された矩形座標で描画(ペイント)
     003A|     0| rect|最後に設定された矩形座標で描画(消去)
     003B|     0| rect|最後に設定された矩形座標で描画(反転)
     003C|     0| rect|最後に設定された矩形座標で描画(フィル)
     003D|     0| |予約
     003E|     0| |予約
     003F|     0| |予約
     0040|     8| rect|角丸四角形描画(枠)
     0041|     8| rect|角丸四角形描画(ペイント)
     0042|     8| rect|角丸四角形描画(消去)
     0043|     8| rect|角丸四角形描画(反転)
     0044|     8| rect|角丸四角形描画(フィル)
     0045|     8| |予約
     0046|     8| |予約
     0047|     8| |予約
     0048|     0| rect|最後に設定された矩形座標で角丸四角形描画(枠)
     0049|     0| rect|最後に設定された矩形座標で角丸四角形描画(ペイント)
     004A|     0| rect|最後に設定された矩形座標で角丸四角形描画(消去)
     004B|     0| rect|最後に設定された矩形座標で角丸四角形描画(反転)
     004C|     0| rect|最後に設定された矩形座標で角丸四角形描画(フィル)
     004D|     0| |予約
     004E|     0| |予約
     004F|     0| |予約
     0050|     8| rect|楕円描画(枠)
     0051|     8| rect|楕円描画(ペイント)
     0052|     8| rect|楕円描画(消去)
     0053|     8| rect|楕円描画(反転)
     0054|     8| rect|楕円描画(フィル)
     0055|     8| |予約
     0056|     8| |予約
     0057|     8| |予約
     0058|     0| rect|最後に設定された楕円の座標で再度楕円描画(枠)
     0059|     0| rect|最後に設定された楕円の座標で再度楕円描画(ペイント)
     005A|     0| rect|最後に設定された楕円の座標で再度楕円描画(消去)
     005B|     0| rect|最後に設定された楕円の座標で再度楕円描画(反転)
     005C|     0| rect|最後に設定された楕円の座標で再度楕円描画(フィル)
     005D|     0| |予約
     005E|     0| |予約
     005F|     0| |予約
     0060|    12| rect,angle,angle|円弧描画(枠)
     0061|    12| rect,angle,angle|円弧描画(ペイント)
     0062|    12| rect,angle,angle|円弧描画(消去)
     0063|    12| rect,angle,angle|円弧描画(反転)
     0064|    12| rect,angle,angle|円弧描画(フィル)
     0065|    12| |予約
     0066|    12| |予約
     0067|    12| |予約
     0068|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(枠)
     0069|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(ペイント)
     006A|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(消去)
     006B|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(反転)
     006C|     4| rect,angle,angle|最後に設定された円弧の設定値で再度円弧描画(フィル)
     006D|     4| |予約
     006E|     4| |予約
     006F|     4| |予約
     0070|データサイズ| polygon|多角形描画(枠)
     0071|データサイズ| polygon|多角形描画(ペイント)
     0072|データサイズ| polygon|多角形描画(消去)
     0073|データサイズ| polygon|多角形描画(反転)
     0074|データサイズ| polygon|多角形描画(フィル)
     0075|データサイズ| |予約(ポリゴンデータ)
     0076|データサイズ| |予約(ポリゴンデータ)
     0077|データサイズ| |予約(ポリゴンデータ)
     0078|     0| |未実装。多角形描画(枠)
     0079|     0| |未実装。多角形描画(ペイント)
     007A|     0| |未実装。多角形描画(消去)
     007B|     0| |未実装。多角形描画(反転)
     007C|     0| |未実装。多角形描画(フィル)
     007D|     0| |予約
     007E|     0| |予約
     007F|     0| |予約
     0080|データサイズ| region|領域描画(枠)
     0081|データサイズ| region|領域描画(ペイント)
     0082|データサイズ| region|領域描画(消去)
     0083|データサイズ| region|領域描画(反転)
     0084|データサイズ| region|領域描画(フィル)
     0085|   データ| |予約(領域サイズ)
     0086|   データ| |予約(領域サイズ)
     0087|   データ| |予約(領域サイズ)
     0088|データサイズ| region|未実装。領域描画(枠)
     0089|データサイズ| region|未実装。領域描画(ペイント)
     008A|データサイズ| region|未実装。領域描画(消去)
     008B|データサイズ| region|未実装。領域描画(反転)
     008C|データサイズ| region|未実装。領域描画(フィル)
     008D|     0| |予約
     008E|     0| |予約
     008F|     0| |予約
     0090|データサイズ| |非圧縮ビットマップデータ(矩形)
     0091|データサイズ| |非圧縮ビットマップデータ(領域)
     0092| 2+データ| |予約
     0093| 2+データ| |予約
     0094| 2+データ| |予約
     0095| 2+データ| |予約
     0096| 2+データ| |予約
     0097| 2+データ| |予約
     0098|データサイズ| |圧縮ビットマップデータ(矩形)
     0099|データサイズ| |圧縮ビットマップデータ(領域)
     009A| 2+データ| |予約
     009B| 2+データ| |予約
     009C| 2+データ| |予約
     009D| 2+データ| |予約
     009E| 2+データ| |予約
     009F| 2+データ| |予約
     00A0| 2+データ| kind|ショートコメント
     00A1| 4+データ| kind,length,data|ロングコメント
     00A2| 2+データ| |予約
     00A3| 2+データ| |予約
     00A4| 2+データ| |予約
     00A5| 2+データ| |予約
     00A6| 2+データ| |予約
     00A7| 2+データ| |予約
     00A8| 2+データ| |予約
     00A9| 2+データ| |予約
     00AA| 2+データ| |予約
     00AB| 2+データ| |予約
     00AC| 2+データ| |予約
     00AD| 2+データ| |予約
     00AE| 2+データ| |予約
     00AF| 2+データ| |予約
00B0〜00CF|     0| |予約
00D0〜00FE| 4+データ| |予約
     00FF|     0| |エンドコード
0100〜01FF|     2| |予約
0200〜02FE|     4| |予約
     02FF|     0| |バージョン番号(02FF)
0300〜0BFF|     6| |予約
0400〜0BFF|     8| |予約
0500〜0BFF|    10| |予約
0600〜0BFF|    12| |予約
0700〜0BFF|    14| |予約
0800〜0BFF|    16| |予約
0900〜0BFF|    18| |予約
0A00〜0BFF|    20| |予約
0B00〜0BFF|    22| |予約
     0C00|    24| |バージョン番号
0C01〜7EFF|    24| |予約
7F00〜7FFF|   254| |予約
8000〜80FF|     0| |予約
8100〜81FF| 4+データ| |予約
     8200| 4+データ| |QuickTime圧縮データ
     8201| 4+データ| |QuickTime非圧縮データ
8202〜FFFF| 4+データ| |
------------------------------------------------------------------------------------

★データタイプ
region:データ長(2バイト)+領域座標データ(X,Y)

pattern:8*8ドットのパターン。横1バイト×縦8段=8バイト。ビットマップデータ。

mode:描画モードは以下の9つの種類が指定できる。
srcCopy 0
srcOr 1
srcXor 2
srcBic 3
notSrcCopy 4
notSrcOr 5
notSrcXor 6
notSrcBic 7
grayishTextOr 49

fixedPoint:固定小数値。4バイトのうち先頭2バイトが整数部、残りが小数部を表す。

point:ポイント。(1/72基準)

dx,dy:相対XY座標

x,y:XY座標

textsize:1〜32767

count:文字列長を示す1バイト値(1〜255)

str255:文字列(最大255文字)

rect:矩形座標を表すtop,left,bottom,rightのそれぞれ2バイト(合計8バイト)

angle:角度。負数も指定できる。

polygon:データ長(2バイト)+座標データ(X,Y)

kind:種類。2バイト

length:以下に続くデータ長。2バイト。

RGBcolor:Red,Green,Blueそれぞれ2バイトの色情報。

data:1バイト以上のデータ。

colorpattern:カラーパターン。以下の形式。
2バイト:パターンタイプ(1=2色パターン、2=カラーパターン)
★パターンタイプが1の場合
8バイト:ビットマップパターン
6バイト:RGB(Red,Green,Blue)それぞれ2バイト(16ビット)

★パターンタイプが2の場合
8バイト:ビットマップパターン
2バイト:ベースアドレス(未使用なので0)
2バイト:横方向の実際に必要なバイト数(rowBytes)
2バイト:左上Y座標
2バイト:左上X座標
2バイト:右下Y座標
2バイト:右下X座標
2バイト:バージョン(常に0)
2バイト:圧縮タイプ(0)
4バイト:圧縮サイズ(0)
4バイト:水平解像度
4バイト:垂直解像度
2バイト:ピクセルタイプ
2バイト:1ピクセルあたりのビット数(4ビット=16色)
2バイト:次のピクセルまでのバイトオフセット(256色以下=1,32768色=2,1677万色=4)
2バイト:コンポーネントサイズ(1,2,4,8,16,32ビット)
4バイト:次のカラープレーンまでのオフセット(0)
4バイト:反転(0)
4バイト:予約(0)
4バイト:カラーテーブル識別番号(存在しない場合は0)
2バイト:パレットフラグ(0)
2バイト:パレットデータ数
2バイト:パレット番号0(以下6バイトがパレット色データ)
6バイト:パレットデータ(RGB順)
  :
  :(パレットの数だけデータが繰り返される)
  :
nバイト:実際のピクセルデータ


●PicComment番号
  値|サイズ|内 容
150|  6|テキスト処理開始
151|  0|テキスト処理終了
152|  0|文字列処理開始(間隔処理)
153|  0|文字列処理終了(間隔処理)
154|  8|回転の中心座標オフセット
155|  0|LaserWriterレイアウトオフ
156|  0|LaserWriterレイアウトオン
157| 16|カスタムラインレイアウト*6
160|  0|ベジエ曲線開始
161|  0|ベジエ曲線終了
163|  0|ポリゴンデータを無視
164|  1|Fill,Frame終了
165|  0|ポリゴン終了
180|   |破線描画
181|  0|破線終了
182|  4|(小数値の)線幅設定
190|  0|PostScriptドライバ設定
191|  0|QuickDrawの状態を元に戻す
192|   |PostScriptデータ(ハンドル)
193|   |ファイル名(ハンドル)*7
194|  0|QuickDrawテキストをPostScriptデータとして送信*7
195|  8|リソースフォークにあるPostScriptデータ*7
196|  0|PostScript命令を設定
197|  4|PostScript命令のsetgrayを呼びだす(グレー値設定)*6
200|  4|開店開始
201|  0|回転終了
202|  8|回転の中心へのオフセット
210|  0|プリンタバッファクリア*6
211|  0|プリンタ送信終了*6


*6
 使用しない事

*7
 無視される