JP4845043B2 - 描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体 - Google Patents

描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体 Download PDF

Info

Publication number
JP4845043B2
JP4845043B2 JP2007119640A JP2007119640A JP4845043B2 JP 4845043 B2 JP4845043 B2 JP 4845043B2 JP 2007119640 A JP2007119640 A JP 2007119640A JP 2007119640 A JP2007119640 A JP 2007119640A JP 4845043 B2 JP4845043 B2 JP 4845043B2
Authority
JP
Japan
Prior art keywords
information
coordinate
coordinates
point
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007119640A
Other languages
English (en)
Other versions
JP2008276535A (ja
Inventor
孝之 永松
充宏 斗谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2007119640A priority Critical patent/JP4845043B2/ja
Publication of JP2008276535A publication Critical patent/JP2008276535A/ja
Application granted granted Critical
Publication of JP4845043B2 publication Critical patent/JP4845043B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Generation (AREA)

Description

本発明は、描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体に関し、特に、図形の拡大や縮小を伴う表示を行う描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体に関する。
アウトラインフォントを塗りつぶすための装置および方法は何種類か存在する。例えば、特許文献1は、次に述べる第1のステップおよび第2のステップを繰返すことで輪郭線の内部を塗りつぶす方法を開示する。
第1のステップは、輪郭線の極大値あるいは極小値から所定の方向に走査するステップである。第2のステップは、輪郭線が検出された場合に塗りつぶす動作を開始し、次に輪郭線が検出されると塗りつぶす動作を停止するステップである。
特許文献1に開示された発明によると、アウトラインフォントの内部を塗りつぶすことができる。
特許文献2は、アウトラインフォントを塗りつぶすための別の方法およびその方法を実施する装置を開示する。
特許文献2に開示された方法は、線を表すベクトルデータをピクセルデータに変換して画像メモリに書き込み、ピクセルデータによって囲まれる画像メモリの内部をピクセルデータによって塗りつぶす閉曲線内の塗りつぶし方法である。
この方法は、第1のステップと第2のステップとを含む。
第1のステップは、ベクトルデータをピクセルデータに変換して画像メモリに書き込む際に、ベクトルが持つ属性に対応する属性データをそのピクセルデータに対応付けてメモリに書き込むステップである。既に属性データが書き込まれているピクセルデータに対して重畳して書込を行う場合は、既に書き込まれている属性データと新たに書き込むべきピクセルの属性とによって決まる属性データを書き込む。
第2のステップは、画像メモリを走査してメモリ内の属性データを検出し、この検出した属性データの値に基づいて塗りつぶし位置を決定するステップである。
特許文献2に開示された発明によると、極めて高速に閉曲線内を塗りつぶすことができる。
特開平2−250190号公報 特開平2−122956号公報
しかし、特許文献1に開示された発明には、正しく塗りつぶすことができない場合があるという問題点がある。図48〜図54を参照して、この問題点を具体的に説明する。
図48は、ある画像領域700の中の輪郭線701を示す図である。図49は、図48に示す輪郭線701の頂点から所定の方向に走査するステップを示す概念図である。図49において、点951および点952は同じ水平ライン703上にある頂点である。
特許文献1に開示された発明の場合、水平ライン703に沿って水平方向に走査すると、点951が輪郭線の始点と認識され、点952が輪郭線の終点と認識される。これにより、それらの頂点間が塗り潰される。図50は、その際の様子を示す概念図である。
これを防ぐ方法として、頂点を検出する際は必ず1つ前の水平ラインの点データを読み出して、水平ライン703の点データと比較する方法がある。この方法を用いると、点951および点952は頂点であると認識される。これにより、図50に示すようにそれらの頂点間を塗りつぶしてしまうことは避けられる。
しかしながら、そのような処理を毎回行ったとしても、図51に示すような点953が検出された場合、それが輪郭線の始点であり終点でもあることを検出するのは不可能である。
図52は、輪郭線706を示す図である。図52から明らかなように、点954と点955とは別の点である。しかしながら、縮小表示されると、図53に示すように、点954と点955が同一点であるとみなされることがある。
この場合、水平ライン707に沿って水平方向に走査すると、点956は輪郭線の始点と認識される。点954(および点955)は輪郭線の終点と認識される。これにより、点956−点954間(点956−点955間)は塗り潰される。
一方、点957は輪郭線の始点と認識される。これにより、点954−点957間(線分点955−点957間)に塗り漏れが発生する。さらに、点957から画像領域の最右端である点958までが塗り潰されてしまう。
図54は、これらのことを示す概念図である。
特許文献2に開示された発明には、輪郭線の直線近似時の誤差の影響や輪郭線を構成する画素の座標を算出する際に生じた誤差の影響などによって、本来塗り潰されるはずの領域が塗り潰されないことがあるという問題点がある。
図55〜図58は、2本の輪郭線が接近している場合に生じるそのような問題の例を示す図である。図55〜図58を参照して、この問題点について説明する。
図55は、図形の輪郭線を示す図である。図56および図57は、それらの輪郭線のうち接近している輪郭線の位置を示す図である。図55において破線で囲まれた2本の輪郭線について構成画素を算出したとする。これらの図においては、左下の角のマス目の座標を(1,1)とし、右上の角のマス目の座標を(7,3)とする。また、左から右へ向かう方向をX軸方向とし、下から上へ向かう方向をY軸方向とする。また、これらの図において示された矢印は、図55において楕円で囲まれた輪郭線を示す。この場合、図55において楕円で囲まれた2本の輪郭線のうち一方の線の構成画素としてP(5,2)およびQ(2,1)が算出されたとする。他方の線の構成画素とされた点としてR(1,1),S(4,2),およびT(7,3)が算出されたとする。
これらの点が構成画素として算出されたとすると、特許文献2に開示された発明の場合、塗潰される点は、構成画素P,構成画素Q,構成画素R,構成画素S,および構成画素Tである。図58は、塗潰される点の配置を示す図である。図58により明らかなように、構成画素Qと構成画素Sとの間のマス目および構成画素Pと構成画素Tとの間のマス目は塗潰されていない。
図56および図57に示す矢印(上述したように、この矢印は輪郭線を示す)から明らかなように、構成画素Pに代えて点(6,2)が構成画素であってもよい。構成画素Sに代えて点(3,2)が構成画素であってもよい。そのため、構成画素Pや構成画素Sに代えて点(6,2)や点(3,2)が構成画素とされていれば、本来塗り潰されるはずの領域が塗り潰されないという現象は生じない。しかしながら、特許文献2に開示された発明によってそのような現象が生じないように構成画素を算出することは困難である。
本発明は上述の問題点を解決するためになされたものであって、その目的は、輪郭線の内側を過不足なく塗りつぶすことができる描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体を提供することにある。
上記目的を達成するために、本発明のある局面に従うと、描画情報処理装置は、二次元画像を画素により表示するために情報を処理する装置である。描画情報処理装置は、記憶手段と、情報変更手段とを含む。記憶手段は、画素の座標それぞれに対応付けて塗り情報を記憶する塗り情報領域に情報を予め記憶し、座標情報を記憶する。塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示す。座標情報は、二次元画像の輪郭線を構成する構成画素のいずれかである複数の座標を示す。情報変更手段は、記憶手段が塗り情報領域に記憶した情報を変更する。情報変更手段は、座標選択手段と、置換手段とを含む。座標選択手段は、座標情報が示す複数の座標のうち少なくとも2つを選択する。置換手段は、座標選択手段が選択した座標のいずれかに対応する塗り情報領域に記憶された記憶情報を、ベクトルの向きの範囲に対応する内容の塗り情報に置換する。ベクトルは、座標選択手段が選択した座標のいずれかを両端とする区間において輪郭線に接する。
また、上述の座標情報は、隣接する構成画素の座標が連続する順序となるように座標を示す情報を含むことが望ましい。併せて、置換手段は、相違判断手段と、選択置換手段を含むことが望ましい。相違判断手段は、座標情報において順序が連続する座標の、座標軸の他方に平行な方向である他方方向の座標値が相違するか否かを判断する。選択置換手段は、他方方向の座標値が相違する場合、座標情報における座標の順序と他方方向の座標値の大小関係とに基づいて置換の対象となる記憶情報を選択し、選択した塗り情報領域に記憶された記憶情報を、座標情報における座標の順序と他方方向の座標値の大小関係とに対応する内容の塗り情報に置換する。
もしくは、上述の選択置換手段は、一方置換手段と、屈曲部分置換手段とを含むことが望ましい。一方置換手段は、他方方向の座標値が相違する場合、順序が先の座標の他方方向の座標値が順序が後の座標の他方方向の座標値より大きいか否かに応じて、順序が連続する座標の一方に対応する記憶情報を置換する。屈曲部分置換手段は、他方方向の座標値が等しい場合、順序が連続する座標の一方に順序がさらに連続する座標の他方方向の座標値が順序が連続する座標の他方方向の座標値と異なっていれば、座標の一方に対応する記憶情報を置換する。
もしくは、上述の座標情報は、順序が連続する座標は隣接する構成画素を示し、かつ順序が最初の座標と順序が最後の座標とが同一の構成画素を示すように、構成画素の座標を示す情報を含むことが望ましい。併せて、塗り情報は、方向を正負の符号で示す数値の情報を含むことが望ましい。併せて、一方置換手段は、第1の数値置換手段と、第2の数値置換手段とを含むことが望ましい。第1の数値置換手段は、順序が先の座標の他方方向の座標値が順序が後の座標の他方方向の座標値より大きければ、順序が先の座標に対応する記憶情報を、記憶情報に対して値が小さい数値の情報に置換する。第2の数値置換手段は、順序が先の座標の他方方向の座標値が順序が後の座標の他方方向の座標値より小さければ、順序が後の座標に対応する記憶情報を、記憶情報に対して値が大きな数値の情報に置換する。併せて、屈曲部分置換手段は、第3の数値置換手段と、第4の数値置換手段とを含むことが望ましい。第3の数値置換手段は、順序が先の座標に対して順序がさらに先の座標の他方方向の座標値が順序が連続する座標の他方方向の座標値と異なっていれば、順序が連続する座標のうち順序が先の座標に対応する記憶情報を、記憶情報に対して値が小さい数値の情報に置換する。第4の数値置換手段は、順序が後の座標に対して順序がさらに後の座標の他方方向の座標値が順序が連続する座標の他方方向の座標値と異なっていれば、順序が連続する座標のうち順序が後の座標に対応する記憶情報を、記憶情報に対して値が大きい数値の情報に置換する。併せて、情報変更手段は、塗りつぶし情報作成手段をさらに含むことが望ましい。塗りつぶし情報作成手段は、数値の情報が示す正負の符号に基づいて構成画素により区切られる塗りつぶし区域内の画素の色を一定の規則に従う色とするように、二次元画像を画素により示す情報を作成する。
また、上述の情報変更手段は、塗りつぶし情報作成手段をさらに含むことが望ましい。塗りつぶし情報作成手段は、塗り情報が示す方向に基づいて構成画素により区切られる塗りつぶし区域内の画素の色を一定の規則に従う色とするように、二次元画像を画素により示す情報を作成する。
本発明の他の局面に従うと、描画情報処理方法は、二次元画像を画素により表示するために情報を、記憶部とCPUとを備えるコンピュータを用いて処理する方法である。描画情報処理方法は、CPUが、画素の座標それぞれに対応付けて塗り情報を記憶するための記憶部の塗り情報領域に情報を予め記憶するステップを含む。塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示す。方法は、さらに、CPUが、二次元画像の輪郭線を構成する構成画素のいずれかである複数の座標を示す座標情報を記憶部に記憶するステップと、CPUが、記憶部に記憶されている座標情報が示す複数の座標のうち少なくとも2つを選択するステップと、CPUが、選択するステップにおいて選択された座標のいずれかに対応する塗り情報領域に記憶された記憶情報を、選択するステップにおいて選択された座標のいずれかを両端とする区間において輪郭線に接するベクトルの向きの範囲に対応する内容の塗り情報に置換するステップとを含む。
本発明の他の局面に従うと、描画情報処理プログラムは、二次元画像を画素により表示するために情報を処理するプログラムである。描画情報処理プログラムは、予備記憶ステップと、座標情報記憶ステップと、座標選択ステップと、置換ステップとを含む各ステップをコンピュータに実行させる。予備記憶ステップは、画素の座標それぞれに対応付けて塗り情報を記憶する塗り情報領域に情報を予め記憶する。塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示す。座標情報記憶ステップは、座標情報を記憶する。座標情報は、構成画素のいずれかである複数の座標を示す。構成画素は、二次元画像の輪郭線を構成する画素である。座標選択ステップは、座標情報が示す複数の座標のうち少なくとも2つを選択する。置換ステップは、座標選択ステップにおいて選択された座標のいずれかに対応する塗り情報領域に記憶された記憶情報を、座標選択ステップにおいて選択された座標のいずれかを両端とする区間において輪郭線に接するベクトルの向きの範囲に対応する内容の塗り情報に置換する。
本発明の他の局面にしたがうと、記録媒体は、描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体である。描画情報処理プログラムは、二次元画像を画素により表示するために情報を処理するプログラムである。描画情報処理プログラムは、予備記憶ステップと、座標情報記憶ステップと、座標選択ステップと、置換ステップとを含む各ステップをコンピュータに実行させる。予備記憶ステップは、画素の座標それぞれに対応付けて塗り情報を記憶する塗り情報領域に情報を予め記憶する。塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示す。座標情報記憶ステップは、座標情報を記憶する。座標情報は、構成画素のいずれかである複数の座標を示す。構成画素は、二次元画像の輪郭線を構成する画素である。座標選択ステップは、座標情報が示す複数の座標のうち少なくとも2つを選択する。置換ステップは、座標選択ステップにおいて選択された座標のいずれかに対応する塗り情報領域に記憶された記憶情報を、座標選択ステップにおいて選択された座標のいずれかを両端とする区間において輪郭線に接するベクトルの向きの範囲に対応する内容の塗り情報に置換する。
本発明に係る描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体は、輪郭線の内側を過不足なく塗りつぶすことができる。
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同一である。したがって、それらについての詳細な説明は繰返さない。
<第1の実施の形態>
以下、本発明の第1の実施の形態に係る描画情報処理装置について説明する。
《描画情報処理装置100の機能的構成》
図1は、本実施の形態に係る描画情報処理装置100の機能的構成を示す図である。
図1を参照して、描画情報処理装置100は、入力部101と、描画情報格納部102と、塗り情報変更部103と、出力処理部104および表示処理部105とを備えている。
入力部101は、インタフェースを備えている。入力部101は、このインタフェースによって輪郭情報10の入力を受け付ける。なお、本実施の形態の場合、輪郭情報10は入力部101を介して描画情報処理装置100に入力されるが、輪郭情報10が予め描画情報処理装置100内に格納されていても構わない。
輪郭情報10は、構成画素のいずれかについての表示装置12の画面における座標を示す情報である。本実施の形態において、構成画素とは、二次元画像を構成する画素のうち、輪郭線を構成する画素のことである。本実施の形態の場合、画素の座標とは、表示装置12の表示面における、画素の座標を意味する。
たとえば、アウトラインフォントにおけるアウトラインデータや絵文字などにおける輪郭線データが輪郭情報10の一例である。輪郭情報10は、ベクトルで表された輪郭線データであっても構わないし、構成画素の座標を構成画素ごとに示すデータであっても構わない。ただし、構成画素によって構成される輪郭線は閉曲線であることを前提とする。
入力部101がどのようにして輪郭情報を受付けるかということには特段の制限がない。たとえば、無線通信や有線通信によって輪郭情報10は受付けられてもよい。記録メディアなどに記録された輪郭情報10を入力部101は受付けてもよい。
描画情報格納部102は、次に述べる3種類の情報を記憶し、かつそれらの情報を管理する。
第1の情報は、入力部101を介して入力された輪郭情報10である。
第2の情報は、構成画素の座標を構成画素ごとに示す座標情報である。本実施の形態の場合、座標情報は、順序が連続する座標が表示装置12における座標が隣接する構成画素を示す。本実施の形態の場合、座標情報は、順序が最初の座標と順序が最後の座標との表示装置12における座標が互いに隣接する構成画素を示す。
第3の情報は、塗りつぶし区域(表示装置12に表示される図形において塗りつぶしの対象となる区域)が存在する方向であって座標軸の一方に平行な方向(本実施の形態の場合はX軸方向)を示す情報である。本実施の形態においては、この情報を「塗り情報」と称する。塗り情報を使用することで、塗り漏れや塗り過ぎなどがないように塗りつぶし処理を行うことができる。なお、塗り情報としてどのような情報を与えるかということに関しては後述する。
本実施の形態の場合、描画情報格納部102は、これら3種類の情報を互いに異なる領域に記憶する。本実施の形態の場合、これらの領域のうち塗り情報が記憶される領域は「塗り情報領域」と称される。
塗り情報変更部103は、描画情報格納部102が記憶した塗り情報を変更する。
出力処理部104は、描画情報格納部102にて格納されている輪郭情報10を外部装置11に出力する。また、出力処理部104は、塗り情報選択置換部122にて付与された各点の塗り情報を外部装置11に出力する。
表示処理部105は、輪郭情報10に基づいて描画された輪郭線と、塗り情報に基づいて輪郭線内部を塗りつぶされた文字または図形を示す画像データとを表示装置12に出力する。
塗り情報変更部103は、座標計算部110と、点データ読出処理部112と、塗り情報置換部114と、塗りつぶし情報作成部116とを含む。
座標計算部110は、描画情報格納部102にて記憶されている輪郭情報10に基づいて、構成画素の座標値を計算する。例えば、輪郭情報10がベクトルデータである場合、座標計算部110はそのベクトルデータに基づいて輪郭線の座標を計算する。後述するように、本実施の形態の場合、輪郭情報10が頂点の座標を示す座標なので、座標計算部110は、辺を構成する構成画素の座標を計算する。これにより、上述した座標情報が作成される。
点データ読出処理部112は、描画情報格納部102の塗り情報領域から、2つの構成画素の座標を選択し、読み出し、次に述べる2つの変数に代入する。それらの変数のうち一方を「点A」と称し、他方を「点B」と称する。本実施の形態の場合、点データ読出処理部112は、記憶情報における座標の順序に従って座標を読み出す。
塗り情報置換部114は、点データ読出処理部112が選択した座標のいずれかに対応する塗り情報領域に記憶された情報を、次に述べるベクトルの向きの範囲に対応する内容の塗り情報に置換する。そのベクトルとは、点データ読出処理部112によって読み出された2つの点を両端とする区間において、輪郭情報10が示す図形の輪郭線に接するベクトルである。本実施の形態においては、このベクトルは「接線ベクトル」と称される。
塗りつぶし情報作成部116は、塗り情報変更部103にて変更された各構成画素の塗り情報に基づいて、塗りつぶし区域(構成画素により区切られる区域)内の画素の色を一定の規則に従う色とするように、二次元画像を画素により示す情報を作成する。これにより、輪郭線の内部が塗りつぶされることとなる。
塗り情報置換部114は、傾き特定処理部120と、塗り情報選択置換部122とを含む。
傾き特定処理部120は、接線ベクトルの傾きの範囲を特定する。なお、傾き特定処理部120は、接線ベクトルの傾きを数値として特定してもよいし、正、負または「0」といった符号としてベクトルの傾きを特定してもよい。
例として、水平右方向をX軸正方向、垂直上方向をY軸正方向とし、点データ読出処理部112により読み出された2つの構成画素をK(1,1)およびL(2,2)とし、X軸正方向を走査線方向とする場合を考える。この場合、傾き特定処理部120は、構成画素Kを始点とし構成画素Lを終点とするベクトルKLの傾きの範囲を「0ラジアンからπラジアンまでの範囲」と特定するものであっても構わないし、「接線が右上がりとなる範囲」と特定するものであっても構わない。
本実施の形態の場合、傾き特定処理部120は、座標軸の一方をX軸、他方をY軸とした場合における、隣接する構成画素の他方方向の座標(すなわちY座標)の大小関係として、接線ベクトルの傾きの範囲を特定する。
また、傾き特定処理部120は、自らが特定した接線ベクトルの傾きの範囲に基づいて、座標情報において順序が連続する座標(すなわち隣接する構成画素)の、Y座標の座標値が相違するか否かを判断する。
塗り情報選択置換部122は、塗り情報領域に記憶された情報のうち点データ読出処理部112が選択した座標のいずれかに対応する情報を、接線ベクトルの向きの範囲に対応する内容の塗り情報に置換する。本実施の形態における塗り情報選択置換部122についてより具体的に説明すると、後述するように、塗り情報選択置換部122は、隣接する構成画素の座標のうちY座標の座標値が異なっていれば、座標情報における座標の順序とY座標の座標値の大小関係とに基づいて、塗り情報領域に記憶された情報のうち置換の対象となる情報を選択する。さらに、塗り情報領域に記憶された情報のうち選択した情報を、座標情報における座標の順序とY座標の座標値の大小関係とに対応する内容の塗り情報に置換する。
塗り情報選択置換部122は、一方置換部132と、屈曲部分置換部134とを含む。
一方置換部132は、隣接する構成画素のY座標の座標値が相違する場合、座標情報における順序が先の座標のY座標の座標値が、その順序が後の座標のY座標の座標値より大きいか否かに応じて、塗り情報領域に記憶された情報のうちそれら隣接する構成画素の一方に対応する情報を置換する。
屈曲部分置換部134は、隣接する構成画素のY座標の座標値が等しい場合、座標情報における順序が連続する座標の一方に順序がさらに連続する座標のY座標の座標値と隣接する構成画素のY座標の座標値とが異なっていれば、塗り情報領域に記憶された情報のうちY座標の座標値が異なる構成画素に隣接する構成画素に対応する情報を置換する。
一方置換部132は、第1数値置換部140と、第2数値置換部142とを含む。
第1数値置換部140は、座標情報における順序が先の座標のY座標の座標値がその順序が後の座標のY座標の座標値より大きければ、塗り情報領域に記憶された情報のうちその順序が先の座標に対応する情報を、その情報に対して値が小さい数値の情報に置換する。
第2数値置換部142は、座標情報における順序が先の座標のY座標の座標値がその順序が後の座標のY座標の座標値より小さければ、塗り情報領域に記憶された情報のうちその順序が後の座標に対応する情報を、その情報に対して値が大きな数値の情報に置換する。
《描画情報処理装置100を実現するコンピュータシステムの構成》
本実施の形態に係る描画情報処理装置100は、実質的には、コンピュータシステムと、そのコンピュータシステムにおいて実行されるプログラムと、コンピュータシステムに格納されるデータとにより実現される。図2に、このコンピュータシステム200の内部構成を示す。
図2を参照して、このコンピュータシステム200は、コンピュータ220と、リモートコントローラ(以下、「リモコン」と呼ぶ)224とを含む。
コンピュータ220は、リモコン224から制御信号を受信すると、出力装置11や表示装置12に情報を出力する。
コンピュータ220は、光ディスクドライブ230と、磁気ディスクドライブ232と、リモコンインタフェース(I/F)234と、CPU(Central Processing Unit)236と、ROM(Rwad Only Memory)238と、RAM(Random Access Memory)240と、ハードディスク242と、バス244とを含む。
光ディスクドライブ230は、コンピュータシステム200に描画情報処理装置100の機能を実現させるためのプログラムや輪郭情報10を光ディスク210から読取る。
磁気ディスクドライブ232は、コンピュータシステム200に描画情報処理装置100の機能を実現させるためのプログラムや輪郭情報10を磁気ディスク211から読取る。
リモコンインタフェース234は、リモコン224からの制御信号を受信する。
CPU236は、コンピュータ220の各部を制御する。また、CPU236は、コンピュータ220の各部を制御するための演算を行う。
ROM238は、ブートアッププログラムなどを記憶する。
RAM240は、プログラム命令、システムプログラム、および作業データなどを記憶する。
ハードディスク242は、光ディスク210または磁気ディスク211の少なくとも一方から読取られたプログラムや輪郭情報10を記憶する。
バス244は、光ディスクドライブ230、磁気ディスクドライブ232、リモコンインタフェース234、CPU236、ROM238、RAM240、およびハードディスク242に接続され、それらの間において情報を中継する。
なお、ここでは示さないが、コンピュータ220は、さらにLAN(Local Area Network)に接続するためのネットワークアダプタボードを含んでいてもよい。
また、本実施の形態に係る描画情報処理装置100は、2台以上のコンピュータ220によって実現されていてもよい。たとえば、座標計算部110を実現するコンピュータ220と、入力部101,描画情報格納部102,点データ読出処理部112,傾き特定処理部120,塗り情報選択置換部122,塗りつぶし情報作成部116,出力処理部104,および表示処理部105を実現するコンピュータ220とによって構成されていてもよい。
上述したように、コンピュータシステム200に描画情報処理装置100の機能を実現させるためのプログラムおよび輪郭情報10は、光ディスク210および磁気ディスク211の少なくとも一方に記憶され、光ディスクドライブ230や磁気ディスクドライブ232により読取られ、ハードディスク242に転送される。
あるいは、そのプログラムおよび輪郭情報10は、図示しないネットワークを通じてコンピュータ220に送信されハードディスク242に記憶されてもよい。
そのプログラムは、実行の際にRAM240にロードされる。そのプログラムは、ハードディスク242に記憶されることなく、光ディスク210、磁気ディスク211、およびネットワークのいずれかを介してRAM240に直接ロードされてもよい。
このプログラムは、コンピュータ220に本実施の形態に係る描画情報処理装置100の機能を実現させる複数の命令を含む。これら機能を実現させるのに必要な基本的機能のいくつかはコンピュータ220上で動作するオペレーティングシステム(OS)またはサードパーティのプログラム、もしくはコンピュータ220にインストールされる各種ツールキットのモジュールにより提供される。したがって、光ディスク210や磁気ディスク211などの記録媒体に記録されるプログラムは、本実施の形態に係る描画情報処理装置100の機能を実現するのに必要な機能すべてを必ずしも含まなくてよい。そのプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能または上述したモジュールを呼出すことにより、描画情報処理装置100の制御を実現する命令のみを含んでいればよい。コンピュータシステム200自体の動作は周知であるので、ここでは繰り返さない。
なお、描画情報処理装置100の機能を実現するためのプログラムおよび輪郭情報10が記録される記録媒体は、CD−ROM(コンパクトディスク読取専用メモリ)、MO(Magneto-Optical Disc)、MD(Mini Disc)、あるいはDVD(Digital Versatile Disc)などの光ディスク210や、FD(Flexible Disc)およびハードディスクなどの磁気ディスク211に限られない。磁気テープおよびカセットテープなどのテープ、IC(Integrated Circuit)カードおよび光カードなどのカード型記録媒体、ならびにマスクROM、EPROM(Erasable Programable Rom)、EEPROM(Electrically Erasable Programable Rom)、およびフラッシュROMなどの半導体メモリのいずれかでもよい。ただし、コンピュータシステム200は、これら記録媒体からの読出を行なうための読出装置を実装する必要がある。
《塗り情報の設定》
図3を参照して、本実施の形態に係る描画情報処理装置100で実行されるプログラムは、塗り情報の設定に関し、以下のような制御を実行する。
ステップS301にて、座標計算部110は、構成画素の座標を計算する。この計算には、入力部101を介して入力された輪郭情報10が使用される。これにより、座標情報が作成される。本実施の形態の場合、作成された座標情報には、輪郭情報10が示す頂点の座標も含まれる。描画情報格納部102は、作成された座標情報を記憶する。点データ読出処理部112は、描画情報格納部102に座標情報として記憶された構成画素の座標を読み出す。読み出される座標は、1つの構成画素の座標である。
ただし、座標計算部110が構成画素の座標を計算する時期は特に限定されない。たとえば、構成画素の座標は、座標計算部110によって予め計算されかつ描画情報格納部102によって予め記憶されていてもよいし、点データ読出処理部112が構成画素の座標を読み出すたびに、座標計算部110によって計算されかつ描画情報格納部102によって記憶されていてもよい。
ステップS302にて、点データ読出処理部112は、ステップS301にて読み出した座標を点Aに代入し、ステップS303へ進む。
ステップS303にて、点データ読出処理部112は、描画情報格納部102が記憶した座標において、点Aに座標が代入された構成画素に隣接する構成画素の座標が存在するか否かを判断する。本実施の形態の場合、点データ読出処理部112は、点Aに代入された座標に対して座標情報における順序が1つ後の座標が存在するか否かに基づいて、そのことを判断する。そのような構成画素の座標が存在すると判断した場合には(ステップS303にてYES)、処理はステップS304へと移される。もしそうでないと(ステップS303にてNO)、処理は終了する。
ステップS304にて、点データ読出処理部112は、点Aに座標が代入された構成画素に隣接する構成画素の座標を描画情報格納部102から読み出し、ステップS305へ進む。読み出される座標は、1つの構成画素の座標である。
ステップS305にて、点データ読出処理部112は、ステップS304にて読み出した座標を点Bに代入して、ステップS306へ進む。
ステップS306にて、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する。点Aの座標に対して点Bの座標が大きいと判断した場合には(ステップS306にてYES)、処理はステップS308へと移される。もしそうでないと(ステップS306にてNO)、処理はステップS307へと移される。
ステップS307にて、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する。点Aの座標に対して点Bの座標が小さいと判断した場合には(ステップS307にてYES)、処理はステップS309へと移される。もしそうでないと(ステップS307にてNO)、処理はステップS310へと移される。
なお、本実施の形態の場合、表示装置12の表示面における左下を原点とし、水平右方向をX軸正方向とし、垂直上方向をY軸正方向とするが、必ずしもこの座標系にこだわらない。異なる座標系の場合はそれにあわせて適宜読み替えればよい。
ステップS308にて、第2数値置換部142は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し、ステップS312へ進む。
ステップS309にて、第1数値置換部140は、点Aの座標に対応する塗り情報の値に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し、ステップS312へ進む。
ステップS310では、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点であるか否かを判断する。点Aの座標と点Bの座標とが同一点であると判断した場合には(ステップS310にてYES)、処理はステップS312へと移される。もしそうでないと(ステップS310にてNO)、処理はステップS311へと移される。
ステップS311にて、屈曲部分置換部134は、点Aと点BとのY座標が同じであるため水平線分用処理を行い、ステップS312へ進む。水平線分用処理の詳細については、図4において説明する。
ステップS312にて、点データ読出処理部112は、点Bの座標を点Aに代入し、ステップS303へ処理を戻す。
《水平線分用処理》
図4を参照して、本実施の形態に係る描画情報処理装置100で実行されるプログラムは、水平線分用の塗り情報の設定に関し、以下のような制御を実行する。
ステップS351にて、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する。点AのX座標の方が大きいと判断した場合には(ステップS351にてYES)、処理はステップS352へと移される。もしそうでないと(ステップS351にてNO)、処理はステップS354へと移される。
ステップS352にて、屈曲部分置換部134は、点Aが示す構成画素の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し、ステップS353へ進む。
ステップS353にて、屈曲部分置換部134は、点Bが示す構成画素の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し、処理を終了する。
ステップS354にて、屈曲部分置換部134は、点Aが示す構成画素の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し、ステップS355へ進む。
ステップS355にて、屈曲部分置換部134は、点Bが示す構成画素の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し、処理を終了する。
《塗りつぶし処理》
図5を参照して、本実施の形態に係る描画情報処理装置100で実行されるプログラムは、塗りつぶしに関し、以下のような制御を実行する。
ステップS360にて、塗りつぶし情報作成部116は、変数PXおよび変数PYに「0」を代入する。
ステップS362にて、塗りつぶし情報作成部116は、図示しないレジスタの値を「0」とする。
ステップS364にて、塗りつぶし情報作成部116は、X座標の値が変数PX以下でY座標の値が変数PYに等しい点の塗り情報の値をレジスタの値に順次加算していくことで、それらの塗り情報の値の和を算出する。
ステップS366にて、塗りつぶし情報作成部116は、ステップS364にて算出した和が「0」を超えるか否かを判断する。和が「0」を超えると判断した場合には(ステップS366にてYES)、処理はステップS368へと移される。もしそうでないと(ステップS366にてNO)、処理はステップS370へと移される。
ステップS368にて、塗りつぶし情報作成部116は、変数PXの値をX座標の値とし変数PYの値をY座標の値とする画素を、予め定められた、背景色とは異なる色の画素とするように、画像を示す画像データの値を設定する。
ステップS370にて、塗りつぶし情報作成部116は、X座標の値が変数PXに等しくY座標の値が変数PYに等しい座標が、描画情報格納部102に座標情報として記憶された座標のいずれかであるか否かを判断する。X座標の値が変数PXでY座標の値が変数PYに等しい座標が、描画情報格納部102に座標情報として記憶された座標のいずれかであると判断した場合には(ステップS370にてYES)、処理はステップS368へと移される。もしそうでないと(ステップS370にてNO)、処理はステップS372へと移される。
ステップS372にて、塗りつぶし情報作成部116は、変数PXの値を「1」増加させる。
ステップS374にて、塗りつぶし情報作成部116は、変数PXの値が表示装置12の表示面におけるX座標の最大値(本実施の形態の場合、この最大値は「12」であることとする)以下か否かを判断する。変数PXの値がその最大値以下と判断した場合には(ステップS374にてYES)、処理はステップS364へと移される。もしそうでないと(ステップS374にてNO)、処理はステップS376へと移される。
ステップS376にて、塗りつぶし情報作成部116は、変数PXの値を「0」とし、変数PYの値を「1」増加させる。
ステップS378にて、塗りつぶし情報作成部116は、変数PYの値が表示装置12の表示面におけるY座標の最大値(本実施の形態の場合、この最大値は「12」であることとする)以下か否かを判断する。変数PYの値がその最大値以下と判断した場合には(ステップS378にてYES)、処理はステップS364へと移される。もしそうでないと(ステップS378にてNO)、塗りつぶし情報作成部116が作成した画像データを出力処理部104および表示処理部105の少なくとも一方が出力し、処理は終了する。
《描画情報処理装置100の動作》
以上のような構造およびフローチャートに基づく、輪郭情報10に基づいて輪郭線を描くときに各点に対して塗り情報を付与し、その塗り情報を使用して輪郭線内を塗りつぶす際の、描画情報処理装置100の動作について説明する。
ここでは、四角形PQRSの内部を塗りつぶす場合について説明する。図6は、表示装置12の表示面の座標系500と四角形PQRSの配置とを示す図である。
図6に示すように、本実施の形態の場合、座標系500は左下を原点として、水平右方向をX軸正方向とし、垂直上方向をY軸正方向とする。
図7は、本実施の形態にかかる四角形PQRSの輪郭情報10を示す概念図である。本実施の形態の場合、輪郭情報10は、「0」から「255」までの値でX座標とY座標とを示す、頂点の座標値の集合体である。このため、たとえば表示領域の画素が12個×12個の場合、それに合わせて座標の値をスケーリングする必要がある。スケーリングのためには、輪郭情報10が示す座標値を「255」で割った値に「12」を掛けると良い。
もちろん、輪郭情報10は、「0」から「255」までの値でX座標とY座標とを示すものに限られない。たとえば、「0」から「1023」までの値でX座標とY座標とを示すものであっても構わない。すなわち、輪郭情報とは、輪郭線を示す閉曲線で塗りつぶす領域を表現できるような情報であれば構わない。
また、描画情報処理装置100に入力される輪郭情報10において、座標値の順序は、輪郭線における位置と、輪郭線で囲まれた領域の内側を塗りつぶすか外側を塗りつぶすかということとによって定められている。たとえば、図6に示す四角形PQRSの場合、四角形PQRSの内側を塗りつぶすため、座標値の順序は、構成画素P―線分PQを構成する画素―構成画素Q―線分QRを構成する画素―構成画素R―線分RSを構成する画素―構成画素S―線分SPを構成する画素―構成画素Pという順序である。図6において、構成画素P,構成画素Q,構成画素R,および構成画素Sの間の矢印は、この順序を示す。四角形PQRSの外側を塗りつぶす場合、座標値の順序は、構成画素P−構成画素S−構成画素R−構成画素Q−構成画素Pという順序になる。
なお、図7に示すように、スケーリングする前における四角形PQRSの各頂点の座標は、P(127,170),Q(212,42),R(21,42),およびS(85,170)である。
描画情報処理装置100の電源が入れられると、プログラムが起動し、座標計算部110は、構成画素の座標を計算する。描画情報格納部102は、算出された構成画素の座標を座標情報としていったん記憶する。
本実施の形態の場合、座標計算部110は、輪郭情報10が示す頂点の座標を12×12の画素の数に合うようにスケーリングし、さらに構成画素の座標を計算する。
このステップにおいて、座標計算部110は、次に第1の処理から第3の処理までの処理を経て、構成画素の座標を算出する。
第1の処理は、2つの構成画素を通るベクトルを求める処理である。このベクトルは、それらの構成画素のX座標の差とY座標の差とを算出することにより求められる。たとえば、それらの構成画素が構成画素Pと構成画素Qとであったとすると、X座標の差ΔXは、ΔX=212÷255×12−127÷255×12=(212−127)÷255×12=4である。Y座標の差ΔYは、ΔY=42÷255×12−170÷255×12=(42−170)÷255×12≒−6である。これにより、ベクトルPQは(4,−6)となる。ちなみに、輪郭情報10が示す頂点の座標を12×12の画素の数に合うようにスケーリングした場合の、構成画素Pの座標は(6,8)である。構成画素Qの座標は(9,2)である。
第2の処理は、Y座標の差ΔYの絶対値がX座標の差ΔXの絶対値より大きいか否かを判断する処理である。ベクトルPQの場合、ΔYの絶対値が「6」で、ΔXの絶対値が「4」なので、ΔYの絶対値がΔXの絶対値より大きい。
第3の処理は、X座標の値およびY座標の値の一方を次の式(1)に代入し、他方を算出する処理である。本実施の形態の場合、X座標の値を算出するために変形された式(1)とY座標の値を算出するために変形された式(1)とが予め記憶されており、変形された式(1)にX座標の値およびY座標の座標値の一方を代入し、他方を算出することで、構成画素の座標が算出される。
Y−VAY=(VAY−VBY)÷(VAX−VBX)×(X−VAX)・・・(1)
ただし、VAXは構成画素の座標の算出に用いる2点のうち一方の点のX座標を示し、VAYはその点のY座標を示す。VBXは他方の点のX座標を示し、VAYはその他方の点のY座標を示す。Xは構成画素のX座標を示し、Yは構成画素のY座標を示す。
X座標とY座標とのうちいずれを変形された式(1)に代入するかということは、第2の処理における判断結果に基づいて選択される。ΔYの絶対値がΔXの絶対値より大きければ、Y座標を代入する。ΔYの絶対値がΔXの絶対値以下ならば、X座標を代入する。
このように選択するのは、図形を表示させる際、構成画素が途切れないようにするためである。たとえば、構成画素Pと構成画素Qとの間の構成画素のY座標を、X座標を代入して算出するとする。この場合、式(1)は、次の式(2)のように予め変形されている。
Y−8=(8−2)÷(6−9)×(X−6)=6÷(−3)×(X−6)=−2(X−6)・・・(2)
上述したように、ベクトルPQの場合、ΔYの絶対値がΔXの絶対値より大きい。この場合、上述した式(2)にX座標の値である「7」および「8」を代入してY座標の値を算出すると、算出される構成画素のY座標は「6」および「4」となる。これにより算出される構成画素の座標は、(7,6)および(8,4)のみである。Y座標の値が「7」である構成画素の座標も、「5」である構成画素の座標も、そして「3」である構成画素の座標も算出されない。このため、これらの構成画素を表示させると、輪郭線が途切れているように表示されることとなる。
これに対し、Y座標の値である、「7」,「6」,「5」,「4」,および「3」を代入してX座標の値を算出すると、算出される構成画素のY座標は「7」,「7」,「8」,「8」,および「9」となる。これらの構成画素を表示させると、構成画素が互いに隣接しているので、輪郭線は途切れず表示されることとなる。
図8は、座標計算部110が算出し、描画情報格納部102が記憶した、四角形PQRSについての座標情報を示す図である。本実施の形態の場合、これらの座標は、輪郭情報10における構成画素の名称に対応付けて記憶されている。
なお、これらの座標のうち順序が連続している座標は、隣合う構成画素の座標を示している。たとえば、図8において構成画素p(1)の座標は(7,7)である。座標値の順序がこの座標に連続している構成画素p(2)の座標は(7,6)である。座標値の順序が構成画素p(2)に連続している構成画素p(3)の座標は(8,5)である。座標の順序が構成画素p(1)に連続している構成画素の座標が(8,5)となることはない。
構成画素の座標が記憶されると、点データ読出処理部112は、それらの座標のうち、構成画素Pの座標(6,8)を読み出す(ステップS301)。図9は、表示装置12の表示面における構成画素Pの位置を示す図である。
構成画素Pの座標(6,8)が読み出されると、点データ読出処理部112は、その座標値を点Aに代入する(ステップS302)。
点Aに座標値が代入されると、点データ読出処理部112は、描画情報格納部102が記憶した座標において、点Aに座標が代入された構成画素に隣接する構成画素の座標が存在するか否かを判断する(ステップS303)。この場合、構成画素p(1)の座標(7,7)が存在するので(ステップS303にてYES)、点データ読出処理部112は、構成画素p(1)の座標(7,7)を読み出し(ステップS304)、点Bに代入する(ステップS305)。
構成画素p(1)の座標(7,7)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここでは、点AのY座標が「8」で点BのY座標が「7」なので(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここでは、点AのY座標が「8」で点BのY座標が「7」なので(ステップS307にてYES)、第1数値置換部140は、点Aの座標に対応する塗り情報の値に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS309)。ここでは、構成画素P(6,8)の塗り情報に「−1」を加算し、構成画素P(6,8)の塗り情報を加算の結果得られた値に更新する。
図10は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。図10に示すように、構成画素Pの塗り情報531は「−1」となる。
なお、本実施の形態の場合、描画情報処理装置100の電源が入れられた時、塗り情報領域には、各構成画素に対応付けて、「0」が予め記憶される。図10以降の図においては、塗り情報が「0」の構成画素には塗り情報が表示されていない。
構成画素P(6,8)の塗り情報に「−1」が加算されると、点データ読出処理部112は、構成画素p(1)の座標を点Aに代入する(ステップS312)。
構成画素p(1)の座標が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素p(2)の座標(7,6)を読出し、これを点Bに代入する(ステップS305)。
構成画素p(2)の座標(7,6)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここでは、Y座標が「7」から「6」に減少しているため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここでは、Y座標が「7」から「6」に減少しているため(ステップS307にてYES)、第1数値置換部140は、点Aすなわち構成画素p(1)の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS309)。
図11は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。図11に示すように、構成画素p(1)の塗り情報532は「−1」となる。
以下同様に処理を進め、ステップS309にて点A、すなわち構成画素p(5)の塗り情報に「−1」を加算してステップS303へ処理が戻った時点の塗り情報を図12に示す。このとき、点Aには構成画素Q(9,2)が代入されている。
構成画素Qの座標が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素q(1)の座標(8,2)を読出し、これを点Bに代入する(ステップS305)。
構成画素q(1)の座標(8,2)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここではY座標の値が変化していないため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「9」で点BのX座標が「8」のため(ステップS351にてYES)、屈曲部分置換部134は、点Aすなわち構成画素Qの塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS352)。
構成画素Qの塗り情報に「−1」が加算されると、屈曲部分置換部134は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS353)。ここでは、構成画素q(1)の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し、図3に示すフローチャートのステップS312へ進む。
図13は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。ゆえに、図13に示すように、構成画素Qの塗り情報541は「−1」となり、構成画素q(1)の塗り情報542は「+1」となる。
構成画素q(1)の塗り情報に「+1」が加算されると、点データ読出処理部112は、構成画素q(1)の座標値を点Aに代入する(ステップS312)。
構成画素q(1)の座標値が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素q(2)の座標(7,2)を読出し、これを点Bに代入する(ステップS305)。
構成画素q(2)の座標(7,2)が点Bに代入されると、傾き特定処理部120は、点A(8,2)のY座標に対して点B(7,2)のY座標が大きいか否かを判断する(ステップS306)。ここではY座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「8」で点BのX座標が「7」のため(ステップS351にてYES)、屈曲部分置換部134は、点Aすなわち構成画素q(1)の構成画素の塗り情報に「−1」を加算する(ステップS352)。
構成画素q(1)の構成画素の塗り情報に「−1」が加算されると、屈曲部分置換部134は、点Bの座標に対応する塗り情報の値に「+1」を加算する(ステップS353)。ここでは、構成画素q(2)の構成画素の塗り情報に「+1」を加算し、図3に示すフローチャートのステップS312へ進む。
図14は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。図14に示すように、構成画素q(1)の構成画素の塗り情報542は「−1」が加算されたために「0」となり、構成画素q(2)の構成画素の塗り情報543は「+1」となる。
以下同様に処理を進め、ステップS353にて点Bすなわち構成画素Rの塗り情報に「+1」を加算してステップS303へ処理が戻った時点の塗り情報を図15に示す。このとき、点Aには構成画素R(1,2)が代入されている。
構成画素R(1,2)の座標値が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素r(1)の座標(1,3)を読出し、これを点Bに代入する(ステップS305)。
構成画素r(1)の座標(1,3)が点Bに代入されると、傾き特定処理部120は、点A(1,2)のY座標に対して点B(1,3)のY座標が大きいか否かを判断する(ステップS306)。ここでは、点AのY座標が「2」で点BのY座標が「3」であるため(ステップS306にてYES)、第2数値置換部142は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS308)。ここでは、点Bすなわち構成画素r(1)の塗り情報に「+1」を加算する。
図16は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。図16に示すように、構成画素r(1)の構成画素の塗り情報551は「+1」となる。
構成画素r(1)の構成画素の塗り情報に「+1」が加算され、更新されると、点データ読出処理部112は、構成画素r(1)の座標値を点Aに代入する(ステップS312)。
構成画素r(1)の座標値が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素r(2)の座標(2,4)を読出し、これを点Bに代入する(ステップS305)。
構成画素r(2)の座標(2,4)が点Bに代入されると、傾き特定処理部120は、点A(1,3)のY座標に対して点B(2,4)のY座標が大きいか否かを判断する(ステップS306)。ここでは、Y座標が「3」から「4」に増加しているため(ステップS306にてYES)、第2数値置換部142は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS308)。ここでは、点Bすなわち構成画素r(2)の塗り情報に「+1」を加算する。
図17は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。図17に示すように、構成画素r(2)の構成画素の塗り情報552は「+1」となる。
以下同様に処理を進め、ステップS308にて点Bすなわち構成画素Sの塗り情報に「+1」を加算してステップS303へ処理が戻った時点の塗り情報を図18に示す。この時、点Aには構成画素S(4,8)が代入されている。
構成画素Sの塗り情報に「+1」が加算されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は描画情報格納部102から構成画素s(1)の座標(5,8)を読出し、これを点Bに代入する。
構成画素s(1)の座標(5,8)が点Bに代入されると、傾き特定処理部120は、点A(4,8)のY座標に対して点B(5,8)のY座標が大きいか否かを判断する(ステップS306)。ここではY座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「4」で点BのX座標が「5」のため(ステップS351にてNO)、屈曲部分置換部134は、点Aが示す構成画素すなわち構成画素Sの塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS354)。
構成画素Sの塗り情報に「+1」が加算されると、屈曲部分置換部134は、点Bすなわち構成画素s(1)の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し(ステップS355)、図3に示すフローチャートのステップS312へ進む。
図19は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。図19に示すように、構成画素Sの塗り情報561は「+2」となり、構成画素s(1)の塗り情報562は「−1」となる。
構成画素s(1)の塗り情報に「−1」が加算されると、点データ読出処理部112は、構成画素s(1)の座標値を点Aに代入する(ステップS312)。
構成画素s(1)の座標値が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素Pの座標(6,8)を読出し、これを点Bに代入する(ステップS305)。
構成画素Pの座標(6,8)が点Bに代入されると、傾き特定処理部120は、点A(5,8)のY座標に対して点B(6,8)のY座標が大きいか否かを判断する(ステップS306)。ここではY座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「5」で点BのX座標が「6」のため(ステップS351にてNO)、屈曲部分置換部134は、点Aが示す構成画素すなわち構成画素s(1)の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS354)。
構成画素s(1)の塗り情報に「+1」が加算されると、屈曲部分置換部134は、点Bすなわち構成画素Pの塗り情報に「−1」を加算する(ステップS355)。
図20は、図9において黒枠530で囲んだ領域に含まれる構成画素の、この時点における塗り情報を示す図である。図20に示すように、構成画素s(1)の構成画素の塗り情報562は「+1」が加算されたために「0」となり、構成画素Pの塗り情報531は「−1」が加算されたために「−2」となる。
構成画素Pの塗り情報に「−1」が加算されると、点データ読出処理部112は、構成画素Pの座標値を点Aに代入する(ステップS312)。
構成画素Pの座標値が点Aに代入されると、点データ読出処理部112は、描画情報格納部102が記憶した座標において、構成画素Pに隣接する構成画素の座標が存在するか否かを判断する(ステップS303)。この場合、座標が存在しないので(ステップS303にてNO)、処理は終了する。これにより、図20に示すように、四角形PQRSの輪郭線を構成する各点データの塗り情報を付与することができる。
次に、図20に示す塗り情報をもとに四角形PQRSの内部を塗りつぶす際の動作について説明する。
本実施の形態の場合、塗りつぶし情報作成部116は、走査線方向、すなわち水平右方向に各点データの塗り情報をレジスタに加算していき、そのレジスタの値が「0」を超える区間のみ塗りつぶす。
塗りつぶし情報作成部116は、変数PXおよび変数PYに「0」を代入する(ステップS360)。「0」が代入されると、塗りつぶし情報作成部116は、レジスタの値を「0」とする(ステップS362)。
レジスタの値が「0」になると、塗りつぶし情報作成部116は、走査線方向、すなわち水平右方向に各点データの塗り情報をレジスタに加算する(ステップS364)。
加算が終了すると、塗りつぶし情報作成部116は、ステップS364にて算出した和が「0」以上か否かを判断する(ステップS366)。
図21は、図20に示す塗り情報を図9に示す座標系で表現し直したものである。図21から明らかなように、この場合、ステップS364にて算出した和は「0」なので(ステップS366にてNO)、塗りつぶし情報作成部116は、X座標の値が変数PXに等しくY座標の値が変数PYに等しい座標が、描画情報格納部102に座標情報として記憶された座標のいずれかであるか否かを判断する(ステップS370)。この場合、座標(0,0)の点は構成画素ではないので(ステップS370にてNO)、塗りつぶし情報作成部116は、変数PXの値を「1」増加させる(ステップS372)。
変数PXの値が「1」増加すると、塗りつぶし情報作成部116は、変数PXの値が「12」以下か否かを判断する(ステップS374)。この場合、変数PXの値が「12」以下なので(ステップS374にてYES)、ステップS364〜ステップS374の処理が繰返される。
その後、PXの値が「13」になった時にも、塗りつぶし情報作成部116は、変数PXの値が「12」以下か否かを判断する(ステップS374)。この場合、PXの値が「12」以下ではないので(ステップS374にてNO)、塗りつぶし情報作成部116は、変数PXの値を「0」とし、変数PYの値を「1」増加させる(ステップS376)。
変数PXの値が「0」され、変数PYの値が「1」増加すると、塗りつぶし情報作成部116は、変数PYの値が「12」以下か否かを判断する。この場合、変数PYの値が「12」以下なので(ステップS378にてYES)、ステップS364〜ステップS374の処理が繰返される。
その後、塗りつぶし情報作成部116は、塗り情報の和を再度算出する(ステップS364)。この場合、変数PXの値が「1」で変数PYの値が「2」であることとする。この場合、図21から明らかなように、塗り情報の和は「+1」となる。
和が算出されると、塗りつぶし情報作成部116は、ステップS364にて算出した和が「0」以上か否かを判断する(ステップS366)。この場合和は「+1」なので(ステップS366にてYES)、塗りつぶし情報作成部116は、変数PXの値をX座標の値とし変数PYの値をY座標の座標値とする点の画素を、予め定められた、背景色とは異なる色の画素とするように、画像を示す画像データの値を設定する(ステップS368)。
画像データの値が設定されると、塗りつぶし情報作成部116は、変数PXの値を「1」増加させる(ステップS372)。
変数PXの値が「1」増加すると、塗りつぶし情報作成部116は、変数PXの値が「12」以下か否かを判断する(ステップS374)。この場合、変数PXの値が「12」以下なので(ステップS374にてYES)、塗りつぶし情報作成部116は、塗り情報の和を再度算出する(ステップS364)。この場合、PXの値が「2」でPYの値が「2」である。この場合、図21から明らかなように、座標(0,2)の塗り情報は「0」で、座標(1,2)の塗り情報は「+1」で、座標(2,2)の塗り情報は「0」である。これにより、それらの和は「+1」である。
和が算出されると、塗りつぶし情報作成部116は、ステップS364にて算出した和が「0」以上か否かを判断する(ステップS366)。この場合和は「+1」なので(ステップS366にてYES)、塗りつぶし情報作成部116は、変数PXの値をX座標の値とし変数PYの値をY座標の座標値とする点の画素を、予め定められた、背景色とは異なる色の画素とするように、画像を示す画像データの値を設定する(ステップS368)。
画像データの値が設定されると、塗りつぶし情報作成部116は、変数PXの値を「1」増加させる(ステップS372)。
変数PXの値が「1」増加すると、塗りつぶし情報作成部116は、変数PXの値が「12」以下か否かを判断する(ステップS374)。この場合、変数PXの値が「12」以下なので(ステップS374にてYES)、ステップS364〜ステップS374の処理が繰返される。
その後、塗りつぶし情報作成部116は、塗り情報の和を再度算出する(ステップS364)。この場合、PXの値が「9」でPYの値が「2」であることとする。この場合、図21から明らかなように、座標(0,2)の塗り情報は「0」で、座標(1,2)の塗り情報は「+1」で、座標(2,2)から座標(8,2)までの塗り情報は「0」で、座標(9,2)の塗り情報は「−1」である。これにより、それらの和は「0」である。
和が算出されると、塗りつぶし情報作成部116は、ステップS364にて算出した和が「0」以上か否かを判断する(ステップS366)。この場合和は「0」なので(ステップS366にてNO)、塗りつぶし情報作成部116は、X座標の値が変数PXに等しくY座標の値が変数PYに等しい座標が、描画情報格納部102に座標情報として記憶された座標のいずれかであるか否かを判断する(ステップS370)。この場合、座標(9,2)の点は構成画素Qなので(ステップS370にてYES)、塗りつぶし情報作成部116は、変数PXの値をX座標の値とし変数PYの値をY座標の座標値とする点の画素を、予め定められた、背景色とは異なる色の画素とするように、画像を示す画像データの値を設定する(ステップS368)。
予め定められた色の点が表示されると、塗りつぶし情報作成部116は、変数PXの値を「1」増加させる(ステップS372)。その後、ステップS374の処理を経て、塗りつぶし情報作成部116は、塗り情報の和を再度算出する(ステップS364)。この場合、変数PXの値が「10」で変数PYの値が「2」である。図21から明らかなように、座標(0,2)の塗り情報は「0」で、座標(1,2)の塗り情報は「+1」で、座標(2,2)から座標(8,2)までの塗り情報は「0」で、座標(9,2)の塗り情報は「−1」で、座標(10,2)の塗り情報は「0」である。これにより、それらの和は「0」である。
和が算出されると、塗りつぶし情報作成部116は、ステップS364にて算出した和が「0」以上か否かを判断する(ステップS366)。この場合和は「0」なので(ステップS366にてNO)、塗りつぶし情報作成部116は、X座標の値が変数PXに等しくY座標の値が変数PYに等しい座標が、描画情報格納部102に座標情報として記憶された座標のいずれかであるか否かを判断する(ステップS370)。この場合、座標(10,2)の点は頂点や構成画素ではないので(ステップS370にてNO)、塗りつぶし情報作成部116は、変数PXの値を「1」増加させる(ステップS372)。その後、ステップS374の処理をいったん経て、ステップS364〜ステップS374の処理が繰返される。
その後、PXの値が「13」になった後(ステップS372)、塗りつぶし情報作成部116は、変数PXの値を「0」とし、変数PYの値を「1」増加させる。これにより、PXの値は「0」となり、PYの値は「3」となる。
その後、ステップS364〜ステップS378の処理が繰返されると、輪郭線の内部を塗りつぶすことができる。塗りつぶした結果を図22に示す。
次に、塗りつぶされる四角形の中に塗りつぶされない四角形を描画するような場合、すなわち白抜きするような図を描く場合について説明する。図23は、表示装置12の表示面の座標系500と四角形PQRSと四角形TUVWの配置とを示す図である。図23に示すように、四角形PQRSの内部に四角形TUVWが存在する。
描画情報処理装置100の電源が入れられると、ステップS301の処理とステップS302の処理とを経て、ステップS303〜ステップS312の処理が繰返されることにより、線分PQ、線分QR、線分RS、および線分SPの各構成画素における塗り情報が付与される。
その後、四角形TUVWの輪郭情報10が入力されると、座標計算部110は、四角形TUVWの輪郭情報に基づいて、輪郭線を構成する構成画素の座標を計算する。描画情報格納部102は、算出された構成画素の座標をいったん記憶する。
図24は、本実施の形態にかかる四角形TUVWの輪郭情報10を示す概念図である。上述したように、輪郭情報10において、座標値の順序は、輪郭線における位置と、輪郭線で囲まれた領域の内側を塗りつぶすか外側を塗りつぶすかということとによって定められている。これにより、四角形TUVWの外側を塗りつぶす場合、座標値の順序は、構成画素T−構成画素U−構成画素V−構成画素W−構成画素Tという順序になる。
図25は、座標計算部110が算出し、描画情報格納部102が記憶した、四角形TUVWの構成画素の座標を示す図である。四角形PQRSの場合と同様に、これらの座標は、輪郭情報10における構成画素の名称に対応付けて記憶されている。
構成画素の座標が記憶されると、点データ読出処理部112は、その座標値のうち、構成画素Tの座標(7,7)を読み出す(ステップS301)。
構成画素Tの座標(7,7)が読み出されると、点データ読出処理部112は、その座標値を点Aに代入する(ステップS302)。
点Aに座標値が代入されると、点データ読出処理部112は、点Aに座標が代入された構成画素に隣接する構成画素の座標が存在するか否かを判断する(ステップS303)。この場合、構成画素t(1)の座標(6,7)が存在するので(ステップS303にてYES)、点データ読出処理部112は、構成画素t(1)の座標(6,7)を読み出し(ステップS304)、点Bに代入する(ステップS305)。
構成画素t(1)の座標(6,7)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここでは、点AのY座標が「7」で点BのY座標が「7」なので(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「7」で点BのX座標が「6」のため(ステップS351にてYES)、屈曲部分置換部134は、点Aすなわち構成画素Tの塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS352)。
構成画素Tの塗り情報に「−1」が加算されると、屈曲部分置換部134は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS353)。ここでは、点Bすなわち構成画素t(1)の塗り情報に「+1」を加算する。
図26は、この時点における塗り情報を示す図である。「−1」加算されたために、構成画素T兼構成画素p(1)である座標(7,7)の塗り情報532は「−2」となっている。構成画素t(1)の塗り情報910は、「+1」加算されたために「+1」となっている。
構成画素t(1)の塗り情報に「+1」が加算されると、いったんステップS312の処理を経て、ステップS303〜ステップS312の処理が繰返される。図27は、構成画素Uの塗り情報に「+1」が加算され(ステップS353)、その後構成画素Uの座標値を点Aに代入した(ステップS312)時点の塗り情報を示す図である。
構成画素Uの座標値が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素u(1)の座標(3,6)を読出し、これを点Bに代入する(ステップS305)。
構成画素u(1)の座標(3,6)が点Bに代入されると、傾き特定処理部120は、点A(3,7)のY座標に対して点B(3,6)のY座標が大きいか否かを判断する(ステップS306)。ここでは、点AのY座標が「7」で点BのY座標が「6」なので(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここでは点AのY座標が「7」で点BのY座標が「6」なので(ステップS307にてYES)、第1数値置換部140は、点Aすなわち構成画素Uの塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS309)。
図28は、この時点における塗り情報を示す図である。構成画素Uの塗り情報911は「−1」加算されたために「+1」となる。
構成画素Uの塗り情報に「−1」が加算されると、点データ読出処理部112は、構成画素u(1)の座標値を点Aに代入する(ステップS312)。
構成画素u(1)の座標値が点Aに代入されると、ステップS303およびステップS304の処理を経た後、ステップS305にて、点データ読出処理部112は、描画情報格納部102から構成画素u(2)の座標(3,5)を読出し、これを点Bに代入する。
構成画素u(2)の座標(3,5)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここでは、点AのY座標が「6」で点BのY座標が「5」なので(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここでは、点AのY座標が「6」で点BのY座標が「5」なので(ステップS307にてYES)、第1数値置換部140は、点Aすなわち構成画素u(1)の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS309)。
図29は、この時点における塗り情報を示す図である。構成画素u(1)の塗り情報912は「−1」加算されたために「0」となる。
構成画素u(1)の塗り情報に「−1」が加算されると、点データ読出処理部112は、構成画素u(2)の座標値を点Aに代入する(ステップS312)。
以下同様に処理を進め、ステップS309にて点Aすなわち構成画素u(3)の塗り情報に「−1」を加算したとする(ステップS309)。図30は、この時点における塗り情報を示す図である。
構成画素u(3)の塗り情報に「−1」が加算されると、点データ読出処理部112は、構成画素Vの座標(3,3)を点Aに代入する(ステップS312)。
構成画素Vの座標が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から点v(1)の座標(4,3)を読出し、これを点Bに代入する(ステップS305)。
点v(1)の座標(4,3)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここではY座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「3」で点BのX座標が「4」のため(ステップS351にてNO)、屈曲部分置換部134は、点Aが示す構成画素すなわち構成画素Vの塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS354)。
構成画素Vの塗り情報に「+1」が加算されると、屈曲部分置換部134は、点Bすなわち点v(1)の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新し(ステップS355)、図3に示すフローチャートのステップS312へ進む。
図31は、この時点における塗り情報を示す図である。構成画素Vの塗り情報913は「+1」加算されたために「+1」となり、点v(1)の塗り情報914は「−1」加算されたために「−1」となる。
点v(1)の塗り情報に「−1」が加算されると、点データ読出処理部112は、点v(1)の座標値を点Aに代入する(ステップS312)。
点v(1)の座標値が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から点v(2)の座標(5,3)を読出し、これを点Bに代入する(ステップS305)。
点v(2)の座標(5,3)が点Bに代入されると、傾き特定処理部120は、点A(4,3)のY座標に対して点B(5,3)のY座標が大きいか否かを判断する(ステップS306)。ここではY座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「4」で点BのX座標が「5」のため(ステップS351にてNO)、屈曲部分置換部134は、点Aが示す構成画素すなわち点v(1)の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS354)。
点v(1)の塗り情報に「+1」が加算されると、屈曲部分置換部134は、点Bすなわち点v(2)の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS355)。
図32は、この時点における塗り情報を示す図である。点v(1)の塗り情報914は「+1」加算されたために「0」となり、点v(2)の塗り情報915は「−1」加算されたために「−1」となる。
点v(2)の塗り情報に「−1」が加算されると、点データ読出処理部112は、点v(2)の座標値を点Aに代入する(ステップS312)。
点v(2)の座標値が点Aに代入されると、ステップS303〜ステップS312の処理が繰返される。
図33は、ステップS355にて構成画素Wの塗り情報に「−1」が加算された時点の塗り情報を示す図である。
構成画素Wの塗り情報に「−1」が加算されると、点データ読出処理部112は、構成画素Wの座標値を点Aに代入する(ステップS312)。
構成画素Wの座標値が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素w(1)の座標(7,4)を読出し、これを点Bに代入する(ステップS305)。
構成画素w(1)の座標(7,4)が点Bに代入されると、傾き特定処理部120は、点A(7,3)のY座標に対して点B(7,4)のY座標が大きいか否かを判断する(ステップS306)。点AのY座標が「3」で点BのY座標が「4」のため(ステップS306にてYES)、第2数値置換部142は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS308)。ここでは、点Bすなわち構成画素w(1)の塗り情報に「+1」を加算する。
図34は、構成画素w(1)の塗り情報に「+1」を加算された時点の塗り情報を示す図である。構成画素w(1)の塗り情報916は「+1」となる。
構成画素w(1)の塗り情報に「+1」が加算されると、点データ読出処理部112は、構成画素w(1)の座標値を点Aに代入する(ステップS312)。
構成画素w(1)の座標値が点Aに代入されると、ステップS303〜ステップS312の処理が繰返される。
図35は、ステップS303にて構成画素Tの塗り情報に「+1」が加算された時点の塗り情報を示す図である。
構成画素Tの塗り情報に「+1」が加算されると、点データ読出処理部112は、構成画素Tの座標値を点Aに代入する(ステップS312)。
構成画素Tの座標値が点Aに代入されると、点データ読出処理部112は、描画情報格納部102が記憶した座標において、構成画素Tに隣接する構成画素の座標が存在するか否かを判断する(ステップS303)。この場合、座標が存在しないので(ステップS303にてNO)、処理は終了する。これにより、図35に示すように、四角形PQRSの内部に四角形TUVWが存在する場合の、輪郭線を構成する各点データの塗り情報を付与することができる。
そして、塗り情報に基づいて、図5に示したステップS360〜ステップS378の処理を実施することにより塗りつぶしを行う。塗りつぶした結果を図36に示す。図36に示すように、四角形PQRSの中に四角形TUVWを白抜きさせた図を表示させることができる。
次に、輪郭線の一部が重なる場合について説明する。図37は、輪郭線の一部を示す図である。
線分800,801,802,および803は、いずれも輪郭線の一部である。線分800,801,および802の一部が重なっている。なお、図37の場合も、水平方向右向きをX軸正方向とし、垂直方向上向きをY軸正方向とし、左下の点の座標を(0,0)とする。
このとき、座標(2,4)が点Aに代入されており、座標(3,4)が点Bに代入されていることとする。
この場合、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここではY座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここではY座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「2」で点BのX座標が「3」のため(ステップS351にてNO)、屈曲部分置換部134は、点Aが示す構成画素すなわち座標(2,4)の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS354)。
座標(2,4)の塗り情報に「+1」が加算されると、屈曲部分置換部134は点Bすなわち座標(3,4)の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS355)。図38は、この時点の塗り情報を示す図である。
座標(3,4)の塗り情報に「−1」が加算されると、点データ読出処理部112は点(3,4)を点Aに代入する(ステップS312)。
点(3,4)が点Aに代入されると、ステップS303〜ステップS312の処理が繰返される。図39は、ステップS355にて座標(6,4)の塗り情報815に「−1」が加算した時点の塗り情報を示す。
座標(6,4)の塗り情報815に「−1」が加算されると、点データ読出処理部112は座標(6,4)を点Aに代入する(ステップS312)。
座標(6,4)が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から線分801を構成する構成画素の座標(6,4)を読出し、これを点Bに代入する(ステップS305)。
座標(6,4)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。この場合、Y座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。この場合、Y座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示すので(ステップS310にてYES)、点データ読出処理部112は座標(6,4)を点Aに代入する(ステップS312)。すなわち、点(6,4)の塗り情報815には何も操作を加えない。よって、塗り情報は図39の状態のまま変化しない。
座標(6,4)が点Aに代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から線分801を構成する構成画素の座標(5,4)を読出し、これを点Bに代入する(ステップS305)。
座標(5,4)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。この場合、Y座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。この場合、Y座標の値が等しいため(ステップS307にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点を示すか否かを判断する(ステップS310)。点Aの座標と点Bの座標とは同一点を示さないため(ステップS310にてNO)、屈曲部分置換部134は、点AのX座標が点BのX座標よりも大きいか否かを判断する(ステップS351)。ここでは、点AのX座標が「6」で点BのX座標が「5」のため(ステップS351にてYES)、屈曲部分置換部134は、点Aすなわち座標(6,4)の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS352)。
座標(6,4)の塗り情報に「−1」が加算されると、屈曲部分置換部134は、点Bすなわち座標(5,4)の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS355)。
図40は、この時点の塗り情報を示す図である。図40に示すように、点(6,4)の塗り情報815は「−1」加算されて「−2」となり、点(5,4)の塗り情報814は「+1」加算されて「+1」となる。
座標(5,4)の塗り情報に「+1」が加算されると、点データ読出処理部112は、座標(5,4)を点Aに代入する(ステップS312)。
座標(5,4)が点Aに代入されると、ステップS303〜ステップS312の処理を経て、点Aすなわち座標(5,4)の塗り情報814に「−1」を加算し、点Bすなわち座標(4,4)の塗り情報813に「+1」を加算し、座標(4,4)を点Aに代入したとする。図41は、この時点の塗り情報を示す図である。
その後、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から座標(4,3)を読出し、これを点Bに代入する(ステップS305)。
座標(4,3)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここでは、点AのY座標が「4」で点BのY座標が「3」なので(ステップS306にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS307)。ここでは、点AのY座標が「4」で点BのY座標が「3」なので(ステップS307にてYES)、第1数値置換部140は、点Aの座標に対応する塗り情報の値に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS309)。ここでは、座標(4,4)の塗り情報に「−1」を加算する。
座標(4,4)の塗り情報に「−1」が加算されると、ステップS312の処理を経て、ステップS303〜ステップS312の処理が実施される。これにより、座標(4,3)の塗り情報816に「−1」が加算される。この時点の塗り情報を図42に示す。
図42の上から2段目すなわちY座標の座標値が「4」の画素において、塗り情報811,812,813,814,および815の値の和は「−1」となっており、座標(6,4)の点で塗り処理が終了することになる。
以上のようにして、本実施の形態に係る描画情報処理装置100は、塗り情報が示す正負の符号に基づいて、塗りつぶし区域(構成画素により区切られる区域)内の画素の色を一定の規則に従う色とするように、二次元画像を示す情報を作成することができる。そして、塗り情報が正負の符号として示す方向に基づいて塗りつぶし区域内の画素であるか否かを識別するため、水平方向に走査しながら各点の塗り情報をレジスタに加算し、その和が「0」より大きければ塗りつぶすという処理を行う。これにより、塗り情報が示す方向に基づいて塗りつぶし処理を行うことができるので、塗り漏れたり塗り過ぎたりせず輪郭線内を塗りつぶすことができる。
また、本実施の形態に係る描画情報処理装置100は、輪郭線が1つの画素のみからなる場合や、輪郭線が重なってしまった場合であっても、塗り漏れたり塗り過ぎたりせず輪郭線内を塗りつぶすことができる。
なお、本実施の形態においては、水平右向きに走査しながら各点の塗り情報をレジスタに加算し、その値が「0」より大きければ塗りつぶすこととされているが、本実施の形態の第1の変形例においては、図21における水平左向き(図21においてX軸に平行で逆の方向)に走査するよう、塗り情報の和を算出しても構わない。この場合、ステップS366にて、塗り情報の和が「0」未満か否かを判断し、塗り情報の和が「0」未満であれば処理がステップS368へ移され、塗り情報の和が「0」以上であれば処理がステップS370へ移されることとなる。
また、本実施の形態においては、四角形PQRSの内側を塗りつぶすためには座標値の順序を構成画素P−構成画素Q−構成画素R−構成画素S−構成画素Pという順序にすることとされているが、本実施の形態の第2の変形例においては、四角形PQRSの外側を塗りつぶすために座標値の順序を構成画素P−構成画素Q−構成画素R−構成画素S−構成画素Pという順序にしても構わない。この場合、塗り情報の値は、図21に示す結果に対して「+」と「−」との符号が逆転した値になる。ゆえに、水平右向きに走査する場合は、ステップS366にて、塗り情報の和が「0」未満か否かが判断される。この場合、塗り情報の和が「0」未満であれば処理がステップS368へ移され、塗り情報の和が「0」以上であれば処理がステップS370へ移されることとなる。逆に、水平左向きに走査する場合は、ステップS366にて、塗り情報の和が「0」を超えるか否かが判断される。この場合、塗り情報の和が「0」を超える場合には処理がステップS368へと移され、塗り情報の和が「0」以下であれば処理がステップS370と移されることとなる。
さらに、本実施の形態の第3の変形例においては、塗り情報に「+1」を加算する処理に代えて「−1」加算する処理を行い、かつ「−1」加算する処理に代えて「+1」加算する処理を実施しても構わない。この場合、図21に示す塗り情報の符号は「+」と「−」が逆転する。ゆえに、水平右向きに走査する場合は、ステップS366にて、塗り情報の和が「0」未満か否かが判断される。この場合、塗り情報の和が「0」未満であれば処理がステップS368へ移され、塗り情報の和が「0」以上であれば処理がステップS370へ移されることとなる。逆に、水平左向きに走査する場合は、ステップS366にて、塗り情報の和が「0」を超えるか否かが判断される。この場合、塗り情報の和が「0」を超える場合には処理がステップS368へと移され、塗り情報の和が「0」以下であれば処理がステップS370と移されることとなる。
さらに、本実施の形態の第4の変形例においては、塗り情報に「+1」を加算する処理に代えて「+α」加算する処理を行い、かつ「−1」加算する処理に代えて「−α」加算する処理を実施しても構わない。なお、「α」は任意の定数である。
また、本実施の形態の第5の変形例においては、ステップS370の処理を実施することに代え、図5の塗りつぶしに先立ち、塗りつぶし情報作成部116は、描画情報格納部102に座標情報として記憶された座標の画素を、予め定められた、背景色とは異なる色の画素とするように、画像を示す画像データの値を設定してもよい。すなわち、塗りつぶし情報作成部116は、塗りつぶしの前に輪郭線を描くための処理を実施してもよい。
また、本実施の形態の第6の変形例においては、水平方向に走査しながら各点の塗り情報をレジスタに加算し、その和が「0」より大きければ塗りつぶすという処理に代え、他の方法で塗りつぶし処理を行ってもよい。
<第2の実施の形態>
以下、本発明の第2の実施の形態に係る描画情報処理装置について説明する。
《描画情報処理装置107の機能的構成》
図43は、本実施の形態に係る描画情報処理装置107の機能的構成を示す図である。
図43を参照して、描画情報処理装置107は、入力部101と、描画情報格納部102と、塗り情報変更部108と、出力処理部104および表示処理部105とを備えている。
塗り情報変更部108は、描画情報格納部102が記憶した塗り情報を変更する。
塗り情報変更部108は、座標計算部110と、点データ読出処理部112と、塗り情報置換部115と、塗りつぶし情報作成部116とを含む。
塗り情報置換部115は、第1の実施の形態にかかる塗り情報置換部114と同様にして、点データ読出処理部112が選択した座標のいずれかに対応する塗り情報領域に記憶された情報を、接線ベクトルの向きの範囲に対応する内容の塗り情報に置換する。
塗り情報置換部115は、傾き特定処理部120と、塗り情報選択置換部124とを含む。
塗り情報選択置換部124は、第1の実施の形態にかかる塗り情報選択置換部122と同様にして、塗り情報領域に記憶された情報のうち点データ読出処理部112が選択した座標のいずれかに対応する情報を、接線ベクトルの向きの範囲に対応する内容の塗り情報に置換する。
塗り情報選択置換部124は、一方置換部132と、屈曲部分置換部136とを含む。
屈曲部分置換部136は、隣接する構成画素のY座標の座標値が等しい場合、座標情報における順序が連続する座標の一方に順序がさらに連続する座標のY座標の座標値と隣接する構成画素のY座標の座標値とが異なっていれば、塗り情報領域に記憶された情報のうちY座標の座標値が異なる構成画素に隣接する構成画素に対応する情報を置換する。
屈曲部分置換部136は、第3数値置換部144と、第4数値置換部146とを含む。
第3数値置換部144は、座標情報における順序が先の座標に対してその順序がさらに先の座標のY座標の座標値がこの文でいう「順序が先の座標」のY座標の座標値と異なっていれば、その「順序が先の座標」に対応する塗り情報領域に記憶された情報を、その情報に対して値が小さい数値の情報に置換する。
第4数値置換部146は、座標情報における順序が後の座標に対してその順序がさらに後の座標のY座標の座標値がこの文でいう「順序が後の座標」のY座標の座標値と異なっていれば、その「順序が後の座標」に対応する塗り情報領域に記憶された情報を、その情報に対して値が大きい数値の情報に置換する。
本実施の形態に係る描画情報処理装置107のハードウェア構成については前述の第1の実施の形態と同じである。それらについての機能も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
図44を参照して、本実施の形態に係る描画情報処理装置107で実行されるプログラムは、水平線分用の塗り情報の設定に関し、以下のような制御を実行する。
ステップS401にて、第3数値置換部144は、点Aと点Bとのうち少なくとも一方のX座標が、予め変数に代入された値よりも大きいか否かを判断する。本実施の形態においては、この変数の値を「最右端値」と称する。なお、図44に示す処理を開始する前に、表示装置12にて取り得るX座標の最小値以下の値を最右端値に代入しておく。もしくは、点Aと点Bとのうちどちらか一方のX座標の値を最右端値として設定しておいても構わない。点Aと点Bとのうち少なくとも一方のX座標が最右端値よりも大きいと判断した場合には(ステップS401にてYES)、処理はステップS402へと移される。もしそうでないと(ステップS401にてNO)、処理はステップS403へ進む。
ステップS402にて、第3数値置換部144は、点AのX座標および点BのX座標のうち、最右端値の値よりも大きい値を最右端値に代入する。なお、点Aと点Bとのうちどちらか一方のX座標の値を最右端値として設定する場合、このステップにおいて点Aと点BとのX座標を比較し、大きい方の値を最右端値に代入しても構わない。
ステップS403にて、第4数値置換部146は、点Aと点Bとのうち少なくとも一方のX座標が、最右端値とは異なる変数に予め代入された値よりも小さいか否かを判断する。本実施の形態においては、この変数の値を「最左端値」と称する。なお、図44に示す処理を開始する前に、表示装置12にて取り得るX座標の最大値以上の値を最左端値に代入しておく。もしくは、点Aと点Bとのうちどちらか一方のX座標の値を最左端値として設定しておいても構わない。点Aと点Bとのうち少なくとも一方のX座標が最左端値よりも小さいと判断した場合には(ステップS403にてYES)、処理はステップS404へと移される。もしそうでないと(ステップS403にてNO)、処理はステップS405へ進む。
ステップS404にて、第4数値置換部146は、点AのX座標および点BのX座標のうち、最左端値の値よりも小さい値を最左端値に代入する。なお、点Aと点Bとのうちどちらか一方のX座標の値を最左端値として設定する場合、このステップにおいて点Aと点BとのX座標を比較し、小さい方の値を最左端値に代入しても構わない。
ステップS405にて、点データ読出処理部112は、点Bを点Aに代入して、ステップS406へ進む。
ステップS406にて、点データ読出処理部112は、描画情報格納部102が記憶した座標において、点Aに座標が代入された構成画素に隣接する構成画素の座標が存在するか否かを判断する。そのような構成画素の座標が存在すると判断した場合には(ステップS406にてYES)、処理はステップS407へと移される。もしそうでないと(ステップS406にてNO)、処理はステップS413へと移される。
ステップS407にて、点データ読出処理部112は、描画情報格納部102に記憶されている、点Aに座標が代入された構成画素に隣接する構成画素の座標を読み出す。
ステップS408にて、点データ読出処理部112は、ステップS407にて読み出した座標を点Bに代入する。
ステップS409にて、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する。点Aの座標に対して点Bの座標が大きいと判断した場合には(ステップS409にてYES)、処理はステップS411へと移される。もしそうでないと(ステップS409にてNO)、処理はステップS410へと移される。
ステップS410にて、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する。点Aの座標に対して点Bの座標が小さいと判断した場合には(ステップS410にてYES)、処理はステップS412へと移される。もしそうでないと(ステップS410にてNO)、処理はステップS401へと移される。
ステップS411にて、第2数値置換部142は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する。
ステップS412にて、第1数値置換部140は、点Aの座標に対応する塗り情報の値に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する。
ステップS413では、第3数値置換部144は、最右端値が示す値にX座標の値が等しく、点Aおよび点BのY座標の座標値をY座標とする点の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する。値が更新されると、第4数値置換部146は、最左端値が示す値にX座標の値が等しく、点Aおよび点BのY座標の座標値をY座標とする点の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する。値が更新されると、第3数値置換部144と第4数値置換部146とは、最左端値と最右端値との値を初期化(このステップにおいては、図44に示す処理を開始する前に代入される値を最左端値と最右端値とに代入すること)する。
なお、その他の処理フローについては前述の第1の実施の形態と同じである。それらについての機能も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
《描画情報処理装置107の動作》
以上のような構造およびフローチャートに基づく、輪郭情報10に基づいて輪郭線を描くときに各点に対して塗り情報を付与し、その塗り情報を使用して輪郭線内を塗りつぶす際の、描画情報処理装置107の動作について説明する。
ここでは、第1の実施の形態と同様、図9に示す座標系に基づいて、図6に示す四角形PQRSを描く場合について説明する。なお、線分PQ間の処理は第1の実施の形態と同じであるためここでは説明を行わず、線分PQ間の塗り情報を付与し、ステップS303へ処理が戻ったところから説明を行う。この時点における塗り情報は図12と同じであり、点Aには構成画素Qの座標(9,2)が代入されている。
ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素q(1)の座標(8,2)を読出し、これを点Bに代入する(ステップS305)。
座標(8,2)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。この場合、Y座標が等しいため(ステップS306にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点であるか否かを判断する(ステップS310)。ここでは、同一点ではないため(ステップS310にてNO)、第3数値置換部144は、最右端値に表示装置12のX座標の最小値以下の値を代入し、第4数値置換部146は、最左端値に表示装置12のX座標の最大値以上の値を代入する。本実施の形態の場合、最右端値に「−1000」を代入し、最左端値に「1000」を代入する。
最右端値および最左端値に値が代入されると、第3数値置換部144は、点A(9,2)と点B(8,2)とのうち最右端値よりも大きいX座標を持つ点が存在するか否かを判断する(ステップS401)。ここでは、最右端値が「−1000」であり、点AのX座標および点BのX座標共に最右端値より大きいため(ステップS401にてYES)、第3数値置換部144は、点Aと点Bとのうちで大きい方のX座標の値を最右端値に代入する(ステップS402)。ここでは、点Aすなわち構成画素QのX座標「9」が最右端値に代入される。
構成画素QのX座標「9」が最右端値に代入されると、第4数値置換部146は、点A(9,2)と点B(8,2)とのうち最左端値よりも小さいX座標を持つ点が存在するか否かを判断する(ステップS403)。ここでは、最左端値が「1000」であり、点AのX座標および点BのX座標共に最左端値より小さいため(ステップS403にてYES)、第4数値置換部146は、点Aと点Bとのうち小さい方のX座標の値を最左端値に代入する(ステップS404)。ここでは、点Bすなわち構成画素q(1)のX座標「8」が最左端値に代入される。
構成画素q(1)のX座標「8」が最左端値に代入されると、点データ読出処理部112は、構成画素q(1)を点Aに代入する(ステップS405)。
構成画素q(1)が点Aに代入されると、点データ読出処理部112は、描画情報格納部102が記憶した座標において、点Aに座標が代入された構成画素に隣接する構成画素の座標が存在するか否かを判断する(ステップS406)。この場合、そのような座標が存在するので(ステップS406にてYES)、点データ読出処理部112は、描画情報格納部102に記憶されている、点Aに座標が代入された構成画素に隣接する構成画素q(2)の座標(7,2)の座標を読み出す(ステップS407)。その座標が読み出されると、点データ読出処理部112は、構成画素q(2)の座標(7,2)を点Bに代入する(ステップS408)。
構成画素q(2)の座標(7,2)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS409)。ここでは、Y座標の値が等しいため(ステップS409にてNO)、第3数値置換部144は、点A(8,2)と点B(7,2)の中でX座標の値が最右端値よりも大きい点が存在するか否かを判断する(ステップS401)。ここでは、最右端値が「9」であり、それよりも大きいX座標を持つ点は存在しないため(ステップS401にてNO)、第4数値置換部146は、点A(8,2)と点B(7,2)の中でX座標の値が最左端値よりも小さい点が存在するか否かを判断する(ステップS403)。ここでは、最左端値が「8」であり、点BのX座標はそれより小さいため(ステップS403にてYES)、第4数値置換部146は、最左端値に点Bすなわち構成画素q(2)のX座標の値を代入する(ステップS404)。
構成画素q(2)のX座標の値が最左端値に代入されると、点データ読出処理部112は、構成画素q(2)を点Aに代入する(ステップS405)。
構成画素q(2)が点Aに代入されると、ステップS406〜ステップS410の処理が繰返される。
その後、最左端値に構成画素RのX座標が代入され、構成画素r(1)の座標が読み込まれ、点Bに代入されたとする(ステップS408)。この時点においては、最右端値は構成画素QのX座標の値「9」に等しく、最左端値は構成画素RのX座標「1」に等しく、点Aには構成画素Rが代入され、点Bには構成画素r(1)が代入されている。
構成画素r(1)の座標が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS409)。ここでは、点AのY座標の値が「2」で点BのY座標の値が「3」なので(ステップS409にてYES)、塗り情報選択置換部122は、点Bの座標に対応する塗り情報の値に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する(ステップS411)。ここでは、点Bすなわち構成画素r(1)の塗り情報に「+1」を加算する。
構成画素r(1)の塗り情報に「+1」が加算されると、第3数値置換部144は、X座標の値が最右端値に等しく、かつY座標の座標値が点Aおよび点BのY座標値に等しい点の塗り情報に「−1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する。ここでは、構成画素Qの塗り情報に「−1」を加算する。さらに、第4数値置換部146は、X座標の値が最左端値に等しく、かつY座標の座標値が点Aおよび点BのY座標値に等しい点の塗り情報に「+1」を加算し、描画情報格納部102に記憶された塗り情報を加算の結果得られた値に更新する。ここでは、構成画素Rの塗り情報に「+1」を加算する(ステップS413)。
図45は、この時点の塗り情報を示す。図45に示すように、この時点において、構成画素Qの塗り情報601は「−1」となり、構成画素Rの塗り情報602は「+1」となる。
塗り情報の加算が終了すると、点データ読出処理部112は、構成画素r(1)の座標値を点Aに代入する(ステップS312)。
以降、線分RS間の処理は第1の実施の形態と同じであるためここでは説明を行わず、線分SP間の構成画素の塗り情報を付与し、ステップS312の処理が終了したところから説明を行う。この時点において、点Aには構成画素S(4,8)が代入されている。図46は、この時点の塗り情報を示す。
点Aに座標値が代入されると、ステップS303およびステップS304の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素s(1)の座標(5,8)を読出し、これを点Bに代入する(ステップS305)。
構成画素s(1)の座標(5,8)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS306)。ここでは、Y座標の値が等しいため(ステップS306にてNO)、傾き特定処理部120は、点Aの座標と点Bの座標とが同一点かどうかを判断する(ステップS310)。ここでは、同一点ではないため(ステップS310にてNO)、最右端値に「−1000」を代入し、最左端値に「1000」を代入する。
最右端値と最左端値とに値が代入されると、第3数値置換部144は、点A(4,8)と点B(5,8)との中でX座標の値が最右端値よりも大きい点が存在するか否かを判断する(ステップS401)。ここでは、最右端値が「−1000」であり、点AのX座標および点BのX座標は共に最右端値よりも大きいため(ステップS401にてYES)、第3数値置換部144は、点Aと点Bとの中で大きい方のX座標の値を最右端値に代入する(ステップS402)。ここでは、最右端値に点Bすなわち構成画素s(1)のX座標の値「5」が代入される。
構成画素s(1)のX座標の値「5」が代入されると、第4数値置換部146は、点A(4,8)と点B(5,8)との中でX座標の値が最左端値よりも小さい点が存在するか否かを判断する(ステップS403)。ここでは、最左端値が「1000」であり、点AのX座標および点BのX座標共に最左端値よりも小さいため(ステップS403にてYES)、第3数値置換部144は、点Aと点Bとの中で小さい方のX座標の値を最左端値に代入する(ステップS404)。ここでは、点Aすなわち構成画素SのX座標の値「4」が最左端値に代入される。
構成画素SのX座標の値「4」が最左端値に代入されると、点データ読出処理部112は、構成画素s(1)を点Aに代入する(ステップS405)。
構成画素s(1)が点Aに代入されると、ステップS406およびステップS407の処理を経て、点データ読出処理部112は、描画情報格納部102から構成画素Pの座標(6,8)を読出し、これを点Bに代入する(ステップS408)。
構成画素Pの座標(6,8)が点Bに代入されると、傾き特定処理部120は、点AのY座標に対して点BのY座標が大きいか否かを判断する(ステップS409)。ここでは、Y座標の値が等しいため(ステップS409にてNO)、傾き特定処理部120は、点AのY座標に対して点BのY座標が小さいか否かを判断する(ステップS410)。この場合、Y座標の値が等しいため(ステップS410にてNO)、第3数値置換部144は、点A(5,8)と点B(6,8)との中でX座標の値が最右端値よりも大きい点が存在するか否かを判断する(ステップS401)。ここでは、最右端値が「5」であり、点BのX座標はそれよりも大きいため(ステップS401にてYES)、第3数値置換部144は、点Bすなわち構成画素PのX座標「6」を最右端値に代入する(ステップS402)。
構成画素PのX座標「6」が最右端値に代入されると、第4数値置換部146は、点A(5,8)と点B(6,8)との中でX座標の値が最左端値よりも小さい点が存在するか否かを判断する(ステップS403)。ここでは、最左端値が「4」であり、それより小さいX座標を持つ点は存在しないため(ステップS403にてNO)、点データ読出処理部112は、構成画素Pの座標を点Aに代入する(ステップS405)。
構成画素Pの座標が点Aに代入されると、点データ読出処理部112は、輪郭線を構成する点データにおいて、ステップS405にてセットした点Aに続く次の点データが存在するか否かを判断する(ステップS406)。この場合、次に続く点データが存在しないため(ステップS406にてNO)、第3数値置換部144は、X座標の値が最右端値に等しく、かつY座標の座標値が点Aおよび点Bに等しい点の塗り情報に「−1」を加算する。ここでは、構成画素Pの塗り情報に「−1」を加算する。さらに、第4数値置換部146は、X座標の値が最左端値に等しく、かつY座標の座標値が点Aおよび点Bに等しい点の塗り情報に「+1」を加算する。ここでは、構成画素Sの塗り情報に「+1」を加算する(ステップS413)。
図47は、この時点の塗り情報を示す。図47に示すように、この時点において、構成画素Sの塗り情報603は「+1」加算されて「+2」となり、構成画素Pの塗り情報604は「−1」加算されて「−2」となる。
これにより、図47に示すように、四角形PQRSの輪郭線を構成する各点データの塗り情報を付与することができる。
次に、図47に示す塗り情報をもとに四角形PQRSの内部を塗りつぶす際の動作は第1の実施の形態と同様である。
以上のようにして、本実施の形態に係る描画情報処理装置は、輪郭線データを描画する際に、輪郭線データを構成する構成画素に対して塗り情報を付与し、付与された塗り情報を使用して輪郭線内部の塗り処理を実行することで塗り漏れたり塗り過ぎたりせず輪郭線内を塗りつぶすことができる。
なお、本実施の形態においては、水平右向きに走査しながら各点の塗り情報をレジスタに加算し、その値が「0」より大きければ塗りつぶすこととされているが、第1の実施の形態と同様に、図21における水平左向き(図21においてX軸に平行で逆の方向)に走査するよう、塗り情報の和を算出しても構わない。この場合、ステップS366にて、塗り情報の和が「0」未満か否かを判断し、塗り情報の和が「0」未満であれば処理がステップS368へ移され、塗り情報の和が「0」以上であれば処理がステップS370へ移されることとなる。
また、第1の実施の形態と同様に、四角形PQRSの外側を塗りつぶすために座標値の順序を構成画素P−構成画素Q−構成画素R−構成画素S−構成画素Pという順序にしても構わない。この場合、塗り情報の値は、図21に示す結果に対して「+」と「−」との符号が逆転した値になる。ゆえに、水平右向きに走査する場合は、ステップS366にて、塗り情報の和が「0」未満か否かが判断される。この場合、塗り情報の和が「0」未満であれば処理がステップS368へ移され、塗り情報の和が「0」以上であれば処理がステップS370へ移されることとなる。逆に、水平左向きに走査する場合は、ステップS366にて、塗り情報の和が「0」を超えるか否かが判断される。この場合、塗り情報の和が「0」を超える場合には処理がステップS368へと移され、塗り情報の和が「0」以下であれば処理がステップS370と移されることとなる。
さらに、第1の実施の形態と同様に、塗り情報に「+1」を加算する処理に代えて「−1」加算する処理を行い、かつ「−1」加算する処理に代えて「+1」加算する処理を実施しても構わない。この場合、図21に示す塗り情報の符号は「+」と「−」が逆転する。ゆえに、水平右向きに走査する場合は、ステップS366にて、塗り情報の和が「0」未満か否かが判断される。この場合、塗り情報の和が「0」未満であれば処理がステップS368へ移され、塗り情報の和が「0」以上であれば処理がステップS370へ移されることとなる。逆に、水平左向きに走査する場合は、ステップS366にて、塗り情報の和が「0」を超えるか否かが判断される。この場合、塗り情報の和が「0」を超える場合には処理がステップS368へと移され、塗り情報の和が「0」以下であれば処理がステップS370と移されることとなる。
さらに、第1の実施の形態と同様に、塗り情報に「+1」を加算する処理に代えて「+α」加算する処理を行い、かつ「−1」加算する処理に代えて「−α」加算する処理を実施しても構わない。なお、「α」は任意の定数である。
また、第1の実施の形態と同様に、ステップS370の処理を実施することに代え、図5の塗りつぶしに先立ち、塗りつぶし情報作成部116は、描画情報格納部102に座標情報として記憶された座標の画素を、予め定められた、背景色とは異なる色の画素とするように、画像を示す画像データの値を設定してもよい。すなわち、塗りつぶし情報作成部116は、塗りつぶしの前に輪郭線を描くための処理を実施してもよい。
また、第1の実施の形態と同様に、水平方向に走査しながら各点の塗り情報をレジスタに加算し、その和が「0」より大きければ塗りつぶすという処理に代え、他の方法で塗りつぶし処理を行ってもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明の第1の実施の形態に係る描画情報処理装置の機能的構成を示す図である。 本発明の第1の実施の形態に係るコンピュータシステムの内部構成を示す図である。 本発明の第1の実施の形態に係る塗り情報の設定処理の制御の手順を示すフローチャートである。 本発明の第1の実施の形態に係る水平線分用の塗り情報の設定処理の制御の手順を示すフローチャートである。 本発明の第1の実施の形態に係る塗りつぶし処理の制御の手順を示すフローチャートである。 本発明の第1の実施の形態に係る表示装置の表示面の座標系と図形の配置とを示す第1の図である。 本発明の第1の実施の形態に係る輪郭情報の第1の概念図である。 本発明の第1の実施の形態に係る座標計算部が算出し、描画情報格納部が記憶した、構成画素の座標を示す第1の図である。 本発明の第1の実施の形態に係る構成画素の位置を示す図である。 本発明の第1の実施の形態に係る塗り情報を示す第1の図である。 本発明の第1の実施の形態に係る塗り情報を示す第2の図である。 本発明の第1の実施の形態に係る塗り情報を示す第3の図である。 本発明の第1の実施の形態に係る塗り情報を示す第4の図である。 本発明の第1の実施の形態に係る塗り情報を示す第5の図である。 本発明の第1の実施の形態に係る塗り情報を示す第6の図である。 本発明の第1の実施の形態に係る塗り情報を示す第7の図である。 本発明の第1の実施の形態に係る塗り情報を示す第8の図である。 本発明の第1の実施の形態に係る塗り情報を示す第9の図である。 本発明の第1の実施の形態に係る塗り情報を示す第10の図である。 本発明の第1の実施の形態に係る塗り情報を示す第11の図である。 本発明の第1の実施の形態に係る塗り情報を示す第12の図である。 本発明の第1の実施の形態に係る塗りつぶし結果を示す第1の図である。 本発明の第1の実施の形態に係る表示装置の表示面の座標系と図形の配置とを示す第2の図である。 本発明の第1の実施の形態に係る輪郭情報の第2の概念図である。 本発明の第1の実施の形態に係る座標計算部が算出し、描画情報格納部が記憶した、構成画素の座標を示す第2の図である。 本発明の第1の実施の形態に係る塗り情報を示す第13の図である。 本発明の第1の実施の形態に係る塗り情報を示す第14の図である。 本発明の第1の実施の形態に係る塗り情報を示す第15の図である。 本発明の第1の実施の形態に係る塗り情報を示す第16の図である。 本発明の第1の実施の形態に係る塗り情報を示す第17の図である。 本発明の第1の実施の形態に係る塗り情報を示す第18の図である。 本発明の第1の実施の形態に係る塗り情報を示す第19の図である。 本発明の第1の実施の形態に係る塗り情報を示す第20の図である。 本発明の第1の実施の形態に係る塗り情報を示す第21の図である。 本発明の第1の実施の形態に係る塗り情報を示す第22の図である。 本発明の第1の実施の形態に係る塗りつぶし結果を示す第2の図である。 本発明の第1の実施の形態に係る輪郭線の一部を示す図である。 本発明の第1の実施の形態に係る塗り情報を示す第23の図である。 本発明の第1の実施の形態に係る塗り情報を示す第24の図である。 本発明の第1の実施の形態に係る塗り情報を示す第25の図である。 本発明の第1の実施の形態に係る塗り情報を示す第26の図である。 本発明の第1の実施の形態に係る塗り情報を示す第27の図である。 本発明の第2の実施の形態に係る描画情報処理装置の機能的構成を示す図である。 本発明の第2の実施の形態に係る水平線分用の塗り情報の設定処理の制御の手順を示すフローチャートである。 本発明の第2の実施の形態に係る塗り情報を示す第1の図である。 本発明の第2の実施の形態に係る塗り情報を示す第2の図である。 本発明の第2の実施の形態に係る塗り情報を示す第3の図である。 ある画像領域の中の輪郭線を示す第1の図である。 輪郭線の極大値あるいは極小値から所定の方向に走査するステップを示す概念図である。 輪郭線の始点と終点とが誤認される様子を示す概念図である。 輪郭線の始点や終点に誤認されやすい点を示す概念図である。 ある画像領域の中の輪郭線を示す第2の図である。 ある画像領域の中の輪郭線を示す第3の図である。 塗り漏れや塗り過ぎの一例を示す図である。 図形の輪郭線を示す図である。 輪郭線の位置を示す第1の図である。 輪郭線の位置を示す第2の図である。 塗潰される点の配置を示す図である。
符号の説明
10 輪郭情報、11 外部装置、12 表示装置、100,107 描画情報処理装置、101 入力部、102 描画情報格納部、103,108 塗り情報変更部、104 出力処理部、105 表示処理部、110 座標計算部、112 点データ読出処理部、114,115 塗り情報置換部、116 塗りつぶし情報作成部、120 傾き特定処理部、122,124 塗り情報選択置換部、132 一方置換部、134,136 屈曲部分置換部、140 第1数値置換部、142 第2数値置換部、144 第3数値置換部、146 第4数値置換部、200 コンピュータシステム、210 光ディスク、211 磁気ディスク、220 コンピュータ、224 リモートコントローラ、230 光ディスクドライブ、232 磁気ディスクドライブ、234 リモコンインタフェース、236 CPU、238 ROM、240 RAM、242 ハードディスク、244 バス、500 座標系、530 黒枠、531,532,541,542,543,551,552,561,562,601,602,603,604,811,812,813,814,815,816,910,911,912,913,914,915,916 塗り情報、700 画像領域、701,706 輪郭線、703,707 水平ライン、800,801,802,803 線分、951,952,953,954,955,956,957,958 点。

