(57)【要約】【課題】  画像の縮小処理を行っても縮小前に描画されていた箇所が消えない描画処理装置及びプログラムを提供する。【解決手段】  画像処理装置の描画ドライバがアプリケーションから描画命令を受領すると（ステップＳ１）、描画座標の拡大／縮小を行う（ステップＳ２）。次に、描画モードを判別し（ステップＳ３）、描画命令が実行されるとフレームバッファの下地が描画結果に影響を与えるか判定を行い（ステップＳ４）、判定結果が「Ｎｏ」の場合はステップＳ２により線幅が０画素分になったか判定し（ステップＳ５）、判定結果が「Ｙｅｓ」場合は線幅を１画素分とする補償処理を行う（ステップＳ６）。それ以外は補償処理を行わない。そしてフレームバッファへ描画処理を行う（ステップＳ７）。【選択図】  図１
2006163700.tif 000002
【特許請求の範囲】
【請求項１】
描画モード及び描画命令に基づいて画像データを生成する描画処理装置において、
指定された縮小率に応じて描画命令における座標を変換する座標変換手段と、
前記座標の変換により描画されるべき線の幅が失われた場合に前記線の幅を補う補償手段と、
を具備したことを特徴とする描画処理装置。
【請求項２】
前記描画モード又は前記描画命令に基づいて前記補償手段を有効とするか無効とするかを判別する判別手段をさらに具備したことを特徴とする請求項１に記載の描画処理装置。
【請求項３】
前記判別手段は、既に生成された画像データが前記描画命令により生成される画像データに影響を与える場合に前記補償手段を無効とし、そうでない場合に有効とすることを特徴とする請求項２に記載の描画処理装置。
【請求項４】
前記判別手段は、前記描画命令が３項ラスタオペレーションである場合に、所定の判別式により前記補償手段を有効とするか無効とするかを判別することを特徴とする請求項２に記載の描画処理装置。
【請求項５】
３項ラスタオペレーションの各々について２回実行したときに何も描画されない現象が発生するか否か予め検証した結果を記憶する記憶手段をさらに具備し、
前記判別手段は、前記描画命令が３項ラスタオペレーションである場合に、前記記憶手段に記憶された検証結果において前記現象が発生した場合に前記補償手段を無効とし、そうでない場合に有効とすることを特徴とする請求項２に記載の描画処理装置。
【請求項６】
前記判別手段は、前記描画命令がアルファブレンディングである場合に、アルファチャネルの値に基づいて前記補償手段を有効とするか無効とするかを判別することを特徴とする請求項２に記載の描画処理装置。
【請求項７】
描画モード及び描画命令を入力する入力処理と、
指定された縮小率に応じて前記描画命令における座標を変換する座標変換処理と、
前記座標の変換により描画されるべき線の幅が失われた場合に前記線の幅を補う補償処理と、
をコンピュータに実行させるためのプログラム。
【請求項８】
前記描画モード又は前記描画命令に基づいて前記補償処理を有効とするか無効とするかを判別する判別処理をさらに具備したことを特徴とする請求項７に記載のプログラム。
【請求項９】
前記判別処理は、既に生成された画像データが前記描画命令により生成される画像データに影響を与える場合に前記補償処理を無効とし、そうでない場合に有効とすることを特徴とする請求項８に記載のプログラム。
【請求項１０】
前記判別処理は、前記描画命令が３項ラスタオペレーションである場合に、所定の判別式により前記補償処理を有効とするか無効とするかを判別することを特徴とする請求項８に記載のプログラム。
【請求項１１】
前記判別処理は、前記描画命令が３項ラスタオペレーションである場合に、前記描画命令を２回実行したときに何も描画されない現象が発生するか否か予め検証した結果において前記現象が発生した場合に前記補償処理を無効とし、そうでない場合に有効とすることを特徴とする請求項８に記載のプログラム。
【請求項１２】
前記判別処理は、前記描画命令がアルファブレンディングである場合に、アルファチャネルの値に基づいて前記補償処理を有効とするか無効とするかを判別することを特徴とする請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの適切な縮小処理を行う描画処理装置及びプログラムに関する。
【背景技術】
【０００２】
高解像度で出力することを想定した画像データを低解像度で出力する場合には、解像度に合わせた縮小処理が必要になる。この処理を行う技術として、特許文献１に記載されているように、罫線の線種ごとに罫線パターンと拡大・縮小するための補正情報を記憶し、描画対象のデータを拡大・縮小するときに当該情報に基づいて補正して出力する描画装置がある。また、特許文献２に記載されているように、描画対象のデータを文字、線、ビットマップ等に判別し、指示された拡大・縮小倍率に応じてそれぞれの座標を変換して出力する拡大・縮小装置がある。
【特許文献１】特開平７−１１０８６７号公報
【特許文献２】特開２０００−１６４４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の罫線を拡大・縮小する技術は、予め記憶された線種の罫線にしか用いることができない。また、上記の拡大・縮小倍率に応じて座標を変換する技術は、縮小を行う場合にデータが間引きされるが、この間引き処理の弊害の１つとして細部の情報が失われることがあり、場合によっては描画されるべき罫線が描画されない等の現象が発生する。以下この現象について説明する。
【０００４】
図３は、プリンタ、ディスプレイ等の描画装置による出力結果の一部である。描画装置において描画される領域はｘ座標、ｙ座標からなる座標系を持ち、左上の角をｘ座標、ｙ座標がともに０の原点としてｘ座標は右方向に増加し、ｙ座標は下方向に増加する。ｘ座標、ｙ座標によって特定される１区切りの領域は、例えばプリンタにおける１ポイント、ディスプレイにおける１ピクセルに対応する。図３はこの描画装置において、ｘ座標が０から１０、ｙ座標が９８から１０２の範囲の出力結果である。左側の数字はｙ座標の値を表す。斜線部分は黒で塗り潰されているとする。
【０００５】
１００≦ｙ＜１０１の範囲を黒で塗り潰す描画命令を（Ｂ＝１００，Ｔ＝１０１）と表記したときに、この描画命令による描画装置への出力結果は図３のようになる。これを低解像度の描画装置に出力するため、描画される画像全体を４０％縮小する。描画命令における座標を４０％縮小すると上記の描画命令は（Ｂ＝４０，Ｔ＝４０．４）となり、数値の小数点以下を四捨五入すると（Ｂ＝４０，Ｔ＝４０）となる。その結果、４０≦ｙ＜４０を満たすｙの値は存在しないので、塗り潰し範囲が無くなり、図４のように線が消える現象が発生する。
本発明は、上記の事情を考慮してなされたものであり、その目的は、画像の縮小処理を行っても縮小前に描画されていた箇所が消えない描画処理装置及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は上記の課題を解決するためになされたもので、請求項１に記載の発明は、描画モード及び描画命令に基づいて画像データを生成する描画処理装置において、指定された縮小率に応じて描画命令における座標を変換する座標変換手段と、前記座標の変換により描画されるべき線の幅が失われた場合に前記線の幅を補う補償手段と、を具備したことを特徴とする描画処理装置である。
【０００７】
請求項２に記載の発明は、請求項１に記載の描画処理装置において、前記描画モード又は前記描画命令に基づいて前記補償手段を有効とするか無効とするかを判別する判別手段をさらに具備したことを特徴とする。
【０００８】
請求項３に記載の発明は、請求項２に記載の描画処理装置において、前記判別手段は、既に生成された画像データが前記描画命令により生成される画像データに影響を与える場合に前記補償手段を無効とし、そうでない場合に有効とすることを特徴とする。
【０００９】
請求項４に記載の発明は、請求項２に記載の描画処理装置において、前記判別手段は、前記描画命令が３項ラスタオペレーションである場合に、所定の判別式により前記補償手段を有効とするか無効とするかを判別することを特徴とする。
【００１０】
請求項５に記載の発明は、請求項２に記載の描画処理装置において、３項ラスタオペレーションの各々について２回実行したときに何も描画されない現象が発生するか否か予め検証した結果を記憶する記憶手段をさらに具備し、前記判別手段は、前記描画命令が３項ラスタオペレーションである場合に、前記記憶手段に記憶された検証結果において前記現象が発生した場合に前記補償手段を無効とし、そうでない場合に有効とすることを特徴とする。
【００１１】
請求項６に記載の発明は、請求項２に記載の描画処理装置において、前記判別手段は、前記描画命令がアルファブレンディングである場合に、アルファチャネルの値に基づいて前記補償手段を有効とするか無効とするかを判別することを特徴とする。
【００１２】
請求項７に記載の発明は、描画モード及び描画命令を入力する入力処理と、指定された縮小率に応じて前記描画命令における座標を変換する座標変換処理と、前記座標の変換により描画されるべき線の幅が失われた場合に前記線の幅を補う補償処理と、をコンピュータに実行させるためのプログラムである。
【００１３】
請求項８に記載の発明は、請求項７に記載のプログラムにおいて、前記描画モード又は前記描画命令に基づいて前記補償処理を有効とするか無効とするかを判別する判別処理をさらに具備したことを特徴とする。
【００１４】
請求項９に記載の発明は、請求項８に記載のプログラムにおいて、前記判別処理は、既に生成された画像データが前記描画命令により生成される画像データに影響を与える場合に前記補償処理を無効とし、そうでない場合に有効とすることを特徴とする。
【００１５】
請求項１０に記載の発明は、請求項８に記載のプログラムにおいて、前記判別処理は、前記描画命令が３項ラスタオペレーションである場合に、所定の判別式により前記補償処理を有効とするか無効とするかを判別することを特徴とする。
【００１６】
請求項１１に記載の発明は、請求項８に記載のプログラムにおいて、前記判別処理は、前記描画命令が３項ラスタオペレーションである場合に、前記描画命令を２回実行したときに何も描画されない現象が発生するか否か予め検証した結果において前記現象が発生した場合に前記補償処理を無効とし、そうでない場合に有効とすることを特徴とする。
【００１７】
請求項１２に記載の発明は、請求項８に記載のプログラムにおいて、前記判別処理は、前記描画命令がアルファブレンディングである場合に、アルファチャネルの値に基づいて前記補償処理を有効とするか無効とするかを判別することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、画像の縮小処理を行っても縮小前に描画されていた箇所が消えず、高解像度で出力することを想定したデータを低解像度で出力しても適切に画像を出力することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態について説明する。この実施の形態における描画処理装置は、例えば、パーソナルコンピュータであり、ＣＰＵ（中央処理装置）、ＲＯＭ（リードオンリメモリ）、ＲＡＭ（ランダムアクセスメモリ）、ＨＤＤ（ハードディスクドライブ）、インタフェース部を備える。ＣＰＵはＲＯＭに記憶されたプログラムに基づき各部を制御する。また、ＨＤＤからＲＡＭに読み出されたプログラムの命令を実行する。ＲＯＭはＣＰＵが実行する制御プログラム及び定数データを記憶する。ＲＡＭはＣＰＵの処理におけるデータ又はＣＰＵが実行するプログラムを一時的に記憶する領域の他、画像データを記憶する領域（画像メモリ）であるフレームバッファ３（図２）を有する。
【００２０】
ＨＤＤはＣＰＵが実行するプログラムである図２のアプリケーション１及び描画ドライバ２を記憶する。アプリケーション１はワープロソフト、作図ソフト等、特定の処理を行うプログラムであり、ＣＰＵが読み込んで実行する命令からなる。描画ドライバ２はフレームバッファ３を制御するプログラムである。描画ドライバ２に、例えば、文字を書く、線を引く、ビットイメージを描画する等の描画命令を与えるとこれらに対応する画像データをフレームバッファ３に書き込む。
インタフェース部はフレームバッファ３に記憶された画像データをプリンタ、ディスプレイ等の描画装置に出力する。
【００２１】
次に、描画命令により描画ドライバ２がフレームバッファ３に画像データを書き込むときの描画モードについて説明する。フレームバッファ３に既に書き込まれた画像データを下地として、アプリケーション３から指定された画像のパターンを書き込むときの描画モードは主なものとして、上書き描画、マスク画像を利用した描画、ＯＲ描画、ＸＯＲ描画の４種類があるが、ＸＯＲ描画が用いられる頻度が高い。以下でこれらの描画モードについて説明する。
【００２２】
上書き描画は、下地に何が描画されていても、これに関係なく、指定したパターンを描画することができる。
マスク画像を利用した描画について、図７、図８を参照して説明する。これはフレームバッファ３の指定した領域に指定したパターンを描画したい場合に用いられる。なお、図７において、斜線部分は黒で塗り潰されているとする。
図７（ａ）は指定されたパターンである。図７（ｂ）は範囲指定画像、すなわち、パターンを描画しない範囲をマスクするマスク画像である。円内は白、その他は黒で塗り潰されている。図７（ｃ）は描画先の初期状態、すなわち、描画前のフレームバッファ３の状態であり、全て黒で塗り潰されている。図７（ｄ）は描画結果である。描画における演算規則を図８に示す。ここで０は黒、１は白として描画装置から出力されるとする。この演算規則の１行目、２行目、５行目、６行目によれば、範囲指定画像において黒（０）の領域は、パターンに関係なく描画先の初期状態がそのまま維持される。また、この演算規則の３行目、４行目、７行目、８行目によれば、範囲指定画像において白（１）の領域は、描画先の初期状態に関係なくパターンがそのまま描画される。従って、この描画モードにおいては下地に何が描画されていても指定した領域に指定したパターンを描画することができる。
【００２３】
しかし、上記のマスク画像を利用した描画は、１回の描画にパターンと範囲指定画像の２つの画像データを用いるため、描画に必要なデータ量が多くなる。これに対し、図９、図１０に示すＯＲ描画は１つの画像データで描画することができる。なお、図９において、斜線部分は黒で塗り潰されているとする。
図９の（ａ）、（ｂ）、（ｃ）はそれぞれ、指定された描画パターン、描画先の初期状態、描画結果である。描画における演算規則を図１０に示す。ここで０は黒、１は白として描画装置から出力されるとする。この演算規則の１行目、２行目によれば、パターンにおいて黒（０）の領域は、パターンに関係なく描画先の初期状態がそのまま維持される。また、この演算規則の３行目、４行目によれば、パターンにおいて白（１）の領域は、描画先の初期状態に関係なくパターンがそのまま描画される。すなわち、描画先の初期状態が何も描画されていない状態、すなわち、黒で塗り潰されている場合には、ＯＲ描画により指定したパターンを正しく描画することができ、上記のマスク画像を利用した描画よりも描画命令を実行するときのデータ転送の効率がよい。
【００２４】
しかし、上記のＯＲ描画では次のような場合に、指定したパターンが正常に描画されない。上記では、フレームバッファ３の値が０の場合に黒、１の場合に白として描画装置から出力されることを前提に説明した。これとは逆にフレームバッファ３の値が０の場合に白、１の場合に黒として出力する描画装置の場合が問題となる。図１１の（ａ）、（ｂ）、（ｃ）はそれぞれ、指定された描画パターン、描画先の初期状態、描画結果である。なお、図１１において斜線部分は黒で塗り潰されているとする。すなわち、描画先の初期状態が１すなわち黒である場合には、いかなるパターンを描画しても出力結果は１すなわち黒となる。この問題はＯＲ演算が０と１の間で非対称であることに起因するもので、これに対処するにはどの値を黒として出力しているかを判別し、特殊な論理演算に切り替える等の処理が必要となる。
【００２５】
上記のＯＲ描画に対し、図１２、図１３に示すＸＯＲ描画は下地がどの色で塗り潰されていても指定したパターンを正しく描画することができる。描画における演算規則を図１２に示す。０は黒、１は白として描画装置から出力される場合は、この演算規則の１行目、３行目によれば、描画先の初期状態が黒（０）である場合は、パターンがそのまま描画される。なお、演算規則の２行目、４行目によれば、描画先の初期状態が白（１）である場合は、パターンが反転して描画される。
一方、１は黒、０は白として描画装置から出力される場合は、この演算規則の２行目、４行目によれば、描画先の初期状態が黒（１）である場合は、パターンが反転して描画される。このため、描画するパターンを予め反転しておく。図１３（ａ）は指定された描画パターンである。図１３（ｂ）は、図１３（ａ）のパターンを反転したものである。ここで図１３（ｂ）の円内は、図１３（ａ）の円内のパターンを反転したパターンを表す。図１３（ｃ）は描画先の初期状態である。図１３（ｄ）は描画結果である。なお、図１３において斜線部分は黒で塗り潰されているとする。なお、演算規則の１行目、３行目によれば、描画先の初期状態が白（０）である場合は、パターンを反転しなくても指定したパターンがそのまま描画される。このように下地がどの色で塗り潰されていても指定したパターンが正常に描画されるため、描画モードはＸＯＲ描画が用いられる頻度が高い。
【００２６】
従来技術の課題として述べた通り、描画装置の１００≦ｙ＜１０１の範囲を黒で塗り潰す描画命令（Ｂ＝１００，Ｔ＝１０１）により低解像度の描画装置に出力するため、描画命令の座標を４０％縮小し小数点以下を四捨五入すると（Ｂ＝４０，Ｔ＝４０）となるので線の幅が失われることになり、これを実行しても線が描画されない現象が発生する。これを防止するため、縮小後にＢとＴの値が等しい場合にＴに１を加算することにより線の幅を補う。この補償処理により描画命令（Ｂ＝４０，Ｔ＝４１）を実行することになり、座標がｙ＝４０である位置が黒で塗り潰され線が描画される。
【００２７】
描画モードが前述の上書き描画の場合には問題は発生しないが、前述の通り描画モードはＸＯＲ描画が用いられる頻度が高く、この場合は上記の補償処理を行ったときに正常に描画されない場合がある。以下、その現象とこれに対処する処理を説明する。
描画モードとしてＸＯＲ描画、描画命令として次の描画命令１が発行されたとする。
（Ｂ＝１００，Ｔ＝１０１）（Ｂ＝１０１，Ｔ＝１０２）（Ｂ＝１０２，Ｔ＝１０３）（Ｂ＝１０３，Ｔ＝１０４）・・・描画命令１
これを下地が白のフレームバッファ３に描画して描画装置から出力すると図５のようになる。なお、斜線部分は黒で塗り潰されているとする。これを低解像度の描画装置に出力するため描画命令１の数値を４０％縮小し、小数点以下を四捨五入して上記のように補償処理を行うと、描画命令１は次の描画命令２に変換される。
（Ｂ＝４０，Ｔ＝４１）（Ｂ＝４０，Ｔ＝４１）（Ｂ＝４１，Ｔ＝４２）（Ｂ＝４１，Ｔ＝４２）・・・描画命令２
ＸＯＲ描画で同一箇所に２回描画すると、色反転処理が２回実行される。すなわち、座標がｙ＝４０である位置にＸＯＲ描画における線描画が２回実行され、座標がｙ＝４１である位置にＸＯＲ描画における線描画が２回実行され、結果として下地の色が維持され、図４のように何も描画されない。
【００２８】
この現象は、描画モードがＸＯＲ描画である場合だけでなく、下地が描画結果に影響を与える描画命令全般について発生し得る。これを防止するため、描画命令の実行において下地が描画結果に影響を与えるかどうかを判別し、補償処理の有効／無効を制御する。この判別が行われ補償処理が無効にされた場合は、上記の描画命令１は次の描画命令３のように変換される。
（Ｂ＝４０，Ｔ＝４０）（Ｂ＝４０，Ｔ＝４１）（Ｂ＝４１，Ｔ＝４１）（Ｂ＝４１，Ｔ＝４２）・・・描画命令３
これにより描画命令３の１番目と３番目においては何も描画されず、２番目により座標がｙ＝４０である位置と４番目により座標がｙ＝４１である位置にＸＯＲ描画され、描画結果は図６のようになる。すなわち、同一領域への二重描画が抑制され、正しく縮小した描画結果が得られる。
【００２９】
上記の下地が描画結果に影響を与える描画命令として、３項ラスタオペレーションとアルファブレンディングがある。これらはパーソナルコンピュータで標準的に用いられている描画命令である。これらの描画命令を２回実行したときに必ずしも上記のような何も描画されない現象が発生するわけではない。そこでこれらについては、次のようにして補償処理の有効／無効の判別を行う。
【００３０】
まず、３項ラスタオペレーションは、ラスタオペレーションコード、パターン、ソース、デスティネーションから構成される描画命令である。ソースはフレームバッファ３におけるコピー元の領域、デスティネーションはフレームバッファ３におけるコピー先の領域である。ラスタオペレーションコードは、例えば、ＡＮＤ演算を用いてデスティネーションの色を反転した色とソースの色を組み合わせるＳＲＣＥＲＡＳＥ、ＸＯＲ演算を用いて指定したパターンの色とデスティネーションの色を組み合わせるＰＡＴＩＮＶＥＲＴがあり、これらには８ビット、１６ビット等の長さの１６進数が対応する。この３項ラスタオペレーションコードＲのうち次の判別式１の結果がｔｒｕｅの場合は、下地が描画結果に影響を与えず、２回実行したときに何も描画されない現象は発生しない。
（（Ｒ＞＞１）＆０ｘ５５）＝＝（Ｒ＆０ｘ５５）・・・判別式１
この判別式１は、３項ラスタオペレーションコードＲに対応する１６進数を右に１ビットシフトしたものと１６進数の５５とのＡＮＤ演算を行った結果と、３項ラスタオペレーションコードＲと１６進数の５５とのＡＮＤ演算を行った結果とを比較し、これらの値が等しい場合は判別式１の結果がｔｒｕｅとなり、そうでない場合はｆａｌｓｅとなる。
【００３１】
しかし、ＡＮＤ演算を用いてソースとデスティネーションの色を組み合わせるＳＲＣＡＮＤ、ＯＲ演算を用いてソースとデスティネーションの色を組み合わせるＳＲＣＰＡＩＮＴのように、判別式１による判別結果がｆａｌｓｅであり、下地が描画結果に影響を与えるが、２回実行しても何も描画されない現象は発生しないものもある。そこで全ての３項ラスタオペレーションコード（これらに対応する値が８ビットの場合なら２５６通り）について、２回実行したときに何も描画されない現象が発生するか予め検証し、その結果をテーブルとして描画処理装置に記憶し、このテーブルを参照して補償処理の有効／無効の判別を行う。
【００３２】
アルファブレンディングについては、次のようにして補償処理の有効／無効の判別を行う。ここでアルファブレンディングとは、２つの画像をアルファ値と呼ぶ係数を使って半透明合成することであり、アルファ値は画像データにおいて各点に設定されたデータ領域であるアルファチャネルに保存される。アルファ値は完全な透明（無色）から完全な不透明（背景の色を全く通さない（アルファチャネルの値が１００％））まで設定することができる。そこで、アルファブレンディングについては、アルファチャネルの値が１００％である場合には、２回実行しても何も描画されない現象は発生しないので補償処理を有効とする。
【００３３】
次に、以上の処理を描画処理装置で行う場合の動作を説明する。図２は描画処理装置における描画命令及び画像データの流れを示す。描画処理装置のＣＰＵはＨＤＤから描画ドライバ２及びアプリケーション１を読み出してＲＡＭに記憶させる。ＣＰＵはＲＡＭにおいてアプリケーション１が記憶された番地から１命令ずつ読み込んで実行する。ここでアプリケーション１が発行する描画命令は描画ドライバ２により実行され、画像データが生成される。すわなち、描画ドライバ２は描画命令に基づいてフレームバッファ３に画像データを書き込む。
【００３４】
次に、図１を参照して、アプリケーション１及び描画ドライバ２による描画処理装置の動作を説明する。アプリケーション１が描画命令を発行すると、描画ドライバ２はこれを受領する（ステップＳ１）。次に、描画ドライバ２はアプリケーション１から指定された拡大／縮小の命令に従い、描画座標の拡大／縮小を行う（ステップＳ２）。
【００３５】
次に、描画モードの判別を行う（ステップＳ３）。ここで描画モードはＸＯＲ描画であったとする。次に、ステップＳ４へ進み、描画命令の実行において下地が描画結果に影響を与えるかどうかの判別を行う。描画モードがＸＯＲ描画である場合は、前述の通り描画命令の実行において下地が描画結果に影響を与えるので判定結果が「Ｙｅｓ」となる。なお、前述した他の描画モードについては、上書き描画、マスク画像を利用した描画の場合は、下地は描画結果に影響を与えないので判定結果が「Ｎｏ」となり、ＯＲ描画の場合は下地が描画結果に影響を与えるので判定結果が「Ｙｅｓ」となる。
【００３６】
ステップＳ４の判定結果が「Ｙｅｓ」の場合はステップＳ７へ進み、フレームバッファ３へ描画処理を行って処理を終了する。判定結果が「Ｎｏ」の場合はステップＳ５へ進み、線幅が０画素分になったか、すなわちＢとＴの値が等しいか判定する。ステップＳ５の判定結果が「Ｎｏ」の場合はステップＳ７へ進み、フレームバッファ３へ描画処理を行って処理を終了する。一方、ステップＳ５の判定結果が「Ｙｅｓ」の場合はステップＳ６へ進み、Ｔに１を加算した後、フレームバッファ３への描画処理を行い（ステップＳ７）、処理を終了する。
【００３７】
なお、上記の動作において、線幅が０画素分になった場合に１画素分とする処理（ステップＳ５、ステップＳ６）を行うか否か、すなわちこの処理を有効とするか無効とするかの判別は、ステップＳ３の処理とステップＳ４の判定により行うが、これらは以下のように行ってもよい。
【００３８】
ステップＳ１において受領した描画命令が３項ラスタオペレーションである場合には、ステップＳ３において、その３項ラスタオペレーションに対応する値Ｒについて、前述の判別式１の結果がｔｒｕｅであるかｆａｌｓｅであるかを求める。判別式１の結果がｔｒｕｅである場合は、前述の通り、下地が描画結果に影響を与えず、２回実行したときに何も描画されない現象は発生しないので、ステップＳ４において判定結果を「Ｎｏ」とし、判別式１の結果がｆａｌｓｅである場合はこの判定結果を「Ｙｅｓ」とする。
【００３９】
なお、上記の処理に代えて、ステップＳ３及びステップＳ４は次のような処理としてもよい。描画命令のうち３項ラスタオペレーションの各々について２回実行したときに何も描画されない現象が発生するか否か予め検証した結果を描画処理装置のＨＤＤに記憶しておく。ステップＳ１において受領した描画命令が３項ラスタオペレーションである場合に、ステップＳ３においてＨＤＤから検証結果を読み出しＲＡＭに記憶する。次に、ステップＳ４において、描画処理の対象となる３項ラスタオペレーションについて検証結果により２回実行したときに何も描画されない現象が発生しない場合は、判定結果を「Ｎｏ」とし、前記の現象が発生する場合は判定結果を「Ｙｅｓ」とする。
【００４０】
なお、上記のいずれかの処理と次の処理を併用してもよい。ステップＳ１において受領した描画命令がアルファブレンディングの場合は、ステップＳ３においてアルファチャネルの値の読み出しを行う。アルファチャネルの値が１００％である場合は背景の色を全く通さない、すなわち下地が描画に影響を与えないのでステップＳ４において判定結果を「Ｎｏ」とし、それ以外は判定結果を「Ｙｅｓ」とする。
【産業上の利用可能性】
【００４１】
本発明は、プリンタ、ディスプレイ等の描画装置に画像データを出力する描画処理装置に用いられる。
【図面の簡単な説明】
【００４２】
【図１】本発明の実施形態による描画処理装置の処理の流れを示すフローチャートである。
【図２】描画処理装置における描画命令及び画像データの流れを示す図である。
【図３】描画命令を実行した結果を示す図である。
【図４】描画命令における座標を縮小すると正常に描画されない場合の描画結果を示す図である。
【図５】描画命令を４つ実行した結果を示す図である。
【図６】描画命令における座標を縮小しても正常に描画される場合の描画結果を示す図である。
【図７】マスク画像を利用した描画による描画結果の例を示す図である。
【図８】マスク画像を利用した描画における演算規則を示す図である。
【図９】ＯＲ描画による描画結果の例を示す図である。
【図１０】ＯＲ描画における演算規則を示す図である。
【図１１】ＯＲ描画により正しく描画されない場合の描画結果を示す図である。
【図１２】ＸＯＲ描画における演算規則を示す図である。
【図１３】ＸＯＲ描画による描画結果の例を示す図である。
【符号の説明】
【００４３】
１…アプリケーション
２…描画ドライバ
３…フレームバッファ
【図１】
2006163700.tif 000003
【図２】
2006163700.tif 000004
【図３】
2006163700.tif 000005
【図４】
2006163700.tif 000006
【図５】
2006163700.tif 000007
【図６】
2006163700.tif 000008
【図７】
2006163700.tif 000009
【図８】
2006163700.tif 000010
【図９】
2006163700.tif 000011
【図１０】
2006163700.tif 000012
【図１１】
2006163700.tif 000013
【図１２】
2006163700.tif 000014
【図１３】
2006163700.tif 000015