(57)【特許請求の範囲】
【請求項１】
上位装置から送信された印刷データを受信するデータ受信部と、
前記印刷データに含まれる描画図形が矩形のクリップウィンドウ内に収まるかどうかを判定するクリップ判定部と、
前記クリップ判定部での判定の結果、前記クリップウィンドウ内に収まらない場合、前記描画図形に対し前記クリップウィンドウの上下端でクリップ処理を行うクリップ処理部と、
前記クリップ処理部における上下端でのクリップ処理後の図形について、塗りつぶし領域を抽出する塗りつぶし領域抽出部と、
塗りつぶし処理された図形情報から印刷イメージデータを生成するデータ展開部と
印刷部に対し前記印刷イメージデータの印刷指示を行う印刷制御部を有し、
更に、前記クリップ処理部は、前記塗りつぶし領域抽出部で抽出された塗りつぶし領域に対し前記クリップウィンドウの左右端でクリップ処理を行い、前記左右端でクリップ処理された図形情報に対し前記塗りつぶし処理を行い、かつ前記塗りつぶし処理を行った図形情報を前記データ展開部へ渡すことを特徴とする画像処理装置。
【請求項２】
前記塗りつぶし領域抽出部は、前記描画図形を複数の線分情報に変換し、前記線分情報からなる図形の頂点を通る境界線を境に塗りつぶし領域を抽出し、
かつ、前記描画図形に曲線部があるときは、複数の線分で近似することにより前記線分情報への前記変換を行うことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記塗りつぶし領域抽出部は、前記クリップウィンドウの上下端でのクリップ処理により、図形の線分の一部が除去された場合に、塗りつぶし処理ができるようにその線分と前記クリップウィンドウの端部との交点を算出し、前記線分の情報を置き換えることを特徴とする請求項２記載の画像処理装置。
【請求項４】
上位装置から送信された印刷データをデータ受信部により受信するデータ受信ステップと、
前記印刷データの描画図形が矩形のクリップウィンドウ内に収まるかどうかをクリップ判定部により判定するクリップ判定ステップと、
前記クリップウィンドウ内に収まらない場合、クリップ処理部により矩形のクリップウィンドウの上下端でのクリップ処理を行う第１のクリップ処理ステップと、
前記クリップ処理部における上下端でのクリップ処理後の図形について、塗りつぶし領域を塗りつぶし領域抽出部により抽出する塗りつぶし領域抽出ステップと、
前記塗りつぶし領域抽出部で抽出された図形に対して、前記クリップ処理部により左右端でのクリップ処理を行う第２のクリップ処理ステップと、
前記左右端でクリップ処理された図形情報に対し前記クリップ処理部により塗りつぶし処理を行う塗りつぶし処理ステップと、
前記塗りつぶし処理された図形情報からデータ展開部により印刷イメージデータを生成するデータ展開ステップと、
印刷部に対し前記印刷イメージデータの印刷指示を印刷制御部により行う印刷制御ステップをコンピュータに実行させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータの出力装置としてのプリンタ等の画像処理装置に関する。
【背景技術】
【０００２】
従来、画像処理装置において、コンピュータから入力された画像データに対して部分的印刷を行わせるクリップ処理及び所定の領域内を彩色する塗りつぶし処理が行われている。画像処理装置において図形をクリップするには、図形コマンドを解析して実際に印刷できる印刷イメージのビットマップの状態にして、その段階で設定されているクリップウィンドウに含まれる部分を抽出し、抽出された部分のみを印刷していた。また、特開２００２−７３２９９（特許文献１）によれば、事前にクリップ領域に外接する矩形で図形をクリップしておくことにより、図形のデータ量を減らすことができ、計算速度も向上した。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−７３２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の方法では、クリップウィンドウに含まれているかどうか関係なく、一旦全ての図形コマンドを解析処理する時間が必要であった。また、特許文献１のように、事前にクリップ領域に外接する矩形で図形をクリップしておく方法では、塗りつぶし規則を考慮した場合、正しく塗りつぶしを行うことができない場合が発生するという問題があった。
【０００５】
本発明の解決しようとする課題は、クリップ処理に関して処理時間の短縮を図り、かつ、クリップされた図形に対して塗りつぶし規則に従った、正しい塗りつぶし処理を行うことを可能にすることである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために本発明に関する画像処理装置は、上位装置から送信された印刷データを受信するデータ受信部と、前記印刷データに含まれる描画図形が矩形のクリップウィンドウ内に収まるかどうかを判定するクリップ判定部と、前記クリップ判定部での判定の結果、前記クリップウィンドウ内に収まらない場合、前記描画図形に対し前記クリップウィンドウの上下端でクリップ処理を行うクリップ処理部と、前記クリップ処理部における上下端でのクリップ処理後の図形について、塗りつぶし領域を抽出する塗りつぶし領域抽出部と、クリップ処理された図形情報から印刷イメージデータを生成するデータ展開部と印刷部に対し前記印刷イメージデータの印刷指示を行う印刷制御部を有し、更に、前記クリップ処理部は、前記塗りつぶし領域抽出部で抽出された塗りつぶし領域に対し前記クリップウィンドウの左右端でクリップ処理を行い、前記左右端でクリップ処理された図形情報に対し塗りつぶし処理を行い、かつ前記塗りつぶし処理を行った図形情報を前記データ展開部へ渡すことを特徴とするものである。
【発明の効果】
【０００７】
上記構成を有する本発明によれば、印刷データの描画図形が矩形のクリップウィンドウ内に収まるかどうかを判定するクリップ判定部と、クリップウィンドウ内に収まらない図形の場合、矩形のクリップウィンドウの上下端でクリップ処理を行うクリップ処理部を設け、塗りつぶし処理を行う前にクリップ処理を行うようにしたので、クリップウィンドウをまたぐ図形であった場合には、図形をクリップウィンドウの上下端で先にクリップすることにより、クリップウィンドウからはみ出る部分を除去することができる。これにより、除去した部分に関しては、処理時間の短縮が可能となり、更に、メモリ資源を節約することができるようになる。
【０００８】
更に、前記描画図形を複数の線分情報に変換し、前記線分情報からなる図形の頂点を通る境界線を境に塗りつぶし領域を抽出し、かつ、前記描画図形に曲線部があるときは、複数の線分で近似することにより前記線分情報への前記変換を行う塗りつぶし領域抽出部を設ければ、近似された線分情報から塗りつぶし領域を抽出できるので、クリップされた図形に対して塗りつぶし規則に従った、正しい塗りつぶし処理を行うことができる画像処理装置を提供することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態に関する画像処理装置の構成を示すブロック図である。
【図２】塗りつぶし規則を示す説明図である。
【図３】走査する領域を示す説明図である。
【図４】クリップ処理により正しく塗りつぶせない例とその対処を示す説明図である。
【図５】線分の交点算出とｙ座標での整列を示す説明図である。
【図６】第１の実施の形態に関するデータ編集部の動作の概略を示すフローチャートである。
【図７】第１の実施の形態に関するクリップ処理と塗りつぶし処理の動作を示すフローチャートである。
【図８】第１の実施の形態に関するクリップ処理と線分情報の置き換えを示す説明図である。
【図９】クリップ処理の過程を示す説明図である。
【図１０】同じくクリップ処理の過程を示す説明図である。
【図１１】第２の実施の形態に関する画像処理装置の構成を示すブロック図である。
【図１２】第２の実施の形態に関するクリップ処理と塗りつぶし処理の動作を示すフローチャートである。
【図１３】第２の実施の形態に関するクリップ処理の一部を示す説明図である。
【発明を実施するための形態】
【００１０】
＜第１の実施の形態＞
本発明の第１の実施の形態について説明する前に、塗りつぶし規則について、図２乃至図５を用いて説明する。まず、図２は塗りつぶし規則を示す説明図である。図２(ａ)のサンプル図形を例として説明する。図２(ａ)のサンプル図形は外側の矩形Ｗ−１と、内側の矩形Ｗ−２からなる。ここで、塗りつぶし規則、即ち、内外判定規則には、「非ゼロ巻数規則（non-zero winding number rule）」と「偶奇規則（even-odd rule）」の２種類がある。
【００１１】
「非ゼロ巻数規則」とは、ｘ軸に平行な走査線で走査した場合に、０から数えはじめて図形の辺が走査線を右から左へと横切る場合に−１、左から右へ横切る場合に＋１にして計算する。こうして最終的にゼロでない領域を内側、ゼロの領域を外側と捉え、内側を塗りつぶし、外側は塗りつぶさないというものである。非ゼロ巻数規則の場合の例を図２（ｂ）、図２（ｄ）に示す。
【００１２】
「偶奇規則」とは、図形の辺の向きは考慮せずに、走査線が図形の辺を交差する度に＋１にして計算する。こうして、交差する回数が偶数の領域は外側、奇数の領域は内側と捉え、非ゼロ巻数規則と同様に内側を塗りつぶし、外側を塗りつぶさないというものである。偶奇規則の場合の例を図２（ｃ）、図２（ｅ）に示す。
【００１３】
図２（ｂ）、図２（ｃ）は、外側の矩形Ｗ−１と内側の矩形Ｗ−２の辺が同じ向きで、即ち、図形の内外の辺が共に反時計回りで描画されている場合である。図２（ｄ）、図２（ｅ）は、外側の矩形Ｗ−１と内側の矩形Ｗ−２の辺が異なる向きで、即ち、外側の辺は反時計回で、内側の辺は時計回りで描画されている場合である。偶奇規則によると、図２（ｃ）、図２（ｅ）が同じ結果であるように、内側の矩形Ｗ−２と外側の矩形Ｗ−１を描く向きによらず、内側の矩形Ｗ−２は塗りつぶされない。図２（ｂ）の場合は内側の矩形Ｗ−２も塗りつぶされ、図２（ｄ）の場合は内側の矩形Ｗ−２は塗りつぶされない。
【００１４】
本来、ｘ軸に平行な走査線による計算は、ｙ軸方向の全てのドットに対する走査線で行うべきであるが、そうすると計算量が著しく増加してしまう。このため、ある程度の領域に区切って走査と計算を行う。図３は走査する領域を示す説明図である。図３（ａ）は、図２(ａ)のサンプル図形と同様に、外側の矩形Ｗ−１と内側の矩形Ｗ−２からなるサンプル図形である。図形の各頂点Ａ、Ｂ・・・に着目し、ｙ軸方向の上から各頂点Ａ、Ｂ・・・を通るｘ軸に平行な境界線Ｌで領域を区切る。同図の場合は、領域Ｒ１〜Ｒ３に区切ることができる。図３（ｂ）は多角形Ｗからなるサンプル図を示す。同図の場合は、領域Ｒ１〜Ｒ５に区切ることができる。このように区切られた各領域Ｒを走査線Ｓで一回走査することで、図形の形状によらず、図形全体を漏れなく走査することができる。そして、塗りつぶし規則の計算を行ない、塗りつぶし領域を抽出することができる。
【００１５】
次に、塗りつぶしが正しく行われない例について説明する。図４はクリップ処理により正しく塗りつぶせない例とその対処を示す説明図である。図４（ａ）のように、外側の矩形Ｗ−１と内側の矩形Ｗ−２からなるサンプル図形と、矩形のクリップウィンドウＱＴＵＶを考えた場合、偶奇規則に従うとすると、図形の内側の矩形Ｗ−２と外側の矩形Ｗ−１で挟まれた領域が塗りつぶされることになる。しかし、図４（ｂ）のように塗りつぶしを判断する前にクリップ処理を行うと、塗りつぶし領域を抽出するために必要な辺情報が失われてしまう。そして、図４（ｄ）に示すように偶数「２」と奇数「１」が混在する領域が生じてしまうため、塗りつぶしを正しく行うことができない。
【００１６】
そこで、塗りつぶし処理においては、まず、図４（ｃ）に示すように矩形のクリップウィンドウＱＴＵＶにおける後述する走査線Ｓに平行な上下端ＱＴ、ＵＶのみに沿ってクリップ処理を行う。その後、図４（ｅ）に示すようにクリップされた図形に対し、走査と計算を行って塗りつぶし領域を抽出することにより、正しく塗りつぶし領域を抽出することができる。その後、クリップウィンドウＱＴＵＶの左右端ＴＵ、ＶＱでクリップすることにより、目的とする図形を描画することができる。本発明の第１の実施の形態はこの原理を利用するものである。
【００１７】
更に、塗りつぶし処理においては、走査する領域を抽出するに際して、「線分の交点算出」と「交点・頂点のｙ座標での整列」を行う。図５は線分の交点算出とｙ座標での整列を示す説明図である。「線分の交点算出」とは、複数の線分ＡＤ、ＢＣが交差する場合、その交点を座標として求めることである。図５(ａ)に線分ＡＤ、ＢＣの交点算出を示す。頂点Ａ〜Ｄは図形情報として与えられるが、交点Ｅは線分ＡＤと線分ＢＣの交点として算出する。
【００１８】
また、「交点・頂点のｙ座標での整列」とは、算出した交点及び図形情報として与えられた頂点を、ｙ座標で順に整列することである。図５（ｂ）に交点・頂点のｙ座標での整列を示す。各頂点Ａ、Ｂ、Ｅ、Ｄ、Ｃを通るｘ軸に平行な境界線Ｌで領域Ｒを区切る。そして、図３に示すように走査する領域Ｒが順に決定され、これにより、効率のよい走査と計算を行うことができる。ｙ座標で昇順に整列すると、交点・頂点はＡ→Ｂ→Ｅ→Ｄ→Ｃとなり、これは同時に走査と計算をする領域を示すことになる。
【００１９】
なお、本実施の形態の説明では走査方向をｘ軸に平行な方向としているが、必ずしもこれに限らず、ｙ軸に平行な方向や斜め方向の走査でも、実現は可能である。
【００２０】
図１は、第１の実施の形態に関する画像処理装置の構成を示すブロック図である。画像処理装置としての印刷装置１０は、上位装置１から送信された印刷データを受信して印刷を行うものである。上位装置１と印刷装置１０は、ケーブルやネットワークで接続されている。印刷装置１０は、データ受信部１１、Ｊｏｂ制御部１２、データ展開部１８、印刷制御部１９、データ編集部２０及び装置制御部２１から構成される。
【００２１】
装置制御部２１は、図示しない記憶部に格納したプログラムにより動作し、これら各部の制御を行う。データ受信部１１は、上位装置１から送信された印刷データを受信し、受信した印刷データをＪｏｂ制御部１２へ渡す。Ｊｏｂ制御部１２は、データ受信部１１から渡された印刷データの編集をデータ編集部２０へ依頼し、印刷制御部１９に指示を出して印刷を行わせる。
【００２２】
データ編集部２０は、データ解析判断部１３、クリップ判定部１４、クリップ処理部２３、塗りつぶし領域抽出部２４、図形抽出部１６、解析結果格納部１７、編集部制御部２２から構成され、データ受信部１１で受信した印刷データの解析を行う。データ編集部２０のデータ解析判断部１３は、受信した印刷データの解析が全て終了したかどうかを判断し、データの解析が終了していないならば、受信した印刷データをコマンド単位で読み込む。
【００２３】
クリップ判定部１４は、図形とクリップウィンドウの位置を判定することにより、読み込んだ図形描画コマンドから、描画図形が矩形のクリップウィンドウ内に収まるかどうかを判定する。図形抽出部１６は、クリップ判定部１４による判定がクリップウィンドウ内に収まる図形の場合、通常の図形処理を行って図形の抽出を行う。
【００２４】
クリップ処理部２３は、後に詳述するクリップ処理を行う。クリップ判定部１４による判定がクリップウィンドウ内に収まらないような図形の場合、まず矩形のクリップウィンドウの上下端からはみ出る部分を除去する上下端のクリップ処理を行う。更にまた、次に説明する塗りつぶし領域抽出部２４で抽出した塗りつぶし領域に対して、矩形のクリップウィンドウの左右端でクリップ処理を行う。そして、上下左右端でクリップ処理された図形情報に対し塗りつぶし処理を行う。最後に、塗りつぶし処理された図形情報を解析結果格納部１７へ渡す。
【００２５】
塗りつぶし領域抽出部２４は、まず図形情報を線分情報に変換する。線分情報への変換は、頂点などのパラメータとして与えられている図形情報を具体的な線分の情報に変換する処理を行うものである。なお、図形に曲線部があるときは、後述するように複数の線分で近似することにより、近似された線分情報を得る。更に、塗りつぶし領域抽出部２４は、図形に対し塗りつぶし領域を抽出する。即ち、前記図形の頂点を通る境界線Ｌを境に塗りつぶし領域を形成する。そして、形成された塗りつぶし領域に対して、ｘ軸に平行な方向に走査を行うことにより、塗りつぶし規則の計算を行い、塗りつぶし領域を抽出する。更にまた、塗りつぶし領域抽出部２４は、クリップウィンドウの上下端でのクリップ処理により、図形の線分の一部が除去された場合に、塗りつぶし処理ができるようにその線分とクリップウィンドウ端部との交点を算出し、前記線分情報を置き換える。
【００２６】
解析結果格納部１７は、図形抽出部１６で抽出した図形又はクリップ処理部２３で塗りつぶし処理された図形情報を格納する。編集部制御部２２は、データ編集部２０内の各部を制御する。データ展開部１８は、解析結果格納部１７から塗りつぶし処理された図形情報やその他の印刷データの解析結果を受け取り、それらを基に印刷イメージデータを生成し、印刷制御部１９へ渡す。印刷制御部１９は、データ展開部１８から渡された印刷イメージデータについて、図示しない印刷部に対し印刷の指示を行う。
【００２７】
次に、第１の実施の形態に関する印刷装置の動作を説明する。まず、上位装置１から印刷装置１０に対して印刷データが送信される。印刷装置１０の装置制御部２１は、データ受信部１１に対し印刷データを受信するよう指示する。次に、装置制御部２１は、データ受信部１１に対し、受信した印刷データをＪｏｂ制御部１２へ渡すよう指示する。更に、装置制御部２１は、Ｊｏｂ制御部１２に対し、受信した印刷データの解析をデータ編集部２０に依頼するよう指示する。
【００２８】
データ編集部２０の動作は、図６のフローチャートに従った動作を行う。図６は第１の実施の形態に関するデータ編集部２０の動作の概略を示すフローチャートである。
ステップ１０１：データ編集部２０の編集部制御部２２はデータ解析判断部１３に対し、受信した印刷データの解析が全て終了したかどうかを判断するよう指示する。データの解析が終了していないならば、ステップ１０２へ進み、データの解析が終了していれば、ステップ１０７へ進む。
【００２９】
ステップ１０２：データの解析が終了していないならば、編集部制御部２２はデータ解析判断部１３に対し、受信した印刷データをコマンド単位で読み込むよう指示する。
ステップ１０３：編集部制御部２２は、クリップ判定部１４に対し、読み込んだ図形描画コマンドから、描画図形がクリップウィンドウ内に収まるかどうかを判断するよう指示する。クリップ判定部１４が行う判定は、図形描画を行うためのパラメータ（座標軸など）とクリップウィンドウの座標を比較することで、図形がクリップウィンドウ内に収まるかどうかを判定することができる。クリップウィンドウ内に収まる図形であった場合には、ステップ１０４へ進み、クリップウィンドウ内に収まらない図形であった場合には、ステップ１０６へ進む。
【００３０】
ステップ１０４：クリップウィンドウ内に収まる図形であった場合には、編集部制御部２２は図形抽出部１６に対し、描画コマンドの解析処理を行うよう指示する。
ステップ１０５：編集部制御部２２は解析結果格納部１７に対し、図形抽出部１６で解析処理した解析結果を格納するよう指示する。
【００３１】
ステップ１０６：前記ステップ１０３において、クリップウィンドウ内に収まらない図形、即ち、クリップウィンドウをまたぐ図形であった場合には、編集部制御部２２はクリップ処理部２３に対し、後述する図形のクリップ処理と塗りつぶし処理を行うよう指示する。その後、ステップ１０５へ進む。ステップ１０５において、編集部制御部２２は解析結果格納部１７に対し、クリップ処理部２３で塗りつぶし処理された図形情報を格納するよう指示する。
【００３２】
ステップ１０５の後はステップ１０１に戻り、編集部制御部２２はデータ解析判断部１３に対し、全受信データを解析し終えたかを判断するよう指示する。終えていない場合には、ステップ１０２以降をデータが終了するまで繰り返す。
【００３３】
ステップ１０７：ステップ１０１において全データ解析終了した場合には、編集部制御部２２は、全データ解析の終了を装置制御部２１に報告する。すると、装置制御部２１はデータ展開部１８に対し、解析結果格納部１７から塗りつぶし処理された図形情報やその他の印刷データの解析結果を受け取り、印刷イメージデータを作成し、作成した印刷イメージデータを印刷制御部１９に渡すよう指示する。
ステップ１０８：装置制御部２１は印刷制御部１９に対し、印刷イメージデータを印刷するよう指示する。
【００３４】
次に、ステップ１０６のクリップ処理、即ち、図形がクリップウィンドウ内に収まらない場合のクリップ処理について説明する。図７は、第１の実施の形態に関するクリップ処理と塗りつぶし処理の動作を示すフローチャートである。
ステップ２０１：編集部制御部２２はクリップ処理部２３に対し、変数ｂＣｌｉｐＵと変数ｂＣｌｉｐＬにｆａｌｓｅを設定するよう指示する。
【００３５】
ステップ２０２：編集部制御部２２はクリップ処理部２３に対し、クリップウィンドウの上端、下端両方をまたぐ図形かどうかを判断するよう指示する。
ステップ２０３：クリップウィンドウの上端、下端両方をまたぐ図形の場合（図９（ａ）参照）には、編集部制御部２２はクリップ処理部２３に対し、変数ｂＣｌｉｐＵと変数ｂＣｌｉｐＬにｒｕｅを設定するよう指示する。これにより、クリップウィンドウ外の線分を除去する処理を行う。
【００３６】
ステップ２０４：ステップ２０２でクリップウィンドウの上端、下端両方をまたがない描画の場合には、編集部制御部２２はクリップ処理部２３に対し、クリップウィンドウの上端のみをまたぐ図形かどうかを判断するよう指示する。
ステップ２０５：クリップウィンドウの上端のみをまたぐ図形の場合には、編集部制御部２２はクリップ処理部２３に対し、変数ｂＣｌｉｐＵにｔｒｕｅを設定するよう指示する。これにより、クリップウィンドウ外の線分を除去する処理を行う。
【００３７】
ステップ２０６：ステップ２０４でクリップウィンドウの上端のみをまたぐ図形でない場合には、編集部制御部２２はクリップ処理部２３に対し、クリップウィンドウの下端のみをまたぐ図形かどうかを判断するよう指示する。クリップウィンドウの下端のみをまたぐ図形でない場合には、クリップウィンドウ外の描画であるということなので、以降は処理を行わずに描画処理を終了する。
【００３８】
ステップ２０７：クリップウィンドウの下端のみをまたぐ図形の場合には、編集部制御部２２はクリップ処理部２３に対し、変数ｂＣｌｉｐＬにｔｒｕｅを設定するよう指示する。これにより、クリップウィンドウ外の線分を除去する処理を行う。
【００３９】
ステップ２０８：編集部制御部２２は塗りつぶし領域抽出部２４に対し、図形情報を線分情報に変換するよう指示する。線分情報への変換は、頂点などのパラメータとして与えられている図形情報を具体的な線分の情報に変換する処理を行う。また、曲線の部分があるときは、線分に近似して複数の線分に変換する（図９（ｂ）参照）。次に、実際にクリップを行うことになる。
【００４０】
ステップ２０９：編集部制御部２２はクリップ処理部２３に対し、変数ｂＣｌｉｐＵがｔｒｕｅかどうかを判断するよう指示する。
ステップ２１０：変数ｂＣｌｉｐＵがｔｒｕｅであれば、クリップウィンドウの上端を図形がまたぐということなので、編集部制御部２２はクリップ処理部２３に対し、クリップウィンドウの上端で図形をクリップするよう指示する。
【００４１】
ステップ２１１：ステップ２０９で変数ｂＣｌｉｐＵがｔｒｕｅでないならば、編集部制御部２２はクリップ処理部２３に対し、変数ｂＣｌｉｐＬがｔｒｕｅかどうかを判断するよう指示する。
【００４２】
ステップ２１２：ステップ２１１で変数ｂＣｌｉｐＬがｔｒｕｅであれば、クリップウィンドウの下端を図形がまたぐということなので、編集部制御部２２はクリップ処理部２３に対し、クリップウィンドウの下端で図形をクリップするよう指示する（図１０（ａ）参照）。
【００４３】
ここで、前記ステップ２０８において図形情報は線分情報に変換されているので、ステップ２１０及びステップ２１２で行うクリップ処理は、次のようになる。即ち、まず、線分情報とクリップウィンドウの座標とを比較して、クリップウィンドウ外の線分を除去する処理となる。そして、編集部制御部２２は塗りつぶし領域抽出部２４に対して、クリップウィンドウと交差する線分には、その線分とクリップウィンドウとの交点を算出し、線分情報を置き換えるよう指示する。
【００４４】
この内、ステップ２１０のクリップウィンドウの上端で図形をクリップする様子を図８に示す。図８は第１の実施の形態に関するクリップ処理と線分情報の置き換えを示す説明図である。図８（ａ）に示すような図形ＡＢＣＤＥＦと矩形のクリップウィンドウＱＴＵＶが与えられた場合、クリップ処理を行うと図８（ｂ）に示すようになる。
【００４５】
即ち、線分ＡＢ、線分ＦＡは、クリップウィンドウＱＴＵＶ外なので除去される。線分ＣＤ、線分ＤＥは、クリップウィンドウＱＴＵＶ内なのでそのまま保持される。線分ＢＣと線分ＥＦは、クリップウィンドウＱＴＵＶの上端ＱＴと交差し、クリップ処理により、その一部が除去される。線分ＢＣとクリップウィンドウＱＴＵＶの上端ＱＴが交わる頂点Ｇ、線分ＥＦとクリップウィンドウＱＴＵＶの上端ＱＴが交わる頂点Ｈを算出し、線分ＢＣを線分ＧＣに置き換え、線分ＥＦを線分ＥＨに置き換え、以降の処理を行う。このようにして、線分情報ＡＢ、ＢＣ、ＣＤ、ＤＥ、ＥＦ、ＦＡとクリップウィンドウＱＴＵＶの座標とを比較することにより、クリップウィンドウＱＴＵＶ外の線分を除去する処理を行う。除去する処理を行うことにより、除去した部分に関しては、線分の交点算出及び交点・頂点のｙ座標での整列が不要になり、更に走査による塗りつぶし規則の計算といった処理時間が不要になる。
【００４６】
そして、クリップウィンドウＱＴＵＶの上端ＱＴと交差する線分には、塗りつぶし処理ができるようにその線分とクリップウィンドウＱＴＵＶの上端ＱＴとの交点を算出し、線分情報を置き換える処理を行う。よって、矩形のクリップウィンドウＱＴＵＶの上下端ＱＴ、ＵＶについてクリップ処理を行うことによって、除去される図形があるとき、図形ＡＢＣＤＥＦは線分情報の置き換えにより、図形ＧＣＤＥＨとなる。これにより、正しい塗りつぶし処理が可能となる。
【００４７】
図７に戻りステップ２１３：次に、編集部制御部２２は塗りつぶし領域抽出部２４に対し、クリップされた図形を対象に、塗りつぶし規則に従って塗りつぶし領域を抽出するよう指示する。このときに、図５に示す前記「線分の交点算出」や前記「交点・頂点のｙ座標での整列」を行い、整列されたｙ座標軸に従い走査と計算を行い、塗りつぶし領域を抽出する。
【００４８】
ステップ２１４：編集部制御部２２はクリップ処理部２３に対し、抽出した塗りつぶし領域をクリップウィンドウの左右端でクリップし、上下左右端でクリップ処理されて残った塗りつぶし領域について塗りつぶし処理を行うよう指示する。
ステップ２１５：最後に、編集部制御部２２は解析結果格納部１７に対し、解析結果を格納するよう指示し、クリップ処理と塗りつぶし処理を終了する。
【００４９】
図９及び図１０で実際に図形Ｗをクリップ処理と塗りつぶし処理の過程を説明する。図９及び図１０はクリップ処理と塗りつぶし処理の過程を示す説明図である。図９（ａ）にクリップされる図形Ｗの例を示す。まず、描画図形Ｗが矩形のクリップウィンドウＱＴＵＶの上端ＱＴ、下端ＵＶをまたぐ図形かどうかを判断する。図９（ａ）に示す描画図形Ｗは上端ＱＴ、下端ＵＶ両方ともまたぐ図形であると判断する（ステップ２０３）。次に、図形情報を線分情報に変換する（ステップ２０８）。ここで図形に曲線が含まれている場合は、直線近似を行う。この様子を図９（ｂ）に示す。描画図形Ｗは曲線部分Ｗ−３が含まれる図形なので、この曲線部分Ｗ−３は複数の線分Ｗ−４で近似する。図９（ｂ）では、分かりやすさのために曲線を粗く分割して示している。
【００５０】
その後実際に、矩形のクリップウィンドウＱＴＵＶにおける後述する走査線Ｓに平行な上下端ＱＴ、ＵＶ両方でクリップを行い、クリップウィンドウＱＴＵＶ外の線分を除去する処理を行う（ステップ２１０、２１２）。図１０（ａ）では、クリップウィンドウＱＴＵＶの上下端ＱＴ、ＵＶによるクリップの様子を示している。即ち、複数の線分Ｗ−４で近似された部分の内の複数の線分ＩＪ〜ＯＰは、複数の頂点Ｉ〜頂点Ｐで結ばれる。そして、図１０（ｂ）に示すように、各頂点Ｉ〜Ｐを通るｘ軸に平行な境界線Ｌで領域Ｒを区切り、領域Ｒ１〜領域Ｒ６を抽出する。この領域Ｒ１〜領域Ｒ６内を、ｘ軸と平行な方向の走査線Ｓによる走査により塗りつぶし規則の計算を行い、塗りつぶし領域を抽出している（ステップ２１３）。図１０（ｃ）に示すように、抽出された塗りつぶし領域に対して矩形のクリップウィンドウＱＴＵＶの左右端ＶＱ、ＴＵでクリップを行い、最後に塗りつぶし領域Ｚに対して塗りつぶし処理を行う（ステップ２１４）。
【００５１】
以上のように、第１の実施の形態は、クリップウィンドウＱＴＵＶ内に収まらない図形、即ち、クリップウィンドウＱＴＵＶをまたぐ図形であった場合には、図形を矩形のクリップウィンドウＱＴＵＶの上下端ＱＴ、ＵＶで先にクリップすることにより、クリップウィンドウＱＴＵＶの上下端ＱＴ、ＵＶからはみ出る部分を除去する。その後、ｘ軸に平行な方向の走査線Ｓにより走査を行うことにより、塗りつぶし規則の計算を行い、塗りつぶし領域を抽出する。そして、クリップウィンドウＱＴＵＶの左右端ＴＵ、ＶＱでクリップして塗りつぶし処理を行う。これにより、第１の実施の形態によれば、クリップウィンドウＱＴＵＶの上下端ＱＴ、ＵＶからはみ出る部分を除去した部分に関しては、線分の交点算出及び交点・頂点のｙ座標での整列を不要とすることができる。更に第１の実施の形態によれば、走査による塗りつぶし規則の計算といった処理時間の短縮が可能となるとともに、メモリ資源を節約することができるようになる。また、図形に曲線部があるときは、複数の線分で近似することにより、近似された線分情報から塗りつぶし領域を抽出できるので、クリップされた図形に対して塗りつぶし規則に従った、正しい塗りつぶし処理を行うことができるようになる。
【００５２】
＜第２の実施の形態＞
前記第１の実施の形態では、描画する図形をまず線分情報に分割し、クリップウィンドウＱＴＵＶの上端、下端ＱＴ、ＵＶでクリップし、クリップウィンドウＱＴＵＶの上下端ＱＴ、ＵＶからはみ出る部分を除去する。そして、ｘ軸に平行な方向の走査線Ｓによる走査と計算をして塗りつぶし領域を抽出する。最後にクリップウィンドウの左端ＶＱ、右端ＴＵでクリップして、塗りつぶし処理を行った。これは、塗りつぶし規則に従った塗りつぶしを行うためには、線分情報を失っていると正しい塗りつぶしが行えないためであった。しかし、左右端はクリップを行わずに、塗りつぶし領域の抽出を行っている。そのため、左右端部分に関しては、線分の交点算出及び交点・頂点のｙ座標での整列は必要であり、更に走査と計算の処理に余分な時間がかかり、メモリ資源も余分に使われてしまう。第２の実施の形態ではこの点に着目し、事前に上下端だけでなく、左右端もクリップできていれば、時間とメモリ資源をより節約することができるようにしたものである。
【００５３】
図１１は、第２の実施の形態に関する画像処理装置の構成を示すブロック図である。同図の印刷装置３０において、データ受信部１１、Ｊｏｂ制御部１２、データ解析判断部１３、クリップ判定部１４、図形抽出部１６、解析結果格納部１７、データ展開部１８及び印刷制御部１９については、前記第１の実施の形態における印刷装置１０の各部と同じであるので、説明を省略する。
【００５４】
印刷装置３０の装置制御部２１は、図示しない記憶部に格納したプログラムにより動作し、データ編集部５０を含めたこれら各部の制御を行う。データ編集部５０のクリップ処理部５３は、クリップ判定部１４において、クリップウィンドウ内に収まらない図形であると判定された図形に対して、クリップウィンドウの上下端及び左右端からはみ出る部分を除去するクリップ処理を行う。
【００５５】
塗りつぶし領域抽出部５４は、クリップ処理部５３のクリップ処理により図形の一部が除去された場合に、塗りつぶし処理ができるようにクリップウィンドウに沿って線分を補間する。そして、補間された図形について塗りつぶし領域を抽出し、その塗りつぶし領域に対して塗りつぶし処理を行う。そして、クリップされた図形情報を解析結果格納部１７へ渡す。編集部制御部５２は、データ編集部５０の各部を制御する。
【００５６】
第２の実施の形態について動作を説明する。第２の実施の形態に関するデータ編集部５０の動作の概略は、前記第１の実施の形態の図６と同一であるので同図を用いて説明する。即ち、図６のステップ１０６おいては、前記ステップ１０３で矩形のクリップウィンドウ内に収まらない図形、即ち、クリップウィンドウをまたぐ図形であった場合に、編集部制御部５２はクリップ処理部５３に対し、後述する図形のクリップ処理を行うよう指示する。
【００５７】
クリップ処理部５３はクリップウィンドウ内に収まらない図形に対して、はみ出る部分を除去するクリップ処理を行う。ステップ１０６のクリップ処理について、図１２の詳細フローに沿って、処理の手順を説明する。図１２は、第２の実施の形態に関するクリップ処理と塗りつぶし処理の動作を示すフローチャートである。
【００５８】
ステップ３０１：データ編集部５０の編集部制御部５２はクリップ処理部５３に対して、描画図形が矩形のクリップウィンドウの外であるかどうかを判断するよう指示する。クリップ処理部５３は、図形描画コマンドのパラメータとクリップウィンドウの座標値から判断する。描画図形が完全にクリップウィンドウの内に位置する場合には、その図形全体がクリップ対象となるため、以降の処理を行わずに終了となる。
【００５９】
一方、描画図形が一部でもクリップウィンドウの外にある場合には、完全にクリップウィンドウ内に収まっておらず、クリップウィンドウからはみ出ている部分があるということになるので、クリップ処理対象図形として、以降の処理を行う。
【００６０】
ステップ３０２：編集制御部５２はクリップ処理部５３に対して、図形を線分情報に変換するよう指示する。即ち、クリップ処理部５３は図形に曲線が含まれる場合には、複数の線分を用いて曲線を近似して線分情報に変換する。
【００６１】
ステップ３０３：編集制御部５２はクリップ処理部５３に対して、クリップウィンドウで図形をクリップするよう指示する。即ち、前記ステップ３０２において図形情報は線分情報に変換されているので、クリップ処理部５３は、クリップウィンドウの座標と比較して、クリップウィンドウ外の線分を除去する処理をする。クリップウィンドウと交差する線分がある場合には、その線分とクリップウィンドウとの交点を算出し、線分情報を置き換える。
【００６２】
ステップ３０４：次に、編集制御部５２は塗りつぶし領域抽出部５４に対し、塗りつぶし規則に従った塗りつぶし領域の抽出が正しく行われるよう、図形のクリップした部分に対して線分を補間する処理を行うよう指示する。この様子を図１３に示す。
【００６３】
図１３は第２の実施の形態に関するクリップ処理の一部を示す説明図である。図１３（ａ）は、描画図形Ｗと矩形のクリップウィンドウＱＴＵＶが与えられた場合、描画図形ＷとクリップウィンドウＱＴＵＶが交わる頂点をＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈとすることを示す。これに対してクリップウィンドウＱＴＵＶにおける走査線Ｓに平行な上下端ＱＴ、ＵＶ及び左右端ＴＵ、ＶＱでクリップ処理を行う。そうすると、図１３（ｃ）に示すような図形ＢＣ、ＤＥ、ＦＧ、ＨＡが得られる。この図形ＢＣ、ＤＥ、ＦＧ、ＨＡに対してクリップされた部分に線分ＡＢ、ＣＤ、ＥＦ、ＧＨを補間すると、図１３（ｅ）に示す図形ＡＢＣＤＥＦＧＨとなる。これにより、塗りつぶし領域の抽出を正しく行うことができる。
【００６４】
また、図１３（ｂ）は、描画図形Ｗと矩形のクリップウィンドウＱＴＵＶが与えられた場合、描画図形ＷとクリップウィンドウＱＴＵＶが交わる頂点をＩ、Ｊ、Ｋ、Ｌとすることを示す。これに対して、クリップウィンドウＱＴＵＶにおける走査線Ｓに平行な上下端ＱＴ、ＵＶ及び左右端ＴＵ、ＶＱでクリップ処理を行う。そうすると、図１３（ｄ）のような図形ＩＬ、ＪＫが得られる。この図形ＩＬ、ＪＫに対しクリップされた部分に、線分ＱＩＪ、ＱＬＫを補間すると図１３（ｆ）に示す図形ＱＩＪＫＬのようになる。線分ＱＩ、線分ＱＪ、線分ＱＬ、線分ＱＫの４本の線分を補間する。つまり、線分ＱＩ間、及び線分ＱＬ間は線分が２本存在することになる。これにより、塗りつぶし規則に従った塗りつぶし領域の抽出を正しく行うことができるようになる。
【００６５】
ステップ３０５：次に、編集制御部５２は塗りつぶし領域抽出部５４に対し、ステップ３０４で生成された図形に対し走査と計算を行って塗りつぶし領域を抽出することにより、正しく塗りつぶし領域を抽出するよう指示する。そして、実際に塗りつぶし処理を行うよう指示する。
ステップ３０６：最後に、編集制御部５２は解析結果格納部３７に対し、解析結果を格納するよう指示する。その後、処理を終了する。
【００６６】
以上のように、第２の実施の形態によれば、描画図形を予め矩形のクリップウィンドウの上下左右でクリップして、クリップウィンドウからはみ出る部分を除去するとともに、足りない部分の線分を補うことにより、塗りつぶし規則に従った塗りつぶしを正しく行えるようにしたので、クリップウィンドウ上下外及び左右外の描画図形における線分の交点算出及び交点・頂点のｙ座標での整列を不要にすることができる。更に第２の実施の形態によれば、走査と計算の処理の短縮が図れるとともに、メモリ資源の節約をすることができる。
【００６７】
以上の実施の形態では、描画コマンドを解析して印刷イメージを生成する形式の画像処理装置に対するものであるが、上位装置から印刷イメージデータが送信され、その印刷イメージデータを印刷する形式の装置であっても、上位装置で印刷イメージを生成する際に、上記実施の形態を適用することもできる。
【符号の説明】
【００６８】
１０          印刷装置
１４          クリップ判定部
２０          データ編集部
２１          装置制御部
２２          編集部制御部
２３          クリップ処理部
２４          塗りつぶし領域抽出部
【図１】
0005473782.tif 000002
【図２】
0005473782.tif 000003
【図３】
0005473782.tif 000004
【図４】
0005473782.tif 000005
【図５】
0005473782.tif 000006
【図６】
0005473782.tif 000007
【図７】
0005473782.tif 000008
【図８】
0005473782.tif 000009
【図９】
0005473782.tif 000010
【図１０】
0005473782.tif 000011
【図１１】
0005473782.tif 000012
【図１２】
0005473782.tif 000013
【図１３】
0005473782.tif 000014