高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technote 1115

LaserWriter 8.5.1: The Extended 'PAPA' Resource


目次

'PAPA'リソース

タグの条件

要約


LaserWriter 8.5.1は様々な種類のデスクトッププリンタをサポートします。このため、'PAPA' -8192リソースは従来の103バイトから1024バイトに拡張されました。このテックノートは拡張部分がLaserWriter 8.5.1ドライバにおける役割を解説します。

注:
'PAPA'リソースの従来のサイズ(103バイト)に依存するソフトウェアはLaserWriter 8.5.1で正しく動作しない恐れがあります。このようなソフトウェアをLaserWriter 8.5.1と共用する場合は拡張された'PAPA'リソースへ対応させる必要があります。


'PAPA'リソース

拡張'PAPA'リソースの先頭部分は従来の'PAPA'リソースと変わりません。圧縮されたPascal文字列3つ(プリンタ名、ネットワーク種別(通常はLaserWriter)、プリンタのゾーン)に続いて、4バイトのネットワークアドレスがあります。

拡張'PAPA'リソースでは104バイト目以降にデスクトッププリンタ(DTP)情報があります。104〜1024バイト目(1を元としたインデックス)はタグブロックの集合です。タグブロックは4バイトのタグと2バイトのサイズ情報に続いて、実際のデータが保存されます。104〜1024バイト目には複数のタグブロックが収められています。

タグの条件

拡張'PAPA'リソースのタグブロックはいくつかの条件を満たさなければなりません。

'PAPA'リソースの1つ目のタグブロックは必ず'TAGS'のタグブロックでなければなりません。'TAGS'タグブロックはリソースに入っているタグブロックの数を示します。また、最初の'TAGS'タグブロックは'PAPA'リソースに有効なタグブロックが入っているチェックとしても使われます。

'PAPA'リソースに複数のタグブロックが入っている場合、各タグブロックはワード境界(16ビット)に位置していなければなりません。タグブロックのサイズが奇数の場合は次のタグブロックとの間に1バイトの間隔を置かなければなりません。

'PAPA'リソースの内部構造に直接触れるクライエントを少なくし、今後'PAPA'リソースの形式を変更しやすくする意味で、'PAPA'リソース内の情報を読み書きするためのAPI(SettingsLib)が用意されています。'PAPA'リソースを直接参照するより、一般的にはSettingsLibを使用することを推奨します。SettingsLibについてはデベロッパ・ワールド・ジャパンのテックノートページをご覧下さい。

定義されているタグの種類

タグタイプ:'TAGS'
サイズ:sizeof (UInt16)、2バイト
'TAGS'タグブロックの値は、拡張プリントレコードに入っているタグブロックの総数です('TAGS'タグブロックも数に含みます)。'TAGS'タグブロックは拡張プリントレコードの1つ目のタグブロックでなければなりません。つまり、すべての有効な拡張プリントレコードは0x5441 0x4753 0x0002で始まることになります。



タグタイプ:'TYPE'
サイズ:sizeof (OSType)、4バイト
'PAPA'のゾーン名文字列と同じ情報を含みますので、このタグブロックはオプションです。'TYPE'タグブロックが存在する場合、値はゾーン名文字列のDTP種別と一致しなければなりません。以下の表はゾーン名文字列とDTP種別の相互のマッピングです。


ゾーン名文字列 'TYPE'タグブロックの値 定義
=Hld 'Hold' スプールファイルは作成するが、その後の処理は行われず、保留にされます。DTPプリンタは実存しません。
=Fil* '=Fil' PostScript又はEPSファイルを作成します。DTPプリンタは実存しません。
=Cst* '=Cst' PostScriptファイルを作成ます。作成されたファイルは指定されたアプリケーションが処理します。
=LPR* '=LPR' LPRプロトコルを使って、PostScriptプリンタに印刷します。
=Ird* '=Ird' IRDAの赤外線通信を使って、PostScriptプリンタに印刷します。
有効なゾーン名 'PAP' AppleTalkのPAPプロトコルを使って、PostScriptプリンタに印刷します。


上記の表のゾーン名文字列の「*」記号はワイルドカードを示しますので文字列が代入されることがあります。DTPユーティリティはゾーン名文字列の「*」を置き換えて、同種同名のDTPでもフォルダの使い分けができるように識別しています。

将来は新たなDTP種別に対応して、'Hold''=Fil''=Cst''=LPR''=Ird''PAP'以外にもタグブロック値が追加されることがあります。


タグタイプ:'TCP '
サイズ:文字列の長さによる
TCP/IPのネットワークアドレスを要するDTPは、このタグブロックを使ってアドレスを指定します。タグブロックの値にはプリンタのネットワークアドレス(colorlaser.apple.comや204.188.109.151など)を文字列で指定します。

プリンタ種別が'=LPR'の場合は'TCP 'タグブロックが必須です。

文字列の長さはタグブロックのサイズと同様です。


タグタイプ:'Q '
サイズ:文字列の長さによる
LPRプリンタのようにプリントスプーラ名を指定できるプリンタはここでプリントスプーラ名を指定します。

文字列の長さはタグブロックのサイズと同様です。

DTP種別、ゾーン名、タグブロックの相互関係を以下の表で示します。

DTP種別 'PAPA'ゾーン名文字列 拡張データタグブロック
PAP 実際のゾーン名 'TYPE''PAP '
Hold ~ 'TYPE''Hold'
ファイルへ保存 =Fil* 'TYPE''=Fil'
LPR =LPR* 'TYPE''=LPR'
'TCP '
はプリンタのネットワークアドレス
'Q 'はプリントスプーラ名(オプション)
赤外線 =Ird 'TYPE''=Ird'

要約

このテックノートではLaserWriter 8.5.1の'PAPA'リソースの変更点を解説しました。'PAPA'リソースのサイズに依存するソフトウェアはLaserWriter 8.5.1と共用した際に正常に動作しない恐れがありますので、十分気を付けて下さい。

参考文献
  • デベロッパ・ワールド・ジャパンのテックノートページ

更新日: 1997 年 11 月 13 日