Claims (8)

  1. 二次元画像を画素により表示するために情報を処理する描画情報処理装置であって、
    前記画素の座標それぞれに対応付けて塗り情報を記憶する塗り情報領域に情報を予め記憶し、前記二次元画像の輪郭線を構成する構成画素のいずれかである複数の座標を示す座標情報を記憶するための記憶手段を含み、
    前記塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示し、
    前記記憶手段が前記塗り情報領域に記憶した情報を変更するための情報変更手段をさらに含み、
    前記情報変更手段は、
    前記座標情報が示す複数の座標のうち少なくとも2つを選択するための座標選択手段と、
    前記座標選択手段が選択した座標のいずれかに対応する前記塗り情報領域に記憶された記憶情報を、ベクトルの向きの範囲に対応する内容の前記塗り情報に置換するための置換手段とを含み、
    前記ベクトルは、前記座標選択手段が選択した座標のいずれかを両端とする区間において前記輪郭線に接する、描画情報処理装置。
  2. 前記座標情報は、隣接する前記構成画素の座標が連続する順序となるように前記座標を示す情報を含み、
    前記置換手段は、
    前記座標情報において前記順序が連続する座標の、前記座標軸の他方に平行な方向である他方方向の座標値が相違するか否かを判断するための相違判断手段と、
    前記他方方向の座標値が相違する場合、前記座標情報における前記座標の順序と前記他方方向の座標値の大小関係とに基づいて置換の対象となる前記記憶情報を選択し、選択した前記塗り情報領域に記憶された前記記憶情報を、前記座標情報における前記座標の順序と前記他方方向の座標値の大小関係とに対応する内容の前記塗り情報に置換するための選択置換手段を含む、請求項1に記載の描画情報処理装置。
  3. 前記選択置換手段は、
    前記他方方向の座標値が相違する場合、前記順序が先の座標の前記他方方向の座標値が前記順序が後の座標の前記他方方向の座標値より大きいか否かに応じて、前記順序が連続する座標の一方に対応する前記記憶情報を置換するための一方置換手段と、
    前記他方方向の座標値が等しい場合、前記順序が連続する座標の一方に前記順序がさらに連続する座標の前記他方方向の座標値が前記順序が連続する座標の前記他方方向の座標値と異なっていれば、前記座標の一方に対応する前記記憶情報を置換するための屈曲部分置換手段とを含む、請求項2に記載の描画情報処理装置。
  4. 前記座標情報は、順序が連続する座標は隣接する前記構成画素を示し、かつ前記順序が最初の座標と前記順序が最後の座標とが同一の前記構成画素を示すように、前記構成画素の座標を示す情報を含み、
    前記塗り情報は、前記方向を正負の符号で示す数値の情報を含み、
    前記一方置換手段は、
    前記順序が先の座標の前記他方方向の座標値が前記順序が後の座標の前記他方方向の座標値より大きければ、前記順序が先の座標に対応する前記記憶情報を、前記記憶情報に対して値が小さい前記数値の情報に置換するための第1の数値置換手段と、
    前記順序が先の座標の前記他方方向の座標値が前記順序が後の座標の前記他方方向の座標値より小さければ、前記順序が後の座標に対応する前記記憶情報を、前記記憶情報に対して値が大きな前記数値の情報に置換するための第2の数値置換手段とを含み、
    前記屈曲部分置換手段は、
    前記順序が先の座標に対して前記順序がさらに先の座標の前記他方方向の座標値が前記順序が連続する座標の前記他方方向の座標値と異なっていれば、前記順序が連続する座標のうち前記順序が先の座標に対応する前記記憶情報を、前記記憶情報に対して値が小さい前記数値の情報に置換するための第3の数値置換手段と、
    前記順序が後の座標に対して前記順序がさらに後の座標の前記他方方向の座標値が前記順序が連続する座標の前記他方方向の座標値と異なっていれば、前記順序が連続する座標のうち前記順序が後の座標に対応する前記記憶情報を、前記記憶情報に対して値が大きい前記数値の情報に置換するための第4の数値置換手段とを含み、
    前記情報変更手段は、前記数値の情報が示す正負の符号に基づいて前記構成画素により区切られる前記塗りつぶし区域内の画素の色を一定の規則に従う色とするように、前記二次元画像を画素により示す情報を作成するための塗りつぶし情報作成手段をさらに含む、請求項3に記載の描画情報処理装置。
  5. 前記情報変更手段は、前記塗り情報が示す方向に基づいて前記構成画素により区切られる前記塗りつぶし区域内の画素の色を一定の規則に従う色とするように、前記二次元画像を画素により示す情報を作成するための塗りつぶし情報作成手段をさらに含む、請求項1に記載の描画情報処理装置。
  6. 二次元画像を画素により表示するために情報を、記憶部とCPUとを備えるコンピュータを用いて処理する描画情報処理方法であって、
    前記CPUが、前記画素の座標それぞれに対応付けて塗り情報を記憶するための前記記憶部の塗り情報領域に情報を予め記憶するステップを含み、
    前記塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示し、
    前記CPUが、前記二次元画像の輪郭線を構成する構成画素のいずれかである複数の座標を示す座標情報を前記記憶部に記憶するステップと、
    前記CPUが、前記記憶部に記憶されている前記座標情報が示す複数の座標のうち少なくとも2つを選択するステップと、
    前記CPUが、前記選択するステップにおいて選択された座標のいずれかに対応する前記塗り情報領域に記憶された記憶情報を、前記選択するステップにおいて選択された座標のいずれかを両端とする区間において前記輪郭線に接するベクトルの向きの範囲に対応する内容の前記塗り情報に置換するステップとをさらに含む、描画情報処理方法。
  7. 二次元画像を画素により表示するために情報を処理する描画情報処理プログラムであって、
    前記画素の座標それぞれに対応付けて塗り情報を記憶する塗り情報領域に情報を予め記憶する予備記憶ステップを含み、
    前記塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示し、
    前記二次元画像の輪郭線を構成する構成画素のいずれかである複数の座標を示す座標情報を記憶する座標情報記憶ステップと、
    前記座標情報が示す複数の座標のうち少なくとも2つを選択する座標選択ステップと、
    前記座標選択ステップにおいて選択された座標のいずれかに対応する前記塗り情報領域に記憶された記憶情報を、前記座標選択ステップにおいて選択された座標のいずれかを両端とする区間において前記輪郭線に接するベクトルの向きの範囲に対応する内容の前記塗り情報に置換する置換ステップとをさらに含む各ステップをコンピュータに実行させるための描画情報処理プログラム。
  8. 二次元画像を画素により表示するために情報を処理する描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体であって、
    前記画素の座標それぞれに対応付けて塗り情報を記憶する塗り情報領域に情報を予め記憶する予備記憶ステップを含み、
    前記塗り情報は、塗りつぶしの対象となる塗りつぶし区域が存在する方向であって座標軸の一方に平行な方向を示し、
    前記二次元画像の輪郭線を構成する構成画素のいずれかである複数の座標を示す座標情報を記憶する座標情報記憶ステップと、
    前記座標情報が示す複数の座標のうち少なくとも2つを選択する座標選択ステップと、
    前記座標選択ステップにおいて選択された座標のいずれかに対応する前記塗り情報領域に記憶された記憶情報を、前記座標選択ステップにおいて選択された座標のいずれかを両端とする区間において前記輪郭線に接するベクトルの向きの範囲に対応する内容の前記塗り情報に置換する置換ステップとをさらに含む各ステップをコンピュータに実行させるための描画情報処理プログラムを記録した、コンピュータ読取り可能な記録媒体。
