(57)【要約】【課題】無駄なタイル領域に対する処理を省き、高速に動作するベクトル図形描画装置を得る。【解決手段】曲線分割部１３は、輪郭の曲線を複数の微小直線へと分割する。輪郭描画部１４は、直線とスキャンラインとの交点の情報を求め、輪郭バッファ１５に保持する。画素生成部１８は、輪郭バッファ１５の情報を読み出して画素を生成する。有効タイルフラグバッファ１６は、どのタイル領域が有効かを示すフラグを保持している。制御部１９は、有効タイルフラグバッファ１６を参照して次にどのタイル領域について処理を行うかを判断し、曲線分割部１３と輪郭描画部１４と画素生成部１８が、タイル領域単位で処理を行うよう制御する。【選択図】図１
2010146255.tif 000002
【特許請求の範囲】
【請求項１】
複数のタイル領域で分割した描画領域に、輪郭が数式で定義されたベクトル図形を描画するベクトル図形描画装置において、
前記輪郭の曲線を複数の微小直線へと分割する曲線分割部と、
前記直線とスキャンラインとの交点の情報を求める輪郭描画部と、
前記輪郭描画部で求めた情報を保持する輪郭バッファと、
前記輪郭バッファに保持された情報を読み出して画素を生成する画素生成部と、
前記タイル領域の処理方向においてどのタイル領域が有効かを示すフラグを保持する有効タイルフラグバッファと、
前記曲線分割部と前記輪郭描画部と前記画素生成部が、前記タイル領域単位で処理を行うよう制御すると共に、前記有効タイルフラグバッファを参照して次にどのタイル領域について処理を行うかを判断する制御部とを備えたベクトル図形描画装置。
【請求項２】
輪郭描画部は、タイル領域の処理方向における処理開始端のタイル領域について処理を行う際に、これから処理するタイル領域についてどのタイル領域を処理する必要があるかを求め、その結果を有効タイルフラグバッファへ保持しておき、
制御部は、次のタイル領域の処理を行う際に、前記有効タイルフラグバッファを参照して有効なタイル領域のみ処理を行うように制御することを特徴とする請求項１記載のベクトル図形描画装置。
【請求項３】
曲線分割部は、タイル領域の処理方向における処理開始端のタイル領域について処理を行う際はタイル領域の処理方向に垂直な方向にのみクリップ処理を行い、次以降のタイル領域について処理を行う際は当該タイル領域の上下左右についてクリップ処理を行うことを特徴とする請求項１または請求項２記載のベクトル図形描画装置。
【請求項４】
タイル領域の処理方向に垂直な方向における当該タイル領域一列分の画素の値を保持する補助バッファを有し、
画素生成部は、画素生成処理時に、処理したタイル領域の処理方向先頭の画素における輪郭との交差回数を前記値として前記補助バッファへ格納し、次のタイル領域の処理時に前記補助バッファの値を輪郭との交差回数の初期値として利用することを特徴とする請求項１から請求項３のうちのいずれか１項記載のベクトル図形描画装置。
【請求項５】
画素生成部は、処理対象とするタイル領域との間に処理対象とはしないタイル領域があり、かつ、補助バッファの値を参照して画素生成の必要がある場合は、前記処理対象とはしないタイル領域の部分も含めて画素生成を行うことを特徴とする請求項４記載のベクトル図形描画装置。
【請求項６】
輪郭バッファはサブピクセル単位の解像度で構成され、
画素生成部は、画素を生成する際に、有効なサブピクセルの割合から描画する画素の濃度を算出し、すでに描画されている画素との間でブレンド処理を行うことによりアンチエイリアス処理を施した図形を描画することを特徴とする請求項１から請求項５のうちのいずれか１項記載のベクトル図形描画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、描画領域を複数のタイル領域で分割し、当該タイル領域毎に、輪郭が数式で定義されたベクトル図形の描画を行うベクトル図形描画装置に関するものである。
【背景技術】
【０００２】
ベクトル図形やアウトラインフォントは輪郭が数式で定義されており、拡大・縮小・回転等の変形が容易にでき、また変形しても画質が劣化しなという特徴がある。ベクトル図形やアウトラインフォントを液晶ディスプレイ等の表示デバイスへ表示させる場合にはラスタデータへ変換する必要があり、座標変換を行い所望の大きさへ変換した後、輪郭の数式に従い輪郭を描画し、内部を塗り潰すという処理が必要となる。この処理は、通常ＣＰＵによるソフトウェア処理により行われているが、ハードウェアにより高速に描画を行わせる場合もある。
【０００３】
従来、ベクトル図形やアウトラインフォントの描画処理において必要となる輪郭の情報を格納するワークメモリの容量を減らすために、小容量のワークメモリを内蔵し、描画する図形または文字がワークメモリの領域を超える場合には、ワークメモリ領域相当のタイル単位に分割して描画する方法があった（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開平６−１６１４２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のような従来の図形描画装置では、有効描画領域をタイル単位に分割し、分割した各領域について順次処理を行う。しかしながら、このように順次処理を行うことから、図形が存在しない領域も同様に処理を行うことになる。その結果、ベクトル図形の形状によっては無駄なタイル領域に対する処理の割合が大きくなり、描画の効率が悪くなるという問題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、無駄なタイル領域に対する処理を省き、高速に動作するベクトル図形描画装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るベクトル図形描画装置は、輪郭の曲線を複数の微小直線へと分割する曲線分割部と、直線とスキャンラインとの交点の情報を求める輪郭描画部と、輪郭描画部で求めた情報を保持する輪郭バッファと、輪郭バッファに保持された情報を読み出して画素を生成する画素生成部と、タイル領域の処理方向においてどのタイル領域が有効かを示すフラグを保持する有効タイルフラグバッファと、曲線分割部と輪郭描画部と画素生成部が、タイル領域単位で処理を行うよう制御すると共に、有効タイルフラグバッファを参照して次にどのタイル領域について処理を行うかを判断する制御部とを備えたものである。
【発明の効果】
【０００８】
この発明のベクトル図形描画装置は、タイル領域の処理方向においてどのタイル領域が有効かを示すフラグを保持する有効タイルフラグバッファを備え、この有効タイルフラグバッファを参照して次にどのタイル領域について処理を行うかを判断するようにしたので、無駄なタイル領域に対する処理を省くことができ、高速な描画を行うことができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１は、この発明の実施の形態１によるベクトル図形描画装置を示す構成図である。
図において、ベクトル図形描画装置１０は、座標変換部１１、入力バッファ１２、曲線分割部１３、輪郭描画部１４、輪郭バッファ１５、有効タイルフラグバッファ１６、補助バッファ１７、画素生成部１８、制御部１９を備えている。
【００１０】
座標変換部１１は、入力されるベクトルデータに座標変換処理を施してフレームバッファ２０上の座標へと変換する処理部である。入力バッファ１２は、座標変換部１１から出力されるベクトルデータを格納するバッファである。曲線分割部１３は、入力バッファ１２に格納されたデータを読み出して曲線から微小線分への分割を行う処理部である。輪郭描画部１４は、曲線分割部１３から出力される直線についてラスタライズ処理を行い、輪郭情報の描画および有効なタイル領域の判定を行う処理部である。輪郭バッファ１５は、輪郭描画部１４から出力される輪郭情報を保持するバッファである。有効タイルフラグバッファ１６は、輪郭描画部１４で判定された有効なタイル領域の情報を保持するバッファである。補助バッファ１７は、輪郭バッファ１５の縦一列分の輪郭情報を保持するバッファである。画素生成部１８は、輪郭バッファ１５および補助バッファ１７を参照して描画する画素を生成する処理部である。制御部１９は、各処理部の制御を行う制御部である。また、フレームバッファ２０は、描画結果のイメージを保持するバッファである。
【００１１】
尚、ベクトル図形描画装置１０はコンピュータを用いて実現され、座標変換部１１、曲線分割部１３、輪郭描画部１４、画素生成部１８および制御部１９は、それぞれの処理に対応したソフトウェアと、このソフトウェアを実行するためのＣＰＵやメモリ等のハードウェアから構成されるか、あるいはそれぞれが専用のハードウェアで構成されている。また、入力バッファ１２、輪郭バッファ１５および有効タイルフラグバッファ１６は、それぞれメモリ上に設けられる一時記憶部である。
【００１２】
また、アウトラインフォントはベクトル図形の一種であると考えられるため、以下、アウトラインフォントも含めてベクトル図形として説明する。更に、実施の形態では、描画領域における横方向をタイル領域の処理方向として説明する。
【００１３】
次に、実施の形態１のベクトル図形描画装置の動作について説明する。
ベクトル図形描画装置１０の初期状態として、入力バッファ１２は空の状態であり、輪郭バッファ１５、有効タイルフラグバッファ１６および補助バッファ１７は全て初期値“０”に初期化されているものとする。
また、図を簡略化するため、ここでは、輪郭バッファ１５は８×８ピクセルのタイル分の容量をもっているものとする。また、有効タイルフラグバッファ１６は１つのタイル領域当たり１ビットの情報を持つ１次元のバッファである。また、補助バッファ１７は上述したように輪郭バッファ１５の縦一列分の容量を持つバッファである。
【００１４】
ベクトル図形描画装置１０が、ベクトル図形の描画を行う際には、先ず、図示しない上位装置より、図形の色等の属性を指定され、図形の輪郭を構成するベクトルデータが入力される。あるいは、図示しない外部メモリに格納されているベクトルデータをベクトル図形描画装置１０が読み出してきても良い。図形の輪郭を構成するベクトルデータは、コマンドとＸＹ座標で構成されており、図２に示すように直線の頂点や曲線の頂点および制御点により輪郭が定義される。また、以後の説明ではＸＹ座標の原点は左上に存在するものとする。
【００１５】
入力されたベクトルデータは、座標変換部１１へ入力される。座標変換部１１では文字の拡大縮小、回転、平行移動等を行うために、予め設定された変換行列に従いベクトルデータの座標に対して順次座標変換処理を施して、描画するフレームバッファ２０上の座標へ変換して入力バッファ１２へ格納する。また、その際に座標変換後のＸ座標およびＹ座標について最小値および最大値を記憶しておく。
【００１６】
一つの図形を構成するベクトルデータが全て入力バッファ１２へ格納されると、座標変換部１１には図３に示すように図形を構成するベクトルデータのＸ座標およびＹ座標についてそれぞれ最小値および最大値（Ｘｍｉｎ，Ｙｍｉｎ，Ｘｍａｘ，Ｙｍａｘ）が記憶されている。ここでは座標変換の結果、図３のように図形が縦横それぞれタイル領域（輪郭バッファ１５の大きさ）６個分にまたがる大きさになったものとして説明する。
【００１７】
一つの図形を構成するベクトルデータが全て入力バッファ１２へ格納されると、制御部１９は曲線分割部１３に処理の開始を指示する。その際に、制御部１９は、先ず、図３における領域１Ａへの描画を行うために、文字のバウンディングボックスの最小座標（Ｘｍｉｎ，Ｙｍｉｎ）と輪郭バッファ１５の原点とを対応させるよう曲線分割部１３に指示を出す。また、制御部１９は、処理対象の領域１Ａが横方向で最初のタイル領域であることを曲線分割部１３に通知する。
【００１８】
曲線分割部１３は、制御部１９から処理の開始を指示されると、入力バッファ１２からベクトルデータを順次読み出して処理を行う。以下、図４を参照しながら曲線分割部１３の動作を説明する。
曲線分割部１３は、ベクトルデータの座標（Ｘｍｉｎ，Ｙｍｉｎ）を輪郭バッファ１５上の原点（０，０）に対応させるために、入力バッファ１２から読み出したベクトルデータのＸ座標の値からＸｍｉｎの値を引き、同様にＹ座標の値からＹｍｉｎの値を引く（図４−ａ）。
【００１９】
次に、輪郭を構成する直線または曲線が完全に処理対象のタイル領域の外側に位置するか否かを判断し、外側に位置すると判断した場合には、その直線または曲線を破棄し、以降の処理を行わないようにする。但し、処理対象の領域１Ａが横方向で最初のタイル領域であるため、タイルの上下方向の外側に位置する直線または曲線のみを破棄するように制御を行う。即ち、直線・曲線を定義する頂点・制御点のＹ座標が全て０未満または８以上の直線・曲線を破棄する（図４−ｂ）。
【００２０】
次に、曲線分割部１３は、曲線を微小直線へと分割する。曲線を直線へ分割する方法は公知であるので詳細な説明は省略するが、曲線の曲率に基づいて分割数を変化させる方法が望ましい。入力データが直線の場合には分割を行わない（図４−ｃ）。
【００２１】
次に、曲線分割部１３は、曲線から分割された直線について、再びその直線が完全に処理対象のタイル領域の外側に位置するか否かを判断し、外側に位置すると判断した場合には、その直線または曲線を破棄し、以降の処理を行わないようにする。ここでも上記と同様に、処理対象の領域１Ａが横方向で最初のタイル領域であるため、タイルの上下方向の外側に位置する直線のみを破棄する。また、直線がタイル領域の上辺と下辺をまたぐ場合にはクリップ処理を行う（図４−ｄ）。
上記の処理を行い、曲線分割部１３は直線のデータを輪郭描画部１４へ出力する。
【００２２】
輪郭描画部１４は、曲線分割部１３から入力される直線についてラスタライズを行い、スキャンラインと直線との交点を求めて輪郭バッファ１５へ描画する。その際に、上向きの直線である場合には輪郭バッファ１５における交点座標の値に１を加算し、下向きの直線である場合には輪郭バッファの値から１を減算するように描画を行う。また、交点の座標が処理対象のタイル領域を超える場合には書き込みを行わないようにする。
また、輪郭描画部１４は、処理対象の領域１Ａが横方向で最初のタイル領域であるため、処理対象のタイル領域を超える座標を持つ直線については、始点および終点の座標から、その直線が横方向のどのタイル領域にまたがるかを求め、有効タイルフラグバッファ１６の対応するビットを“１”にする。
曲線分割部１３および輪郭描画部１４は上記の処理をパイプライン処理で行い、入力バッファ１２に格納されている一つの図形の全てのデータについて処理を行う。
【００２３】
図５−ａおよび図５−ｂは、図３における領域１Ａの処理が終わった時の輪郭バッファ１５および有効タイルフラグバッファ１６の例を示す図である。図５−ｂにおいて、有効タイルフラグバッファ１６は左端のビットと左から５番目のビットが“１”となっており、これは図３における領域１Ｂと領域１Ｆに輪郭線が存在することを示している。
【００２４】
制御部１９は、曲線分割部１３および輪郭描画部１４の処理が終わったことを検知すると、次に画素生成部１８に対して処理を開始するように指示する。その際、制御部１９は、輪郭バッファ１５の原点とフレームバッファ２０上の座標（Ｘｍｉｎ，Ｙｍｉｎ）とを対応させるよう画素生成部１８に指示を出す。
【００２５】
画素生成部１８は、制御部１９から処理の開始を指示されると、輪郭バッファ１５および補助バッファ１７を参照して描画するピクセルを生成する。以下、図５−ａおよび図６を参照しながら画素生成部１８の動作を説明する。
画素生成部１８は、スキャンライン方向へのピクセル生成を、輪郭バッファ１５の縦解像度分だけ繰り返すことによりピクセルを生成する。また、スキャンライン方向へのピクセル生成は、各ピクセルにおける輪郭との交差回数を求めることにより行う。
各ピクセルにおける輪郭との交差回数は、左のピクセルにおける輪郭との交差回数の値に、輪郭バッファ１５の対応する位置の値を加算したものである。また、輪郭との交差回数の初期値は補助バッファ１７の対応する位置の値となる。各ピクセルにおける輪郭との交差回数が０以外であれば、そのピクセルは図形の内側にあるため描画する必要があると判断し、ピクセルを生成する。
【００２６】
例えば、一番上（Ｙ＝０）のスキャンラインの例では、初期値は補助バッファ１７の対応する位置から読み出した値であり、ここでは“０”である（図６−ａ）。そして、座標（０，０）から順次輪郭バッファ１５の値（図５−ａ参照）を加算していくと、座標（２，０）、（３，０）、（４，０）のピクセルにおいて輪郭との交差回数が“１”となるため、画素生成部１８はこれらのピクセルを生成する。そして、右端のピクセルにおける輪郭との交差回数を、補助バッファ１７の対応する位置へ書き戻す。
【００２７】
上記の処理を一番下（Ｙ＝７）のスキャンラインまで繰り返すことにより、輪郭バッファ１５の領域内で描画する必要のある全てのピクセルを生成する。生成されたピクセルは、Ｘ座標の値にＸｍｉｎの値を加算し、Ｙ座標の値にＹｍｉｎの値を加算することによりフレームバッファ２０上の座標に変換され、予め設定された描画色でフレームバッファ２０へ描画される。
【００２８】
画素生成部１８は上記の処理をパイプライン処理で行い、描画する必要のある全てのピクセルを全てフレームバッファ２０へ描画し終わると動作を終了する。図６−ｂは、図３の領域１Ａにおける画素生成部１８のピクセル生成の結果を示す図である。また、図６−ｃは同様に、図３の領域１Ａにおいて画素生成部１８の動作が終了した時点での補助バッファ１７の内容を示す図である。
【００２９】
上記の画素生成部１８の説明では、輪郭バッファ１５の読み出しを１ピクセルずつ行うものとしたが、１度に複数ピクセル分の輪郭バッファ１５を読み出してピクセル生成処理を行うように構成してもよい。
また、輪郭バッファ１５は次のタイル領域の処理を行う前に初期化をする必要がある。そこで、画素生成部１８において輪郭バッファ１５を読み出した際に初期化を行うようにする。読出しと初期化を同時に行うことができるようにするため、輪郭バッファ１５を２ポートメモリで構成するのが望ましい。
【００３０】
以上の処理により図３における領域１Ａの部分の描画が完了すると、制御部１９は、有効タイルフラグバッファ１６を参照して、次にどのタイル領域について処理を行うかを判断する。この例では有効タイルフラグバッファ１６より、図３における領域１Ｂと領域１Ｆに輪郭線が存在することがわかるため、制御部１９は先ず領域１Ｂについて処理を行うと判断し、曲線分割部１３に再び処理の開始を指示する。その際に制御部１９は、領域１Ｂの部分の描画を行うために、領域１Ｂの左上の座標と輪郭バッファ１５の原点とを対応させるよう曲線分割部１３に指示を出す。即ち、輪郭バッファ１５の大きさが８×８であればベクトルデータの座標（Ｘｍｉｎ＋８，Ｙｍｉｎ）と輪郭バッファ１５の原点とを対応させるよう指示を出す。また、制御部１９は、処理対象の領域１Ｂが横方向で最初のタイル領域ではないことを通知する。更に、制御部１９は、有効タイルフラグバッファ１６の領域１Ｂに対応するビットを“０”にクリアする。
【００３１】
曲線分割部１３は制御部１９から処理の開始を指示されると、再び入力バッファ１２からベクトルデータを順次読み出して処理を行う。図７はこの時の曲線分割部１３の動作を説明するための図である。
曲線分割部１３は、ベクトルデータの座標（Ｘｍｉｎ＋８，Ｙｍｉｎ）を輪郭バッファ１５上の原点（０，０）に対応させるために、入力バッファ１２から読み出したベクトルデータのＸ座標の値から（Ｘｍｉｎ＋８）の値を引き、同様にＹ座標の値からＹｍｉｎの値を引く（図７−ａ）。
【００３２】
次に、輪郭を構成する直線または曲線が完全に処理対象のタイル領域の外側に位置するか否かを判断し、外側に位置すると判断した場合には、その直線または曲線を破棄し、以降の処理を行わないようにする。この時、処理対象の領域１Ｂが横方向で最初のタイル領域ではないため図４の処理とは異なり、対象のタイル領域外に位置する直線・曲線は全て破棄する（図７−ｂ）。
次に、曲線を微小直線へと分割し（図７−ｃ）、曲線から分割された直線について、再びその直線が完全に処理対象のタイル領域の外側に位置するか否かを判断し、外側に位置すると判断した場合には、その直線または曲線を破棄し、以降の処理を行わないようにする。ここでも上記の分割前の処理と同様に、処理対象の領域１Ｂが横方向で最初のタイル領域ではないため、タイル領域外に位置する直線は全て破棄する。また、直線がタイル領域の上下左右の四辺をまたぐ場合にはクリップ処理を行う（図７−ｄ）。
上記の処理を行い、曲線分割部１３は直線のデータを輪郭描画部１４へ出力する。
【００３３】
輪郭描画部１４は曲線分割部１３から入力される直線について、上述した領域１Ａの処理と同様にラスタライズを行い、スキャンラインと直線との交点を求めて輪郭バッファ１５へ描画する。この時、輪郭描画部１４は、処理対象の領域１Ｂが横方向で最初のタイル領域ではないため、領域１Ａの場合とは異なり、有効タイルフラグバッファ１６に対しては書き込みを行わず、輪郭バッファ１５への描画のみを行う。図８は、図３の領域１Ｂにおける輪郭描画部１４の処理が終わった時の輪郭バッファ１５の例を示す図である。
【００３４】
制御部１９は、曲線分割部１３および輪郭描画部１４における処理が終わったことを検知すると、次に画素生成部１８に対して処理を開始するように指示する。その際に制御部１９は、輪郭バッファ１５の原点とフレームバッファ上の座標（Ｘｍｉｎ＋８，Ｙｍｉｎ）とを対応させるよう画素生成部１８に指示を出す。
【００３５】
画素生成部１８は、制御部１９から処理の開始を指示されると、輪郭バッファ１５および補助バッファ１７を参照して描画するピクセルを生成する。画素生成部１８における処理は、生成したピクセルのＸ座標に加算する値を（Ｘｍｉｎ＋８）とする以外は上述した領域１Ａの処理と同様である。この時、図９−ａに示すように、処理開始時の補助バッファ１７には、前回の領域、即ち図３の領域１Ａの右端のピクセルにおける輪郭との交差回数の値が格納されているため、この値を初期値として利用することにより、タイル領域間でピクセルの抜けを発生させることなく正確にピクセルの生成を行うことができる。図９−ｂは、図３の領域１Ｂにおける画素生成部１８のピクセル生成の結果を示す図である。また、図９−ｃは同様に、図３の領域１Ｂにおいて画素生成部１８の動作が終了した時点での補助バッファ１７の内容を示す図である。
【００３６】
以上の処理により図３における領域１Ｂの部分の描画が完了すると、制御部１９は有効タイルフラグバッファ１６を参照して、次にどのタイル領域について処理を行うかを判断する。この例では有効タイルフラグバッファ１６より、図３における領域１Ｆに輪郭線が存在することがわかるため、制御部１９は次に領域１Ｆについて処理を行うと判断し、曲線分割部１３に再び処理の開始を指示する。その際に制御部１９は、領域１Ｆの部分の描画を行うために、領域１Ｆの左上の座標と輪郭バッファ１５の原点とを対応させるよう曲線分割部１３に指示を出す。即ち、（Ｘｍｉｎ＋４０，Ｙｍｉｎ）と輪郭バッファ１５の原点とを対応させるよう指示を出す。また、制御部１９は、処理対象の領域１Ｆが横方向で最初のタイル領域ではないことを通知する。また、制御部１９は、有効タイルフラグバッファの領域１Ｆに対応するビットを“０”にクリアする。
【００３７】
領域１Ｆへの描画は、曲線分割部１３でベクトルデータの座標から減算する値および画素生成部１８で生成したピクセルの座標に加算する値を、（Ｘｍｉｎ＋４０，Ｙｍｉｎ）とする以外は上述した領域１Ａ，１Ｂに対する処理と同様である。
【００３８】
以上の処理により図３における領域１Ｆの描画が完了すると、制御部１９は有効タイルフラグバッファ１６を参照して横方向にはもう処理すべきタイル領域がないと判断し、次に領域２Ａの描画を行うために、領域２Ａの左上の座標と輪郭バッファ１５の原点とを対応させるよう曲線分割部１３に指示を出す。即ち、（Ｘｍｉｎ，Ｙｍｉｎ＋８）と輪郭バッファ１５の原点とを対応させるよう指示を出す。また、制御部１９は、処理対象の領域２Ａが横方向で最初のタイル領域であることを通知する。
【００３９】
領域２Ａへの描画は、曲線分割部１３でベクトルデータの座標から減算する値および画素生成部１８で生成したピクセルの座標に加算する値を、（Ｘｍｉｎ，Ｙｍｉｎ＋８）とする以外は領域１Ａに対する処理と同様であるため、ここでの詳細な説明は省略する。
領域２Ａへの描画が完了すると、制御部１９は有効タイルフラグバッファ１６を参照して、横方向の有効なタイルを判断して再び描画処理を指示する。図３の例では、領域２Ｂ、領域２Ｅ、領域２Ｆの順で描画処理を行う。
以下同様に、横方向の最初のタイル領域の処理の際に、輪郭描画部１４において輪郭線が存在するタイル領域を判断して有効タイルフラグバッファ１６に書き込み、横方向の２回目以降の処理については輪郭線が存在するタイル領域のみ処理を行う。
【００４０】
図１０は、図３の領域５Ａにおける曲線分割部１３の処理を説明する図である。また、図１１は図３の領域５Ａにおける輪郭描画部１４の処理が完了した際の輪郭バッファ１５（図１１−ａ）および有効タイルフラグバッファ１６（図１１−ｂ）の例を示した図である。
制御部１９は、領域５Ａの処理が完了した後は、有効タイルフラグバッファ（図１１−ｂ）を参照して領域５Ｂと領域５Ｅについての描画処理を指示する。
図１２−ａは領域５Ｂへの描画が完了した時点でのフレームバッファの状態を示したものである。この状態で次に領域５Ｅへ描画を行うと、本来描画を行わなくてはならない領域５Ｃおよび５Ｄが描画されないことになる。そこで、画素生成部１８においてピクセルを生成する際に、前回処理を行ったタイル領域よりも横方向に離れた位置のタイル領域について処理を行う場合には、補助バッファ１７の値が“０”以外のスキャンラインについては、処理を省略したタイル領域を塗り潰すようにピクセルを生成することとする。これにより、領域５Ｅの処理が完了した時点で領域５Ｃおよび領域５Ｄも描画が完了することとなる（図１２−ｂ）。
【００４１】
以降は同様に処理を行い、Ｙ座標の最大値（Ｙｍａｘ）を含む横一列のタイル領域の処理が終了すると、制御部１９はベクトル図形の描画が完了したと判断して、入力バッファ１２に保持されている入力データを破棄してベクトル図形描画装置１０は動作を終了する。
【００４２】
以上のように、横方向の最初のタイル領域の処理を行う際に、同時に横方向のどのタイル領域を処理する必要があるかを判断して結果を保持しておき、横方向の２回目以降の処理時にフラグを参照して輪郭線が存在するタイル領域についてのみ輪郭処理を行うことにより、図１３に示すように、無駄なタイル領域についての処理を省き、高速に動作することができる。
【００４３】
尚、以上の説明では、曲線分割部１３および輪郭描画部１４と、画素生成部１８とが交互に動作するように記述したが、輪郭バッファ１５をダブルバッファ構成にすることにより、図３の例では、画素生成部１８が領域１Ａの処理を行っている間に、曲線分割部１３および輪郭描画部１４が領域１Ｂの処理を行う、というように曲線分割部１３および輪郭描画部１４と画素生成部１８を並列に動作させることができる。
【００４４】
また、画素生成部１８において各ピクセルにおける輪郭との交差回数が０以外であれば描画するものとしたが、交差回数が０以外の場合に描画するという処理（ｎｏｎ−ｚｅｒｏルール）と、交差回数が奇数の場合に描画するという処理（ｅｖｅｎ−ｏｄｄルール）を切替えられるようにしても良い。
【００４５】
また、輪郭バッファ１５を、例えば４×４等のサブピクセルの解像度とし、輪郭描画部１４がサブピクセル単位で輪郭の情報を生成して輪郭バッファ１５へ書き込み、画素生成部１８がサブピクセル単位で描画するサブピクセルを生成し、ピクセル毎に有効なサブピクセルの割合から描画する画素の濃度を算出し、既に描画されている画素との間でブレンド処理を行うことによりアンチエイリアス処理を施した図形を描画するようにしても良い。
【００４６】
以上のように、実施の形態１のベクトル図形描画装置によれば、複数のタイル領域で分割した描画領域に、輪郭が数式で定義されたベクトル図形を描画するベクトル図形描画装置において、輪郭の曲線を複数の微小直線へと分割する曲線分割部と、直線とスキャンラインとの交点の情報を求める輪郭描画部と、輪郭描画部で求めた情報を保持する輪郭バッファと、輪郭バッファに保持された情報を読み出して画素を生成する画素生成部と、タイル領域の処理方向においてどのタイル領域が有効かを示すフラグを保持する有効タイルフラグバッファと、曲線分割部と輪郭描画部と画素生成部が、タイル領域単位で処理を行うよう制御すると共に、有効タイルフラグバッファを参照して次にどのタイル領域について処理を行うかを判断する制御部とを備えたので、無駄なタイル領域に対する処理を省くことができ、高速な描画を行うことができる。
【００４７】
また、実施の形態１のベクトル図形描画装置によれば、輪郭描画部は、タイル領域の処理方向における処理開始端のタイル領域について処理を行う際に、これから処理するタイル領域についてどのタイル領域を処理する必要があるかを求め、その結果を有効タイルフラグバッファへ保持しておき、制御部は、次のタイル領域の処理を行う際に、有効タイルフラグバッファを参照して有効なタイル領域のみ処理を行うように制御することにより、無駄なタイル領域を容易に判別することができ、高速な動作を実現することができる。
【００４８】
また、実施の形態１のベクトル図形描画装置によれば、曲線分割部は、タイル領域の処理方向における処理開始端のタイル領域について処理を行う際はタイル領域の処理方向に垂直な方向にのみクリップ処理を行い、次以降のタイル領域について処理を行う際はタイル領域の上下左右についてクリップ処理を行うようにしたので、それぞれのタイル領域の処理を正確に行うことができ、高速かつ正確な描画を行うことができる。
【００４９】
また、実施の形態１のベクトル図形描画装置によれば、タイル領域の処理方向に垂直な方向におけるタイル領域一列分の画素の値を保持する補助バッファを有し、画素生成部は、画素生成処理時に、処理したタイル領域の処理方向先頭の画素における輪郭との交差回数を値として補助バッファへ格納し、次のタイル領域の処理時に補助バッファの値を輪郭との交差回数の初期値として利用するようにしたので、それぞれのタイル領域の画素生成処理を正確に行うことができる。
【００５０】
また、実施の形態１のベクトル図形描画装置によれば、画素生成部は、処理対象とするタイル領域との間に処理対象とはしないタイル領域があり、かつ、補助バッファの値を参照して画素生成の必要がある場合は、処理対象とはしないタイル領域の部分も含めて画素生成を行うようにしたので、処理を行わないタイル領域が存在しても確実に描画することができる。
【００５１】
また、実施の形態１のベクトル図形描画装置によれば、輪郭バッファはサブピクセル単位の解像度で構成され、画素生成部は、画素を生成する際に、有効なサブピクセルの割合から描画する画素の濃度を算出し、すでに描画されている画素との間でブレンド処理を行うことによりアンチエイリアス処理を施した図形を描画するようにしたので、アンチエイリアス処理を施した図形を容易かつ高速に描画することができる。
【図面の簡単な説明】
【００５２】
【図１】この発明の実施の形態１によるベクトル図形描画装置を示す構成図である。
【図２】この発明の実施の形態１によるベクトル図形描画装置のベクトル図形の一例を示す説明図である。
【図３】この発明の実施の形態１によるベクトル図形描画装置のベクトル図形とタイル領域との関係を示す説明図である。
【図４】この発明の実施の形態１によるベクトル図形描画装置の曲線分割部の動作を示す説明図である。
【図５】この発明の実施の形態１によるベクトル図形描画装置の領域１Ａの処理が終わった時の輪郭バッファおよび有効タイルフラグバッファの状態を示す説明図である。
【図６】この発明の実施の形態１によるベクトル図形描画装置の領域１Ａにおけるピクセル生成の結果と補助バッファの描画前と描画後の状態を示す説明図である。
【図７】この発明の実施の形態１によるベクトル図形描画装置の領域１Ｂの曲線分割部の動作を示す説明図である。
【図８】この発明の実施の形態１によるベクトル図形描画装置の領域１Ｂの輪郭描画部の処理が終わった時の輪郭バッファの状態を示す説明図である。
【図９】この発明の実施の形態１によるベクトル図形描画装置の領域１Ｂにおけるピクセル生成の結果と補助バッファの描画前と描画後の状態を示す説明図である。
【図１０】この発明の実施の形態１によるベクトル図形描画装置の領域５Ａの曲線分割部の動作を示す説明図である。
【図１１】この発明の実施の形態１によるベクトル図形描画装置の領域５Ａの処理が終わった時の輪郭バッファおよび有効タイルフラグバッファの状態を示す説明図である。
【図１２】この発明の実施の形態１によるベクトル図形描画装置の間に処理しないタイル領域があった場合のピクセル生成を示す説明図である。
【図１３】この発明の実施の形態１によるベクトル図形描画装置の処理によって省くことのできるタイル領域を示す説明図である。
【符号の説明】
【００５３】
１０  ベクトル図形描画装置、１３  曲線分割部、１４  輪郭描画部、１５  輪郭バッファ、１６  有効タイルフラグバッファ、１７  補助バッファ、１８  画素生成部、１９  制御部。
【図１】
2010146255.tif 000003
【図２】
2010146255.tif 000004
【図３】
2010146255.tif 000005
【図４】
2010146255.tif 000006
【図５】
2010146255.tif 000007
【図６】
2010146255.tif 000008
【図７】
2010146255.tif 000009
【図８】
2010146255.tif 000010
【図９】
2010146255.tif 000011
【図１０】
2010146255.tif 000012
【図１１】
2010146255.tif 000013
【図１２】
2010146255.tif 000014
【図１３】
2010146255.tif 000015