JP4022710B2 - Drawing processor - Google Patents
Drawing processor Download PDFInfo
- Publication number
- JP4022710B2 JP4022710B2 JP2000320638A JP2000320638A JP4022710B2 JP 4022710 B2 JP4022710 B2 JP 4022710B2 JP 2000320638 A JP2000320638 A JP 2000320638A JP 2000320638 A JP2000320638 A JP 2000320638A JP 4022710 B2 JP4022710 B2 JP 4022710B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- data
- intermediate code
- drawing processing
- load
- 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
- Controls And Circuits For Display Device (AREA)
- Record Information Processing For Printing (AREA)
- Image Generation (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、描画データに基づいて描画処理を行う描画処理装置に関するものである。
【0002】
【従来の技術】
PostScript(登録商標)やGDIなどの描画データを処理する描画処理装置においては、入力された描画データを、出力装置に応じたビットマップデータ等に展開する描画処理を行う。図17は、従来の描画処理の一例を示すフローチャートである。S101において描画データを入力すると、S102において、入力された描画データに対応する中間コードを生成し、S103において、S102で生成した中間コードを蓄積しておく。S104において、ページ内の描画データが全て終了したか否かを判定し、1ページ分の描画データに対する処理が終了するまで、S101〜S103の処理を繰り返す。これによって、1ページ分の描画データに対応する中間コードが蓄積される。
【0003】
その後、S105において、例えば1ページ単位や、1ページを帯状領域に分割したバンド単位などの単位毎に中間コードを取得し、S106において、その特定の単位毎に描画処理を行う。この時の描画処理は、予め組み込まれている特定の1つの描画方式を用いて行われる。S107において、すべての単位の中間コードを処理したか否かを判定し、全ての単位の処理が終了するまでS105及びS106の処理を繰り返す。このようにして、1ページ分の描画データに対応する画像を描画することができる。
【0004】
上述のS106で説明したように、従来は同一の装置においては単一の描画処理方法を用いて描画処理を行っていた。描画処理方法の一つとして、例えば特開平9−171564号公報等に開示されているように、中間コードと展開用のバンドメモリを用いる方法がある。この方法は、出力されるページを短冊状に区切ったバンドに対応づけて1ページ分の中間コードを蓄積し、バンド単位に中間コードを取り出し、入力された描画データを順序どおりにバンドメモリ上に上書きするものである。この描画処理方法は、図17における単位が「バンド単位」であり、特定の描画方式として「バンドメモリを使用した上書き処理」が相当する。この方式では、メモリ上で上書き処理を行うため、書き込み面積が大きくなると性能が悪くなるという問題がある。
【0005】
また、別の描画処理方法として、例えば特開平10−79038号公報等に開示されているように、ベクタ形式のデータで蓄積し、スキャンライン毎にデータを取得して、クリップ処理と塗りつぶし処理を同時に行い、重なりが除去された状態でスキャンラインデータを出力している。この描画処理方法は、図17における単位が「スキャンライン単位」であり、特定の描画方式として「クリップ処理と塗りつぶし処理を同時に行いかつ重なりも同時に除去する処理」が対応する。しかしこの描画処理方法では、スキャンライン上のデータをソートする必要があるため、入力されたデータが少ない場合にはソートのオーバヘッドにより、メモリ上書き方式に比べて性能が悪いという問題がある。
【0006】
このように、それぞれの描画処理方法には一長一短がある。従来方式では、単一の描画処理方法を採用しているため、描画処理方式の特性により性能が悪化する場合があるという問題があった。
【0007】
一方、それぞれの描画処理方式では、あるパラメータによって処理時間を予測できるようになってきている。処理時間を予測して、予測結果に応じて何か処理を行う技術が多数公開されている。例えば特開平8−279050号公報には、処理時間を予測した結果から実時間展開可能か否かを判断し、実時間展開不可能の場合にはラスタ形式に変換する技術が開示されている。さらに、例えば特開平10−307689号公報には、処理時間を予測した結果から、実時間展開できない場合には、展開時間を短縮可能な中間コード形式に変更する技術が開示されている。同様に特開平11−198489号公報には、予め定められた処理時間に対して高速に処理できる中間コード形式を選択する技術が開示されている。また特開平10−307924号公報には、処理時間を予測した結果を用いて、並列処理における負荷均一化に適用する例が記載されている。
【0008】
このように、それぞれの描画処理方法について処理時間を予測し、その描画処理方法で実時間展開ができない場合にはデータ形式の変更などの時間がかかる処理を予め行うことで対処していた。例えば他の描画処理方法で実時間展開が可能な場合であっても、他の描画処理方法が用いられることはなかった。そのため、描画処理に時間がかかっていた。
【0009】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、高速な描画処理を実現した描画処理装置を提供することを目的とするものである。
【0010】
【課題を解決するための手段】
本発明では、描画された順序通りにメモリ上にデータを上書きしていく描画方式と、中間コード上で重なり処理を行う描画方式から、描画方式選択手段で選択された描画方式を用いて描画処理を行うことができる。例えば処理負荷推定手段により推定された描画方式毎の処理負荷あるいは処理時間に基づいて、もっとも高速に処理できる描画方式を選択して描画処理を行うことができる。これによって、単一の描画方式を用いた場合に描画処理の遅延が発生していた場合でも、他の描画方式の利点を活かして高速な描画処理を行うことができる。この場合、描画処理時間を低減するものであるため、他のデータ形式の変換などによる処理時間の遅延も抑えることができ、全体として処理の高速化を図ることができる。
【0011】
なお、描画方式の選択は、固定的な描画方式が設定された場合には設定された描画方式を選択するように構成することも可能である。また描画方式の選択単位は、ジョブ単位、ページ単位、バンド単位、ライン単位などとすることができる。また、描画データを例えばベクタ形式、台形形式、ランレングス形式などの形式の中間コードに変換してから、描画処理を行うように構成することができる。
【0012】
【発明の実施の形態】
図1は、本発明の描画処理装置の実施の一形態を示すブロック図である。図中、1は描画データ入力部、2は中間コード生成部、3は中間コード蓄積部、4−1〜nは描画負荷推定部、5は描画方式選択部、6は描画部、7−1〜nは描画方式、8は出力装置である。描画データ入力部1は、描画データを入力する。描画データは、文字、図形、ラスタ画像等から構成される。中間コード生成部2は、入力された描画データから中間コードを生成する。中間コード蓄積部3は、生成された中間コードを例えば1ページ分蓄積する。
【0013】
描画負荷推定部4−1〜nは1ないし複数設けられ、生成された中間コードから各描画方式7−1〜nにおける処理時間あるいは処理時間に対応する処理負荷などを推定する。もちろん、描画方式の個数に合わせて設ける必要はなく、描画方式よりも少ない個数でもよいし、また、1つの描画方式についていくつかの推定方法により処理時間や処理負荷を推定してもよい。
【0014】
描画方式選択部5は、1ないし複数の描画負荷推定部4−1〜nが推定した結果を基にして、複数の描画方式7−1〜nの中から最適な描画方式を選択する。描画部6は、描画方式選択部5によって選択された描画方式を使用して、中間コード蓄積部3に蓄積されている中間コードをもとにして描画処理を行い、出力装置8に対して出力する。
【0015】
図2は、本発明の描画処理装置の実施の一形態における動作の一例を示すフローチャートである。図2では、一例として、1ページ毎に中間コードデータを蓄積し、ページ内で2つの描画方式(描画方式a,b)を切り替える場合について示している。
【0016】
S11において描画データ入力部1に描画データが入力されると、S12において、中間コード生成部2は入力された描画データに対応する中間コードデータを生成する。次にS13において、各描画負荷推定部4−1〜nは、生成された中間コードの各種プロファイル情報を用いて、それぞれの描画方式で描画したときの描画処理にかかる負荷を、描画処理を切り替える単位毎に計算する。またS14において、中間コード生成部2が生成した中間コードを中間コード蓄積部3に蓄積する。なお、描画負荷の計算と中間コードの蓄積は前後しても構わない。S15においてページ内の描画データが終了したか否かを判定し、未処理の描画データが存在する場合には、S11へ戻って、以上の処理を繰り返す。これによって、S11〜S14の処理を、1ページの描画データが終了するまで繰り返す。
【0017】
1ページ分の描画データに対する処理が終了したら、S16において、描画方式選択部5は、処理単位毎に各描画方式毎の負荷を描画負荷推定部4−1〜nから取得し、どの処理方式が高速に処理できるかを判定し、描画処理を行う描画方式を決定する。ここでは、描画方式aの描画負荷が閾値より大きいか否かをS17で判定し、閾値以内であればS18において描画方式aを選択する。また、描画方式aの描画負荷が閾値より大きい場合には、S19において描画方式bを選択する。そして、S18またはS19において、描画方式選択部5で選択された描画方式を用いて、描画部6により描画処理を実行する。そして描画結果を出力装置8へ出力する。
【0018】
次に、全ての単位について処理が終わったか否かをS20で判定し、処理が終わっていなければS16へ戻って所定の単位毎の描画方式の選択及び選択された描画方式による描画処理を繰り返す。全ての単位について処理を終えたら、1ページ分の描画処理を終了する。
【0019】
このようにして、所定の単位毎にそれぞれの描画方式について処理負荷を推定し、より好ましい描画方式を選択して、その描画方式を用いて描画処理を行うことができる。そのため、単一の描画方式では処理負荷が大きくなる場合でも、他の描画方式を用いることによって処理負荷を低減し、高速に描画処理を行うことができる。
【0020】
図3は、本発明の描画処理装置の実施の一形態における描画方式の切替処理の概念図である。図3では、描画負荷推定部4−1,2で推定される処理負荷と、その処理負荷の時に描画部6で描画処理を行ったときの処理時間との関係を示している。例えば描画方式aは、処理負荷が小さいときには描画処理時間が小さいが、処理負荷の増大とともに飛躍的に描画処理時間が増大するような描画方式であるとする。また、描画方式bは、処理負荷が小さいときにもそれほど描画処理時間は短くならないものの、処理負荷が増大しても描画処理時間の増加はそれほどでもないような描画方式であるものとする。
【0021】
この場合、処理負荷が小さい場合には描画方式aの方が描画処理時間は短く、処理負荷が大きい場合には描画方式bの方が描画処理時間は短くなる。従って、両者の交差する処理負荷を閾値として、推定された処理負荷が閾値以下であれば描画方式aを選択し、閾値よりも推定された処理負荷が大きい場合には描画方式bを選択すれば、処理負荷の多少に関わらず描画処理時間は最小となり、常に高速に描画処理を行うことができる。
【0022】
なお、上述のS17及び図3においては、描画方式aの処理負荷を用いて、描画方式の選択を行っている。しかし、この選択条件は一例であって、様々な判定条件を設定することが可能であり、例えば描画方式aの処理負荷と描画方式bの処理負荷の大小を比較したり、あるいは、描画処理時間を推定して描画処理時間で描画方式の選択を行ってもよい。
【0023】
以下、具体例を用いて上述の構成及び動作について説明してゆく。以下に説明する具体例では、中間コードとしてベクタ形式のデータを使用し、バンドメモリを用いて重なり処理を行う描画方式aと、中間コード上で重なり処理を行ってからバンドメモリにデータを書き込む描画方式bを使用する。描画処理の負荷としてスキャンライン上のベクタの存在頻度を用いて、バンド毎に処理を切り替える。切り替え方法として、例えば上述の図3で説明したように、予め定められた負荷の閾値より小さい場合には描画方式aを、大きい場合には描画方式bを選択するものとして、以下説明してゆく。
【0024】
まず、2つの描画方式について説明しておく。図4は、描画方式aの一例の説明図、図5は、描画方式bの一例の説明図である。ここでは図4(A)及び図5(A)に示すように、3つの描画データが入力されたものとする。描画順序は、下が先に描画されるデータ、上が後から描画されるデータであるとする。すなわち▲1▼,▲2▼,▲3▼の順で描画されるものとする。なお、それぞれの描画データについては、図示の都合上、異なるハッチングを付して区別している。
【0025】
描画方式aは、描画された順序どおりにメモリ上にデータを上書きしていく方式である。すなわち、図4(B)において▲1▼のデータを最初にメモリ上に書き込む。次に図4(C)に示すように▲2▼のデータ、最後に図4(D)に示すように▲3▼のデータを書き込む。このようにして▲1▼〜▲3▼のデータを描画する。
【0026】
描画方式bは、中間コードをスキャンライン上の座標値順にソートし、スキャン順に上側の描画オブジェクトを選択して、必要な部分だけをメモリ上に書き込む方式である。まず図5(B)において、最初に▲3▼の描画開始点が取得されるが、これ以前にどの描画データも描画開始となっていないので、この座標値を描画開始点として記憶するにとどめる。次に図5(C)において、▲2▼の描画開始点が取得されるが、すでに▲2▼より後に描画される▲3▼が描画開始となっているので何もしない。次に図5(D)において、▲3▼の描画終了点が取得され、描画が開始している描画データの中で一番上なので、描画開始点からこの座標値まで▲3▼を描画し、描画開始点を更新する。次に図5(E)において、▲1▼の描画開始点が取得されるが、すでに▲1▼より後に描画される▲2▼が描画開始となっているので何もしない。次に図5(F)において、▲2▼の描画終了点が取得され、描画が開始している描画データの中で一番上なので、描画開始点からこの座標値まで▲2▼を描画し、描画開始点を更新する。次に図5(G)において、▲1▼の描画終了点が取得され、描画が開始している描画データの中で一番上なので、描画開始点からこの座標値まで▲1▼を描画し、描画開始点を更新する。このようにして▲1▼〜▲3▼のデータを描画する。
【0027】
図6は、描画方式aによる1つのバンドの描画処理の一例を示すフローチャートである。まずS31において、出力に使用するバンドメモリをクリアする。次にS32において、描画データの描画順に中間コードを取得する。次にS33において、中間コード内のデータを1スキャンライン分だけ取得する。最初は、最上部(バンドメモリの上側方向から順に書き込む場合。逆にバンドメモリの下側から書き込む場合には最下部)のスキャンラインに対応するデータを取得する。
【0028】
次にS34において、中間コードが保持している描画開始点と描画終了点の座標値を取得し、S35において、これらの座標値を基に、メモリの書き込み開始位置を計算する。またS36において、中間コードからこのスキャンライン上の描画データの幅を取得する。さらにS37において、中間コードからこの描画データの色データを取得する。そしてS38において、実際のメモリ書き込みを行う。
【0029】
次にS39において、スキャンライン上のデータが無くなったか否かを判断し、まだ残っていれば、S34へ戻って、スキャンライン上の処理(メモリ書き込み位置の計算から幅分データの上書きまで)を繰り返す。スキャンライン上のデータが無くなった場合には、S40において、取得した中間コードの処理が終了したか否かを判断する。まだ残っている場合には、S33の1スキャンライン上のデータ取得に戻って繰り返す。取得した中間コードの処理が終わった場合には、S41において、バンド内の描画データをすべて処理したか否かを判断する。まだ残っている場合には、S32に戻り、描画順に中間コードを取得して、中間コードに対する処理を繰り返す。すべての中間コードを処理した場合には、1つのバンド内の処理を終了する。
【0030】
図7は、描画方式bによる1つのバンドの描画処理の一例を示すフローチャートである。まずS51において、出力に使用するバンドメモリをクリアする。次にS52において、スキャンライン上のデータをすべて取得する。最初は、最上部の(描画方式aと同様に、最下部でも可能)スキャンライン上のデータを全て取得することになる。
【0031】
次にS53において、最も左側の描画点(左から右に描画する場合。右から左に描画する場合には最も右側の描画)を取得する。次にS54において、S53で取得した描画点が描画開始点であるか否かを判断する。
【0032】
描画点が描画開始点である場合、S55において、この描画データが描画開始になったことを登録しておく。次にS56において、描画開始している描画データ内で最も上側(描画順で後に描画された)データであるか否かを判断し、最も上側である場合には、さらにS57において、この描画データより下(描画順で前に描画されたデータ)があるか否かを判断する。この描画データより下(あるいは上)がある場合には、S58において、下側の描画データの色で描画開始点から注目点(描画開始になった描画データの座標点)の左側の点までを描画し、S59において描画開始点を注目点に変更する。描画を開始しているデータ内で最も上側でない場合、または下側で描画開始している描画データが無い場合には、S59の描画開始点の変更までの処理をスキップしてS62に進む。
【0033】
S54で描画点が描画開始点ではないと判断された場合(描画終了点)、S60において、描画開始している描画データ内で最も上側であるか否かを判断し、最も上側である場合には、S61において、この描画データの色で塗り開始点から注目点の左側の点までを描画し、S59において描画開始点を注目点に変更する。描画を開始しているデータ内で最も上側ではない場合、S59の描画開始点の変更までの処理をスキップしてS62へ進む。
【0034】
S62において、スキャンライン上のデータをすべて処理したか否かを判断し、まだ残っている場合には、S53の最左の描画点の取得の処理まで戻って繰り返す。すべてのスキャンライン上のデータを処理した場合には、S63において、まだバンド内に処理していないスキャンラインがあるか否かを判断し、まだ残っている場合には、S52のスキャンライン上のデータ取得の処理まで戻って繰り返す。すべて処理した場合には、1つのバンド内の処理を終了する。
【0035】
このような描画方式aあるいは描画方式bのいずれかを選択して描画処理を行うことになるが、いずれの描画方式を用いるかを、この例ではスキャンライン上のベクタの存在頻度を描画処理の負荷として用いて切り替える。ここで、このベクタについて説明しておく。図8は、ベクタのデータ形式の一例の説明図、図9は、ベクタの具体例の説明図である。ベクタは、例えば図8に示すようなデータ表現をとることができる。図8に示すベクタのデータ形式において、「順序」は描画コマンドの描画順序である。「X」は現在のスキャンラインを横切るベクタのX切片の値を示す。「X変位」は次のスキャンラインに処理が移動した場合のX切片の変化量を示している。「Y変位」は当該ベクタに影響を受ける残りのスキャンライン数を示している。「向き」は当該ベクタの向きを示す。
【0036】
図8に示すベクタを、図9に示す具体例を用いてさらに説明する。図9(A)に示したように、3点P1(0,300)、P2(600,0)、P3(300,600)で表現される三角形を例にとる。ここで、座標系は図面左上方を原点とし、従って図面の水平右方向にX座標値は増加し、図面の垂直下方向にY座標値は増加するものとしている。この3点P1,P2,P3から、ベクタの向きを考慮して、P1P2、P2P3、P3P1の3つのベクタが生成される。それぞれのベクタは図9(B)に示すようになる。例えばP1P2は、「X」が600、「X変位」が−2、「Y変位」が300、「向き」が−1となる。他のベクタも同様である。
【0037】
このようなベクタのデータだけでは、塗り潰す描画範囲は分からない。そのため、このようなベクタをもとに、図形の内部/外部判定を行う必要がある。例えば上述の描画方式aの処理を示す図6においては描画開始点と描画終了点を、また描画方式bの処理を示す図7においては描画開始点を、それぞれ判別する必要がある。以下、このような図形の内部/外部判定に用いる判定規則を示す。
【0038】
判定規則には非ゼロ巻き規則と奇偶規則との2種類がある。これらはいずれも複数の外形(パス)で形成された一つの図形の内部を判定する際に用いられる規則である。図10は、非ゼロ巻き規則及び奇偶規則による図形の内部判定方法の一例の説明図である。図10(A)には非ゼロ巻き規則、図10(B)には奇偶規則の場合を示している。図10(A)に示す非ゼロ巻き規則は、図形を構成する外形がスキャンラインと交差する際の向きを考慮したものである。図10(A)では外形がスキャンラインを上向きに交差する場合を正、下向きに交差する場合を負としている。走査方向に向かって正の交差であれば1を加算し、負の交差であれば1を減算する。そして、合計値が0でなくなった点から0に戻った点までが内部であると判定する。図10(A)に示す例では、ハッチングを施して示し外側のパスの内側全体が描画領域となる。
【0039】
一方、図10(B)に示す奇偶規則は、スキャンラインと交差するパスの個数をカウントして、奇数の点から偶数の点までを内部と判定することにしている。この判定方法によれば、図10(B)にハッチングを施して示すように、描画領域は外側のパスと内側のパスで挟まれた円環状の領域となる。
【0040】
図11は、ベクタの内部判定処理の一例を示すフローチャートである。なお、描画図形には、その図形対応した属性領域が別途設けられ、その中に内部判定規則や内部判定値などが格納されているものとする。また、これらの属性領域のデータは、例えば図8に示すベクタのデータ中の「順序」を示す値から取得できるものとする。
【0041】
まずS71において、ベクタの「順序」から、このベクタで構成される図形の内部判定規則を取得し、その内部判定規則をS72で調べる。判定規則の種類が非ゼロ巻き規則であれば、S73において内部判定値を取得し、S74において値が0か否かをチェックする。内部判定値が0の場合には、S75においてベクタの向き(+1または−1)を足し、S76において「領域の開始」であると判断する。S74で内部判定値が0でない場合には、S77においてベクタの向き(+1または−1)を足してから、再度、S78において内部判定値が0であるか否かをチェックする。内部判定値が0の場合には、S79において「領域の終了」であると判断し、値が0以外の場合にはS80において領域が継続すると判断する。
【0042】
S72で内部判定規則の種類が奇偶規則であれば、S81において内部判定値を取得し、当該内部判定値を1だけ増加させてから2の剰余を求める。S82において、内部判定値の2の剰余が1か0かにより内部判定値が奇数か偶数かを判定し、奇数であれば、図形が内部になるので、S83において「領域の開始」と判断する。また、内部判定値が偶数であれば、図形の外部となるので、S84において「領域の終了」と判断する。
【0043】
なお、「領域の開始」が描画開始点に対応し、「領域の終了」が描画終了点に対応し、取得したベクタおのおのに対してこの処理を適用すれば、描画開始点と描画終了点を判別することができる。
【0044】
次に、描画処理の負荷の計算方法について説明する。図12は、描画負荷の計算処理の一例を示すフローチャートである。上述のように、この例においては描画処理の負荷として、スキャンライン上のベクタの存在頻度を用いている。まずS91において、生成されたベクタおのおのに対して、どのバンドに属するかを判別し、各バンド内でのベクタのY軸における最大値と最小値を求める。そしてS92において、各バンド毎に最大値から最小値を引いた数、すなわちY軸上での長さを求める。さらにS93において、各バンド毎の負荷に対応した値に計算した値を足す。このようにしてベクタの存在頻度を計算し、描画処理の負荷とすることができる。
【0045】
図13は、描画負荷の計算方法の具体例の説明図である。図13(A)において、各バンドの高さを128とする。そこに、塗り潰して示した四角形が、初めて追加されたものとする。この四角形は、各バンドに64、128、64の長さで属している。通常、X軸と平行なベクタは除外されるので、この四角形は2本のベクタで表現される。このとき、左側のベクタの負荷として、それぞれのバンドにおいて64、128、64が計算される。右側のベクタに対しても負荷として、それぞれのバンドにおいて64、128、64が計算される。したがって、各バンドの負荷は、図13(B)に示すようにそれぞれ128、256、128となる。
【0046】
このようにして計算された描画負荷を用いて描画方式を切り替える。図14は、描画方式の切替方法の一例の説明図である。図14においては、図14(A)に示す4つの図形▲1▼〜▲4▼を、図14(B)に示すように重ねて描画するものとする。なお、バンドの高さは128であるとする。各図形はバンドの境界に接する形で描画され、図形▲1▼はバンドB1〜B8に、図形▲2▼はバンドB2〜B7に、図形▲3▼はバンドB3〜B6に、図形▲4▼はバンドB4,B5に、それぞれ属するものとする。図14(B)では、図形▲1▼の上に図形▲2▼を、さらにその上に図形▲3▼を、さらのその上に図形▲4▼を、それぞれ描画するため、図形中、他の図形の下になった部分は見えなくなっている。
【0047】
このような図形▲1▼〜▲4▼について、図12,図13で説明したようにして各バンドにおける描画負荷を計算すると、図14(C)の「負荷」の欄に示すようになる。例えば、バンドB1は、1つの図形が存在するので描画負荷は256、バンドB4は、上書きによって見えなくなる図形も含めて4つの図形が存在するので描画負荷は1024となる。
【0048】
ここで、処理切り替えの閾値を1000とすると、バンドB4とバンドB5の負荷が1024であるため、描画方式bが選択され、描画処理時に使用される。それ以外のバンドは描画方式aが選択される。
【0049】
上述のように描画方式aでは、図14(A)に示す図形▲1▼〜▲4▼を順に描画してゆくため、重なりが多い部分では、上書きによって見えなくなる部分についても無駄な描画処理を行う。そのため、図形の重なりが多くなればなるほど、その描画処理時間は長くなる。これに対して描画方式bでは、重なり除去処理を行いながら描画処理を行うため、無駄な描画処理は発生しないが、描画領域を判定してゆく処理を行うため、その処理のオーバヘッドがかかる。そのため、重なりが少ない場合には判定処理のオーバヘッドが描画時間に影響してしまう。図14に示す例では、バンドB1〜B3及びバンドB6〜B8については重なりが少ないものとして、重なりが少ないときに高速に描画処理を行うことができる描画方式aを用い、バンドB4,B5のように重なりが多い部分では、重なりが多くても高速な描画処理を行うことができる描画方式bを用いる。このようにして、全体の描画処理時間を短縮し、高速な描画処理を行うことができる。
【0050】
次に、別の具体例を説明する。上述の具体例では、中間コードとしてベクタ形式のデータを使用し、描画処理の負荷としてスキャンライン上のベクタの存在頻度を用いて描画方式の選択を行う例を示した。この具体例では、中間コードとして台形形式のデータを使用する例を示す。使用可能な描画方式は上述の例と同様に、バンドメモリを用いて重なり処理を行う描画方式aと、中間コード上で重なり処理を行ってからバンドメモリにデータを書き込む描画方式bを使用するものとする。この例の場合の描画処理の負荷は、描画方式aについては台形の面積(ピクセル数)を使用し、描画方式bについてはスキャンライン上の辺の存在頻度を用いることとする。切り替え方法として、負荷から予測時間を計算し、予測時間の小さいほうの処理方式を選択することとし、描画方式の切替をバンド毎に行うものとする。
【0051】
図15は、台形データの一例の説明図である。中間コードとして台形形式のデータを使用する場合、まず既存の種々の方法を用いて描画データが表す図形を走査線方向に平行な2辺を持つ台形に分割する。そして、副走査線方向をY座標軸、走査線方向にX座標軸をとって描画領域上での台形の位置や大きさに関する情報をXY座標系で表現している。
【0052】
図15(A)に示す台形のデータ構造においては、Y座標値の最大値YMAXと最小値YMIN、左側の辺についてはY座標の最小値の位置におけるX座標値X1、Y座標値が単位量増加した際のX座標値の増分DX1、右側の辺については、Y座標値の最小値の位置におけるX座標値X2、Y座標値が単位量増加した際のX座標値の増分DX2、により台形領域を少なくとも規定している。それぞれの座標値については、図15(B)に台形の一例を用いて示している。
【0053】
また、これらの描画領域に関する値(YMIN、YMAX、X1、X2、DX1、DX2)以外には、色などの塗りつぶし属性値(「属性」)と、描画順序を表わす値(「順序」)などが格納される。なお、台形データによる塗りつぶし領域の表現はさまざまなものが挙げられ、ここではその一例を示すものであって、他の表現方法でも良い。もちろん、他の情報が含まれていてもよい。
【0054】
台形は、塗りつぶす内部の図形を表現しているため、上述の中間コードをベクタで表現する場合に行っていた図11に示す内部判定の処理を省略することができる。その代わりに、左側の斜辺の場合には領域の開始点、右側の斜辺の場合には領域の終了点であるとして扱えばよい。ただし、同一の図形を表現する台形同士が重なる場合があり、重なった領域を塗りつぶす必要がある場合においては、判定規則として非ゼロ巻き規則を適用する。
【0055】
このように中間コードを台形で表現した場合の描画処理の負荷の計算方法について説明する。上述のように、この具体例の場合の描画処理の負荷は、描画方式aについては台形の面積(ピクセル数)を使用し、描画方式bについてはスキャンライン上の辺の存在頻度を用いることとする。描画方式aに対応する描画処理の負荷として用いる台形の面積は、上述の図15を参照して、次のようにして計算することができる。
((XMIN2−XMIN1)×2+(DX1+DX2)×(YMAX−YMIN))×(YMAX−YMIN)/2
ここで、XMIN1は左側の辺についてY座標値の最大値あるいは最小値におけるX座標値のうちいずれか小さい方、また、XMIN2は右側の辺についてY座標値の最大値あるいは最小値におけるX座標値のうちいずれか小さい方である。
【0056】
なお、描画方式bに対応する描画処理の負荷は、台形の斜辺をベクタとみなして、上述の中間コードとしてベクタを用いる場合と同様にして、描画処理の負荷を計算すれば良い。
【0057】
この例ではさらに、描画処理の負荷から処理時間を予測する。この描画処理の負荷に基づく処理時間の予測は、描画処理を行うプラットフォームによって異なってくる。そのため、実際に描画処理を行うプラットフォームに応じて描画処理の負荷から処理時間への関数を決定する必要がある。一例としては、
描画方式aの処理時間=描画方式aの描画処理の負荷÷16384
描画方式bの処理時間=描画方式bの描画処理の負荷÷128
で求めることができる。
【0058】
図16は、中間コードとして台形形式を用いた場合の描画方式の切替方法の一例の説明図である。ここでは図14(A)に示した4つの図形▲1▼〜▲4▼を描画する場合を示している。なお、バンドの高さは図14と同様に128であり、各図形▲1▼〜▲4▼の幅は、それぞれ128、256、384、512であるとする。
【0059】
例えば、バンドB1の描画方式aにおける描画処理の負荷は、
(128×2+0)×128/2=128×128=16384
であるので、処理時間は、
16384÷16384=1
である。また、バンドB2の描画方式aの処理時間は、図形▲1▼についての描画処理の負荷は16384,図形▲2▼についての描画処理の負荷は図形▲1▼の2倍の32768であるので、
(16384+32768)÷16384=3
となる。バンドB3〜B8についても同様であり、図16(B)の予測1の欄のようにそれぞれのバンドにおける描画方式aの処理時間を予測することができる。
【0060】
また、例えばバンドB1の描画方式bの処理時間は、図14(C)に示した負荷の値を用いて
256÷128=2
である。また、バンドB2の描画方式bの処理時間は、
512÷128=4
となる。バンドB3〜B8についても同様であり、図16(B)の予測2の欄のようにそれぞれのバンドにおける描画方式bの処理時間を予測することができる。
【0061】
図16(B)に示す描画方式a及び描画方式bの処理時間の予測値を比較すると、バンドB4とB5において、描画方式bの処理時間(予測2)が描画方式aの処理時間(予測1)より小さくなる。従って、バンドB4とB5において描画方式bが選択され、それ以外は描画方式aが選択される。このようにして選択された描画方式を用いて描画処理を行えばよい。このように、描画処理時間が短くなる描画方式を選択して描画処理を行うので、高速な描画処理を実現することができる。
【0062】
さらに、中間コードとしてランレングス形式のデータを使用する場合がある。この場合でも同様にして描画方式の切替を行うことができる。上述の具体例と同様に、バンドメモリを用いて重なり処理を行う描画方式aと、中間コード上で重なり処理を行ってからバンドメモリにデータを書き込む描画方式bを使用することとし、描画方式aの負荷として台形の面積(ピクセル数)を、描画方式bの負荷としてスキャンライン上の辺の存在頻度を用いる。また、切り替え方法として、負荷から予測時間を計算し、予測時間の小さいほうの処理方式をバンド毎に選択するものとする。
【0063】
ランレングスは、特殊な台形として考えればよい。すなわち、上述の台形の面積を求めた式において、YMAX−YMINが常に1で、DX1、DX2の値が0である。すなわち、
((XMIN2−XMIN1)×2)/2=XMIN2−XMIN1
となる。この式は、スキャンラインにおける描画終了点の座標から描画開始点の座標値を差し引いた値である。
【0064】
なお、ランレングスも台形同様、塗りつぶす内部の図形を表現しているため、例えば図11に示したような内部判定の処理を省略することができる。その代わりに、ランの開始点の場合には領域の開始点、ランの終了点の場合には領域の終了点であるとして扱えばよい。ただし、同一の図形を表現するランレングス同士が重なる場合があり、重なった領域を塗りつぶす必要がある場合においては、判定規則として非ゼロ巻き規則を適用すればよい。以下の処理は、中間コードが台形形状の場合と同じように処理すればよいので、説明は省略する。
【0065】
上述の本発明の描画処理装置の実施の一形態及び具体例の説明においては、描画処理装置の内部で描画処理の負荷あるいは負荷に基づいて描画処理時間を判別して描画方式を切り替えていたが、例えばユーザからの指示を受け付ける設定手段を設け、設定手段に設定されたユーザからの指示に従って描画方式を決定してもよい。例えば、クライアント上のプリンタドライバの印刷設定の一つとして、処理方式を指定する方法が考えられる。また、描画を依頼するソフトウェアから描画方式を設定可能に構成してもよい。そのほか、描画処理装置側のコントロールパネルにおいて、固定の処理方式を設定とし、自動選択と手動設定が可能内容に構成してもよい。このような構成では、ユーザ自身が処理方式を選択できるので、自由度が高く、かつ、ユーザの望む通りの処理を行うことができるようになる。
【0066】
また、上述の説明では、描画方式をバンド単位で切り替える例を用いて説明したが、ページ単位やジョブ単位、あるいはスキャンライン単位で処理を切り替えるようにしてもよい。もちろん、切り替えが可能な描画方式は、上述の具体例のようなバンドメモリを用いて重なり処理を行う描画方式aと、中間コード上で重なり処理を行ってからバンドメモリにデータを書き込む描画方式bに限られるものではなく、任意の描画方式を用いることが可能である。また、備えておく描画方式の数も2つに限らず、3つ以上であってもよい。
【0067】
【発明の効果】
以上の説明から明らかなように、本発明によれば、描画処理にかかる負荷や、その負荷に基づいて計算される描画処理時間などを用いて、複数の描画方式のうちから負荷の少ないあるいは描画処理時間が短いと予測される描画方式を選択して用いる。これによって、高速に図形の描画処理を行うことができるという効果がある。
【図面の簡単な説明】
【図1】 本発明の描画処理装置の実施の一形態を示すブロック図である。
【図2】 本発明の描画処理装置の実施の一形態における動作の一例を示すフローチャートである。
【図3】 本発明の描画処理装置の実施の一形態における描画方式の切替処理の概念図である。
【図4】 描画方式aの一例の説明図である。
【図5】 描画方式bの一例の説明図である。
【図6】 描画方式aによる1つのバンドの描画処理の一例を示すフローチャートである。
【図7】 描画方式bによる1つのバンドの描画処理の一例を示すフローチャートである。
【図8】 ベクタのデータ形式の一例の説明図である。
【図9】 ベクタの具体例の説明図である。
【図10】 非ゼロ巻き規則及び奇偶規則による図形の内部判定方法の一例の説明図である。
【図11】 ベクタの内部判定処理の一例を示すフローチャートである。
【図12】 描画負荷の計算処理の一例を示すフローチャートである。
【図13】 描画負荷の計算方法の具体例の説明図である。
【図14】 描画方式の切替方法の一例の説明図である。
【図15】 台形データの一例の説明図である。
【図16】 中間コードとして台形形式を用いた場合の描画方式の切替方法の一例の説明図である。
【図17】 従来の描画処理の一例を示すフローチャートである。
【符号の説明】
1…描画データ入力部、2…中間コード生成部、3…中間コード蓄積部、4−1〜n…描画負荷推定部、5…描画方式選択部、6…描画部、7−1〜n…描画方式、8…出力装置。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a drawing processing apparatus that performs drawing processing based on drawing data.
[0002]
[Prior art]
In a drawing processing apparatus that processes drawing data such as PostScript (registered trademark) and GDI, a drawing process for developing input drawing data into bitmap data or the like corresponding to an output apparatus is performed. FIG. 17 is a flowchart showing an example of a conventional drawing process. When drawing data is input in S101, an intermediate code corresponding to the input drawing data is generated in S102, and the intermediate code generated in S102 is stored in S103. In S104, it is determined whether or not all the drawing data in the page has been completed, and the processes in S101 to S103 are repeated until the processing for the drawing data for one page is completed. As a result, intermediate codes corresponding to one page of drawing data are accumulated.
[0003]
Thereafter, in S105, an intermediate code is acquired for each unit such as one page unit or a band unit obtained by dividing one page into a band-like region, and in S106, rendering processing is performed for each specific unit. The drawing process at this time is performed using one specific drawing method incorporated in advance. In S107, it is determined whether or not all units of intermediate codes have been processed, and the processes of S105 and S106 are repeated until the processing of all units is completed. In this way, an image corresponding to one page of drawing data can be drawn.
[0004]
As described in S106 above, conventionally, drawing processing is performed using a single drawing processing method in the same apparatus. As one of the drawing processing methods, there is a method using an intermediate code and a band memory for development as disclosed in, for example, JP-A-9-171564. In this method, intermediate codes for one page are accumulated in association with bands obtained by dividing the output page into strips, the intermediate codes are taken out in band units, and the input drawing data is stored in the band memory in order. It will be overwritten. In this drawing processing method, the unit in FIG. 17 is “band unit”, and “overwrite processing using a band memory” corresponds to a specific drawing method. In this method, since the overwriting process is performed on the memory, there is a problem that the performance deteriorates as the writing area increases.
[0005]
As another drawing processing method, for example, as disclosed in Japanese Patent Laid-Open No. 10-79038, etc., vector format data is accumulated, data is acquired for each scan line, clip processing and painting processing are performed. At the same time, the scan line data is output with the overlap removed. In this drawing processing method, the unit in FIG. 17 is “scan line unit”, and “a process for simultaneously performing clip processing and filling processing and simultaneously removing overlap” corresponds to a specific drawing method. However, since this drawing processing method needs to sort the data on the scan line, there is a problem that the performance is worse than the memory overwrite method due to the sort overhead when the input data is small.
[0006]
Thus, each drawing processing method has advantages and disadvantages. In the conventional method, since a single drawing processing method is adopted, there is a problem that the performance may deteriorate due to the characteristics of the drawing processing method.
[0007]
On the other hand, in each drawing processing method, the processing time can be predicted by a certain parameter. Many techniques for predicting the processing time and performing some processing according to the prediction result have been disclosed. For example, Japanese Patent Laid-Open No. 8-279050 discloses a technique for determining whether real-time development is possible from the result of predicting the processing time, and converting to a raster format if real-time development is impossible. Further, for example, Japanese Patent Application Laid-Open No. 10-307689 discloses a technique for changing to an intermediate code format that can shorten the development time from the result of predicting the processing time when real time development is not possible. Similarly, Japanese Patent Application Laid-Open No. 11-198489 discloses a technique for selecting an intermediate code format that can be processed at high speed with respect to a predetermined processing time. Japanese Patent Application Laid-Open No. 10-307924 describes an example in which the processing time is predicted and applied to load equalization in parallel processing.
[0008]
In this way, the processing time is predicted for each drawing processing method, and when real-time development cannot be performed by the drawing processing method, a time-consuming process such as a data format change is performed in advance. For example, even if other drawing processing methods allow real-time deployment, other drawing processing methods have not been used. As a result, the drawing process took time.
[0009]
[Problems to be solved by the invention]
The present invention has been made in view of the above-described circumstances, and an object thereof is to provide a drawing processing apparatus that realizes high-speed drawing processing.
[0010]
[Means for Solving the Problems]
In the present invention, drawing processing is performed using a drawing method selected by the drawing method selection means from a drawing method in which data is overwritten in the memory in the order of drawing and a drawing method in which overlap processing is performed on the intermediate code. It can be performed. For example, based on the processing load or processing time for each drawing method estimated by the processing load estimating means, the drawing method that can be processed at the highest speed can be selected to perform the drawing process. As a result, even when there is a delay in drawing processing when a single drawing method is used, high-speed drawing processing can be performed by taking advantage of other drawing methods. In this case, since the drawing processing time is reduced, a delay in processing time due to conversion of another data format or the like can be suppressed, and the overall processing speed can be increased.
[0011]
It should be noted that the selection of the drawing method can be configured such that when a fixed drawing method is set, the set drawing method is selected. The selection unit of the drawing method can be a job unit, a page unit, a band unit, a line unit, or the like. Further, the drawing data can be converted into an intermediate code in a format such as a vector format, a trapezoid format, or a run length format before the drawing process is performed.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is a block diagram showing an embodiment of a drawing processing apparatus of the present invention. In the figure, 1 is a drawing data input unit, 2 is an intermediate code generation unit, 3 is an intermediate code storage unit, 4-1 to n are drawing load estimation units, 5 is a drawing method selection unit, 6 is a drawing unit, and 7-1. ˜n is a drawing method, and 8 is an output device. The drawing
[0013]
One or a plurality of drawing load estimators 4-1 to n are provided, and the processing time corresponding to each drawing method 7-1 to n or the processing load corresponding to the processing time is estimated from the generated intermediate code. Of course, it is not necessary to provide according to the number of drawing methods, the number may be smaller than the drawing method, and the processing time and processing load may be estimated by several estimation methods for one drawing method.
[0014]
The drawing
[0015]
FIG. 2 is a flowchart showing an example of the operation in the embodiment of the drawing processing apparatus of the present invention. In FIG. 2, as an example, intermediate code data is accumulated for each page, and two drawing methods (drawing methods a and b) are switched within the page.
[0016]
When drawing data is input to the drawing
[0017]
When the processing for one page of drawing data is completed, in S16, the drawing
[0018]
Next, in S20, it is determined whether or not the processing has been completed for all the units. If the processing has not been completed, the process returns to S16 to repeat selection of a drawing method for each predetermined unit and drawing processing by the selected drawing method. When the process is completed for all units, the drawing process for one page is ended.
[0019]
In this way, it is possible to estimate a processing load for each drawing method for each predetermined unit, select a more preferable drawing method, and perform drawing processing using the drawing method. Therefore, even when the processing load increases with a single drawing method, the processing load can be reduced by using another drawing method, and drawing processing can be performed at high speed.
[0020]
FIG. 3 is a conceptual diagram of a drawing method switching process in the embodiment of the drawing processing apparatus of the present invention. FIG. 3 shows the relationship between the processing load estimated by the drawing load estimation units 4-1 and 2 and the processing time when the
[0021]
In this case, when the processing load is small, the drawing method a has a shorter drawing processing time, and when the processing load is large, the drawing method b has a shorter drawing processing time. Therefore, if the estimated processing load is equal to or less than the threshold, the drawing method a is selected when the processing load intersecting the two is set as a threshold, and the drawing method b is selected when the estimated processing load is larger than the threshold. Regardless of the processing load, the drawing processing time is minimized, and the drawing processing can always be performed at high speed.
[0022]
In S17 and FIG. 3 described above, the drawing method is selected using the processing load of the drawing method a. However, this selection condition is merely an example, and various determination conditions can be set. For example, the processing load of the drawing method a and the processing load of the drawing method b are compared, or the drawing processing time is compared. And the drawing method may be selected based on the drawing processing time.
[0023]
Hereinafter, the above-described configuration and operation will be described using specific examples. In the specific example described below, a drawing method a in which vector format data is used as an intermediate code and an overlap process is performed using a band memory, and an overlap process is performed on the intermediate code and then data is written to the band memory. Use scheme b. The processing is switched for each band using the presence frequency of the vector on the scan line as the drawing processing load. As a switching method, for example, as described with reference to FIG. 3 described above, the drawing method a is selected when it is smaller than a predetermined load threshold, and the drawing method b is selected when it is larger, and will be described below. .
[0024]
First, two drawing methods will be described. FIG. 4 is an explanatory diagram of an example of the drawing method a, and FIG. 5 is an explanatory diagram of an example of the drawing method b. Here, as shown in FIGS. 4A and 5A, three drawing data are input. Assume that the drawing order is data that is drawn first and data that is drawn later. That is, the drawing is performed in the order of (1), (2), and (3). In addition, about each drawing data, for convenience of illustration, it distinguishes by attaching | subjecting different hatching.
[0025]
The drawing method a is a method in which data is overwritten on the memory in the order of drawing. That is, in FIG. 4B, the data (1) is first written on the memory. Next, data (2) is written as shown in FIG. 4 (C), and finally data (3) is written as shown in FIG. 4 (D). In this way, data (1) to (3) are drawn.
[0026]
The drawing method b is a method in which the intermediate codes are sorted in the order of coordinate values on the scan line, the upper drawing object is selected in the scan order, and only necessary portions are written in the memory. First, in FIG. 5B, the drawing start point (3) is first obtained, but since no drawing data has been started before this, only the coordinate value is stored as the drawing start point. . Next, in FIG. 5C, the drawing start point {circle around (2)} is acquired, but since drawing {3} already drawn after {2} is the drawing start, nothing is done. Next, in FIG. 5D, the drawing end point of (3) is acquired, and since drawing is the top in the drawing data that has started drawing, (3) is drawn from the drawing start point to this coordinate value. Update the drawing start point. Next, in FIG. 5E, the drawing start point of (1) is acquired. However, since drawing (2) already drawn after (1) is the drawing start, nothing is done. Next, in FIG. 5 (F), the drawing end point (2) is acquired, and since drawing is the top of the drawing data that has started drawing, (2) is drawn from the drawing start point to this coordinate value. Update the drawing start point. Next, in FIG. 5G, the drawing end point of (1) is acquired, and since drawing is the top in the drawing data that has started drawing, (1) is drawn from the drawing start point to this coordinate value. Update the drawing start point. In this way, data (1) to (3) are drawn.
[0027]
FIG. 6 is a flowchart illustrating an example of drawing processing of one band by the drawing method a. First, in S31, the band memory used for output is cleared. Next, in S32, an intermediate code is acquired in the drawing order of the drawing data. Next, in S33, the data in the intermediate code is acquired for one scan line. First, data corresponding to the scan line at the uppermost part (when writing in order from the upper side of the band memory, and conversely when writing from the lower side of the band memory) is acquired.
[0028]
Next, in S34, the coordinate values of the drawing start point and drawing end point held by the intermediate code are acquired, and in S35, the writing start position of the memory is calculated based on these coordinate values. In S36, the width of the drawing data on the scan line is acquired from the intermediate code. In S37, the color data of the drawing data is acquired from the intermediate code. In S38, actual memory writing is performed.
[0029]
Next, in S39, it is determined whether or not data on the scan line has been lost. If there is still data, the process returns to S34 to perform processing on the scan line (from calculation of the memory write position to overwriting of data for the width). repeat. If there is no more data on the scan line, it is determined in S40 whether or not the processing of the acquired intermediate code has been completed. If it still remains, return to S33 to acquire data on one scan line and repeat. When the processing of the acquired intermediate code is completed, it is determined in S41 whether all the drawing data in the band has been processed. If it remains, the process returns to S32, the intermediate code is acquired in the drawing order, and the process for the intermediate code is repeated. If all intermediate codes have been processed, the processing within one band is terminated.
[0030]
FIG. 7 is a flowchart illustrating an example of drawing processing of one band by the drawing method b. First, in S51, the band memory used for output is cleared. Next, in S52, all data on the scan line is acquired. Initially, all the data on the scan line at the top (possible at the bottom as well as the drawing method a) is acquired.
[0031]
Next, in S53, the leftmost drawing point (when drawing from left to right; when drawing from right to left, rightmost drawing) is acquired. Next, in S54, it is determined whether or not the drawing point acquired in S53 is a drawing start point.
[0032]
If the drawing point is the drawing start point, it is registered in S55 that the drawing data has started drawing. Next, in S56, it is determined whether or not the data is the uppermost data (drawn later in the drawing order) in the drawing data that has started drawing. It is determined whether or not there is data below (data previously drawn in the drawing order). If there is an area below (or above) the drawing data, in S58, the drawing data color from the drawing start point to the point on the left of the point of interest (the drawing data coordinate point at which drawing has started) is determined. In step S59, the drawing start point is changed to the attention point. If the drawing start data is not the uppermost side or if there is no drawing data starting drawing on the lower side, the process up to the change of the drawing start point in S59 is skipped and the process proceeds to S62.
[0033]
When it is determined in S54 that the drawing point is not the drawing start point (drawing end point), in S60, it is determined whether or not the drawing point is the uppermost in the drawing data that has started drawing. In S61, the drawing data color is used to draw from the paint start point to the point on the left side of the attention point, and in S59, the drawing start point is changed to the attention point. If it is not the uppermost side in the data that has started drawing, the process up to the change of the drawing start point in S59 is skipped and the process proceeds to S62.
[0034]
In S62, it is determined whether or not all the data on the scan line has been processed. If any data still remains, the process returns to S53 for obtaining the leftmost drawing point and is repeated. If the data on all the scan lines has been processed, it is determined in S63 whether or not there is a scan line that has not yet been processed in the band. Return to the data acquisition process and repeat. When all the processes are performed, the process in one band is terminated.
[0035]
Drawing processing is performed by selecting either drawing method a or drawing method b. In this example, the drawing frequency is used to determine which drawing method is used. Use as a load to switch. Here, this vector will be described. FIG. 8 is an explanatory diagram of an example of a vector data format, and FIG. 9 is an explanatory diagram of a specific example of a vector. A vector can take a data representation as shown in FIG. 8, for example. In the vector data format shown in FIG. 8, “order” is the drawing order of drawing commands. “X” indicates the value of the X intercept of the vector crossing the current scan line. “X displacement” indicates the amount of change in the X intercept when the process moves to the next scan line. “Y displacement” indicates the number of remaining scan lines affected by the vector. “Direction” indicates the direction of the vector.
[0036]
The vector shown in FIG. 8 will be further described using a specific example shown in FIG. As shown in FIG. 9A, a triangle represented by three points P1 (0, 300), P2 (600, 0), and P3 (300, 600) is taken as an example. Here, the coordinate system has an origin at the upper left of the drawing, and accordingly, the X coordinate value increases in the horizontal right direction of the drawing and the Y coordinate value increases in the vertical lower direction of the drawing. From these three points P1, P2 and P3, three vectors P1P2, P2P3 and P3P1 are generated in consideration of the direction of the vector. Each vector is as shown in FIG. For example, in P1P2, “X” is 600, “X displacement” is −2, “Y displacement” is 300, and “direction” is −1. The same applies to other vectors.
[0037]
The drawing range to be filled is unknown only with such vector data. Therefore, it is necessary to determine whether the figure is internal or external based on such a vector. For example, it is necessary to determine the drawing start point and the drawing end point in FIG. 6 showing the above-described drawing method a, and the drawing start point in FIG. 7 showing the drawing method b processing. Hereinafter, determination rules used for internal / external determination of such a figure are shown.
[0038]
There are two types of judgment rules: non-zero winding rules and odd-even rules. These are all rules used when determining the inside of one figure formed by a plurality of external shapes (paths). FIG. 10 is an explanatory diagram of an example of a figure internal determination method based on the non-zero winding rule and the odd / even rule. FIG. 10A shows a non-zero winding rule, and FIG. 10B shows an odd / even rule. The non-zero winding rule shown in FIG. 10 (A) takes into account the direction when the outer shape constituting the figure intersects the scan line. In FIG. 10A, the case where the outer shape intersects the scan line upward is positive, and the case where the outer shape intersects downward is negative. If it is a positive intersection in the scanning direction, 1 is added, and if it is a negative intersection, 1 is subtracted. Then, it is determined that the point from the point where the total value is no longer 0 to the point where it returns to 0 is inside. In the example shown in FIG. 10A, the entire inside of the outer path shown by hatching is the drawing area.
[0039]
On the other hand, according to the odd / even rule shown in FIG. 10B, the number of paths crossing the scan line is counted, and an odd point to an even point are determined to be inside. According to this determination method, as shown by hatching in FIG. 10B, the drawing area is an annular area sandwiched between the outer path and the inner path.
[0040]
FIG. 11 is a flowchart illustrating an example of a vector internal determination process. It is assumed that an attribute area corresponding to the graphic is separately provided in the drawing graphic, and an internal determination rule, an internal determination value, and the like are stored therein. Further, it is assumed that the data of these attribute areas can be acquired from the value indicating the “order” in the vector data shown in FIG. 8, for example.
[0041]
First, in S71, an internal determination rule for a graphic composed of this vector is acquired from the “order” of the vector, and the internal determination rule is examined in S72. If the type of determination rule is a non-zero winding rule, an internal determination value is acquired in S73, and whether or not the value is 0 is checked in S74. If the internal determination value is 0, the vector direction (+1 or -1) is added in S75, and it is determined in S76 that "region start". If the internal determination value is not 0 in S74, the vector direction (+1 or -1) is added in S77, and then it is checked again in S78 whether the internal determination value is 0 or not. If the internal determination value is 0, it is determined in S79 that the region is “end”, and if the value is other than 0, it is determined that the region continues in S80.
[0042]
If the type of the internal determination rule is an odd / even rule in S72, an internal determination value is acquired in S81, and the internal determination value is increased by 1, and then a remainder of 2 is obtained. In S82, it is determined whether the internal determination value is an odd number or an even number depending on whether the remainder of 2 of the internal determination value is 1 or 0. If the internal determination value is an odd number, the figure is inside. . If the internal determination value is an even number, the figure is outside the figure, so it is determined in S84 that “region end”.
[0043]
Note that “region start” corresponds to the drawing start point, “region end” corresponds to the drawing end point, and if this processing is applied to each acquired vector, the drawing start point and drawing end point are set. Can be determined.
[0044]
Next, a method for calculating the drawing processing load will be described. FIG. 12 is a flowchart illustrating an example of a drawing load calculation process. As described above, in this example, the vector presence frequency on the scan line is used as the drawing processing load. First, in S91, it is determined which band the generated vector belongs to, and the maximum value and minimum value on the Y axis of the vector in each band are obtained. In S92, the number obtained by subtracting the minimum value from the maximum value for each band, that is, the length on the Y-axis is obtained. In S93, the calculated value is added to the value corresponding to the load for each band. In this way, the vector presence frequency can be calculated and used as the load of the drawing process.
[0045]
FIG. 13 is an explanatory diagram of a specific example of a drawing load calculation method. In FIG. 13A, the height of each band is 128. It is assumed that a square shown in black is added for the first time. This rectangle belongs to each band with lengths of 64, 128, and 64. Usually, since a vector parallel to the X axis is excluded, this quadrangle is expressed by two vectors. At this time, 64, 128, and 64 are calculated in the respective bands as the load on the left vector. As a load for the right vector, 64, 128, and 64 are calculated in each band. Therefore, the load of each band is 128, 256, and 128, respectively, as shown in FIG.
[0046]
The drawing method is switched using the drawing load thus calculated. FIG. 14 is an explanatory diagram of an example of a drawing method switching method. In FIG. 14, it is assumed that the four figures {circle around (1)} to {circle around (4)} shown in FIG. 14A are overlaid as shown in FIG. Note that the height of the band is 128. Each figure is drawn in contact with the band boundary, figure (1) is in bands B1-B8, figure (2) is in bands B2-B7, figure (3) is in bands B3-B6, figure (4) Belong to bands B4 and B5, respectively. In FIG. 14 (B), the figure (2) is drawn on the figure (1), the figure (3) is further drawn thereon, and the figure (4) is further drawn on the figure (1). The part underneath the figure is not visible.
[0047]
With respect to such figures {circle around (1)} to {circle around (4)}, when the drawing load in each band is calculated as described with reference to FIGS. 12 and 13, it is as shown in the “load” column of FIG. For example, since there is one figure for band B1, the drawing load is 256, and for band B4, there are four figures including a figure that cannot be seen due to overwriting, so the drawing load is 1024.
[0048]
Here, if the processing switching threshold is 1000, the load of the band B4 and the band B5 is 1024, so the drawing method b is selected and used during the drawing process. For other bands, the drawing method a is selected.
[0049]
As described above, in the drawing method “a”, since the figures {circle around (1)} to {circle around (4)} shown in FIG. Do. Therefore, the more overlapping the figures, the longer the drawing processing time. On the other hand, in the drawing method b, since the drawing process is performed while performing the overlap removal process, no unnecessary drawing process is generated, but the process of determining the drawing area is performed, and the overhead of the process is increased. Therefore, when there is little overlap, the determination processing overhead affects the drawing time. In the example shown in FIG. 14, the bands B1 to B3 and the bands B6 to B8 are assumed to have little overlap, and the drawing method a that can perform drawing processing at high speed when there is little overlap is used. In a portion where there are many overlaps, a drawing method b that can perform high-speed drawing processing even if there are many overlaps is used. In this way, the overall drawing processing time can be shortened and high-speed drawing processing can be performed.
[0050]
Next, another specific example will be described. In the specific example described above, an example is shown in which vector format data is used as the intermediate code, and the rendering method is selected using the vector presence frequency on the scan line as the rendering processing load. In this example, trapezoidal data is used as an intermediate code. The drawing methods that can be used are the drawing method a that performs overlapping processing using a band memory, and the drawing method b that performs overlapping processing on an intermediate code and then writes data to the band memory, as in the above example. And As for the drawing processing load in this example, a trapezoidal area (number of pixels) is used for the drawing method a, and the existence frequency of the side on the scan line is used for the drawing method b. As a switching method, the predicted time is calculated from the load, the processing method with the smaller predicted time is selected, and the drawing method is switched for each band.
[0051]
FIG. 15 is an explanatory diagram of an example of trapezoid data. When trapezoidal data is used as the intermediate code, the figure represented by the drawing data is first divided into trapezoids having two sides parallel to the scanning line direction using various existing methods. Then, the information about the position and size of the trapezoid on the drawing area is expressed in the XY coordinate system with the sub-scan line direction as the Y coordinate axis and the scan line direction as the X coordinate axis.
[0052]
In the trapezoidal data structure shown in FIG. 15A, the maximum value YMAX and minimum value YMIN of the Y coordinate value, and the X coordinate value X1 and Y coordinate value at the position of the minimum value of the Y coordinate for the left side are unit quantities. The X coordinate value increment DX1 when increased, and the right side is trapezoidal by the X coordinate value X2 at the position of the minimum value of the Y coordinate value, and the X coordinate value increment DX2 when the Y coordinate value is increased by a unit amount. At least the area is defined. Each coordinate value is shown in FIG. 15B using an example of a trapezoid.
[0053]
Besides the values (YMIN, YMAX, X1, X2, DX1, DX2) related to these drawing areas, there are a fill attribute value (“attribute”) such as a color, a value indicating the drawing order (“order”), and the like. Stored. Note that there are various representations of the filled area by the trapezoid data, and an example is shown here, and other representation methods may be used. Of course, other information may be included.
[0054]
Since the trapezoid represents the internal figure to be filled, the internal determination processing shown in FIG. 11 that is performed when the above intermediate code is expressed by a vector can be omitted. Instead, the left oblique side may be treated as the start point of the region, and the right oblique side may be treated as the end point of the region. However, when the trapezoids expressing the same figure may overlap each other, and it is necessary to fill the overlapping area, the non-zero winding rule is applied as the determination rule.
[0055]
A method for calculating the drawing processing load when the intermediate code is expressed as a trapezoid will be described. As described above, the drawing processing load in this specific example uses a trapezoidal area (the number of pixels) for the drawing method a, and uses the frequency of edges on the scan line for the drawing method b. To do. The trapezoidal area used as a drawing processing load corresponding to the drawing method a can be calculated as follows with reference to FIG.
((XMIN2-XMIN1) × 2 + (DX1 + DX2) × (YMAX−YMIN)) × (YMAX−YMIN) / 2
Here, XMIN1 is the smaller of the maximum Y coordinate value or the minimum X coordinate value of the left side, and XMIN2 is the maximum Y coordinate value or the minimum X coordinate value of the right side. Whichever is smaller.
[0056]
Note that the drawing processing load corresponding to the drawing method b may be calculated in the same manner as in the case where a vector is used as the intermediate code by regarding the hypotenuse of the trapezoid as a vector.
[0057]
In this example, the processing time is further predicted from the load of the drawing process. The prediction of the processing time based on the drawing processing load differs depending on the platform on which the drawing processing is performed. Therefore, it is necessary to determine a function from the load of the drawing process to the processing time in accordance with the platform that actually performs the drawing process. As an example,
Drawing method a processing time = Drawing method a drawing processing load ÷ 16384
Processing time of drawing method b = drawing processing load of drawing method b ÷ 128
Can be obtained.
[0058]
FIG. 16 is an explanatory diagram of an example of a drawing method switching method when the trapezoidal format is used as the intermediate code. Here, the case where the four figures {circle around (1)} to {circle around (4)} shown in FIG. The height of the band is 128 as in FIG. 14, and the widths of the figures (1) to (4) are 128, 256, 384, and 512, respectively.
[0059]
For example, the load of the drawing process in the drawing method a of the band B1 is
(128 × 2 + 0) × 128/2 = 128 × 128 = 16384
So the processing time is
16384 ÷ 16384 = 1
It is. The processing time of the drawing method “a” of the band B2 is 32768, which is 16384 for the drawing process for the graphic (1), and twice for the drawing (2) for the graphic (2).
(16384 + 32768) ÷ 16384 = 3
It becomes. The same applies to the bands B3 to B8, and the processing time of the drawing method a in each band can be predicted as shown in the column of
[0060]
Further, for example, the processing time of the drawing method b of the band B1 is determined using the load value shown in FIG.
256 ÷ 128 = 2
It is. In addition, the processing time of the drawing method b of the band B2 is
512/128 = 4
It becomes. The same applies to the bands B3 to B8, and the processing time of the drawing method b in each band can be predicted as shown in the column of
[0061]
When the predicted values of the processing times of the drawing method a and the drawing method b shown in FIG. 16B are compared, the processing time of the drawing method b (prediction 2) is the processing time of the drawing method a (prediction 1) in the bands B4 and B5. ) Smaller. Accordingly, the drawing method b is selected in the bands B4 and B5, and the drawing method a is selected in other cases. Drawing processing may be performed using the drawing method selected in this way. Thus, since the drawing process is performed by selecting the drawing method that shortens the drawing process time, a high-speed drawing process can be realized.
[0062]
Furthermore, run-length data may be used as the intermediate code. Even in this case, the drawing method can be switched in the same manner. Similar to the specific example described above, the drawing method a for performing the overlap processing using the band memory and the drawing method b for performing the overlapping processing on the intermediate code and then writing the data to the band memory are used. The trapezoidal area (number of pixels) is used as the load of the drawing method, and the existence frequency of the sides on the scan line is used as the load of the drawing method b. In addition, as a switching method, the predicted time is calculated from the load, and the processing method with the smaller predicted time is selected for each band.
[0063]
The run length can be considered as a special trapezoid. That is, in the above equation for obtaining the trapezoidal area, YMAX-YMIN is always 1 and the values of DX1 and DX2 are 0. That is,
((XMIN2-XMIN1) × 2) / 2 = XMIN2-XMIN1
It becomes. This expression is a value obtained by subtracting the coordinate value of the drawing start point from the coordinates of the drawing end point in the scan line.
[0064]
Since the run length also represents the internal figure to be filled, like the trapezoid, the internal determination process as shown in FIG. 11, for example, can be omitted. Instead, the start point of the run may be treated as the start point of the region, and the end point of the run may be treated as the end point of the region. However, when run lengths representing the same figure may overlap each other and it is necessary to fill the overlapped area, a non-zero winding rule may be applied as a determination rule. The following processing may be performed in the same manner as in the case where the intermediate code has a trapezoidal shape, and thus description thereof is omitted.
[0065]
In the above description of the embodiment and specific example of the drawing processing apparatus of the present invention, the drawing processing time is determined based on the drawing processing load or load inside the drawing processing apparatus and the drawing method is switched. For example, a setting unit that receives an instruction from the user may be provided, and the drawing method may be determined in accordance with the instruction from the user set in the setting unit. For example, a method for specifying a processing method is considered as one of print settings of a printer driver on a client. Further, the drawing method may be set by software that requests drawing. In addition, in the control panel on the drawing processing apparatus side, a fixed processing method may be set and automatic selection and manual setting may be configured. In such a configuration, since the user can select a processing method, the degree of freedom is high and processing as desired by the user can be performed.
[0066]
In the above description, the drawing method has been described using an example in which the drawing method is switched in band units. However, the processing may be switched in page units, job units, or scan line units. Of course, the drawing methods that can be switched are the drawing method a in which the overlapping process is performed using the band memory as in the above-described specific example, and the drawing method b in which the overlapping process is performed on the intermediate code and then the data is written to the band memory. The drawing method is not limited to the above, and any drawing method can be used. The number of drawing methods to be provided is not limited to two, and may be three or more.
[0067]
【The invention's effect】
As is apparent from the above description, according to the present invention, the load on the drawing process, the drawing processing time calculated based on the load, etc. are used, and the load is reduced or drawn out of a plurality of drawing methods. A drawing method that is predicted to have a short processing time is selected and used. As a result, there is an effect that it is possible to perform graphic drawing processing at high speed.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an embodiment of a drawing processing apparatus of the present invention.
FIG. 2 is a flowchart showing an example of operation in the embodiment of the drawing processing apparatus of the present invention.
FIG. 3 is a conceptual diagram of a drawing method switching process in the embodiment of the drawing processing apparatus of the present invention;
FIG. 4 is an explanatory diagram of an example of a drawing method a.
FIG. 5 is an explanatory diagram of an example of a drawing method b.
FIG. 6 is a flowchart illustrating an example of a drawing process of one band by a drawing method a.
FIG. 7 is a flowchart illustrating an example of a drawing process of one band by a drawing method b.
FIG. 8 is an explanatory diagram of an example of a vector data format;
FIG. 9 is an explanatory diagram of a specific example of a vector.
FIG. 10 is an explanatory diagram of an example of a method for determining the inside of a graphic based on a non-zero winding rule and an odd / even rule.
FIG. 11 is a flowchart illustrating an example of a vector internal determination process;
FIG. 12 is a flowchart illustrating an example of a drawing load calculation process.
FIG. 13 is an explanatory diagram of a specific example of a drawing load calculation method.
FIG. 14 is an explanatory diagram illustrating an example of a drawing method switching method;
FIG. 15 is an explanatory diagram of an example of trapezoid data.
FIG. 16 is an explanatory diagram illustrating an example of a drawing method switching method when a trapezoidal format is used as an intermediate code;
FIG. 17 is a flowchart illustrating an example of a conventional drawing process.
[Explanation of symbols]
DESCRIPTION OF
Claims (11)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000320638A JP4022710B2 (en) | 2000-10-20 | 2000-10-20 | Drawing processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000320638A JP4022710B2 (en) | 2000-10-20 | 2000-10-20 | Drawing processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002133428A JP2002133428A (en) | 2002-05-10 |
JP4022710B2 true JP4022710B2 (en) | 2007-12-19 |
Family
ID=18798889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000320638A Expired - Fee Related JP4022710B2 (en) | 2000-10-20 | 2000-10-20 | Drawing processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4022710B2 (en) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005007824A (en) * | 2003-06-20 | 2005-01-13 | Ricoh Co Ltd | Image output device, and image outputting system |
JP4645044B2 (en) * | 2004-03-02 | 2011-03-09 | 沖電気工業株式会社 | Image drawing method and image reproducing apparatus |
JP4621618B2 (en) * | 2006-03-28 | 2011-01-26 | 株式会社東芝 | Graphic drawing apparatus, graphic drawing method, and program |
JP4935715B2 (en) * | 2008-03-05 | 2012-05-23 | セイコーエプソン株式会社 | Printer control method and apparatus, and printer control program |
JP5428516B2 (en) * | 2009-05-18 | 2014-02-26 | 富士ゼロックス株式会社 | Image processing apparatus and program |
JP2011008689A (en) * | 2009-06-29 | 2011-01-13 | Kyocera Mita Corp | Image forming apparatus |
US20120102394A1 (en) * | 2010-10-25 | 2012-04-26 | Konica Minolta Systems Laboratory Inc. | Application of path-fill algorithm to text layout around objects |
CN103843036A (en) * | 2012-01-06 | 2014-06-04 | 三菱电机株式会社 | Draw control device |
JP6215931B2 (en) * | 2013-06-03 | 2017-10-18 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | Graphic display processing device, graphic display processing method, and vehicle including graphic display processing device |
JP6385111B2 (en) * | 2014-04-04 | 2018-09-05 | キヤノン株式会社 | Processing apparatus, method thereof, and program |
JP6323209B2 (en) * | 2014-06-24 | 2018-05-16 | 富士ゼロックス株式会社 | Image processing apparatus and program |
JP6821926B2 (en) * | 2016-03-10 | 2021-01-27 | 富士ゼロックス株式会社 | Drawing data creation device |
JP6926394B2 (en) * | 2016-03-23 | 2021-08-25 | 富士フイルムビジネスイノベーション株式会社 | Printing equipment and programs |
-
2000
- 2000-10-20 JP JP2000320638A patent/JP4022710B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002133428A (en) | 2002-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4022710B2 (en) | Drawing processor | |
KR100883704B1 (en) | Graphic-rendering apparatus, graphic-rendering method and computer readable recording media | |
US7436531B2 (en) | Systems and methods for using multiple processors for imaging | |
AU2008202364B2 (en) | Scan converting a set of vector edges to a set of pixel aligned edges | |
JP2617007B2 (en) | Interactive large image processing method | |
JP2681367B2 (en) | Graphic processing method and apparatus thereof | |
JP3125863B2 (en) | Print processing device | |
JP3834935B2 (en) | Print processing device | |
JP3606006B2 (en) | Image forming apparatus and gradation drawing method | |
US5327527A (en) | Method of and apparatus for processing image data | |
JPH1125282A (en) | Picture forming device and method for generating gradation pattern | |
US20060119897A1 (en) | Output apparatus and program thereof | |
JP3922568B2 (en) | Image processing apparatus, drawing processing method, and program for executing the method | |
JPH07334648A (en) | Method and device for processing image | |
JP4345609B2 (en) | Image processing apparatus and program | |
JP2004334533A (en) | Image processing device and method | |
JP3362641B2 (en) | Image processing device | |
JP3570164B2 (en) | Image forming apparatus and gradation drawing method | |
JP2000149036A (en) | Graphic data processor | |
JP3330803B2 (en) | Image data processing method | |
JP3843794B2 (en) | Graphic processing device | |
JP3608450B2 (en) | Image processing device | |
JP4423812B2 (en) | Drawing processing apparatus and drawing processing method | |
JP2000255116A (en) | Apparatus for processing printing and method for processing printing | |
JP2001307115A (en) | Image processor and image processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040715 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070312 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070322 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070520 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070613 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070810 |
|
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: 20070905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070918 |
|
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: 20101012 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111012 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121012 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121012 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131012 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |