|
Technote 1101
Using The GXGraphics Extension
目次
Mac OS 8 でサポートされていない機能
“GXGraphics”機能拡張の概要
アプリケーションの変更
“GX プリンティング”機能拡張の変更
GX プリンタドライバの変更
クラシックプリンタドライバの変更
PDD の変更
互換性の問題と制限
GXGraphics 1.1.6 を入手できる場所とライセンスを得る方法
要約
参考文献 |
Mac OS 8 以降、QuickDraw
GX 環境はもはや GX Printing Manager API をサポートしなくなります。この決定により既存のシステムソフトウェアおよびアプリケーションは重大な変更を余儀なくされますが、同時に統一されたプリンティングアーキテクチャへの移行が可能になり、従来の
QuickDraw 環境での QuickDraw GX ソフトウェアの互換性を向上させる結果になるはずです。Mac
OS 8 には“GXGraphics 1.1.6”機能拡張が用意されています。この機能拡張は、QuickDraw
GX の先進的な グラフィックスとタイプグラフィ、“QuickTime 2.5”機能拡張で使用する
QuickDraw GX Codec、および Collection Manager が完全に統合されたバージョンを提供します。この
Technote では、次のテーマについて説明します。
Mac OS 8.0 上での GX プリンティングをサポートするためにアプリケーション
(GX aware、GX savvy、および GX dependent) に加える必要のある変更。
GXGraphics の現在のバージョン (1.1.3) と、Mac OS 8.0 に含まれる GXGraphics
1.1.6 との相違点に関する説明を入手できる場所。
これまでに報告されている GXGraphics 機能拡張の互換性の問題と制限、およびこれまでに判明しているこれらの問題への対処方法。この
Technote は、Mac OS 8.0 上での QuickDraw GX をサポートするために GX 製品の移行を検討しているデベロッパの支援を目的にしています。 |
|
Mac OS 8 でサポートされていない機能
次に、QuickDraw GX 1.1.3/1.1.5 で現在使用可能なキーとなる機能の一覧を示します。戦略的に
GXGraphics 1.1.6 を採用するデベロッパは、今後これらの機能を使用できなくなります。
- GX プリンタドライバ API: GX プリンタドライバは今後サポートされなくなります。すべてのデベロッパはデバイスに対応したクラシックプリンタドライバを用意する必要があります。
- GX プリンティング機能拡張: GX 機能拡張は今後サポートされなくなります。一部のデベロッパは、GX
機能拡張の機能を開発するアプリケーションやドライバに盛り込むことができるかもしれません。
- カスタムページのフォーマット (1 つの書類の中で任意にページフォーマットを指定する機能):
この機能は今後サポートされなくなります。この機能は、LaserWriter version 8.4 に追加された拡張プリントレコードアーキテクチャを使ってインプリメントできるはずです。
- 拡張プリントレコードの詳細については、『develop
27』の「The All-New LaserWriter Driver Version 8.4」を参照してください。
- PDD (Portable Digital Document) のオーサリング: デベロッパは今後 GX プリンティング
API 経由で PDD をオーサリングできなくなります。また、SimpleText は QuickDraw GX 1.1.6
を使用するとき PDD を表示しなくなります。PDD を Mac OS 8 または QuickDraw GX 1.1.6
とともに使用したい場合は、あらかじめ PDD ファイルを Adobe Acrobat PDF ファイルなどの別のフォーマットに変換してください。
- ベクタプリンタドライバ API: 新しい GX では、ベクタプリンタドライバのデベロッパ向けにカスタム
API は用意されなくなります。ベクタプリンタドライバはクラシックプリンティングアーキテクチャを使って記述する必要があります。
“GXGraphics”機能拡張の概要
“GXGraphics”機能拡張は、ユーザのマシンすに QuickDraw パッケージをフルインストールすることなく、ユーザの
Macintosh に強力なグラフィックスおよびタイポグラフィ機能を追加するシステム機能拡張です。現在ライセンス契約を行って配布している“GXGraphics
1.1.3”機能拡張は、QuickDraw GX バージョン 1.1.3 までの、QuickDraw GX のグラフィックスおよびタイポグラフィ機能をすべてカバーしています。
GXGraphics 1.1.3
GXGraphics 1.1.3 には、GX グラフィックスおよびタイポグラフィが含まれていますが、GX
プリンティングは含まれていません。QuickDrawGXLib/GXGraphics 1.1.3 には GX プリンティング呼び出しのための名残は存在していますが、それらは正常に動作しません。この機能拡張は、System
7.5.1 から 7.6 とともにリリースされ、これらのシステム上でテストされました。詳細については表
1 を参照してください。
GXGraphics 1.1.6
GXGraphics 1.1.6 リリースには、GX グラフィックスおよびタイポグラフィが含まれていますが、GX
プリンティングの名残はもはや使用できません。この機能拡張は、Mac OS 8.0 上でテストされてリリースされました。詳細については表
1 を参照してください。
表 1: QuickDraw GX の各リリースの相違点
| 名前 |
バージョン |
コンポーネント |
Gestalt セレクタ |
| QuickDraw GX |
1.1.3、1.1.5 |
QuickDraw GX |
* qdgx (廃止) |
| ?/TD>
| ?/TD>
| GX Printing |
* pmgr |
| ?/TD>
| ?/TD>
| GX Graphics |
* grfx |
| ?/TD>
| ?/TD>
| Collections Mgr |
* cltn |
| GXGraphics |
1.1.3 |
GX Printing |
** |
| ?/TD>
| ?/TD>
| GXGraphics |
* grfx |
| ?/TD>
| ?/TD>
| Collections Mgr |
** |
| GXGraphics |
1.1.6 |
GXGraphics |
* grfx |
* API がエクスポートされ、使用可能です。
** API はエクスポートされていますが、使用できません。アプリケーションの起動時に
Gestalt セレクタを使って、機能がインプリメントされているかどうか検証してください。
アプリケーションの変更
GX プリンティングは今後 Mac OS でサポートされなくなるため、クラシック QuickDraw プリンティングを使った対処をまだ行っていないソフトウェアはアップデートを行う必要があります。大部分のアプリケーションにとって
Mac OS 8.0 に対する最善の対処方法は、QuickDraw GX データのイメージングを行うために
QuickTime の圧縮/展開メカニズムを使用することです。基本的なテクニックとしては、QuickDraw
GX のオブジェクトフラット化関数を使って QuickDraw GX イメージを圧縮データフォーマットにカプセル化
(encapsulate) します。圧縮したイメージデータを作成した後は、それを QuickDraw GX Codec
に渡して QuickTime のイメージ圧縮関数を使って描画するか、QuickDraw ピクチャの内部にエンベッドして
DrawPicture 関数を使って描画します。いずれの場合も、圧縮データは StdPix
ボトルネックルーチン経由でローレベルの QuickDraw 描画ルーチンに渡されます。StdPix
は QuickDraw GX Codec を使ってデータを展開し、イメージのレンダリングを行うときには展開したデータを
bitsProc ボトルネックルーチンに渡します。
バージョン 8.3 以降、LaserWriter ドライバは QuickDraw フラット化オブジェクトのような
QuickTime を使って描画された圧縮データを認識します。Mac OS 8.0 の場合、LaserWriter
ドライバは QuickDraw データをプリンタのデバイス解像度でレンダリングするように修正されました。デスプーリングを行うとき、プリンタドライバではオフスクリーン描画ポートの解像度を変更し、QuickDraw
GX Codec を使って圧縮データをラスタライズします。Apple の QuickDraw プリンタドライバは、スプーリング時に圧縮データをレンダリングし、アクティブなグラフィックスポートの解像度を使用します。アプリケーションデベロッパは、PrGeneral
ルーチンのデバイス解像度コマンドを使って印刷されるイメージの品質を向上させたくなることがあるかもしれません。このような処理については、『develop
3』の「Meet PrGeneral, the Trap That Makes the Most of the Printing Manager」を参照してください。
すべてのアプリケーションに必要な一般的変更
この Technote に対応するサンプルコードには、3 つのQuickDraw GX ユーザライブラリのアップデートバージョンが含まれています
(CodecLibrary、PrintingLibrary、StorageLibrary)。これらのライブラリはソフトウェアの変換を簡略化するために使用できます。TwoFace
サンプルコードでは、QuickDraw GX Printing Manager の基本ジョブ、フォーマット、ダイアログ、およびスプーリング機能がサポートされています。このサンプルコードでは、PrintingLibrary
によって提供される抽象レイヤを使い、アプリケーションが起動されたときに使用可能な環境にしたがって、QuickDraw
GX およびクラシック QuickDraw プリンティングアーキテクチャを介して印刷を処理します。ここで説明する変更は、gxJob
および gxFormat データ型などの QuickDraw GX Printing Manager への参照を
PrintingLibrary の対応する関数またはデータ型に単純に変換するとき、3 つのユーザライブラリによりすべて自動的に処理されます。
1. Gestalt セレクタが正しいかどうかチェックします。今後は使用されなくなる
qdgx セレクタではなく、個別の grfx および pmgr
セレクタを使用します。
Boolean gPrintingArchitecture = false;
long theFeature;
if ( Gestalt(gestaltGraphicsVersion, &theFeature) != noErr )
return;
if ( Gestalt(gestaltGXPrintingMgrVersion, &theFeature) != noErr )
gPrintingArchitecture = kQDPrArch;
else
gPrintingArchitecture = kGXPrArch;
|
2. A-trap アドレスを使って GX 環境のどの部分がインストールされているかどうかを判定する
68000 アプリケーションでは、その代わりに個別の Gestalt セレクタを使用します。このテクニックは必ずしもお勧めできるものではありませんが、これまで一部のアプリケーションで使用されてきました。対象となるアプリケーションがこの条件を満たす場合は、正しい
A-trap アドレスのチェックを行っていることを確認してください。
| トラップアドレス |
テクノロジー |
| ABFE |
GX プリンティング |
| A832 |
GX グラフィックス |
| ABF6 |
Collections Manager |
3. PowerPC アプリケーションの初期化時に、QuickDraw GX Printing ライブラリがインストールされているかどうかをチェックします。アプリケーションがライブラリと
"弱く" リンクされている場合、Process Manager はライブラリが見つからない場合でもアプリケーションを起動します。ただし、Code
Fragment Manager はライブラリ内の関数のアドレスを決定できなくなります。アプリケーションがこれらの関数のいずれかを呼び出すと、クラッシュが発生します。開発するアプリケーションでは、Printing
Manager 関数を決定できるかどうかをチェックし、ライブラリが見つからない場合には上品に終了するようにしてください。なお、このチェックはライブラリ内で呼び出す任意の関数に対して実行することができます。GXInitPrinting
はしばしば Printing Manager から呼び出される最初の関数となります。
if ( (UInt32)GXInitPrinting == kUnresolvedCFragSymbolAddress )
gPrintingArchitecture = kQDPrArch;
|
4. 印刷時には、書類の各ページの内容に対応する単一のピクチャ形状を作成します。PrintingLibrary
には、印刷ループの内部からこのタスクを処理するサンプルビューポートフィルタ関数が含まれています。
5. GXFlattenShape を使って、QuickDraw GX Codec に対する圧縮データを作成します。GXFlattenShape
の詳細については、『Inside
Macintosh: QuickDraw GX Objects』の 2-88 ページから 2-89 ページを参照してください。
6. 『develop
24』 (1995 年 12 月) の「Printing Images Faster With Data Compression」で説明されている
DecompressImage を使って、エンベッドされた QuickDraw GX データを含む
QuickDraw ピクチャを作成します。アプリケーションが標準 DrawPicture 関数を呼び出して圧縮された
QuickDraw GX データに含まれるイメージを表示するとき、StdPix 関数は Image
Compression Manager を呼び出すことでイメージの展開を行います。この処理は、「Technote
1092 印刷ループのケア − 続編」で概説されているように、クラシック印刷ループの内部から実行することもできます。CodecLibrary
は GXCdShapeToPicture 関数をインプリメントします。この関数は、QuickDraw
GX データを QuickTime の圧縮データとしてエンコードし、PicHandle を作成します。アプリケーションでは、このルーチンを使って、印刷ループに入る前に
QuickDraw ピクチャを作成したり、QuickDraw GX の書類を QuickDraw の PICT ファイル形式に変換することになります。DecompressImage
の詳細については、『Inside
Macintosh: QuickTime』の 3-78 ページから 3-79 ページを参照してください。
7. ステップ 6 に代わる処理として、フラット化された QuickDraw GX データを、印刷時にプリンタドライバによってインストールされたカスタム
StdPix ボトルネックに直接渡すこともできます。CodecLibrary は GXCdDrawShape
関数をインプリメントします。この関数は、QuickDraw GX データを QuickTime によりエンコードされた
PixMap データ構造体に変換し、この構造体を印刷ループの内部から QuickDraw
GX Codec に渡します。StdPix の詳細については、『Inside
Macintosh: QuickTime』の 3-138 ページから 3-139 ページを参照してください。
サポートのレベルに基づいて必要とされる特殊な変更
ここでは、GX アプリケーションが行う必要のある変更の概要について説明します。GX サポートのレベルにしたがって説明を進めます。
GX Unaware アプリケーション (GX を認識しないアプリケーション)
- 変更の必要はありません
GX Aware アプリケーション (コア GX プリンティング機能がインプリメントされているアプリケーション)
- 新しいプリンティングユーザライブラリを使って、クラシックプリンティングコードを追加してください
(ステップ 1 − 7)。
GX Savvy アプリケーション (グラフィックス、タイポグラフィ、およびプリンティングがインプリメントされているアプリケーション)
- 新しいプリンティングユーザライブラリを使って、クラシックプリンティングコードを追加してください
(ステップ 1 − 7)。
GX Dependent アプリケーション (機能の前提として GX がインストールされていることを必要とするアプリケーション)
- 新しいプリンティングユーザライブラリを使って、クラシックプリンティングコードを追加してください
(ステップ 1 − 7)。
その他の変更
カスタムページフォーマット
現在、カスタムページフォーマットをインプリメントしようとするアプリケーションでは、書類ごとに複数のジョブをスプールする必要があります。ページフォーマットに加えたそれぞれの変更に対して
1 つのジョブが対応します。
なお、現在でも System 7.5.x 上では、GXGraphics 1.1.x を使用するアプリケーションがこの
Technote で説明したクラシックプリンティングメカニズムを使って印刷を行うことは不可能です。
“GX プリンティング”機能拡張の変更
プリンティング機能拡張は、これまでの GXPrinting の歴史の中で非常に幅広いことを実行するために使用されてきました。しかし、ある種のアプリケーションでは印刷の最適化を行うことができるという潜在力にもかかわらず、これらの機能拡張が多くのデベロッパによってその潜在力を最大限に引き出されることはありませんでした。残念ながら新しい
GX モデルでは、GX 機能拡張はもはや使用できません。デベロッパがこれまで GX 機能拡張を使って実現してきた機能の一部は、クラシックアプリケーションまたはドライバの中に盛り込むことができますが、実際にどう対処するかはケースバイケースでデベロッパが自ら判断を下す必要があります。
GX プリンタドライバの変更
新しい GX モデルでは、GX プリンタドライバはもはやサポートされません。これらのドライバに対する移行プランは用意されていません。
クラシックプリンタドライバの変更
GXGraphics 1.1.6 の世界では、GX オブジェクトをクラシックプリンタドライバに出力することが望ましいといえます。
ラスタプリンタドライバ
ラスタプリンタドライバの場合、アップデートした GX アプリケーションからの出力が、現在の
GX ドライバからの出力品質と一致するようにしてください。
PostScript プリンタドライバ
PostScript プリンタドライバの場合は、高品質な GX オブジェクトの出力をサポートするためにいくつかの変更が必要になります。現在
Apple では、このような変更を加えるために提供するメカニズム (ライブラリ、新しい API
など) として何が最善であるかを決定するために努力しています。このような変更を行うための理想的な方法が確定した時点で、この
Technote を更新して、必要な変更操作を反映させる予定です。
PDD の変更
新しい GX アーキテクチャには PDD 書類をオーサリングする方法は用意されていません。QuickDraw
GX 1.1.6 を使用している場合、SimpleText は PDD を表示しません。PDD を Mac OS 8 または
QuickDraw GX 1.1.6 とともに使用したい場合は、あらかじめ PDD ファイルを Adobe Acrobat
PDF ファイルなどの別のフォーマットに変換してください。
互換性の問題と制限
ここでは、これまでに報告されている“GXGraphics 1.1.6”機能拡張の互換性の問題と制限、およびそれらの問題に対する対処方法について説明します。
- QuickDraw GX データを含む書類を印刷するとき、プリンタドライバの現在のバージョンが異常にサイズの大きなスプールファイルを生成したり、異常に長い印刷時間を必要とする場合があります。また、Apple
Color LaserWriter に出力した QuickDraw GX データがプリンタの最高解像度よりも低い解像度で印刷される場合があります。これらの問題は、Apple
およびその他のベンダから提供されるプリンタドライバの将来のバージョンで解決される予定です。
- ATM 4.0.2 を使用している場合、ATM の代替フォントを使用している一部の PDF 書類が
LaserWriter 8 を使って正しく印刷されない場合があります。この問題は、1997 年の夏以降にリリースされる
LaserWriter 8 の最新バージョンで修正される予定です。
- ATM 3.8.3 と 4.0 は、“GXGraphics”機能拡張がユーザのシステムにインストールされているとき、QuickDraw
GX がインストールされていると正しく認識しません。その結果、Type-1 フォントに問題が発生します。この問題は
Adobe Systems により ATM 4.0.2 では修正されています。ATM の新バージョンについては、Adobe
Systems までお問い合わせください。
- エンベッドされた QuickDraw GX データを含む一部の古い QuickDraw ピクチャを印刷するとき、ピクチャのバックグラウンドにランダムノイズが出力される場合があります。この問題は
QuickTime の将来のバージョンで修正される予定です。
- 一部の QuickDraw GX データがメモリ不足の状況で正しく印刷されない場合があります。イメージ全体が正しく印刷されず、イメージの一部が繰り返し印刷されることもあります。これは
QuickDraw GX の QuickTime Codec 内の問題で、QuickTime の将来のバージョンで修正される予定です。
GXGraphics 1.1.6
を入手できる場所とライセンスを得る方法
“GXGraphics 1.1.6”機能拡張
- GXGraphics 1.1.6 は Mac OS 8.0 パッケージの一部としてのみ使用できます。これは、新しいインストーラと
PPC ライブラリの変更を含む GXGraphics 1.1.3 リリースと同等のものです。
ソフトウェアライセンス
- 製品とともに GXGraphics 機能拡張を出荷しようと考えている場合は、Apple の Software
Licensing グループ (sw.license@apple.com
または 1-512-919-2645) までお問い合わせください。ライセンス契約書の内容を確認するには、QuickDraw
GX のソフトウェアライセンスを参照してください。
要約
ここで説明した手順に単純にしたがうだけで、現状の GX アプリケーションを、複雑な GX
機能拡張をインストールすることなくユーザが実行することのできる表示可能なアプリケーションに簡単に変換できるはずです。
参考文献
|