(57)【要約】【課題】ベクター画像を描画する際に輪郭情報の不整合を防ぎ、描画品質を向上するシステムを提供する。【解決手段】輪郭生成回路１０４は、ベクターデータに基づいて、描画領域の走査線に沿って塗りつぶしを開始する開始画素および塗りつぶしを終了する終了画素を示す輪郭データを生成する。アウトラインバッファ１０６は、描画する画素ごとに輪郭データを記憶する。エラー判定部２は、アウトラインバッファ１０６に輪郭データを設定するときに、画素ごとのアウトラインバッファ１０６が輪郭データでオーバーフローするか否かを判別する。ピクセル位置移送部３は、エラー判定部２でアウトラインバッファ１０６が輪郭データでオーバーフローすることを判別した場合に、そのアウトラインバッファ１０６に設定できる数値を超える分の数値を、元のオーバーフローする画素に隣接する画素のアウトラインバッファ１０６の数値に加算して設定する。【選択図】図１
2010113626.tif 000002
【特許請求の範囲】
【請求項１】
ベクターデータに基づいて、描画領域の走査線に沿って塗りつぶしを開始する開始画素、および塗りつぶしを終了する終了画素を示す、輪郭データを生成する輪郭生成手段と、
描画する画素ごとに、前記輪郭データである塗りつぶしの開始または終了の数を記憶するアウトラインバッファと、
前記アウトラインバッファに前記輪郭データを設定するときに、画素ごとのアウトラインバッファが前記輪郭データでオーバーフローするか否かを判別する判別手段と、
前記判別手段で前記アウトラインバッファが前記輪郭データでオーバーフローすると判別した場合に、そのアウトラインバッファに設定できる数値を超える分の数値を、前記オーバーフローする画素に隣接する画素のアウトラインバッファの数値に加算して設定する移動設定手段と、
を備えることを特徴とするベクター画像描画装置。
【請求項２】
前記移動設定手段で、隣接する画素のアウトラインバッファの数値に加算して設定する場合に、加算した結果によってその画素のアウトラインバッファがオーバーフローするか否かを再帰的に判定する判定手段を備え、
前記移動設定手段は、前記判定手段でオーバーフローすると判定した場合に、同一走査線上の輪郭データを設定した画素に最も近い、オーバーフローの発生しない画素のアウトラインバッファの数値に、前記アウトラインバッファに設定できる数値を超える分の数値を加算して設定する、
ことを特徴とする請求項１に記載のベクター画像描画装置。
【請求項３】
前記輪郭生成手段は、塗りつぶしの開始を表すデータと塗りつぶしの終了を表すデータを互いに反対の符号の数値で生成し、
前記アウトラインバッファのデータを前記描画領域の走査線に沿って画素ごとに順次加算して、画素ごとに塗りつぶすか否かを表す描画データを生成する描画処理手段を備える、
ことを特徴とする請求項１または２に記載のベクター画像描画装置。
【請求項４】
ベクターデータに基づいて、描画領域の走査線に沿って塗りつぶしを開始する開始画素、および塗りつぶしを終了する終了画素を示す、輪郭データを生成する輪郭生成ステップと、
描画する画素ごとに、前記輪郭データを記憶するアウトラインバッファに、前記輪郭データである塗りつぶしの開始または終了の数を設定する輪郭データ設定ステップと、
前記アウトラインバッファに前記輪郭データを設定するときに、画素ごとのアウトラインバッファが前記輪郭データでオーバーフローするか否かを判別する判別ステップと、
前記判別ステップで前記アウトラインバッファが前記輪郭データでオーバーフローすると判別した場合に、そのアウトラインバッファに設定できる数値を超える分の数値を、前記オーバーフローする画素に隣接する画素のアウトラインバッファの数値に加算して設定する移動設定ステップと、
を備えることを特徴とするベクター画像描画方法。
【請求項５】
前記移動設定ステップで、隣接する画素のアウトラインバッファの数値に加算して設定する場合に、加算した結果によってその画素のアウトラインバッファがオーバーフローするか否かを再帰的に判定する判定ステップを備え、
前記移動設定ステップは、前記判定ステップでオーバーフローすると判定した場合に、同一走査線上の輪郭データを設定した画素に最も近い、オーバーフローの発生しない画素のアウトラインバッファの数値に、前記アウトラインバッファに設定できる数値を超える分の数値を加算して設定する、
ことを特徴とする請求項４に記載のベクター画像描画方法。
【請求項６】
前記輪郭生成ステップは、塗りつぶしの開始を表すデータと塗りつぶしの終了を表すデータを互いに反対の符号の数値で生成し、
前記アウトラインバッファのデータを前記描画領域の走査線に沿って画素ごとに順次加算して、画素ごとに塗りつぶすか否かを表す描画データを生成する描画処理ステップを備える、
ことを特徴とする請求項４または５に記載のベクター画像描画方法。
【請求項７】
コンピュータに、
ベクターデータに基づいて、描画領域の走査線に沿って塗りつぶしを開始する開始画素、および塗りつぶしを終了する終了画素を示す、輪郭データを生成する輪郭生成ステップと、
描画する画素ごとに、前記輪郭データを記憶するアウトラインバッファに、前記輪郭データである塗りつぶしの開始または終了の数を設定する輪郭データ設定ステップと、
前記アウトラインバッファに前記輪郭データを設定するときに、画素ごとのアウトラインバッファが前記輪郭データでオーバーフローするか否かを判別する判別ステップと、
前記判別ステップで前記アウトラインバッファが前記輪郭データでオーバーフローすると判別した場合に、そのアウトラインバッファに設定できる数値を超える分の数値を、前記オーバーフローする画素に隣接する画素のアウトラインバッファの数値に加算して設定する移動設定ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクターデータから画像を表示するためのベクター画像描画装置、ベクター画像描画方法およびプログラムに関する。
【背景技術】
【０００２】
汎用の表示装置に表示する画像のデータには、二次元の画素の配列であるラスタデータと、線の情報を保持するベクターデータがある。ベクターデータは、例えば、線分の始点と終点、曲線を定める関数の次数と点の組み合わせ、円弧などを特定するデータなどがある。ラスタデータの画像をラスタ画像、ベクターデータの画像をベクター画像という。
【０００３】
ラスタデータは、画素ごとの色と輝度がデータとして保持されているので、表示するときに演算する必要はないが、画像を拡大表示する場合に画素単位で拡大するので表示の粗さが目立つ。ベクターデータは、表示の解像度に合わせて二次元の画素配列に展開するので、画像を拡大・縮小する場合にその解像度で表示できる。例えば、文字のタイプフェース（フォントともいう）をベクターデータで保持して、拡大・縮小したときに滑らかな表示が得られるようにしているアウトラインフォントがある。
【０００４】
ラスタ画像では、全画素の色と輝度がデータとして保持されているので、図形の塗りつぶしについてもそのまま表示するだけである。それに対して、ベクター画像では、塗りつぶす範囲が閉じた図形のベクターデータであり、塗りつぶす色と輝度がデータで指定されているだけなので、塗りつぶしを表示するときに、その範囲に含まれる画素を決定し、その範囲の画素を指定の色と輝度に設定する必要がある。図形の重なりがある場合には、ベクターデータから交点および重なる範囲を演算して、塗りつぶす画素を設定する。
【０００５】
輪郭生成を使ったベクター画像描画装置では、輪郭情報を保持するためのアウトラインバッファを使うが、アウトラインバッファの容量を少なくしたい場合に画素単位のビット数を減らして対応することが多い。
【０００６】
特許文献１には、画像データの符号化復号化において、画像の色値の不正を改善する技術が記載されている。特許文献１の符号化復号化装置は、符号化部では、原画像と平均画像との差分を抽出して差分データを作成し、差分データをベクトル量子化してベクトル量子化コードを作成する。そして、ベクトル量子化コードと、平均画像から原画像の復号化を試みて、オーバーフローが発生するか否かを調べ、その結果に応じて、例外判定情報を作成する。復号化部では、ベクトル量子化コードから差分データを作成し、差分データと、平均画像の加算により、画像を復号化すると共に、画像を復号化する際、符号化処理装置で作成した例外判定情報に従って、例外処理を行う。
【０００７】
また、画像の色値の不正を改善する技術に関連して特許文献２には、複写機において反射光により生じるＣＣＤのオーバーフローによる画像の白抜けを防止することが記載されている。特許文献２の技術は、ＣＣＤが原稿を読み取る際の白レベルと黒レベルとを予め設定し、ＣＣＤの出力をディジタル化する１０ビットのＡ／Ｄコンバータの出力のうち、白レベルの設定値までを８ビットのビデオ信号とし、上位２ビットをオーバーフロー検出信号とする。オーバーフローが検出されるとその対象画素のデータを近傍の画素のデータを用いて画像補正回路で補正する。
【０００８】
【特許文献１】特開平０７−２３１４４４号公報
【特許文献２】特開平０９−２８４５５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ベクター画像描画装置において、輪郭生成時の輪郭データを格納しておくためにアウトラインバッファを使用する場合、アウトラインバッファの容量を削減するために画素あたりのビット数を減らすことがある。画素あたりのビット数を減らすことでアウトラインバッファの容量は削減されるが、図形の重なりによって画素ごとのデータでオーバーフローが発生する場合がある。アウトラインバッファのオーバーフローが発生した結果、水平方向に右端の画素まで誤描画することになり描画品質に大きな影響を与えていた。
【００１０】
画素単位のビット数を減らすことにより、画素単位で扱うことができる輪郭情報量が減ることで、同じ画素への輪郭情報書き込みが多発した場合に輪郭情報の不整合が発生し、大きな誤描画を引き起こしてしまう問題があった。
【００１１】
本発明は上述の事情に鑑みてなされたもので、ベクター画像を描画する際に輪郭情報の不整合を防ぎ、描画品質を向上するシステムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の観点に係るベクター画像描画装置は、
ベクターデータに基づいて、描画領域の走査線に沿って塗りつぶしを開始する開始画素および塗りつぶしを終了する終了画素を示す輪郭データを生成する輪郭生成手段と、
描画する画素ごとに、前記輪郭データである塗りつぶしの開始または終了の数を記憶するアウトラインバッファと、
前記アウトラインバッファに前記輪郭データを設定するときに、画素ごとのアウトラインバッファが前記輪郭データでオーバーフローするか否かを判別する判別手段と、
前記判定手段で前記アウトラインバッファが前記輪郭データでオーバーフローすると判別した場合に、そのアウトラインバッファに設定できる数値を超える分の数値を、前記オーバーフローする画素に隣接する画素のアウトラインバッファの数値に加算して設定する移動設定手段と、
を備えることを特徴とする。
【００１３】
本発明の第２の観点に係るベクター画像描画方法は、
ベクターデータに基づいて、描画領域の走査線に沿って塗りつぶしを開始する開始画素および塗りつぶしを終了する終了画素を示す輪郭データを生成する輪郭生成ステップと、
描画する画素ごとに、前記輪郭データを記憶するアウトラインバッファに、前記輪郭データである塗りつぶしの開始または終了の数を設定する輪郭データ設定ステップと、
前記アウトラインバッファに前記輪郭データを設定するときに、画素ごとのアウトラインバッファが前記輪郭データでオーバーフローするか否かを判別する判別ステップと、
前記判別ステップで前記アウトラインバッファが前記輪郭データでオーバーフローすると判別した場合に、そのアウトラインバッファに設定できる数値を超える分の数値を、前記オーバーフローする画素に隣接する画素のアウトラインバッファの数値に加算して設定する移動設定ステップと、
を備えることを特徴とする。
【００１４】
本発明の第３の観点に係るプログラムは、コンピュータに、
ベクターデータに基づいて、描画領域の走査線に沿って塗りつぶしを開始する開始画素および塗りつぶしを終了する終了画素を示す輪郭データを生成する輪郭生成ステップと、
描画する画素ごとに、前記輪郭データを記憶するアウトラインバッファに、前記輪郭データである塗りつぶしの開始または終了の数を設定する輪郭データ設定ステップと、
前記アウトラインバッファに前記輪郭データを設定するときに、画素ごとのアウトラインバッファが前記輪郭データでオーバーフローするか否かを判別する判別ステップと、
前記判別ステップで前記アウトラインバッファが前記輪郭データでオーバーフローすると判別した場合に、そのアウトラインバッファに設定できる数値を超える分の数値を、前記オーバーフローする画素に隣接する画素のアウトラインバッファの数値に加算して設定する移動設定ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ベクター画像を描画するときに、アウトラインバッファのオーバーフローが発生する場合でも誤って描画するのを改善できる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の実施の形態に係るオーバーフロー補正回路の構成例を示すブロック図である。図１は、描画装置１００の部分を示す。描画装置１００は、輪郭生成回路１０４、オーバーフロー補正回路１、アウトラインバッファ１０６および描画処理部１２０を備える。オーバーフロー補正回路１は、エラー判定部２とピクセル位置移送部３から構成される。
【００１７】
図２は、オーバーフロー補正回路１を含む描画装置の構成例を示すブロック図である。描画装置１００は、制御点入力部１０１、ベジェ曲線分割部１０２、座標変換１０３、輪郭生成回路１０４、アンチエイリアス回路１０５、オーバーフロー補正回路１、アウトラインバッファ１０６、マスク生成１０７、塗りつぶし１０８、合成部１０９、ディザー１１０、イメージバッファ１１１、フィルタ１１２および色変換１１３から構成される。オーバーフロー補正回路１は描画装置１００のうち、輪郭線の情報から走査線に沿って塗りつぶしを開始または終了する画素を示す輪郭データを設定する際に、輪郭データのオーバーフローが発生した場合にそれを補正する。
【００１８】
描画装置１００の処理の概要を説明する。制御点入力部１０１でベジェ曲線の制御点の座標を入力して、ベジェ曲線分割部１０２が、ベジェ曲線を折れ線近似する分割点の座標を出力すると、座標変換１０３は分割点の座標を、表示する画面全体の中の座標に変換する。輪郭生成回路１０４は、分割点の座標から各線分が通る画素を示す輪郭データをアウトラインバッファ１０６に設定する。オーバーフロー補正回路１は、輪郭データを設定する際に、輪郭データのオーバーフローが発生した場合にそれを補正する。アンチエイリアス回路１０５は、輪郭線を構成する各線分の情報から、アンチエイリアス処理を行って輪郭部の画素の塗りつぶし占有率を算出する。マスク生成１０７は、輪郭データからマスクデータを生成する。そして、マスクデータに従って、塗りつぶし処理を行う。
【００１９】
一方、ビットマップなどの画素ごとの色および輝度のデータで表された画像データと重ね合わせる場合に、その画像データはイメージバッファ１１１に設定される。画像データはフィルタ１１２でエッジ強調、特異点除去などの処理が施されて、表示装置に合わせて色変換したのち、輪郭データから生成された画像と合成される。最後に、画面で見やすいようにディザー効果をかけて、描画データを生成する。
【００２０】
図１の描画処理部１２０は、図２のマスク生成１０７以降に相当する。図１では、輪郭生成より前の部分である制御点入力部１０１から座標変換１０３まで、およびアンチエイリアス回路１０５を省略している。
【００２１】
図１を用いて輪郭データ生成における本発明の処理手順を説明する。本実施の形態におけるオーバーフロー補正回路１は、輪郭生成後輪郭データをアウトラインバッファ１０６へ格納するまでの経路にエラー判定部２とピクセル位置移送部３を追加する。
【００２２】
エラー判定部２では、輪郭生成回路１０４が格納しようとする画素の輪郭データの状態をチェックし、オーバーフローが発生しないかを判定する。また、判定した結果オーバーフローが発生する場合に、エラー情報をピクセル位置移送部３に通知する。
【００２３】
ピクセル位置移送部３は、エラー判定部２から通知されたエラー情報を受け取る。オーバーフローが発生している場合には、アウトラインバッファ１０６に格納する輪郭データを格納する画素に隣接する画素の輪郭データに、オーバーフローした分の１を加算して、アウトラインバッファ１０６へ書き戻す。オーバーフローした分を加算する隣接する画素もオーバーフローが発生する場合には、同一走査線上のオーバーフローの発生しない画素のうち、輪郭データを設定した画素に最も近い画素にオーバーフローした分の１を加算して、アウトラインバッファ１０６へ書き戻す。
【００２４】
描画処理部１２０はアウトラインバッファ１０６から読み出した輪郭データから各画素に対して描画するかどうかの判定を行う。描画の判定は、走査線方向に輪郭データを加算した結果が０かどうかで判定する。判定は左端の画素から実施される。左端の画素は、アウトラインバッファ１０６から読み出された輪郭データをそのまま使用する。それ以降の画素に対しては、直前に処理された画素のデータにたいして該当画素の輪郭データを加算した結果が０かどうかを判定する。
【００２５】
以下に、本実施の形態のオーバーフロー補正回路１の動作を例を挙げて説明する。以下の例では、アウトラインバッファ１０６は各画素のデータが４ビットで構成され、値として−８から７まで表現可能な場合を想定して説明する。
【００２６】
図３は、オーバーフローが発生しない場合のアウトラインバッファ１０６に格納されるデータの例を示す。図３の輪郭データ２０１は、アウトラインバッファ１０６内の走査線方向１ラインの輪郭データの例を示す。輪郭データは、該当ラインを下から上に横切った場所に対して１を加算し、反対に上から下に横切った場所に対して１を減算した値である。図３の例では左から３画素目の場所に７回下から上に横切り、左から７画素目に４回、左から１０画素目に３回上から下へ横切ったことを表している。
【００２７】
描画処理部１２０では左端の画素からアウトラインバッファ１０６に格納されている輪郭データを読み出し、走査線方向に各画素のデータを加算していく処理を実施する。図３の下段に画素データ２０２の例を示す。
【００２８】
図３の例では、左から２画素目までは輪郭データが０なので加算後０となる。３画素目は輪郭データが７なので加算後７となる。左から４画素目から６画素目までは輪郭データ０なので、３画素目の７にそれぞれの画素の輪郭データを加算して７となる。左から７画素目は輪郭データが−４なので、直前までの値７に加算して３となる。左から８画素目と左から９画素目は輪郭データが０なので加算後３となる。左から１０画素目は輪郭データが−３なので、直前までの値３に加算して０となる。左から１１画素目から右端までは輪郭データが０なので加算後０となる。この処理後の結果を図３の画素データ２０２に示す。輪郭データが０以外の画素を描画するルールを使用した場合、左から３画素目から９画素目までの画素が描画対象と判定される。
【００２９】
図４は、オーバーフロー補正を行わないベクター画像描画処理で、オーバーフローが発生した例を示す。図４の上段の輪郭データ３０１は、本来アウトラインバッファ１０６に格納されるべき情報を示す。図４のベクター画像の例では、左から３画素目を８回下から上に横切り、左から７画素目を４回、左から１０画素目を４回上から下に横切る輪郭データが生成されている。
【００３０】
説明の例ではアウトラインバッファ１０６の各画素は−８から７までの数値しか格納できないため、左から３画素目ではオーバーフローが発生する。図４の中段のアウトラインバッファ状態３０２は、上段の輪郭データ３０１に示す輪郭データが生成された場合に、実際に設定される輪郭データを示す。オーバーフローが発生した左から３画素目はアウトラインバッファ１０６へ輪郭データが格納される際に、格納可能な最大値である７にクランプされる。左から３画素目は８を格納しようとするがオーバーフローが発生するため格納可能な最大値にクランプされた結果７となる。
【００３１】
アウトラインバッファ状態３０２の輪郭データを使って、描画処理部１２０で判定処理実施した後のデータが、図４の画素データ３０３である。左端から２画素目までは輪郭データが０なので加算後０となる。左から３画素目は輪郭データが７なので加算後７となる。左から４画素目から６画素目までは輪郭データが０なので加算後７となる。左から７画素目は輪郭データが−４なので加算後３となる。左から８画素目と左から９画素目までは輪郭データが０なので加算後３となる。左から１０画素目は輪郭データが−４なので加算後−１となる。左から１１画素目から右端までは輪郭データが０なので加算後−１となる。
【００３２】
図４の画素データ３０３の情報により描画される画素は左から３画素目から右端の画素までが描画対象となり、本来描画すべき画素は左から３画素目から９画素目までであるのに対して、１０画素目から右端までの画素が描画されることになり誤描画が発生する。
【００３３】
図５は、本実施の形態の描画装置を用いて処理した例を示す。図５の例は、本来の輪郭データが図４と同じ左から３画素目を８回下から上に横切り、左から７画素目を４回、１０画素目を４回上から下に横切るような描画の場合である。図５の輪郭データ４０１は、本来アウトラインバッファ１０６に格納されるべき情報を示している。説明の例ではアウトラインバッファ１０６は−８から７までの値しか格納できないため、左から３画素目は格納できる最大値の７とし、その隣の左から４画素目にオーバーフローした分の１を加算し１を格納する。図５のアウトラインバッファ状態４０２は、本実施の形態のベクター画像描画装置による画素位置ずらし処理を行った後のアウトラインバッファ１０６のデータを示す。
【００３４】
このアウトラインバッファ状態４０２の情報を使って描画処理部で処理が実施された後のデータが図５の画素データ４０３である。左端から２画素目までは輪郭データが０なので加算後０となる。左から３画素目は輪郭データが７なので加算後７となる。左から４画素目は輪郭データが１なので加算後８となる。左から５画素目と左から６画素目までは輪郭データが０なので加算後８となる。左から７画素目は輪郭データが−４なので加算後４となる。左から８画素目と左から９画素目までは輪郭データが０なので加算後４となる。左から１０画素目は輪郭データが−４なので加算後０となる。左から１１画素目から右端までは輪郭データが０なので加算後０となる。
【００３５】
図５の画素データ４０３の情報により描画される画素は左から３画素目から９画素目までとなり、誤描画は発生しない。
【００３６】
図６は、実施の形態に係るオーバーフロー補正処理の動作の一例を示すフローチャートである。オーバーフロー補正処理は、輪郭線が生成され、１つの走査線のアウトラインバッファ１０６に輪郭データを設定するごとに起動される。
【００３７】
輪郭生成回路１０４が、ある画素の輪郭データを生成すると（ステップＳ１)、オーバーフロー補正回路１のピクセル位置移送部３は、カウンタｉを０にセットする（ステップＳ２）。エラー判定部２は、輪郭データをセットする画素のアウトラインバッファ１０６の値がオーバーフローするかどうかを判定する（ステップＳ３）。オーバーフローする場合は（ステップＳ３；ＹＥＳ）、カウンタｉに１を加算する（ステップＳ４）。
【００３８】
カウンタｉが偶数の場合は（ステップＳ５；ＹＥＳ）、輪郭データを設定する元のアウトラインバッファ１０６のアドレスからｉ／２を減算したアドレスを次回の判定のアドレスとする（ステップＳ６）。カウンタｉが奇数の場合は（ステップＳ５；ＮＯ）、輪郭データを設定する元のアウトラインバッファ１０６のアドレスに（ｉ＋１）／２を加算したアドレスを次回の判定のアドレスとする（ステップＳ７）。すなわち、調べているアウトラインバッファ１０６がオーバーフローする場合に、次回の判定（カウンタｉ）が偶数回目では走査線に沿って最初の画素より前の画素のアウトラインバッファ１０６が選択され、次回の判定（カウンタｉ）が奇数回目では最初の画素より後の画素のアウトラインバッファ１０６が選択される。
【００３９】
次回の判定のアドレスが有効範囲内、すなわち、その走査線のアウトラインバッファ１０６内であれば（ステップＳ８；ＹＥＳ）、ステップＳ３に戻って、そのアドレスのアウトラインバッファ１０６の値に輪郭データを加算した場合にオーバーフローするかどうかを判定する（ステップＳ３）。次回の判定のアドレスが有効範囲内でなければ（ステップＳ８；ＮＯ）、そのアドレスでは判定を行わず、ステップＳ４に戻って、カウンタｉをインクリメントする。
【００４０】
ステップＳ３の判定で、オーバーフローしない場合は（ステップＳ３；ＮＯ）、ピクセル位置移送部３は、判定したアドレスのアウトラインバッファ１０６に輪郭データを加算して格納する（ステップＳ９）。したがって、輪郭データが生成された画素のアウトラインバッファ１０６に最も近い、オーバーフローしないアウトラインバッファ１０６に、オーバーフローした分の値が加算されて設定される。
【００４１】
なお、オーバーフローした場合に、輪郭データが生成された画素のアウトラインバッファ１０６に最も近いオーバーフローしないアウトラインバッファ１０６ではなく、オーバーフローする場合に、次々に隣接画素のアウトラインバッファ１０６を参照して、オーバーフローしないアウトラインバッファ１０６に加算してもよい。輪郭データが生成された画素のアウトラインバッファ１０６に最も近い、オーバーフローしないアウトラインバッファ１０６に設定する場合が、最も描画の誤差が少ないと言える。
【００４２】
図７は、描画装置をコンピュータに実装する場合の、物理的な構成の一例を示すブロック図である。本実施の形態に係る描画装置１００は、一般的なコンピュータ装置と同様のハードウェア構成によって実現することができる。オーバーフロー補正回路１は、図２で説明したように描画装置１００の一部を構成する。描画装置１００は、図７に示すように、制御部２１、主記憶部２２、外部記憶部２３、操作部２４、表示部２５および入出力部２６を備える。主記憶部２２、外部記憶部２３、操作部２４、表示部２５および入出力部２６はいずれも内部バス２０を介して制御部２１に接続されている。
【００４３】
制御部２１はＣＰＵ（Central Processing Unit）等から構成され、外部記憶部２３に記憶されているプログラム３０に従って、オーバーフロー補正処理を含む描画するための処理を実行する。
【００４４】
主記憶部２２はＲＡＭ（Random-Access Memory）等から構成され、外部記憶部２３に記憶されているプログラム３０をロードし、制御部２１の作業領域として用いられる。上述のアウトラインバッファ１０６は、主記憶部２２の中に構成される。
【００４５】
外部記憶部２３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、前記の処理を制御部２１に行わせるためのプログラム３０を予め記憶し、また、制御部２１の指示に従って、このプログラム３０が記憶するデータを制御部２１に供給し、制御部２１から供給されたデータを記憶する。
【００４６】
操作部２４はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス２０に接続するインターフェース装置から構成されている。操作部２４を介して、ベジェ曲線を含む画像データの作成、入力、送受信などの指示、表示する画像の指定、描画領域の範囲、拡大率、描画領域の表示装置における位置などが入力され、制御部２１に供給される。
【００４７】
表示部２５は、ＣＲＴ（Cathode Ray Tube）またはＬＣＤ（Liquid Crystal Display）などから構成され、描画された画像を表示する。
【００４８】
入出力部２６は、無線送受信機、無線モデムまたは網終端装置、およびそれらと接続するシリアルインタフェースまたはＬＡＮ（Local Area Network）インタフェース等から構成されている。入出力部２６を介して、ベジェ曲線を含む画像データを受信し、また送信できる。
【００４９】
本発明によるオーバーフロー補正回路１を含む描画装置１００は、上記のアンチエイリアス処理を実現する回路を組み込んだＬＳＩ（Large Scale Integration）等のハードウェア部品から構成される回路を実装して、電子回路として構成することができる。また、上記の各機能を行うプログラムを、コンピュータ処理装置上の制御部２１で実行することにより、ソフトウェア的に描画装置１００を実現することができる。その場合、制御部２１のＣＰＵは、外部記憶部２３に格納されているプログラム３０を、主記憶部２２にロードして実行し、各部の動作を制御して上記の各機能を行わせることによって、オーバーフロー補正回路１の処理を実行する。
【００５０】
以上に説明したように、本実施の形態の描画装置１００においては、以下に記載するような効果を奏する。
第１の効果は、オーバーフローが発生した時の誤描画を改善できる。
第２の効果は、アウトラインバッファの画素あたりのビット数を減らしても誤描画せず描画できるようになり、アウトラインバッファの容量を削減できる。
第３の効果は、アウトラインバッファの画素あたりのビット数を減らしても誤描画せず描画できるようになることで、メモリバス使用効率を向上することができる。
【００５１】
その他、本発明の好適な変形として、以下の構成が含まれる。
【００５２】
本発明の第１の観点に係るベクター画像描画装置について、
好ましくは、前記移動設定手段で、隣接する画素のアウトラインバッファの数値に加算して設定する場合に、加算した結果によってその画素のアウトラインバッファがオーバーフローするか否かを再帰的に判定する判定手段を備え、
前記移動設定手段は、前記判定手段でオーバーフローすると判定した場合に、同一走査線上の輪郭データを設定した画素に最も近い、オーバーフローの発生しない画素のアウトラインバッファの数値に、前記アウトラインバッファに設定できる数値を超える分の数値を加算して設定する、
ことを特徴とする。
【００５３】
好ましくは、前記輪郭生成手段は、塗りつぶしの開始を表すデータと塗りつぶしの終了を表すデータを互いに反対の符号の数値で生成し、
前記アウトラインバッファのデータを前記描画領域の走査線に沿って画素ごとに順次加算して、画素ごとに塗りつぶすか否かを表す描画データを生成する描画処理手段を備える、
ことを特徴とする。
【００５４】
本発明の第２の観点に係るベクター画像描画方法について、
好ましくは、前記移動設定ステップで、隣接する画素のアウトラインバッファの数値に加算して設定する場合に、加算した結果によってその画素のアウトラインバッファがオーバーフローするか否かを再帰的に判定する判定ステップを備え、
前記移動設定ステップは、前記判定ステップでオーバーフローすると判定した場合に、同一走査線上の輪郭データを設定した画素に最も近い、オーバーフローの発生しない画素のアウトラインバッファの数値に、前記アウトラインバッファに設定できる数値を超える分の数値を加算して設定する、
ことを特徴とする。
【００５５】
好ましくは、前記輪郭生成ステップは、塗りつぶしの開始を表すデータと塗りつぶしの終了を表すデータを互いに反対の符号の数値で生成し、
前記アウトラインバッファのデータを前記描画領域の走査線に沿って画素ごとに順次加算して、画素ごとに塗りつぶすか否かを表す描画データを生成する描画処理ステップを備える、
ことを特徴とする。
【００５６】
その他、前記のハードウエェア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【００５７】
制御部１１、主記憶部１２、外部記憶部１３、操作部１４、入出力部１６および内部バス１０などから構成される描画装置１００の処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する描画装置１００を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで描画装置１００を構成してもよい。
【００５８】
また、描画装置１００の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【００５９】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施の形態に係るオーバーフロー補正回路の構成例を示すブロック図である。
【図２】描画装置の構成例を示すブロック図である。
【図３】オーバーフローが発生しない場合のアウトラインバッファに格納されるデータの例を示す図である。
【図４】オーバーフローが発生した場合のアウトラインバッファのデータの例を示す図である。
【図５】実施の形態に係るベクター画像描画処理の動作を説明する図である。
【図６】実施の形態に係るオーバーフロー補正の動作の一例を示すフローチャートである。
【図７】描画装置をコンピュータに実装する場合の、物理的な構成の一例を示すブロック図である。
【符号の説明】
【００６１】
１  オーバーフロー補正回路
２  エラー判定部
３  ピクセル位置移送部
２１  制御部
２２  主記憶部
２３  外部記憶部
２４  操作部
２５  表示部
２６  入出力部
３０  プログラム
１００  描画装置
１０４  輪郭生成回路
１０６  アウトラインバッファ
１２０  描画処理部
【図１】
2010113626.tif 000003
【図２】
2010113626.tif 000004
【図３】
2010113626.tif 000005
【図４】
2010113626.tif 000006
【図５】
2010113626.tif 000007
【図６】
2010113626.tif 000008
【図７】
2010113626.tif 000009