(57)【特許請求の範囲】
【請求項１】
基準始点位置と線幅を有する線描画コマンドを供給され，
当該線描画コマンドに対応して描画する線の第１の軸に対する傾きに応じて隣接する複数の単位幅線の始点位置を求め，
当該複数の始点位置に基づいて隣接する複数の単位幅線のビットマップデータを繰り返し生成して，線端が直角形状の線を描画する線描画装置であって,
前記第１の軸は, 前記描画する線との角度が第２の軸との角度より小さい軸であり，
前記傾きは, 第１の軸の単位長さの増加に対する第２の軸方向の変位ｄｘであり, 
前記複数の始点位置は，前記基準始点位置から前記第１の軸方向および前記第２の軸方向に，夫々，式−ｄｘで求められる第１のずれ量および式１−ｄｘ＊ｄｘで求められる第２のずれ量ずつ，ずれた位置にあることを
特徴とする線描画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，描画コマンドを処理して線を描画する線描画装置に関し，特に，両線端が直角形状になる線を高速処理により描画することができる線描画装置に関する。
【背景技術】
【０００２】
携帯電話やカーナビゲーション装置などにおいて，電子化された図形や地図データを描画する描画コマンドを処理して画像を描画する描画装置が内蔵される。一般に普及しているオープンＧＬ（OPEN-GL）の描画コマンドは，線の描画コマンドとして始点座標，終点座標（または傾きと線長），線幅，カラー情報，テクスチャ情報，始点終点間変化率（直線か曲線かを示すパラメータ）などのパラメータ情報を有する。そして，かかる描画コマンドに応答して，描画装置は始点座標と終点座標を結ぶ線を線幅に対応するピクセル分描画する。
【０００３】
図１は，従来の描画装置により描画された直線と破線の例を示す図である。図１（Ａ）にはＹ軸方向に延びる直線１０，１２と破線１４が示され，図１（Ｂ）にはＸ軸方向に延びる直線１６，１８と破線２０が示されている。Ｙ軸方向に延びる線とは，直線や破線とＹ軸との角度のほうがＸ軸との角度よりも小さい場合であり，Ｙ軸が主軸，Ｘ軸が副軸となる。逆に，Ｘ軸方向に延びるとは，Ｘ軸との角度のほうがＹ軸との角度よりも小さい場合であり，Ｘ軸が主軸，Ｙ軸が副軸となる。
【０００４】
図１に示されるとおり，オープンＧＬの描画方式によれば，直線を所定の線幅で描画する場合は，複数の単位幅の直線を副軸方向にずらして繰り返し描画することで処理される。また，破線を所定の線幅で描画する場合は，複数の破線を副軸方向にずらして繰り返し描画することで処理される。例えば，線幅＝３と指定された場合は，副軸方向に３ピクセル分繰り返して線が描画される。その結果，図１に示されるとおり，線端の形状が直角にならず平行四辺形になってしまう。なお，破線を描画する場合は，破線用参照レジスタに背景色（１４Ｂ，２０Ｂの位置）と前景色（１４Ａ，２０Ａの位置）の位置を設定しておき，その参照レジスタを参照しながらレンダリングすることが行われる。
【０００５】
図２は，線端の形状が直角の直線と破線の例を示す図である。図２（Ａ）にはＹ軸方向に延びる直線３０，３２と破線３４が示され，図２（Ｂ）にはＸ軸方向に延びる直線３６，３８と破線４０が示されている。いずれも線の両端（線端）の形状が線が延びる方向に対して直角になっている。
【０００６】
前述したオープンＧＬの描画方式によれば，所定の線幅の線を描画する場合，線幅分のピクセルだけずらしながら線描画を繰り返す。したがって，図２のような線端が直角形状になる所定の線幅の線を描画するためには，矩形描画コマンドを利用するしかない。矩形描画コマンドに対して，描画装置は，矩形を２つの三角形のポリゴンに分割し，その２つのポリゴンをレンダリング処理（塗りつぶし処理）する。また，破線３４，４０の場合は，前景色の部分３４Ａ，４０Ａと背景色の部分３４Ｂ，４０Ｂとに対応する複数の矩形の描画コマンドにより描画される。かかる矩形のレンダリングについては，例えば特許文献１に記載されている。
【特許文献１】特開平１０−６３８６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図２に示される線端が直角形状の直線や破線を描画するためには，矩形の描画コマンドを利用しなければならない。そのため，特に破線を描画するためには，多数の矩形の描画コマンドが必要になり，描画処理の工数が増大し描画時間が長くなるという課題を有する。
【０００８】
そこで，本発明の目的は，線端が直角形状である傾いた線を短い描画時間で描画可能にする描画装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために，本発明の第１の側面によれば，始点位置と線幅を有する線描画コマンドを供給され，当該線描画コマンドに対応して線端が直角形状の線を描画する線描画装置において，当該線描画コマンドが描画する線の傾きに応じて隣接する複数の単位幅線の始点位置を求め，当該複数の始点位置に基づいて隣接する複数の単位幅線のビットマップデータを繰り返し生成することを特徴とする。
【００１０】
上記の第１の側面によれば，線端が直角形状の線を描画する描画コマンドに対して，矩形をレンダリングする描画処理ではなく，隣接する複数の単位幅線のビットマップデータを生成する処理を繰り返す描画処理を行うことができる。したがって，特に破線の描画処理を多数の矩形レンダリング処理ではなく複数の単位幅破線描画処理により行うことができ，描画処理時間を短縮することができる。
【００１１】
上記の第１の側面において，前記線の傾きは，当該描画すべき線と主軸との角度であり，前記隣接する複数の単位幅線の始点位置は，線描画コマンドに含まれる基準始点位置から前記角度に応じてずれた位置にあることを特徴とする。このように，オープンＧＬの線の描画コマンドの描画処理において利用される線の主軸との角度を利用して，隣接する複数の単位幅線の始点位置を生成することで，オープンＧＬの線描画処理によって所定幅の線を描画することができる。これにより描画処理時間を短縮することができる。
【発明を実施するための最良の形態】
【００１２】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１３】
図３は，本実施の形態における所定の線幅の直線，破線の描画を説明する図である。図３（Ａ）はＹ軸を主軸とする線幅Ｗの線１４の描画方法を示し，図３（Ｂ）はＸ軸を主軸とする線幅Ｗの線２０の描画方法を示す。図３（Ａ）の線１４は，基準始点（ｘ０，ｙ０），線幅Ｗ，主軸Ｙに対して角度ｄｘで傾いている。この角度ｄｘは，主軸Ｙの単位長さの増加に対する副軸Ｘ方向の変位ｄｘを意味する。そして，線１４の線端を線方向に対して直角形状にすると線端１４Ａは，副軸Ｘに対して角度ｄｙの傾きを有し，この角度ｄｙは角度ｄｘと等しくなる。
【００１４】
本実施の形態では，線幅Ｗの線を描画するために，基準始点（ｘ０，ｙ０）に対する単位幅の線１４０と，それに隣接する始点（ｘ１，ｙ１），（ｘ２，ｙ２）〜（ｘｎ，ｙｎ）に対する単位幅の線１４１，１４２〜１４ｎとを繰り返して描画する。つまり，基準始点（ｘ０，ｙ０）に対する線１４０に対して，始点位置が角度ｄｘに対応してずれている複数の単位幅線１４１，１４２〜１４ｎを繰り返し描画することで，線幅Ｗの線１４を描画する。これらの複数の単位幅線は，図１の描画と同様に１ピクセルずつずれている。
【００１５】
そのために，描画装置は，基準始点（ｘ０，ｙ０）と角度ｄｙとに基づき，隣接の単位幅線の始点（ｘ１，ｙ１），（ｘ２，ｙ２）〜（ｘｎ，ｙｎ）を求め，その求めた始点に対してそれぞれ単位幅線１４１，１４２〜１４ｎを繰り返して描画する。この単位幅線の描画回路は，従来のオープンＧＬのコマンドに対して用いられている行が回路を利用できる。この方法によれば，矩形図形の描画のようなポリゴンへの分解と各ポリゴンのレンダリング処理を伴わないので，簡単に処理することができる。
【００１６】
図３（Ｂ）の主軸をＸ軸とする線２０の場合も同様である。つまり，基準始点（ｘ０，ｙ０）と主軸Ｘに対する角度ｄｙに基づいて，隣接する単位幅線２０１，２０２〜２０ｎの始点（ｘ１，ｙ１），（ｘ２，ｙ２）〜（ｘｎ，ｙｎ）を求め，その求めた始点に対してそれぞれ単位幅線２０１，２０２〜２０ｎを繰り返して描画する。
【００１７】
図４は，図３の線描画をピクセル単位で示す図である。図４（Ａ）はＹ軸を主軸とする線幅Ｗの破線１４の描画方法に対応し，図４（Ｂ）はＸ軸を主軸とする線幅Ｗの破線２０の描画方法に対応する。図４（Ａ）に示すとおり，基準始点（ｘ０，ｙ０）に対して黒ピクセルと白ピクセルとを繰り返す単位幅破線１４０が描画され，それに隣接して始点（ｘ１，ｙ１）に対して黒ピクセルと白ピクセルとを繰り返す単位幅破線１４１が描画され，それに隣接して始点（ｘ２，ｙ２）に対して同様の単位幅破線１４２が描画され，それを繰り返して最後に始点（ｘｎ，ｙｎ）に対して同様の単位幅破線１４ｎが描画される。
【００１８】
同様に，図４（Ｂ）に示すとおり，基準始点（ｘ０，ｙ０）に対して黒ピクセルと白ピクセルとを繰り返す単位幅破線２００が描画され，それに隣接して始点（ｘ１，ｙ１）に対して黒ピクセルと白ピクセルとを繰り返す単位幅破線２０１が描画され，それを繰り返して最後に始点（ｘｎ，ｙｎ）に対して同様の単位幅破線２０ｎが描画される。
【００１９】
単位幅破線の描画時には，破線の模様を特定するために背景色か前景色かを示す破線参照レジスタが参照される。つまり，単位幅破線の描画において，始点から傾きｄｘまたはｄｙの位置に次々とビットマップデータを生成することになるが，そのビットマップデータに線の色（前景色）と紙の色（背景色）を指定するのが破線参照レジスタである。この参照レジスタを参照することで，ビットマップデータの色データを生成することになる。
【００２０】
図５は，本実施の形態の線描画における始点位置の生成方法を示す図である。ここでは，線幅Ｗ＝２の破線１４の描画を例にしている。基準始点Ａ０（ｘ０，ｙ０）は，破線１４の左端位置にあり主軸であるＹ軸に対して角度ｄｘで傾いている。前述したとおり，この破線１４を描画する場合，基準始点Ａ０（ｘ０，ｙ０）に対する単位幅破線１４０とそれに隣接して始点Ａ５（ｘ１，ｙ１）に対する単位幅破線１４１とを描画する。この場合において，隣接する単位幅破線１４１の始点Ａ５の位置の求め方を説明する。
【００２１】
破線１４１の線端１４Ａは，副軸Ｘに対して角度ｄｘで交わる。そして，図５に示されるとおり，Ｙ＝１，Ｘ＝０を頂点とする三角形Ａ０Ａ１Ａ２と，Ｘ＝１，Ｙ＝０を頂点とする三角形Ａ０Ａ３Ａ４とは合同の関係にある。したがって，辺Ａ３Ａ４の長さはｄｘになる。一方，Ｘ＝１，Ｙ＝０の点Ａ３を通過する隣接線１４１の始点は，点Ａ５（ｘ１，ｙ１）になる。この場合，三角形Ａ０Ａ６Ａ５は，三角形Ａ０Ａ１Ａ２と相似関係にある。以上の関係をもとにすれば，始点Ａ５の座標（ｘ１，ｙ１）を正確に計算することができる。
【００２２】
ただし，本実施の形態の後述する描画回路では，描画計算を簡単にするために，辺Ａ５Ａ６の長さを辺Ａ４Ａ３の長さと同等と見なしている。その結果，Ａ５Ａ６＝ｄｘ，Ａ６Ａ３＝ｄｘ＊ｄｘとなり，結局始点Ａ５の座標値は，
（ｘ１，ｙ１）＝（ｘ０＋１−ｄｘ＊ｄｘ，ｙ０−ｄｘ）
と角度ｄｘに基づく簡単な計算式で求められる。
【００２３】
このような簡易計算式を利用することで，基準始点（ｘ０，ｙ０）と角度ｄｘに基づいて隣接する単位幅線の各始点位置を全て求めることができる。それら始点位置が求められれば，従来からオープンＧＬで利用されてきた破線参照レジスタを参照する線描画回路により複数の単位幅破線を描画することができる。つまり，矩形を構成するポリゴンのレンダリング処理（塗りつぶし処理）を経ることなく，線端が直角形状の線，破線を高速に描画することができる。
【００２４】
図６は，描画コマンドの描画対象となる線の基準点の種類を示す図である。図６（Ａ）は主軸をＹ軸とする線で左側と右側に傾いている例を示し，図６（Ｂ）は主軸をＸ軸とする線で上側と下側に傾いている例を示す。描画コマンドに含まれる開始点である基準点には，図６（Ａ）の主軸をＹ軸とする線の場合は，その線幅に対して左端位置，中央位置，右端位置に分類される。一方，基準点には，図６（Ｂ）の主軸をＸ軸とする線の場合は，その線幅に対して上端位置，中央位置，下端位置に分類される。
【００２５】
図６（Ａ）に示される主軸をＹ軸とする場合において，図５に示した破線１４の例は，左端基準点の例である。左端基準点の場合は，その基準点を基準始点（ｘ０，ｙ０）としてその右側の隣接する始点を求め，それらを始点とする単位幅線を描画する。同様に，中心基準点の場合は，その基準点を基準始点として両側に隣接する始点を求め，それらを始点とする単位幅線を描画する。また，右端基準点の場合は，その基準点を基準始点として左側の隣接する始点を求め，それらを始点とする単位幅線を描画する。隣接する始点の位置の求め方は，図５に示した通りである。
【００２６】
図６（Ｂ）に示される主軸をＸ軸とする場合において，上端基準点の場合は，その基準点を基準始点（ｘ０，ｙ０）としてその下側の隣接する始点を求め，それらを始点とする単位幅線を描画する。同様に，中心基準点の場合は，その基準点を基準始点としてその上下両側に隣接する始点を求め，それらを始点とする単位幅線を描画する。また，下端基準点の場合は，その基準点を基準始点として上側の隣接する始点を求め，それらを始点とする単位幅線を描画する。以上の通り，描画コマンドに含まれる基準位置が左端，中央，右端，上端，中央，下端のいずれかに応じて，隣接する始点の位置が求められる。
【００２７】
図７は，本実施の形態の描画装置を含む描画システムの全体構成図である。描画システムは，地図や所定の画像の画像データ５０に対応して描画コマンドを生成する描画プログラム５２と，その描画プログラムからの描画コマンドに基づいて画素毎のビットマップデータを生成する描画装置５４とからなる。描画装置５４が生成したビットマップデータは内蔵されるフレームバッファに格納され，表示パネル５６に表示される。
【００２８】
描画プログラム５２は図示しないマイクロプロセッサにより実行され，描画コマンドを生成する。線または破線の描画コマンドは，始点（ｘ０，ｙ０）と主軸との角度ｄｘと線幅Ｗと線長Ｌと色情報ＣＯＬとテクスチャ情報ＴＥＸなどのパラメータを含むコマンドである。これらのパラメータに基づき，描画装置５４は，線または破線のビットマップデータを生成する。ビットマップデータは，画素座標（ｘ，ｙ）に対応して，深さ情報Ｚ，色情報ＣＯＬ，テクスチャ情報ＴＥＸなどを有する。
【００２９】
図８は，本実施の形態における描画装置の構成図である。描画装置はハードウエアで構成されるものであり，基準始点（ｘ０，ｙ０）に対して隣接する始点のずれ量ＤＸ，ＤＹを求めるずれ量生成回路６０と，そのずれ量ＤＸ，ＤＹを基準始点（ｘ０，ｙ０）または一つ前の始点の座標値に加算して隣接する始点座標を求める加算器６４と，始点座標を格納する始点バッファ６２と，加算器６４の加算動作を指令するクロックＣＬＫを線幅Ｗに対応する回数だけ繰り返し生成するクロック生成器６６と，加算器６４により生成された始点に対応して，その始点から傾きｄｘ，長さＬの単位幅線のビットマップデータを生成する直線描画回路６８と，そのビットマップデータを格納するフレームメモリ７０とを有する。
【００３０】
ずれ量生成回路６０は，図５で示した簡易演算により，基準始点（ｘ０，ｙ０）に対する隣接始点（ｘ１，ｙ１）のＸ座標値とＹ座標値のずれ量ＤＸ，ＤＹを求める。図５で示した簡易演算によれば，ずれ量ＤＸ＝１−ｄｘ＊ｄｘ，ＤＹ＝−ｄｘである。つまりずれ量は主軸との角度ｄｘに依存する量である。このずれ量は，基準始点（ｘ０，ｙ０）が左端基準点，中央基準点，右端基準点，上端基準点，中央基準点，下端基準点に対応して異なるが，演算の考え方は図５で示した通りである。
【００３１】
基準始点（ｘ０，ｙ０）は，最初始点バッファ６２に格納される。そして，加算器６４が基準始点の座標値（ｘ０，ｙ０）にずれ量ＤＸ，ＤＹを加算することで，隣接する始点（ｘ１，ｙ１）＝（ｘ０＋ＤＸ，ｙ０＋ＤＹ）を求めることができる。この隣接する始点（ｘ１，ｙ１）の座標値は始点バッファ６２に格納され，それに隣接する始点（ｘ２，ｙ２）の座標値の生成に利用される。すなわち，隣接始点の座標値は（ｘ２，ｙ２）＝（ｘ１＋ＤＸ，ｙ１＋ＤＹ）として求められる。線幅Ｗに対するする回数だけ加算器６４が始点座標を求めると，必要な始点座標情報が得られる。そして，直線描画回路６８は，供給される始点座標と描画コマンド内のパラメータである角度ｄｘと長さＬとに基づいて，単位線幅の線または破線のビットマップデータを生成する。この直線描画回路６８は，従来から実現されているオープンＧＬに対応したものであり，本実施の形態に関するものではない。しかし，本実施の形態では，従来のオープンＧＬに対応した直線描画回路６８をそのまま利用可能にするために，所定の線幅の直線または破線を描画するのに，複数の始点座標を求め，直線描画回路６８に供給している。最後に，直線描画回路６８により生成された単位線幅のビットマップデータＰＸ（ｘ，ｙ）がフレームメモリ７０に格納される。
【００３２】
ずれ量生成回路６０は，描画コマンドに含まれるパラメータから主軸がＹ軸かＸ軸かを判別することができる。また，描画コマンドに含まれるパラメータの基準始点はそれがいずれの種類のものかを示す属性データを有するので，その属性パラメータに基づいて，ずれ量生成回路６０がずれ量ＤＸ，ＤＹを生成する。
【００３３】
以上説明したとおり，本実施の形態によれば，線端が直角形状の傾いた所定線幅の線や破線を描画するに際して，矩形を構成するポリゴンのレンダリング処理によらないで描画処理することができ，処理速度を速くすることができる。したがって，携帯電話や携帯用ナビゲーション装置において，地図画像内の直線や破線を高画質で高速に表示することができる。
【図面の簡単な説明】
【００３４】
【図１】従来の描画装置により描画された直線と破線の例を示す図である。
【図２】線端の形状が直角の直線と破線の例を示す図である。
【図３】本実施の形態における所定の線幅の直線，破線の描画を説明する図である。
【図４】図３の線描画をピクセル単位で示す図である。
【図５】本実施の形態の線描画における始点位置の生成方法を示す図である。
【図６】描画コマンドの描画対象となる線の基準点の種類を示す図である。
【図７】本実施の形態の描画装置を含む描画システムの全体構成図である。
【図８】本実施の形態における描画装置の構成図である。
【符号の説明】
【００３５】
１４：破線        Ｗ：線幅        ｄｘ：傾き        Ｙ：主軸        Ｘ：副軸
（ｘ０，ｙ０），（ｘ１，ｙ１），（ｘ２，ｙ２）〜（ｘｎ，ｙｎ）：始点
１４０，１４１，１４２〜１４ｎ：単位幅線
【図１】
0004666480.tif 000002
【図２】
0004666480.tif 000003
【図３】
0004666480.tif 000004
【図４】
0004666480.tif 000005
【図５】
0004666480.tif 000006
【図６】
0004666480.tif 000007
【図７】
0004666480.tif 000008
【図８】
0004666480.tif 000009