(57)【要約】【課題】２度描画される画素を発生させずに、指定された太線で所望の図形を描画するための描画データを生成することができる描画データ生成方法及びデータプロセッサを提供する。【解決手段】線の太さｎの円Ａの描画データを生成する場合、描画座標生成プログラム（１３Ａ）は、第１の円（２１）を構成する画素のｙ座標の上端ｙＡと下端ｙＢを演算する処理（Ｓ１）と、この上端から下端に向かって、ｙ座標毎に、第１の円を構成する画素のうち最も外側に位置する画素のｘ座標と、第２の円（２２）を構成する画素のうち最も内側に位置する画素のｘ座標と、を対応する水平ライン描画情報バッファ（１１）に登録する処理（Ｓ３、Ｓ５）と、を制御する。画素描画プログラム（１４Ａ）は、登録された２つのｘ座標を１組とし、１組に含まれる一方の座標点から他方の座標点に至る座標点のデータに基づいて、描画データを生成する処理（Ｓ８）を制御する。【選択図】図１
2007286942.tif 000002
【特許請求の範囲】
【請求項１】
第１座標軸と第２座標軸で特定される空間上において指定された線の太さ及び図形のパラメータに基づいて、前記図形の描画データを生成する描画データ生成方法であって、
前記線の太さに応じた前記図形の外側の輪郭図形と内側の輪郭図形を含む領域の前記第１座標軸上における始点と終点を演算する第１処理と、
前記始点から前記終点に向かって、前記第１座標軸上の第１座標点毎に前記外側の輪郭図形と前記内側の輪郭図形の各々の前記第２座標軸上の第２座標点を演算する第２処理と、
前記第１座標点毎に演算された前記第２座標点のうち、前記外側の輪郭図形では最も外側の外側座標点と、前記内側の輪郭図形では最も内側の内側座標点とを選択し、前記外側座標点と前記内側座標点を大きい順又は小さい順に並べ替える第３処理と、
並べ替えられた順で、前記外側座標点と前記内側座標点を１組とし、前記１組に含まれる前記外側座標点から前記内側座標点に至る座標点のデータに基づいて、描画データを生成する第４処理と、を含む描画データ生成方法。
【請求項２】
前記図形に端点が存在するとき、前記外側の輪郭図形に含まれる第１端点と、前記内側の輪郭図形に含まれる第２端点とを結ぶ直線の間の第３座標点を演算する第５処理をさらに含み、
前記第３処理において、前記第２座標点が有する第１座標点と共通の第１座標点を有する前記第３座標点があるとき、前記第３座標点と前記外側座標点又は前記内側座標点を大きい順又は小さい順に並べ替え、
前記第４処理において、前記第３座標点から前記外側座標点又は前記内側座標点に至る座標点のデータに基づいて、描画データを生成する請求項１記載の描画データ生成方法。
【請求項３】
前記図形が円であるとき、前記図形のパラメータは、中心点と半径であり、
前記外側の輪郭図形は、前記中心点を中心とし、前記半径よりも大きい第１の半径を有する第１の円とされ、
前記内側の輪郭図形は、前記中心点を中心とし、前記半径よりも小さく、前記第１の半径との差が前記太さとなる第２の半径を有する第２の円とされる請求項１記載の描画データ生成方法。
【請求項４】
前記半径をｒ、前記太さをｎとしたとき、ｎが奇数であれば、前記第１の半径は、ｒ＋ｎ／２で示される値の整数部分であり、前記第２の半径は、ｒ−ｎ／２で示される値の整数部分であり、
ｎが偶数であれば、前記第１の半径は、ｒ＋ｎ／２−１で示される値であり、前記第２の半径は、ｒ−ｎ／２で示される値である請求項３記載の描画データ生成方法。
【請求項５】
中央処理装置と、前記中央処理装置が実行するプログラムを格納するプログラムメモリと、を有するデータプロセッサであって、
前記プログラムメモリは、第１座標軸と第２座標軸で特定される空間上において指定された線の太さ及び図形のパラメータに基づいて、前記図形の描画データを生成する描画データ生成プログラムを有し、
前記描画データ生成プログラムは、前記線の太さに応じた前記図形の外側の輪郭図形と内側の輪郭図形を含む領域の前記第１座標軸上における始点と終点を演算する第１処理と、
前記始点から前記終点に向かって、前記第１座標軸上の第１座標点毎に前記外側の輪郭図形と前記内側の輪郭図形の各々の前記第２座標軸上の第２座標点を演算する第２処理と、
前記第１座標点毎に演算された前記第２座標点のうち、前記外側の輪郭図形では最も外側の外側座標点と、前記内側の輪郭図形では最も内側の内側座標点とを選択し、前記外側座標点と前記内側座標点を大きい順又は小さい順に並べ替える第３処理と、
並べ替えられた順で、前記外側座標点と前記内側座標点を１組とし、前記１組に含まれる前記外側座標点から前記内側座標点に至る座標点のデータに基づいて、描画データを生成する第４処理と、を制御するデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所望の図形を表示するためにフレームバッファに格納される描画データを生成する方法及びデータプロセッサに関し、例えば指定された線の太さ及び図形のパラメータに基づいて、図形の描画データを生成する描画データ生成方法及びデータプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
２次元グラフィックスの描画技術としては、アルファ・ブレンディング、ラスタオペレーション等の混合処理がある。描画とは、所望の図形を構成する複数の画素の座標点、例えばｘ座標軸とｙ座標軸で特定される空間上での画素の中心座標を算出し、算出された座標点における画素の属性を示すデータ、例えば特定の色等を示すデータを演算し、画素の座標点に基づいてフレームバッファのアクセスアドレスを生成し、そこに色等のデータを書込む処理とされる。特許文献１には、ビットマップディスプレイ装置に供給する画像情報、例えばフレームバッファにパターン描画を行うときに、パターンの輪郭を線の集合として定義するようなデータ構造を持つアウトラインフォントデータに基づく描画効率を向上させることができる描画システム及び描画方法が開示されている。
【０００３】
【特許文献１】特許第２６５９５５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明者は、指定された線の太さ及び図形のパラメータに基づいて、期待する描画結果を得るための図形の描画データを生成する手段について検討した。混合処理では、例えば下地の色を示すデータが格納されたフレームバッファが用意され、図形を構成する画素の座標点における色を示すデータと、この座標点から生成されるアクセスアドレスにおけるフレームバッファの下地の色を示すデータとを画素演算し、演算結果を描画データとして、フレームバッファに書き戻す処理を行う。これは、図形を構成する画素毎に行われる。要するに、全ての画素の描画データがフレームバッファに書き戻されることで、図形全体が描画されることになる。
【０００５】
しかしながら、指定された太さの太線を描画するためには、太さの中心に位置する１つの画素の描画データだけでなく、画素が矩形であれば、この１つの画素の四辺に隣接する４つの画素の描画データも生成しなければならない。このため、混合処理によって画素の描画データを生成し、太線で円を描画する場合、２度演算される座標点が発生してしまう。つまり、円周上に順次太線を描画すると、上記隣接する４つの画素のうち少なくとも１つの画素が２度描画されてしまう。即ち、混合処理では、同一の座標点が算出された場合、前回の画素演算の演算結果であるデータ、即ちフレームバッファの本来の下地の色とは異なっているデータを参照して、同一の座標点における色を示すデータとの画素演算を行い、演算結果を描画データとしてフレームバッファに書き戻す。その結果、２度の画素演算により生成された描画データは、１度の画素演算により生成された描画データと色が異なってしまう。要するに、混合処理を行い、指定された太線で図形を描画するとき、期待した描画結果を得ることが困難であった。
【０００６】
本発明の目的は、２度描画される画素を発生させずに、指定された太線で所望の図形を描画するための描画データを生成することができる描画データ生成方法及びデータプロセッサを提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
〔１〕本発明に係る描画データ生成方法は、第１座標軸（ｘ）と第２座標軸（ｙ）で特定される空間上において指定された線の太さ（ｎ）及び図形のパラメータに基づいて、前記図形の描画データを生成する。描画データ生成方法は、第１処理（Ｓ１）と、第２処理（Ｓ３，Ｓ５）と、第３処理（Ｓ７）と、第４処理（Ｓ８）とを含む。第１処理は、前記線の太さに応じた前記図形の外側の輪郭図形（２１）と内側の輪郭図形（２２）を含む領域の前記第１座標軸上における始点（ｙＡ）と終点（ｙＢ）を演算する。第２処理は、前記始点から前記終点に向かって、前記第１座標軸上の第１座標点（ｙｉ）毎に前記外側の輪郭図形と前記内側の輪郭図形の各々の前記第２座標軸上の第２座標点を演算する。第３処理は、前記第１座標点毎に演算された前記第２座標点のうち、前記外側の輪郭図形では最も外側の外側座標点（ｘ１，ｘ２）と、前記内側の輪郭図形では最も内側の内側座標点（ｘ３，ｘ４）とを選択し、前記外側座標点と前記内側座標点を大きい順又は小さい順に並べ替える。第４処理は、並べ替えられた順で、前記外側座標点と前記内側座標点を１組（（ｘ１，ｘ３）、（ｘ４，ｘ２））とし、前記１組に含まれる前記外側座標点から前記内側座標点に至る座標点のデータに基づいて、描画データを生成する。
【００１０】
上記より、第１座標軸上における始点から終点に向かって、第１座標点毎に外側の輪郭図形の外側座標点と内側の輪郭図形の内側座標点を選択するから、図形の輪郭を構成する画素の座標点のデータを第１座標毎に得ることができる。ここで、座標点のデータとは、例えば図形を構成する画素の座標点と、座標点における画素の属性を示すデータ、即ち特定の色等を示すデータとを含む。図形は指定された線の太さで描画されるので、外側の輪郭図形と内側の輪郭図形の間にも画素が存在する。これらの輪郭図形の間に存在する画素の座標点は、第４処理における１組での外側座標点から内側座標点に至る座標点に含まれる。これにより、第４処理では、図形の輪郭及び内部を構成する画素の座標点のデータに基づいて、第１座標点毎に描画データを生成することになる。このため、アルファ・ブレンディング、ラスタオペレーション等の混合処理による画素演算の結果を、描画データとしてフレームバッファに書き戻す場合、共通の第１座標点を有する複数の画素の座標点のデータは、第４処理において、それぞれ１度しか画素演算されない。言い換えると、２度描画される画素は発生しない。そして、第４処理を行う毎に、第１座標点の値を例えば１つだけインクリメントすれば、始点から終点に至る第１座標点の全てに対して第４処理を行い、図形全体の描画データを生成できる。従って、２度描画される画素を発生させずに、指定された太線で所望の図形を描画することが可能な描画データを生成できる。
【００１１】
本発明の具体的な一つの形態として、前記図形に端点が存在するとき、前記外側の輪郭図形に含まれる第１端点（２３ａ）と、前記内側の輪郭図形に含まれる第２端点（２４ａ）とを結ぶ直線（Ｃ）の間の第３座標点（２５）を演算する第５処理（Ｓ１３）をさらに含む。前記第３処理において、前記第２座標点が有する第１座標点と共通の第１座標点（ｙｄ）を有する前記第３座標点があるとき、前記第３座標点と前記外側座標点又は前記内側座標点を大きい順又は小さい順に並べ替える。前記第４処理において、前記第３座標点から前記外側座標点又は前記内側座標点に至る座標点のデータに基づいて、描画データを生成する。上記より、端点が存在する図形では、第１端点と第２端点を結ぶ直線の間において、外側座標点と内側座標点からなる１組を得られない場合がある。この場合には、第３座標点を算出することにより、第３座標点と外側座標点又は内側座標点からなる１組を得ることができる。このようにすれば、上記直線の第１座標点についても、座標点のデータに基づいて、描画データを生成することができる。このため、端点の存在する図形を描画するための描画データを生成するとき、２度描画される画素が発生しない。また、端点が存在する図形としては、例えば円の一部である円弧や、双曲線、高次曲線等がある。
【００１２】
本発明の具体的な一つの形態として、前記図形が円（Ａ）であるとき、前記図形のパラメータは、中心点（Ｏ）と半径（ｒ）である。前記外側の輪郭図形は、前記中心点を中心とし、前記半径よりも大きい第１の半径を有する第１の円（２１）とされる。前記内側の輪郭図形は、前記中心点を中心とし、前記半径よりも小さく、前記第１の半径との差が前記太さとなる第２の半径を有する第２の円（２２）とされる。上記より、第１座標軸上の始点は、例えば円の上端となり、終点は円の下端となる。円の上端及び下端付近の第１座標点では、第２の円の第２座標点が存在しない場合がある。この場合には、第１の円の一方の外側座標点から他方の外側座標点に至る座標点のデータに基づいて、第１座標点における描画データを生成することになる。また、円の上端及び下端付近以外の第１座標点では、２つの同心円上での外側座標点から内側座標点に至る座標点のデータに基づいて、第１座標点における描画データを生成することになる。これにより、２度描画される画素を発生させずに、指定された太線で円を描画するための描画データを生成できる。また、円とは、画素で描画されるので、数学上の真円とは異なる。しかし、例えば円を構成する画素のサイズが小さく、かつ画素の数が十分に多ければ、例えば液晶ビットマップディスプレイ上では円として認識可能とされる。
【００１３】
本発明の具体的な一つの形態として、前記半径をｒ、前記太さをｎとしたとき、ｎが奇数であれば、前記第１の半径は、ｒ＋ｎ／２で示される値の整数部分であり、前記第２の半径は、ｒ−ｎ／２で示される値の整数部分である。ｎが偶数であれば、前記第１の半径は、ｒ＋ｎ／２−１で示される値であり、前記第２の半径は、ｒ−ｎ／２で示される値である。上記より、画素の集合体である円を描画するためには、半径、太さ共に整数である必要がある。このため、第１の半径と第２の半径を、上記の式で得られる値とし、第１の円の外側座標点から第２の円の内側座標点に至る座標点のデータに基づいて、半径ｒ、太さｎの円を描画するための描画データを生成できる。
【００１４】
〔２〕本発明に係るデータプロセッサは、中央処理装置（２）と、前記中央処理装置が実行するプログラムを格納するプログラムメモリ（１０）と、を有する。前記プログラムメモリは、第１座標軸と第２座標軸で特定される空間上において指定された線の太さ及び図形のパラメータに基づいて、前記図形の描画データを生成する描画データ生成プログラム（１３Ａ，１４Ａ）を有する。前記描画データ生成プログラムは、第１処理と、第２処理と、第３処理と、第４処理とを制御する。第１処理は、前記線の太さに応じた前記図形の外側の輪郭図形と内側の輪郭図形を含む領域の前記第１座標軸上における始点と終点を演算する。第２処理は、前記始点から前記終点に向かって、前記第１座標軸上の第１座標点毎に前記外側の輪郭図形と前記内側の輪郭図形の各々の前記第２座標軸上の第２座標点を演算する。第３処理は、前記第１座標点毎に演算された前記第２座標点のうち、前記外側の輪郭図形では最も外側の外側座標点と、前記内側の輪郭図形では最も内側の内側座標点とを選択し、前記外側座標点と前記内側座標点を大きい順又は小さい順に並べ替える。第４処理は、並べ替えられた順で、前記外側座標点と前記内側座標点を１組とし、前記１組に含まれる前記外側座標点から前記内側座標点に至る座標点のデータに基づいて、描画データを生成する。
【００１５】
上記より、中央処理装置は、上記〔１〕の描画データ生成プログラムを実行することができる。その結果、指定された太線で所望の図形を描画するときに、２度描画する画素を発生させないから、液晶ビットマップディスプレイ等に期待した描画結果を表示できる。
【発明を実施するための最良の形態】
【００１６】
図２には、本発明の実施形態に係るデータプロセッサの一例が示される。データプロセッサ１は、中央処理装置（ＣＰＵ）２と、液晶ディスプレイ用インタフェース回路３（ＬＣＤＩＦ）と、データバス・アドレスバス等のバス制御を行うバスステートコントローラ（ＢＳＣ）４とを有し、それぞれデータバス・アドレスバスからなる内部バス（ＩＢＵＳ）５を介して接続されている。データプロセッサ１は、液晶ディスプレイ用インタフェース回路３を介して、外部バス（ＥＸＢＵＳ）６を経由して液晶ディスプレイ７に接続されている。また、データプロセッサ１は、バスステートコントローラ４を介して、外部メモリバス（ＥＸＭＢＵＳ）８を経由して外部メモリ９に接続されている。外部メモリ９は、例えばプログラム格納部１０、水平ライン描画情報バッファ１１及びフレームバッファ１２を備えている。
【００１７】
プログラム格納部１０には、ＣＰＵ２が実行する各種プログラムが格納され、ここでは一例として、描画座標生成プログラム１３Ａと、画素描画プログラム１４Ａとが示される。水平ライン描画情報バッファ１１は、詳細は後述するが、描画座標生成プログラム１３Ａ及び画素描画プログラム１４Ａを実行するときに用いられるバッファであって、図３に例示されるように、登録点数格納部１５と、座標データ格納部１６〜１９とを有する。
【００１８】
ＣＰＵ２は、不図示の入力装置により指定された線の太さや図形のパラメータに基づいて、描画座標生成プログラム１３Ａ及び画素描画プログラム１４Ａを実行することで、例えば下地の色を示すデータが格納されたフレームバッファ１２を用いて混合処理を行い、この図形の描画データを生成する。描画データは、図形を構成する複数の画素の座標点における色等を示すデータと、この座標点から生成されるアクセスアドレスにおけるフレームバッファ１２の下地の色を示すデータとを画素演算することで生成される。また、説明の便宜上、図形を構成する全ての画素の座標点における色を示すデータは、例えば赤色とする。これにより、画素の座標点における色を示すデータは、専用のフレームバッファではなく、適宜のレジスタに保持させることができる。画素の座標点は、例えばｘ座標軸とｙ座標軸で特定される空間上での画素の中心座標とされる。描画データを生成するための画素演算は、例えばラスタオペレーションによる論理演算やアルファ・ブレンディングによる混合比を用いた色演算等があり、画素毎に行われる。そして、生成された描画データは、フレームバッファ１２のアクセスアドレスに書き戻される。ＣＰＵ２は、フレームバッファ１２に書き戻された描画データを、液晶ディスプレイ用インタフェース回路３、外部バス６を経由して、図示を省略する表示コントローラに出力する。液晶ディスプレイ７は、表示コントローラによる表示タイミングに基づいて図形を表示する。
【００１９】
図１には、本発明の実施形態１に係る描画データ生成方法を示すフローチャートが例示される。実施形態１に係る描画データ生成方法は、例えば描画座標生成プログラム１３Ａ及び画素描画プログラム１４Ａが制御する各処理を含む。ここでは、所望の図形の一例として、太さｎ、中心点Ｏ、半径ｒの円Ａの描画データを生成する場合を示している。この円Ａは、画素の集合体であるので、いわゆる真円ではない。しかし、画素のサイズが小さく、かつ、液晶ディスプレイ７の解像度が大きければ、円として認識可能とされる。また、画素の形状は正方形とする。描画座標生成プログラム１３Ａは、ステップＳ１〜Ｓ７、Ｓ９、Ｓ１０を制御する。また、画素描画プログラム１４Ａは、ステップＳ８を制御する。
【００２０】
まず、ＣＰＵ２は、適宜の入力装置によって、図４に例示されるｘ座標軸とｙ座標軸で特定される空間上において指定された線の太さｎと、図形のパラメータとして指定された、中心点Ｏ、半径ｒに基づいて、第１の円２１を構成するｙ座標の上端ｙＡと下端ｙＢを算出する（Ｓ１）。第１の円２１は、外側の輪郭図形であって、中心点Ｏを中心とし、半径ｒよりも大きい第１の半径を有する。第１の半径は、ｎが奇数であれば、「ｒ＋ｎ／２」で示される値の整数部分であり、ｎが偶数であれば、「ｒ＋ｎ／２−１」で示される値である。ここでは、円Ａの半径ｒは、中心点Ｏから点Ｐまでの距離とされる。また、太さｎは、点Ｐを含む画素と、この画素と共通のｙ座標を有する隣接する画素とからなる。つまり、円Ａの太さｎは、３つの画素からなるので、画素の一辺を「１」とすれば、「３」となる。この上端ｙＡと下端ｙＢの値は、中心点Ｏの座標を（ｘＯ，ｙＯ）とすれば、それぞれ第１の円２１の半径だけｙＯから減算又は加算した値となる。要するに、円Ａに含まれる画素のｙ座標をｙｉとすると、ｙＡ≦ｙｉ≦ｙＢとされる。そして、ｙＡを適宜のレジスタにｙｉの初期値として保持させ、同じく、ｙＢをｙｉの上限値として保持させる。
【００２１】
次に、ＣＰＵ２は、水平ライン描画情報バッファ１１を、上端ｙＡから下端ｙＢの各水平ライン、即ちｘ座標軸に平行なラインに対応する分だけ確保する（Ｓ２）。ここで、確保される水平ライン描画情報バッファ１１の数は、「ｙＢ−ｙＡ＋１」となる。そして、ＣＰＵ２は、ｙｉでの第１の円２１を構成する画素のうち、最も外側に位置する画素のｘ座標を、水平ライン描画情報バッファ１１に登録する（Ｓ３）。このとき、第１の円２１を構成する画素の座標は、円描画アルゴリズムとして知られているミッチェナーアルゴリズムを用いて算出される。ミッチェナーアルゴリズムでは、ｘ座標が中心点Ｏと共通であり上端ｙＡを含む画素を始点とし、次に描画する画素として、中心点Ｏからの角度が４５〜９０度に位置する画素のうち数学上の真円に近い画素を特定する演算を行う。そして、０〜４５度、９０〜３６０度での画素は、円Ａの対称性を用いることで演算可能とされる。要するに、ステップＳ３では、ｙｉの初期値であるｙＡをレジスタから読み出し、図４に示すように、ｙＡにおいてｘ座標ｘ３〜ｘ４の間に含まれる５つの画素をミッチェナーアルゴリズムで算出することになるが、そのうち最も外側に位置する画素のｘ座標は、中心点Ｏのｘ座標からの距離が最も大きいｘ３、ｘ４となる。このため、ＣＰＵ２は、ｙＡに対応する水平ライン描画情報バッファ１１の座標データ格納部１６，１７に、それぞれｘ３、ｘ４を登録する。
【００２２】
次に、ＣＰＵ２は、ｙＡに対応する水平ライン描画情報バッファ１１の登録点数格納部１５に、ステップＳ３で登録されたｘ座標の数を登録する（Ｓ４）。ここでは、ステップＳ３でｘ３、ｘ４が登録されているから、登録点数には「２」が登録される。そして、ＣＰＵ２は、中心点Ｏ、半径ｒに基づいて、ｙｉでの第２の円２２を構成する画素のうち、最も内側に位置する画素のｘ座標、即ち中心点Ｏのｘ座標からの距離が最も小さいｘ座標を、水平ライン描画情報バッファ１１に登録する（Ｓ５）。第２の円２２は、内側の輪郭図形であって、中心点Ｏを中心とし、半径ｒよりも小さい第２の半径を有する。第２の半径は、ｎが奇数であれば、「ｒ−ｎ／２」で示される値の整数部分であり、ｎが偶数であれば、「ｒ−ｎ／２」で示される値である。ｙｉでの第２の円２２を構成する画素の座標は、上記ミッチェナーアルゴリズムで演算可能である。ステップＳ５では、まず、ｙＡを初期値とするが、図４に示すように、ｙＡには第２の円２２を構成する画素が存在しない。
【００２３】
次に、ＣＰＵ２は、ｙＡに対応する水平ライン描画情報バッファ１１の登録点数格納部１５に、ステップＳ５で登録されたｘ座標の数を登録する（Ｓ６）。しかし、ｙＡにおけるステップＳ５では、ｘ座標が登録されていないから、登録点数は「２」のままである。そして、ＣＰＵ２は、ｙＡに対応する水平ライン描画情報バッファ１１に登録されたｘ座標を昇順に並べ替える（Ｓ７）。これは、ｙｉでの水平ライン描画情報バッファ１１の例えば座標データ格納部１６〜１９には、ｘ座標がステップＳ３，Ｓ６での登録順で登録されるからである。
【００２４】
そして、ＣＰＵ２は、画素描画プログラム１４Ａを実行し、ステップＳ７で並べ替えられたｘ座標を、２つずつ参照して１組とし、この１組に含まれる一方のｘ座標から他方のｘ座標に至る座標点のデータに基づいて、この座標点毎に混合処理を行いながら、描画データを生成し、水平ラインを描画する（Ｓ８）。ここで、座標点のデータとは、例えば画素の中心座標とされる座標点だけでなく、座標点における画素の属性を示すデータ、即ち特定の色等を示すデータをも含む。ステップＳ８では、ｙ座標がｙＡである場合、ｘ３からｘ４に至る座標点、即ちｙＡにおける円Ａの輪郭及び内部を構成する画素の座標点毎の描画データが生成されることになる。このとき、混合処理による画素演算の結果を、描画データとしてフレームバッファ１２に書き戻す処理を行うが、ｙＡを有するｘ３からｘ４に至る複数の画素の座標点における色を示すデータは、それぞれ１度しか画素演算されない。要するに、ｙＡにおける水平ラインを描画するときに、２度描画される画素は発生しない。
【００２５】
ここで、ｙ座標がｙＣである場合について説明する。ｙＣでは、ステップＳ３でｙＣに対応する水平ライン描画情報バッファ１１の座標データ格納部１６，１７に登録されるｘ座標は、図４に示すように、第１の円２１の最も外側に位置するｘ１，ｘ２となる。そして、ステップＳ４では、登録点数格納部１５に「２」が加算される。ステップＳ５では、第２の円２２の最も内側に位置するｘ３，ｘ４が、座標データ格納部１８，１９に登録される。これにより、ステップＳ６で登録点数格納部１５に「２」が加算されることで、登録点数は「４」となる。そして、ステップＳ７により、ｙＣに対応する水平ライン描画情報バッファ１１には、座標データ格納部１６〜１９に、昇順にｘ１，ｘ３，ｘ４，ｘ２が格納される。ステップＳ８では、並べられた順で、ｘ１，ｘ３を１組、ｘ４，ｘ２を１組とし、それぞれｘ１からｘ３に至る座標点のデータと、ｘ４からｘ２に至る座標点のデータとに基づいて、この座標点毎に混合処理を行いながら、描画データを生成し、水平ラインを描画する。このとき、ｙＣを有するｘ１からｘ３、そしてｘ４からｘ２に至る複数の画素の座標点における色を示すデータは、それぞれ１度しか画素演算されない。
【００２６】
次に、ＣＰＵ２は、ｙｉを１つインクリメントして（Ｓ９）、ｙｉが上限値である下端ｙＢであるか否かを判定する（Ｓ１０）。ステップＳ１０において、ｙｉがｙＢでなければ、再びステップＳ３に戻って、上記ステップＳ１０までの処理を繰り返す。要するに、始点から終点に至るｙｉの全てに対してステップＳ８での水平ラインの描画を行うから、２度描画される画素を発生させずに、指定された太さｎ、半径ｒの円Ａを描画することが可能な描画データを生成できる。従って、円Ａを構成する全ての画素は、１度しか描画されないので、画素の座標点における色のデータが上記したように赤色であり、例えばフレームバッファ１２の下地の色が青色であれば、画素演算により生成された描画データが示す色は、全て紫色となる。これにより、ＣＰＵ２は、描画座標生成プログラム１３Ａ及び画素描画プログラム１４Ａを実行することにより、液晶ディスプレイ７に期待する描画結果を表示させることができる。
【００２７】
図５には、本発明の実施形態２に係る描画データ生成方法を示すフローチャートが例示される。実施形態２に係る描画データ生成方法は、例えば描画座標生成プログラム１３Ｂ及び画素描画プログラム１４Ｂが制御する各処理を含む。ここでは、所望の図形の一例として、太さｎ、半径ｒの円の一部である円弧Ｂの描画データを生成する場合を示している。この円弧Ｂは、円の一部であるので端点を有する。円弧Ｂは、外側の輪郭図形とされ、端点２３ａ，２３ｂを有する第１の円弧２３を構成する画素と、内側の輪郭図形とされ、端点２４ａ，２４ｂを有する第２の円弧２４を構成する画素と、第１の円弧２３と第２の円弧２４の間に存在する画素とからなる。例えば、実施形態１における描画座標生成プログラム１３Ａ及び画素描画プログラム１４ＡをＣＰＵ２が実行して、ｙ座標のｙｉ毎に、ｙｉを有する円弧Ｂを構成する画素に基づいて、水平ラインを描画しようとしても、水平ライン描画情報バッファ１１にｘ座標が１つだけしか登録されない場合がある。
【００２８】
即ち、図６に例示される第１の円弧２３の端点２３ａと第２の円弧２４の端点２４ａとを結ぶ直線Ｃに含まれ、ｙ座標がｙｄである画素２５は、第１の円弧２３を構成する画素でもなく、第２の円弧２４を構成する画素でもない。しかし、この画素２５は、円弧Ｂを構成する画素である。ここで、描画座標生成プログラム１３ＡをＣＰＵ２が実行した場合、ｙｄに対応する水平ライン描画情報バッファ１１には、第１の円弧２３の最も外側に位置する画素の座標点が１つしか登録されない。従って、ｙｄにおいては上記したステップＳ８の処理を実行できないことになる。このため、実施形態１の描画データ生成方法では、円弧Ｂの描画データを完全には生成できない。
【００２９】
これに対して、描画座標生成プログラム１３Ｂでは、上記直線Ｃに含まれる全ての画素のｘ座標をｙｉ毎に算出して、このｘ座標を対応する水平ライン描画情報バッファ１１に登録する処理、即ち後述のステップＳ１３の処理を含む。この処理によって、ｙｄに対応する水平ライン描画情報バッファ１１には、画素２５と第１の円弧２３の最も外側に位置する画素からなる１組とが登録される。このため、ＣＰＵ２は、画素描画プログラム１４Ｂが制御する後述のステップＳ２０の処理を実行できる。以下、具体的に説明する。
【００３０】
まず、ＣＰＵ２は、図６に例示されるｘ座標軸とｙ座標軸で特定される空間上において指定された線の太さｎと、図形のパラメータとして指定された、図示を省略する中心点、半径ｒ、中心角α等に基づいて、第１の円弧２３を構成するｙ座標の上端ｙａと下端ｙｂを算出する（Ｓ１１）。第１の円弧２３は、上記した第１の円２１と比べて、中心角αが例えば９０度であって、端点２３ａ，２３ｂを有する点が異なるが、その半径は上記第１の半径の値と同様である。次に、ＣＰＵ２は、水平ライン描画情報バッファ１１を、上端ｙａから下端ｙｂの各水平ラインに対応する分だけ確保する（Ｓ１２）。
【００３１】
そして、ＣＰＵ２は、上記したように、第１の円弧２３の端点２３ａ，２３ｂと、第２の円弧２４の端点２４ａ，２４ｂとを結ぶ直線Ｃ，Ｄを構成する画素のｘ座標を算出し、水平ライン描画情報バッファ１１に登録する（Ｓ１３）。即ち、ステップＳ１３では、直線Ｃについては、ｙａ，ｙｄ，ｙｅに対応する水平ライン描画情報バッファ１１の座標データ格納部１６に、端点２３ａを含む画素、上記画素２５、端点２４ａを含む画素のそれぞれのｘ座標が登録される。また、直線Ｄについては、ｙｂに対応する水平ライン描画情報バッファ１１の座標データ格納部１６，１７，１８に、端点２３ｂを含む画素、画素２６、端点２４ｂを含む画素のそれぞれのｘ座標が登録される。
【００３２】
次に、ＣＰＵ２は、対応する水平ライン描画情報バッファ１１の登録点数格納部１５に、登録したｘ座標の数を登録する（Ｓ１４）。ここでは、ｙａ，ｙｄ，ｙｅに対応する水平ライン描画情報バッファ１１の登録点数格納部１５に、それぞれ「１」が登録される。さらに、ｙｂに対応する水平ライン描画情報バッファ１１の登録点数格納部１５に、「３」が登録される。そして、ＣＰＵ２は、ｙｉでの第１の円弧２３を構成する画素のうち、最も外側に位置する画素のｘ座標を、水平ライン描画情報バッファ１１に登録し（Ｓ１５）、その登録数を登録点数格納部１５に登録する（Ｓ１６）。例えばｙ座標がｙｃであれば、ｙｃに対応する水平ライン描画情報バッファ１１の座標データ格納部１６にｘ４が格納され、登録点数格納部１５に「１」が登録される。
【００３３】
次に、ＣＰＵ２は、ｙｉでの第２の円弧２４を構成する画素のうち、最も内側に位置する画素のｘ座標を、水平ライン描画情報バッファ１１に登録し（Ｓ１７）、その登録数を登録点数格納部１５に登録する（Ｓ１８）。例えばｙｃであれば、ｙｃに対応する水平ライン描画情報バッファ１１の座標データ格納部１７にｘ３が格納され、登録点数格納部１５に「２」が登録される。さらに、ＣＰＵ２は、ｙ座標に対応する水平ライン描画情報バッファ１１に登録されたｘ座標を昇順に並べ替える（Ｓ１９）。
【００３４】
そして、ＣＰＵ２は、画素描画プログラム１４Ｂを実行し、並べ替えられたｘ座標を２つずつ参照して１組とし、この１組に含まれる一方のｘ座標を始点とし、他方のｘ座標を終点として、始点から終点に至る座標点のデータに基づいて、この座標点毎に混合処理を行いながら、描画データを生成し、水平ラインを描画する（Ｓ２０）。例えばｙｃでは、ｘ３からｘ４に至る座標点毎の描画データが生成されることになる。特に、ｙｄに対応する水平ライン描画情報バッファ１１には、ステップＳ１３で画素２５のｘ座標が登録され、ステップＳ１５で第１の円弧２３を構成する画素のうち、最も外側に位置する画素のｘ座標が登録されている。このため、ステップＳ２０によれば、ＣＰＵ２は、ｙｄにおける円弧Ｂの輪郭及び内部を構成する画素の座標点毎の描画データを生成できる。要するに、ｙｄにおける水平ラインを描画するとき、２度描画される画素は発生しない。
【００３５】
さらに、ＣＰＵ２は、ｙｉを１つインクリメントして（Ｓ２１）、ｙｉが下端ｙｂであるか否かを判定する（Ｓ２２）。ＣＰＵ２は、ｙｉがｙｂでなければ、再びステップＳ１５に戻って、上記ステップＳ２２までの処理を繰り返す。要するに、始点から終点に至るｙｉの全てに対してステップＳ２０での水平ラインの描画を行うから、２度描画される画素を発生させずに、指定された太さｎ、半径ｒの円の一部である円弧Ｂの描画データを生成できる。これにより、ＣＰＵ２は、描画座標生成プログラム１３Ｂ及び画素描画プログラム１４Ｂを実行することにより、液晶ディスプレイ７に期待する描画結果を表示させることができる。
【００３６】
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００３７】
例えば、ＣＰＵ２は、円Ａや円弧Ｂの描画データを生成するときに、ステップＳ８，Ｓ２０を実行した後、ｙ座標を１つだけインクリメントして、ｙ座標の上端から下端に向かって上記各処理を実行したが、これに限定されない。即ち、円Ａや円弧Ｂには対称性があるから、例えば円Ａでｙ座標の上端ｙＡから下端ｙＢまで必ずしも演算する必要はなく、上端ｙＡから中心点Ｏのｙ座標まで演算し、残りの座標点については対称性を利用して演算するようにしてもよい。このようにすれば、ステップＳ１において下端ｙＢを算出する必要がなく、さらに、ステップＳ２で確保される水平ライン描画情報バッファ１１の数は略半分で済むことになる。また、端点の存在する図形としては、円弧Ｂに限らず、双曲線、高次曲線等であってもよい。このような場合であっても、端点同士を結ぶ直線に含まれる画素の座標点のデータを算出して、水平ライン描画情報バッファ１１に格納すればよい。これにより、水平ライン描画情報バッファ１１には、直線に含まれる画素のｘ座標と、例えば外側の輪郭図形を構成する画素のうち最も外側に位置する画素のｘ座標、又は内側の輪郭図形を構成する画素のうち最も内側に位置する画素のｘ座標とが登録される。そして、ＣＰＵ２は、登録された２つのｘ座標を１組とし、１組に含まれる一方の座標点から他方の座標点に至る座標点のデータに基づいて、描画データを生成できる。また、ｘ座標軸、ｙ座標軸とは、図形が存在する空間を特定するための適宜の座標軸であって、限定されるものではない。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施形態１に係る描画データ生成方法を例示するフローチャートである。
【図２】本発明の実施形態に係るデータプロセッサ１を例示する説明図である。
【図３】水平ライン描画情報バッファの概略構成を例示する説明図である。
【図４】円を構成する第１の円と第２の円に含まれる画素の位置を例示する説明図である。
【図５】本発明の実施形態２に係る描画データ生成方法を例示するフローチャートである。
【図６】円弧を構成する第１の円弧と第２の円弧に含まれる画素の位置を例示する説明図である。
【符号の説明】
【００３９】
１  データプロセッサ
２  中央処理装置（ＣＰＵ）
３  液晶ディスプレイ用インタフェース回路（ＬＣＤＩＦ）
６  バスステートコントローラ（ＢＳＣ）
７  液晶ディスプレイ（ＬＣＤ）
９  外部メモリ
１０  プログラム格納部
１１  水平ライン描画情報バッファ
１２  フレームバッファ
１３Ａ，１３Ｂ  描画座標生成プログラム
１４Ａ，１４Ｂ  画素描画プログラム
１５  登録点数格納部
１６〜１９  座標データ格納部
２１  第１の円
２２  第２の円
２３  第１の円弧
２４  第２の円弧
２３ａ，２３ｂ，２４ａ，２４ｂ  端点
Ａ  円
Ｂ  円弧
【図１】
2007286942.tif 000003
【図２】
2007286942.tif 000004
【図３】
2007286942.tif 000005
【図４】
2007286942.tif 000006
【図５】
2007286942.tif 000007
【図６】
2007286942.tif 000008