Solaris X Window System 開発ガイド

DPS について

Display PostScript システムは、プリンタやタイプセッタ [この節は、Adobe 社『Programming the Display PostScript System with X』(Addison-Wesley Publishing Company, Inc., 1993) の第 4 章を基に記述してあり、著作権所有者の許可を得ています。] で標準となっている PostScript 言語と同じイメージ処理モデルを使用して、コンピュータの画面上にグラフィック情報を表示します。X アプリケーションは PostScript 言語を使用することにより、高い精度で線分や曲線を描画したり、イメージの回転や拡大・縮小処理を行ったり、入力データをグラフィックオブジェクトとして扱ったりできます。また、Display PostScript システムを使用する X アプリケーションは、Adobe タイプライブラリをすべて使用できます。

PostScript を搭載したプリンタやタイプセッタの特長は、デバイスや解像度に依存しない点です。対話処理用の画面でも、Display PostScript システムを使用すればこの恩恵にあずかります。DPS システムを利用するアプリケーションは、DPS システムがサポートするディスプレイ上であれば、プログラムを変更することなく同じ動作や表示を行えます。

DPS の動作

DPS システムにはいくつかのコンポーネントがあり、その中には PostScript インタプリタ、クライアントライブラリ、pswrap トランスレータがあります。クライアントライブラリは、アプリケーションと PostScript インタプリタ間のリンクを行うものです。

DPS 拡張機能を使用する各アプリケーションは、「コンテキスト」を 1 つ生成します。コンテキストは、ウィンドウが見えない画面領域のピックスマップに出力する一種の仮想 PostScript プリンタと考えることができ、専用のスタック、入出力機能、メモリー空間を備えています。PostScript インタプリタはサーバー中で単一のプロセスとして動作しますが、コンテキストが別々になっているため複数のアプリケーションで共有できます。

DPS システムでは 1 つのアプリケーションで複数のコンテキストを使用できますが、1 つのコンテキストで多くの描画領域を扱えるため、通常はコンテキストが 1 つあればそのアプリケーション内の全描画処理を十分まかなえます。しかし、1 つのクライアント内でコンテキストを 2 つ以上使用する方が好ましい場合もあります。たとえば、Encapsulated PostScript (EPS) ファイルを読み込む場合は、コンテキストを別にする方がよいでしょう。読み込んだ EPS ファイルに PostScript に関するエラーがあった場合、コンテキストを別にしておけばエラー回復処理が簡単になります。

アプリケーションは、クライアントライブラリの手続きを呼び出すことによって、画面上に描画します。この手続きは、PostScript インタプリタに送られて処理される PostScript 言語コードを生成します。DPS システムには、クライアントライブラリの他に pswrap トランスレータが組み込まれています。pswrap は、PostScript 言語のオペレータを使用して「ラップ」という C 言語手続きを生成します。「ラップ」は、アプリケーションプログラムから呼び出すことができます。

PostScript インタプリタは、タイムスライス単位でコンテキスト実行に関連するスケジューリングを行います。このインタプリタはコンテキスト間で切り替えられるので、複数のアプリケーションがインタプリタにアクセスできます。各コンテキストは、PostScript の仮想メモリー空間 (VM) の専用部分にアクセスします。VM には「共有 VM」と呼ばれる追加部分もあり、これは全コンテキスト間で共有され、システムフォントや他の共用リソースに使用します。「専用 VM」には、各コンテキスト専用のフォントを入れることができます。図 2-1 に DPS のコンポーネントと X との関係を示します。

図 2-1 DPS 拡張機能と X

Graphic

アプリケーションは、次のような手順で DPS システムとやり取りします。

  1. アプリケーションは PostScript 実行コンテキストを 1 つ生成し、サーバーとの通信チャネルを 1 つ確立します。

  2. アプリケーションは、クライアントライブラリの手続きとラップをコンテキストに送り、その応答を受け取ります。

  3. アプリケーションは終了する際、コンテキストを消滅させ、通信チャネルをクローズし、セッション中に使用したリソースを解放します。

コンテキストの構造は、全 DPS プラットフォーム間で共通です。ただし、コンテキストの作成と管理はプラットフォームごとに異なります。コンテキストとそれを処理するルーチンについては、『Client Library Reference Manual』と『Client Library Supplement for X』を参照してください。Display PostScript の開発者向けユーティリティについては、『Display PostScript Toolkit for X』を参照してください。