Solaris X Window System 開発ガイド

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』を参照してください。