JP3692639B2 - 描画処理装置 - Google Patents
描画処理装置 Download PDFInfo
- Publication number
- JP3692639B2 JP3692639B2 JP19711296A JP19711296A JP3692639B2 JP 3692639 B2 JP3692639 B2 JP 3692639B2 JP 19711296 A JP19711296 A JP 19711296A JP 19711296 A JP19711296 A JP 19711296A JP 3692639 B2 JP3692639 B2 JP 3692639B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- graphic
- vector
- additional
- scan line
- 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)
Description
【発明の属する技術分野】
本発明は描画処理装置に関し、特に塗りつぶし処理において上塗りだけでなく透過合成処理も行う描画処理装置に関する。
【0002】
【従来の技術】
例えば、Interpress(Xerox社の商標)やPostScript(Adobe社の商標)などのページ記述言語(PDL)は、オペイクモデルと呼ばれる描画モデルを採用している。オペイクモデルは不透明なインクで上書きを行うモデルであり、上書きされた描画結果は、最後に描画された図形の色だけがページ上に残されるようになる。
【0003】
近年のコンピュータ・グラフィックス(CG)やデスクトップ・パブリッシング(DTP)では、透過モデルを採用する動きがある。例えば、QuickDrawGX(Apple社の商標)は、透過モデルを採用している。透過モデルで図形の描画を行うと、オペイクモデルでは上書きされて消去されていた下側の図形(下地図形)の色に対して、指定した透過率による透かし処理(透過合成処理)が施される。透過モデルにおいて、追加する図形(追加図形)の色の使用率を100%(透過率100%という)とすればオペイクモデルと全く同じ処理になるので、描画モデルとしては透過モデルの方が高い汎用性を有していると言える。
従来の透過合成処理は特開平7−28986号公報に開示されているように、ラスター上で行うようになっている。
【0004】
【発明が解決しようとする課題】
従って、従来の描画処理装置では、文字やグラフィックスのようなラスター以外のPDLの描画要素に透過合成処理を行う場合であっても、ラスターデータを生成してからでないと透過合成処理を行うことができない。そのため従来の描画処理装置では、第1に、ラスター上で処理するための大容量のメモリを必要とする、第2に、データ転送量がページメモリの容量を超えてしまう、第3に、透過合成処理の処理速度が遅くなってしまう、等の問題点を有している。
【0005】
本発明の目的は、ラスターデータを生成する前の段階で透過合成処理を行うことができ、しかも高速に透過合成処理を行える描画処理装置を提供することにある。
【0006】
【課題を解決するための手段】
上記目的は、下地図形に追加した追加図形を通して下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、下地図形及び追加図形の描画データをランレングス型データと所定の透過率データとで表現し、下地図形と追加図形のランレングス型データを合成し、透過率データに基づいて結果図形のランレングス型データ及び透過率データを生成する透過合成処理手段と、結果図形のランレングス型データ及び透過率データを記憶する記憶手段と、結果図形のランレングス型データに基づいて結果図形をラスター型データにして出力する出力手段とを備えることを特徴とする描画処理装置によって達成される。
【0007】
上記描画処理装置において、ランレングス型データのデータ表現は、描画図形のスキャンライン上の始点、幅、及び色値を含むようにする。また、結果図形のランレングス型データの色値は、追加図形の色値に追加図形の透過率αを乗じた値と下地図形の色値に(1−α)を乗じた値とを加えた値である。
【0008】
また上記目的は、下地図形に追加した追加図形を通して下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、描画データがベクターデータと所定の透過率データとで表現された下地図形及び追加図形を記憶する記憶手段と、記憶手段から下地図形と追加図形のベクターデータをスキャンライン毎に取り出して、所定の透過率データに基づき透過合成データを生成する透過合成処理手段と、透過合成データに基づいてラスターデータを生成して出力する出力手段とを備えることを特徴とする描画処理装置によって達成される。
【0009】
本発明によれば、ランレングス型のデータ、或いはベクターデータにより塗りつぶし処理時に透過合成処理を行うことができるようになるので、透過合成処理に必要なメモリ量を削減し、且つ高速に透過合成処理を行うことができるようになる。
【0010】
【発明の実施の形態】
本発明の第1の実施の形態による描画処理装置を図1乃至図13を用いて説明する。
まず初めに本実施の形態における透過合成処理を図2を用いて説明する。色コンポーネントが三原色の青(B)、緑(G)、赤(R)とし、先に描画される下地図形の色を(Bu)、(Gu)、(Ru)とする。また、下地図形の上に重ねて描画される追加図形の色を(Bo)、(Go)、(Ro)とし、追加図形の透過率をαとする。透過合成処理の結果としての結果図形(Br)、(Gr)、(Rr)は図2に示すような式で表される。
【0011】
すなわち、透過合成処理とは、
結果図形の色値 = 追加図形の色値×α+下地図形の色値×(1−α)
とする画像合成処理のことを言うものとする。
【0012】
本実施の形態の描画処理装置の主要部の構成を図1を用いて説明する。まず、区間データ入力部2で、描画すべき図形の区間データ及び当該図形の透過率を受け取る。
【0013】
「区間データ」とは、図3に示すように、ランレングス形式のデータ表現であり、描画すべき図形をスキャンライン毎の始点と長さ(幅)で表現したものである。区間データは図中の左側からスキャンラインの番号(Y座標値)、続いて当該スキャンラインでの図形の始点となるX座標値、当該図形の幅、種別、及び色または色へのポインタで構成される。ここで種別は、種別に続く次のフィールドが当該図形の色値自身を示しているのか、色データへのポインタを示しているのかを識別するために用いられる。本実施の形態では、種別の値が0の場合は次フィールドが色値自身を表し、種別の値が1の場合は次フィールドが色データへのポインタを示しているものとしている。
【0014】
区間データの例を図4及び図5を用いて説明する。図4に示す図形は内部が一定の色で塗られる三角形形状でありスキャンラインY1〜Y7により描画される。図中X1〜X7は当該図形の各スキャンラインでの始点となるX座標値を示している。L1〜L7はそれぞれのスキャンライン上のX1〜X7からの幅である。図5に図4の図形の区間データを示す。区間データにより、スキャンライン毎に図形の内部を表す領域が表現される。この例では、種別は0であり、従って種別の次のフィールドには図形の色値自身が格納されている。
【0015】
区間データの別の例を図6及び図7を用いて説明する。図6に示す図形は、図形の開始点のX座標値がX1、幅が8であり、スキャンラインY1〜Y5で描画される長方形形状である。図6ではラスターなどの色値が画素毎に変化する場合を示している。図6の画像の区間データは図7のように表現される。区間データの種別は1であり、従って種別の次のフィールドには色データへのポインタが格納されている。そして、各区間データから参照されるポインタの先に、画素毎の色値が格納されている。色値の参照時には、区間データのX座標と連動してポインタ値を移動させれば、各画素の色値を求めることができる。
【0016】
透過合成処理は、図1の透過合成処理部4及び区間データ記憶部6内の区間データ上で行われる。透過合成処理部4及び区間データ記憶部6については後程詳細に説明する。
【0017】
図1の画像出力部8は、区間データ記憶部6の区間データを読み出しながらビデオ信号等を生成して、所定の出力装置に対応したフォーマットで画像を出力するようになっている。
【0018】
次に、図8を用いて本実施の形態の描画処理装置による処理の概略の流れを説明する。
まず、ステップS1において、区間データ記憶部6の初期化を行う。図9に区間データの初期化の例を示す。初期状態として区間データ記憶部6の区間データには全て白(透明)の状態がセットされる。hは描画領域の高さを示しておりスキャンラインの番号に対応している。wは描画領域の幅を示している。初期状態として区間データの始点のX座標値には全て0が格納され、種別は0で次フィールドには白を示す色値が格納されている。
なお、このように本実施の形態では初期状態として描画領域全体を白と定義しているが、何もない状態(無色)や、固有の色を持つ状態を初期状態としても一向に差し支えない。
【0019】
ステップS2において、区間データ記憶部6に保持されている下地図形の区間データの中から、追加図形の区間データと同じスキャンライン(走査線)上の全ての下地図形の区間データが読み出される。
【0020】
ステップS3において、読み出した下地図形の区間データと追加図形の区間データのX座標値及び幅の値を用いて、以下に示す処理が行われる。
第1の処理: 追加図形の挿入位置の検索処理、
第2の処理: 追加図形が下地図形と重なる領域の色値の計算処理、
第3の処理: 下地図形の分割、修正、及び追加図形の追加処理
まず、第1の処理である追加図形の挿入位置の検索処理では、下地図形の一つの区間データのX座標値と、追加図形の区間データのX座標値と幅の値との和(X座標値+幅の値)との比較を行う。
【0021】
この比較は図10に示す(a)〜(f)の6通りに分類される。図10における記号、OSX、OEX、USX、及びUEXはそれぞれ以下に示す意味で用いる。
OSX: 追加図形の区間データにおけるX座標値
OEX: 追加図形の区間データにおける(X座標値+幅−1)の値
USX: 下地図形の区間データにおけるX座標値
UEX: 下地図形の区間データにおける(X座標値+幅−1)の値
さて、各スキャンラインにおける下地図形の区間データがX座標値の小さな順に並べられているとすれば、下地図形の区間データを順次読み出しながら、以下のように追加図形の挿入位置と重なり具合を知ることができる。
【0022】
図10(a)の場合は、OEX<USXであり、追加図形の終端より下地図形の前端の方がスキャンライン上で後方に位置するので、結果図形において下地図形と追加図形とは重ならない。従って、当該下地図形の次の下地図形と追加図形との重なりを調べる必要はない。
【0023】
図10(b)の場合は、OSX<USX≦OEX<UEXであり、下地図形の前方と追加図形の後方と重なる結果図形となる。従って、次の下地図形と追加図形との重なりを調べる必要はない。
【0024】
図10(c)の場合は、OSX<USX<UEX<OEXであり、追加図形の内部に下地図形が完全に重なる結果図形となる。従って、次の下地図形に対して、追加図形のX座標値をOSX=UEX+1としてさらに比較を行う必要がある。
【0025】
図10(d)の場合は、USX≦OSX<OEX≦UEXであり、追加図形が下地図形の内部に完全に重なる結果図形となる。従って、次の下地図形と追加図形の重なりを調べる必要はない。
【0026】
図10(e)の場合は、USX<OSX≦UEX<OEXであり、下地図形の後方に追加図形の前方が重なる結果図形となる。従って、次の下地図形に対して追加図形のX座標値をOSX=UEX+1としてさらに比較を行う必要がある。
【0027】
図10(f)の場合は、UEX<OSXであり、追加図形の前端より下地図形の終端の方がスキャンライン上で前方に位置するので、結果図形において下地図形と追加図形とは重ならない。
【0028】
上記6種類の場合分けにより、追加図形の挿入位置と重なり具合が求まる。図10(c)、(e)、及び(f)の場合は、さらに次の下地図形の区間データとの比較を行う。但し、図10(f)の場合にあっては、次の下地図形の区間データがなければ処理を終了させる。
【0029】
次に第2の処理としての、追加図形が下地図形と重なる領域の色値の計算処理は、下地図形と追加図形との間に重なりが生じた場合、すなわち、図10(b)、(c)、(d)、及び(e)の場合に必要となる。この場合は、図2で示した式により重なった領域の色値の計算が行われる。
【0030】
次に第3の処理の下地図形の分割、修正、及び追加図形の追加処理は、下地図形と追加図形との間に重なりが生じた場合、すなわち、図10(b)、(c)、(d)、及び(e)の場合に必要となる。本処理により各図の結果図形に示すように区間データを分割、修正して新たな区間データが合成される。
【0031】
上記6種類の場合分けにおける下地図形の分割、修正、及び追加図形の追加処理(第3の処理)は、以下のように行われる。
図10(a)の場合は、最初に読み出した下地図形の区間データの先頭に、追加する図形の区間データを追加する。
【0032】
図10(b)の場合は、下地図形の区間データと追加図形の区間データから3個の区間データが作成される。各区間データの幅と色値は以下のようになる。なお、作成される区間データの幅を[始点,終点]で示し、当該幅での色値を「:」の次に示している(以下同じ)。
[OSX,USX−1]: 追加図形の色値
[USX,OEX] : 第2の処理で演算された色値
[OEX+1,UEX]: 下地図形の色値
【0033】
図10(c)の場合は、3個の区間データが作成される。各区間データの幅と色値は以下のようになる。
[OSX,USX−1]: 追加図形の色値
[USX,UEX] : 第2の処理で演算された色値
[UEX+1,OEX]: 追加図形の色値
但し、[UEX+1,OEX]の区間データの幅及び色値については、さらに次の下地区間データとの比較を行う場合には変更され得る。
【0034】
図10(d)の場合は、2個の区間データから1乃至3個の区間データが作成される。すなわち、USX=OSX、OEX=UEXの場合は下地の区間データの幅に追加図形の区間データの幅が一致して重なるので結果図形としての区間データは1個となる。また、USX=OSX、或いはOEX=UEXのいずれかの場合には、下地図形及び追加図形の前端又は終端が一致するので結果図形の区間データは2個になる。そして、追加図形が下地図形の中に含まれる場合には結果図形の区間データは3個になる。各区間データの幅と色値は以下のようになる。
[USX,OSX−1]: 下地図形の色値(但し、USX<OSXの場合)
[OSX,OEX] : 第2の処理で演算された色値
[OEX+1,UEX]: 下地図形の色値(但し、OEX<UEXの場合)
【0035】
図10(e)の場合は、2個の区間データから3個の区間データが作成される。各区間データの幅と色値は以下のようになる。
[USX,OSX−1]: 下地図形の色値
[OSX,UEX] : 第2の処理で演算された色値
[UEX+1,OEX]: 追加図形の色値
但し、[UEX+1,OEX]の幅及び色値については、さらに次の下地区間データとの比較が行われる場合には変更され得る。
【0036】
図10(f)の場合は、最初に読み出した下地図形の区間データの最後に、追加する図形の区間データを追加する。
上記6種類の場合分けにより、区間データの分割、修正、追加の処理が行われる。これらの処理結果は区間データ記憶部6に記憶される。
【0037】
図11及び図12を用いて、区間データの分割、修正、追加処理の具体例を説明する。図11に示す具体例は、下地図形として描画領域全体が白で塗られており、Y1のスキャンラインにX座標値がXからLの幅を持つ青色の図形が透過率50%で追加される場合である。この場合は図10(d)の場合に該当し、図12に示すように結果図形の区間データはY1のスキャンライン上で3個の区間データに分割される。各区間データの幅と色値は以下のようになる。
[0,X−1] : 白
[X,X+L−1]: 水色
[X+L,W−1]: 白
【0038】
図8におけるステップ2及びステップ3は、追加される全ての区間データを処理し終わるまで続けられる(ステップS4)。そして、全ての区間データが処理し終わった後に区間データ記憶部6に蓄積された区間データが出力される(ステップS5)。
【0039】
ステップS5の処理を図13を用いてより詳細に説明する。
図13において、まず、出力装置に対して出力開始命令を出力する(ステップS10)。次に、区間データ記憶部6から現在のスキャンラインにおける区間データを読み込む(ステップS11)。区間データがあれば、1画素(ピクセル)分のビデオ信号を発生し(ステップS14)、区間データの幅(rl)を1画素分減らす(ステップS15)。この区間データにビデオ信号を発生させるべき画素のデータが残っているかどうかを判断し(ステップS16)、データが残っていれば(rl>0)、区間データの種別を判定し(ステップS17)、ラスターであれば色値のポインタを増加(インクリメント)させる(ステップS18)。ステップS14〜ステップS18までの処理を区間データにデータがなくなるまで続ける。区間データがなくなればステップS16にてステップS11に戻り、次の区間データを読み込んで同様の処理を行う。そして、全ての区間データを処理し終わると(ステップS12)、出力装置に出力終了命令を出力して(ステップS13)処理を終了する。
【0040】
次に、本発明の第2の実施の形態による描画処理装置を図14乃至図36を用いて説明する。
図14に本発明の第2の実施の形態による描画処理装置の主要部のブロック構成を示す。まず、ベクターデータ入力部10で、描画すべき図形のベクター表現形式のデータと透過率及び描画属性値を受け取る。
【0041】
ここでベクター表現形式のデータ(ベクターデータ)とは、図15に示すように、描画すべき図形のアウトラインを向きを有する直線で表現したものである。図15に示すベクターデータにおいて「ID」は描画順序を表している。「X」は現在のスキャンラインを横切るベクターのX切片の値を示す。「X変位」は次のスキャンラインに処理が移動した場合のX切片の変化量を示している。「Y変位」は当該ベクターに影響を受ける残りのスキャンライン数を示している。「向き」は当該ベクターの向きを示す。
【0042】
このようなベクター表現形式のデータの場合、アウトラインの内部を判定するための規則が必要である。内部/外部判定に用いる判定規則を図16に示す。判定規則にはワインディング規則(NZ)と奇偶規則(EO)との2種類がある。これらはいずれも複数の外形(パス)で形成された一つの図形の内部を判定する際に用いられる規則である。ワインディング規則及び奇偶規則による内部判定方法を図17を用いて説明する。図17(a)に示すワインディング規則は、図形22を構成する外形がスキャンライン(走査線)20と交差する際の向きを考慮したものである。図17(a)では外形がスキャンライン20を上向きに交差する場合を正、下向きに交差する場合を負としている。走査方向に向かって正の交差であれば1を加算し、負の交差であれば1を減算することにし、合計値が0でなくなった点から0に戻った点までが内部であると判定する。図17(b)に示す奇偶規則は、スキャンライン20と交差するパスの個数をカウントして、奇数の点から偶数の点までを内部と判定することにしている。
【0043】
図15に示すベクターデータを図18、図19を用いてより具体的に説明する。図18において、座標系は図面左上方を原点とし、従って図面の水平右方向にX座標値は増加し、図面の垂直下方向にY座標値は増加するものとする。
【0044】
図18に示すように一定の色で塗られる三角形の場合を考える。この三角形を構成するベクターはベクター24、26、28である。ベクター24は始点の座標が(X1,Y1)、スキャンラインY1でのX切片の値を示す「X」はX1、次のスキャンラインに移動した場合のX切片の変化量「X変位」は−1、残りのスキャンライン数「Y変位」は7、となる。ベクターの「向き」は座標系のY方向が増加する向きを1と定義し、座標系のY方向が減少する向きを−1と定義する。従って、ベクター24の「向き」は1である。この「向き」はワインディング規則で内部/外部判定を行う際に、どの向きでスキャンラインを横切るかを示す情報として用いられる。同様にしてベクター26は、スキャンラインY1でのX切片の値を示す「X」はX2、次のスキャンラインに移動した場合のX切片の変化量「X変位」は0、残りのスキャンライン数「Y変位」は7、「向き」は−1を示している。
【0045】
図18のベクター24、26は図19のように表現される。ベクターは、ベクターの「向き」を考慮して必ず下向きに補正された状態でベクターの開始点のY座標に結び付けられるので、ベクター26はスキャンラインY1に結び付けられている。なお、スキャンラインと平行なベクター28は考慮する必要がないので除外している。また、各ベクターの先頭のIDは図形毎の描画順序を示すので、IDの値の小さい方が先に描画されたものである。
【0046】
このIDに基づいて色値などの描画属性値が管理される。図20乃至図22にIDで管理された色テーブル(図20)、透過率テーブル(図21)、内部判定規則テーブル(図22)の例を示す。これらのテーブルはそれぞれIDに基づいて参照することができる。さらに図23に示すように、図形の内部/外部を判定するためのワーク領域としての内部判定テーブルもIDから参照できるように領域が確保される。
【0047】
図14のベクターデータ記憶部12と透過合成処理部14内で、ベクターデータによる透過合成処理が行われる。この透過合成処理については後程詳細に説明する。画像出力部16は、透過合成処理の終了した領域から画像のビデオ信号を出力装置に対応したフォーマットで出力するようになっている。
【0048】
次に図24に示すフローチャートを用いて、本発明の第2の実施の形態による描画処理装置で行われる透過合成処理の概略の流れを説明する。
まずステップS20で、ベクターデータ記憶部12内の対象となるスキャンラインの位置に描画する図形のベクターを登録する。このとき図20乃至図22で示した色値等の属性値はベクターのIDに基づいて登録され、図23で示した内部判定用のワーク領域も確保される。ステップS20は、全ての描画要秦(プリミティブ)の読み込みが終了するまで続けられる(ステップS21)。
【0049】
次のステップ22以降の処理の説明は、図25に示す図形を実例に用いて説明する。図25はスキャンラインとベクターとの関係を示している。図中縦方向には複数のスキャンラインが並列しており、各ベクターに関係するスキャンラインに上方からY0〜Y9の番号が付されている。ID=ID1である三角形は図形内部が透過率0%の赤色で塗られている。
【0050】
この三角形はベクター30とベクター32により描画される。ベクター30の始点は、図示のようにスキャンラインY0のX座標値=X1であり、ベクター32の終点はスキャンラインY0のX座標値=X2である。既に説明したように、ベクターはベクターの「向き」を考慮して必ず下向きに補正された状態でベクターの開始点のY座標に結び付けられる。従って、図26に示すように、ベクター32はスキャンラインY0に結び付けられる。結果として、スキャンラインY0にID1の三角形を描画するベクター30、32が結び付けられている。ベクター30のX切片はX1であり、X変位は−1、Y変位は7、向きは1である。ベクター32のX切片はX2であり、X変位は0、Y変位は7、向きは−1である。
【0051】
図25のID2の長方形は図形内部が透過率50%の青色で塗られている。この長方形はベクター34とベクター36により描画される。ベクター36の始点は、図示のようにスキャンラインY4のX座標値=X4であり、ベクター34の終点はスキャンラインY4のX座標値=X3である。従って、図26に示すように、スキャンラインY4にID2の長方形を描画するベクター34、36が結び付けられている。ベクター34のX切片はX3であり、X変位は0、Y変位は6、向きは−1である。ベクター36のX切片はX4であり、X変位は0、Y変位は6、向きは1である。
また、ID1<ID2なので下地図形が三角形であり、追加図形が長方形である。
【0052】
図25の図形の読み込みが終了した後では、図26に示すように色値、透過率、判定規則の各属性値のテーブルがベクターのIDに基づいて登録され、内部判定用のテーブルのワーク領域にもIDに基づいて値が確保される。
このような具体例に基づいて、図24に戻って透過合成処理の流れのステップS22から説明する。ステップS22では、ベクターデータ記憶部12に登録されているベクターデータのうち、処理するスキャンラインにかかるベクターを取り出し、アクティブテーブルに登録する。
【0053】
次にステップS23では、アクティブテーブルに登録されたベクターをソートする。これは、スキャンライン間でベクターが交差するような場合には、当該スキャンラインでのベクターの状態が前スキャンラインでのベクターの状態とは異なるものとなるので、改めて当該スキャンラインでの全ベクターのソートを行って当該スキャンラインにかかるベクターを所定の順序で並べ替えるために行われる。本例では、X座標値の小さい順にソートするものとしている。従って、例えば図25のスキャンラインY5でのソート結果は図27に示すようにベクター34、ベクター30、ベクター32、ベクター36の順に並べられ、スキャンラインY6でのソート結果は図28に示すようにベクター30、ベクター34、ベクター32、ベクター36の順に並べ替えられる。
【0054】
次のステップS24では、ソートされたアクティブテーブルからベクターを順次取り出して以下の処理を行う。
第1の処理: 図形の内部判定処理
第2の処理: 内部判定された図形の登録と色の出力
第3の処理: 外部判定された図形の削除と色の出力
以上の処理は、アクティブテーブルからベクターがなくなるまで続けられる。
【0055】
第1の処理である図形の内部判定処理は、図29に示すフローチャートに従って、図形が内部状態にあるかどうかを判定する。
図29において、ベクターのIDから、このベクターで構成される図形の内部判断規則を取得する(ステップS30)。判定規則の種類がNZ(ワインディング規則)であればステップS32へ移行し、EO(奇偶規則)であればステップS37へ移行する(ステップS31)。
【0056】
判定規則がNZであれば、ベクターのIDから内部判定テーブル(図23)の値を取得し(ステップS32)、当該値が0であるかどうかを判断する(ステップS33)。値が0であれば当該ベクターで構成される図形は必ず内部になる。従って、図23の内部判定テーブルの当該ベクターのIDの位置にある値にベクターの向きを加えてから(ステップS34)、図31に示す処理に移行する。取り出した値が0でない場合には、図23の内部判定テーブルの当該ベクターのIDの位置にある値にベクターの向きを加え(ステップS35)、加えた結果が0であるかどうかを判断する(ステップS36)。加えた結果が0であれば、図33に示す処理に移行し、加えた結果が0以外の場合は、引き続き内部状態が継続するので最初に戻る。
【0057】
ステップS31で判定規則がEOであると判断されると、当該ベクターのIDから内部判定テーブル(図23)の値を取得し、当該値を1だけ増加させてから2の剰余を求める(ステップS37)。2の剰余の値が1であれば判定結果は奇数となり(ステップS38)、図形の内部となるので図31に示した処理に移行する。2の剰余が0であれば判定結果は偶数となり、図形の外部になるので図33の処理に移行する。このようにして、第1の処理での内部判断処理が行われる。
【0058】
次に第2の処理である、内部判定された図形の登録と色の出力の処理について、図30及び図31を用いて説明する。図30は描画状態表を示す図である。描画状態表は、現在処理対象としているスキャンラインのどこまでの描画が完了したかを保持する機能と、現在内部状態にある描画図形を保持する機能とを有している。図30に示すように描画状態表は「描画開始位置」、「内部状態」、及び「色値」から構成される。「描画開始位置」は、現在処理対象のスキャンラインにおける次に塗りつぶしを開始させるX座標値が保持される。従って、描画開始位置より小さいX座標値の領域は既に塗りが画定した領域である。「内部状態」は、内部状態になった図形を登録する領域である。「色値」は、内部状態にある図形に対して、透過合成の色値の計算をIDの小さい方から順番に行った結果である。「内部状態」と「色値」の情報は、図形のIDの大きい順に登録される。
【0059】
図31は、図29のステップS34又はステップS38で図形が内部状態となった場合における次の処理を示すフローチャートである。まず、描画状態表の「内部状態」が空であるかどうかを調べる(ステップS40)。描画状態表の「内部状態」が空であれば当該ベクターから内部状態が開始するのでステップS46に移行し、描画状態表の「描画開始位置」に当該ベクターのX座標値を設定する。
【0060】
描画状態表の「内部状態」が空でなければ、描画状態表のすでに内部と判定されたベクターのX座標値(αとする)が「描画開始位置」にあるはずであるから、αから当該ベクターのX座標値−1までを「内部状態」の先頭の色で塗る(ステップS41)。次に、当該ベクターより小さいIDのベクターが描画状態表に登録されているかどうかを調べる(ステップS42)。当該ベクターより小さいIDのベクターが登録されている場合には、当該ベクターの色値を当該ベクターの直下にあるベクターの色値を用いて透過合成の色値の計算を行う(ステップS43)。
【0061】
次に、当該ベクターのIDより大きいIDを持つベクターが、描画状態表の内部状態に登録されているかどうかを調べる(ステップS44)。当該ベクターより大きいIDを持つベクターがあれば、IDが大きい全てのベクターに対してIDの小さい順に透過合成の色値の計算を行う(ステップS45)。次に、「描画開始位置」を当該ベクターのX座標値に設定し(ステップS46)、描画状態表の「内部状態」にIDを上から大きい順に並ぶように登録する(ステップS47)。以上の処理で内部状態における透過合成処理を終了する。
【0062】
図32を用いて上述の透過合成処理における描画状態表の変化を説明する。図32は図25のスキャンラインY6のX3における描画状態表の変化を示している。X座標値がX3においてID2の図形が内部状態になる。すでに内部状態にある最大のIDはID1なので、スキャンラインY6でのベクター30のX座標値X1−6からX3−1までが赤で塗られる。ID2の図形を登録した後、描画開始位置をX3に変更し、ID2の部分について色の再計算を行う。lD2の直下にあるのはlD1の赤であるから、ID2に対応する色は紫(赤50%、青50%)となる。
【0063】
次に第3の処理である外部判定された図形の削除と色の出力の処理について図33を用いて説明する。図33は、図29のステップS36又はステップS38で図形が外部状態となった場合における次の処理を示すフローチャートである。まず、描画状態表の「描画開始位置」から当該ベクターのX座標値−1まで、描画状態表の「色値」の先頭の色で塗る(ステップS50)。次に、「描画開始位置」を当該ベクターのX座標値に設定する(ステップS51)。次に、当該ベクターを描画状態表から削除する(ステップS52)。そして、当該ベクターのIDより大きいIDを持つベクターが描画状態表の「内部状態」に登録されているかどうかを調べる(ステップS53)。当該ベクターより大きいIDを持つベクターがあれば、IDが大きい全てのベクターに対してIDの小さい順に(内部状態の下方から)、透過合成の色値の計算を行う(ステップS54)。この計算の際、図26に示した色テーブルと透過率テーブルに格納されている元の色値と透過率を用いて再計算を行う。
【0064】
図24に戻り、ステップS24の次の処理として、ステップS24で計算された色値と領域の長さに基づいて、1スキャンラインの出力を行う(ステップS25)。出力方法は例えば第1の実施の形態で説明した区間データの形式を用いて1スキャンライン分のデータを蓄積して出力するようにしてもよい。例として図25に示した図形の区間データを図34に示す。図34の区間データからスキャンライン毎の区間データを取り出して、図13で説明した出力処理を行えば1スキャンライン分の出力が行え、また、複数分蓄積してから出力装置との同期をとりながら図13の処理を行えば複数ライン分の出力を行うこともできる。
【0065】
ステップS25での出力作業が終了すると、アクティブテーブルを更新する(ステップS26)。アクティブテーブルに登録されている全てのベクターに対して、X=X+X変位、Y変位=Y変位−1の演算を行い、Y変位が0になったベクターをアクティブテーブルから取り除く。これにより、次のスキャンラインにおいてアクティブであるベクターだけを残すことができる。このステップS26のアクティブテーブルの更新処理を行うと、例えば、図28に示したY6のスキャンラインの処理が終了すると図35に示すようにY7のスキャンラインの状態が整うようになる。図示の通り、Y6にかかるベクターのうちベクター30とベクター32のY変位が1であるのでY7のスキャンラインではこれらベクター30、32は削除される。
【0066】
以上のステップS22からステップ26までの処理は、全てのスキャンラインに対して行われる(ステップS27)。
【0067】
以上の第1乃至第3の処理を図36を用いて具体的に説明する。図36は図25のスキャンラインY6における描画状態表の変化を示す。まず始めに、ID1の図形のベクター30が取得される。ベクター30による内部判断処理によりID1の図形は内部と判断され、且つ現在「内部状態」には登録図形がないので、「描画開始位置」には、ベクター30のスキャンラインY6でのX座標値X1−6がセットされる。また、「内部状態」にID1がセットされ、色値として赤(R:100%)がセットされる。
【0068】
次に、ID2の図形のベクター34が取得される。このときID2の図形は内部と判断される。「内部状態」にはID1の図形が登録されているので、スキャンラインY6のX1−6からX3−1まで赤(R:100%)で塗られる。そして、ID2>ID1なので、ID2の図形の色値は透過率をもとに、青(B:50%)赤(R:50%)と計算される。ID2より大きい図形は登録されていないので、「描画開始位置」をベクター34のX座標値X3にセットし、「内部状態」の先頭にID2の図形が登録される。
【0069】
次に、ID1のベクター32が取得される。このとき、ID1の図形は外部と判断されるので、スキャンラインY6のX3からX2−1までを「内部状態」の先頭の色である青(B:50%)赤(R:50%)で塗る。そして、「描画開始位置」にはベクター32のX座標値X2がセットされ、ID1の図形は「内部状態」から削除される。また、ID2>ID1であるので、ID2の図形の色値を再計算して青(B:50%)がセットされる。ID1より大きいIDを持つ図形はID2だけなので、次の処理へ移る。次に、ID2のベクター36が取得される。このときID2の図形は外部と判断されるので、スキャンラインY6のX2からX4−1までが「内部状態」の先頭の色である青(B:50%)で塗られる。ID2より大きい図形はないので、次の処理に移る。
【0070】
以上のようにしてスキャンラインY6での透過合成処理が終了し、図34でのスキャンラインY6に示す結果を得ることができる。
このように本実施の形態によれば、従来ラスターデータ上で行っていた透過合成処理を塗りつぶし処理時に行うことができるようになるので、透過合成処理に必要なメモリ量を削減し、且つ高速に透過合成処理を行うことができるようになる。
【0071】
本発明は、上記実施の形態に限らず種々の変形が可能である。
例えば、上記実施の形態における描画処理装置において、透過率αが0%、或いは100%の場合には上記実施の形態で説明した透過合成処理を省略させるようにしてもよい。
【0072】
また、上記第1の実施の形態において、区間データを始点と長さ(幅)で表現したが、始点と終点で表現してもよい。
さらに、透過率の定義を下地図形の透過率をαとして、
結果図形の色値 = 追加図形の色値×(1−α)+下地図形の色値×α
のように変えてもよい。
【0073】
【発明の効果】
以上の通り、本発明によれば、ランレングス型のデータ上、或いはベクターデータ上にて塗りつぶし処理時に透過合成処理を行うことができるようになるので、透過合成処理に必要なメモリ量を削減し、且つ高速に透過合成処理を行うことができるようになる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態による描画処理装置の主要部を示すブロック図である。
【図2】透過合成処理における色値の計算式を示す図である。
【図3】第1の実施の形態における区間データの説明図である。
【図4】区間データを具体的に説明する図である。
【図5】区間データを具体的に説明する図である。
【図6】区間データを他の例により説明する図である。
【図7】区間データを他の例により説明する図である。
【図8】本発明の第1の実施の形態における透過合成処理の概略のフローチャートを示す図である。
【図9】本発明の第1の実施の形態による描画処理装置の区間データ記憶部の初期状態の例を示す図である。
【図10】追加図形と下地図形の関係の分類を示す図である。
【図11】本発明の第1の実施の形態における透過合成処理の具体例を示す図である。
【図12】本発明の第1の実施の形態における透過合成処理の具体例を示す図である。
【図13】本発明の第1の実施の形態による描画処理装置の出力処理部における処理のフローチャートを示す図である。
【図14】本発明の第2の実施の形態による描画処理装置の主要部を示すブロック図である。
【図15】本発明の第2の実施の形態におけるベクター表現形式のデータを示す図である。
【図16】内部判定規則の種類を示す図である。
【図17】内部判定の規則を説明する図である。
【図18】ベクターの向きとスキャンラインの関係を示す図である。
【図19】スキャンラインY1におけるベクターデータを示す図である。
【図20】色テーブルの説明図である。
【図21】透過率テーブルの説明図である。
【図22】内部判定規則テーブルの説明図である。
【図23】内部判定テーブルの説明図である。
【図24】本発明の第2の実施の形態にかかる透過合成処理の概略のフローチャートを示す図である。
【図25】本発明の第2の実施の形態における具体例の説明図である。
【図26】図25に示す具体例における各属性値のテーブルの初期状態を示す図である。
【図27】図25のスキャンラインY5におけるアクティブテーブルの状態図である。
【図28】図25のスキャンラインY6におけるアクティブテーブルの状態図である。
【図29】内部状態判定処理のフローチャートを示す図である。
【図30】描画状態表を説明する図である。
【図31】図29で内部判定された場合のフローチャートを示す図である。
【図32】図25のスキャンラインY6のX座標値がX3における状態の変化の説明図である。
【図33】図29で外部判定された場合のフローチャートを示す図である。
【図34】図25の図形を区間データにより表現した図である。
【図35】アクティブテーブルの状態の変化の説明図である。
【図36】図25のスキャンラインY6における描画状態表の変化を示す図である。
【符号の説明】
2 区間データ入力部
4 透過合成処理部
6 区間データ記憶部
8 画像出力部
10 ベクターデータ入力部
12 ベクターデータ記憶部
14 透過合成処理部
16 画像出力部
20 スキャンライン
22 図形
24、26、28、ベクター
30、32、34、36 ベクター
Claims (6)
- 下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶する記憶手段と、
前記記憶手段から前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成する透過合成処理手段と、
前記透過合成データに基づいてラスターデータを生成して出力する出力手段とを備えることを特徴とする描画処理装置。 - 請求項1記載の描画処理装置において、
前記透過合成処理手段は、前記透過率が0%、或いは100%の場合には前記透過合成データを生成する処理を省略すること
を特徴とする描画処理装置。 - 下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶する記憶手段と、
前記記憶手段から前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成する透過合成処理手段と、
前記透過合成データに基づいてラスターデータを生成し、複数分の前記ラスターデータを蓄積してから同期をとりながら出力する出力手段とを備えることを特徴とする描画処理装置。 - 下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させて透過合成させる描画処理方法であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶し、
記憶された前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成し、
前記透過合成データに基づいてラスターデータを生成して出力することを特徴とする描画処理方法。 - 請求項4記載の描画処理方法において、
前記透過率が0%、或いは100%の場合には前記透過合成データを生成する処理を省略すること
を特徴とする描画処理方法。 - 下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させて透過合成させる描画処理方法であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶し、
記憶された前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成し、
前記透過合成データに基づいてラスターデータを生成し、複数分の前記ラスターデータを蓄積してから同期をとりながら出力することを特徴とする描画処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19711296A JP3692639B2 (ja) | 1996-07-08 | 1996-07-08 | 描画処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19711296A JP3692639B2 (ja) | 1996-07-08 | 1996-07-08 | 描画処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1020849A JPH1020849A (ja) | 1998-01-23 |
JP3692639B2 true JP3692639B2 (ja) | 2005-09-07 |
Family
ID=16368936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19711296A Expired - Fee Related JP3692639B2 (ja) | 1996-07-08 | 1996-07-08 | 描画処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3692639B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008228168A (ja) * | 2007-03-15 | 2008-09-25 | Fuji Xerox Co Ltd | 画像処理装置およびプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2791523B2 (ja) * | 1992-01-30 | 1998-08-27 | 大日本スクリーン製造株式会社 | 線画データ合成装置 |
JP2813929B2 (ja) * | 1992-02-26 | 1998-10-22 | 大日本スクリーン製造株式会社 | 線画データ合成装置 |
JPH0728986A (ja) * | 1993-07-09 | 1995-01-31 | Fuji Xerox Co Ltd | 画像合成処理装置 |
JPH07282274A (ja) * | 1994-04-04 | 1995-10-27 | Mitsubishi Electric Corp | グラフィック表示装置 |
-
1996
- 1996-07-08 JP JP19711296A patent/JP3692639B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1020849A (ja) | 1998-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3919754B2 (ja) | 画素順次描画システムにおいて実行される合成演算回数の削減法 | |
JP4343344B2 (ja) | ラスタ形式のグラフィックオブジェクトを用いたイメージの高速レンダリング方法 | |
KR20030074601A (ko) | 이미지 생성 방법 및 장치 | |
JPH0244482A (ja) | ラスタ化方法 | |
WO2010134347A1 (ja) | グラフィクス描画装置、グラフィクス描画方法、グラフィクス描画プログラム、グラフィクス描画プログラムを記録した記録媒体、グラフィクス描画用集積回路 | |
US20090091574A1 (en) | Rendering device, image output device, and program | |
KR100376196B1 (ko) | 아웃라인 스무딩 처리 방법, 장치 및 기억매체 | |
JP2681367B2 (ja) | 図形処理方法及びその装置 | |
JP3692639B2 (ja) | 描画処理装置 | |
CA1200025A (en) | Graphic and textual image generator for a raster scan display | |
CN107146268A (zh) | 矢量图形的填充方法和矢量图形的填充装置 | |
EP0670560B1 (en) | A method for sorting polygon data, a video game machine employing the same and acomputer program performing the method | |
JP4109740B2 (ja) | 畳み込み走査ラインレンダリング | |
JPH11147344A (ja) | 描画処理装置および方法 | |
JP3375069B2 (ja) | 描画処理装置 | |
JP3266905B2 (ja) | 図形処理装置 | |
US5428719A (en) | Method and apparatus for generating high-quality pattern in accordance with an edge defining a character pattern | |
JP5492911B2 (ja) | 文字作成方法、および文字作成装置 | |
JPH06161420A (ja) | 文字信号発生装置 | |
JP2886702B2 (ja) | アウトラインフォント処理装置 | |
JP3139805B2 (ja) | 画像処理方法及びその装置 | |
JPH1021415A (ja) | 図形処理装置並びに図形処理方法 | |
JP3517982B2 (ja) | 図形描画装置 | |
US9953249B2 (en) | Method and system for generating a drawing order list for multiple drawing objects based on scanlines | |
JP3043234B2 (ja) | 図形処理装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040511 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040708 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041207 |
|
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: 20050531 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050613 |
|
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: 20090701 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100701 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110701 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110701 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120701 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130701 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |