(57)【要約】【課題】容易かつ柔軟なベクター描画を可能とする【解決手段】線幅を含むパスコマンドに基づいて描画用図形情報を生成するベジェ曲線部２及びストローク部３と、マトリックスコマンドに基づいて図形情報又は描画用図形情報にマトリックス変換を実行するマトリックス部と、ベクターコマンドに含まれる制御コマンドに基づいてベジェ曲線部２及びストローク部３とマトリックス部とを制御する制御部８と、を含み、拡大縮小処理を線幅に影響させる場合、制御部８は、ベジェ曲線部２及びストローク部３が描画情報に基づいて生成した描画情報に対して、マトリックス部がマトリックス変換を実行するように制御し、拡大縮小処理を線幅に影響させない場合、制御部８は、マトリックス部がマトリックス変換を実行した図形情報に対して、ベジェ曲線部２及びストローク部３が描画用図形情報を生成するように制御することを特徴とする、ベクター画像描画装置。【選択図】図１
2014010572.tif 000002
【特許請求の範囲】
【請求項１】
ベクターコマンドに含まれる線幅を含む図形情報に基づいて描画用図形情報を生成する描画用図形情報生成部と、
ベクターコマンドに含まれるマトリックスコマンドに基づいて前記図形情報又は描画用図形情報にマトリックス変換を実行するマトリックス部と、
前記ベクターコマンドに含まれる制御コマンドに基づいて前記描画用図形情報生成部と前記マトリックス部とを制御する制御部と、を含み、
前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させる場合、
前記制御部は、前記描画用図形情報生成部が前記図形情報に基づいて生成した前記描画用図形情報に対して、前記マトリックス部がマトリックス変換を実行するように制御し、
前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させない場合、
前記制御部は、前記マトリックス部がマトリックス変換を実行した前記図形情報に対して、前記描画用図形情報生成部が前記描画用図形情報を生成するように制御することを特徴とする、ベクター画像描画装置。
【請求項２】
前記制御部は、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させるか否かを、前記ベクターコマンドに含まれる制御情報に基づいて決定する、請求項１記載のベクター画像装置。
【請求項３】
前記制御部は、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させるか否かを、ユーザからの指示に基づいて決定する、請求項１記載のベクター画像装置。
【請求項４】
前記マトリックス部が実行する前記マトリックス変換は、アフィン変換、パースペクティブ変換を含む、請求項１記載のベクター画像装置。
【請求項５】
前記描画用図形情報生成部は、ベジェ曲線部とストローク部を含む、請求項１記載のベクター画像装置。
【請求項６】
ベクターコマンドに含まれる線幅を含む図形情報に基づいて描画用図形情報を生成する描画用図形情報生成ステップと、
ベクターコマンドに含まれるマトリックスコマンドに基づいて前記図形情報又は描画用図形情報にマトリックス変換を実行するマトリックス変換ステップと、
前記ベクターコマンドに含まれる制御コマンドに基づいて前記描画用図形情報生成ステップと前記マトリックス変換ステップとの実行順序を切り替える切り替えステップと、を含み、
前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させる場合、
前記切り替えステップは、前記描画用図形情報生成ステップにおいて前記図形情報に基づいて生成した前記描画用図形情報に対して、前記マトリックス変換ステップがマトリックス変換を実行するように切り替え、
前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させない場合、
前記切り替えステップは、前記マトリックス変換ステップにおいてマトリックス変換が実行された前記図形情報に対して、前記描画用図形情報生成ステップが前記描画用図形情報を生成するように切り替えることを特徴とする、ベクター画像描画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、容易かつ柔軟なベクター描画を可能とするベクター画像描画装置及びベクター画像描画方法に関する。
【背景技術】
【０００２】
ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）やＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）等の表示装置に表示する画像データには、画素の２次元配列であるビットマップ画像のデータと、直線（以下では、「線分」と同義とする）や曲線の始終点座標や制御情報に基づくベクター画像のデータがある。
【０００３】
画像のデータは、画像を「ドット」と呼ばれる画素１個分に相当する点の集合に分解して展開して生成したものである。ビットマップ画像のデータとは、画像をドットの２次元配列（以下では、「マトリックス」と呼ぶ）で表現したものであるといえる。
【０００４】
ビットマップ画像のデータには、画素ごとの色と輝度、及び縦横のサイズが固定の情報として保持されている。このため、ビットマップ画像をデータに基づいてそのまま表示する場合、画素の座標等を演算することは不要である。しかしながら、ビットマップ画像では、図形のデータに、拡大や縮小する変換を施したり、正方形を平行四辺形に変形するアフィン変換、さらに正方形を任意の凸四辺形に変形するパースペクティブ変換等を施したりすると、画像の品質を維持することが困難になることがあった。さらに、ビットマップ画像のデータには、画像のデータ量が大きいといった欠点もある。
【０００５】
これに対してベクター画像は、基本的に図形を点で連結された線で表す。ベクター画像を構成するデータには、例えば、線の始点と終点、曲線を定める関数の次数と点の組み合わせ、円弧等を特定するデータ等がある。
【０００６】
図形を点で連結された線で表し、最後の線の終点が最初の線の始点と重なった、円や四角形を含む多角形等の閉じた図形の内部の領域を面と呼ぶ。点の座標と、線の属性、線で囲まれた面の属性を記録するのがベクター画像の基本である。線の属性とは、線の太さ、色、破線、実線等を含む。面の属性とは、色やパターン等を含む。すなわち、ベクター画像とは、点、線、面のそれぞれのさまざまな性質、つまり、線の始終点の位置、曲線であればその曲がり方、太さ、色、それら線に囲まれた面の色、それらの変化のしかたなどを数値で表すことにより、画像データをコンピュータで処理可能なデータとしたものである。
【０００７】
したがって、画像を単にドットの集合で表現するビットマップ画像と比べ、ベクター画像のデータは、ドットのマトリックスを表示の解像度に合わせて容易かつ柔軟に展開できる。さらに、ベクター画像は、図形のデータに、拡大又は縮小（以後、単に「拡大縮小」と呼ぶ）処理をしたり、アフィン変換、パースペクティブ変換、その他の変形を施したりしても同一の解像度で表示することができる。このため、ベクター画像は、図形のイメージが基本的に劣化しないという特性を持つ。また一般に、ベクター画像には、ビットマップ画像よりもデータ量が少ないという利点がある。このため、ベクター画像は広く利用されるようになってきている。
【０００８】
ベクター画像の描画装置については特許文献１等に開示されている。ベクター画像の画像処理用の標準ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コマンドとしてクロノス（Ｋｈｒｏｎｏｓ）グループが標準化しているＯｐｅｎＶＧ（商標）（Ｏｐｅｎ  Ｖｅｃｔｏｒ  Ｇｒａｐｈｉｃｓ）やＷ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）が提案するＳＶＧ（Ｓｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｇｒａｐｈｉｃｓ）等が一般に広く使用されていて、その仕様はＷｅｂにおいて公開されている。
【０００９】
これらＯｐｅｎＶＧ（商標）やＳＶＧでは描画する画像をビットマップ画像ではなく、ベクター画像として、直線や曲線の集合の図形として表現している。なお、曲線は「ベジェ曲線」と呼ばれる、短い直線の集合として描画される（例えば、特許文献２を参照）。このため、これら直線の頂点情報がＡＰＩコマンドの主要要素となっている。
【００１０】
これら直線の頂点情報に加え、輪郭線を表すストロークの有無、フィル（以下では、「塗りつぶし」と呼ぶ）の方法、直線の終端を形成するキャップや直線と直線の接合部を形成するジョインの形式の指定、拡大や縮小等のマトリックス変換を行うためのマトリックスコマンド等の制御コマンドがＡＰＩコマンドにはある。ジョインの形成については、例えば、特許文献３に開示されている。
【００１１】
ベクター画像のデータの中で、連続する直線とベジェ曲線によって表される２次元の図形情報を指定するコマンドをパスコマンドと呼ぶ。ベクター画像では、このパスコマンドで表された２次元情報を、特にマトリックスコマンド等の制御コマンドによって、容易かつ柔軟に拡大、縮小したり、アフィン変換等を実行したりすることができる。さらにベクター画像では、その結果得られる画像も、ビットマップ画像のデータを直接変換する場合と比べて高い品質で描画できるため、ベクター画像は多彩な変形を行う場合に好適な描画方式であると言える。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００９−９４２８号公報
【特許文献２】特開平２−７１３８４号公報
【特許文献３】特開２０００−９９７５０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
図７に、ベクター画像の図形を拡大縮小する場合、線幅に拡大率を影響させた場合と影響させない場合の画像の表示例を示す。図７（ａ）は、文字Ａの図形を、拡大率をストローク線幅に影響させて拡大した場合の表示例であり、図７（ｂ）は、文字Ａの図形を、拡大率をストローク線幅に影響させずに拡大した場合の表示例である。
【００１４】
ベクター画像において、マトリックスコマンドによって図形に対し拡大や縮小を施し描画する場合、図７（ａ）の「Ａ」に示すように、図形に含まれるストロークの線幅にも、拡大縮小の影響が通常は及ぶ。しかし、図７（ｂ）の「Ａ」に示すように、図形に対する拡大縮小とは無関係に線幅は一定に保っておいた方がよい場合がある。また反対に、図７（ａ）の「Ａ」に示すように、図形に対する拡大縮小の倍率に応じてストローク線幅も変化させた方が都合がよい場合もある。
【００１５】
より具体的な例として、図８に、地図等の道路の表示例を示す。
図８（ａ）は、２本の線で表した道路を示し、図８（ｂ）は、１本の線で表した道路を示す。
【００１６】
図８（ａ）に示すように、例えば、地図等で道路を２本の線で表した場合、拡大縮小コマンドに応じて線幅を変えてしまうと、２本の道路の間を隔てるスペースが少なくなり、２本の道路が判別しにくくなる可能性がある。このような場合には、拡大縮小コマンドに伴って線幅を変えることは控えたほうが賢明である。一方で、図８（ｂ）に示すように、道路を１本の線で表した場合には、拡大縮小コマンドに応じて線幅を変えても、道路が判別しにくくなることはない。却って、拡大縮小コマンドに応じて線幅を変えると道路が見やすくなるなどのメリットが生じるので、このような場合には、拡大縮小に伴って線幅を変える方がよいと考えられる。
【００１７】
文字のフォントや、地図以外の一般の図形の描画の場合でも同様で、拡大縮小コマンドに応じて線幅が変わる方がよい場合もあり、変わらない方がよい場合もある。しかし従来のベクター画像描画装置においては、線幅にマトリックスコマンドの拡大縮小コマンドを影響させるかどうかは固定的に決まり、柔軟に切り替える事は容易ではなかった。
【００１８】
例えばマトリックスコマンドの拡大縮小コマンドが線幅に影響するように構成されているベクター画像描画装置では、線幅を変えたくない場合、拡大縮小が行われた線の線幅に対して、再び拡大縮小率の逆数を掛けて、線幅を再設定する必要があった。また例えばマトリックスコマンドの拡大縮小コマンドが線幅に影響しないように構成されているベクター画像描画装置では、線幅を拡大縮小コマンドに応じて変えたい場合、拡大縮小率を該当する線の線幅に掛けて、線幅を設定する必要があった。
【００１９】
本発明は上述の課題を考慮してなされたものであり、より容易かつ柔軟なベクター描画を可能とするベクター画像描画装置及びベクター画像描画方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
前述の課題を解決するため、本発明によるベクター画像描画装置及びベクター画像描画方法は、次のような特徴的な構成を採用している。
【００２１】
（１）本発明の第１の態様によると、ベクターコマンドに含まれる線幅を含む図形情報に基づいて描画用図形情報を生成する描画用図形情報生成部と、ベクターコマンドに含まれるマトリックスコマンドに基づいて前記図形情報又は描画用図形情報にマトリックス変換を実行するマトリックス部と、前記ベクターコマンドに含まれる制御コマンドに基づいて前記描画用図形情報生成部と前記マトリックス部とを制御する制御部と、を含み、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させる場合、前記制御部は、前記描画用図形情報生成部が前記図形情報に基づいて生成した前記描画用図形情報に対して、前記マトリックス部がマトリックス変換を実行するように制御し、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させない場合、前記制御部は、前記マトリックス部がマトリックス変換を実行した前記図形情報に対して、前記描画用図形情報生成部が前記描画用図形情報を生成するように制御することを特徴とする、ベクター画像描画装置が提供される。
【００２２】
この構成によると、マトリックス変換で実行され得る拡大縮小の処理を描画用図形情報の線幅に影響させる場合、制御部は、描画用図形情報生成部が図形情報に基づいて生成した描画用図形情報に対して、マトリックス部がマトリックス変換を実行するように制御し、マトリックス変換で実行され得る拡大縮小の処理を描画用図形情報の線幅に影響させない場合、制御部は、マトリックス部がマトリックス変換を実行した図形情報に対して、描画用図形情報生成部が描画用図形情報を生成するように制御する。したがって、マトリックス変換により実行される拡大縮小の処理を線幅に影響させるか否かを容易かつ柔軟に変更できるため、より容易かつ柔軟なベクター描画が可能となる。
【００２３】
また、上述のベクター画像描画装置において、前記制御部は、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させるか否かを、前記ベクターコマンドに含まれる制御情報に基づいて決定するようにしてもよい。この構成によると、ベクター画像描画装置は、マトリックス変換で実行され得る拡大縮小の処理を描画用図形情報の線幅に影響させるか否かをベクターコマンドに含まれる制御情報に基づいて決定できるので、ベクター描画が一層容易に可能となる。
【００２４】
また、上述のベクター画像描画装置において、前記制御部は、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させるか否かを、ユーザからの指示に基づいて決定するようにしてもよい。この構成によると、ベクター画像描画装置は、マトリックス変換で実行され得る拡大縮小の処理を描画用図形情報の線幅に影響させるか否かを、直接ユーザからの指示に基づいて随時、決定できるので、一層柔軟なベクター描画が可能となる。
【００２５】
また、上述のベクター画像描画装置において、前記マトリックス部が実行する前記マトリックス変換は、アフィン変換、パースペクティブ変換を含むことができる。また、前記描画用図形情報生成部は、ベジェ曲線部とストローク部を含むことができる。
【００２６】
（２）本発明の第２の態様によると、ベクターコマンドに含まれる線幅を含む図形情報に基づいて描画用図形情報を生成する描画用図形情報生成ステップと、ベクターコマンドに含まれるマトリックスコマンドに基づいて前記図形情報又は描画用図形情報にマトリックス変換を実行するマトリックス変換ステップと、前記ベクターコマンドに含まれる制御コマンドに基づいて前記描画用図形情報生成ステップと前記マトリックス変換ステップとの実行順序を切り替えるステップと、を含み、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させる場合、前記切り替えステップは、前記描画用図形情報生成ステップにおいて前記図形情報に基づいて生成した前記描画用図形情報に対して、前記マトリックス変換ステップがマトリックス変換を実行するように切り替え、前記マトリックス変換で実行され得る拡大縮小の処理を前記描画用図形情報の線幅に影響させない場合、前記切り替えステップは、前記マトリックス変換ステップにおいてマトリックス変換が実行された前記図形情報に対して、前記描画用図形情報生成ステップが前記描画用図形情報を生成するように切り替えることを特徴とする、ベクター画像描画方法が提供される。
【００２７】
この構成によると、マトリックス変換で実行され得る拡大縮小の処理を描画用図形情報の線幅に影響させる場合、切り替えステップは、描画用図形情報生成ステップにおいて図形情報に基づいて生成した描画用図形情報に対して、マトリックス変換ステップがマトリックス変換を実行するように切り替え、マトリックス変換で実行され得る拡大縮小の処理を描画用図形情報の線幅に影響させない場合、切り替えステップは、マトリックス変換ステップにおいてマトリックス変換が実行された図形情報に対して、描画用図形情報生成ステップが描画用図形情報を生成するように切り替える。したがって、マトリックス変換により実行される拡大縮小の処理を線幅に影響させるか否かを容易かつ柔軟に変更できるため、より容易かつ柔軟なベクター描画が可能となる。
【発明の効果】
【００２８】
本発明によるベクター画像描画装置及びベクター画像描画方法によれば、マトリックス変換により実行される拡大縮小の処理を線幅に影響させるか否かを容易かつ柔軟に変更できるため、より容易かつ柔軟なベクター描画が可能となる。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態に係るベクター画像描画装置の概略構成を示すブロック図である。
【図２】図１のベクター画像描画装置において、拡大縮小率を線幅に影響させる処理例を説明する図である。
【図３】図１のベクター画像描画装置において、ストローク部が行うストローク処理を説明する図である。
【図４】図１のベクター画像描画装置において、拡大縮小率を線幅に影響させる処理例を行った場合の例を示す図である。
【図５】図１のベクター画像描画装置において、拡大縮小率を線幅に影響させない処理例を説明する図である。
【図６】図１のベクター画像描画装置において、拡大縮小率を線幅に影響させない処理例を行った場合の例を示す図である。
【図７】ベクター画像の図形を拡大縮小する場合において、線幅に拡大率を影響させた場合と影響させない場合の表示例を示す図である。
【図８】地図等の道路の表示例を示す図である。
【発明を実施するための形態】
【００３０】
以下、本発明によるベクター画像描画装置の好適な実施形態について添付の図面を参照して説明する。なお、本発明によるベクター画像描画装置は、コンピュータにより実行可能なベクター画像描画プログラムとして実施するようにしてもよいし、あるいは、ベクター画像描画プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにして実施してもよいことはいうまでもない。
【００３１】
以下、本発明によるベクター画像描画装置を図面を参照して説明する。
【００３２】
＜ベクター画像描画装置の構成例＞
【００３３】
図１は、本発明の一実施形態に係るベクター画像描画装置の概略構成を示すブロック図である。
【００３４】
図１に示すベクター画像描画装置１０は、コマンドデコーダ部１と、ベジェ曲線部２と、ストローク部３と、マトリックス部４と、スイッチング部５Ａ、５Ｂ、５Ｃと、ラスタライズ部６と、メモリインタフェース部７と、制御部８と、を含む。
【００３５】
コマンドデコーダ部１は、本ベクター画像描画装置１０に対して与えられる信号を受信し、パスコマンドとマトリックスコマンドを含むベクターコマンドにデコードする。
【００３６】
ベジェ曲線部２は、デコードされたベクターコマンドのうちパスコマンドに曲線を表すコマンドがあれば、これを短い直線群の情報に展開する。パスコマンドは図形情報を構成する。
【００３７】
ストローク部３は、パスコマンドに含まれる線幅情報に基づき直線に幅を持たせる、直線の曲がり角にジョインを発生させる、直線の始点及び終点にキャップを発生させる、という一連の処理（以下、「ストローク処理」と呼ぶ）を行って図形情報を生成する。ベジェ曲線部２とストローク部３が生成する図形情報は、描画用図形情報を構成する。ベジェ曲線部２とストローク部３は、描画用図形情報生成部９を構成する。また、ベジェ曲線部２とストローク部３が実行する処理は、描画用図形情報生成ステップを構成する。
【００３８】
マトリックス部４は、マトリックスコマンドに基づきパスコマンドに含まれる直線群の情報から頂点位置を演算し変更する。マトリックス部４が実行する処理は、マトリックス変換ステップを構成する。
【００３９】
スイッチング部５Ａ、５Ｂ、５Ｃは、後述する制御部８による制御の下、コマンドデコーダ部１によってデコードされたコマンドに基づいて、マトリックス部４をストローク部３とラスタライズ部６との間に接続する第１の接続状態と、マトリックス部４をコマンドデコーダ部１とベジェ曲線部２の間に接続する第２の接続状態と、に切り替える。スイッチング部５Ａ、５Ｂ、５Ｃが実行する第１の接続状態と第２の接続状態の切り替えは、切り替えステップを構成する。図１では、制御部８を介した制御信号の流れを実線で示し、第１接続状態におけるベクターコマンドの処理の流れを太い実線で、第２接続状態におけるベクターコマンドの処理の流れを太い点線で示している。
【００４０】
ラスタライズ部６は、パスコマンドに含まれる直線が、ビットマップの各行により形成されるスキャンラインと交わる交点の座標情報であるエッジ位置情報に基づいて決定される、微小な直線からなるエッジの間を指定色で塗りつぶすラスタライズ処理を行う。より具体的には、ベジェ曲線部２とストローク部３が生成する描画用図形情報に基づいてラスタライズ処理を実行する。
【００４１】
メモリインタフェース部７は、ラスタライズ部６によるラスタライズ処理によって生成された塗りつぶされた描画用図形情報を外部のメモリへ出力する。
【００４２】
制御部８は、コマンドデコーダ部１と、ベジェ曲線部２と、ストローク部３と、マトリックス部４と、スイッチング部５Ａ、５Ｂ、５Ｃと、ラスタライズ部６と、メモリインタフェース部７と、を制御する。また、コマンドデコーダ部１によってデコードされた制御コマンドに基づいて、マトリックス部４をストローク部３とラスタライズ部６との間に接続する第１の接続状態と、マトリックス部４をコマンドデコーダ部１とベジェ曲線部２の間に接続する第２の接続状態と、に切り替える。
【００４３】
以上のように構成されたベクター画像描画装置１０において、入力されたベクターコマンドに応じて実行される描画処理について以下説明する。なお、以下の一連の処理は、制御部８による制御に基づいて実行される。
【００４４】
制御部８は、コマンドデコーダ部１によりデコードされたベクターコマンドに含まれる制御コマンドに応じて、拡大縮小率を線幅に影響させる処理と、拡大縮小率を線幅に影響ない処理を選択的に行う。
【００４５】
まず、制御部８が、コマンドデコーダ部１によりデコードされたベクターコマンドに従って、拡大縮小率を線幅に影響させる処理を実行する場合について説明する。
【００４６】
＜拡大縮小率を線幅に影響させる処理例＞
図２は、ベクター画像描画装置１０が、拡大縮小率を線幅に影響させる処理例を説明するための図である。制御部８は、例えば、コマンドデコーダ部１によりデコードされたベクターコマンドによりマトリックスコマンドの拡大縮小率をストロークの線幅にも影響させるようにとの指示を受けると、制御部８は、スイッチング部５Ａ、５Ｂ、５Ｃを制御して、図２に示すように、マトリックス部４をストローク部３とラスタライズ部６との間に接続する第１の接続状態とする。
【００４７】
コマンドデコーダ部１でデコードされたベクターコマンドは、制御部８の制御の下、コマンドデコーダ部１、ベジェ曲線部２、ストローク部３、マトリックス部４、ラスタライズ部６、メモリインタフェース部７、と接続された順序に従って順次処理されていく。図２では、制御部８を介した制御の流れを実線で示し、ベクターコマンドの処理の流れを太い実線で示している。
【００４８】
先ずコマンドデコーダ部１は、受信した信号に含まれるベクターコマンドのうち、パスコマンドをデコードして直線や曲線の頂点座標や次に述べる制御座標情報に変換し、ベジェ曲線部２に供給する。パスコマンドが表す情報が「パス情報」であり、図形情報に相当する。
【００４９】
一般にパスには直線と曲線があり、曲線の場合は、位置を決める点であるアンカーポイントと、曲がりを制御するコントロールポイントと、が制御座標情報としてベジェ曲線部２に供給される。
【００５０】
ベジェ曲線部２は、コマンドデコーダ部１から供給された曲線の制御座標情報を複数の微小直線に置き換える処理を行う。その置き換え処理の方法については特許文献２等で説明されているのでここでは詳細の説明は省略する。
【００５１】
ベジェ曲線部２は直線に対しては何も処理を施さない。このため、パスは全て直線のみの集合となって、その座標情報（以下、「パス情報」と呼ぶ）がベジェ曲線部２からストローク部３へ供給される。
【００５２】
ここで、図３を参照して、ストローク部３が行うストローク処理について説明する。図３（ａ）は、このままで輪郭線の内部を塗りつぶすことが可能な閉じた図形の例である。このような図形のパス情報がベジェ曲線部２から供給され、かつ線幅が０と設定されている場合、ストローク部３は何の処理も施さず、パス情報はそのまま次段のマトリックス部４へ供給される。これは、ストローク処理が不要な例である。
【００５３】
一方、図３（ｂ）は、閉じた図形ではなく、単線のパスからなる図形の例である。図形に線幅が与えられなければラスタライズ部６にてエッジ間の塗りつぶし処理ができない。ストローク部３は、図３（ｂ）に示すような単線のパスによる図形の情報を、図３（ａ）に示すようなエッジ間の塗りつぶしが可能な閉じた図形の情報に変換する。これが、線幅を与えるストローク処理である。  
【００５４】
ストローク処理には線幅を与える処理以外に、直線の曲がり角にジョイン生成と呼ぶ処理を施したり、直線の始点、終点にキャップ生成と呼ぶ処理を施したりすることが含まれる。
【００５５】
ジョイン、キャップについてはＫｈｒｏｎｏｓグループが標準化しているＯｐｅｎＶＧ（商標）の仕様書が公開されており、ここで詳しく説明されている。またジョイン処理は特許文献３等でも説明されている。キャップ処理は、２直線が１８０度の角度をなす場合のジョイン処理と等価と考えられる。よって、ここではジョイン、キャップ処理の詳細の説明は省略する。
【００５６】
なお、図３（ａ）に示された閉じた図形に対してストローク処理を行うことも可能である。図３（ｃ）はその処理の結果の一例であり、図３（ａ）に示すＡという文字に線幅を付けた図形の例である。ストローク部３は、０でない線幅が指定された場合、このようなストローク処理を行った後、その結果のパス情報をマトリックス部４へ供給する。
【００５７】
マトリックス部４は、マトリックスコマンドによって設定される拡大縮小やアフィン変換、パースペクティブ変換等（本明細書では、「マトリックス処理」と総称する）を、ストローク部３から供給されたパス情報に対して施す。マトリックス処理は、パスを構成する直線の頂点位置に対して行列演算して、変換後の頂点位置を求めることで実現される。
【００５８】
ストローク処理はマトリックス処理に先立って行われているので線幅についてもマトリックス処理が行われることになる。このため、マトリックス処理が拡大縮小である場合には、線幅も拡大縮小される。そしてマトリックス処理で得られた結果のパス情報が、描画用図形情報として次段のラスタライズ部６へ供給される。
【００５９】
ラスタライズ部６は、マトリックス部４によって生成されたパス情報、すなわち、描画用図形情報に基づいて、パスを構成する各直線がスキャンラインと交わる交点を求める。隣接する交点同士を結んだ微小線分をエッジと呼ぶ。ラスタライズ部６は、エッジで囲まれる面内部の画素を、コマンド設定による指定色で塗りつぶす。
【００６０】
図４に、図４（ａ）に示す図形に拡大縮小率を線幅に影響させる処理を行った場合の例を示す。図４（ｂ）に示すように、図形が拡大されただけでなく、線幅も増加していることがわかる。
【００６１】
このラスタライズ処理については特許文献１等に詳細に説明されている。そして最終的に描画されたデータはメモリインタフェース部７を介して、外部のビデオメモリや表示機器に送られ表示されることになる。
【００６２】
次に、制御部８が、コマンドデコーダ部１によりデコードされたベクターコマンドに従って、拡大縮小率を線幅に影響させない処理を実行する場合について説明する。
【００６３】
＜拡大縮小率を線幅に影響させない処理例＞
図５は、ベクター画像描画装置１０が、拡大縮小率を線幅に影響させない処理例を説明するための図である。制御部８は、例えば、コマンドデコーダ部１によりデコードされたベクターコマンドによりマトリックスコマンドの拡大縮小率をストロークの線幅に影響させないようにとの指示を受けると、制御部８は、スイッチング部５Ａ、５Ｂ、５Ｃを制御して、図５に示すように、マトリックス部４をコマンドデコーダ部１とベジェ曲線部２の間に接続する第２の接続状態とする。
【００６４】
コマンドデコーダ部１でデコードされたベクターコマンドは、制御部８の制御の下、コマンドデコーダ部１、マトリックス部４、ベジェ曲線部２、ストローク部３、ラスタライズ部６、メモリインタフェース部７、と接続された順序に従って順次処理されていく。図５では、制御部８を介した制御の流れを実線で示し、ベクターコマンドの処理の流れを太い点線で示している。
【００６５】
先ずコマンドデコーダ部１は、受信したベクターコマンドのうち、パスコマンドをデコードして直線や曲線の頂点座標や制御座標情報（即ち、「パスコマンド」）に変換し、マトリックス部４に供給する。パスには直線と曲線があり、曲線の場合はアンカーポイントとコントロールポイントが制御座標情報としてマトリックス部４に供給される。パスコマンドが表す情報が「パス情報」であり、図形情報に相当する。
【００６６】
マトリックス部４は、コマンドデコーダ部１から供給されたパス情報に対して、マトリックスコマンドによって設定される拡大縮小やアフィン変換、パースペクティブ変換等のマトリックス処理を施す。マトリックス処理は、パスを構成する直線の頂点座標や曲線のアンカーポイントとコントロールポイントで指定される座標に対して行列演算して、変換後の座標を求めることで実現される。そしてマトリックス処理で変換されたパス情報（直線の頂点情報や曲線のアンカーポイントとコントロールポイントの座標）が次段のベジェ曲線部２へ供給される。
【００６７】
ベジェ曲線部２は、曲線については微小直線群に置き換え、直線については何も処理しない。その結果、直線のみの集合となったパス情報が、次のストローク部３へ供給される。
【００６８】
ストローク部３は、上述のように、パスが図３（ａ）に示すような閉じた図形で、かつ線幅が０と設定されている場合は何の処理も施さず、パス情報を描画用図形情報としてそのまま次段のラスタライズ部６へ供給する。
【００６９】
一方図３（ｂ）に示すパスは閉じた図形ではなく、ストローク処理による線幅付けがなければラスタライズ部６にてエッジ間の塗りつぶし処理ができない。この場合、ストローク部３は、図３（ｂ）に示すような単線のパスによる図形にストローク処理を施し、図３（ａ）に示すようなエッジ間の塗りつぶしが可能な閉じた図形に変換する。
【００７０】
ストローク処理には線幅を与える処理以外に、直線の曲がり角にジョイン生成と呼ぶ処理を施したり、直線の始点、終点にキャップ生成と呼ぶ処理を施したりすることが含まれる。
【００７１】
ストローク部３に入力されるパス情報は、既にマトリックス部４のマトリックス処理によって拡大縮小済みの頂点座標である。ストローク部３で線幅を付ける処理において、線幅はコマンドで設定された線幅がそのまま使われ、そのストローク処理の結果がそのままラスタライズ部６に供給される。このため、ストローク処理の線幅はマトリックス処理の影響を全く受けないことになる。
【００７２】
以後は前述の線幅可変処理と同様で、ラスタライズ部６は、ストローク部３から供給された描画用図形情報であるパス情報からエッジで囲まれた面を求め、当該面をコマンド設定による指定色で塗りつぶす。そして最終的に描画されたデータはメモリインタフェース部７を介して、外部のビデオメモリや表示機器に供給され表示されることになる。
【００７３】
図６に、図６（ａ）に示す図形に対して、拡大縮小率を線幅に影響させない処理を行った場合の例を示す。図６（ｂ）に示すように、図形が拡大されただけで、線幅は増加していないことがわかる。
【００７４】
このように本実施形態に係るベクター画像描画装置によると、マトリックス変換により実行される拡大縮小の処理を線幅に影響させるか否かを容易かつ柔軟に変更できるため、より容易かつ柔軟なベクター描画が可能となる。さらに、ベクターコマンドに含まれるコマンドに応じて制御部８が第１の接続状態と第２の接続状態を切り替えるので、ベクター描画が一層容易となる。
【００７５】
また、本実施形態では、ベクターコマンドに含まれるコマンドに応じて制御部８が第１の接続状態と第２の接続状態を切り替えるとしたが、本発明はこれに限定されない。ユーザからの直接的な指示によって、第１の接続状態と第２の接続状態との切り替えを行うようにしてもよく、切り替えのタイミングについても任意のさまざまなケースが適用可能であることはいうまでもない。ユーザからの直接的な指示、例えば、ユーザが、図示されていない操作部を操作することによって第１の接続状態と第２の接続状態の切り替えを行うようにした場合、拡大縮小の処理を線幅に影響させるか否かを、直接ユーザからの指示に基づいて随時、決定できるので、柔軟なベクター描画が可能となる。
【００７６】
本発明によるベクター画像描画装置１０は、上記のベクター画像を描画する機能を実現する回路を組み込んだＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品から構成される回路を実装して、電子回路として構成することができる。また、上記の各機能を行うベクター画像描画プログラムを、ディジタル信号処理装置（ＤＳＰ：Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｅｒ）等で実行することにより、ソフトウェアの機能としてベクター画像描画装置１０を実現することができる。その場合、ＤＳＰのＲＯＭ等に格納されたベクター画像描画プログラムを実行し、各部の動作を制御して上記の各機能を行わせることによって、ベクター画像描画装置１０をソフトウェア的に実現することも可能である。
【００７７】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。コンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータ、例えば汎用のパソコンであってもよい。
【００７８】
このようなプログラムを含む記録媒体は、利用者にプログラムを提供するために装置本体とは別に配布されるリムーバブル記憶媒体により構成されるだけでなく、装置本体に予め組み込まれた状態で利用者に提供される記録媒体等で構成することができる。リムーバブル記憶媒体は、例えば、磁気ディスク（フロッピディスクを含む）、光ディスク又は光磁気ディスク等により構成することができる。光ディスクは、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等により構成することができる。光磁気ディスクは、ＭＤ（Ｍｉｎｉ−Ｄｉｓｋ）等により構成することができる。また、装置本体に予め組み込まれた状態で利用者に提供される記録媒体は、例えば、プログラムが記録されているＲＯＭや、記憶部等で構成することができる。
【００７９】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【符号の説明】
【００８０】
１…コマンドデコーダ部、２…ベジェ曲線部（描画用図形情報生成部）、３…ストローク部（描画用図形情報生成部）、４…マトリックス部、５Ａ、５Ｂ、５Ｃ…スイッチング部、６…ラスタライズ部、７…メモリインタフェース部、８…制御部、１０…ベクター画像描画装置。
【図１】
2014010572.tif 000003
【図２】
2014010572.tif 000004
【図３】
2014010572.tif 000005
【図４】
2014010572.tif 000006
【図５】
2014010572.tif 000007
【図６】
2014010572.tif 000008
【図７】
2014010572.tif 000009
【図８】
2014010572.tif 000010