JPH0540831A - 図形処理装置および図形処理方法 - Google Patents
図形処理装置および図形処理方法Info
- Publication number
- JPH0540831A JPH0540831A JP19425891A JP19425891A JPH0540831A JP H0540831 A JPH0540831 A JP H0540831A JP 19425891 A JP19425891 A JP 19425891A JP 19425891 A JP19425891 A JP 19425891A JP H0540831 A JPH0540831 A JP H0540831A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- line
- pixel
- contour
- line vector
- 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.)
- Granted
Links
Landscapes
- Digital Computer Display Output (AREA)
- Image Generation (AREA)
Abstract
(57)【要約】
【目的】 図形の輪郭線を構成する一連の線分を表わす
ベクトルデータに基いて複雑な塗り潰し図形を歪の発生
を伴わずに高速かつ簡単に発生することができる図形処
理装置を提供することにある。 【構成】 各アウトラインベクトルの向きおよび該ベク
トルの前のベクトルの向きを判定し、該判定結果から、
各線ベクトルの描画を各線ベクトルの開始点および開始
点以外の輪郭上の点を、それぞれプロットしないか、ベ
クトル上の位置に対応する画素にプロットするか、ベク
トル上の位置に対応する画素の主走査の走査方向に一画
素隣の画素にプロットするかのいずれかを制御する。
ベクトルデータに基いて複雑な塗り潰し図形を歪の発生
を伴わずに高速かつ簡単に発生することができる図形処
理装置を提供することにある。 【構成】 各アウトラインベクトルの向きおよび該ベク
トルの前のベクトルの向きを判定し、該判定結果から、
各線ベクトルの描画を各線ベクトルの開始点および開始
点以外の輪郭上の点を、それぞれプロットしないか、ベ
クトル上の位置に対応する画素にプロットするか、ベク
トル上の位置に対応する画素の主走査の走査方向に一画
素隣の画素にプロットするかのいずれかを制御する。
Description
【0001】
【産業上の利用分野】本発明は、図形処理装置および図
形処理方法に関するものである。
形処理方法に関するものである。
【0002】さらに詳述すれば本発明は、CRTを用い
た図形表示装置または、記録ヘッドを有する図形ハード
コピー装置の様な図形再生装置で再生される塗り潰し図
形を発生するための図形処理装置および図形処理方法に
関し、特に、ラスター走査型の画像処理装置に塗り潰し
図形を生成するのに適する図形処理装置および図形処理
方法に関するものである。
た図形表示装置または、記録ヘッドを有する図形ハード
コピー装置の様な図形再生装置で再生される塗り潰し図
形を発生するための図形処理装置および図形処理方法に
関し、特に、ラスター走査型の画像処理装置に塗り潰し
図形を生成するのに適する図形処理装置および図形処理
方法に関するものである。
【0003】
【従来の技術】図形処理装置において塗り潰しは基本的
な画像処理機能の1つであり、これまで種々の塗り潰し
方法が提案されている。最も基本的な方法は、ソフトウ
ェアによって、ランダムアクセスメモリの各画素ライン
毎に塗り潰し範囲を逐一指定し、指定された範囲のライ
ン画素を塗り潰すものであるが、このようなソフトウェ
アによる塗り潰しは処理時間が長いという問題がある。
な画像処理機能の1つであり、これまで種々の塗り潰し
方法が提案されている。最も基本的な方法は、ソフトウ
ェアによって、ランダムアクセスメモリの各画素ライン
毎に塗り潰し範囲を逐一指定し、指定された範囲のライ
ン画素を塗り潰すものであるが、このようなソフトウェ
アによる塗り潰しは処理時間が長いという問題がある。
【0004】このため、ハードウェアにより高速に塗り
潰しを行なうために種々の手法が提案されている。
潰しを行なうために種々の手法が提案されている。
【0005】この種の方法は、図形の輪郭を定める画素
のみを画像メモリ上に描画した後、この画像メモリをラ
スター走査を行ない、走査線上の奇数番目の輪郭線ドッ
トで塗り潰しを開始し、偶数番目の輪郭線ドットで塗り
潰しを終了する(以降、奇偶反転法と呼ぶ)ものであ
る。
のみを画像メモリ上に描画した後、この画像メモリをラ
スター走査を行ない、走査線上の奇数番目の輪郭線ドッ
トで塗り潰しを開始し、偶数番目の輪郭線ドットで塗り
潰しを終了する(以降、奇偶反転法と呼ぶ)ものであ
る。
【0006】しかし、奇偶反転法を用いる場合は、単純
に輪郭の描画を行なうと、図2のL1,L2,L3,L
4,L5のように塗り潰されるべきでない部分が塗り潰
され、塗り潰されるべき部分が塗り潰されない(ライン
L3の破線部分)という問題があった。
に輪郭の描画を行なうと、図2のL1,L2,L3,L
4,L5のように塗り潰されるべきでない部分が塗り潰
され、塗り潰されるべき部分が塗り潰されない(ライン
L3の破線部分)という問題があった。
【0007】これをふまえて、輪郭描画に規則を設定し
て、改善を計る各種提案がなされている。
て、改善を計る各種提案がなされている。
【0008】例えば、特公平1−54752号公報は、
下記の5つの規則に従った輪郭画素の書き込みを開示し
ている。
下記の5つの規則に従った輪郭画素の書き込みを開示し
ている。
【0009】規則1:水平な線セグメントは書かない。
【0010】規則2:各線セグメントは各ライン当り1
画素で表わす。
画素で表わす。
【0011】規則3:各線セグメントの始点は書かな
い。
い。
【0012】規則4:輪郭線画素はこの画素を書込もう
としているメモリアドレスに記憶されている画素データ
との排他的ORを取って、その結果を書き込む。
としているメモリアドレスに記憶されている画素データ
との排他的ORを取って、その結果を書き込む。
【0013】規則5:各線セグメントは上から下または
下から上への一方向で指定する。
下から上への一方向で指定する。
【0014】規則1は、図2のラインL2やL4のよう
に水平な輪郭線部分に含まれる輪郭線画素P1〜P2や
P3〜P4によって1つのラインに奇数個の輪郭線画素
が発生するのを防止している。
に水平な輪郭線部分に含まれる輪郭線画素P1〜P2や
P3〜P4によって1つのラインに奇数個の輪郭線画素
が発生するのを防止している。
【0015】規則2は、線セグメントの角度に関係なく
常に1ライン当り1画素で輪郭線を表わすためのもので
ある。
常に1ライン当り1画素で輪郭線を表わすためのもので
ある。
【0016】規則3は、上向または下向きの頂点を除去
するものである。規則5に従って例えば上から下への一
方向で線セグメントを指定するものとすれば、規則3は
図2の上向きの頂点の輪郭線画素P5およびP6を除去
する。
するものである。規則5に従って例えば上から下への一
方向で線セグメントを指定するものとすれば、規則3は
図2の上向きの頂点の輪郭線画素P5およびP6を除去
する。
【0017】規則4および規則5は、規則3によって処
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7)を除去するものである。
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7)を除去するものである。
【0018】
【発明が解決しようとする課題】しかしながら、上記方
式では、頂点画素および一部の水平線分が塗り潰され
ず、歪んだ図形となって再生される。また、上記、特許
では、輪郭線画素の書込み終了後、メモリの各ラインを
走査し、奇数番目の輪郭線画素から次に生ずる偶数番目
の輪郭線画素までを塗り潰す際に、上述の上記特許に推
奨される方法に従い、偶数番目の輪郭線画素から塗り潰
さない様にすると、さらに図形の右側の輪郭線上の画素
が削れて、一回り小さな図形となってしまうという不具
合があった。
式では、頂点画素および一部の水平線分が塗り潰され
ず、歪んだ図形となって再生される。また、上記、特許
では、輪郭線画素の書込み終了後、メモリの各ラインを
走査し、奇数番目の輪郭線画素から次に生ずる偶数番目
の輪郭線画素までを塗り潰す際に、上述の上記特許に推
奨される方法に従い、偶数番目の輪郭線画素から塗り潰
さない様にすると、さらに図形の右側の輪郭線上の画素
が削れて、一回り小さな図形となってしまうという不具
合があった。
【0019】図3は、上記規則に従って輪郭を描画した
例である。図4は、図3に得られた図形を上述の上記特
許において推奨される方法で塗り潰ぶした結果を示して
いる。図3に於いて“×”印は、輪郭線画素としては書
き込まれない画素を示している。図4の例では、頂点画
素P5およびP7が塗られず、P1〜P2の水平線が塗
られていない。また、推奨される方法で塗り潰す場合
は、P5〜P8,P9〜P10,P11〜P3,および
P12〜P7といった部分も塗られなくなるものであ
る。
例である。図4は、図3に得られた図形を上述の上記特
許において推奨される方法で塗り潰ぶした結果を示して
いる。図3に於いて“×”印は、輪郭線画素としては書
き込まれない画素を示している。図4の例では、頂点画
素P5およびP7が塗られず、P1〜P2の水平線が塗
られていない。また、推奨される方法で塗り潰す場合
は、P5〜P8,P9〜P10,P11〜P3,および
P12〜P7といった部分も塗られなくなるものであ
る。
【0020】また、特開平2−50778号公開公報で
は、輪郭線を描画する際に、水平線(斜線描画時に発生
する水平画素の連続する部分を含む)の描画において、
その両端の点に相当する画素を描画するか否かを規則化
した方式を開示している。しかしながら、この方式に
は、頂点画素に関する扱いに関しては開示がなされてお
らず、頂点画素に於いて生ずる誤判定もしくは、歪みに
関しては、考慮がなされていない。
は、輪郭線を描画する際に、水平線(斜線描画時に発生
する水平画素の連続する部分を含む)の描画において、
その両端の点に相当する画素を描画するか否かを規則化
した方式を開示している。しかしながら、この方式に
は、頂点画素に関する扱いに関しては開示がなされてお
らず、頂点画素に於いて生ずる誤判定もしくは、歪みに
関しては、考慮がなされていない。
【0021】また、上記従来方法等で発生した図形の歪
みを補うために、他にまた輪郭線だけを描画して、この
輪郭線画素と歪んだ図形との画素毎の論理和をとって歪
みのない図形として出力する方式も方式も試みられてい
るが、この場合には、処理に要するメモリ量が、図形を
生成したメモリの他に、輪郭線のみの画像を保持する分
まで必要となったり、輪郭線のみの画像を生成するため
の時間や回路が余分に必要となったりするので好ましく
ない(図7参照)。
みを補うために、他にまた輪郭線だけを描画して、この
輪郭線画素と歪んだ図形との画素毎の論理和をとって歪
みのない図形として出力する方式も方式も試みられてい
るが、この場合には、処理に要するメモリ量が、図形を
生成したメモリの他に、輪郭線のみの画像を保持する分
まで必要となったり、輪郭線のみの画像を生成するため
の時間や回路が余分に必要となったりするので好ましく
ない(図7参照)。
【0022】よって本発明の目的は、上述の点に鑑み
て、図形の輪郭線を構成する一連の線分を表わすベクト
ルデータに基いて複雑な塗り潰し図形を歪の発生を伴わ
ずに、高速かつ簡単に発生することができる図形処理装
置および図形処理方法を提供することにある。
て、図形の輪郭線を構成する一連の線分を表わすベクト
ルデータに基いて複雑な塗り潰し図形を歪の発生を伴わ
ずに、高速かつ簡単に発生することができる図形処理装
置および図形処理方法を提供することにある。
【0023】
【課題を解決するための手段】本発明は、2次元図形の
画素データを記憶する記憶手段と、輪郭データとして閉
ループを構成する様に方向づけられたアウトライン線ベ
クトルよりなるデータを獲得する獲得手段と、輪郭線を
構成する各線ベクトルの向きおよび該線ベクトルの輪郭
線上における前の線ベクトルの向きを判断する判別手段
と、前記各線ベクトルの向きおよび該ベクトルの前の線
ベクトルの向きから各線ベクトルの描画を制御する制御
手段と、前記制御手段の出力に応答して、各線ベクトル
の開始点の近似画素を発生するための第1の発生手段
と、前記制御手段の出力に応答して、各線ベクトルの開
始点以外の近似画素を発生するための第2の発生手段
と、前記第1および第2の発生手段の出力に応答して、
各線ベクトルを各走査線当り1画素で表される画素を前
記記憶手段の対応座標アドレスににおける既設定の画素
データとの排他的論理和を求めて前記記憶手段に書き込
み、輪郭線画素を設定するための第1の設定手段と、前
記記憶手段に書き込まれた輪郭線画素をラスター走査
し、各走査線の奇数番目の輪郭線画素から、次に現われ
る偶数番目の輪郭画素の直前の画素までの間を塗り潰さ
れた領域として設定する第2の設定手段とを具備したも
のである。
画素データを記憶する記憶手段と、輪郭データとして閉
ループを構成する様に方向づけられたアウトライン線ベ
クトルよりなるデータを獲得する獲得手段と、輪郭線を
構成する各線ベクトルの向きおよび該線ベクトルの輪郭
線上における前の線ベクトルの向きを判断する判別手段
と、前記各線ベクトルの向きおよび該ベクトルの前の線
ベクトルの向きから各線ベクトルの描画を制御する制御
手段と、前記制御手段の出力に応答して、各線ベクトル
の開始点の近似画素を発生するための第1の発生手段
と、前記制御手段の出力に応答して、各線ベクトルの開
始点以外の近似画素を発生するための第2の発生手段
と、前記第1および第2の発生手段の出力に応答して、
各線ベクトルを各走査線当り1画素で表される画素を前
記記憶手段の対応座標アドレスににおける既設定の画素
データとの排他的論理和を求めて前記記憶手段に書き込
み、輪郭線画素を設定するための第1の設定手段と、前
記記憶手段に書き込まれた輪郭線画素をラスター走査
し、各走査線の奇数番目の輪郭線画素から、次に現われ
る偶数番目の輪郭画素の直前の画素までの間を塗り潰さ
れた領域として設定する第2の設定手段とを具備したも
のである。
【0024】本発明は、図形の輪郭を単数もしくは複数
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで前記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向きおよび該ベクトルの前のベクトルの向きを判
定し、該判定結果から、各線ベクトルの描画を各線ベク
トルの開始点および開始点以外の輪郭上の点を、それぞ
れプロットしないか、ベクトル上の位置に対応する画素
にプロットするか、ベクトル上の位置に対応する画素の
主走査の走査方向に一画素隣の画素にプロットするかの
いずれかを制御する。
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで前記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向きおよび該ベクトルの前のベクトルの向きを判
定し、該判定結果から、各線ベクトルの描画を各線ベク
トルの開始点および開始点以外の輪郭上の点を、それぞ
れプロットしないか、ベクトル上の位置に対応する画素
にプロットするか、ベクトル上の位置に対応する画素の
主走査の走査方向に一画素隣の画素にプロットするかの
いずれかを制御する。
【0025】本発明は、図形の輪郭を単数もしくは複数
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで上記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向き,該ベクトルの前のベクトルの向き、およ
び、該2ベクトル間の頂点が図形内で凸な頂点か、凹な
頂点か、あるいはそうでないかを判定し、該判定結果か
ら、各線ベクトルの描画を各線ベクトルの開始点および
開始点以外の輪郭上の点を、それぞれプロットしない
か、ベクトル上の位置に対応する画素プロットするか、
ベクトル上の位置に対応する画素の主走査の走査方向に
一画素隣の画素にプロットするかのいずれかを制御す
る。
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで上記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向き,該ベクトルの前のベクトルの向き、およ
び、該2ベクトル間の頂点が図形内で凸な頂点か、凹な
頂点か、あるいはそうでないかを判定し、該判定結果か
ら、各線ベクトルの描画を各線ベクトルの開始点および
開始点以外の輪郭上の点を、それぞれプロットしない
か、ベクトル上の位置に対応する画素プロットするか、
ベクトル上の位置に対応する画素の主走査の走査方向に
一画素隣の画素にプロットするかのいずれかを制御す
る。
【0026】本発明は、2次元図形の画素データを記憶
する記憶手段と、輪郭データとして閉ループを構成する
様に方向づけられたアウトライン線ベクトルよりなるデ
ータを獲得する獲得手段と、輪郭線を構成する各線ベク
トルの向きおよび該線ベクトルの輪郭線上における次の
線ベクトルの向きを判断する判別手段と、前記各線ベク
トルの向きおよび該ベクトルの次の線ベクトルの向きか
ら各線ベクトルの描画を制御する制御手段と、前記制御
手段の出力に応答して、各線ベクトルの終了点の近似画
素を発生するための第1の発生手段と、前記制御手段の
出力に応答して、各線ベクトルの終了点以外の近似画素
を発生するための第2の発生手段と、前記第1および第
2の発生手段の出力に応答して、各線ベクトルを各走査
線当り1画素で表される画素を前記記憶手段の対応座標
アドレスににおける既設定の画素データとの排他的論理
和を求めて前記記憶手段に書き込み、輪郭線画素を設定
するための第1の設定手段と、前記記憶手段に書き込ま
れた輪郭線画素をラスター走査し、各走査線の奇数番目
の輪郭線画素から、次に現われる偶数番目の輪郭画素の
直前の画素までの間を塗り潰された領域として設定する
第2の設定手段とを具備したものである。
する記憶手段と、輪郭データとして閉ループを構成する
様に方向づけられたアウトライン線ベクトルよりなるデ
ータを獲得する獲得手段と、輪郭線を構成する各線ベク
トルの向きおよび該線ベクトルの輪郭線上における次の
線ベクトルの向きを判断する判別手段と、前記各線ベク
トルの向きおよび該ベクトルの次の線ベクトルの向きか
ら各線ベクトルの描画を制御する制御手段と、前記制御
手段の出力に応答して、各線ベクトルの終了点の近似画
素を発生するための第1の発生手段と、前記制御手段の
出力に応答して、各線ベクトルの終了点以外の近似画素
を発生するための第2の発生手段と、前記第1および第
2の発生手段の出力に応答して、各線ベクトルを各走査
線当り1画素で表される画素を前記記憶手段の対応座標
アドレスににおける既設定の画素データとの排他的論理
和を求めて前記記憶手段に書き込み、輪郭線画素を設定
するための第1の設定手段と、前記記憶手段に書き込ま
れた輪郭線画素をラスター走査し、各走査線の奇数番目
の輪郭線画素から、次に現われる偶数番目の輪郭画素の
直前の画素までの間を塗り潰された領域として設定する
第2の設定手段とを具備したものである。
【0027】本発明は、図形の輪郭を単数もしくは複数
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで前記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向きおよび該ベクトルの次のベクトルの向きを判
定し、該判定結果から、各線ベクトルの描画を各線ベク
トルの終了点および終了点以外の輪郭上の点を、それぞ
れプロットしないか、ベクトル上の位置に対応する画素
にプロットするか、ベクトル上の位置に対応する画素の
主走査の走査方向に一画素隣の画素にプロットするかの
いずれかを制御する。
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで前記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向きおよび該ベクトルの次のベクトルの向きを判
定し、該判定結果から、各線ベクトルの描画を各線ベク
トルの終了点および終了点以外の輪郭上の点を、それぞ
れプロットしないか、ベクトル上の位置に対応する画素
にプロットするか、ベクトル上の位置に対応する画素の
主走査の走査方向に一画素隣の画素にプロットするかの
いずれかを制御する。
【0028】本発明は、図形の輪郭を単数もしくは複数
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで上記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向き,該ベクトルの次のベクトルの向き、およ
び、該2ベクトル間の頂点が図形内で凸な頂点か、凹な
頂点か、あるいはそうでないかを判定し、該判定結果か
ら、各線ベクトルの描画を各線ベクトルの終了点および
終了点以外の輪郭上の点を、それぞれプロットしない
か、ベクトル上の位置に対応する画素プロットするか、
ベクトル上の位置に対応する画素の主走査の走査方向に
一画素隣の画素にプロットするかのいずれかを制御す
る。
の閉ループをなすように方向づけられたアウトラインの
線ベクトル列で表し、前記アウトライン線ベクトルから
アウトラインを作成してラスター走査を行い、前記アウ
トラインと主走査線との各奇数回目の交差から前記輪郭
に囲まれる領域が開始し、該奇数回目の交差の直後の偶
数回目の交差の直前までで上記囲まれる領域が終了する
と判定する図形処理方法において、各アウトラインベク
トルの向き,該ベクトルの次のベクトルの向き、およ
び、該2ベクトル間の頂点が図形内で凸な頂点か、凹な
頂点か、あるいはそうでないかを判定し、該判定結果か
ら、各線ベクトルの描画を各線ベクトルの終了点および
終了点以外の輪郭上の点を、それぞれプロットしない
か、ベクトル上の位置に対応する画素プロットするか、
ベクトル上の位置に対応する画素の主走査の走査方向に
一画素隣の画素にプロットするかのいずれかを制御す
る。
【0029】
【作用】本発明では、上記目的を達成するために、以下
の様に処理を行なう。
の様に処理を行なう。
【0030】まず、図形の輪郭に方向付けされた輪郭を
用いる。即ち、扱う図形の輪郭を全て時計の回転方向
(以下、右回り)に連なるアウトラインベクトルの集ま
り、もしくは、扱う図形の輪郭を全て反時計の回転方向
(以下、左回り)に連なるアウトラインベクトルの集ま
りとして表わす。ここで、時計の回転方向に連なるアウ
トラインベクトルとは、そのアウトラインベクトルの右
側を塗り潰すと当該図形が塗り潰されるものである(図
5)。また、反時計の回転方向に連なるアウトラインベ
クトルとは、そのアウトラインベクトルの左側を塗り潰
すと当該図形が塗り潰されるものである(図6)。
用いる。即ち、扱う図形の輪郭を全て時計の回転方向
(以下、右回り)に連なるアウトラインベクトルの集ま
り、もしくは、扱う図形の輪郭を全て反時計の回転方向
(以下、左回り)に連なるアウトラインベクトルの集ま
りとして表わす。ここで、時計の回転方向に連なるアウ
トラインベクトルとは、そのアウトラインベクトルの右
側を塗り潰すと当該図形が塗り潰されるものである(図
5)。また、反時計の回転方向に連なるアウトラインベ
クトルとは、そのアウトラインベクトルの左側を塗り潰
すと当該図形が塗り潰されるものである(図6)。
【0031】各アウトラインベクトルの向きを判断し、
かつ、また、該アウトラインベクトルの直前のアウトラ
インベクトルの向きをも考慮し場合を分ける。それぞれ
の場合に対して、各ベクトルの開始点(または終了点)
および開始点(または終了点)以外のベクトル上の点を
独立にプロットしないか、プロットするか、主走査の走
査方向に一画素隣の位置にプロットするかを制御しなが
ら、各アウトラインベクトルに沿った点のみのプロット
を行なう。かくして、アウトラインのみを描画する。
かつ、また、該アウトラインベクトルの直前のアウトラ
インベクトルの向きをも考慮し場合を分ける。それぞれ
の場合に対して、各ベクトルの開始点(または終了点)
および開始点(または終了点)以外のベクトル上の点を
独立にプロットしないか、プロットするか、主走査の走
査方向に一画素隣の位置にプロットするかを制御しなが
ら、各アウトラインベクトルに沿った点のみのプロット
を行なう。かくして、アウトラインのみを描画する。
【0032】ただし、前記水平ベクトルでないベクトル
の描画は、各走査線当り1画素でプロットする。
の描画は、各走査線当り1画素でプロットする。
【0033】しかる後に、前記アウトラインデータをラ
スター走査して、上記アウトラインと水平走査線との奇
数回目の交差で塗り潰しを開始し、偶数回目の交差で塗
り潰しを中止するようにする。
スター走査して、上記アウトラインと水平走査線との奇
数回目の交差で塗り潰しを開始し、偶数回目の交差で塗
り潰しを中止するようにする。
【0034】
【実施例】以下、本発明の実施例を詳細に説明する。
【0035】実施例1 図1は、ラスター走査型のビデオプリンタ用に構成した
本発明の実施例を示している。1はマイクロプロセッサ
でバス9を介して、RAM(ランダムアクセスメモリ)
2、ページメモリ3、直線描画回路4、同期制御回路
6、I/Oポート7および14と接続されている。5は
塗り潰し回路で、同期制御回路6からの同期信号12に
従ってページメモリ3よりラスター走査出力される輪郭
画像データ10を入力し、塗り潰された画像データ11
を出力する。
本発明の実施例を示している。1はマイクロプロセッサ
でバス9を介して、RAM(ランダムアクセスメモリ)
2、ページメモリ3、直線描画回路4、同期制御回路
6、I/Oポート7および14と接続されている。5は
塗り潰し回路で、同期制御回路6からの同期信号12に
従ってページメモリ3よりラスター走査出力される輪郭
画像データ10を入力し、塗り潰された画像データ11
を出力する。
【0036】8はプリンタ装置であり、I/Oポート7
を介してマイクロプロセッサ1とインターフェース接続
されている。またプリンタ装置8は、同期制御回路6か
らの同期信号13と、塗り潰された画像データ11と
が、ビデオインターフェースとして接続されている。
を介してマイクロプロセッサ1とインターフェース接続
されている。またプリンタ装置8は、同期制御回路6か
らの同期信号13と、塗り潰された画像データ11と
が、ビデオインターフェースとして接続されている。
【0037】輪郭データは、対象とする画像内に含まれ
ている閉ループの数を示すデータと、各閉ループを構成
する頂点の数を示すデータ群と、各閉ループ上の各頂点
を、それぞれの閉ループ上で方向づけられた順番に相隣
り合う頂点の座標を示したデータの集まりとして表現さ
れる。この内容を図9に示した。
ている閉ループの数を示すデータと、各閉ループを構成
する頂点の数を示すデータ群と、各閉ループ上の各頂点
を、それぞれの閉ループ上で方向づけられた順番に相隣
り合う頂点の座標を示したデータの集まりとして表現さ
れる。この内容を図9に示した。
【0038】図8に、右回りのアウトラインデータの例
を示した。同図の例の輪郭データを図10に示した。図
10において、図8のアウトラインは、A→B→C→D
→E→F→G→H→I→J→Aの順に、A点を開始点と
して右まわりに一巡する点列として表現されている。
を示した。同図の例の輪郭データを図10に示した。図
10において、図8のアウトラインは、A→B→C→D
→E→F→G→H→I→J→Aの順に、A点を開始点と
して右まわりに一巡する点列として表現されている。
【0039】以下、座標の原点は画像の左上にあると
し、主走査方向をx軸に、副走査方向をy軸として説明
する。また、アウトラインは、右回りのデータ表現をと
るものとして説明を進める。各閉ループ内の始点は、ル
ープ上の任意の点でよい。
し、主走査方向をx軸に、副走査方向をy軸として説明
する。また、アウトラインは、右回りのデータ表現をと
るものとして説明を進める。各閉ループ内の始点は、ル
ープ上の任意の点でよい。
【0040】図11に、本発明の実施例における装置の
動作を示す。以下、図11で示すフローチャートに従っ
て、その動作を説明する。CPU1は、S1でその処理
を開始すると、S2へ進む。S2では、ページメモリ3
をリセットする。このとき、CPU1は同期制御回路6
を介して塗り潰し回路5をページメモリへ一定データを
出力する様に制御し、同期制御回路6に、この一定デー
タをページメモリ3へ一面書き込ませることによりペー
ジメモリのリセットを行なう。
動作を示す。以下、図11で示すフローチャートに従っ
て、その動作を説明する。CPU1は、S1でその処理
を開始すると、S2へ進む。S2では、ページメモリ3
をリセットする。このとき、CPU1は同期制御回路6
を介して塗り潰し回路5をページメモリへ一定データを
出力する様に制御し、同期制御回路6に、この一定デー
タをページメモリ3へ一面書き込ませることによりペー
ジメモリのリセットを行なう。
【0041】図13に塗り潰し回路5の構成例を示す。
S2で、CPU1の制御で、同期制御回路6は、信号線
12−2をLowに固定することによって、塗り潰し回
路5の出力11をLowになる様に制御する。同期制御
回路6は、この出力11をページメモリ3に対して、同
期信号に合わせて書き込み、これにより、ページメモリ
3をすべて0にリセットを行なう。
S2で、CPU1の制御で、同期制御回路6は、信号線
12−2をLowに固定することによって、塗り潰し回
路5の出力11をLowになる様に制御する。同期制御
回路6は、この出力11をページメモリ3に対して、同
期信号に合わせて書き込み、これにより、ページメモリ
3をすべて0にリセットを行なう。
【0042】図14は、一ページの先頭を意味するペー
ジ同期信号(Page Sync)、および、同ページ
内における各走査線の先頭を意味する走査線同期信号
(Line Sync)の関係を示すタイムチャートで
ある。図15は、一走査線の先頭を意味する走査線同期
信号(Line Sync)および、同走査線内におけ
る各画素データ確定のタイミングを与える画素同期信号
(CLK)と、各画素データを示す。リセットは、ペー
ジ同期信号により開始され、ページメモリ3の図示しな
い付加回路によって走査同期信号および画素同期信号に
よりメモリのアドレスを順次に変更してゆくことで、実
施される。
ジ同期信号(Page Sync)、および、同ページ
内における各走査線の先頭を意味する走査線同期信号
(Line Sync)の関係を示すタイムチャートで
ある。図15は、一走査線の先頭を意味する走査線同期
信号(Line Sync)および、同走査線内におけ
る各画素データ確定のタイミングを与える画素同期信号
(CLK)と、各画素データを示す。リセットは、ペー
ジ同期信号により開始され、ページメモリ3の図示しな
い付加回路によって走査同期信号および画素同期信号に
よりメモリのアドレスを順次に変更してゆくことで、実
施される。
【0043】ページメモリ3のリセットが終了すると、
S3へ進む。S3では、I/O14を経由して、画像の
出力指示があったか否かを判定し、出力指示があった場
合は、S4に進み、無かった場合は、出力指示を待つ。
S3へ進む。S3では、I/O14を経由して、画像の
出力指示があったか否かを判定し、出力指示があった場
合は、S4に進み、無かった場合は、出力指示を待つ。
【0044】S4で、塗り潰し用の輪郭データを、I/
O14を経由して外部より、あるいは、図示しない補助
記憶装置から、RAM領域2へ入力する。次に、S5へ
進み、図21に記載した規則に従って、CPU1は直線
描画回路4を制御して、ページメモリ3上に、塗り潰し
用の輪郭を描画する。
O14を経由して外部より、あるいは、図示しない補助
記憶装置から、RAM領域2へ入力する。次に、S5へ
進み、図21に記載した規則に従って、CPU1は直線
描画回路4を制御して、ページメモリ3上に、塗り潰し
用の輪郭を描画する。
【0045】次に、S6へ進み、プリンタがレディであ
るか否かをI/O7を経由してチェックする。レディで
あればS7へ進み、そうでなければレディーになるのを
待つ。S7では、CPU1は、同期制御回路6を制御し
て、ページメモリ3上の塗り潰し用の輪郭画像を読み出
し、塗り潰し回路5を経由して、塗り潰された2値画像
を信号線11に出力させるものである。
るか否かをI/O7を経由してチェックする。レディで
あればS7へ進み、そうでなければレディーになるのを
待つ。S7では、CPU1は、同期制御回路6を制御し
て、ページメモリ3上の塗り潰し用の輪郭画像を読み出
し、塗り潰し回路5を経由して、塗り潰された2値画像
を信号線11に出力させるものである。
【0046】以下、S5の塗り潰し用輪郭描画に関し
て、さらに詳しく説明する。
て、さらに詳しく説明する。
【0047】図12にS5の塗り潰し用輪郭描画の処理
のフローチャートを示す。CPU1はS11で輪郭描画
を開始すると、S12で処理の終了した閉ループの数n
を保持するレジスタを0に初期化すると、S13に進
む。ここで、輪郭データは前述の如く、図9の如き形態
で、RAM領域2に保持されているものとする。S13
では、輪郭データ内に含まれる閉ループ数Nと、処理済
ループ数nを比較して、Nがnより大きいか否かを判定
する。
のフローチャートを示す。CPU1はS11で輪郭描画
を開始すると、S12で処理の終了した閉ループの数n
を保持するレジスタを0に初期化すると、S13に進
む。ここで、輪郭データは前述の如く、図9の如き形態
で、RAM領域2に保持されているものとする。S13
では、輪郭データ内に含まれる閉ループ数Nと、処理済
ループ数nを比較して、Nがnより大きいか否かを判定
する。
【0048】大きい場合は、未処理のループが残ってい
ると判断しS15へ進む。そうでない場合には、未処理
のループは存在しないと判断しS14へ進んで輪郭描画
の処理を終える。S15では、処理済ループ数nで示さ
れるループ(今、nがiであったとする)iのループ内
の頂点数Li が2より小さいか否かを判定する。2より
小さい場合は、閉ループとして処理する頂点はないと判
断してS13に戻る。そうでない場合には、S16へ進
む。
ると判断しS15へ進む。そうでない場合には、未処理
のループは存在しないと判断しS14へ進んで輪郭描画
の処理を終える。S15では、処理済ループ数nで示さ
れるループ(今、nがiであったとする)iのループ内
の頂点数Li が2より小さいか否かを判定する。2より
小さい場合は、閉ループとして処理する頂点はないと判
断してS13に戻る。そうでない場合には、S16へ進
む。
【0049】S16では、処理の終了した頂点の数Lを
保持するレジスタを1に初期化するとS17へ進む。S
17では、最終ベクトルデータをもってS18以降で最
初に処理するベクトルの前ベクトルのデータとして、前
ベクトルデータを生成する。即ち、今、第iループ内
に、Li 個に頂点数があったとすると、座標(x
iLi-1,yiLi-1)で示される頂点を始点として、座標
(xi0 ,yi0 )で示される頂点を終点とするベクト
ルを前ベクトルとしてみなし、該ベクトルの向きが、上
向きか、下向きか、右向きか、左向きかを判定して結果
をRAM2上のワーキングエリアに保持する。加えて、
始点から終点へ向けてベクトルに沿ってy方向に単位長
変化する際のx方向の変分(xi0 −xiLi-1)/|y
i0 −yiLi-1|を保持する。
保持するレジスタを1に初期化するとS17へ進む。S
17では、最終ベクトルデータをもってS18以降で最
初に処理するベクトルの前ベクトルのデータとして、前
ベクトルデータを生成する。即ち、今、第iループ内
に、Li 個に頂点数があったとすると、座標(x
iLi-1,yiLi-1)で示される頂点を始点として、座標
(xi0 ,yi0 )で示される頂点を終点とするベクト
ルを前ベクトルとしてみなし、該ベクトルの向きが、上
向きか、下向きか、右向きか、左向きかを判定して結果
をRAM2上のワーキングエリアに保持する。加えて、
始点から終点へ向けてベクトルに沿ってy方向に単位長
変化する際のx方向の変分(xi0 −xiLi-1)/|y
i0 −yiLi-1|を保持する。
【0050】ここで、図8の様な座標系の下では、ベク
トルが上向きとは、終点のy座標値が始点のy座標値よ
りも小さい時を意味し、下向きとは、始点のy座標値が
終点のy座標値よりも小さい時を意味する(y軸の向き
を反対にとる場合には、この反対となる)。始点と終点
のy座標の値が等しい場合で、始点のx座標が終点のx
座標よりも小さい時右向きとし、終点のx座標が、始点
のx座標より小さい時左向きとする(x軸の向きを反対
にとる場合には、この反対となる)。また、始点と終点
の座標値が全く同じ場合は、これらは同一点となってし
まうので、閉ループ上には、このようなベクトルは存在
しないようにあらかじめ前処理されているものとする。
トルが上向きとは、終点のy座標値が始点のy座標値よ
りも小さい時を意味し、下向きとは、始点のy座標値が
終点のy座標値よりも小さい時を意味する(y軸の向き
を反対にとる場合には、この反対となる)。始点と終点
のy座標の値が等しい場合で、始点のx座標が終点のx
座標よりも小さい時右向きとし、終点のx座標が、始点
のx座標より小さい時左向きとする(x軸の向きを反対
にとる場合には、この反対となる)。また、始点と終点
の座標値が全く同じ場合は、これらは同一点となってし
まうので、閉ループ上には、このようなベクトルは存在
しないようにあらかじめ前処理されているものとする。
【0051】かくして、前ベクトルのデータがセットさ
れるとS18へ進む。S18では、処理済の頂点数Lが
ループ内頂点数Li より小さいか否かを判定し、小さい
時には、未処理の頂点が残っていると判断して、S19
へ進み、そうでない時は頂点座標テーブルの最終点まで
処理が進んだと判断し、閉ループ内の頂点座標テーブル
内の最後の点を始点として同テーブル内の最初の点を終
点とするベクトルの処理を行なうべくS23へ進む。S
19では、この時の処理済の頂点数カウンタLの保持す
る値をjとすると、第j−1頂点を始点として第j頂点
を終点としたベクトルに注目し、このベクトル(以降、
現ベクトルと呼ぶ)の方向と始点から終点へ向けてベク
トルに沿ってy方向に単位長変化する際のx方向の変分
(以降、x変分と呼ぶ)をS17同様に作成してS20
へ進む。
れるとS18へ進む。S18では、処理済の頂点数Lが
ループ内頂点数Li より小さいか否かを判定し、小さい
時には、未処理の頂点が残っていると判断して、S19
へ進み、そうでない時は頂点座標テーブルの最終点まで
処理が進んだと判断し、閉ループ内の頂点座標テーブル
内の最後の点を始点として同テーブル内の最初の点を終
点とするベクトルの処理を行なうべくS23へ進む。S
19では、この時の処理済の頂点数カウンタLの保持す
る値をjとすると、第j−1頂点を始点として第j頂点
を終点としたベクトルに注目し、このベクトル(以降、
現ベクトルと呼ぶ)の方向と始点から終点へ向けてベク
トルに沿ってy方向に単位長変化する際のx方向の変分
(以降、x変分と呼ぶ)をS17同様に作成してS20
へ進む。
【0052】S20では、RAM2上のワーキングエリ
アに保持されている前ベクトルの向きおよびx変分と、
現ベクトルの向きおよびx変分を用いて、図21に示す
規則に従った塗り潰し処理用の輪郭描画を直線描画回路
4を制御することによって行なう。この動作はおって詳
述する。
アに保持されている前ベクトルの向きおよびx変分と、
現ベクトルの向きおよびx変分を用いて、図21に示す
規則に従った塗り潰し処理用の輪郭描画を直線描画回路
4を制御することによって行なう。この動作はおって詳
述する。
【0053】かくして現ベクトルの輪郭の描画を終える
とS21へ進む。S21では、S20で用いた現ベクト
ルの向きとx変分を前ベクトルの向きとx変分として更
新し、RAM2上のワーキングエリアに保持する。S2
2では処理済の頂点数レジスタの保持する値を1つUP
してS18へ戻る。S23は、当該閉ループ内の頂点座
標テーブル内の最後の点を始点として同テーブル内の最
初の点を終点とするベクトルを現ベクトルとして、向き
とx変分を作成してS24へ進む。
とS21へ進む。S21では、S20で用いた現ベクト
ルの向きとx変分を前ベクトルの向きとx変分として更
新し、RAM2上のワーキングエリアに保持する。S2
2では処理済の頂点数レジスタの保持する値を1つUP
してS18へ戻る。S23は、当該閉ループ内の頂点座
標テーブル内の最後の点を始点として同テーブル内の最
初の点を終点とするベクトルを現ベクトルとして、向き
とx変分を作成してS24へ進む。
【0054】S24では、S20と全く同様に前ベクト
ルの向きとx変分、および現ベクトルの向きとx変分か
ら、図21に示す規則に従った塗り潰し用の輪郭を直線
描画回路4を制御することによって行ないS25へ進
む。S25では、当該閉ループの処理を終え、未処理の
ループ数のレジスタの保持する値を1つUPしてS13
へ戻るものである。
ルの向きとx変分、および現ベクトルの向きとx変分か
ら、図21に示す規則に従った塗り潰し用の輪郭を直線
描画回路4を制御することによって行ないS25へ進
む。S25では、当該閉ループの処理を終え、未処理の
ループ数のレジスタの保持する値を1つUPしてS13
へ戻るものである。
【0055】S20およびS24で行なわれる塗り潰し
処理の輪郭描画に関して説明する。この処理はCPU1
が、RAM2上に保持され前ベクトルの向きとx変分、
現ベクトルの向きとx変分を見て、図21の規則に従っ
て描画が実行される。
処理の輪郭描画に関して説明する。この処理はCPU1
が、RAM2上に保持され前ベクトルの向きとx変分、
現ベクトルの向きとx変分を見て、図21の規則に従っ
て描画が実行される。
【0056】描画は、現ベクトルの始点の座標上の1点
と、この始点以外の終点までの現ベクトル上の輪郭点
(終点をも含む)とを分けて、その描画を制御してい
る。また、輪郭上の各点の描画は、始点に関しても、そ
れ以外のベクトル上の輪郭点に関しても、描画する一点
一点の座標に対応するページメモリ3上のアドレスに描
画するか、x軸上での右隣りの画素アドレスに描画する
か、あるいは描画しないかを、三者択一の形で描画を制
御している。描画する(あるいは、プロットするともい
う)場合は、ベクトル上に沿った位置アドレスに描画す
る場合も、右隣の画素位置アドレスに描画する場合も、
あらかじめ該アドレスに書き込まれている値と1との排
他的論理和をとった結果の値を新めて該アドレスに書き
込むことによってなされる。
と、この始点以外の終点までの現ベクトル上の輪郭点
(終点をも含む)とを分けて、その描画を制御してい
る。また、輪郭上の各点の描画は、始点に関しても、そ
れ以外のベクトル上の輪郭点に関しても、描画する一点
一点の座標に対応するページメモリ3上のアドレスに描
画するか、x軸上での右隣りの画素アドレスに描画する
か、あるいは描画しないかを、三者択一の形で描画を制
御している。描画する(あるいは、プロットするともい
う)場合は、ベクトル上に沿った位置アドレスに描画す
る場合も、右隣の画素位置アドレスに描画する場合も、
あらかじめ該アドレスに書き込まれている値と1との排
他的論理和をとった結果の値を新めて該アドレスに書き
込むことによってなされる。
【0057】即ち、該アドレスに書き込まれていた値が
0だった場合には1を、1だった場合には0を書き込む
ものである。現アウトラインベクトルの向きが水平、即
ち、右向き、もしくは、左向きの場合(ケース1〜8)
には、前アウトラインベクトルの向きやx変分によらず
開始点以外の輪郭点は描画しない。
0だった場合には1を、1だった場合には0を書き込む
ものである。現アウトラインベクトルの向きが水平、即
ち、右向き、もしくは、左向きの場合(ケース1〜8)
には、前アウトラインベクトルの向きやx変分によらず
開始点以外の輪郭点は描画しない。
【0058】また、この時、開始点に関しては、現アウ
トラインベクトルの向きが、前ベクトルの向きと同じ場
合、即ち、現ベクトルも前ベクトルも共に右向き(ケー
ス1)か、あるいは共に左向き(ケース6)の場合には
プロットしない。前ベクトルが上向きで現ベクトルが右
向き(ケース4)の時、および、前ベクトルが下向きで
現ベクトルが左向きの(ケース7)時もプロットしな
い。前ベクトルが左向きで現ベクトルが右向き(ケース
2)の時、および、前ベクトルが上向きで現ベクトルが
左向き(ケース8)の時は、開始点の画素位置アドレス
にプロットする。前ベクトルが下向きで現ベクトルが右
向き(ケース3)の時、および、前ベクトルが右向き
で、現ベクトルが左向き(ケース5)の時は、開始点の
画素の一画素右隣の画素位置アドレスにプロットする。
トラインベクトルの向きが、前ベクトルの向きと同じ場
合、即ち、現ベクトルも前ベクトルも共に右向き(ケー
ス1)か、あるいは共に左向き(ケース6)の場合には
プロットしない。前ベクトルが上向きで現ベクトルが右
向き(ケース4)の時、および、前ベクトルが下向きで
現ベクトルが左向きの(ケース7)時もプロットしな
い。前ベクトルが左向きで現ベクトルが右向き(ケース
2)の時、および、前ベクトルが上向きで現ベクトルが
左向き(ケース8)の時は、開始点の画素位置アドレス
にプロットする。前ベクトルが下向きで現ベクトルが右
向き(ケース3)の時、および、前ベクトルが右向き
で、現ベクトルが左向き(ケース5)の時は、開始点の
画素の一画素右隣の画素位置アドレスにプロットする。
【0059】一方、現アウトラインベクトルの向きが非
水平の場合(ケース9〜18)を説明する。現アウトラ
インベクトルが下向きの場合(ケース9〜13)には、
前アウトラインベクトルの向きやx変分によらず、開始
点以外の輪郭点は現アウトラインベクトル上に沿った位
置の一画素右隣りの画素位置アドレスにそれぞれプロッ
トしていく。また、現アウトラインベクトルが上向きの
場合(ケース14〜18)には、前ベクトルの向きやx
変分によらず、開始点以外の輪郭点は、現アウトライン
ベクトル上に沿った画素位置アドレスに、それぞれプロ
ットしていく。
水平の場合(ケース9〜18)を説明する。現アウトラ
インベクトルが下向きの場合(ケース9〜13)には、
前アウトラインベクトルの向きやx変分によらず、開始
点以外の輪郭点は現アウトラインベクトル上に沿った位
置の一画素右隣りの画素位置アドレスにそれぞれプロッ
トしていく。また、現アウトラインベクトルが上向きの
場合(ケース14〜18)には、前ベクトルの向きやx
変分によらず、開始点以外の輪郭点は、現アウトライン
ベクトル上に沿った画素位置アドレスに、それぞれプロ
ットしていく。
【0060】また、開始点に関しては、現アウトライン
ベクトルの向きが非水平の場合も水平の場合と同様に、
現ベクトルの向きと前ベクトルの向きが同じ場合、即
ち、現ベクトルも前ベクトルも共に下向き(ケース1
1)か、あるいは共に上向き(ケース18)の場合には
プロットしない。
ベクトルの向きが非水平の場合も水平の場合と同様に、
現ベクトルの向きと前ベクトルの向きが同じ場合、即
ち、現ベクトルも前ベクトルも共に下向き(ケース1
1)か、あるいは共に上向き(ケース18)の場合には
プロットしない。
【0061】前ベクトルが左向きで現ベクトルが下向き
(ケース10)の時、および、前ベクトルが右向きで現
ベクトルが上向き(ケース14)の時もプロットしな
い。前ベクトルが右向きで、現ベクトルが下向きの時
(ケース9)は、開始点の位置の一画素右隣りの画素位
置アドレスにプロットする。前ベクトルが上向きで、現
ベクトルが下向きの時(ケース12,13)は、前ベク
トルのx増分と現ベクトルのx増分の和が0又は正(ケ
ース12)ならば、開始点の一画素右隣の画素位置アド
レスにプロットし、負(ケース13)ならば、開始点の
画素位置アドレスにプロットするものである。
(ケース10)の時、および、前ベクトルが右向きで現
ベクトルが上向き(ケース14)の時もプロットしな
い。前ベクトルが右向きで、現ベクトルが下向きの時
(ケース9)は、開始点の位置の一画素右隣りの画素位
置アドレスにプロットする。前ベクトルが上向きで、現
ベクトルが下向きの時(ケース12,13)は、前ベク
トルのx増分と現ベクトルのx増分の和が0又は正(ケ
ース12)ならば、開始点の一画素右隣の画素位置アド
レスにプロットし、負(ケース13)ならば、開始点の
画素位置アドレスにプロットするものである。
【0062】前ベクトルが左向きで現ベクトルが上向き
の時(ケース15)は開始点の画素位置アドレスにプロ
ットするものである。前ベクトルが下向きで現ベクトル
が上向きの時(ケース16,17)は、前ベクトルのx
増分と現ベクトルのx増分の和が正(ケース16)なら
ば、開始点の一画素右隣りの画素位置アドレスにプロッ
トし、0又は負(ケース17)ならば、開始点の画素位
置アドレスにプロットする。
の時(ケース15)は開始点の画素位置アドレスにプロ
ットするものである。前ベクトルが下向きで現ベクトル
が上向きの時(ケース16,17)は、前ベクトルのx
増分と現ベクトルのx増分の和が正(ケース16)なら
ば、開始点の一画素右隣りの画素位置アドレスにプロッ
トし、0又は負(ケース17)ならば、開始点の画素位
置アドレスにプロットする。
【0063】図8の例に、図21の規則を適用して塗り
潰し用の輪郭を描画した結果を図16に示す。図8にお
いて、輪郭ベクトルABを現ベクトルとすると、前ベク
トルはJAである。このベクトルJAは下向き、x変分
は1、ベクトルABは右向き、x変分は∞である。この
場合はケース3に該当し、P2の位置にプロットされ
る。以降ベクトルBCではケース9に該当し、Q1〜Q
2までのベクトルBCの右一画素隣の各点がプロットさ
れる。CDではケース7に該当し、何もプロットされな
い。ベクトルDEでは、ケース15に該当し、Q3,Q
4,P6がプロットされる。ベクトルEFでは、前ベク
トルDEは上向きでx増分は−1であり、現ベクトルE
Fは下向きで、x増分は−1である。
潰し用の輪郭を描画した結果を図16に示す。図8にお
いて、輪郭ベクトルABを現ベクトルとすると、前ベク
トルはJAである。このベクトルJAは下向き、x変分
は1、ベクトルABは右向き、x変分は∞である。この
場合はケース3に該当し、P2の位置にプロットされ
る。以降ベクトルBCではケース9に該当し、Q1〜Q
2までのベクトルBCの右一画素隣の各点がプロットさ
れる。CDではケース7に該当し、何もプロットされな
い。ベクトルDEでは、ケース15に該当し、Q3,Q
4,P6がプロットされる。ベクトルEFでは、前ベク
トルDEは上向きでx増分は−1であり、現ベクトルE
Fは下向きで、x増分は−1である。
【0064】よってベクトルEFでは、ケース13に該
当し、P6,Q4〜Q5がプロットされる。P6はベク
トルDEの処理の際に既に1がプロットされているた
め、ここで再び0にリセットされることになる。ベクト
ルFGではケース7に該当し、何もプロットされない。
ベクトルGHでは、ケース10に該当し、Q6,Q7が
プロットされる。ベクトルHIでは、前ベクトルGHは
下向きでx変分が−1であり、現ベクトルは上向きでx
変分が−5/9であり、ケース13に該当する。
当し、P6,Q4〜Q5がプロットされる。P6はベク
トルDEの処理の際に既に1がプロットされているた
め、ここで再び0にリセットされることになる。ベクト
ルFGではケース7に該当し、何もプロットされない。
ベクトルGHでは、ケース10に該当し、Q6,Q7が
プロットされる。ベクトルHIでは、前ベクトルGHは
下向きでx変分が−1であり、現ベクトルは上向きでx
変分が−5/9であり、ケース13に該当する。
【0065】よって P7〜Q8の間、ベクトルHI上
がプロットされる。ベクトルIJでは、ケース18に該
当し、Q8にはプロットせず、Q9〜P5の間、ベクト
ルIJ上がプロットされる。ベクトルJAでは、前ベク
トルIJは上向きでx変分が+1,現ベクトルJAは下
向きでx変分が+1であるので、ケース12に該当し、
Q10〜P2の間、ベクトルJAに沿って、その一画素
右隣りの一連の画素がプロットされる。ここで、P2は
ベクトルABを処理した際に、即に1がプロットされて
いるために、ベクトルJAの処理において、再度0とし
てプロットし直される。
がプロットされる。ベクトルIJでは、ケース18に該
当し、Q8にはプロットせず、Q9〜P5の間、ベクト
ルIJ上がプロットされる。ベクトルJAでは、前ベク
トルIJは上向きでx変分が+1,現ベクトルJAは下
向きでx変分が+1であるので、ケース12に該当し、
Q10〜P2の間、ベクトルJAに沿って、その一画素
右隣りの一連の画素がプロットされる。ここで、P2は
ベクトルABを処理した際に、即に1がプロットされて
いるために、ベクトルJAの処理において、再度0とし
てプロットし直される。
【0066】かくして得られた塗り潰し用の輪郭をラス
ター走査して、水平走査線上で出現する奇数番目の1に
プロットされた画素位置から、次の偶数番目の1にプロ
ットされた画素の直前までを塗り潰し区間とし、他を塗
り潰さない区間として得られる画像を図17に示した。
図17に得られた画像は、輪郭ベクトルで囲まれた内域
を歪なく再現している。
ター走査して、水平走査線上で出現する奇数番目の1に
プロットされた画素位置から、次の偶数番目の1にプロ
ットされた画素の直前までを塗り潰し区間とし、他を塗
り潰さない区間として得られる画像を図17に示した。
図17に得られた画像は、輪郭ベクトルで囲まれた内域
を歪なく再現している。
【0067】次に直線描画回路4に関して説明する。直
線描画回路4の機能ブロック図を図18に示した。直線
描画回路4は、直線発生制御回路21,直線発生回路2
2,および、描画制御回路23の3つの部分より構成さ
れる。直線描画回路4は、CPU1によって、各アウト
ラインベクトルの描画毎に制御され、一本づつアウトラ
インベクトルを直線描画してゆく。
線描画回路4の機能ブロック図を図18に示した。直線
描画回路4は、直線発生制御回路21,直線発生回路2
2,および、描画制御回路23の3つの部分より構成さ
れる。直線描画回路4は、CPU1によって、各アウト
ラインベクトルの描画毎に制御され、一本づつアウトラ
インベクトルを直線描画してゆく。
【0068】直線描画は、前記、図12のS20および
S24で示した現ベクトル描画ルーチンで行なわれる。
このルーチンの詳細を図20に示した。S31にて、本
ルーチンを開始するとS32へ進む。S32では、直線
発生制御回路21より出力される終了信号24を見るこ
とによって、直線描画回路が前の処理を完了しており、
次の処理の設定が可能か否かを判定し、可能(レディ
ー)であれば、S33へ進み、レディーでなければ、レ
ディーとなるのを待つ。S33では、直線発生回路22
にこれから描画しようとしているベクトルの始点のx座
標値をセットし、S34へ進む。
S24で示した現ベクトル描画ルーチンで行なわれる。
このルーチンの詳細を図20に示した。S31にて、本
ルーチンを開始するとS32へ進む。S32では、直線
発生制御回路21より出力される終了信号24を見るこ
とによって、直線描画回路が前の処理を完了しており、
次の処理の設定が可能か否かを判定し、可能(レディ
ー)であれば、S33へ進み、レディーでなければ、レ
ディーとなるのを待つ。S33では、直線発生回路22
にこれから描画しようとしているベクトルの始点のx座
標値をセットし、S34へ進む。
【0069】S34では直線発生回路22に、これから
描画しようとしているベクトルの始点のy座標値をセッ
トし、S35へ進む。S35では、直線発生回路22
に、これから描画しようとしているベクトルの終点のy
座標値をセットし、S36へ進む。S36では、x変分
をセットしS37へ進む。S37では、y座標のカウン
トが、アップかダウンかを設定しS38へ進む。S38
では、開始点および開始点以外の輪郭上の点(輪郭点)
を、それぞれ、プロットするのかしないのか(以下、出
力モードと称する)、また、輪郭上の位置の画素アドレ
スにプロットするのか、それとも右一画素隣にプロット
するのか(以下、シフトモードと称する)を2bitず
つ(それぞれ、開始点描画モードおよび輪郭点描画モー
ドと称する)計4bitを描画制御回路23にセット
し、S39へ進む。
描画しようとしているベクトルの始点のy座標値をセッ
トし、S35へ進む。S35では、直線発生回路22
に、これから描画しようとしているベクトルの終点のy
座標値をセットし、S36へ進む。S36では、x変分
をセットしS37へ進む。S37では、y座標のカウン
トが、アップかダウンかを設定しS38へ進む。S38
では、開始点および開始点以外の輪郭上の点(輪郭点)
を、それぞれ、プロットするのかしないのか(以下、出
力モードと称する)、また、輪郭上の位置の画素アドレ
スにプロットするのか、それとも右一画素隣にプロット
するのか(以下、シフトモードと称する)を2bitず
つ(それぞれ、開始点描画モードおよび輪郭点描画モー
ドと称する)計4bitを描画制御回路23にセット
し、S39へ進む。
【0070】S39では、直線発生回路21に開始信号
25を送出した後、S40へ進み、図12のルーチンに
リターンする。以上の様に、初期化された直線描画回路
4は、開始信号25を受けると動作を開始する。
25を送出した後、S40へ進み、図12のルーチンに
リターンする。以上の様に、初期化された直線描画回路
4は、開始信号25を受けると動作を開始する。
【0071】図18に機能ブロック分けして表現した直
線描画回路4を、図19に概略の構成例を示した。
線描画回路4を、図19に概略の構成例を示した。
【0072】開始信号25は、Highレベルで開始を
意味するパルス信号で、パルス幅は、図示しない付加回
路により適正に設定されている。CPU1は、このパル
スのトリガとなる信号を送出している。終了信号24
は、Lowレベルで終了状態を意味する信号であり、H
ighレベルの間は、直線描画回路が動作中であること
を意味している。開始信号と描画信号の論理和をOR回
路2101が出力する。
意味するパルス信号で、パルス幅は、図示しない付加回
路により適正に設定されている。CPU1は、このパル
スのトリガとなる信号を送出している。終了信号24
は、Lowレベルで終了状態を意味する信号であり、H
ighレベルの間は、直線描画回路が動作中であること
を意味している。開始信号と描画信号の論理和をOR回
路2101が出力する。
【0073】このOR回路2101の出力で、外部より
与えられる定常発生している一定周期のクロックである
描画同期信号をAND回路2102において制御するこ
とによって、ベクトルの開始点から終点の間までの分の
描画同期が生成される。バッファ2202には、CPU
1によって始点のy座標値がセットされている。また、
バッファ2204には、終点のy座標値が、バッファ2
201には、始点のx座標値が、バッファ2203には
x変分が同様にセットされている。アップダウンカウン
タ2205は、開始信号を入力すると、バッファ220
2に保持された始点のy座標値をカウント値の初期値と
してロードする。
与えられる定常発生している一定周期のクロックである
描画同期信号をAND回路2102において制御するこ
とによって、ベクトルの開始点から終点の間までの分の
描画同期が生成される。バッファ2202には、CPU
1によって始点のy座標値がセットされている。また、
バッファ2204には、終点のy座標値が、バッファ2
201には、始点のx座標値が、バッファ2203には
x変分が同様にセットされている。アップダウンカウン
タ2205は、開始信号を入力すると、バッファ220
2に保持された始点のy座標値をカウント値の初期値と
してロードする。
【0074】アップダウンカウンタ2205は、保持し
ているカウント値をそのまま信号線2210に出力す
る。比較器2206は、開始信号を入力すると動作し、
アップダウンカウンタ2205の出力とバッファ220
4に保持される終点のy座標を比較し、バッファ220
4に保持される値とアップダウンカウンタ2205の出
力値が等しくなると、Lowレベルの信号を出力し、次
の開始信号をうけるまで、このレベルを保持する。そう
でない時はHighレベルの信号を出力するものであ
る。
ているカウント値をそのまま信号線2210に出力す
る。比較器2206は、開始信号を入力すると動作し、
アップダウンカウンタ2205の出力とバッファ220
4に保持される終点のy座標を比較し、バッファ220
4に保持される値とアップダウンカウンタ2205の出
力値が等しくなると、Lowレベルの信号を出力し、次
の開始信号をうけるまで、このレベルを保持する。そう
でない時はHighレベルの信号を出力するものであ
る。
【0075】アップダウンカンタ2205は、描画同期
26に同期してカウントダウンもしくはカウントアップ
を行ない描画画素のyアドレスを更新する。カウントダ
ウンなのかカウントアップなのかは、CPU1により設
定されたy増域バッファ2211の保持する値によって
決まり、設定値1ならカウントアップで、設置値が0な
らカウントダウンをするものである。設定値1というこ
とは、下向きのベクトルを描画することであり、設定値
が0ということは、上向きのベクトルを描画することで
ある。
26に同期してカウントダウンもしくはカウントアップ
を行ない描画画素のyアドレスを更新する。カウントダ
ウンなのかカウントアップなのかは、CPU1により設
定されたy増域バッファ2211の保持する値によって
決まり、設定値1ならカウントアップで、設置値が0な
らカウントダウンをするものである。設定値1というこ
とは、下向きのベクトルを描画することであり、設定値
が0ということは、上向きのベクトルを描画することで
ある。
【0076】水平の場合は、設定値はどちらでもよい
が、この場合は比較器2206は、Highレベルを出
力することがなく、開始信号入力時の1画素分のみの同
期信号がゲート2102より出力され、直線描画回路4
は、結果として、開始点のみの動作を行なうこととな
る。選択器2207は、バッファ2201に保持された
始点のx座標値と、加算器2209とのいずれかを、開
始信号により選択出力する。
が、この場合は比較器2206は、Highレベルを出
力することがなく、開始信号入力時の1画素分のみの同
期信号がゲート2102より出力され、直線描画回路4
は、結果として、開始点のみの動作を行なうこととな
る。選択器2207は、バッファ2201に保持された
始点のx座標値と、加算器2209とのいずれかを、開
始信号により選択出力する。
【0077】即ち、開始信号の入力時のみ、バッファ2
201の出力を選択出力し、それ以外は加算器2209
の出力を選択出力する。ラッチ2208は、選択器22
07の出力を描画同期26により取り込み、取り込んだ
値を、現時点でプロットする点のx座標値として出力す
る。このラッチ2208の出力と、バッファ2203に
保持されたx変分との和を、加算器2209は、描画同
期26に同期して演算・出力する。かくして、描画同期
26に同期して描画画素のxアドレスが更新される。バ
ッファ2301は、ベクトルの開始点の描画を、ベクト
ル上の画素位置に行なうか、右一画素隣に行なうかを指
示する情報がCPU1により書き込まれていて、この値
を選択器2303に出力している。
201の出力を選択出力し、それ以外は加算器2209
の出力を選択出力する。ラッチ2208は、選択器22
07の出力を描画同期26により取り込み、取り込んだ
値を、現時点でプロットする点のx座標値として出力す
る。このラッチ2208の出力と、バッファ2203に
保持されたx変分との和を、加算器2209は、描画同
期26に同期して演算・出力する。かくして、描画同期
26に同期して描画画素のxアドレスが更新される。バ
ッファ2301は、ベクトルの開始点の描画を、ベクト
ル上の画素位置に行なうか、右一画素隣に行なうかを指
示する情報がCPU1により書き込まれていて、この値
を選択器2303に出力している。
【0078】バッファ2302は、ベクトル上の開始点
以外の各輪郭点を、ベクトル上の画素位置に行なうか、
右一画素隣に行なうかを指示する情報がCPU1により
書き込まれていて、この値を選択器2303に出力して
いる。どちらも0が保持されている場合は、ベクトル上
の画素位置に描画することを意味し、1が保持されてい
る場合は、右一画素隣に描画することを意味する。選択
器2303は開始信号の入力時のみ、バッファ2301
の出力を選択出力し、そうでない時は、バッファ230
2の出力を選択出力する。
以外の各輪郭点を、ベクトル上の画素位置に行なうか、
右一画素隣に行なうかを指示する情報がCPU1により
書き込まれていて、この値を選択器2303に出力して
いる。どちらも0が保持されている場合は、ベクトル上
の画素位置に描画することを意味し、1が保持されてい
る場合は、右一画素隣に描画することを意味する。選択
器2303は開始信号の入力時のみ、バッファ2301
の出力を選択出力し、そうでない時は、バッファ230
2の出力を選択出力する。
【0079】AND回路2304は、選択器2303の
出力と、一定値“1”の論理和を出力する。加算器23
05は、ラッチ2208の出力値2210と、このAN
D回路2304の出力を加算して出力点のx座標値28
を生成し、出力するものである。バッファ2307は、
ベクトルの開始点のプロットを行なうか否かを指示する
情報がCPU1により書き込まれていて、この値を選択
器2309に出力している。バッファ2308は、ベク
トル上の開始点以外の各輪郭点のプロットを行なうか否
かを指示する情報がCPU1により書き込まれていて、
この値を選択器2309に出力している。どちらも
“0”が保持されている場合は描画を行なわず、“1”
が保持されている場合は、描画を行なうことを意味す
る。
出力と、一定値“1”の論理和を出力する。加算器23
05は、ラッチ2208の出力値2210と、このAN
D回路2304の出力を加算して出力点のx座標値28
を生成し、出力するものである。バッファ2307は、
ベクトルの開始点のプロットを行なうか否かを指示する
情報がCPU1により書き込まれていて、この値を選択
器2309に出力している。バッファ2308は、ベク
トル上の開始点以外の各輪郭点のプロットを行なうか否
かを指示する情報がCPU1により書き込まれていて、
この値を選択器2309に出力している。どちらも
“0”が保持されている場合は描画を行なわず、“1”
が保持されている場合は、描画を行なうことを意味す
る。
【0080】選択器2309は、開始信号の入力時の
み、バッファ2307の出力を選択出力し、そうでない
時は、バッファ2308の出力を選択出力する。AND
回路2310は、選択器2309の出力と、描画同期2
6との論理和をとり、当該画素の描画同期信号29を生
成する。以上により生成された信号27,28,29を
図示しない付加回路によりタイミングを調整して、それ
ぞれプロットするページメモリ3上の位置へのXアドレ
ス,Yアドレス,書き込み信号として出力ページメモリ
3では、図示しない付加回路によって、前記描画同期2
9に同期して、Xアドレス27およびYアドレス28で
定まるアドレスに、その時にそのアドレスに保持されて
いた値と定数“1”との排他的論理和をとった値を書き
込む(リードモディファイライト)ことによって、塗り
潰し用輪郭を描画してゆく。
み、バッファ2307の出力を選択出力し、そうでない
時は、バッファ2308の出力を選択出力する。AND
回路2310は、選択器2309の出力と、描画同期2
6との論理和をとり、当該画素の描画同期信号29を生
成する。以上により生成された信号27,28,29を
図示しない付加回路によりタイミングを調整して、それ
ぞれプロットするページメモリ3上の位置へのXアドレ
ス,Yアドレス,書き込み信号として出力ページメモリ
3では、図示しない付加回路によって、前記描画同期2
9に同期して、Xアドレス27およびYアドレス28で
定まるアドレスに、その時にそのアドレスに保持されて
いた値と定数“1”との排他的論理和をとった値を書き
込む(リードモディファイライト)ことによって、塗り
潰し用輪郭を描画してゆく。
【0081】かくして、ページメモリ3上に塗り潰し用
輪郭が描画された後、CPU1により同期制御回路6が
起動され、塗り潰しデータが生成される。以下、塗り潰
した画像の生成に関して、前記、図13,図14および
図15を用いて、本実施例における動作を説明する。
輪郭が描画された後、CPU1により同期制御回路6が
起動され、塗り潰しデータが生成される。以下、塗り潰
した画像の生成に関して、前記、図13,図14および
図15を用いて、本実施例における動作を説明する。
【0082】CPU1により、塗り潰された画像を生成
する旨起動をうけると同期制御回路6は、図13の12
−2に示す信号線Highに固定して塗り潰し済データ
を塗り潰し回路5が出力する様に設定し、図14,図1
5に示す前述のページ同期信号、走査線同期信号および
画素同期信号を生成する。
する旨起動をうけると同期制御回路6は、図13の12
−2に示す信号線Highに固定して塗り潰し済データ
を塗り潰し回路5が出力する様に設定し、図14,図1
5に示す前述のページ同期信号、走査線同期信号および
画素同期信号を生成する。
【0083】また、ページメモリに、図示しない付加に
よって同期信号をカウントすることによって得られるア
ドレスに保持するデータを塗り潰し回路5に信号線10
を介して出力するように設定を行なう。ページ同期信
号、走査同期信号および画素同期信号は、信号線12を
介して、ページメモリ3および塗り潰し回路5へ与えら
れる。ページメモリ3の図示しないアドレス生成用の付
加回路は、ページ同期信号により、リセットされ、ライ
ン同期信号をカウントすることによって副走査方向の位
置を生成し、画素同期信号をカウントすることによって
主走査方向の位置を生成するものである。
よって同期信号をカウントすることによって得られるア
ドレスに保持するデータを塗り潰し回路5に信号線10
を介して出力するように設定を行なう。ページ同期信
号、走査同期信号および画素同期信号は、信号線12を
介して、ページメモリ3および塗り潰し回路5へ与えら
れる。ページメモリ3の図示しないアドレス生成用の付
加回路は、ページ同期信号により、リセットされ、ライ
ン同期信号をカウントすることによって副走査方向の位
置を生成し、画素同期信号をカウントすることによって
主走査方向の位置を生成するものである。
【0084】画素同期信号のカウントは各ライン同期信
号によってリセットされるものである。また、塗り潰し
回路は、ページメモリ3よりの出力10を画素同期信号
に同期して取り込み、前画素データを保持するラッチ5
03の出力とゲート501で排他的論理和をとり、この
結果をゲート502で、信号線12−2で与えられる値
と論理積をとったものが塗り潰した結果の画像データと
して信号線11へ出力する。信号線11に出力されるデ
ータは、前画素データとしてラッチ503に保持され
る。ラッチ503は走査同期信号によって“0”にリセ
ットされる。
号によってリセットされるものである。また、塗り潰し
回路は、ページメモリ3よりの出力10を画素同期信号
に同期して取り込み、前画素データを保持するラッチ5
03の出力とゲート501で排他的論理和をとり、この
結果をゲート502で、信号線12−2で与えられる値
と論理積をとったものが塗り潰した結果の画像データと
して信号線11へ出力する。信号線11に出力されるデ
ータは、前画素データとしてラッチ503に保持され
る。ラッチ503は走査同期信号によって“0”にリセ
ットされる。
【0085】かくして、ページメモリ3上のデータは前
記同期信号に同期してラスター走査され、塗り潰し回路
によって、同一ラスターデータ内の奇数番目の1の出現
のタイミングから、すぐ次の偶数番目の1の出現のタイ
ミングの直前までの間が1として出力され、それ以外が
0として出力されることになり、塗り潰された画素デー
タが前記同期信号に同期して、ラスター走査状のデータ
として生成されるものである。
記同期信号に同期してラスター走査され、塗り潰し回路
によって、同一ラスターデータ内の奇数番目の1の出現
のタイミングから、すぐ次の偶数番目の1の出現のタイ
ミングの直前までの間が1として出力され、それ以外が
0として出力されることになり、塗り潰された画素デー
タが前記同期信号に同期して、ラスター走査状のデータ
として生成されるものである。
【0086】以上、本実施例に沿って本発明を説明し
た。
た。
【0087】本発明で適用する輪郭の描画規則は、図2
1に示した通りである。先の説明では、右回りの輪郭
で、左から右へ主走査を行ない、上から下へ副走査を行
なうというラスター走査を行なうという前提で話を進め
たが、本発明は、これらの前提の下に限定されるもので
はない。
1に示した通りである。先の説明では、右回りの輪郭
で、左から右へ主走査を行ない、上から下へ副走査を行
なうというラスター走査を行なうという前提で話を進め
たが、本発明は、これらの前提の下に限定されるもので
はない。
【0088】実施例2 左回りの輪郭データの場合には、図22に示す示す原則
を適用すればよい。即ち、現アウトラインベクトルの向
きが水平、即ち、右向き、もしくは左向きの場合(ケー
ス21〜28)には、前アウトラインベクトルの向きや
x変分によらず、開始点以外の輪郭点は描画しない。
を適用すればよい。即ち、現アウトラインベクトルの向
きが水平、即ち、右向き、もしくは左向きの場合(ケー
ス21〜28)には、前アウトラインベクトルの向きや
x変分によらず、開始点以外の輪郭点は描画しない。
【0089】また、この時、開始点に関しては、現アウ
トラインベクトルの向きが、前アウトラインベクトルの
向きと同じ場合、即ち、現ベクトルも前ベクトルも共に
右向き(ケース21)か、あるいは共に左向き(ケース
26)の場合にはプロットしない。前ベクトルが下向き
で現ベクトルが右向きの時(ケース23)、および、前
ベクトルが上向きで現ベクトルが左向きの時(ケース2
8)の場合もプロットしない。
トラインベクトルの向きが、前アウトラインベクトルの
向きと同じ場合、即ち、現ベクトルも前ベクトルも共に
右向き(ケース21)か、あるいは共に左向き(ケース
26)の場合にはプロットしない。前ベクトルが下向き
で現ベクトルが右向きの時(ケース23)、および、前
ベクトルが上向きで現ベクトルが左向きの時(ケース2
8)の場合もプロットしない。
【0090】前ベクトルが左向きで現ベクトルが右向き
の時(ケース22)、および、前ベクトルが下向きで現
ベクトルが左向きの時(ケース27)の場合は開始点の
画素位置アドレスにプロットする。前ベクトルが上向き
で現ベクトルが右向きの時(ケース24)、および、前
ベクトルが右向きで現ベクトルが左向きの時(ケース2
5)の場合は開始点の画素の一画素右隣りの画素位置ア
ドレスにプロットする。
の時(ケース22)、および、前ベクトルが下向きで現
ベクトルが左向きの時(ケース27)の場合は開始点の
画素位置アドレスにプロットする。前ベクトルが上向き
で現ベクトルが右向きの時(ケース24)、および、前
ベクトルが右向きで現ベクトルが左向きの時(ケース2
5)の場合は開始点の画素の一画素右隣りの画素位置ア
ドレスにプロットする。
【0091】一方、現アウトラインベクトルの向きが非
水平の場合(ケース29〜38)を説明する。現アウト
ラインベクトルが下向きの場合(ケース29〜33)に
は、前アウトラインベクトルの向きやx変分によらず、
開始点以外の輪郭点は、現アウトラインベクトルに沿っ
た画素位置アドレスにそれぞれプロットしていく。
水平の場合(ケース29〜38)を説明する。現アウト
ラインベクトルが下向きの場合(ケース29〜33)に
は、前アウトラインベクトルの向きやx変分によらず、
開始点以外の輪郭点は、現アウトラインベクトルに沿っ
た画素位置アドレスにそれぞれプロットしていく。
【0092】また、現アウトラインベクトルが上向きの
場合(ケース34〜38)には、前ベクトルの向きやx
変分によらず、開始点以外の輪郭点は現アウトラインベ
クトルに沿った位置の一画素右隣りの画素位置アドレス
にそれぞれプロットしていく。開始点に関しては、現ア
ウトラインベクトルの向きが非水平の場合も水平の場合
と同様に、現ベクトルの向きと前ベクトルの向きが同じ
場合、即ち、現ベクトルも前ベクトルも共に下向き(ケ
ース31)か、あるいは共に上向き(ケース38)の場
合にはプロットしない。
場合(ケース34〜38)には、前ベクトルの向きやx
変分によらず、開始点以外の輪郭点は現アウトラインベ
クトルに沿った位置の一画素右隣りの画素位置アドレス
にそれぞれプロットしていく。開始点に関しては、現ア
ウトラインベクトルの向きが非水平の場合も水平の場合
と同様に、現ベクトルの向きと前ベクトルの向きが同じ
場合、即ち、現ベクトルも前ベクトルも共に下向き(ケ
ース31)か、あるいは共に上向き(ケース38)の場
合にはプロットしない。
【0093】前ベクトルが右向きで現ベクトルが下向き
(ケース29)の時、および、前ベクトルが左向きで現
ベクトルが上向き(ケース35)の場合もプロットしな
い。前ベクトルが左向きで現ベクトルが下向き(ケース
30)の時は、開始点の画素位置アドレスにプロットす
る。前ベクトルが上向きで、現ベクトルが下向きの時
(ケース32,33)は、前ベクトルのx増分と現ベク
トルのx増分の和が正(ケース32)ならば、開始点の
一画素右隣りの画素位置アドレスにプロットし、0また
は負(ケース33)ならば開始点の画素位置アドレスに
プロットするものである。
(ケース29)の時、および、前ベクトルが左向きで現
ベクトルが上向き(ケース35)の場合もプロットしな
い。前ベクトルが左向きで現ベクトルが下向き(ケース
30)の時は、開始点の画素位置アドレスにプロットす
る。前ベクトルが上向きで、現ベクトルが下向きの時
(ケース32,33)は、前ベクトルのx増分と現ベク
トルのx増分の和が正(ケース32)ならば、開始点の
一画素右隣りの画素位置アドレスにプロットし、0また
は負(ケース33)ならば開始点の画素位置アドレスに
プロットするものである。
【0094】前ベクトルが右向きで現ベクトルが上向き
(ケース34)の場合は、開始点の一画素右隣りの画素
位置アドレスにプロットする。前ベクトルが下向きで、
現ベクトルが上向きの時(ケース36,37)は、前ベ
クトルのx増分と現ベクトルのx増分の和が0又は正
(ケース36)の場合は、開始点の一画素右隣の画素位
置アドレスにプロットし、負(ケース37)の場合は、
開始点の画素位置アドレスにプロットする。これらのプ
ロットは、全て、当該アドレスに既に設定されている値
と、定数“1”との排他的論理和をもって書き込みを行
なうことで実施される。
(ケース34)の場合は、開始点の一画素右隣りの画素
位置アドレスにプロットする。前ベクトルが下向きで、
現ベクトルが上向きの時(ケース36,37)は、前ベ
クトルのx増分と現ベクトルのx増分の和が0又は正
(ケース36)の場合は、開始点の一画素右隣の画素位
置アドレスにプロットし、負(ケース37)の場合は、
開始点の画素位置アドレスにプロットする。これらのプ
ロットは、全て、当該アドレスに既に設定されている値
と、定数“1”との排他的論理和をもって書き込みを行
なうことで実施される。
【0095】以上、走査方向が左から右へ主走査を行な
うことを前提として、右回り輪郭データの場合(先の実
施例)と、左回り輪郭データの場合(実施例2)の場合
を説明した。
うことを前提として、右回り輪郭データの場合(先の実
施例)と、左回り輪郭データの場合(実施例2)の場合
を説明した。
【0096】実施例3 主走査の走査方向が前述の例と反対で、右から左へ走査
される場合には、先の例で塗り潰しが開始されていた輪
郭点で塗り潰しが終了されることになり、先の例で塗り
潰しが終了されていた輪郭点で塗り潰しが開始されるこ
とになる。
される場合には、先の例で塗り潰しが開始されていた輪
郭点で塗り潰しが終了されることになり、先の例で塗り
潰しが終了されていた輪郭点で塗り潰しが開始されるこ
とになる。
【0097】このため前記図21および図22の中で、
EXORプロットだった部分を左一画素シフトEXOR
プロットとし、右一画素シフトEXORプロットだった
部分をEXORプロットとするとよい。
EXORプロットだった部分を左一画素シフトEXOR
プロットとし、右一画素シフトEXORプロットだった
部分をEXORプロットとするとよい。
【0098】これにより、塗り潰し処理時には、走査線
上で奇数番目の輪郭線ドット(前記例では、走査方向が
逆のため偶数番目の輪郭線ドットであった)位置から塗
り潰しを開始し、偶数番目の輪郭線画素位置(前記例で
は、走査方向が逆のため奇数番目の輪郭線ドットであっ
た)までで塗り潰し区間を終了することになる。
上で奇数番目の輪郭線ドット(前記例では、走査方向が
逆のため偶数番目の輪郭線ドットであった)位置から塗
り潰しを開始し、偶数番目の輪郭線画素位置(前記例で
は、走査方向が逆のため奇数番目の輪郭線ドットであっ
た)までで塗り潰し区間を終了することになる。
【0099】以上の全ての例に対しての規則について言
えることは、現アウトラインベクトルの開始点以外の点
に関しては、現ベクトルの向きのみで決定されているこ
とがあげられる。即ち、現アウトラインベクトルが水平
なのか、上向きなのか下向きなのかで、プロットしない
のか、ベクトル上の画素位置にプロットするのか、ベク
トル上の画素位置の主走査の走査方向に一画素隣の画素
位置にプロットするのかが決定されている。
えることは、現アウトラインベクトルの開始点以外の点
に関しては、現ベクトルの向きのみで決定されているこ
とがあげられる。即ち、現アウトラインベクトルが水平
なのか、上向きなのか下向きなのかで、プロットしない
のか、ベクトル上の画素位置にプロットするのか、ベク
トル上の画素位置の主走査の走査方向に一画素隣の画素
位置にプロットするのかが決定されている。
【0100】一方、開始点に関しては現ベクトルの向き
が非水平でかつ、直前ベクトルの向きが反対向きの時以
外は、現ベクトルの向きと直前ベクトルの向きの組合せ
によって、プロットしないのか、ベクトル上の画素位置
にプロットするのか、ベクトル上の画素位置の主走査の
走査方向に一画素隣の画素位置にプロットするのかが決
定されている。
が非水平でかつ、直前ベクトルの向きが反対向きの時以
外は、現ベクトルの向きと直前ベクトルの向きの組合せ
によって、プロットしないのか、ベクトル上の画素位置
にプロットするのか、ベクトル上の画素位置の主走査の
走査方向に一画素隣の画素位置にプロットするのかが決
定されている。
【0101】また、現ベクトルの向きが非水平で、か
つ、直線ベクトルの向きの反対向きの時には、直前ベク
トルのx増分と現ベクトルの和の値によってベクトル上
の画素位置にプロットするのか、ベクトル上の画素位置
の主走査方向に一画素隣の画素位置にプロットするのか
が決定されている。
つ、直線ベクトルの向きの反対向きの時には、直前ベク
トルのx増分と現ベクトルの和の値によってベクトル上
の画素位置にプロットするのか、ベクトル上の画素位置
の主走査方向に一画素隣の画素位置にプロットするのか
が決定されている。
【0102】実施例4 上記規則において、現ベクトルの向きが非水平でかつ、
直ベクトルの向きの反対向き(即ち、直前ベクトルも非
水平で逆向き)の場合に、互いにx増分の和を吟味する
のは、この現ベクトルの始点が、閉図形内の凸な頂点な
のか、凹な頂点なのかを判定しているに他ならない。こ
の判定結果により頂点画素が黒画素となる様に規則を設
定しているのである。
直ベクトルの向きの反対向き(即ち、直前ベクトルも非
水平で逆向き)の場合に、互いにx増分の和を吟味する
のは、この現ベクトルの始点が、閉図形内の凸な頂点な
のか、凹な頂点なのかを判定しているに他ならない。こ
の判定結果により頂点画素が黒画素となる様に規則を設
定しているのである。
【0103】しかし、閉図形内の凸な頂点か凹な頂点か
にこだわらず、この頂点の歪を許すならば、x増分デー
タの管理が不用となり、輪郭点の描画規則の判定の処理
を軽減することが可能である。
にこだわらず、この頂点の歪を許すならば、x増分デー
タの管理が不用となり、輪郭点の描画規則の判定の処理
を軽減することが可能である。
【0104】実施例5 前記実施例においては、輪郭線の描画は、直線描画回路
を用いて描画しているが、これに限るものではなく、直
線描画自体をCPU1で直接実行してももちろんよい。
を用いて描画しているが、これに限るものではなく、直
線描画自体をCPU1で直接実行してももちろんよい。
【0105】実施例6 前記実施例においては、本発明をプリンタ用の構成例と
して説明したが、これに限るものではなく、ディスプレ
イ等の表示装置などであってもよい。
して説明したが、これに限るものではなく、ディスプレ
イ等の表示装置などであってもよい。
【0106】実施例7 前記実施例においては、輪郭データ中には、閉ループ中
に始点と終点の座標値が全く同じなベクトルは含まれな
いものとして説明したが、この様なベクトルが含まれて
いても、閉ループ内の各ベクトルの処理の際にこの様な
ベクトルは無視して向きや、x変分を更新せず次のベク
トルの処理に進むことで処理が可能である。
に始点と終点の座標値が全く同じなベクトルは含まれな
いものとして説明したが、この様なベクトルが含まれて
いても、閉ループ内の各ベクトルの処理の際にこの様な
ベクトルは無視して向きや、x変分を更新せず次のベク
トルの処理に進むことで処理が可能である。
【0107】実施例8 図11に示したフローチャートを再び参照して、本実施
例の動作を説明する。CPU1は、S1でその処理を開
始すると、S2へ進む。S2では、ページメモリ3をリ
セットする。このとき、CPU1は同期制御回路6を介
して塗り潰し回路5をページメモリへ一定データを出力
する様に制御し、同期制御回路6に、この一定データを
ページメモリ3へ一面書き込ませることによりページメ
モリのリセットを行なう。
例の動作を説明する。CPU1は、S1でその処理を開
始すると、S2へ進む。S2では、ページメモリ3をリ
セットする。このとき、CPU1は同期制御回路6を介
して塗り潰し回路5をページメモリへ一定データを出力
する様に制御し、同期制御回路6に、この一定データを
ページメモリ3へ一面書き込ませることによりページメ
モリのリセットを行なう。
【0108】図13に塗り潰し回路5の構成例を示す。
実施例1で述べたとおり、S2で、CPU1の制御で、
同期制御回路6は、信号線12−2をLowに固定する
ことによって、塗り潰し回路5の出力11をLowにな
る様に制御する。同期制御回路6は、この出力11をペ
ージメモリ3に対して、同期信号に合わせて書き込み、
これにより、ページメモリ3をすべて0にリセットを行
なう。
実施例1で述べたとおり、S2で、CPU1の制御で、
同期制御回路6は、信号線12−2をLowに固定する
ことによって、塗り潰し回路5の出力11をLowにな
る様に制御する。同期制御回路6は、この出力11をペ
ージメモリ3に対して、同期信号に合わせて書き込み、
これにより、ページメモリ3をすべて0にリセットを行
なう。
【0109】図14は、実施例1でも述べた通り、一ペ
ージの先頭を意味するページ同期信号(Page Sy
nc)、および、同ページ内における各走査線の先頭を
意味する走査線同期信号(Line Sync)の関係
を示すタイムチャートである。図15は、一走査線の先
頭を意味する走査線同期信号(Line Sync)お
よび、同走査線内における各画素データ確定のタイミン
グを与える画素同期信号(CLK)と、各画素データを
示す。リセットは、ページ同期信号により開始され、ペ
ージメモリ3の図示しない付加回路によって走査同期信
号および画素同期信号によりメモリのアドレスを順次に
変更してゆくことで、実施される。
ージの先頭を意味するページ同期信号(Page Sy
nc)、および、同ページ内における各走査線の先頭を
意味する走査線同期信号(Line Sync)の関係
を示すタイムチャートである。図15は、一走査線の先
頭を意味する走査線同期信号(Line Sync)お
よび、同走査線内における各画素データ確定のタイミン
グを与える画素同期信号(CLK)と、各画素データを
示す。リセットは、ページ同期信号により開始され、ペ
ージメモリ3の図示しない付加回路によって走査同期信
号および画素同期信号によりメモリのアドレスを順次に
変更してゆくことで、実施される。
【0110】ページメモリ3のリセットが終了すると、
S3へ進む。S3では、I/O14を経由して、画像の
出力指示があったか否かを判定し、出力指示があった場
合は、S4に進み、無かった場合は、出力指示を待つ。
S3へ進む。S3では、I/O14を経由して、画像の
出力指示があったか否かを判定し、出力指示があった場
合は、S4に進み、無かった場合は、出力指示を待つ。
【0111】S4で、塗り潰し用の輪郭データを、I/
O14を経由して外部より、あるいは、図示しない補助
記憶装置から、RAM領域2へ入力する。次に、S5へ
進み、図28に記載した規則に従って、CPU1は直線
描画回路4を制御して、ページメモリ3上に、塗り潰し
用の輪郭を描画する。
O14を経由して外部より、あるいは、図示しない補助
記憶装置から、RAM領域2へ入力する。次に、S5へ
進み、図28に記載した規則に従って、CPU1は直線
描画回路4を制御して、ページメモリ3上に、塗り潰し
用の輪郭を描画する。
【0112】次に、S6へ進み、プリンタがレディであ
るか否かをI/O7を経由してチェックする。レディで
あればS7へ進み、そうでなければレディーになるのを
待つ。S7では、CPU1は、同期制御回路6を制御し
て、ページメモリ3上の塗り潰し用の輪郭画像を読み出
し、塗り潰し回路5を経由して、塗り潰された2値画像
を信号線11に出力させるものである。
るか否かをI/O7を経由してチェックする。レディで
あればS7へ進み、そうでなければレディーになるのを
待つ。S7では、CPU1は、同期制御回路6を制御し
て、ページメモリ3上の塗り潰し用の輪郭画像を読み出
し、塗り潰し回路5を経由して、塗り潰された2値画像
を信号線11に出力させるものである。
【0113】以下、S5の塗り潰し用輪郭描画に関し
て、さらに詳しく説明する。
て、さらに詳しく説明する。
【0114】図23にS5の塗り潰し用輪郭描画の処理
のフローチャートを示す。CPU1はS111で輪郭描
画を開始すると、S112で処理の終了した閉ループの
数nを保持するレジスタを0に初期化すると、S113
に進む。ここで、輪郭データは前述の如く、図9の如き
形態で、RAM領域2に保持されているものとする。S
13では、輪郭データ内に含まれる閉ループ数Nと、処
理済ループ数nを比較して、Nがnより大きいか否かを
判定する。
のフローチャートを示す。CPU1はS111で輪郭描
画を開始すると、S112で処理の終了した閉ループの
数nを保持するレジスタを0に初期化すると、S113
に進む。ここで、輪郭データは前述の如く、図9の如き
形態で、RAM領域2に保持されているものとする。S
13では、輪郭データ内に含まれる閉ループ数Nと、処
理済ループ数nを比較して、Nがnより大きいか否かを
判定する。
【0115】大きい場合は、未処理のループが残ってい
ると判断しS115へ進む。そうでない場合には、未処
理のループは存在しないと判断しS114へ進んで輪郭
描画の処理を終える。S115では、処理済ループ数n
で示されるループ(今、nがiであったとする)iのル
ープ内の頂点数Li が2より小さいか否かを判定する。
2より小さい場合は、閉ループとして処理する頂点はな
いと判断してS13に戻る。そうでない場合には、S1
16へ進む。
ると判断しS115へ進む。そうでない場合には、未処
理のループは存在しないと判断しS114へ進んで輪郭
描画の処理を終える。S115では、処理済ループ数n
で示されるループ(今、nがiであったとする)iのル
ープ内の頂点数Li が2より小さいか否かを判定する。
2より小さい場合は、閉ループとして処理する頂点はな
いと判断してS13に戻る。そうでない場合には、S1
16へ進む。
【0116】S116では、処理の終了した頂点の数L
を保持するレジスタを1に初期化するとS117へ進
む。S117では、最終ベクトルデータをもってS11
8以降で最初に処理するベクトルのデータとして、現ベ
クトルデータを生成する。即ち、今、第iループ内に、
Li 個に頂点数があったとすると、座標(xiLi-1,y
iLi-1)で示される頂点を始点として、座標(xi0 ,
yi0 )で示される頂点を終点とするベクトルを現ベク
トルとしてみなし、該ベクトルの向きが、上向きか、下
向きか、右向きか、左向きかを判定して結果をRAM2
上のワーキングエリアに保持する。加えて、始点から終
点へ向けてベクトルに沿ってy方向に単位長変化する際
のx方向の変分(xi0 −xiLi-1)/|yi0−yi
Li-1|を保持する。
を保持するレジスタを1に初期化するとS117へ進
む。S117では、最終ベクトルデータをもってS11
8以降で最初に処理するベクトルのデータとして、現ベ
クトルデータを生成する。即ち、今、第iループ内に、
Li 個に頂点数があったとすると、座標(xiLi-1,y
iLi-1)で示される頂点を始点として、座標(xi0 ,
yi0 )で示される頂点を終点とするベクトルを現ベク
トルとしてみなし、該ベクトルの向きが、上向きか、下
向きか、右向きか、左向きかを判定して結果をRAM2
上のワーキングエリアに保持する。加えて、始点から終
点へ向けてベクトルに沿ってy方向に単位長変化する際
のx方向の変分(xi0 −xiLi-1)/|yi0−yi
Li-1|を保持する。
【0117】ここで、図8の様な座標系の下では、ベク
トルが上向きとは、終点のy座標値が始点のy座標値よ
りも小さい時を意味し、下向きとは、始点のy座標値が
終点のy座標値よりも小さい時を意味する(y軸の向き
を反対にとる場合には、この反対となる)。始点と終点
のy座標の値が等しい場合で、始点のx座標が終点のx
座標よりも小さい時右向きとし、終点のx座標が、始点
のx座標より小さい時左向きとする(x軸の向きを反対
にとる場合には、この反対となる)。また、始点と終点
の座標値が全く同じ場合は、これらは同一点となってし
まうので、閉ループ上には、このようなベクトルは存在
しないようにあらかじめ前処理されているものとする。
トルが上向きとは、終点のy座標値が始点のy座標値よ
りも小さい時を意味し、下向きとは、始点のy座標値が
終点のy座標値よりも小さい時を意味する(y軸の向き
を反対にとる場合には、この反対となる)。始点と終点
のy座標の値が等しい場合で、始点のx座標が終点のx
座標よりも小さい時右向きとし、終点のx座標が、始点
のx座標より小さい時左向きとする(x軸の向きを反対
にとる場合には、この反対となる)。また、始点と終点
の座標値が全く同じ場合は、これらは同一点となってし
まうので、閉ループ上には、このようなベクトルは存在
しないようにあらかじめ前処理されているものとする。
【0118】かくして、前ベクトルのデータがセットさ
れるとS118へ進む。S118では、処理済の頂点数
Lがループ内頂点数Li より小さいか否かを判定し、小
さい時には、未処理の頂点が残っていると判断して、S
119へ進み、そうでない時は頂点座標テーブルの最終
点まで処理が進んだと判断し、閉ループ内の頂点座標テ
ーブル内の最後の点を始点として同テーブル内の最初の
点を終点とするベクトルを次ベクトルとして処理を行な
うべくS123へ進む。S119では、この時の処理済
の頂点数カウンタLの保持する値をjとすると、第j−
1頂点を始点として第j頂点を終点としたベクトルに注
目し、このベクトル(以降、次ベクトルと呼ぶ)の方向
と始点から終点へ向けてベクトルに沿ってy方向に単位
長変化する際のx方向の変分(以降、x変分と呼ぶ)を
S117同様に作成してS120へ進む。
れるとS118へ進む。S118では、処理済の頂点数
Lがループ内頂点数Li より小さいか否かを判定し、小
さい時には、未処理の頂点が残っていると判断して、S
119へ進み、そうでない時は頂点座標テーブルの最終
点まで処理が進んだと判断し、閉ループ内の頂点座標テ
ーブル内の最後の点を始点として同テーブル内の最初の
点を終点とするベクトルを次ベクトルとして処理を行な
うべくS123へ進む。S119では、この時の処理済
の頂点数カウンタLの保持する値をjとすると、第j−
1頂点を始点として第j頂点を終点としたベクトルに注
目し、このベクトル(以降、次ベクトルと呼ぶ)の方向
と始点から終点へ向けてベクトルに沿ってy方向に単位
長変化する際のx方向の変分(以降、x変分と呼ぶ)を
S117同様に作成してS120へ進む。
【0119】S120では、RAM2上のワーキングエ
リアに保持されている現ベクトルの向きおよびx変分
と、次ベクトルの向きおよびx変分を用いて、図28に
示す規則に従った塗り潰し処理用の輪郭描画を直線描画
回路4を制御することによって行なう。この動作はおっ
て詳述する。
リアに保持されている現ベクトルの向きおよびx変分
と、次ベクトルの向きおよびx変分を用いて、図28に
示す規則に従った塗り潰し処理用の輪郭描画を直線描画
回路4を制御することによって行なう。この動作はおっ
て詳述する。
【0120】かくして現ベクトルの輪郭の描画を終える
とS121へ進む。S121では、S120で用いた次
ベクトルの向きとx変分を現ベクトルの向きとx変分と
して更新し、RAM2上のワーキングエリアに保持す
る。S122では処理済の頂点数レジスタの保持する値
を1つUPしてS118へ戻る。S123は、当該閉ル
ープ内の頂点座標テーブル内の最後の点を始点として同
テーブル内の最初の点を終点とするベクトルを次ベクト
ルとして、向きとx変分を作成してS124へ進む。
とS121へ進む。S121では、S120で用いた次
ベクトルの向きとx変分を現ベクトルの向きとx変分と
して更新し、RAM2上のワーキングエリアに保持す
る。S122では処理済の頂点数レジスタの保持する値
を1つUPしてS118へ戻る。S123は、当該閉ル
ープ内の頂点座標テーブル内の最後の点を始点として同
テーブル内の最初の点を終点とするベクトルを次ベクト
ルとして、向きとx変分を作成してS124へ進む。
【0121】S124では、S120と全く同様に現ベ
クトルの向きとx変分、および次ベクトルの向きとx変
分から、図28に示す規則に従った塗り潰し用の輪郭を
直線描画回路4を制御することによって行ないS125
へ進む。S125では、当該閉ループの処理を終え、未
処理のループ数のレジスタの保持する値を1つUPして
S113へ戻るものである。
クトルの向きとx変分、および次ベクトルの向きとx変
分から、図28に示す規則に従った塗り潰し用の輪郭を
直線描画回路4を制御することによって行ないS125
へ進む。S125では、当該閉ループの処理を終え、未
処理のループ数のレジスタの保持する値を1つUPして
S113へ戻るものである。
【0122】S120およびS124で行なわれる塗り
潰し処理の輪郭描画に関して説明する。この処理はCP
U1が、RAM2上に保持され前ベクトルの向きとx変
分、現ベクトルの向きとx変分を見て、図28の規則に
従って描画が実行される。
潰し処理の輪郭描画に関して説明する。この処理はCP
U1が、RAM2上に保持され前ベクトルの向きとx変
分、現ベクトルの向きとx変分を見て、図28の規則に
従って描画が実行される。
【0123】描画は、現ベクトルの終点の座標上の1点
と、この終点以外の始点からの現ベクトル上の輪郭点
(始点をも含む)とを分けて、その描画を制御してい
る。また、輪郭上の各点の描画は、終点に関しても、そ
れ以外のベクトル上の輪郭点に関しても、描画する一点
一点の座標に対応するページメモリ3上のアドレスに描
画するか、x軸上での右隣りの画素アドレスに描画する
か、あるいは描画しないかを、三者択一の形で描画を制
御している。描画する(あるいは、プロットするともい
う)場合は、ベクトル上に沿った位置アドレスに描画す
る場合も、右隣の画素位置アドレスに描画する場合も、
あらかじめ該アドレスに書き込まれている値と1との排
他的論理和をとった結果の値を新めて該アドレスに書き
込むことによってなされる。
と、この終点以外の始点からの現ベクトル上の輪郭点
(始点をも含む)とを分けて、その描画を制御してい
る。また、輪郭上の各点の描画は、終点に関しても、そ
れ以外のベクトル上の輪郭点に関しても、描画する一点
一点の座標に対応するページメモリ3上のアドレスに描
画するか、x軸上での右隣りの画素アドレスに描画する
か、あるいは描画しないかを、三者択一の形で描画を制
御している。描画する(あるいは、プロットするともい
う)場合は、ベクトル上に沿った位置アドレスに描画す
る場合も、右隣の画素位置アドレスに描画する場合も、
あらかじめ該アドレスに書き込まれている値と1との排
他的論理和をとった結果の値を新めて該アドレスに書き
込むことによってなされる。
【0124】即ち、該アドレスに書き込まれていた値が
0だった場合には1を、1だった場合には0を書き込む
ものである。現アウトラインベクトルの向きが水平、即
ち、右向き、もしくは、左向きの場合(ケース1〜8)
には、次アウトラインベクトルの向きやx変分によらず
終了点以外の輪郭点は描画しない。
0だった場合には1を、1だった場合には0を書き込む
ものである。現アウトラインベクトルの向きが水平、即
ち、右向き、もしくは、左向きの場合(ケース1〜8)
には、次アウトラインベクトルの向きやx変分によらず
終了点以外の輪郭点は描画しない。
【0125】また、この時、終了点に関しては、現アウ
トラインベクトルの向きが、次ベクトルの向きと同じ場
合、即ち、現ベクトルも次ベクトルも共に右向き(ケー
ス1)か、あるいは共に左向き(ケース6)の場合には
プロットしない。次ベクトルが下向きで現ベクトルが右
向き(ケース3)の時、および、次ベクトルが上向きで
現ベクトルが左向きの(ケース8)時もプロットしな
い。次ベクトルが左向きで現ベクトルが右向き(ケース
2)の時、および、次ベクトルが下向きで現ベクトルが
左向き(ケース7)の時は、終了点の画素の一画素右隣
りの画素位置アドレスにプロットする。次ベクトルが上
向きで現ベクトルが右向き(ケース4)の時、および、
次ベクトルが右向きで、現ベクトルが左向き(ケース
5)の時は、終了点の画素位置アドレスにプロットす
る。
トラインベクトルの向きが、次ベクトルの向きと同じ場
合、即ち、現ベクトルも次ベクトルも共に右向き(ケー
ス1)か、あるいは共に左向き(ケース6)の場合には
プロットしない。次ベクトルが下向きで現ベクトルが右
向き(ケース3)の時、および、次ベクトルが上向きで
現ベクトルが左向きの(ケース8)時もプロットしな
い。次ベクトルが左向きで現ベクトルが右向き(ケース
2)の時、および、次ベクトルが下向きで現ベクトルが
左向き(ケース7)の時は、終了点の画素の一画素右隣
りの画素位置アドレスにプロットする。次ベクトルが上
向きで現ベクトルが右向き(ケース4)の時、および、
次ベクトルが右向きで、現ベクトルが左向き(ケース
5)の時は、終了点の画素位置アドレスにプロットす
る。
【0126】一方、現アウトラインベクトルの向きが非
水平の場合(ケース9〜18)を説明する。現アウトラ
インベクトルが下向きの場合(ケース9〜13)には、
次アウトラインベクトルの向きやx変分によらず、終了
点以外の輪郭点は現アウトラインベクトル上に沿った位
置の一画素右隣りの画素位置アドレスにそれぞれプロッ
トしていく。また、現アウトラインベクトルが上向きの
場合(ケース14〜18)には、前ベクトルの向きやx
変分によらず、終了点以外の輪郭点は、現アウトライン
ベクトル上に沿った画素位置アドレスに、それぞれプロ
ットしていく。
水平の場合(ケース9〜18)を説明する。現アウトラ
インベクトルが下向きの場合(ケース9〜13)には、
次アウトラインベクトルの向きやx変分によらず、終了
点以外の輪郭点は現アウトラインベクトル上に沿った位
置の一画素右隣りの画素位置アドレスにそれぞれプロッ
トしていく。また、現アウトラインベクトルが上向きの
場合(ケース14〜18)には、前ベクトルの向きやx
変分によらず、終了点以外の輪郭点は、現アウトライン
ベクトル上に沿った画素位置アドレスに、それぞれプロ
ットしていく。
【0127】また、終了点に関しては、現アウトライン
ベクトルの向きが非水平の場合も水平の場合と同様に、
現ベクトルの向きと次ベクトルの向きが同じ場合、即
ち、現ベクトルも次ベクトルも共に下向き(ケース1
1)か、あるいは共に上向き(ケース18)の場合には
プロットしない。
ベクトルの向きが非水平の場合も水平の場合と同様に、
現ベクトルの向きと次ベクトルの向きが同じ場合、即
ち、現ベクトルも次ベクトルも共に下向き(ケース1
1)か、あるいは共に上向き(ケース18)の場合には
プロットしない。
【0128】次ベクトルが右向きで現ベクトルが下向き
(ケース9)の時、および、次ベクトルが左向きで現ベ
クトルが上向き(ケース15)の時もプロットしない。
次ベクトルが左向きで、現ベクトルが下向きの時(ケー
ス9)は、終了点の位置の一画素右隣りの画素位置アド
レスにプロットする。次ベクトルが上向きで、現ベクト
ルが下向きの時(ケース12,13)は、前ベクトルの
x増分と現ベクトルのx増分の和が0又は正(ケース1
2)ならば、終了点の画素位置アドレスにプロットし、
負(ケース13)ならば、終了点の画素の一画素右隣り
の画素位置アドレスにプロットするものである。
(ケース9)の時、および、次ベクトルが左向きで現ベ
クトルが上向き(ケース15)の時もプロットしない。
次ベクトルが左向きで、現ベクトルが下向きの時(ケー
ス9)は、終了点の位置の一画素右隣りの画素位置アド
レスにプロットする。次ベクトルが上向きで、現ベクト
ルが下向きの時(ケース12,13)は、前ベクトルの
x増分と現ベクトルのx増分の和が0又は正(ケース1
2)ならば、終了点の画素位置アドレスにプロットし、
負(ケース13)ならば、終了点の画素の一画素右隣り
の画素位置アドレスにプロットするものである。
【0129】次ベクトルが右向きで現ベクトルが上向き
の時(ケース14)は終了点の画素位置アドレスにプロ
ットするものである。次ベクトルが下向きで現ベクトル
が上向きの時(ケース16,17)は、前ベクトルのx
増分と現ベクトルのx増分の和が正(ケース16)なら
ば、終点点の画素位置アドレスにプロットし、0又は負
(ケース17)ならば、終了点の画素位置アドレスにプ
ロットする。
の時(ケース14)は終了点の画素位置アドレスにプロ
ットするものである。次ベクトルが下向きで現ベクトル
が上向きの時(ケース16,17)は、前ベクトルのx
増分と現ベクトルのx増分の和が正(ケース16)なら
ば、終点点の画素位置アドレスにプロットし、0又は負
(ケース17)ならば、終了点の画素位置アドレスにプ
ロットする。
【0130】図8の例に、図28の規則を適用して塗り
潰し用の輪郭を描画した結果を図24に示す。図8にお
いて、輪郭ベクトルABを次ベクトルとすると、現ベク
トルはJAである。このベクトルJAは下向き、x変分
は1、ベクトルABは右向き、x変分は∞である。この
場合はケース9に該当し、Q10〜Q11の位置にプロ
ットされ、P2の位置はプロットされない。次に現ベク
トルがAB、次ベクトルがBCとなり、ケース3に該当
し、終点も、始点外のベクトル上の点もプロットしな
い。以降ベクトルBCではケース10に該当し、Q1〜
Q2までのベクトルBCの右一画素隣の各点がプロット
される。ベクトルCDではケース8に該当し、何もプロ
ットされない。ベクトルDEでは、現ベクトルDEは上
向きでx増分は−1であり、次ベクトルEFは下向き
で、x増分は−1であるから、ケース17に該当し、Q
12およびP6がプロットされる。
潰し用の輪郭を描画した結果を図24に示す。図8にお
いて、輪郭ベクトルABを次ベクトルとすると、現ベク
トルはJAである。このベクトルJAは下向き、x変分
は1、ベクトルABは右向き、x変分は∞である。この
場合はケース9に該当し、Q10〜Q11の位置にプロ
ットされ、P2の位置はプロットされない。次に現ベク
トルがAB、次ベクトルがBCとなり、ケース3に該当
し、終点も、始点外のベクトル上の点もプロットしな
い。以降ベクトルBCではケース10に該当し、Q1〜
Q2までのベクトルBCの右一画素隣の各点がプロット
される。ベクトルCDではケース8に該当し、何もプロ
ットされない。ベクトルDEでは、現ベクトルDEは上
向きでx増分は−1であり、次ベクトルEFは下向き
で、x増分は−1であるから、ケース17に該当し、Q
12およびP6がプロットされる。
【0131】ベクトルEFでは、ケース10に該当し、
P6,Q4〜Q5がプロットされる。P6はベクトルD
Eの処理の際に既に1がプロットされているため、ここ
で再び0にリセットされることになる。ベクトルFGで
はケース7に該当し、P8がプロットされる。ベクトル
GHでは、現ベクトルGHは下向きでx変分が−1であ
り、次ベクトルは上向きでx変分が−5/9であり、ケ
ース13に該当し、P8,Q6,Q7がプロットされ
る。P8はベクトルFGの処理で1になっているため、
ここで“0”に戻される。ベクトルHIではケース18
に該当し、P7〜Q13の間、ベクトルHI上がプロッ
トされる。ベクトルIJでは、現ベクトルIJは上向き
でx変分が+1,次ベクトルJAは下向きでx変分が+
1であるので、ケース16に該当し、Q8〜Q9の間お
よびP5がプロットされる。ベクトルJAでは、ケース
9に該当し、Q10〜Q11の間、ベクトルJAに沿っ
て、その一画素右隣りの一連の画素がプロットされる。
ここで、P2はプロットされない。
P6,Q4〜Q5がプロットされる。P6はベクトルD
Eの処理の際に既に1がプロットされているため、ここ
で再び0にリセットされることになる。ベクトルFGで
はケース7に該当し、P8がプロットされる。ベクトル
GHでは、現ベクトルGHは下向きでx変分が−1であ
り、次ベクトルは上向きでx変分が−5/9であり、ケ
ース13に該当し、P8,Q6,Q7がプロットされ
る。P8はベクトルFGの処理で1になっているため、
ここで“0”に戻される。ベクトルHIではケース18
に該当し、P7〜Q13の間、ベクトルHI上がプロッ
トされる。ベクトルIJでは、現ベクトルIJは上向き
でx変分が+1,次ベクトルJAは下向きでx変分が+
1であるので、ケース16に該当し、Q8〜Q9の間お
よびP5がプロットされる。ベクトルJAでは、ケース
9に該当し、Q10〜Q11の間、ベクトルJAに沿っ
て、その一画素右隣りの一連の画素がプロットされる。
ここで、P2はプロットされない。
【0132】かくして得られた塗り潰し用の輪郭をラス
ター走査して、水平走査線上で出現する奇数番目の1に
プロットされた画素位置から、次の偶数番目の1にプロ
ットされた画素の直前までを塗り潰し区間とし、他を塗
り潰さない区間として得られる画像を図17に示した通
りである。図17に得られた画像は、輪郭ベクトルで囲
まれた内域を歪なく再現している。
ター走査して、水平走査線上で出現する奇数番目の1に
プロットされた画素位置から、次の偶数番目の1にプロ
ットされた画素の直前までを塗り潰し区間とし、他を塗
り潰さない区間として得られる画像を図17に示した通
りである。図17に得られた画像は、輪郭ベクトルで囲
まれた内域を歪なく再現している。
【0133】次に直線描画回路4に関して説明する。直
線描画回路4の機能ブロック図を図25に示した。直線
描画回路4は、直線発生制御回路21,直線発生回路2
2,および、描画制御回路23の3つの部分より構成さ
れる。直線描画回路4は、CPU1によって、各アウト
ラインベクトルの描画毎に制御され、一本づつアウトラ
インベクトルを直線描画してゆく。
線描画回路4の機能ブロック図を図25に示した。直線
描画回路4は、直線発生制御回路21,直線発生回路2
2,および、描画制御回路23の3つの部分より構成さ
れる。直線描画回路4は、CPU1によって、各アウト
ラインベクトルの描画毎に制御され、一本づつアウトラ
インベクトルを直線描画してゆく。
【0134】直線描画は、前記、図23のS120およ
びS124で示した現ベクトル描画ルーチンで行なわれ
る。このルーチンの詳細を図27に示した。S131に
て、本ルーチンを開始するとS132へ進む。S132
では、直線発生制御回路21より出力される終了信号2
4を見ることによって、直線描画回路が前の処理を完了
しており、次の処理の設定が可能か否かを判定し、可能
(レディー)であれば、S133へ進み、レディーでな
ければ、レディーとなるのを待つ。S133では、直線
発生回路22にこれから描画しようとしているベクトル
の終点のx座標値をセットし、S134へ進む。
びS124で示した現ベクトル描画ルーチンで行なわれ
る。このルーチンの詳細を図27に示した。S131に
て、本ルーチンを開始するとS132へ進む。S132
では、直線発生制御回路21より出力される終了信号2
4を見ることによって、直線描画回路が前の処理を完了
しており、次の処理の設定が可能か否かを判定し、可能
(レディー)であれば、S133へ進み、レディーでな
ければ、レディーとなるのを待つ。S133では、直線
発生回路22にこれから描画しようとしているベクトル
の終点のx座標値をセットし、S134へ進む。
【0135】S134では直線発生回路22に、これか
ら描画しようとしているベクトルの始点のy座標値をセ
ットし、S135へ進む。S135では、直線発生回路
22に、これから描画しようとしているベクトルの終点
のy座標値をセットし、S136へ進む。S136で
は、x変分をセットしS137へ進む。S137では、
y座標のカウントが、アップかダウンかを設定しS13
8へ進む。S138では、終了点および終了点以外の輪
郭上の点(輪郭点)を、それぞれ、プロットするのかし
ないのか(以下、出力モードと称する)、また、輪郭上
の位置の画素アドレスにプロットするのか、それとも右
一画素隣にプロットするのか(以下、シフトモードと称
する)を2bitずつ(それぞれ、終了点描画モードお
よび輪郭点描画モードと称する)計4bitを描画制御
回路23にセットし、S139へ進む。
ら描画しようとしているベクトルの始点のy座標値をセ
ットし、S135へ進む。S135では、直線発生回路
22に、これから描画しようとしているベクトルの終点
のy座標値をセットし、S136へ進む。S136で
は、x変分をセットしS137へ進む。S137では、
y座標のカウントが、アップかダウンかを設定しS13
8へ進む。S138では、終了点および終了点以外の輪
郭上の点(輪郭点)を、それぞれ、プロットするのかし
ないのか(以下、出力モードと称する)、また、輪郭上
の位置の画素アドレスにプロットするのか、それとも右
一画素隣にプロットするのか(以下、シフトモードと称
する)を2bitずつ(それぞれ、終了点描画モードお
よび輪郭点描画モードと称する)計4bitを描画制御
回路23にセットし、S139へ進む。
【0136】S139では、直線発生回路21に開始信
号25を送出した後、S140へ進み、図23のルーチ
ンにリターンする。以上の様に、初期化された直線描画
回路4は、開始信号25を受けると動作を開始する。
号25を送出した後、S140へ進み、図23のルーチ
ンにリターンする。以上の様に、初期化された直線描画
回路4は、開始信号25を受けると動作を開始する。
【0137】図25に機能ブロック分けして表現した直
線描画回路4を、図26に概略の構成例を示した。
線描画回路4を、図26に概略の構成例を示した。
【0138】開始信号25は、Highレベルで開始を
意味するパルス信号で、パルス幅は、図示しない付加回
路により適正に設定されている。CPU1は、このパル
スのトリガとなる信号を送出している。終了信号24
は、Lowレベルで終了状態を意味する信号であり、H
ighレベルの間は、直線描画回路が動作中であること
を意味している。開始信号と描画信号の論理和をOR回
路2101が出力する。
意味するパルス信号で、パルス幅は、図示しない付加回
路により適正に設定されている。CPU1は、このパル
スのトリガとなる信号を送出している。終了信号24
は、Lowレベルで終了状態を意味する信号であり、H
ighレベルの間は、直線描画回路が動作中であること
を意味している。開始信号と描画信号の論理和をOR回
路2101が出力する。
【0139】このOR回路2101の出力で、外部より
与えられる定常発生している一定周期のクロックである
描画同期信号をAND回路2102において制御するこ
とによって、ベクトルの開始点から終点の間までの分の
描画同期が生成される。バッファ2202には、CPU
1によって終点のy座標値がセットされている。また、
バッファ2204には、始点のy座標値が、バッファ2
201には、終点のx座標値が、バッファ2203には
x変分が同様にセットされている。アップダウンカウン
タ2205は、開始信号を入力すると、バッファ220
2に保持された終点のy座標値をカウント値の初期値と
してロードする。
与えられる定常発生している一定周期のクロックである
描画同期信号をAND回路2102において制御するこ
とによって、ベクトルの開始点から終点の間までの分の
描画同期が生成される。バッファ2202には、CPU
1によって終点のy座標値がセットされている。また、
バッファ2204には、始点のy座標値が、バッファ2
201には、終点のx座標値が、バッファ2203には
x変分が同様にセットされている。アップダウンカウン
タ2205は、開始信号を入力すると、バッファ220
2に保持された終点のy座標値をカウント値の初期値と
してロードする。
【0140】アップダウンカウンタ2205は、保持し
ているカウント値をそのまま信号線2210に出力す
る。比較器2206は、開始信号を入力すると動作し、
アップダウンカウンタ2205の出力とバッファ220
4に保持される始点のy座標を比較し、バッファ220
4に保持される値とアップダウンカウンタ2205の出
力値が等しくなると、Lowレベルの信号を出力し、次
の開始信号をうけるまで、このレベルを保持する。そう
でない時はHighレベルの信号を出力するものであ
る。
ているカウント値をそのまま信号線2210に出力す
る。比較器2206は、開始信号を入力すると動作し、
アップダウンカウンタ2205の出力とバッファ220
4に保持される始点のy座標を比較し、バッファ220
4に保持される値とアップダウンカウンタ2205の出
力値が等しくなると、Lowレベルの信号を出力し、次
の開始信号をうけるまで、このレベルを保持する。そう
でない時はHighレベルの信号を出力するものであ
る。
【0141】アップダウンカンタ2205は、描画同期
26に同期してカウントダウンもしくはカウントアップ
を行ない描画画素のyアドレスを更新する。カウントダ
ウンなのかカウントアップなのかは、CPU1により設
定されたy増域バッファ2211の保持する値によって
決まり、設定値1ならカウントアップで、設置値が0な
らカウントダウンをするものである。設定値1というこ
とは、上向きのベクトルを描画することであり、設定値
が0ということは、下向きのベクトルを描画することで
ある。各エッジは、終点側から始点側に向けて、メモリ
上にプロットされていく。
26に同期してカウントダウンもしくはカウントアップ
を行ない描画画素のyアドレスを更新する。カウントダ
ウンなのかカウントアップなのかは、CPU1により設
定されたy増域バッファ2211の保持する値によって
決まり、設定値1ならカウントアップで、設置値が0な
らカウントダウンをするものである。設定値1というこ
とは、上向きのベクトルを描画することであり、設定値
が0ということは、下向きのベクトルを描画することで
ある。各エッジは、終点側から始点側に向けて、メモリ
上にプロットされていく。
【0142】水平の場合は、設定値はどちらでもよい
が、この場合は比較器2206は、Highレベルを出
力することがなく、開始信号入力時の1画素分のみの同
期信号がゲート2102より出力され、直線描画回路4
は、結果として、終了点のみの動作を行なうこととな
る。選択器2207は、バッファ2201に保持された
終点のx座標値と、減算器2209とのいずれかを、開
始信号により選択出力する。
が、この場合は比較器2206は、Highレベルを出
力することがなく、開始信号入力時の1画素分のみの同
期信号がゲート2102より出力され、直線描画回路4
は、結果として、終了点のみの動作を行なうこととな
る。選択器2207は、バッファ2201に保持された
終点のx座標値と、減算器2209とのいずれかを、開
始信号により選択出力する。
【0143】即ち、開始信号の入力時のみ、バッファ2
201の出力を選択出力し、それ以外は減算器2209
の出力を選択出力する。ラッチ2208は、選択器22
07の出力を描画同期26により取り込み、取り込んだ
値を、現時点でプロットする点のx座標値として出力す
る。このラッチ2208の出力と、バッファ2203に
保持されたx変分との差を、減算器2209は、描画同
期26に同期して演算・出力する。かくして、描画同期
26に同期して描画画素のxアドレスが更新される。バ
ッファ2301は、ベクトルの開始点の描画を、ベクト
ル上の画素位置に行なうか、右一画素隣に行なうかを指
示する情報がCPU1により書き込まれていて、この値
を選択器2303に出力している。
201の出力を選択出力し、それ以外は減算器2209
の出力を選択出力する。ラッチ2208は、選択器22
07の出力を描画同期26により取り込み、取り込んだ
値を、現時点でプロットする点のx座標値として出力す
る。このラッチ2208の出力と、バッファ2203に
保持されたx変分との差を、減算器2209は、描画同
期26に同期して演算・出力する。かくして、描画同期
26に同期して描画画素のxアドレスが更新される。バ
ッファ2301は、ベクトルの開始点の描画を、ベクト
ル上の画素位置に行なうか、右一画素隣に行なうかを指
示する情報がCPU1により書き込まれていて、この値
を選択器2303に出力している。
【0144】バッファ2302は、ベクトル上の開始点
以外の各輪郭点を、ベクトル上の画素位置に行なうか、
右一画素隣に行なうかを指示する情報がCPU1により
書き込まれていて、この値を選択器2303に出力して
いる。どちらも0が保持されている場合は、ベクトル上
の画素位置に描画することを意味し、1が保持されてい
る場合は、右一画素隣に描画することを意味する。選択
器2303は開始信号の入力時のみ、バッファ2301
の出力を選択出力し、そうでない時は、バッファ230
2の出力を選択出力する。
以外の各輪郭点を、ベクトル上の画素位置に行なうか、
右一画素隣に行なうかを指示する情報がCPU1により
書き込まれていて、この値を選択器2303に出力して
いる。どちらも0が保持されている場合は、ベクトル上
の画素位置に描画することを意味し、1が保持されてい
る場合は、右一画素隣に描画することを意味する。選択
器2303は開始信号の入力時のみ、バッファ2301
の出力を選択出力し、そうでない時は、バッファ230
2の出力を選択出力する。
【0145】AND回路2304は、選択器2303の
出力と、一定値“1”の論理和を出力する。加算器23
05は、ラッチ2208の出力値2210と、このAN
D回路2304の出力を加算して出力点のx座標値28
を生成し、出力するものである。バッファ2307は、
ベクトルの終了点のプロットを行なうか否かを指示する
情報がCPU1により書き込まれていて、この値を選択
器2309に出力している。バッファ2308は、ベク
トル上の終了点以外の各輪郭点のプロットを行なうか否
かを指示する情報がCPU1により書き込まれていて、
この値を選択器2309に出力している。どちらも
“0”が保持されている場合は描画を行なわず、“1”
が保持されている場合は、描画を行なうことを意味す
る。
出力と、一定値“1”の論理和を出力する。加算器23
05は、ラッチ2208の出力値2210と、このAN
D回路2304の出力を加算して出力点のx座標値28
を生成し、出力するものである。バッファ2307は、
ベクトルの終了点のプロットを行なうか否かを指示する
情報がCPU1により書き込まれていて、この値を選択
器2309に出力している。バッファ2308は、ベク
トル上の終了点以外の各輪郭点のプロットを行なうか否
かを指示する情報がCPU1により書き込まれていて、
この値を選択器2309に出力している。どちらも
“0”が保持されている場合は描画を行なわず、“1”
が保持されている場合は、描画を行なうことを意味す
る。
【0146】選択器2309は、開始信号の入力時の
み、バッファ2307の出力を選択出力し、そうでない
時は、バッファ2308の出力を選択出力する。AND
回路2310は、選択器2309の出力と、描画同期2
6との論理和をとり、当該画素の描画同期信号29を生
成する。以上により生成された信号27,28,29を
図示しない付加回路によりタイミングを調整して、それ
ぞれプロットするページメモリ3上の位置へのXアドレ
ス,Yアドレス,書き込み信号として出力ページメモリ
3では、図示しない付加回路によって、前記描画同期2
9に同期して、Xアドレス27およびYアドレス28で
定まるアドレスに、その時にそのアドレスに保持されて
いた値と定数“1”との排他的論理和をとった値を書き
込む(リードモディファイライト)ことによって、塗り
潰し用輪郭を描画してゆく。
み、バッファ2307の出力を選択出力し、そうでない
時は、バッファ2308の出力を選択出力する。AND
回路2310は、選択器2309の出力と、描画同期2
6との論理和をとり、当該画素の描画同期信号29を生
成する。以上により生成された信号27,28,29を
図示しない付加回路によりタイミングを調整して、それ
ぞれプロットするページメモリ3上の位置へのXアドレ
ス,Yアドレス,書き込み信号として出力ページメモリ
3では、図示しない付加回路によって、前記描画同期2
9に同期して、Xアドレス27およびYアドレス28で
定まるアドレスに、その時にそのアドレスに保持されて
いた値と定数“1”との排他的論理和をとった値を書き
込む(リードモディファイライト)ことによって、塗り
潰し用輪郭を描画してゆく。
【0147】かくして、ページメモリ3上に塗り潰し用
輪郭が描画された後、CPU1により同期制御回路6が
起動され、塗り潰しデータが生成される。以下、塗り潰
した画像の生成に関しては、既に図13,図14および
図15を用いて説明した通りであるので、本実施例にお
いては説明を省略する。
輪郭が描画された後、CPU1により同期制御回路6が
起動され、塗り潰しデータが生成される。以下、塗り潰
した画像の生成に関しては、既に図13,図14および
図15を用いて説明した通りであるので、本実施例にお
いては説明を省略する。
【0148】本発明で適用する輪郭の描画規則は、図2
8に示した通りである。先の説明では、右回りの輪郭
で、左から右へ主走査を行ない、上から下へ副走査を行
なうというラスター走査を行なうという前提で話を進め
たが、本発明は、これらの前提の下に限定されるもので
はない。
8に示した通りである。先の説明では、右回りの輪郭
で、左から右へ主走査を行ない、上から下へ副走査を行
なうというラスター走査を行なうという前提で話を進め
たが、本発明は、これらの前提の下に限定されるもので
はない。
【0149】実施例9 左回りの輪郭データの場合には、図29に示す示す原則
を適用すればよい。即ち、現アウトラインベクトルの向
きが水平、即ち、右向き、もしくは左向きの場合(ケー
ス19〜26)には、次アウトラインベクトルの向きや
x変分によらず、終了点以外の輪郭点は描画しない。
を適用すればよい。即ち、現アウトラインベクトルの向
きが水平、即ち、右向き、もしくは左向きの場合(ケー
ス19〜26)には、次アウトラインベクトルの向きや
x変分によらず、終了点以外の輪郭点は描画しない。
【0150】また、この時、終了点に関しては、現アウ
トラインベクトルの向きが、次アウトラインベクトルの
向きと同じ場合、即ち、現ベクトルも次ベクトルも共に
右向き(ケース19)か、あるいは共に左向き(ケース
24)の場合にはプロットしない。次ベクトルが下向き
で現ベクトルが左向きの時(ケース23)、および、次
ベクトルが上向きで現ベクトルが右向きの時(ケース2
2)の場合もプロットしない。
トラインベクトルの向きが、次アウトラインベクトルの
向きと同じ場合、即ち、現ベクトルも次ベクトルも共に
右向き(ケース19)か、あるいは共に左向き(ケース
24)の場合にはプロットしない。次ベクトルが下向き
で現ベクトルが左向きの時(ケース23)、および、次
ベクトルが上向きで現ベクトルが右向きの時(ケース2
2)の場合もプロットしない。
【0151】次ベクトルが下向きで現ベクトルが右向き
の時(ケース21)、および、次ベクトルが右向きで現
ベクトルが左向きの時(ケース23)の場合は終了点の
画素位置アドレスにプロットする。次ベクトルが上向き
で現ベクトルが左向きの時(ケース26)、および、次
ベクトルが左向きで現ベクトルが右向きの時(ケース2
0)の場合は終了点の画素の一画素右隣りの画素位置ア
ドレスにプロットする。
の時(ケース21)、および、次ベクトルが右向きで現
ベクトルが左向きの時(ケース23)の場合は終了点の
画素位置アドレスにプロットする。次ベクトルが上向き
で現ベクトルが左向きの時(ケース26)、および、次
ベクトルが左向きで現ベクトルが右向きの時(ケース2
0)の場合は終了点の画素の一画素右隣りの画素位置ア
ドレスにプロットする。
【0152】一方、現アウトラインベクトルの向きが非
水平の場合(ケース27〜36)を説明する。現アウト
ラインベクトルが下向きの場合(ケース27〜31)に
は、次アウトラインベクトルの向きやx変分によらず、
終了点以外の輪郭点は、現アウトラインベクトルに沿っ
た画素位置アドレスにそれぞれプロットしていく。
水平の場合(ケース27〜36)を説明する。現アウト
ラインベクトルが下向きの場合(ケース27〜31)に
は、次アウトラインベクトルの向きやx変分によらず、
終了点以外の輪郭点は、現アウトラインベクトルに沿っ
た画素位置アドレスにそれぞれプロットしていく。
【0153】また、現アウトラインベクトルが上向きの
場合(ケース32〜36)には、次ベクトルの向きやx
変分によらず、終了点以外の輪郭点は現アウトラインベ
クトルに沿った位置の一画素右隣りの画素位置アドレス
にそれぞれプロットしていく。終了点に関しては、現ア
ウトラインベクトルの向きが非水平の場合も水平の場合
と同様に、現ベクトルの向きと次ベクトルの向きが同じ
場合、即ち、現ベクトルも次ベクトルも共に下向き(ケ
ース29)か、あるいは共に上向き(ケース36)の場
合にはプロットしない。
場合(ケース32〜36)には、次ベクトルの向きやx
変分によらず、終了点以外の輪郭点は現アウトラインベ
クトルに沿った位置の一画素右隣りの画素位置アドレス
にそれぞれプロットしていく。終了点に関しては、現ア
ウトラインベクトルの向きが非水平の場合も水平の場合
と同様に、現ベクトルの向きと次ベクトルの向きが同じ
場合、即ち、現ベクトルも次ベクトルも共に下向き(ケ
ース29)か、あるいは共に上向き(ケース36)の場
合にはプロットしない。
【0154】次ベクトルが左向きで現ベクトルが下向き
(ケース28)の時、および、次ベクトルが右向きで現
ベクトルが上向き(ケース32)の場合もプロットしな
い。前ベクトルが右向きで現ベクトルが下向き(ケース
27)の時は、終了点の画素位置アドレスにプロットす
る。次ベクトルが上向きで、現ベクトルが下向きの時
(ケース30,31)は、次ベクトルのx増分と現ベク
トルのx増分の和が負(ケース31)ならば、終了点の
一画素右隣りの画素位置アドレスにプロットし、負(ケ
ース30)ならば終了点の画素位置アドレスにプロット
するものである。
(ケース28)の時、および、次ベクトルが右向きで現
ベクトルが上向き(ケース32)の場合もプロットしな
い。前ベクトルが右向きで現ベクトルが下向き(ケース
27)の時は、終了点の画素位置アドレスにプロットす
る。次ベクトルが上向きで、現ベクトルが下向きの時
(ケース30,31)は、次ベクトルのx増分と現ベク
トルのx増分の和が負(ケース31)ならば、終了点の
一画素右隣りの画素位置アドレスにプロットし、負(ケ
ース30)ならば終了点の画素位置アドレスにプロット
するものである。
【0155】次ベクトルが左向きで現ベクトルが上向き
(ケース33)の場合は、終了点の一画素右隣りの画素
位置アドレスにプロットする。次ベクトルが下向きで、
現ベクトルが上向きの時(ケース34,35)は、次ベ
クトルのx増分と現ベクトルのx増分の和が0又は負
(ケース35)の場合は、終了点の一画素右隣の画素位
置アドレスにプロットし、正(ケース34)の場合は、
終了点の画素位置アドレスにプロットする。これらのプ
ロットは、全て、当該アドレスに既に設定されている値
と、定数“1”との排他的論理和をもって書き込みを行
なうことで実施される。
(ケース33)の場合は、終了点の一画素右隣りの画素
位置アドレスにプロットする。次ベクトルが下向きで、
現ベクトルが上向きの時(ケース34,35)は、次ベ
クトルのx増分と現ベクトルのx増分の和が0又は負
(ケース35)の場合は、終了点の一画素右隣の画素位
置アドレスにプロットし、正(ケース34)の場合は、
終了点の画素位置アドレスにプロットする。これらのプ
ロットは、全て、当該アドレスに既に設定されている値
と、定数“1”との排他的論理和をもって書き込みを行
なうことで実施される。
【0156】以上、走査方向が左から右へ主走査を行な
うことを前提として、右回り輪郭データの場合(先の実
施例)と、左回り輪郭データの場合(実施例2)の場合
を説明した。
うことを前提として、右回り輪郭データの場合(先の実
施例)と、左回り輪郭データの場合(実施例2)の場合
を説明した。
【0157】実施例10 主走査の走査方向が前述の例と反対で、右から左へ走査
される場合には、先の例で塗り潰しが開始されていた輪
郭点で塗り潰しが終了されることになり、先の例で塗り
潰しが終了されていた輪郭点で塗り潰しが開始されるこ
とになる。
される場合には、先の例で塗り潰しが開始されていた輪
郭点で塗り潰しが終了されることになり、先の例で塗り
潰しが終了されていた輪郭点で塗り潰しが開始されるこ
とになる。
【0158】このため前記図28および図29の中で、
EXORプロットだった部分を左一画素シフトEXOR
プロットとし、右一画素シフトEXORプロットだった
部分をEXORプロットとするとよい。
EXORプロットだった部分を左一画素シフトEXOR
プロットとし、右一画素シフトEXORプロットだった
部分をEXORプロットとするとよい。
【0159】これにより、塗り潰し処理時には、走査線
上で奇数番目の輪郭線ドット(前記例では、走査方向が
逆のため偶数番目の輪郭線ドットであった)位置から塗
り潰しを開始し、偶数番目の輪郭線画素位置(前記例で
は、走査方向が逆のため奇数番目の輪郭線ドットであっ
た)までで塗り潰し区間を終了することになる。
上で奇数番目の輪郭線ドット(前記例では、走査方向が
逆のため偶数番目の輪郭線ドットであった)位置から塗
り潰しを開始し、偶数番目の輪郭線画素位置(前記例で
は、走査方向が逆のため奇数番目の輪郭線ドットであっ
た)までで塗り潰し区間を終了することになる。
【0160】以上の全ての例に対しての規則について言
えることは、現アウトラインベクトルの終了点以外の点
に関しては、現ベクトルの向きのみで決定されているこ
とがあげられる。即ち、現アウトラインベクトルが水平
なのか、上向きなのか下向きなのかで、プロットしない
のか、ベクトル上の画素位置にプロットするのか、ベク
トル上の画素位置の主走査の走査方向に一画素隣の画素
位置にプロットするのかが決定されている。
えることは、現アウトラインベクトルの終了点以外の点
に関しては、現ベクトルの向きのみで決定されているこ
とがあげられる。即ち、現アウトラインベクトルが水平
なのか、上向きなのか下向きなのかで、プロットしない
のか、ベクトル上の画素位置にプロットするのか、ベク
トル上の画素位置の主走査の走査方向に一画素隣の画素
位置にプロットするのかが決定されている。
【0161】一方、終了点に関しては現ベクトルの向き
が非水平でかつ、次ベクトルの向きが反対向きの時以外
は、現ベクトルの向きと次ベクトルの向きの組合せによ
って、プロットしないのか、ベクトル上の画素位置にプ
ロットするのか、ベクトル上の画素位置の主走査の走査
方向に一画素隣の画素位置にプロットするのかが決定さ
れている。
が非水平でかつ、次ベクトルの向きが反対向きの時以外
は、現ベクトルの向きと次ベクトルの向きの組合せによ
って、プロットしないのか、ベクトル上の画素位置にプ
ロットするのか、ベクトル上の画素位置の主走査の走査
方向に一画素隣の画素位置にプロットするのかが決定さ
れている。
【0162】また、現ベクトルの向きが非水平で、か
つ、直線ベクトルの向きの反対向きの時には、直前ベク
トルのx増分と現ベクトルの和の値によってベクトル上
の画素位置にプロットするのか、ベクトル上の画素位置
の主走査方向に一画素隣の画素位置にプロットするのか
が決定されている。
つ、直線ベクトルの向きの反対向きの時には、直前ベク
トルのx増分と現ベクトルの和の値によってベクトル上
の画素位置にプロットするのか、ベクトル上の画素位置
の主走査方向に一画素隣の画素位置にプロットするのか
が決定されている。
【0163】実施例11 上記規則において、現ベクトルの向きが非水平でかつ、
直ベクトルの向きの反対向き(即ち、直前ベクトルも非
水平で逆向き)の場合に、互いにx増分の和を吟味する
のは、この現ベクトルの始点が、閉図形内の凸な頂点な
のか、凹な頂点なのかを判定しているに他ならない。こ
の判定結果により頂点画素が黒画素となる様に規則を設
定しているのである。
直ベクトルの向きの反対向き(即ち、直前ベクトルも非
水平で逆向き)の場合に、互いにx増分の和を吟味する
のは、この現ベクトルの始点が、閉図形内の凸な頂点な
のか、凹な頂点なのかを判定しているに他ならない。こ
の判定結果により頂点画素が黒画素となる様に規則を設
定しているのである。
【0164】しかし、閉図形内の凸な頂点か凹な頂点か
にこだわらず、この頂点の歪を許すならば、x増分デー
タの管理が不用となり、例えば、終了点以外のベクトル
上の輪郭点と同様に、終了点をプロットするなどして、
輪郭点の描画規則の判定の処理を軽減することが可能で
ある。
にこだわらず、この頂点の歪を許すならば、x増分デー
タの管理が不用となり、例えば、終了点以外のベクトル
上の輪郭点と同様に、終了点をプロットするなどして、
輪郭点の描画規則の判定の処理を軽減することが可能で
ある。
【0165】実施例12 前記実施例においては、輪郭線の描画は、直線描画回路
を用いて描画しているが、これに限るものではなく、直
線描画自体をCPU1で直接実行してももちろんよい。
を用いて描画しているが、これに限るものではなく、直
線描画自体をCPU1で直接実行してももちろんよい。
【0166】実施例13 前記実施例においては、本発明をプリンタ用の構成例と
して説明したが、これに限るものではなく、ディスプレ
イ等の表示装置などであってもよい。
して説明したが、これに限るものではなく、ディスプレ
イ等の表示装置などであってもよい。
【0167】実施例14 前記実施例においては、輪郭データ中には、閉ループ中
に始点と終点の座標値が全く同じなベクトルは含まれな
いものとして説明したが、この様なベクトルが含まれて
いても、閉ループ内の各ベクトルの処理の際にこの様な
ベクトルは無視して向きや、x変分を更新せず次のベク
トルの処理に進むことで処理が可能である。
に始点と終点の座標値が全く同じなベクトルは含まれな
いものとして説明したが、この様なベクトルが含まれて
いても、閉ループ内の各ベクトルの処理の際にこの様な
ベクトルは無視して向きや、x変分を更新せず次のベク
トルの処理に進むことで処理が可能である。
【0168】
【発明の効果】以上説明したように、輪郭データとして
方向づけられたアウトラインベクトルを用い、各アウト
ラインベクトルの向きおよび、該アウトラインベクトル
の直前のアウトラインベクトルの向きをも考慮して場合
を分け、各場合に対して、各ベクトルの開始点(または
終了点)と、開始点(終了点)以外のベクトル上の点と
を、それぞれプロットしないか、プロットするか、主走
査の走査方向に一画素隣の位置にプロットするかを制御
しながら、輪郭線のみの描画を既設定値と排他的論理和
をとって書き込む形でまず行ない、しかる後に、上記輪
郭線画像をラスター走査して、ラスター走査毎に奇数番
目の輪郭点との交差から(この点上は含む)、偶数番目
の輪郭点との交差まで(この点上は含まず)塗り潰し区
間とすることによって、複雑な塗り潰し図形を歪の発生
を伴わずに高速にかつ簡便・安価に発生することができ
る効果を有する。
方向づけられたアウトラインベクトルを用い、各アウト
ラインベクトルの向きおよび、該アウトラインベクトル
の直前のアウトラインベクトルの向きをも考慮して場合
を分け、各場合に対して、各ベクトルの開始点(または
終了点)と、開始点(終了点)以外のベクトル上の点と
を、それぞれプロットしないか、プロットするか、主走
査の走査方向に一画素隣の位置にプロットするかを制御
しながら、輪郭線のみの描画を既設定値と排他的論理和
をとって書き込む形でまず行ない、しかる後に、上記輪
郭線画像をラスター走査して、ラスター走査毎に奇数番
目の輪郭点との交差から(この点上は含む)、偶数番目
の輪郭点との交差まで(この点上は含まず)塗り潰し区
間とすることによって、複雑な塗り潰し図形を歪の発生
を伴わずに高速にかつ簡便・安価に発生することができ
る効果を有する。
【図1】ラスター走査型のビデオプリンタ用に構成した
本発明の一実施例を示すブロック図である。
本発明の一実施例を示すブロック図である。
【図2】奇偶反転法の問題点を説明する図である。
【図3】従来例で得られる輪郭描画例を示す図である。
【図4】従来例で得られる塗り潰し図形を示す図であ
る。
る。
【図5】右回り(時計回り)のアウトラインベクトルに
よる閉図形例を示す図である。
よる閉図形例を示す図である。
【図6】左回り(反時計回り)のアウトラインベクトル
による閉図形例を示す図である。
による閉図形例を示す図である。
【図7】従来例における回路のブロック構成例を示す図
である。
である。
【図8】右回りのアウトラインデータの例を示す図であ
る。
る。
【図9】アウトラインベクトルの座標表現を示す図であ
る。
る。
【図10】図8のアウトラインデータのアウトラインベ
クトル座標表現を示す図である。
クトル座標表現を示す図である。
【図11】本発明の一実施例における装置の動作を説明
するフローチャートである。
するフローチャートである。
【図12】塗り潰し用輪郭描画ルーチンを説明するフロ
ーチャートである。
ーチャートである。
【図13】塗り潰し回路を示す図である。
【図14】ページ同期信号と、走査同期信号の関係を示
すタイミングチャートである。
すタイミングチャートである。
【図15】走査同期信号と画素同期信号および画素デー
タ信号のタイミングチャートである。
タ信号のタイミングチャートである。
【図16】本発明の一実施例により得られる塗り潰し用
輪郭の描画結果を示す図である。
輪郭の描画結果を示す図である。
【図17】本発明の一実施例により得られる塗り潰され
た図形例を示す図である。
た図形例を示す図である。
【図18】直線描画回路の機能ブロック図である。
【図19】直線描画回路の回路図である。
【図20】現ベクトル描画ルーチンを説明するフローチ
ャートである。
ャートである。
【図21】本発明における一実施例で用いた規則の一覧
表を示す図である。
表を示す図である。
【図22】本発明におけるその他の実施例で用いた規則
の一覧表を示す図である。
の一覧表を示す図である。
【図23】塗り潰し用輪郭描画ルーチンを説明するフロ
ーチャートである。
ーチャートである。
【図24】本発明により得られる塗り潰し用輪郭の描画
結果を示す図である。
結果を示す図である。
【図25】直線描画回路の機能ブロック図である。
【図26】直線描画回路の回路図である。
【図27】現ベクトル描画ルーチンを説明するフローチ
ャートである。
ャートである。
【図28】本発明におけるその他の実施例で用いた規則
の一覧表を示す図である。
の一覧表を示す図である。
【図29】本発明におけるその他の実施例で用いた規則
の一覧表を示す図である。
の一覧表を示す図である。
1 マイクロプロセッサ 2 RAM(ランダムアクセスメモリ) 3 ページメモリ 4 直線描画回路 5 塗り潰し回路 6 同期制御回路 7 I/Oポート 8 ラスター走査型のビデオプリンタ 9 バス 10 輪郭画像データ信号線 11 塗り潰された画像データの出力線 12 内部動作用の同期信号線 13 外部I/F用の同期信号線 14 I/Oポート
Claims (20)
- 【請求項1】 2次元図形の画素データを記憶する記憶
手段と、 輪郭データとして閉ループを構成する様に方向づけられ
たアウトライン線ベクトルよりなるデータを獲得する獲
得手段と、 輪郭線を構成する各線ベクトルの向きおよび該線ベクト
ルの輪郭線上における前の線ベクトルの向きを判断する
判別手段と、 前記各線ベクトルの向きおよび該ベクトルの前の線ベク
トルの向きから各線ベクトルの描画を制御する制御手段
と、 前記制御手段の出力に応答して、各線ベクトルの開始点
の近似画素を発生するための第1の発生手段と、 前記制御手段の出力に応答して、各線ベクトルの開始点
以外の近似画素を発生するための第2の発生手段と、 前記第1および第2の発生手段の出力に応答して、各線
ベクトルを各走査線当り1画素で表される画素を前記記
憶手段の対応座標アドレスににおける既設定の画素デー
タとの排他的論理和を求めて前記記憶手段に書き込み、
輪郭線画素を設定するための第1の設定手段と、 前記記憶手段に書き込まれた輪郭線画素をラスター走査
し、各走査線の奇数番目の輪郭線画素から、次に現われ
る偶数番目の輪郭画素の直前の画素までの間を塗り潰さ
れた領域として設定する第2の設定手段とを具備したこ
とを特徴とする図形処理装置。 - 【請求項2】 請求項1において、前記制御手段は、各
線ベクトルの向きのみで前記第2の発生手段を制御し、
各線ベクトルの向きおよび該ベクトルの前の線ベクトル
の向きから前記第1の発生手段を制御することを特徴と
する図形処理装置。 - 【請求項3】 請求項1において、前記判別手段は、各
線ベクトルの向きおよび該線ベクトルの輪郭線上におけ
る前の線ベクトルの向きを判断する手段に加え、各線ベ
クトルと該線ベクトルの前の線ベクトル間の頂点が、図
形内で凸な頂点か凹な頂点か、あるいはそうでないかを
判断する手段を有し、前記制御手段は、各線ベクトルの
向きおよび該ベクトルの前の線ベクトルの向きに加え、
前記ベクトル間の頂点の状態から、各線ベクトルの描画
を制御することを特徴とする図形処理装置。 - 【請求項4】 請求項3において、前記制御手段は、各
線ベクトルの向きのみで前記第2の発生手段を制御し、
各線ベクトルの向き,該ベクトルの前の線ベクトルの向
き、および、該ベクトル間の頂点の状態から、前記第1
の発生手段を制御することを特徴とする図形処理装置。 - 【請求項5】 図形の輪郭を単数もしくは複数の閉ルー
プをなすように方向づけられたアウトラインの線ベクト
ル列で表し、前記アウトライン線ベクトルからアウトラ
インを作成してラスター走査を行い、前記アウトライン
と主走査線との各奇数回目の交差から前記輪郭に囲まれ
る領域が開始し、該奇数回目の交差の直後の偶数回目の
交差の直前までで前記囲まれる領域が終了すると判定す
る図形処理方法において、 各アウトラインベクトルの向きおよび該ベクトルの前の
ベクトルの向きを判定し、該判定結果から、各線ベクト
ルの描画を各線ベクトルの開始点および開始点以外の輪
郭上の点を、それぞれプロットしないか、ベクトル上の
位置に対応する画素にプロットするか、ベクトル上の位
置に対応する画素の主走査の走査方向に一画素隣の画素
にプロットするかのいずれかを制御することを特徴とす
る図形処理方法。 - 【請求項6】 請求項5において、領域内と判断された
部分を塗り潰すことを特徴とする図形処理方法。 - 【請求項7】 請求項5において、各線ベクトルの開始
点以外の輪郭上の点については、各ベクトルの向きによ
ってプロットしないか、ベクトル上の位置に対応する画
素にプロットするか、ベクトル上の位置に対応する画素
の主走査の走査方向に一画素隣の画素にプロットするか
のいずれかを制御し、各線ベクトルの開始点について
は、各ベクトルの向きおよび該ベクトルの前の線ベクト
ルの向きによってプロットしないか、ベクトル上の位置
に対応する画素にプロットするか、ベクトル上の位置に
対応する画素の主走査の走査方向に一画素隣の画素にプ
ロットするかのいずれかを制御することを特徴とする図
形処理方法。 - 【請求項8】 図形の輪郭を単数もしくは複数の閉ルー
プをなすように方向づけられたアウトラインの線ベクト
ル列で表し、前記アウトライン線ベクトルからアウトラ
インを作成してラスター走査を行い、前記アウトライン
と主走査線との各奇数回目の交差から前記輪郭に囲まれ
る領域が開始し、該奇数回目の交差の直後の偶数回目の
交差の直前までで上記囲まれる領域が終了すると判定す
る図形処理方法において、 各アウトラインベクトルの向き,該ベクトルの前のベク
トルの向き、および、該2ベクトル間の頂点が図形内で
凸な頂点か、凹な頂点か、あるいはそうでないかを判定
し、該判定結果から、各線ベクトルの描画を各線ベクト
ルの開始点および開始点以外の輪郭上の点を、それぞれ
プロットしないか、ベクトル上の位置に対応する画素プ
ロットするか、ベクトル上の位置に対応する画素の主走
査の走査方向に一画素隣の画素にプロットするかのいず
れかを制御することを特徴とする図形処理方法。 - 【請求項9】 請求項8において、各線ベクトルの開始
点以外の輪郭上の点は、各ベクトルの向きによってプロ
ットしないか、ベクトル上の位置に対応する画素にプロ
ットするか、ベクトル上の位置に対応する画素の主走査
の走査方向に一画素隣の画素にプロットするかのいずれ
かを制御し、各線ベクトルの開始点は、各ベクトルの向
き,該ベクトルの前の線ベクトルの向き、および、該ベ
クトル間の頂点の状態によって、プロットしないか、ベ
クトル上の位置に対応する画素にプロットするか、ベク
トル上の位置に対応する画素の主走査の走査方向に一画
素隣の画素にプロットするかのいずれかを制御すること
を特徴とする図形処理方法。 - 【請求項10】 請求項8において、領域内と判断され
た部分を塗り潰すことを特徴とする図形処理方法。 - 【請求項11】 2次元図形の画素データを記憶する記
憶手段と、 輪郭データとして閉ループを構成する様に方向づけられ
たアウトライン線ベクトルよりなるデータを獲得する獲
得手段と、 輪郭線を構成する各線ベクトルの向きおよび該線ベクト
ルの輪郭線上における次の線ベクトルの向きを判断する
判別手段と、 前記各線ベクトルの向きおよび該ベクトルの次の線ベク
トルの向きから各線ベクトルの描画を制御する制御手段
と、 前記制御手段の出力に応答して、各線ベクトルの終了点
の近似画素を発生するための第1の発生手段と、 前記制御手段の出力に応答して、各線ベクトルの終了点
以外の近似画素を発生するための第2の発生手段と、 前記第1および第2の発生手段の出力に応答して、各線
ベクトルを各走査線当り1画素で表される画素を前記記
憶手段の対応座標アドレスににおける既設定の画素デー
タとの排他的論理和を求めて前記記憶手段に書き込み、
輪郭線画素を設定するための第1の設定手段と、 前記記憶手段に書き込まれた輪郭線画素をラスター走査
し、各走査線の奇数番目の輪郭線画素から、次に現われ
る偶数番目の輪郭画素の直前の画素までの間を塗り潰さ
れた領域として設定する第2の設定手段とを具備したこ
とを特徴とする図形処理装置。 - 【請求項12】 請求項11において、前記制御手段
は、各線ベクトルの向きのみで前記第2の発生手段を制
御し、各線ベクトルの向きおよび該ベクトルの次の線ベ
クトルの向きから前記第1の発生手段を制御することを
特徴とする図形処理装置。 - 【請求項13】 請求項11において、前記判別手段
は、各線ベクトルの向きおよび該線ベクトルの輪郭線上
における次の線ベクトルの向きを判断する手段に加え、
各線ベクトルと該線ベクトルの次の線ベクトル間の頂点
が、図形内で凸な頂点か凹な頂点か、あるいはそうでな
いかを判断する手段を有し、前記制御手段は、各線ベク
トルの向きおよび該ベクトルの次の線ベクトルの向きに
加え、前記ベクトル間の頂点の状態から、各線ベクトル
の描画を制御することを特徴とする図形処理装置。 - 【請求項14】 請求項13において、前記制御手段
は、各線ベクトルの向きのみで前記第2の発生手段を制
御し、各線ベクトルの向き,該ベクトルの次の線ベクト
ルの向き、および、該ベクトル間の頂点の状態から、前
記第1の発生手段を制御することを特徴とする図形処理
装置。 - 【請求項15】 図形の輪郭を単数もしくは複数の閉ル
ープをなすように方向づけられたアウトラインの線ベク
トル列で表し、前記アウトライン線ベクトルからアウト
ラインを作成してラスター走査を行い、前記アウトライ
ンと主走査線との各奇数回目の交差から前記輪郭に囲ま
れる領域が開始し、該奇数回目の交差の直後の偶数回目
の交差の直前までで前記囲まれる領域が終了すると判定
する図形処理方法において、 各アウトラインベクトルの向きおよび該ベクトルの次の
ベクトルの向きを判定し、該判定結果から、各線ベクト
ルの描画を各線ベクトルの終了点および終了点以外の輪
郭上の点を、それぞれプロットしないか、ベクトル上の
位置に対応する画素にプロットするか、ベクトル上の位
置に対応する画素の主走査の走査方向に一画素隣の画素
にプロットするかのいずれかを制御することを特徴とす
る図形処理方法。 - 【請求項16】 請求項15において、領域内と判断さ
れた部分を塗り潰すことを特徴とする図形処理方法。 - 【請求項17】 請求項15において、各線ベクトルの
終了点以外の輪郭上の点については、各ベクトルの向き
によってプロットしないか、ベクトル上の位置に対応す
る画素にプロットするか、ベクトル上の位置に対応する
画素の主走査の走査方向に一画素隣の画素にプロットす
るかのいずれかを制御し、各線ベクトルの終了点につい
ては、各ベクトルの向きおよび該ベクトルの次の線ベク
トルの向きによってプロットしないか、ベクトル上の位
置に対応する画素にプロットするか、ベクトル上の位置
に対応する画素の主走査の走査方向に一画素隣の画素に
プロットするかのいずれかを制御することを特徴とする
図形処理方法。 - 【請求項18】 図形の輪郭を単数もしくは複数の閉ル
ープをなすように方向づけられたアウトラインの線ベク
トル列で表し、前記アウトライン線ベクトルからアウト
ラインを作成してラスター走査を行い、前記アウトライ
ンと主走査線との各奇数回目の交差から前記輪郭に囲ま
れる領域が開始し、該奇数回目の交差の直後の偶数回目
の交差の直前までで上記囲まれる領域が終了すると判定
する図形処理方法において、 各アウトラインベクトルの向き,該ベクトルの次のベク
トルの向き、および、該2ベクトル間の頂点が図形内で
凸な頂点か、凹な頂点か、あるいはそうでないかを判定
し、該判定結果から、各線ベクトルの描画を各線ベクト
ルの終了点および終了点以外の輪郭上の点を、それぞれ
プロットしないか、ベクトル上の位置に対応する画素プ
ロットするか、ベクトル上の位置に対応する画素の主走
査の走査方向に一画素隣の画素にプロットするかのいず
れかを制御することを特徴とする図形処理方法。 - 【請求項19】 請求項18において、各線ベクトルの
終了点以外の輪郭上の点は、各ベクトルの向きによって
プロットしないか、ベクトル上の位置に対応する画素に
プロットするか、ベクトル上の位置に対応する画素の主
走査の走査方向に一画素隣の画素にプロットするかのい
ずれかを制御し、各線ベクトルの終了点は、各ベクトル
の向き,該ベクトルの次の線ベクトルの向き、および、
該ベクトル間の頂点の状態によって、プロットしない
か、ベクトル上の位置に対応する画素にプロットする
か、ベクトル上の位置に対応する画素の主走査の走査方
向に一画素隣の画素にプロットするかのいずれかを制御
することを特徴とする図形処理方法。 - 【請求項20】 請求項18において、領域内と判断さ
れた部分を塗り潰すことを特徴とする図形処理方法。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP19425891A JP3151005B2 (ja) | 1991-08-02 | 1991-08-02 | 図形処理装置および図形処理方法 |
| EP92306374A EP0522877B1 (en) | 1991-07-12 | 1992-07-10 | Image processing |
| US07/912,970 US5561534A (en) | 1991-07-12 | 1992-07-10 | Image processing method and apparatus |
| DE69227073T DE69227073D1 (de) | 1991-07-12 | 1992-07-10 | Bildverarbeitung |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP19425891A JP3151005B2 (ja) | 1991-08-02 | 1991-08-02 | 図形処理装置および図形処理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0540831A true JPH0540831A (ja) | 1993-02-19 |
| JP3151005B2 JP3151005B2 (ja) | 2001-04-03 |
Family
ID=16321634
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP19425891A Expired - Fee Related JP3151005B2 (ja) | 1991-07-12 | 1991-08-02 | 図形処理装置および図形処理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3151005B2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0916786A (ja) * | 1995-06-27 | 1997-01-17 | Nippon Denki Micom Technol Kk | ワインディング規則用塗り潰し処理方法 |
| US5974195A (en) * | 1994-10-14 | 1999-10-26 | Canon Kabushiki Kaisha | Image processing apparatus and method |
| US6298156B1 (en) | 1995-04-11 | 2001-10-02 | Canon Kabushiki Kaisha | Image processing apparatus and method |
-
1991
- 1991-08-02 JP JP19425891A patent/JP3151005B2/ja not_active Expired - Fee Related
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5974195A (en) * | 1994-10-14 | 1999-10-26 | Canon Kabushiki Kaisha | Image processing apparatus and method |
| US6298156B1 (en) | 1995-04-11 | 2001-10-02 | Canon Kabushiki Kaisha | Image processing apparatus and method |
| JPH0916786A (ja) * | 1995-06-27 | 1997-01-17 | Nippon Denki Micom Technol Kk | ワインディング規則用塗り潰し処理方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3151005B2 (ja) | 2001-04-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4935879A (en) | Texture mapping apparatus and method | |
| US4763119A (en) | Image processing system for area filling of graphics | |
| US5561534A (en) | Image processing method and apparatus | |
| KR20050030595A (ko) | 화상 처리 장치 및 그 방법 | |
| EP0902413A2 (en) | Image drawing apparatus | |
| JPH0540831A (ja) | 図形処理装置および図形処理方法 | |
| US5099231A (en) | Image output system for outputting multi-level information stored as transition points | |
| JP3113405B2 (ja) | 画像処理装置 | |
| JP3130965B2 (ja) | 画像処理方法及びその装置 | |
| WO1982001614A1 (en) | Graphic and textual image generator for a raster scan display | |
| JPH05249953A (ja) | 画像表示装置 | |
| JPH09120450A (ja) | 画像処理装置 | |
| JPH0652304A (ja) | 画像処理装置及びその方法 | |
| JPS6217236B2 (ja) | ||
| JPH0520466A (ja) | 画像処理方法及びその装置 | |
| JPH07105404A (ja) | 立体画像処理装置及びその処理方法 | |
| JP3139805B2 (ja) | 画像処理方法及びその装置 | |
| JP2885996B2 (ja) | 画像処理方法及び装置 | |
| JP2634906B2 (ja) | 画像処理方法 | |
| JP3338484B2 (ja) | アウトラインフォント変形装置 | |
| JP3493745B2 (ja) | 図形描画装置 | |
| US5305431A (en) | Method and system for rendering polygons on a raster display | |
| JPH0520468A (ja) | 画像処理方法及びその装置 | |
| JPS6366678A (ja) | 画像処理装置 | |
| JP2829932B2 (ja) | 画像形成装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |