(57)【特許請求の範囲】
【請求項１】
下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶する記憶手段と、
前記記憶手段から前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成する透過合成処理手段と、
前記透過合成データに基づいてラスターデータを生成して出力する出力手段とを備えることを特徴とする描画処理装置。
【請求項２】
請求項１記載の描画処理装置において、
前記透過合成処理手段は、前記透過率が０％、或いは１００％の場合には前記透過合成データを生成する処理を省略すること
を特徴とする描画処理装置。
【請求項３】
下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶する記憶手段と、
前記記憶手段から前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成する透過合成処理手段と、
前記透過合成データに基づいてラスターデータを生成し、複数分の前記ラスターデータを蓄積してから同期をとりながら出力する出力手段とを備えることを特徴とする描画処理装置。
【請求項４】
下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させて透過合成させる描画処理方法であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶し、
記憶された前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成し、
前記透過合成データに基づいてラスターデータを生成して出力することを特徴とする描画処理方法。
【請求項５】
請求項４記載の描画処理方法において、
前記透過率が０％、或いは１００％の場合には前記透過合成データを生成する処理を省略すること
を特徴とする描画処理方法。
【請求項６】
下地図形に追加した追加図形を通して前記下地図形の色を所定の透過率で透過させて透過合成させる描画処理方法であって、
描画データがベクターデータと所定の透過率データとで表現された前記下地図形及び前記追加図形を記憶し、
記憶された前記下地図形と前記追加図形のベクターデータをスキャンライン毎に取り出して、前記所定の透過率データに基づき透過合成データを生成し、
前記透過合成データに基づいてラスターデータを生成し、複数分の前記ラスターデータを蓄積してから同期をとりながら出力することを特徴とする描画処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は描画処理装置に関し、特に塗りつぶし処理において上塗りだけでなく透過合成処理も行う描画処理装置に関する。
【０００２】
【従来の技術】
例えば、Ｉｎｔｅｒｐｒｅｓｓ（Ｘｅｒｏｘ社の商標）やＰｏｓｔＳｃｒｉｐｔ（Ａｄｏｂｅ社の商標）などのページ記述言語（ＰＤＬ）は、オペイクモデルと呼ばれる描画モデルを採用している。オペイクモデルは不透明なインクで上書きを行うモデルであり、上書きされた描画結果は、最後に描画された図形の色だけがページ上に残されるようになる。
【０００３】
近年のコンピュータ・グラフィックス（ＣＧ）やデスクトップ・パブリッシング（ＤＴＰ）では、透過モデルを採用する動きがある。例えば、ＱｕｉｃｋＤｒａｗＧＸ（Ａｐｐｌｅ社の商標）は、透過モデルを採用している。透過モデルで図形の描画を行うと、オペイクモデルでは上書きされて消去されていた下側の図形（下地図形）の色に対して、指定した透過率による透かし処理（透過合成処理）が施される。透過モデルにおいて、追加する図形（追加図形）の色の使用率を１００％（透過率１００％という）とすればオペイクモデルと全く同じ処理になるので、描画モデルとしては透過モデルの方が高い汎用性を有していると言える。
従来の透過合成処理は特開平７−２８９８６号公報に開示されているように、ラスター上で行うようになっている。
【０００４】
【発明が解決しようとする課題】
従って、従来の描画処理装置では、文字やグラフィックスのようなラスター以外のＰＤＬの描画要素に透過合成処理を行う場合であっても、ラスターデータを生成してからでないと透過合成処理を行うことができない。そのため従来の描画処理装置では、第１に、ラスター上で処理するための大容量のメモリを必要とする、第２に、データ転送量がページメモリの容量を超えてしまう、第３に、透過合成処理の処理速度が遅くなってしまう、等の問題点を有している。
【０００５】
本発明の目的は、ラスターデータを生成する前の段階で透過合成処理を行うことができ、しかも高速に透過合成処理を行える描画処理装置を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的は、下地図形に追加した追加図形を通して下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、下地図形及び追加図形の描画データをランレングス型データと所定の透過率データとで表現し、下地図形と追加図形のランレングス型データを合成し、透過率データに基づいて結果図形のランレングス型データ及び透過率データを生成する透過合成処理手段と、結果図形のランレングス型データ及び透過率データを記憶する記憶手段と、結果図形のランレングス型データに基づいて結果図形をラスター型データにして出力する出力手段とを備えることを特徴とする描画処理装置によって達成される。
【０００７】
上記描画処理装置において、ランレングス型データのデータ表現は、描画図形のスキャンライン上の始点、幅、及び色値を含むようにする。また、結果図形のランレングス型データの色値は、追加図形の色値に追加図形の透過率αを乗じた値と下地図形の色値に（１−α）を乗じた値とを加えた値である。
【０００８】
また上記目的は、下地図形に追加した追加図形を通して下地図形の色を所定の透過率で透過させる透過合成機能を有する描画処理装置であって、描画データがベクターデータと所定の透過率データとで表現された下地図形及び追加図形を記憶する記憶手段と、記憶手段から下地図形と追加図形のベクターデータをスキャンライン毎に取り出して、所定の透過率データに基づき透過合成データを生成する透過合成処理手段と、透過合成データに基づいてラスターデータを生成して出力する出力手段とを備えることを特徴とする描画処理装置によって達成される。
【０００９】
本発明によれば、ランレングス型のデータ、或いはベクターデータにより塗りつぶし処理時に透過合成処理を行うことができるようになるので、透過合成処理に必要なメモリ量を削減し、且つ高速に透過合成処理を行うことができるようになる。
【００１０】
【発明の実施の形態】
本発明の第１の実施の形態による描画処理装置を図１乃至図１３を用いて説明する。
まず初めに本実施の形態における透過合成処理を図２を用いて説明する。色コンポーネントが三原色の青（Ｂ）、緑（Ｇ）、赤（Ｒ）とし、先に描画される下地図形の色を（Ｂｕ）、（Ｇｕ）、（Ｒｕ）とする。また、下地図形の上に重ねて描画される追加図形の色を（Ｂｏ）、（Ｇｏ）、（Ｒｏ）とし、追加図形の透過率をαとする。透過合成処理の結果としての結果図形（Ｂｒ）、（Ｇｒ）、（Ｒｒ）は図２に示すような式で表される。
【００１１】
すなわち、透過合成処理とは、
結果図形の色値  ＝  追加図形の色値×α＋下地図形の色値×（１−α）
とする画像合成処理のことを言うものとする。
【００１２】
本実施の形態の描画処理装置の主要部の構成を図１を用いて説明する。まず、区間データ入力部２で、描画すべき図形の区間データ及び当該図形の透過率を受け取る。
【００１３】
「区間データ」とは、図３に示すように、ランレングス形式のデータ表現であり、描画すべき図形をスキャンライン毎の始点と長さ（幅）で表現したものである。区間データは図中の左側からスキャンラインの番号（Ｙ座標値）、続いて当該スキャンラインでの図形の始点となるＸ座標値、当該図形の幅、種別、及び色または色へのポインタで構成される。ここで種別は、種別に続く次のフィールドが当該図形の色値自身を示しているのか、色データへのポインタを示しているのかを識別するために用いられる。本実施の形態では、種別の値が０の場合は次フィールドが色値自身を表し、種別の値が１の場合は次フィールドが色データへのポインタを示しているものとしている。
【００１４】
区間データの例を図４及び図５を用いて説明する。図４に示す図形は内部が一定の色で塗られる三角形形状でありスキャンラインＹ１〜Ｙ７により描画される。図中Ｘ１〜Ｘ７は当該図形の各スキャンラインでの始点となるＸ座標値を示している。Ｌ１〜Ｌ７はそれぞれのスキャンライン上のＸ１〜Ｘ７からの幅である。図５に図４の図形の区間データを示す。区間データにより、スキャンライン毎に図形の内部を表す領域が表現される。この例では、種別は０であり、従って種別の次のフィールドには図形の色値自身が格納されている。
【００１５】
区間データの別の例を図６及び図７を用いて説明する。図６に示す図形は、図形の開始点のＸ座標値がＸ１、幅が８であり、スキャンラインＹ１〜Ｙ５で描画される長方形形状である。図６ではラスターなどの色値が画素毎に変化する場合を示している。図６の画像の区間データは図７のように表現される。区間データの種別は１であり、従って種別の次のフィールドには色データへのポインタが格納されている。そして、各区間データから参照されるポインタの先に、画素毎の色値が格納されている。色値の参照時には、区間データのＸ座標と連動してポインタ値を移動させれば、各画素の色値を求めることができる。
【００１６】
透過合成処理は、図１の透過合成処理部４及び区間データ記憶部６内の区間データ上で行われる。透過合成処理部４及び区間データ記憶部６については後程詳細に説明する。
【００１７】
図１の画像出力部８は、区間データ記憶部６の区間データを読み出しながらビデオ信号等を生成して、所定の出力装置に対応したフォーマットで画像を出力するようになっている。
【００１８】
次に、図８を用いて本実施の形態の描画処理装置による処理の概略の流れを説明する。
まず、ステップＳ１において、区間データ記憶部６の初期化を行う。図９に区間データの初期化の例を示す。初期状態として区間データ記憶部６の区間データには全て白（透明）の状態がセットされる。ｈは描画領域の高さを示しておりスキャンラインの番号に対応している。ｗは描画領域の幅を示している。初期状態として区間データの始点のＸ座標値には全て０が格納され、種別は０で次フィールドには白を示す色値が格納されている。
なお、このように本実施の形態では初期状態として描画領域全体を白と定義しているが、何もない状態（無色）や、固有の色を持つ状態を初期状態としても一向に差し支えない。
【００１９】
ステップＳ２において、区間データ記憶部６に保持されている下地図形の区間データの中から、追加図形の区間データと同じスキャンライン（走査線）上の全ての下地図形の区間データが読み出される。
【００２０】
ステップＳ３において、読み出した下地図形の区間データと追加図形の区間データのＸ座標値及び幅の値を用いて、以下に示す処理が行われる。
第１の処理：  追加図形の挿入位置の検索処理、
第２の処理：  追加図形が下地図形と重なる領域の色値の計算処理、
第３の処理：  下地図形の分割、修正、及び追加図形の追加処理
まず、第１の処理である追加図形の挿入位置の検索処理では、下地図形の一つの区間データのＸ座標値と、追加図形の区間データのＸ座標値と幅の値との和（Ｘ座標値＋幅の値）との比較を行う。
【００２１】
この比較は図１０に示す（ａ）〜（ｆ）の６通りに分類される。図１０における記号、ＯＳＸ、ＯＥＸ、ＵＳＸ、及びＵＥＸはそれぞれ以下に示す意味で用いる。
ＯＳＸ：  追加図形の区間データにおけるＸ座標値
ＯＥＸ：  追加図形の区間データにおける（Ｘ座標値＋幅−１）の値
ＵＳＸ：  下地図形の区間データにおけるＸ座標値
ＵＥＸ：  下地図形の区間データにおける（Ｘ座標値＋幅−１）の値
さて、各スキャンラインにおける下地図形の区間データがＸ座標値の小さな順に並べられているとすれば、下地図形の区間データを順次読み出しながら、以下のように追加図形の挿入位置と重なり具合を知ることができる。
【００２２】
図１０（ａ）の場合は、ＯＥＸ＜ＵＳＸであり、追加図形の終端より下地図形の前端の方がスキャンライン上で後方に位置するので、結果図形において下地図形と追加図形とは重ならない。従って、当該下地図形の次の下地図形と追加図形との重なりを調べる必要はない。
【００２３】
図１０（ｂ）の場合は、ＯＳＸ＜ＵＳＸ≦ＯＥＸ＜ＵＥＸであり、下地図形の前方と追加図形の後方と重なる結果図形となる。従って、次の下地図形と追加図形との重なりを調べる必要はない。
【００２４】
図１０（ｃ）の場合は、ＯＳＸ＜ＵＳＸ＜ＵＥＸ＜ＯＥＸであり、追加図形の内部に下地図形が完全に重なる結果図形となる。従って、次の下地図形に対して、追加図形のＸ座標値をＯＳＸ＝ＵＥＸ＋１としてさらに比較を行う必要がある。
【００２５】
図１０（ｄ）の場合は、ＵＳＸ≦ＯＳＸ＜ＯＥＸ≦ＵＥＸであり、追加図形が下地図形の内部に完全に重なる結果図形となる。従って、次の下地図形と追加図形の重なりを調べる必要はない。
【００２６】
図１０（ｅ）の場合は、ＵＳＸ＜ＯＳＸ≦ＵＥＸ＜ＯＥＸであり、下地図形の後方に追加図形の前方が重なる結果図形となる。従って、次の下地図形に対して追加図形のＸ座標値をＯＳＸ＝ＵＥＸ＋１としてさらに比較を行う必要がある。
【００２７】
図１０（ｆ）の場合は、ＵＥＸ＜ＯＳＸであり、追加図形の前端より下地図形の終端の方がスキャンライン上で前方に位置するので、結果図形において下地図形と追加図形とは重ならない。
【００２８】
上記６種類の場合分けにより、追加図形の挿入位置と重なり具合が求まる。図１０（ｃ）、（ｅ）、及び（ｆ）の場合は、さらに次の下地図形の区間データとの比較を行う。但し、図１０（ｆ）の場合にあっては、次の下地図形の区間データがなければ処理を終了させる。
【００２９】
次に第２の処理としての、追加図形が下地図形と重なる領域の色値の計算処理は、下地図形と追加図形との間に重なりが生じた場合、すなわち、図１０（ｂ）、（ｃ）、（ｄ）、及び（ｅ）の場合に必要となる。この場合は、図２で示した式により重なった領域の色値の計算が行われる。
【００３０】
次に第３の処理の下地図形の分割、修正、及び追加図形の追加処理は、下地図形と追加図形との間に重なりが生じた場合、すなわち、図１０（ｂ）、（ｃ）、（ｄ）、及び（ｅ）の場合に必要となる。本処理により各図の結果図形に示すように区間データを分割、修正して新たな区間データが合成される。
【００３１】
上記６種類の場合分けにおける下地図形の分割、修正、及び追加図形の追加処理（第３の処理）は、以下のように行われる。
図１０（ａ）の場合は、最初に読み出した下地図形の区間データの先頭に、追加する図形の区間データを追加する。
【００３２】
図１０（ｂ）の場合は、下地図形の区間データと追加図形の区間データから３個の区間データが作成される。各区間データの幅と色値は以下のようになる。なお、作成される区間データの幅を［始点，終点］で示し、当該幅での色値を「：」の次に示している（以下同じ）。
［ＯＳＸ，ＵＳＸ−１］：  追加図形の色値
［ＵＳＸ，ＯＥＸ］    ：  第２の処理で演算された色値
［ＯＥＸ＋１，ＵＥＸ］：  下地図形の色値
【００３３】
図１０（ｃ）の場合は、３個の区間データが作成される。各区間データの幅と色値は以下のようになる。
［ＯＳＸ，ＵＳＸ−１］：  追加図形の色値
［ＵＳＸ，ＵＥＸ］    ：  第２の処理で演算された色値
［ＵＥＸ＋１，ＯＥＸ］：  追加図形の色値
但し、［ＵＥＸ＋１，ＯＥＸ］の区間データの幅及び色値については、さらに次の下地区間データとの比較を行う場合には変更され得る。
【００３４】
図１０（ｄ）の場合は、２個の区間データから１乃至３個の区間データが作成される。すなわち、ＵＳＸ＝ＯＳＸ、ＯＥＸ＝ＵＥＸの場合は下地の区間データの幅に追加図形の区間データの幅が一致して重なるので結果図形としての区間データは１個となる。また、ＵＳＸ＝ＯＳＸ、或いはＯＥＸ＝ＵＥＸのいずれかの場合には、下地図形及び追加図形の前端又は終端が一致するので結果図形の区間データは２個になる。そして、追加図形が下地図形の中に含まれる場合には結果図形の区間データは３個になる。各区間データの幅と色値は以下のようになる。
［ＵＳＸ，ＯＳＸ−１］：  下地図形の色値（但し、ＵＳＸ＜ＯＳＸの場合）
［ＯＳＸ，ＯＥＸ］    ：  第２の処理で演算された色値
［ＯＥＸ＋１，ＵＥＸ］：  下地図形の色値（但し、ＯＥＸ＜ＵＥＸの場合）
【００３５】
図１０（ｅ）の場合は、２個の区間データから３個の区間データが作成される。各区間データの幅と色値は以下のようになる。
［ＵＳＸ，ＯＳＸ−１］：  下地図形の色値
［ＯＳＸ，ＵＥＸ］    ：  第２の処理で演算された色値
［ＵＥＸ＋１，ＯＥＸ］：  追加図形の色値
但し、［ＵＥＸ＋１，ＯＥＸ］の幅及び色値については、さらに次の下地区間データとの比較が行われる場合には変更され得る。
【００３６】
図１０（ｆ）の場合は、最初に読み出した下地図形の区間データの最後に、追加する図形の区間データを追加する。
上記６種類の場合分けにより、区間データの分割、修正、追加の処理が行われる。これらの処理結果は区間データ記憶部６に記憶される。
【００３７】
図１１及び図１２を用いて、区間データの分割、修正、追加処理の具体例を説明する。図１１に示す具体例は、下地図形として描画領域全体が白で塗られており、Ｙ１のスキャンラインにＸ座標値がＸからＬの幅を持つ青色の図形が透過率５０％で追加される場合である。この場合は図１０（ｄ）の場合に該当し、図１２に示すように結果図形の区間データはＹ１のスキャンライン上で３個の区間データに分割される。各区間データの幅と色値は以下のようになる。
［０，Ｘ−１］    ：  白
［Ｘ，Ｘ＋Ｌ−１］：  水色
［Ｘ＋Ｌ，Ｗ−１］：  白
【００３８】
図８におけるステップ２及びステップ３は、追加される全ての区間データを処理し終わるまで続けられる（ステップＳ４）。そして、全ての区間データが処理し終わった後に区間データ記憶部６に蓄積された区間データが出力される（ステップＳ５）。
【００３９】
ステップＳ５の処理を図１３を用いてより詳細に説明する。
図１３において、まず、出力装置に対して出力開始命令を出力する（ステップＳ１０）。次に、区間データ記憶部６から現在のスキャンラインにおける区間データを読み込む（ステップＳ１１）。区間データがあれば、１画素（ピクセル）分のビデオ信号を発生し（ステップＳ１４）、区間データの幅（ｒｌ）を１画素分減らす（ステップＳ１５）。この区間データにビデオ信号を発生させるべき画素のデータが残っているかどうかを判断し（ステップＳ１６）、データが残っていれば（ｒｌ＞０）、区間データの種別を判定し（ステップＳ１７）、ラスターであれば色値のポインタを増加（インクリメント）させる（ステップＳ１８）。ステップＳ１４〜ステップＳ１８までの処理を区間データにデータがなくなるまで続ける。区間データがなくなればステップＳ１６にてステップＳ１１に戻り、次の区間データを読み込んで同様の処理を行う。そして、全ての区間データを処理し終わると（ステップＳ１２）、出力装置に出力終了命令を出力して（ステップＳ１３）処理を終了する。
【００４０】
次に、本発明の第２の実施の形態による描画処理装置を図１４乃至図３６を用いて説明する。
図１４に本発明の第２の実施の形態による描画処理装置の主要部のブロック構成を示す。まず、ベクターデータ入力部１０で、描画すべき図形のベクター表現形式のデータと透過率及び描画属性値を受け取る。
【００４１】
ここでベクター表現形式のデータ（ベクターデータ）とは、図１５に示すように、描画すべき図形のアウトラインを向きを有する直線で表現したものである。図１５に示すベクターデータにおいて「ＩＤ」は描画順序を表している。「Ｘ」は現在のスキャンラインを横切るベクターのＸ切片の値を示す。「Ｘ変位」は次のスキャンラインに処理が移動した場合のＸ切片の変化量を示している。「Ｙ変位」は当該ベクターに影響を受ける残りのスキャンライン数を示している。「向き」は当該ベクターの向きを示す。
【００４２】
このようなベクター表現形式のデータの場合、アウトラインの内部を判定するための規則が必要である。内部／外部判定に用いる判定規則を図１６に示す。判定規則にはワインディング規則（ＮＺ）と奇偶規則（ＥＯ）との２種類がある。これらはいずれも複数の外形（パス）で形成された一つの図形の内部を判定する際に用いられる規則である。ワインディング規則及び奇偶規則による内部判定方法を図１７を用いて説明する。図１７（ａ）に示すワインディング規則は、図形２２を構成する外形がスキャンライン（走査線）２０と交差する際の向きを考慮したものである。図１７（ａ）では外形がスキャンライン２０を上向きに交差する場合を正、下向きに交差する場合を負としている。走査方向に向かって正の交差であれば１を加算し、負の交差であれば１を減算することにし、合計値が０でなくなった点から０に戻った点までが内部であると判定する。図１７（ｂ）に示す奇偶規則は、スキャンライン２０と交差するパスの個数をカウントして、奇数の点から偶数の点までを内部と判定することにしている。
【００４３】
図１５に示すベクターデータを図１８、図１９を用いてより具体的に説明する。図１８において、座標系は図面左上方を原点とし、従って図面の水平右方向にＸ座標値は増加し、図面の垂直下方向にＹ座標値は増加するものとする。
【００４４】
図１８に示すように一定の色で塗られる三角形の場合を考える。この三角形を構成するベクターはベクター２４、２６、２８である。ベクター２４は始点の座標が（Ｘ１，Ｙ１）、スキャンラインＹ１でのＸ切片の値を示す「Ｘ」はＸ１、次のスキャンラインに移動した場合のＸ切片の変化量「Ｘ変位」は−１、残りのスキャンライン数「Ｙ変位」は７、となる。ベクターの「向き」は座標系のＹ方向が増加する向きを１と定義し、座標系のＹ方向が減少する向きを−１と定義する。従って、ベクター２４の「向き」は１である。この「向き」はワインディング規則で内部／外部判定を行う際に、どの向きでスキャンラインを横切るかを示す情報として用いられる。同様にしてベクター２６は、スキャンラインＹ１でのＸ切片の値を示す「Ｘ」はＸ２、次のスキャンラインに移動した場合のＸ切片の変化量「Ｘ変位」は０、残りのスキャンライン数「Ｙ変位」は７、「向き」は−１を示している。
【００４５】
図１８のベクター２４、２６は図１９のように表現される。ベクターは、ベクターの「向き」を考慮して必ず下向きに補正された状態でベクターの開始点のＹ座標に結び付けられるので、ベクター２６はスキャンラインＹ１に結び付けられている。なお、スキャンラインと平行なベクター２８は考慮する必要がないので除外している。また、各ベクターの先頭のＩＤは図形毎の描画順序を示すので、ＩＤの値の小さい方が先に描画されたものである。
【００４６】
このＩＤに基づいて色値などの描画属性値が管理される。図２０乃至図２２にＩＤで管理された色テーブル（図２０）、透過率テーブル（図２１）、内部判定規則テーブル（図２２）の例を示す。これらのテーブルはそれぞれＩＤに基づいて参照することができる。さらに図２３に示すように、図形の内部／外部を判定するためのワーク領域としての内部判定テーブルもＩＤから参照できるように領域が確保される。
【００４７】
図１４のベクターデータ記憶部１２と透過合成処理部１４内で、ベクターデータによる透過合成処理が行われる。この透過合成処理については後程詳細に説明する。画像出力部１６は、透過合成処理の終了した領域から画像のビデオ信号を出力装置に対応したフォーマットで出力するようになっている。
【００４８】
次に図２４に示すフローチャートを用いて、本発明の第２の実施の形態による描画処理装置で行われる透過合成処理の概略の流れを説明する。
まずステップＳ２０で、ベクターデータ記憶部１２内の対象となるスキャンラインの位置に描画する図形のベクターを登録する。このとき図２０乃至図２２で示した色値等の属性値はベクターのＩＤに基づいて登録され、図２３で示した内部判定用のワーク領域も確保される。ステップＳ２０は、全ての描画要秦（プリミティブ）の読み込みが終了するまで続けられる（ステップＳ２１）。
【００４９】
次のステップ２２以降の処理の説明は、図２５に示す図形を実例に用いて説明する。図２５はスキャンラインとベクターとの関係を示している。図中縦方向には複数のスキャンラインが並列しており、各ベクターに関係するスキャンラインに上方からＹ０〜Ｙ９の番号が付されている。ＩＤ＝ＩＤ１である三角形は図形内部が透過率０％の赤色で塗られている。
【００５０】
この三角形はベクター３０とベクター３２により描画される。ベクター３０の始点は、図示のようにスキャンラインＹ０のＸ座標値＝Ｘ１であり、ベクター３２の終点はスキャンラインＹ０のＸ座標値＝Ｘ２である。既に説明したように、ベクターはベクターの「向き」を考慮して必ず下向きに補正された状態でベクターの開始点のＹ座標に結び付けられる。従って、図２６に示すように、ベクター３２はスキャンラインＹ０に結び付けられる。結果として、スキャンラインＹ０にＩＤ１の三角形を描画するベクター３０、３２が結び付けられている。ベクター３０のＸ切片はＸ１であり、Ｘ変位は−１、Ｙ変位は７、向きは１である。ベクター３２のＸ切片はＸ２であり、Ｘ変位は０、Ｙ変位は７、向きは−１である。
【００５１】
図２５のＩＤ２の長方形は図形内部が透過率５０％の青色で塗られている。この長方形はベクター３４とベクター３６により描画される。ベクター３６の始点は、図示のようにスキャンラインＹ４のＸ座標値＝Ｘ４であり、ベクター３４の終点はスキャンラインＹ４のＸ座標値＝Ｘ３である。従って、図２６に示すように、スキャンラインＹ４にＩＤ２の長方形を描画するベクター３４、３６が結び付けられている。ベクター３４のＸ切片はＸ３であり、Ｘ変位は０、Ｙ変位は６、向きは−１である。ベクター３６のＸ切片はＸ４であり、Ｘ変位は０、Ｙ変位は６、向きは１である。
また、ＩＤ１＜ＩＤ２なので下地図形が三角形であり、追加図形が長方形である。
【００５２】
図２５の図形の読み込みが終了した後では、図２６に示すように色値、透過率、判定規則の各属性値のテーブルがベクターのＩＤに基づいて登録され、内部判定用のテーブルのワーク領域にもＩＤに基づいて値が確保される。
このような具体例に基づいて、図２４に戻って透過合成処理の流れのステップＳ２２から説明する。ステップＳ２２では、ベクターデータ記憶部１２に登録されているベクターデータのうち、処理するスキャンラインにかかるベクターを取り出し、アクティブテーブルに登録する。
【００５３】
次にステップＳ２３では、アクティブテーブルに登録されたベクターをソートする。これは、スキャンライン間でベクターが交差するような場合には、当該スキャンラインでのベクターの状態が前スキャンラインでのベクターの状態とは異なるものとなるので、改めて当該スキャンラインでの全ベクターのソートを行って当該スキャンラインにかかるベクターを所定の順序で並べ替えるために行われる。本例では、Ｘ座標値の小さい順にソートするものとしている。従って、例えば図２５のスキャンラインＹ５でのソート結果は図２７に示すようにベクター３４、ベクター３０、ベクター３２、ベクター３６の順に並べられ、スキャンラインＹ６でのソート結果は図２８に示すようにベクター３０、ベクター３４、ベクター３２、ベクター３６の順に並べ替えられる。
【００５４】
次のステップＳ２４では、ソートされたアクティブテーブルからベクターを順次取り出して以下の処理を行う。
第１の処理：  図形の内部判定処理
第２の処理：  内部判定された図形の登録と色の出力
第３の処理：  外部判定された図形の削除と色の出力
以上の処理は、アクティブテーブルからベクターがなくなるまで続けられる。
【００５５】
第１の処理である図形の内部判定処理は、図２９に示すフローチャートに従って、図形が内部状態にあるかどうかを判定する。
図２９において、ベクターのＩＤから、このベクターで構成される図形の内部判断規則を取得する（ステップＳ３０）。判定規則の種類がＮＺ（ワインディング規則）であればステップＳ３２へ移行し、ＥＯ（奇偶規則）であればステップＳ３７へ移行する（ステップＳ３１）。
【００５６】
判定規則がＮＺであれば、ベクターのＩＤから内部判定テーブル（図２３）の値を取得し（ステップＳ３２）、当該値が０であるかどうかを判断する（ステップＳ３３）。値が０であれば当該ベクターで構成される図形は必ず内部になる。従って、図２３の内部判定テーブルの当該ベクターのＩＤの位置にある値にベクターの向きを加えてから（ステップＳ３４）、図３１に示す処理に移行する。取り出した値が０でない場合には、図２３の内部判定テーブルの当該ベクターのＩＤの位置にある値にベクターの向きを加え（ステップＳ３５）、加えた結果が０であるかどうかを判断する（ステップＳ３６）。加えた結果が０であれば、図３３に示す処理に移行し、加えた結果が０以外の場合は、引き続き内部状態が継続するので最初に戻る。
【００５７】
ステップＳ３１で判定規則がＥＯであると判断されると、当該ベクターのＩＤから内部判定テーブル（図２３）の値を取得し、当該値を１だけ増加させてから２の剰余を求める（ステップＳ３７）。２の剰余の値が１であれば判定結果は奇数となり（ステップＳ３８）、図形の内部となるので図３１に示した処理に移行する。２の剰余が０であれば判定結果は偶数となり、図形の外部になるので図３３の処理に移行する。このようにして、第１の処理での内部判断処理が行われる。
【００５８】
次に第２の処理である、内部判定された図形の登録と色の出力の処理について、図３０及び図３１を用いて説明する。図３０は描画状態表を示す図である。描画状態表は、現在処理対象としているスキャンラインのどこまでの描画が完了したかを保持する機能と、現在内部状態にある描画図形を保持する機能とを有している。図３０に示すように描画状態表は「描画開始位置」、「内部状態」、及び「色値」から構成される。「描画開始位置」は、現在処理対象のスキャンラインにおける次に塗りつぶしを開始させるＸ座標値が保持される。従って、描画開始位置より小さいＸ座標値の領域は既に塗りが画定した領域である。「内部状態」は、内部状態になった図形を登録する領域である。「色値」は、内部状態にある図形に対して、透過合成の色値の計算をＩＤの小さい方から順番に行った結果である。「内部状態」と「色値」の情報は、図形のＩＤの大きい順に登録される。
【００５９】
図３１は、図２９のステップＳ３４又はステップＳ３８で図形が内部状態となった場合における次の処理を示すフローチャートである。まず、描画状態表の「内部状態」が空であるかどうかを調べる（ステップＳ４０）。描画状態表の「内部状態」が空であれば当該ベクターから内部状態が開始するのでステップＳ４６に移行し、描画状態表の「描画開始位置」に当該ベクターのＸ座標値を設定する。
【００６０】
描画状態表の「内部状態」が空でなければ、描画状態表のすでに内部と判定されたベクターのＸ座標値（αとする）が「描画開始位置」にあるはずであるから、αから当該ベクターのＸ座標値−１までを「内部状態」の先頭の色で塗る（ステップＳ４１）。次に、当該ベクターより小さいＩＤのベクターが描画状態表に登録されているかどうかを調べる（ステップＳ４２）。当該ベクターより小さいＩＤのベクターが登録されている場合には、当該ベクターの色値を当該ベクターの直下にあるベクターの色値を用いて透過合成の色値の計算を行う（ステップＳ４３）。
【００６１】
次に、当該ベクターのＩＤより大きいＩＤを持つベクターが、描画状態表の内部状態に登録されているかどうかを調べる（ステップＳ４４）。当該ベクターより大きいＩＤを持つベクターがあれば、ＩＤが大きい全てのベクターに対してＩＤの小さい順に透過合成の色値の計算を行う（ステップＳ４５）。次に、「描画開始位置」を当該ベクターのＸ座標値に設定し（ステップＳ４６）、描画状態表の「内部状態」にＩＤを上から大きい順に並ぶように登録する（ステップＳ４７）。以上の処理で内部状態における透過合成処理を終了する。
【００６２】
図３２を用いて上述の透過合成処理における描画状態表の変化を説明する。図３２は図２５のスキャンラインＹ６のＸ３における描画状態表の変化を示している。Ｘ座標値がＸ３においてＩＤ２の図形が内部状態になる。すでに内部状態にある最大のＩＤはＩＤ１なので、スキャンラインＹ６でのベクター３０のＸ座標値Ｘ１−６からＸ３−１までが赤で塗られる。ＩＤ２の図形を登録した後、描画開始位置をＸ３に変更し、ＩＤ２の部分について色の再計算を行う。ｌＤ２の直下にあるのはｌＤ１の赤であるから、ＩＤ２に対応する色は紫（赤５０％、青５０％）となる。
【００６３】
次に第３の処理である外部判定された図形の削除と色の出力の処理について図３３を用いて説明する。図３３は、図２９のステップＳ３６又はステップＳ３８で図形が外部状態となった場合における次の処理を示すフローチャートである。まず、描画状態表の「描画開始位置」から当該ベクターのＸ座標値−１まで、描画状態表の「色値」の先頭の色で塗る（ステップＳ５０）。次に、「描画開始位置」を当該ベクターのＸ座標値に設定する（ステップＳ５１）。次に、当該ベクターを描画状態表から削除する（ステップＳ５２）。そして、当該ベクターのＩＤより大きいＩＤを持つベクターが描画状態表の「内部状態」に登録されているかどうかを調べる（ステップＳ５３）。当該ベクターより大きいＩＤを持つベクターがあれば、ＩＤが大きい全てのベクターに対してＩＤの小さい順に（内部状態の下方から）、透過合成の色値の計算を行う（ステップＳ５４）。この計算の際、図２６に示した色テーブルと透過率テーブルに格納されている元の色値と透過率を用いて再計算を行う。
【００６４】
図２４に戻り、ステップＳ２４の次の処理として、ステップＳ２４で計算された色値と領域の長さに基づいて、１スキャンラインの出力を行う（ステップＳ２５）。出力方法は例えば第１の実施の形態で説明した区間データの形式を用いて１スキャンライン分のデータを蓄積して出力するようにしてもよい。例として図２５に示した図形の区間データを図３４に示す。図３４の区間データからスキャンライン毎の区間データを取り出して、図１３で説明した出力処理を行えば１スキャンライン分の出力が行え、また、複数分蓄積してから出力装置との同期をとりながら図１３の処理を行えば複数ライン分の出力を行うこともできる。
【００６５】
ステップＳ２５での出力作業が終了すると、アクティブテーブルを更新する（ステップＳ２６）。アクティブテーブルに登録されている全てのベクターに対して、Ｘ＝Ｘ＋Ｘ変位、Ｙ変位＝Ｙ変位−１の演算を行い、Ｙ変位が０になったベクターをアクティブテーブルから取り除く。これにより、次のスキャンラインにおいてアクティブであるベクターだけを残すことができる。このステップＳ２６のアクティブテーブルの更新処理を行うと、例えば、図２８に示したＹ６のスキャンラインの処理が終了すると図３５に示すようにＹ７のスキャンラインの状態が整うようになる。図示の通り、Ｙ６にかかるベクターのうちベクター３０とベクター３２のＹ変位が１であるのでＹ７のスキャンラインではこれらベクター３０、３２は削除される。
【００６６】
以上のステップＳ２２からステップ２６までの処理は、全てのスキャンラインに対して行われる（ステップＳ２７）。
【００６７】
以上の第１乃至第３の処理を図３６を用いて具体的に説明する。図３６は図２５のスキャンラインＹ６における描画状態表の変化を示す。まず始めに、ＩＤ１の図形のベクター３０が取得される。ベクター３０による内部判断処理によりＩＤ１の図形は内部と判断され、且つ現在「内部状態」には登録図形がないので、「描画開始位置」には、ベクター３０のスキャンラインＹ６でのＸ座標値Ｘ１−６がセットされる。また、「内部状態」にＩＤ１がセットされ、色値として赤（Ｒ：１００％）がセットされる。
【００６８】
次に、ＩＤ２の図形のベクター３４が取得される。このときＩＤ２の図形は内部と判断される。「内部状態」にはＩＤ１の図形が登録されているので、スキャンラインＹ６のＸ１−６からＸ３−１まで赤（Ｒ：１００％）で塗られる。そして、ＩＤ２＞ＩＤ１なので、ＩＤ２の図形の色値は透過率をもとに、青（Ｂ：５０％）赤（Ｒ：５０％）と計算される。ＩＤ２より大きい図形は登録されていないので、「描画開始位置」をベクター３４のＸ座標値Ｘ３にセットし、「内部状態」の先頭にＩＤ２の図形が登録される。
【００６９】
次に、ＩＤ１のベクター３２が取得される。このとき、ＩＤ１の図形は外部と判断されるので、スキャンラインＹ６のＸ３からＸ２−１までを「内部状態」の先頭の色である青（Ｂ：５０％）赤（Ｒ：５０％）で塗る。そして、「描画開始位置」にはベクター３２のＸ座標値Ｘ２がセットされ、ＩＤ１の図形は「内部状態」から削除される。また、ＩＤ２＞ＩＤ１であるので、ＩＤ２の図形の色値を再計算して青（Ｂ：５０％）がセットされる。ＩＤ１より大きいＩＤを持つ図形はＩＤ２だけなので、次の処理へ移る。次に、ＩＤ２のベクター３６が取得される。このときＩＤ２の図形は外部と判断されるので、スキャンラインＹ６のＸ２からＸ４−１までが「内部状態」の先頭の色である青（Ｂ：５０％）で塗られる。ＩＤ２より大きい図形はないので、次の処理に移る。
【００７０】
以上のようにしてスキャンラインＹ６での透過合成処理が終了し、図３４でのスキャンラインＹ６に示す結果を得ることができる。
このように本実施の形態によれば、従来ラスターデータ上で行っていた透過合成処理を塗りつぶし処理時に行うことができるようになるので、透過合成処理に必要なメモリ量を削減し、且つ高速に透過合成処理を行うことができるようになる。
【００７１】
本発明は、上記実施の形態に限らず種々の変形が可能である。
例えば、上記実施の形態における描画処理装置において、透過率αが０％、或いは１００％の場合には上記実施の形態で説明した透過合成処理を省略させるようにしてもよい。
【００７２】
また、上記第１の実施の形態において、区間データを始点と長さ（幅）で表現したが、始点と終点で表現してもよい。
さらに、透過率の定義を下地図形の透過率をαとして、
結果図形の色値  ＝  追加図形の色値×（１−α）＋下地図形の色値×α
のように変えてもよい。
【００７３】
【発明の効果】
以上の通り、本発明によれば、ランレングス型のデータ上、或いはベクターデータ上にて塗りつぶし処理時に透過合成処理を行うことができるようになるので、透過合成処理に必要なメモリ量を削減し、且つ高速に透過合成処理を行うことができるようになる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態による描画処理装置の主要部を示すブロック図である。
【図２】透過合成処理における色値の計算式を示す図である。
【図３】第１の実施の形態における区間データの説明図である。
【図４】区間データを具体的に説明する図である。
【図５】区間データを具体的に説明する図である。
【図６】区間データを他の例により説明する図である。
【図７】区間データを他の例により説明する図である。
【図８】本発明の第１の実施の形態における透過合成処理の概略のフローチャートを示す図である。
【図９】本発明の第１の実施の形態による描画処理装置の区間データ記憶部の初期状態の例を示す図である。
【図１０】追加図形と下地図形の関係の分類を示す図である。
【図１１】本発明の第１の実施の形態における透過合成処理の具体例を示す図である。
【図１２】本発明の第１の実施の形態における透過合成処理の具体例を示す図である。
【図１３】本発明の第１の実施の形態による描画処理装置の出力処理部における処理のフローチャートを示す図である。
【図１４】本発明の第２の実施の形態による描画処理装置の主要部を示すブロック図である。
【図１５】本発明の第２の実施の形態におけるベクター表現形式のデータを示す図である。
【図１６】内部判定規則の種類を示す図である。
【図１７】内部判定の規則を説明する図である。
【図１８】ベクターの向きとスキャンラインの関係を示す図である。
【図１９】スキャンラインＹ１におけるベクターデータを示す図である。
【図２０】色テーブルの説明図である。
【図２１】透過率テーブルの説明図である。
【図２２】内部判定規則テーブルの説明図である。
【図２３】内部判定テーブルの説明図である。
【図２４】本発明の第２の実施の形態にかかる透過合成処理の概略のフローチャートを示す図である。
【図２５】本発明の第２の実施の形態における具体例の説明図である。
【図２６】図２５に示す具体例における各属性値のテーブルの初期状態を示す図である。
【図２７】図２５のスキャンラインＹ５におけるアクティブテーブルの状態図である。
【図２８】図２５のスキャンラインＹ６におけるアクティブテーブルの状態図である。
【図２９】内部状態判定処理のフローチャートを示す図である。
【図３０】描画状態表を説明する図である。
【図３１】図２９で内部判定された場合のフローチャートを示す図である。
【図３２】図２５のスキャンラインＹ６のＸ座標値がＸ３における状態の変化の説明図である。
【図３３】図２９で外部判定された場合のフローチャートを示す図である。
【図３４】図２５の図形を区間データにより表現した図である。
【図３５】アクティブテーブルの状態の変化の説明図である。
【図３６】図２５のスキャンラインＹ６における描画状態表の変化を示す図である。
【符号の説明】
２  区間データ入力部
４  透過合成処理部
６  区間データ記憶部
８  画像出力部
１０  ベクターデータ入力部
１２  ベクターデータ記憶部
１４  透過合成処理部
１６  画像出力部
２０  スキャンライン
２２  図形
２４、２６、２８、ベクター
３０、３２、３４、３６  ベクター
【図１】
0003692639.tif 000002
【図２】
0003692639.tif 000003
【図３】
0003692639.tif 000004
【図４】
0003692639.tif 000005
【図５】
0003692639.tif 000006
【図６】
0003692639.tif 000007
【図７】
0003692639.tif 000008
【図８】
0003692639.tif 000009
【図９】
0003692639.tif 000010
【図３５】
0003692639.tif 000011
【図１０】
0003692639.tif 000012
【図１１】
0003692639.tif 000013
【図１２】
0003692639.tif 000014
【図１３】
0003692639.tif 000015
【図１４】
0003692639.tif 000016
【図１５】
0003692639.tif 000017
【図１６】
0003692639.tif 000018
【図１７】
0003692639.tif 000019
【図１８】
0003692639.tif 000020
【図１９】
0003692639.tif 000021
【図２０】
0003692639.tif 000022
【図２１】
0003692639.tif 000023
【図２２】
0003692639.tif 000024
【図２３】
0003692639.tif 000025
【図３０】
0003692639.tif 000026
【図３２】
0003692639.tif 000027
【図２４】
0003692639.tif 000028
【図２５】
0003692639.tif 000029
【図２６】
0003692639.tif 000030
【図２７】
0003692639.tif 000031
【図２８】
0003692639.tif 000032
【図２９】
0003692639.tif 000033
【図３１】
0003692639.tif 000034
【図３３】
0003692639.tif 000035
【図３４】
0003692639.tif 000036
【図３６】
0003692639.tif 000037