(57)【特許請求の範囲】
【請求項１】
ページ記述言語で記述された入力データを解釈・実行してラスタ画像を生成する描画処理装置において、
手続きについての手続き定義を含む入力データを受け取る手段と、
上記入力データを受け取るより前から予め少なくとも１つの手続きについて、対応する高速描画用のデータを保持する高速描画用データ保持手段と、
上記入力データから手続きの定義を抽出する手段と、
上記抽出した手続きの定義を保持する手段と、
上記入力データから手続き呼び出しを検出する手段と、
上記検出された手続き呼び出しが上記少なくとも１つの手続きに該当するときに上記対応する高速描画用のデータを出力する手段と、
上記検出された手続き呼び出しが上記少なくとも１つの手続きに該当しないときに上記抽出した手続きの定義を出力する手段と、
上記出力された手続きの定義解釈・実行して、対応する描画用のデータを生成する手段と、
上記対応する描画用のデータおよび上記対応する高速描画用のデータに基づいて画像データを生成する手段とを有することを特徴とする描画処理装置。
【請求項２】
上記高速描画用データ保持手段は、手続き集合と手続き集合との間の依存関係を保持し、手続き集合毎に高速描画用データを出力するかどうかを設定する請求項１記載の描画処理装置。
【請求項３】
上記高速描画用のデータが、機械語で構成された描画命令列である請求項１または２記載の描画処理装置。
【請求項４】
上記高速描画用のデータが、上記画像データを生成する手段において並列に実行される描画命令である請求項１または２記載の描画処理装置。
【請求項５】
上記抽出した手続きの定義が上記少なくとも１つの手続きの定義と同一かどうかを判断する手段を有する請求項１、２または３記載の描画処理装置。
【請求項６】
上記抽出した手続き定義に対して所定の演算を実行して生成された値を、上記少なくとも１つの手続きに対応して保持されている値に比較して、上記抽出した手続き定義が上記少なくとも１つの手続きの定義と同一かどうかを判断する請求項５記載の描画処理装置。
【請求項７】
手続き集合に対して複数の高速描画用手続き集合を有し、上記手続き集合の名前と動作時の状態から算出される値とに基づいて１の高速描画用手続き集合に含まれる高速描画用データを選択して出力する請求項１、２、３、４、５、６または７記載の描画処理装置。
【請求項８】
上記動作時の状態から算出される値は、手続き集合間の依存関係と手続き集合に割り当てられた数値とから算出される請求項８記載の描画処理装置。
【請求項９】
ページ記述言語で記述されるファイルを、所定のＣＰＵをエミュレートして他のＣＰＵで実行する、ページ記述言語で記述されたファイルの実行方法において、
上記ページ記述言語で記述されたファイルを入力するステップと、
上記ページ記述言語で記述されるファイルに含まれる可能性のあるインタプリタプログラム部を上記インタプリタプログラム部と同一性のある上記他のＣＰＵのネイティブ・コードに変換したコード群を上記ページ記述言語で記述されたファイルを入力する前から保持するステップと、
上記ファイル内で指定されるインタプリタプログラム部を取り出すステップと、
取り出された上記インタプリタプログラム部と対応のとれる変換コードを利用できるようにするステップと、
取り出された上記インタプリタプログラム部を実行すべき段階で上記変換コードを選択して実行するステップとを有することを特徴とするページ記述言語で記述されたファイルの実行方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ポストスクリプト（ＰｏｓｔＳｃｒｉｐｔ、米国アドビ・システムズ社の商標）のようにプログラム言語的な側面を持つページ記述言語（ＰＤＬ：Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述された入力データに基づいて描画を行う描画処理装置に関し、とくに入力データのプログラム実行部分を高速処理するようにしたものである。
【０００２】
【従来の技術】
ポストスクリプトで記述されたファイルは、様々なコンピュータ上でも共通のプログラムコードにより実行される。このようなプログラムついては、処理するコンピュータ上に仮想的なインタプリタマシンを構成して、このインタプリタマシン上で入力プログラムの解釈実行を行うということを行っている。
【０００３】
一般的にプログラム言語では、プログラムの可読性や変更の容易性やコンパクト性の理由から、一連の演算の集合に一つの名前をつけてまとめ、手続きとして定義することが可能であり、プログラム中でその名前が現れると、定義された一連の演算が実行される。
【０００４】
ところがインタプリタマシン上でプログラムが実行される場合には、このようなユーザ定義の手続きは、呼び出される毎に毎回一連の演算をひとつずつ解釈して実行するために、インタプリタの内部手続き（オペレータ）の実行と比較すると非常に効率が悪くなっている。
【０００５】
このようなインタプリタ用の入力プログラムを高速に処理する例として、データ解析とグラフィックスの対話環境の提供とに使用されるＳ言語がある。このＳ言語の利用環境において、Ｓ言語で記述された内容を前処理により構文解析し、その結果をセーブしておき、実行時にはこのセーブされた内容を使用して高速実行を図る例が特開平５−１７３７９８号公報に開示されている。
【０００６】
しかし、ＰＤＬにおいては実行結果である描画された出力に意味があり、そのプログラムは出力される画像ごとに異なっているという問題があり。このためネイティブ（ｎａｔｉｖｅ）・コードに変換して実行速度を上げるためには、ＰＤＬの入力ごとに毎回ネイティブ・コードへの変換を行う必要が生じてしまう。そして、この方法ではネイティブ・コードを生成する処理のオーバヘッドにより実行時の処理の高速化の効果が十分に得られない。
【０００７】
ところで、ＰＤＬのプログラム言語的な側面は、アプリケーションプログラムが持つグラフィックモデルと出力フォーマットに選んだＰＤＬのグラフィックモデルとの変換のためなどに多用される傾向がある。このような例として、異なるＰＤＬ間の変換をＰＤＬのプログラム言語的な側面を利用して解決することが、特開平５−１０８２８２号公報に開示されている。これらの理由からも、ＰＤＬのプログラム的な側面、特に仮想的なインタプリタマシン上で動作するように想定されているＰＤＬ内のインタプリタプログラムを高速に実行する手段が求められている。
【０００８】
【発明が解決しようとする課題】
本発明の目的は、ＰＤＬファイル内に含まれているインタプリタプログラムの実行を高速に行えるようにすることである。
【０００９】
【課題を解決するための手段】
この発明では、以上の目的を達成するために、ページ記述言語で記述された入力データを解釈・実行してラスタ画像を生成する描画処理装置に、少なくとも１つの手続きについて、対応する高速描画用のデータを保持する高速描画用データ保持手段と、上記入力データから手続き呼び出しを検出する手段と、上記検出された手続き呼び出しが上記少なくとも１つの手続きに該当するときに上記対応する高速描画用のデータを出力する手段と、上記対応する高速描画用のデータに基づいて画像データを生成する手段とを設けるようにしている。
【００１０】
この構成においては、入力データ（ＰＤＬ）で定義された所定の手続きを解釈実行するかわりに、あらかじめ保持されている高速描画手続きを用いて上記所定の手続きの解釈・実行と同等の処理を行い、従来繰り返し実行されるインタプリタプログラムを高速実行する。すなわち繰り返し行われる解釈・実行の操作を減少させることによりＰＤＬの処理を高速に実行する。
【００１１】
また、この発明によれば、以上の目的を達成するために、ページ記述言語で記述された入力データを解釈・実行してラスタ画像を生成する描画処理装置に、少なくとも１つの手続きについて、対応する高速描画用のデータを保持する高速描画用データ保持手段と、上記入力データから手続きの定義を抽出する手段と、上記抽出した手続きの定義を保持する手段と、上記入力データから手続き呼び出しを検出する手段と、上記検出された手続き呼び出しが上記少なくとも１つの手続きに該当するときに上記対応する高速描画用のデータを出力する手段と、上記検出された手続き呼び出しが上記少なくとも１つの手続きに該当しないときに上記抽出した手続きの定義を出力する手段と、上記出力された手続きの定義解釈・実行して、対応する描画用のデータを生成する手段と、上記対応する描画用のデータおよび上記対応する高速描画用のデータに基づいて画像データを生成する手段とを設けるようにしている。
【００１２】
この構成においても、繰り返し行われる解釈・実行の操作を減少させることによりＰＤＬの処理を高速に実行することができる。
【００１３】
以上の構成においては、上記高速描画用データ保持手段は、手続きの属するグループとグループ間の依存関係を保持し、グループ毎に高速描画用データを出力するかどうかを設定するようにしてもよい。
【００１４】
また、上記高速描画用のデータが、機械語で構成された描画命令列であるようにしてもよい。
【００１５】
また、上記高速描画用のデータが、上記画像データを生成する手段において並列に実行される描画命令であるようにできる。
【００１６】
また、上記描画処理装置に、上記抽出した手続き定義が上記少なくとも１つの手続きの定義と同一かどうかを判断する手段を設けるようにしてもよい。
【００１７】
また、上記抽出した手続き定義を、上記少なくとも１つの手続きに対応して保持される手続き定義に比較して、上記抽出した手続き定義が上記少なくとも１つの手続きの定義と同一かどうかを判断するようにしてもよい。
【００１８】
また、上記抽出した手続き定義に対して所定の演算を実行して生成された値を、上記少なくとも１つの手続きに対応して保持されている値に比較して、上記抽出した手続き定義が上記少なくとも１つの手続きの定義と同一かどうかを判断するようにしてもよい。
【００１９】
また、手続きに対して複数の高速描画用のデータを有し、上記手続きの名前と動作時の状態から算出される値とに基づいて１の高速描画用のデータを選択して出力するようにしてもよい。
【００２０】
また、上記動作時の状態から算出される値は、グループ間の依存関係とグループに割り当てられた数値とから算出されるようにしてもよい。
【００２１】
また、この発明によれば、上述の目的を達成するために、ＰＤＬファイルに含まれる可能性のあるインタプリタプログラムをそれを実行するハードウエアのネイティブ・コードなどに変換したコード群を保持し、ＰＤＬファイル内で指定されるインタプリタプログラム部について判定を行い、判定されたインタプリタプログラム部と対応のとれる変換コードを利用できるようにし、該インタプリタプログラム部について実行すべき段階で変換コードを選択して実行するようにしている。
【００２２】
この構成においても、繰り返し行われる解釈・実行の操作を減少させることによりＰＤＬの処理を高速に実行することができる。
【００２３】
【発明の実施の態様】
以下この発明の実施例について説明する。図１はこの発明の第１の実施例を示し、この図において、描画処理装置は入力部１１、入力データ解析部１２、手続き管理部１３、入力データ実行部１４、描画部１５および高速描画部１６を有している。入力部１１は、ＰＤＬで記述（プログラム）された入力データを図示しないネットワークインタフェ−スあるいは、図示しないハードディスクやＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶装置から読み込むものである。入力データ解析部１２は、入力部１１から入力データを受取り、入力データから手続きの定義を検出するものである。この検出には、コンパイラなどで一般に用いられている構文解析のアルゴリズムを用いることができる。
【００２４】
手続き管理部１３は、手続き保持部１７と手続き選択部１８とからなる。手続き保持部１７は、入力データ解析部１２が抽出した手続きの定義を、手続き名前を検素キーとしてデータベースに登録するものである。例えば、名前と手続きとのペアを記録しておき、文字列のパターンマッチングを用いてマッチした名前によって手続きを特定することができる。手続き保持部１７は、さらに、入力データにおいて定義可能な手続きと等価な処理を行なう高速描画手続きとこの高速描画手続きを特定する名前とを保持する。高速描画手続きは、入力データ実行部１４が直接実行可能な、コンパイルされた機械語命令列や、高速描画可能な専用の描画装置への描画コマンドや複数の描画装置に対する並列描画処理命令などから構成することができる。
【００２５】
手続き選択部１８は、手続きの名前をキーとして、手続き保持部１７に問い合わせを行ない、手続き保持部１７から返された結果が、入力データで定義された手続きのみの場合は、入力データで定義された手続きをそのまま出力し、入力データで定義された手続きと高速描画手続きとの場合は高速描画手続きを出力する。
【００２６】
入力データ実行部１４は、入力データを解釈して実行する。解釈した入力データが手続きの場合には、手続き管理部１３に対して問い合わせを行ない、該当する手続きを獲得し、獲得した手続きを解釈して実行を続ける。解釈した入力データが描画命令または高速描画命令の場合には、描画部１５または高速描画部１６に対して命令の実行を指示する。描画部１５および高速描画部１６は描画命令および高速描画命令に基づいて出力画像１９を生成する。
【００２７】
つぎにこの実施例の動作について説明する。ここでは図２に示すＰＤＬ記述の入力例（ＰＤＬファイル）を用いて説明する。
【００２８】
図１において、図２に示したＰＤＬファイルを入力すると、入力部１１はこのＰＤＬファイルの行を順に読み込んで、入力データ解析部１２に渡す。入力データ解析部１２は、ＰＤＬファイルの１行から９行を手続きの定義であると判断し、手続き保持部１７に手続き名ｂｏｘをキーとして登録する。この例では、手続きｂｏｘと等価な高速描画手続きが登録されているとする。したがって、手続き名ｂｏｘをキーとしてＰＤＬに記述されている手続きと高速描画手続きの２つが登録されたことになる。
【００２９】
続いて、１１行目の１００  １００  ２０  ３０  ｂｏｘの行が読み込まれると、入力データ実行部１４は、手続き名ｂｏｘを手続き管理部１３に間合わせる。手続き管理部１３では、手続き保持部１７に対してｂｏｘをキーとして問い合わせを行ない、入力ＰＤＬファイルで定義された手続きとあらかじめ登録されていた高速描画手続きとから高速描画手続きを手続き選択部１８が選択して、入力データ実行部１４に高速描画手続きを返す。
【００３０】
入力データ実行部１４は、高速描画手続き中の高速描画命令を高速描画部１６に発行する。高速描画部１６が四角形を高速に描画する機能を備えるときは、四角形の描画命令とパラメータ「１００  １００  ２０  ３０」（左下の座標が（１００，１００）、幅が２０、高さが３０）を描画命令としてもよいし、高速描画部１６が四角形を高速に描画する機能はないが、直線を高速に描画可能な場合には４つの直線描画命令を発行してもよい。また、高速描画部１６が複数の描画部から構成されている場合には、たとえば４つの描画部から構成されているとすると、４角直線描画命令をそれぞれの描画部に並列に実行するように発効してもよい。以上により結果として、高速描画部１６によって出力画像に四角形が描画される。
【００３１】
入力データ解析部１２で検出された手続き名に対して、手続き保持部１７に通常の手続き定義のみ保持され高速描画手続きが保持されていないときには、その通常の手続きの行が順次に入力データ実行部１４に送られ、通常どおり解釈・実行され、その結果、描画命令が生成され、描画部１５に送られる。そして出力画像１９が生成される。
【００３２】
手続き定義や、手続き名を含む行以外の行は、そのまま入力データ実行部１４に送られて通常どおりに解釈・実行される。
【００３３】
なお、上述の例においては、高速描画手続きは高速描画部１６への描画命令列に対応するものとしたが、描画部１５への描画命令列を含んでいてもよい。また高速描画部１６を設けない場合には、高速描画手続きを描画部１５への描画命令列のみで構成してもよい。
【００３４】
図３および図４はそれぞれ上述実施例の入力データ解析部１２および入力データ実行部１４の動作の詳細を説明するものである。入力データ解析部１２および入力データ実行部１４の動作はこれらの図のみで十分に説明されているので、ここでは説明を行わない。
【００３５】
つぎにこの発明の第２の実施例について説明する。図５はこの発明の第２の実施例を示している。この実施例においては、手続き管理部１３が手続き保持部１７と手続き選択部１８とに加え、手続き保持部１７に保持されている高速手続き集合と入力データ解析部１２により抽出した手続き集合が対応するものであることを検査する同一性判定部２０を備えている。なお図５において図１と対応する箇所には対応する符号を付して詳細な説明を省略する。
【００３６】
図５において、入力データ解析部１２は、ＰＤＬファイルを受け取るとともに、入力データ中の手続き定義部分とその手続き定義集合の名前あるいはＩＤなどを検出する。ＰＤＬが例えばポストスクリプトであった場合には手続き定義部分とは辞書と呼ばれるデータの定義部分であり、手続きの定義と共にローカルに使用される変数の定義も含む。そして、この場合には手続き定義集合の開始と終りにはしばしば、ポストスクリプトのコメントを使用してその辞書データを定義して、使用する由来となるクリエータの名前などが判定できるようになっている。入力データ解析部１２はこのコメントを元に手続き定義集合の名前あるいはＩＤを決定することも、辞書データの名前をもとに手続き定義集合の名前あるいはＩＤを決定することも、あるいは、辞書を解釈してその中身から算出される数値をＩＤとして使用することもできる。どの場合にも、入力データ解析部１２は手続きの定義部分を抽出して、手続き集合の名前あるいはＩＤをつけて手続き管理部１３に送信する。
【００３７】
手続き管理部１３では、入力データ解析部１２から得た手続き定義集合のＩＤを元に、手続き保持部１７内に用意されている高速手続き定義集合を選び出す。ここで見つからない場合には、入力ＰＤＬファイル内で定義されている手続き定義のデータがそのまま使用されて後の処理が行われる。すなわち通常のＰＤＬファイルを処理する動作と変化の無い動作となる。対応する高速手続き定義集合が存在した場合には、入力データ解析部１２により抽出された手続き定義と、対応が判定された高速手続き定義集合とが、組み合わせた形で、手続き保持部１７内に保持される。
【００３８】
ＰＤＬファイル内の実行部分が入力されると、入力データ実行部１４は手続き管理部１３に手続きの名前を送信し、その手続き名に設定されている動作手順を得、これを実行する。
【００３９】
手続き集合は使用が開始される前に、その手続き集合を使用することが手続き管理部１３に通知される。これを受けて、手続き管理部１３は指定された手続き集合から手続きの検索が行われることを手続き選択部１８に設定する。
【００４０】
この時、先に定義されている手続きの指定により後に定義される手続きの動作が変化しうる、ポストスクリプトのようなＰＤＬを用いる場合には、高速手続き定義を作成したときに前提とした事項を検査する必要がある。
【００４１】
高速手続きは前もって定義されているので、そのデータと組にして検査すべき項目を用意しておくことができる。
【００４２】
手続き選択部１８は、高速手続き定義集合を設定する前に、この指定をチェックするようにすれば正しい動作を期待することができる。
【００４３】
この、最初のチェックには、前提とする手続き定義などを調べるという方法の他に、前提となっている手続き集合の名前と状態を示す数値などから判定することも可能である。例えば、前もって設定されている手続き集合が、システムが設定するものと、ユーザが設定できるものにアプリケーション１、２の辞書へのポインタだけ設定されているものと、アプリケーション１の辞書が先に設定されている場合のみ正しく動作できる手続き定義集合とである場合、先に定義されている定義集合の名前と、少量の状態だけを検査すればよい。
【００４４】
ＰＤＬの実行部分においては、設定した手続き定義が大量に呼び出されてページデータの実行が行われる。
【００４５】
そして、その実行の結果として描画命令が描画部２１に送信される。
【００４６】
入力データ実行部１４は高速手続き定義の実際の定義に従って、通常のＰＤＬを処理する以外に、高速手続きに定義されるコマンドを実行できなければならない。例えば、高速手続き定義が特殊な機能をもった描画部２１の、その特殊機能を指定したものである場合には、その命令を描画部２１に正しく伝えるよう多少の改良を施したものである必要があるし、高速手続き定義が入力データの言語的な実行自体を並列化や機械語による調整を施して高速化したものであれば、これに対応して動作する用に特殊化されたものである必要がある。
【００４７】
図６はこの実施例の処理の流れの概略を示した流れ図である。図６において、データの入力が開始され（Ｓ２００１）、入力データ解析部１２そのデータ中の手続き定義部を検出すると（Ｓ２００２）、手続き定義部を抽出して手続き管理部１３に送信する（Ｓ２００３）。手続き定義部でなければ、読み込んだ記号を手続き管理部１３に問い合わせて、返ってきた結果について、再帰的に問い合わせと実行を繰り返す（Ｓ２００４）。この実行時に描画部２１に動作を指示する命令が発行される。入力データカが終わりで無ければ、入力データに対して同様の処理を繰り返すことになり（Ｓ２００５）、終りであれば終了する。
【００４８】
図７は入力データ解析部１２の本実施例の処理の流れを示した図である。図７において、入力データ解析部１２は入力データを解析し、手続き定義部の開始と終了を検知して、手続き定義部処理モードに入る（Ｓ２１０１、Ｓ２１０２、Ｓ２１０３）。この手続き定義部処理モードでは、手続き定義部分を入力データ内から判定し、これを切り出して手続き管理部１３に送信する（Ｓ２１０４）。この際に、入力データ内のコメントや手続き集合の定義名などから、抽出した手続き定義部の名前を決定して、手続き管理部１３に名前だけを送る操作、あるいは、名前と手続き定義部分のデータとを組にして送る操作、あるいは、名前を判定せず手続き定義部分のデータだけを送るという操作の少なくとも一つを実施する。
【００４９】
入力データの手続き定義部以外の部分については、予め定められているキーワードをトークンとして切り出したり、文字列や数値のデータを切り出したりして、入力データ実行部１４に送信する（Ｓ２１０５）。
【００５０】
ポストスクリプトなどのＰＤＬにおいては手続き定義部のデータを確定するために、入力データ解析部１２の段階で指示されている手続きを実行する必要が生じるが、本実施例はこれを排除するものではない。
【００５１】
図８は手続き管理部１３の、手続き定義の格納時の処理の流れを示している。図８において、手続き管理部１３は手続き定義が抽出されたことを受信すると、抽出された手続き定義集合を特定する「名前」を調べる。この名前は入力データ解析部１２により抽出された際に同時に得られている場合もあるが、データの内容自体から調べることもできる。例えば、手続き定義集合全体について、データを整数値としてかけ算を行った結果の下４桁を取るなど、データの内容自体から「名前」に相当するデータを得ることができる。この時の計算方法は、あらゆる計算方法をとることが可能であるし、データを整数値としてみなすのでは無く、浮動小数を表すデータとしてみなすなど、他のデータ型としてみなして計算することも可能である。また、このデータを数値として演算する前に、手続き定義集合について予め定めた方法により並べ替えを行っておくこともできる（定義の順番のみ入れ替わっていた場合にも同一性が判定できる）。
【００５２】
手続き管理部１３は手続き集合の「名前」を得ると、手続き保持部内に予め用意されている、高速手続き定義の中に、この「名前」を持つものがあるかどうかを調べる（Ｓ２３０１、Ｓ２３０２）。無い場合には、抽出された手続き定義集合は、通常の手続き定義として手続き保持部１７内に保持される（Ｓ２３０３、Ｓ２３０６）。高速手続き定義が見つかった場合には、この抽出された手続き定義集合の代わりに、その高速手続き定義を使用してもよいかどうかの検査を行う（Ｓ２３０３、Ｓ２３０４）。この検査には、高速手続き定義と組み合わせて保持される、定義時検査項目を調べる。この検査項目としては、例えば、抽出された手続き定義集合と定義時検査項目内に保持されているデータの比較を行って一致していることを調べたり、指示された計算方法にしたがって算出された数値の数値が予め指定された数値と一致することを検査したりすることによって行われれる。
【００５３】
この定義時検査項目を検査した結果からも、高速手続き定義の使用に問題がない事が判定されると抽出された手続き定義と特定きれた高速手続き定義は対応するものとしてマークされて、手続き保持部１７内に保持される（Ｓ２３０５、Ｓ２０３７）。
【００５４】
図９は、手続き管理部１３に、手続き定義集合の使用開始が伝えられたときの手続き管理部１３の処理の流れを示す。図９において、使用が開始された手続き定義集合に対して、対応する高速手続き定義のマークが無い場合には、手続き定義集合の使用を手続き選択部１８に通知するだけでよい（Ｓ２４０１、Ｓ２４０２、Ｓ２４０３、Ｓ２４０６）。一方、対応する高速手続き定義のマークがついている場合には、高速手続きと対応して保持されている使用時検査項目の検査を行う（Ｓ２４０３、Ｓ２４０４）。この検査は例えば、先に定義されている定義集合の名前の組み合わせを調べてもよいし、特定の名前の手続きの値を調べてもよいし、予め定められた計算式にしたがって算出される数値が期待する数値と一致するかどうかを調べてもよい。この検査にパスした場合には、使用の開始を通知された手続き定義集合は、高速手続き定義が優先的に使用されることを手続き選択部１８に通知する（Ｓ２４０５、Ｓ２４０７）。また、この検査にパスしなかった場合には、通常の手続きとして手続き選択部１８に通知する（Ｓ２４０６）。
【００５５】
図１０は手続き管理部１３の、手続きの値を求められた時の処理の流れを示し、この図において、値を要求された手続きの名前を、使用の開始が通知されている手続き定義集合の中から検索する（Ｓ２５０１、Ｓ２５０２）。このとき、見付けることが出来なければ、その旨の通知（エラー）を入力データ実行部１４に返す（Ｓ２５０３、Ｓ２５０９）。一方、使用の開始が通知されている手続き定義集合の中から、検索を要求された手続き名が発見された場合、通常の手続き定義集合であれば、通常の手続きの値を返す（Ｓ２５０４、Ｓ２５０７）。また、高速手続き定義集合との対応マークされていた場合には、その高速手続き定義集合が、使用可能であることのチェックと、値を要求された手続き自体の高速手続き定義が使用可能であることをチェックして、高速手続き定義の値を入力データ実行部１４に返す（Ｓ２５０５、Ｓ２５０６、Ｓ２５０８）。これらのチェックが満たされない場合にはどの場合にも通常の手続き定義の値が返される（Ｓ２５０７）。
【００５６】
図１１は手続き管理部１３の、手続きの定義が変更された時の処理の流れを示す。ＰＤＬファイルの実行時に手続きの定義が変更されることがまれにあるが、その場合の処理について説明する。
【００５７】
図１１において、変更を指定された手続きを一旦探し、どの手続き定義集合で見つかるかを検査する（Ｓ２６０１、Ｓ２６０２）。発見された手続き定義集合より優先度の高い手続き定義集合について、順に、変更を指定された手続きが変更されたものとして、使用開始時に行われたチェックを順に行う（Ｓ２６０３）。
【００５８】
そして、優先度の最も高い定義集合に変更された手続きの定義を行う（Ｓ２６０４）。もし、この時の手続きの定義を行う定義集合が、先に見つかる場所を検査して発見された手続き定義集合と同一であった場合には、その手続きの高速手続き使用可能フラグをオフにする（Ｓ２６０５、Ｓ２６０６）。直接手続き名を指定して変更された手続きは、その変更を通常の手続き定義部分に反映させる。そして、対応する高速手続き定義がマークされている場合には、その手続きについての高速手続きの使用可能フラグをオフにする。
【００５９】
図１２は手続き管理部１３の、手続き定義集合の使用の終了が伝えられた時の処理の流れを示し、この図において、使用の終了が伝えられた手続き定義集合に、最初に定義されていた手続き以外の手続きが登録されたかどうかを調べる（Ｓ２７０１、Ｓ２７０２）。登録されていなければ、指定された手続き定義集合の使用の終了を手続き選択部１８に通知するだけでよい（Ｓ２７０３、Ｓ２７０６）。最初に登録されていた手続き以外のものが、新たに登録されていた場合には、その手続き定義集合の使用の終了を手続き選択部１８に通知した後で（Ｓ２７０４）、手続き選択部に使用が登録されている手続き定義集合の高速手続き定義が使用されているものについて、高速手続き定義の使用が可能かどうかを判定するチェックを行う（Ｓ２７０５）。
【００６０】
図１３は高速手続き定義集合として用意されるデータセットの一例を示す図である。
【００６１】
本実施例の簡単な実行例を説明するに辺り、図１４のＰＤＬ記述を入力例として具体的に説明を行う。図１４はポストスクリプトによる記述の例であり、この記述例においては、まずポストスクリプトのコメントを用いて「絵」を作成したアプリケーション・プログラム名と、このＰＤＬで使用する定義集合の名前が埋め込まれている。そして、定義集合のポストスクリプトによる記述が続き、使用する定義集合の設定、具体的な描画命令列、ページ記述の終りの指定と続いている。このＰＤＬファイルを実行して描かれる画像は図１８に示すようなものである。
【００６２】
図１４に示したＰＤＬファイルが入力された場合、入力データ解析部１２はこのＰＤＬファイルの各行を順に読み込み、予め定められたルールにしたがって手続きの定義がなされている部分を切り出す。例えば、図１４の例においては％％定義集合記述開始：Ｔ１＿Ｄｉｃｔという定義集合名コメントに反応することができる。このコメントに反応すると、入力データ解析部１２は手続き定義集合名「Ｔ１＿Ｄｉｃｔ」を手続き管理部１３に渡して指示を出す。手続き管理部１３は手続き保持１７部内に、「Ｔ１＿Ｄｉｃｔ」に対応する高速手続きセットが用意されているか探す。無かった場合には通常のＰＤＬにおける処理と同様になるため、見付かった場合について説明を続ける。
【００６３】
見付かった場合には、見付かった高速手続き定義集合と手続き定義集合の対応が取れているかどうかの検査を行う。この検査の例として、入力データ内での手続きの定義と、高速手続き定義が前提としている手続きの定義とのデータの内容のレベルでの一致検査などを行う他、高速手続き定義集合内に定義時検査として登録されている検査を行う。例えば、高速手続き定義が図１３の様になっていた場合には、定義時に使用開始状態にある手続き定義集合がシステム辞書とユーザ辞書の二つであることをチェックする。以降では高速手続き定義集合のデータをさらに簡略化して説明する。
【００６４】
手続き定義が終了して（図１４の２９行）、図１４の３５行において、この手続き定義集合を使用することが宣言されると、入力データ実行部１４は手続き管理部１３にこの旨を伝える。手続き管理部１３は内部の手続き保持部１７内から指定された手続き定義を探し、これと共に手続き選択部１８に通知する。この際、手続き定義集合のデータ全体あるいは部分を手続き選択部１８に通知してもよいが、そこへのポインタあるいはアドレスなどの間接的なアクセス部を通知することを行ってもよい。
【００６５】
手続き管理部１３内では、この時に指定された手続き定義集合が高速手続き定義集合と関連づけられているものであるかどうかを判定する。この例の場合には高速手続きと関連づけられているものとする。したがって、高速手続き定義集合の中に指定されている、使用開始時の検査項目について判定を行う。この例の場合には、先に使用開始になっている定義集合がシステム辞書とユーザ辞書であることを確認するだけとなっている。ここで検査の結果として高速手続きが使用不可能と判定された場合には、入力データ中で定義された通常の手続き定義データが使用される。
【００６６】
使用可能であることが判定された場合には高速手続きが使用可能な手続き定義集合として、手続き選択部１８に登録される。
【００６７】
手続き定義集合内での使用が開始されている手続き定義集合が格納されている状態の概略を図１５、図１６および図１７に示す。なお図１５は、図１６および図１７に示す部分図のに組み合わせ図である。
【００６８】
次に入力データが、手続きを使用して描画を開始した状態について説明を行う。図１４の３７行において、「１０  ２０  １０」までを入力データ解析部１２が切り出して、入力データ実行部１４内の図示しないオペランドスタックと呼ばれる格納部内に１０、２０、１０の３つの数値データを格納する。その後で「Ｖ」を入力データ解析部１２が切り出し、入力データ実行部１４に通知する。入力データ実行部１４は、手続き管理部１３にこの手続きに対応する値を要求する。手続き管理部は、「Ｖ」がＴｉ＿Ｄｉｃｔ内に定義されていることを見出し、その対応するデータとして、「Ｖ」に対応する高速手続き定義を回答する。
【００６９】
入力データ実行部１４は手続き管理部１３から回答されたものが高速手続き定義であることを検知して、高速手続きの実行モードに入り、これを実行する。高速手続きは描画コプロセッサ用のコマンドである場合や、入力データ実行部がその上で動いているプロセッサ用のネィティブコードであったり、並列命令を含んだ命令列であったり様々な場合が想定される。
【００７０】
一例として、入力データ実行部１４が、汎用ＣＰＵ上で動作するエミュレーションソフトウェアとして構成されており、その時、高速手続き定義にはそのエミュレーションソフトウェアが動作しているＣＰＵ用のネイティブ・コードと呼ばれる、そのＣＰＵのマシンコードで記述されていた場合を挙げる。従来は、手続き定義「Ｖ」を実行するために「ｄｕｐ」を検索し、エミュレーションブログラムで実行し、エミュレーションプログラムの状態を確認してから４をエミュレーションプログラム内で評価して、オペレンドスタックにつんで、エミュレーションブログラムの状態を検査する。さらにこれらのステップに続けて、エミュレーションプログラムの制御のために多くのＣＰＵのステップを必要としていた。この実施例においては、高速手続き定義側をＣＰＵのネイティブ・コードで作成しており、この制御が必要無くなる。そして、無駄な処理を省くなどのさらなる高速化を図ることができる。
【００７１】
【発明の効果】
以上のように、本発明の描画処理装置によれば、入力画像データ中で定義された手続きを、逐次ＰＤＬを翻訳することなく、あるいは一部翻訳することなく、描画処理装置がまとめて高速に実行可能な方法で実行することによって、ＰＤＬで記述された画像データを高速にラスタ画像データに変換することができる。
【図面の簡単な説明】
【図１】この発明の第１の実施例の構成を示すブロック図である。
【図２】第１の実施例の入力データの例を示す図である。
【図３】第１の実施例の入力データ解析部１２の処理の流れの概略を示すフローチャートである。
【図４】第１の実施例の入力データ実行部１４の処理の流れの概略を示すフローチャートである。
【図５】この発明の第２の実施例の構成を示すブロック図である。
【図６】第２の実施例の処理の流れの概略を示すフローチャートである。
【図７】第２の実施例の入力データ解析部１２の処理の流れを示すフローチャートである。
【図８】第２の実施例の手続き管理部１３の、手続き定義の格納時の処理の流れを示すフローチャートである。
【図９】第２の実施例の手続き管理部１３の、手続き定義集合の使用開始を伝えられたときの処理の流れを示すフローチャートである。
【図１０】第２の実施例の手続き管理部１３の、手続きの値を求められた時の処理の流れを示すフローチャートである。
【図１１】第２の実施例の手続き管理部１３の、手続きの定義が変更された時の処理の流れを示すフローチャートである。
【図１２】第２の実施例の手続き管理部１３の、手続き定義集合の使用の終了が伝えられた時の処理の流れを示すフローチャートである。
【図１３】第２の実施例の高速手続き定義集合として用意されるデータセットの一例を示す図である。
【図１４】第２の実施例のＰＤＬ記述の例を示す図である。
【図１５】図１６および図１７の組み合わせを示す図である。
【図１６】図１２のデータセットの動作状態を説明する図である。
【図１７】図１２のデータセットの動作状態を説明する図である。
【図１８】図１４のＰＤＬ記述により生成される画像を示す図である。
【符号の説明】
１１    入力部
１２    入力データ解析部
１３    手続き管理部
１４    入力データ実行部
１５    描画部
１６    高速描画部
１７    手続き保持部
１８    手続き選択部
２０    定義集合一致性判定部
【図１】
0003796813.tif 000002
【図２】
0003796813.tif 000003
【図３】
0003796813.tif 000004
【図４】
0003796813.tif 000005
【図５】
0003796813.tif 000006
【図６】
0003796813.tif 000007
【図７】
0003796813.tif 000008
【図８】
0003796813.tif 000009
【図９】
0003796813.tif 000010
【図１０】
0003796813.tif 000011
【図１１】
0003796813.tif 000012
【図１２】
0003796813.tif 000013
【図１３】
0003796813.tif 000014
【図１４】
0003796813.tif 000015
【図１５】
0003796813.tif 000016
【図１６】
0003796813.tif 000017
【図１７】
0003796813.tif 000018
【図１８】
0003796813.tif 000019