JP2007119640A 2007-04-27 2007-04-27 描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体 Expired - Fee Related JP4845043B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007119640A JP4845043B2 (ja) 2007-04-27 2007-04-27 描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007119640A JP4845043B2 (ja) 2007-04-27 2007-04-27 描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2008276535A JP2008276535A (ja) 2008-11-13
JP4845043B2 true JP4845043B2 (ja) 2011-12-28

Family

ID=40054408

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007119640A Expired - Fee Related JP4845043B2 (ja) 2007-04-27 2007-04-27 描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体

Country Status (1)

Country Link
JP (1) JP4845043B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778261A (ja) * 1993-06-18 1995-03-20 Fujitsu General Ltd 画像の特定領域を塗りつぶす方法
JP3493745B2 (ja) * 1994-09-26 2004-02-03 カシオ計算機株式会社 図形描画装置
JP4664169B2 (ja) * 2005-09-26 2011-04-06 三菱電機株式会社 図形描画装置及び図形描画プログラム

Also Published As

Publication number Publication date
JP2008276535A (ja) 2008-11-13

Similar Documents

Publication Publication Date Title
EP2515275A1 (en) Device and method for image generation
JP4400667B2 (ja) 描画装置、画像出力装置及びプログラム
WO2013136594A1 (ja) 図面表示装置、及び図面表示プログラム
JP3791259B2 (ja) アウトラインスムージング処理方法
US7948494B2 (en) Character rendering device, display device, and printer
JP4719603B2 (ja) 描画装置及び破線描画方法
US8970604B2 (en) State display device and display method of state display device
JP4845043B2 (ja) 描画情報処理装置、描画情報処理方法、描画情報処理プログラム、および描画情報処理プログラムを記録したコンピュータ読取り可能な記録媒体
WO2005004105A1 (ja) 文字表示装置、 文字表示方法、 文字表示プログラムおよび記録媒体
AU7802881A (en) Graphic and textual image generator for a raster scan display
JP5114249B2 (ja) 表示装置および表示方法
JP2698170B2 (ja) 閉領域塗りつぶし表示方法
JPH06274303A (ja) マルチウィンドウ表示方法
JP2009205537A (ja) 表示装置、表示方法及びプログラム
JP4890425B2 (ja) マンガのコマ画像のためのマスク画像の作成方法及びプログラム
JP7499476B2 (ja) データ作成システム、学習システム、推定システム、処理装置、評価システム、データ作成方法、及びプログラム
JP4245998B2 (ja) 作画装置、プログラムおよび記録媒体
JP4660301B2 (ja) 描画方法、描画装置およびそのプログラム
JP4666480B2 (ja) 線描画装置
WO2002091304A1 (fr) Systeme d&#39;edition de motif par entree manuelle
JP4320604B2 (ja) 画像処理方法および画像処理装置
JP2010009271A (ja) 画像処理装置
JP5097685B2 (ja) 画像処理装置および画像処理プログラム
JP2015191565A (ja) 表示入力装置
JP2006209654A (ja) パターン付多角形描画装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110712

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110825

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110913

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111005

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4845043

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees