JP3796813B2 - 描画処理装置 - Google Patents
描画処理装置 Download PDFInfo
- Publication number
- JP3796813B2 JP3796813B2 JP11810196A JP11810196A JP3796813B2 JP 3796813 B2 JP3796813 B2 JP 3796813B2 JP 11810196 A JP11810196 A JP 11810196A JP 11810196 A JP11810196 A JP 11810196A JP 3796813 B2 JP3796813 B2 JP 3796813B2
- Authority
- JP
- Japan
- Prior art keywords
- procedure
- definition
- speed
- data
- input data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
- Devices For Executing Special Programs (AREA)
- User Interface Of Digital Computer (AREA)
- Record Information Processing For Printing (AREA)
- Digital Computer Display Output (AREA)
Description
【発明の属する技術分野】
この発明は、ポストスクリプト(PostScript、米国アドビ・システムズ社の商標)のようにプログラム言語的な側面を持つページ記述言語(PDL:Page Description Language)で記述された入力データに基づいて描画を行う描画処理装置に関し、とくに入力データのプログラム実行部分を高速処理するようにしたものである。
【0002】
【従来の技術】
ポストスクリプトで記述されたファイルは、様々なコンピュータ上でも共通のプログラムコードにより実行される。このようなプログラムついては、処理するコンピュータ上に仮想的なインタプリタマシンを構成して、このインタプリタマシン上で入力プログラムの解釈実行を行うということを行っている。
【0003】
一般的にプログラム言語では、プログラムの可読性や変更の容易性やコンパクト性の理由から、一連の演算の集合に一つの名前をつけてまとめ、手続きとして定義することが可能であり、プログラム中でその名前が現れると、定義された一連の演算が実行される。
【0004】
ところがインタプリタマシン上でプログラムが実行される場合には、このようなユーザ定義の手続きは、呼び出される毎に毎回一連の演算をひとつずつ解釈して実行するために、インタプリタの内部手続き(オペレータ)の実行と比較すると非常に効率が悪くなっている。
【0005】
このようなインタプリタ用の入力プログラムを高速に処理する例として、データ解析とグラフィックスの対話環境の提供とに使用されるS言語がある。このS言語の利用環境において、S言語で記述された内容を前処理により構文解析し、その結果をセーブしておき、実行時にはこのセーブされた内容を使用して高速実行を図る例が特開平5−173798号公報に開示されている。
【0006】
しかし、PDLにおいては実行結果である描画された出力に意味があり、そのプログラムは出力される画像ごとに異なっているという問題があり。このためネイティブ(native)・コードに変換して実行速度を上げるためには、PDLの入力ごとに毎回ネイティブ・コードへの変換を行う必要が生じてしまう。そして、この方法ではネイティブ・コードを生成する処理のオーバヘッドにより実行時の処理の高速化の効果が十分に得られない。
【0007】
ところで、PDLのプログラム言語的な側面は、アプリケーションプログラムが持つグラフィックモデルと出力フォーマットに選んだPDLのグラフィックモデルとの変換のためなどに多用される傾向がある。このような例として、異なるPDL間の変換をPDLのプログラム言語的な側面を利用して解決することが、特開平5−108282号公報に開示されている。これらの理由からも、PDLのプログラム的な側面、特に仮想的なインタプリタマシン上で動作するように想定されているPDL内のインタプリタプログラムを高速に実行する手段が求められている。
【0008】
【発明が解決しようとする課題】
本発明の目的は、PDLファイル内に含まれているインタプリタプログラムの実行を高速に行えるようにすることである。
【0009】
【課題を解決するための手段】
この発明では、以上の目的を達成するために、ページ記述言語で記述された入力データを解釈・実行してラスタ画像を生成する描画処理装置に、少なくとも1つの手続きについて、対応する高速描画用のデータを保持する高速描画用データ保持手段と、上記入力データから手続き呼び出しを検出する手段と、上記検出された手続き呼び出しが上記少なくとも1つの手続きに該当するときに上記対応する高速描画用のデータを出力する手段と、上記対応する高速描画用のデータに基づいて画像データを生成する手段とを設けるようにしている。
【0010】
この構成においては、入力データ(PDL)で定義された所定の手続きを解釈実行するかわりに、あらかじめ保持されている高速描画手続きを用いて上記所定の手続きの解釈・実行と同等の処理を行い、従来繰り返し実行されるインタプリタプログラムを高速実行する。すなわち繰り返し行われる解釈・実行の操作を減少させることによりPDLの処理を高速に実行する。
【0011】
また、この発明によれば、以上の目的を達成するために、ページ記述言語で記述された入力データを解釈・実行してラスタ画像を生成する描画処理装置に、少なくとも1つの手続きについて、対応する高速描画用のデータを保持する高速描画用データ保持手段と、上記入力データから手続きの定義を抽出する手段と、上記抽出した手続きの定義を保持する手段と、上記入力データから手続き呼び出しを検出する手段と、上記検出された手続き呼び出しが上記少なくとも1つの手続きに該当するときに上記対応する高速描画用のデータを出力する手段と、上記検出された手続き呼び出しが上記少なくとも1つの手続きに該当しないときに上記抽出した手続きの定義を出力する手段と、上記出力された手続きの定義解釈・実行して、対応する描画用のデータを生成する手段と、上記対応する描画用のデータおよび上記対応する高速描画用のデータに基づいて画像データを生成する手段とを設けるようにしている。
【0012】
この構成においても、繰り返し行われる解釈・実行の操作を減少させることによりPDLの処理を高速に実行することができる。
【0013】
以上の構成においては、上記高速描画用データ保持手段は、手続きの属するグループとグループ間の依存関係を保持し、グループ毎に高速描画用データを出力するかどうかを設定するようにしてもよい。
【0014】
また、上記高速描画用のデータが、機械語で構成された描画命令列であるようにしてもよい。
【0015】
また、上記高速描画用のデータが、上記画像データを生成する手段において並列に実行される描画命令であるようにできる。
【0016】
また、上記描画処理装置に、上記抽出した手続き定義が上記少なくとも1つの手続きの定義と同一かどうかを判断する手段を設けるようにしてもよい。
【0017】
また、上記抽出した手続き定義を、上記少なくとも1つの手続きに対応して保持される手続き定義に比較して、上記抽出した手続き定義が上記少なくとも1つの手続きの定義と同一かどうかを判断するようにしてもよい。
【0018】
また、上記抽出した手続き定義に対して所定の演算を実行して生成された値を、上記少なくとも1つの手続きに対応して保持されている値に比較して、上記抽出した手続き定義が上記少なくとも1つの手続きの定義と同一かどうかを判断するようにしてもよい。
【0019】
また、手続きに対して複数の高速描画用のデータを有し、上記手続きの名前と動作時の状態から算出される値とに基づいて1の高速描画用のデータを選択して出力するようにしてもよい。
【0020】
また、上記動作時の状態から算出される値は、グループ間の依存関係とグループに割り当てられた数値とから算出されるようにしてもよい。
【0021】
また、この発明によれば、上述の目的を達成するために、PDLファイルに含まれる可能性のあるインタプリタプログラムをそれを実行するハードウエアのネイティブ・コードなどに変換したコード群を保持し、PDLファイル内で指定されるインタプリタプログラム部について判定を行い、判定されたインタプリタプログラム部と対応のとれる変換コードを利用できるようにし、該インタプリタプログラム部について実行すべき段階で変換コードを選択して実行するようにしている。
【0022】
この構成においても、繰り返し行われる解釈・実行の操作を減少させることによりPDLの処理を高速に実行することができる。
【0023】
【発明の実施の態様】
以下この発明の実施例について説明する。図1はこの発明の第1の実施例を示し、この図において、描画処理装置は入力部11、入力データ解析部12、手続き管理部13、入力データ実行部14、描画部15および高速描画部16を有している。入力部11は、PDLで記述(プログラム)された入力データを図示しないネットワークインタフェ−スあるいは、図示しないハードディスクやRAM(Random Access Memory)などの記憶装置から読み込むものである。入力データ解析部12は、入力部11から入力データを受取り、入力データから手続きの定義を検出するものである。この検出には、コンパイラなどで一般に用いられている構文解析のアルゴリズムを用いることができる。
【0024】
手続き管理部13は、手続き保持部17と手続き選択部18とからなる。手続き保持部17は、入力データ解析部12が抽出した手続きの定義を、手続き名前を検素キーとしてデータベースに登録するものである。例えば、名前と手続きとのペアを記録しておき、文字列のパターンマッチングを用いてマッチした名前によって手続きを特定することができる。手続き保持部17は、さらに、入力データにおいて定義可能な手続きと等価な処理を行なう高速描画手続きとこの高速描画手続きを特定する名前とを保持する。高速描画手続きは、入力データ実行部14が直接実行可能な、コンパイルされた機械語命令列や、高速描画可能な専用の描画装置への描画コマンドや複数の描画装置に対する並列描画処理命令などから構成することができる。
【0025】
手続き選択部18は、手続きの名前をキーとして、手続き保持部17に問い合わせを行ない、手続き保持部17から返された結果が、入力データで定義された手続きのみの場合は、入力データで定義された手続きをそのまま出力し、入力データで定義された手続きと高速描画手続きとの場合は高速描画手続きを出力する。
【0026】
入力データ実行部14は、入力データを解釈して実行する。解釈した入力データが手続きの場合には、手続き管理部13に対して問い合わせを行ない、該当する手続きを獲得し、獲得した手続きを解釈して実行を続ける。解釈した入力データが描画命令または高速描画命令の場合には、描画部15または高速描画部16に対して命令の実行を指示する。描画部15および高速描画部16は描画命令および高速描画命令に基づいて出力画像19を生成する。
【0027】
つぎにこの実施例の動作について説明する。ここでは図2に示すPDL記述の入力例(PDLファイル)を用いて説明する。
【0028】
図1において、図2に示したPDLファイルを入力すると、入力部11はこのPDLファイルの行を順に読み込んで、入力データ解析部12に渡す。入力データ解析部12は、PDLファイルの1行から9行を手続きの定義であると判断し、手続き保持部17に手続き名boxをキーとして登録する。この例では、手続きboxと等価な高速描画手続きが登録されているとする。したがって、手続き名boxをキーとしてPDLに記述されている手続きと高速描画手続きの2つが登録されたことになる。
【0029】
続いて、11行目の100 100 20 30 boxの行が読み込まれると、入力データ実行部14は、手続き名boxを手続き管理部13に間合わせる。手続き管理部13では、手続き保持部17に対してboxをキーとして問い合わせを行ない、入力PDLファイルで定義された手続きとあらかじめ登録されていた高速描画手続きとから高速描画手続きを手続き選択部18が選択して、入力データ実行部14に高速描画手続きを返す。
【0030】
入力データ実行部14は、高速描画手続き中の高速描画命令を高速描画部16に発行する。高速描画部16が四角形を高速に描画する機能を備えるときは、四角形の描画命令とパラメータ「100 100 20 30」(左下の座標が(100,100)、幅が20、高さが30)を描画命令としてもよいし、高速描画部16が四角形を高速に描画する機能はないが、直線を高速に描画可能な場合には4つの直線描画命令を発行してもよい。また、高速描画部16が複数の描画部から構成されている場合には、たとえば4つの描画部から構成されているとすると、4角直線描画命令をそれぞれの描画部に並列に実行するように発効してもよい。以上により結果として、高速描画部16によって出力画像に四角形が描画される。
【0031】
入力データ解析部12で検出された手続き名に対して、手続き保持部17に通常の手続き定義のみ保持され高速描画手続きが保持されていないときには、その通常の手続きの行が順次に入力データ実行部14に送られ、通常どおり解釈・実行され、その結果、描画命令が生成され、描画部15に送られる。そして出力画像19が生成される。
【0032】
手続き定義や、手続き名を含む行以外の行は、そのまま入力データ実行部14に送られて通常どおりに解釈・実行される。
【0033】
なお、上述の例においては、高速描画手続きは高速描画部16への描画命令列に対応するものとしたが、描画部15への描画命令列を含んでいてもよい。また高速描画部16を設けない場合には、高速描画手続きを描画部15への描画命令列のみで構成してもよい。
【0034】
図3および図4はそれぞれ上述実施例の入力データ解析部12および入力データ実行部14の動作の詳細を説明するものである。入力データ解析部12および入力データ実行部14の動作はこれらの図のみで十分に説明されているので、ここでは説明を行わない。
【0035】
つぎにこの発明の第2の実施例について説明する。図5はこの発明の第2の実施例を示している。この実施例においては、手続き管理部13が手続き保持部17と手続き選択部18とに加え、手続き保持部17に保持されている高速手続き集合と入力データ解析部12により抽出した手続き集合が対応するものであることを検査する同一性判定部20を備えている。なお図5において図1と対応する箇所には対応する符号を付して詳細な説明を省略する。
【0036】
図5において、入力データ解析部12は、PDLファイルを受け取るとともに、入力データ中の手続き定義部分とその手続き定義集合の名前あるいはIDなどを検出する。PDLが例えばポストスクリプトであった場合には手続き定義部分とは辞書と呼ばれるデータの定義部分であり、手続きの定義と共にローカルに使用される変数の定義も含む。そして、この場合には手続き定義集合の開始と終りにはしばしば、ポストスクリプトのコメントを使用してその辞書データを定義して、使用する由来となるクリエータの名前などが判定できるようになっている。入力データ解析部12はこのコメントを元に手続き定義集合の名前あるいはIDを決定することも、辞書データの名前をもとに手続き定義集合の名前あるいはIDを決定することも、あるいは、辞書を解釈してその中身から算出される数値をIDとして使用することもできる。どの場合にも、入力データ解析部12は手続きの定義部分を抽出して、手続き集合の名前あるいはIDをつけて手続き管理部13に送信する。
【0037】
手続き管理部13では、入力データ解析部12から得た手続き定義集合のIDを元に、手続き保持部17内に用意されている高速手続き定義集合を選び出す。ここで見つからない場合には、入力PDLファイル内で定義されている手続き定義のデータがそのまま使用されて後の処理が行われる。すなわち通常のPDLファイルを処理する動作と変化の無い動作となる。対応する高速手続き定義集合が存在した場合には、入力データ解析部12により抽出された手続き定義と、対応が判定された高速手続き定義集合とが、組み合わせた形で、手続き保持部17内に保持される。
【0038】
PDLファイル内の実行部分が入力されると、入力データ実行部14は手続き管理部13に手続きの名前を送信し、その手続き名に設定されている動作手順を得、これを実行する。
【0039】
手続き集合は使用が開始される前に、その手続き集合を使用することが手続き管理部13に通知される。これを受けて、手続き管理部13は指定された手続き集合から手続きの検索が行われることを手続き選択部18に設定する。
【0040】
この時、先に定義されている手続きの指定により後に定義される手続きの動作が変化しうる、ポストスクリプトのようなPDLを用いる場合には、高速手続き定義を作成したときに前提とした事項を検査する必要がある。
【0041】
高速手続きは前もって定義されているので、そのデータと組にして検査すべき項目を用意しておくことができる。
【0042】
手続き選択部18は、高速手続き定義集合を設定する前に、この指定をチェックするようにすれば正しい動作を期待することができる。
【0043】
この、最初のチェックには、前提とする手続き定義などを調べるという方法の他に、前提となっている手続き集合の名前と状態を示す数値などから判定することも可能である。例えば、前もって設定されている手続き集合が、システムが設定するものと、ユーザが設定できるものにアプリケーション1、2の辞書へのポインタだけ設定されているものと、アプリケーション1の辞書が先に設定されている場合のみ正しく動作できる手続き定義集合とである場合、先に定義されている定義集合の名前と、少量の状態だけを検査すればよい。
【0044】
PDLの実行部分においては、設定した手続き定義が大量に呼び出されてページデータの実行が行われる。
【0045】
そして、その実行の結果として描画命令が描画部21に送信される。
【0046】
入力データ実行部14は高速手続き定義の実際の定義に従って、通常のPDLを処理する以外に、高速手続きに定義されるコマンドを実行できなければならない。例えば、高速手続き定義が特殊な機能をもった描画部21の、その特殊機能を指定したものである場合には、その命令を描画部21に正しく伝えるよう多少の改良を施したものである必要があるし、高速手続き定義が入力データの言語的な実行自体を並列化や機械語による調整を施して高速化したものであれば、これに対応して動作する用に特殊化されたものである必要がある。
【0047】
図6はこの実施例の処理の流れの概略を示した流れ図である。図6において、データの入力が開始され(S2001)、入力データ解析部12そのデータ中の手続き定義部を検出すると(S2002)、手続き定義部を抽出して手続き管理部13に送信する(S2003)。手続き定義部でなければ、読み込んだ記号を手続き管理部13に問い合わせて、返ってきた結果について、再帰的に問い合わせと実行を繰り返す(S2004)。この実行時に描画部21に動作を指示する命令が発行される。入力データカが終わりで無ければ、入力データに対して同様の処理を繰り返すことになり(S2005)、終りであれば終了する。
【0048】
図7は入力データ解析部12の本実施例の処理の流れを示した図である。図7において、入力データ解析部12は入力データを解析し、手続き定義部の開始と終了を検知して、手続き定義部処理モードに入る(S2101、S2102、S2103)。この手続き定義部処理モードでは、手続き定義部分を入力データ内から判定し、これを切り出して手続き管理部13に送信する(S2104)。この際に、入力データ内のコメントや手続き集合の定義名などから、抽出した手続き定義部の名前を決定して、手続き管理部13に名前だけを送る操作、あるいは、名前と手続き定義部分のデータとを組にして送る操作、あるいは、名前を判定せず手続き定義部分のデータだけを送るという操作の少なくとも一つを実施する。
【0049】
入力データの手続き定義部以外の部分については、予め定められているキーワードをトークンとして切り出したり、文字列や数値のデータを切り出したりして、入力データ実行部14に送信する(S2105)。
【0050】
ポストスクリプトなどのPDLにおいては手続き定義部のデータを確定するために、入力データ解析部12の段階で指示されている手続きを実行する必要が生じるが、本実施例はこれを排除するものではない。
【0051】
図8は手続き管理部13の、手続き定義の格納時の処理の流れを示している。図8において、手続き管理部13は手続き定義が抽出されたことを受信すると、抽出された手続き定義集合を特定する「名前」を調べる。この名前は入力データ解析部12により抽出された際に同時に得られている場合もあるが、データの内容自体から調べることもできる。例えば、手続き定義集合全体について、データを整数値としてかけ算を行った結果の下4桁を取るなど、データの内容自体から「名前」に相当するデータを得ることができる。この時の計算方法は、あらゆる計算方法をとることが可能であるし、データを整数値としてみなすのでは無く、浮動小数を表すデータとしてみなすなど、他のデータ型としてみなして計算することも可能である。また、このデータを数値として演算する前に、手続き定義集合について予め定めた方法により並べ替えを行っておくこともできる(定義の順番のみ入れ替わっていた場合にも同一性が判定できる)。
【0052】
手続き管理部13は手続き集合の「名前」を得ると、手続き保持部内に予め用意されている、高速手続き定義の中に、この「名前」を持つものがあるかどうかを調べる(S2301、S2302)。無い場合には、抽出された手続き定義集合は、通常の手続き定義として手続き保持部17内に保持される(S2303、S2306)。高速手続き定義が見つかった場合には、この抽出された手続き定義集合の代わりに、その高速手続き定義を使用してもよいかどうかの検査を行う(S2303、S2304)。この検査には、高速手続き定義と組み合わせて保持される、定義時検査項目を調べる。この検査項目としては、例えば、抽出された手続き定義集合と定義時検査項目内に保持されているデータの比較を行って一致していることを調べたり、指示された計算方法にしたがって算出された数値の数値が予め指定された数値と一致することを検査したりすることによって行われれる。
【0053】
この定義時検査項目を検査した結果からも、高速手続き定義の使用に問題がない事が判定されると抽出された手続き定義と特定きれた高速手続き定義は対応するものとしてマークされて、手続き保持部17内に保持される(S2305、S2037)。
【0054】
図9は、手続き管理部13に、手続き定義集合の使用開始が伝えられたときの手続き管理部13の処理の流れを示す。図9において、使用が開始された手続き定義集合に対して、対応する高速手続き定義のマークが無い場合には、手続き定義集合の使用を手続き選択部18に通知するだけでよい(S2401、S2402、S2403、S2406)。一方、対応する高速手続き定義のマークがついている場合には、高速手続きと対応して保持されている使用時検査項目の検査を行う(S2403、S2404)。この検査は例えば、先に定義されている定義集合の名前の組み合わせを調べてもよいし、特定の名前の手続きの値を調べてもよいし、予め定められた計算式にしたがって算出される数値が期待する数値と一致するかどうかを調べてもよい。この検査にパスした場合には、使用の開始を通知された手続き定義集合は、高速手続き定義が優先的に使用されることを手続き選択部18に通知する(S2405、S2407)。また、この検査にパスしなかった場合には、通常の手続きとして手続き選択部18に通知する(S2406)。
【0055】
図10は手続き管理部13の、手続きの値を求められた時の処理の流れを示し、この図において、値を要求された手続きの名前を、使用の開始が通知されている手続き定義集合の中から検索する(S2501、S2502)。このとき、見付けることが出来なければ、その旨の通知(エラー)を入力データ実行部14に返す(S2503、S2509)。一方、使用の開始が通知されている手続き定義集合の中から、検索を要求された手続き名が発見された場合、通常の手続き定義集合であれば、通常の手続きの値を返す(S2504、S2507)。また、高速手続き定義集合との対応マークされていた場合には、その高速手続き定義集合が、使用可能であることのチェックと、値を要求された手続き自体の高速手続き定義が使用可能であることをチェックして、高速手続き定義の値を入力データ実行部14に返す(S2505、S2506、S2508)。これらのチェックが満たされない場合にはどの場合にも通常の手続き定義の値が返される(S2507)。
【0056】
図11は手続き管理部13の、手続きの定義が変更された時の処理の流れを示す。PDLファイルの実行時に手続きの定義が変更されることがまれにあるが、その場合の処理について説明する。
【0057】
図11において、変更を指定された手続きを一旦探し、どの手続き定義集合で見つかるかを検査する(S2601、S2602)。発見された手続き定義集合より優先度の高い手続き定義集合について、順に、変更を指定された手続きが変更されたものとして、使用開始時に行われたチェックを順に行う(S2603)。
【0058】
そして、優先度の最も高い定義集合に変更された手続きの定義を行う(S2604)。もし、この時の手続きの定義を行う定義集合が、先に見つかる場所を検査して発見された手続き定義集合と同一であった場合には、その手続きの高速手続き使用可能フラグをオフにする(S2605、S2606)。直接手続き名を指定して変更された手続きは、その変更を通常の手続き定義部分に反映させる。そして、対応する高速手続き定義がマークされている場合には、その手続きについての高速手続きの使用可能フラグをオフにする。
【0059】
図12は手続き管理部13の、手続き定義集合の使用の終了が伝えられた時の処理の流れを示し、この図において、使用の終了が伝えられた手続き定義集合に、最初に定義されていた手続き以外の手続きが登録されたかどうかを調べる(S2701、S2702)。登録されていなければ、指定された手続き定義集合の使用の終了を手続き選択部18に通知するだけでよい(S2703、S2706)。最初に登録されていた手続き以外のものが、新たに登録されていた場合には、その手続き定義集合の使用の終了を手続き選択部18に通知した後で(S2704)、手続き選択部に使用が登録されている手続き定義集合の高速手続き定義が使用されているものについて、高速手続き定義の使用が可能かどうかを判定するチェックを行う(S2705)。
【0060】
図13は高速手続き定義集合として用意されるデータセットの一例を示す図である。
【0061】
本実施例の簡単な実行例を説明するに辺り、図14のPDL記述を入力例として具体的に説明を行う。図14はポストスクリプトによる記述の例であり、この記述例においては、まずポストスクリプトのコメントを用いて「絵」を作成したアプリケーション・プログラム名と、このPDLで使用する定義集合の名前が埋め込まれている。そして、定義集合のポストスクリプトによる記述が続き、使用する定義集合の設定、具体的な描画命令列、ページ記述の終りの指定と続いている。このPDLファイルを実行して描かれる画像は図18に示すようなものである。
【0062】
図14に示したPDLファイルが入力された場合、入力データ解析部12はこのPDLファイルの各行を順に読み込み、予め定められたルールにしたがって手続きの定義がなされている部分を切り出す。例えば、図14の例においては%%定義集合記述開始:T1_Dictという定義集合名コメントに反応することができる。このコメントに反応すると、入力データ解析部12は手続き定義集合名「T1_Dict」を手続き管理部13に渡して指示を出す。手続き管理部13は手続き保持17部内に、「T1_Dict」に対応する高速手続きセットが用意されているか探す。無かった場合には通常のPDLにおける処理と同様になるため、見付かった場合について説明を続ける。
【0063】
見付かった場合には、見付かった高速手続き定義集合と手続き定義集合の対応が取れているかどうかの検査を行う。この検査の例として、入力データ内での手続きの定義と、高速手続き定義が前提としている手続きの定義とのデータの内容のレベルでの一致検査などを行う他、高速手続き定義集合内に定義時検査として登録されている検査を行う。例えば、高速手続き定義が図13の様になっていた場合には、定義時に使用開始状態にある手続き定義集合がシステム辞書とユーザ辞書の二つであることをチェックする。以降では高速手続き定義集合のデータをさらに簡略化して説明する。
【0064】
手続き定義が終了して(図14の29行)、図14の35行において、この手続き定義集合を使用することが宣言されると、入力データ実行部14は手続き管理部13にこの旨を伝える。手続き管理部13は内部の手続き保持部17内から指定された手続き定義を探し、これと共に手続き選択部18に通知する。この際、手続き定義集合のデータ全体あるいは部分を手続き選択部18に通知してもよいが、そこへのポインタあるいはアドレスなどの間接的なアクセス部を通知することを行ってもよい。
【0065】
手続き管理部13内では、この時に指定された手続き定義集合が高速手続き定義集合と関連づけられているものであるかどうかを判定する。この例の場合には高速手続きと関連づけられているものとする。したがって、高速手続き定義集合の中に指定されている、使用開始時の検査項目について判定を行う。この例の場合には、先に使用開始になっている定義集合がシステム辞書とユーザ辞書であることを確認するだけとなっている。ここで検査の結果として高速手続きが使用不可能と判定された場合には、入力データ中で定義された通常の手続き定義データが使用される。
【0066】
使用可能であることが判定された場合には高速手続きが使用可能な手続き定義集合として、手続き選択部18に登録される。
【0067】
手続き定義集合内での使用が開始されている手続き定義集合が格納されている状態の概略を図15、図16および図17に示す。なお図15は、図16および図17に示す部分図のに組み合わせ図である。
【0068】
次に入力データが、手続きを使用して描画を開始した状態について説明を行う。図14の37行において、「10 20 10」までを入力データ解析部12が切り出して、入力データ実行部14内の図示しないオペランドスタックと呼ばれる格納部内に10、20、10の3つの数値データを格納する。その後で「V」を入力データ解析部12が切り出し、入力データ実行部14に通知する。入力データ実行部14は、手続き管理部13にこの手続きに対応する値を要求する。手続き管理部は、「V」がTi_Dict内に定義されていることを見出し、その対応するデータとして、「V」に対応する高速手続き定義を回答する。
【0069】
入力データ実行部14は手続き管理部13から回答されたものが高速手続き定義であることを検知して、高速手続きの実行モードに入り、これを実行する。高速手続きは描画コプロセッサ用のコマンドである場合や、入力データ実行部がその上で動いているプロセッサ用のネィティブコードであったり、並列命令を含んだ命令列であったり様々な場合が想定される。
【0070】
一例として、入力データ実行部14が、汎用CPU上で動作するエミュレーションソフトウェアとして構成されており、その時、高速手続き定義にはそのエミュレーションソフトウェアが動作しているCPU用のネイティブ・コードと呼ばれる、そのCPUのマシンコードで記述されていた場合を挙げる。従来は、手続き定義「V」を実行するために「dup」を検索し、エミュレーションブログラムで実行し、エミュレーションプログラムの状態を確認してから4をエミュレーションプログラム内で評価して、オペレンドスタックにつんで、エミュレーションブログラムの状態を検査する。さらにこれらのステップに続けて、エミュレーションプログラムの制御のために多くのCPUのステップを必要としていた。この実施例においては、高速手続き定義側をCPUのネイティブ・コードで作成しており、この制御が必要無くなる。そして、無駄な処理を省くなどのさらなる高速化を図ることができる。
【0071】
【発明の効果】
以上のように、本発明の描画処理装置によれば、入力画像データ中で定義された手続きを、逐次PDLを翻訳することなく、あるいは一部翻訳することなく、描画処理装置がまとめて高速に実行可能な方法で実行することによって、PDLで記述された画像データを高速にラスタ画像データに変換することができる。
【図面の簡単な説明】
【図1】この発明の第1の実施例の構成を示すブロック図である。
【図2】第1の実施例の入力データの例を示す図である。
【図3】第1の実施例の入力データ解析部12の処理の流れの概略を示すフローチャートである。
【図4】第1の実施例の入力データ実行部14の処理の流れの概略を示すフローチャートである。
【図5】この発明の第2の実施例の構成を示すブロック図である。
【図6】第2の実施例の処理の流れの概略を示すフローチャートである。
【図7】第2の実施例の入力データ解析部12の処理の流れを示すフローチャートである。
【図8】第2の実施例の手続き管理部13の、手続き定義の格納時の処理の流れを示すフローチャートである。
【図9】第2の実施例の手続き管理部13の、手続き定義集合の使用開始を伝えられたときの処理の流れを示すフローチャートである。
【図10】第2の実施例の手続き管理部13の、手続きの値を求められた時の処理の流れを示すフローチャートである。
【図11】第2の実施例の手続き管理部13の、手続きの定義が変更された時の処理の流れを示すフローチャートである。
【図12】第2の実施例の手続き管理部13の、手続き定義集合の使用の終了が伝えられた時の処理の流れを示すフローチャートである。
【図13】第2の実施例の高速手続き定義集合として用意されるデータセットの一例を示す図である。
【図14】第2の実施例のPDL記述の例を示す図である。
【図15】図16および図17の組み合わせを示す図である。
【図16】図12のデータセットの動作状態を説明する図である。
【図17】図12のデータセットの動作状態を説明する図である。
【図18】図14のPDL記述により生成される画像を示す図である。
【符号の説明】
11 入力部
12 入力データ解析部
13 手続き管理部
14 入力データ実行部
15 描画部
16 高速描画部
17 手続き保持部
18 手続き選択部
20 定義集合一致性判定部
Claims (9)
- ページ記述言語で記述された入力データを解釈・実行してラスタ画像を生成する描画処理装置において、
手続きについての手続き定義を含む入力データを受け取る手段と、
上記入力データを受け取るより前から予め少なくとも1つの手続きについて、対応する高速描画用のデータを保持する高速描画用データ保持手段と、
上記入力データから手続きの定義を抽出する手段と、
上記抽出した手続きの定義を保持する手段と、
上記入力データから手続き呼び出しを検出する手段と、
上記検出された手続き呼び出しが上記少なくとも1つの手続きに該当するときに上記対応する高速描画用のデータを出力する手段と、
上記検出された手続き呼び出しが上記少なくとも1つの手続きに該当しないときに上記抽出した手続きの定義を出力する手段と、
上記出力された手続きの定義解釈・実行して、対応する描画用のデータを生成する手段と、
上記対応する描画用のデータおよび上記対応する高速描画用のデータに基づいて画像データを生成する手段とを有することを特徴とする描画処理装置。 - 上記高速描画用データ保持手段は、手続き集合と手続き集合との間の依存関係を保持し、手続き集合毎に高速描画用データを出力するかどうかを設定する請求項1記載の描画処理装置。
- 上記高速描画用のデータが、機械語で構成された描画命令列である請求項1または2記載の描画処理装置。
- 上記高速描画用のデータが、上記画像データを生成する手段において並列に実行される描画命令である請求項1または2記載の描画処理装置。
- 上記抽出した手続きの定義が上記少なくとも1つの手続きの定義と同一かどうかを判断する手段を有する請求項1、2または3記載の描画処理装置。
- 上記抽出した手続き定義に対して所定の演算を実行して生成された値を、上記少なくとも1つの手続きに対応して保持されている値に比較して、上記抽出した手続き定義が上記少なくとも1つの手続きの定義と同一かどうかを判断する請求項5記載の描画処理装置。
- 手続き集合に対して複数の高速描画用手続き集合を有し、上記手続き集合の名前と動作時の状態から算出される値とに基づいて1の高速描画用手続き集合に含まれる高速描画用データを選択して出力する請求項1、2、3、4、5、6または7記載の描画処理装置。
- 上記動作時の状態から算出される値は、手続き集合間の依存関係と手続き集合に割り当てられた数値とから算出される請求項8記載の描画処理装置。
- ページ記述言語で記述されるファイルを、所定のCPUをエミュレートして他のCPUで実行する、ページ記述言語で記述されたファイルの実行方法において、
上記ページ記述言語で記述されたファイルを入力するステップと、
上記ページ記述言語で記述されるファイルに含まれる可能性のあるインタプリタプログラム部を上記インタプリタプログラム部と同一性のある上記他のCPUのネイティブ・コードに変換したコード群を上記ページ記述言語で記述されたファイルを入力する前から保持するステップと、
上記ファイル内で指定されるインタプリタプログラム部を取り出すステップと、
取り出された上記インタプリタプログラム部と対応のとれる変換コードを利用できるようにするステップと、
取り出された上記インタプリタプログラム部を実行すべき段階で上記変換コードを選択して実行するステップとを有することを特徴とするページ記述言語で記述されたファイルの実行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11810196A JP3796813B2 (ja) | 1996-05-13 | 1996-05-13 | 描画処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11810196A JP3796813B2 (ja) | 1996-05-13 | 1996-05-13 | 描画処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09305347A JPH09305347A (ja) | 1997-11-28 |
JP3796813B2 true JP3796813B2 (ja) | 2006-07-12 |
Family
ID=14728038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11810196A Expired - Fee Related JP3796813B2 (ja) | 1996-05-13 | 1996-05-13 | 描画処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3796813B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4164467B2 (ja) | 2004-03-26 | 2008-10-15 | キヤノン株式会社 | 画像処理装置、画像処理制御方法、及びプログラム |
JP4577907B2 (ja) | 2008-03-18 | 2010-11-10 | 株式会社沖データ | 画像処理装置、画像形成装置、及び印刷システム |
-
1996
- 1996-05-13 JP JP11810196A patent/JP3796813B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09305347A (ja) | 1997-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5048018A (en) | Debugging parallel programs by serialization | |
JP4693044B2 (ja) | ソースコード脆弱性検査装置 | |
EP2367121A1 (en) | Search system, search method, and program | |
US5642512A (en) | Compiler with improved live range interference investigation | |
Solanki et al. | Comparative study of software clone detection techniques | |
CN113228017B (zh) | 攻击树生成装置、攻击树生成方法以及计算机可读取的记录介质 | |
JP3796813B2 (ja) | 描画処理装置 | |
Sánchez Cuadrado et al. | Optimization patterns for OCL-based model transformations | |
CN112632333A (zh) | 查询语句生成方法、装置、设备及计算机可读存储介质 | |
CN109032946B (zh) | 一种测试方法和装置、计算机可读存储介质 | |
CN112835774B (zh) | 显卡性能的可视化方法及装置、设备、计算机可读存储介质 | |
Cohen et al. | A language for inquiring about the run‐time behaviour of programs | |
CN112948734A (zh) | 项目样式整合适配方法、装置、设备及存储介质 | |
JP6205965B2 (ja) | テストデータ生成プログラム、テストデータ生成方法、およびテストデータ生成装置 | |
CN112329426A (zh) | 电子文件的页眉页脚识别方法、装置、设备和介质 | |
Purve et al. | Stack and queue based parser approach for parsing expression grammar | |
Chen et al. | A new restructuring algorithm for the classification-tree method | |
CN115168399B (zh) | 基于图形化界面的数据处理方法、装置、设备及存储介质 | |
JPH04251291A (ja) | ラスタイメージ処理システムにおける文字列描画方式 | |
CN114253526A (zh) | 在线计价方法、装置、设备及存储介质 | |
CN114003234A (zh) | 小程序局部编译方法、装置、设备及计算机可读存储介质 | |
JPH05204705A (ja) | 未定義変数検出処理方法 | |
Janecek et al. | Uncovering Steady State Executions in Java Microbenchmarking with Call Graph Analysis | |
CN113704657A (zh) | 前端部署方法、装置、设备及存储介质 | |
CN118410484A (zh) | 基于Clang模式匹配的安全机制有效性检测方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040312 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040511 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060328 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060410 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120428 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130428 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140428 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |