JPH06295170A - 文字・図形分割発生方式 - Google Patents
文字・図形分割発生方式Info
- Publication number
- JPH06295170A JPH06295170A JP5081769A JP8176993A JPH06295170A JP H06295170 A JPH06295170 A JP H06295170A JP 5081769 A JP5081769 A JP 5081769A JP 8176993 A JP8176993 A JP 8176993A JP H06295170 A JPH06295170 A JP H06295170A
- Authority
- JP
- Japan
- Prior art keywords
- area
- data
- character
- xmin
- dot
- 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.)
- Pending
Links
Landscapes
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
(57)【要約】
【目的】文字・図形のビットマップデータを任意の領域
に分割して発生させることを可能とする文字・図形分割
発生方式及び回路構成並びにメモリへのアクセスアドレ
スを簡略化することが可能となるアドレス計算方式及び
回路構成を提供すること。 【構成】描画すべきドットが発生すべき領域にたいし
て、どのような位置に存在するかを判定する。また判定
結果によっては、ドットを領域の左端に来るように水平
移動させる。メモリをアクセスするアドレスを、発生領
域の最小座標値を基準とした相対アドレスで計算する。 【効果】文字・図形のビットマップデータを任意の領域
に分割して発生させることができる。メモリをアクセス
するアドレスが、メモリの要領内に必ず納まる。
に分割して発生させることを可能とする文字・図形分割
発生方式及び回路構成並びにメモリへのアクセスアドレ
スを簡略化することが可能となるアドレス計算方式及び
回路構成を提供すること。 【構成】描画すべきドットが発生すべき領域にたいし
て、どのような位置に存在するかを判定する。また判定
結果によっては、ドットを領域の左端に来るように水平
移動させる。メモリをアクセスするアドレスを、発生領
域の最小座標値を基準とした相対アドレスで計算する。 【効果】文字・図形のビットマップデータを任意の領域
に分割して発生させることができる。メモリをアクセス
するアドレスが、メモリの要領内に必ず納まる。
Description
【0001】
【産業上の利用分野】本発明は、ベクトル形式で表され
た文字・図形の輪郭情報(以下、ベクトルデータと称
す)からドット形式の文字・図形データ(以下、ビット
マップデータと称す)を発生し、ビットマップデータを
プリンタ,ディスプレイ等の出力装置に出力する情報処
理装置に関する。
た文字・図形の輪郭情報(以下、ベクトルデータと称
す)からドット形式の文字・図形データ(以下、ビット
マップデータと称す)を発生し、ビットマップデータを
プリンタ,ディスプレイ等の出力装置に出力する情報処
理装置に関する。
【0002】
【従来の技術】従来、文字・図形発生装置においては、
ベクトルデータからビットマップデータを分割して発生
させるためには、東芝集積回路技術資料TC8511F
に記載のように、領域を左側から順次連続して分割させ
て発生させていた。つまり、文字・図形データの右端の
領域を発生させるにあたっては、文字・図形データの左
端から順次連続して分割させて発生させていた。
ベクトルデータからビットマップデータを分割して発生
させるためには、東芝集積回路技術資料TC8511F
に記載のように、領域を左側から順次連続して分割させ
て発生させていた。つまり、文字・図形データの右端の
領域を発生させるにあたっては、文字・図形データの左
端から順次連続して分割させて発生させていた。
【0003】
【発明が解決しようとする課題】上記従来技術は、領域
を左側から順次連続して分割させなければならないた
め、任意の領域を一回で発生できないという点について
配慮されておらず、適用範囲が狭いという問題があっ
た。例えば、文字・図形の右端の部分を分割発生させる
ためには、左端から順次連続して分割発生させた後でな
ければならない。
を左側から順次連続して分割させなければならないた
め、任意の領域を一回で発生できないという点について
配慮されておらず、適用範囲が狭いという問題があっ
た。例えば、文字・図形の右端の部分を分割発生させる
ためには、左端から順次連続して分割発生させた後でな
ければならない。
【0004】
【課題を解決するための手段】本発明は、発生させる領
域(X,Y方向の最大値Xmax,Ymax、最小値X
min,Yminで囲まれる領域)に対して、メモリに
描画すべきドットが領域内であるか、あるいはY方向が
領域内でX方向がXminより小さい領域内であるか、
あるいはそれ以外の領域内であるかを判定する手段を設
けたものであり、領域内であればそのまま描画し、Y方
向が領域内でX方向がXminより小さい領域内である
場合にはY座標はそのままでX座標をXminとして描
画し、上記2つの領域外である場合には描画しないよう
にしたものである。
域(X,Y方向の最大値Xmax,Ymax、最小値X
min,Yminで囲まれる領域)に対して、メモリに
描画すべきドットが領域内であるか、あるいはY方向が
領域内でX方向がXminより小さい領域内であるか、
あるいはそれ以外の領域内であるかを判定する手段を設
けたものであり、領域内であればそのまま描画し、Y方
向が領域内でX方向がXminより小さい領域内である
場合にはY座標はそのままでX座標をXminとして描
画し、上記2つの領域外である場合には描画しないよう
にしたものである。
【0005】また、ドットをメモリ上に描画するための
アドレス計算方法の簡略化のためには、(Xmin,Y
min)を基準とした相対アドレスで供給するようにし
たものである。
アドレス計算方法の簡略化のためには、(Xmin,Y
min)を基準とした相対アドレスで供給するようにし
たものである。
【0006】
【作用】本文字・図形分割発生回路は描画すべきドット
が発生すべき領域にたいして、領域内であるか、あるい
はY方向が領域内でX方向がXminより小さい領域内
であるか、あるいはそれ以外の領域内であるかを判定
し、領域内であればそのまま描画し、Y方向が領域内で
X方向がXminより小さい領域内である場合にはY座
標はそのままでX座標をXminとして描画し、上記2
つの領域外である場合には描画しないように動作する。
それによって、領域内に発生された文字・図形の内部を
水平ライン毎に塗り潰すにあたり、発生すべき領域にた
いしてY方向が領域内でX方向がXminより小さい領
域内にあったドットが、発生すべき領域の左端に移動さ
れるので正しく塗り潰すことができる。
が発生すべき領域にたいして、領域内であるか、あるい
はY方向が領域内でX方向がXminより小さい領域内
であるか、あるいはそれ以外の領域内であるかを判定
し、領域内であればそのまま描画し、Y方向が領域内で
X方向がXminより小さい領域内である場合にはY座
標はそのままでX座標をXminとして描画し、上記2
つの領域外である場合には描画しないように動作する。
それによって、領域内に発生された文字・図形の内部を
水平ライン毎に塗り潰すにあたり、発生すべき領域にた
いしてY方向が領域内でX方向がXminより小さい領
域内にあったドットが、発生すべき領域の左端に移動さ
れるので正しく塗り潰すことができる。
【0007】また、ドットをメモリ上に描画するための
アドレスの計算方法は、(Xmin,Ymin)を基準
とした相対アドレスで計算されるようになっている。そ
れによって、アドレスの供給が簡略化できる。
アドレスの計算方法は、(Xmin,Ymin)を基準
とした相対アドレスで計算されるようになっている。そ
れによって、アドレスの供給が簡略化できる。
【0008】具体的には、ドットを描画するときのアド
レスの範囲が、メモリの容量内に納まるということであ
る。
レスの範囲が、メモリの容量内に納まるということであ
る。
【0009】
【実施例】以下、本発明の実施例を図面を用いて説明す
る。
る。
【0010】図1は文字・図形の一部を発生させる様子
を表すものであり、図形ABCのうち(Xmax,Ym
ax),(Xmin,Ymin)で囲まれた領域(1の
領域)を発生し、内部を塗り潰す。次に内部を塗り潰し
た文字・図形を発生する方法について図2を用いて詳し
く説明する。内部を塗り潰した文字・図形を発生させる
ためには、2面のメモリが必要であり、メモリ1(2
0)に内部を塗り潰すためのデータ、メモリ2(21)
に文字・図形の輪郭線を発生する。ここで内部を塗り潰
すためのデ−タの発生方法は以下の通りである。
を表すものであり、図形ABCのうち(Xmax,Ym
ax),(Xmin,Ymin)で囲まれた領域(1の
領域)を発生し、内部を塗り潰す。次に内部を塗り潰し
た文字・図形を発生する方法について図2を用いて詳し
く説明する。内部を塗り潰した文字・図形を発生させる
ためには、2面のメモリが必要であり、メモリ1(2
0)に内部を塗り潰すためのデータ、メモリ2(21)
に文字・図形の輪郭線を発生する。ここで内部を塗り潰
すためのデ−タの発生方法は以下の通りである。
【0011】ドットの移動方向8通りであり、現在点を
(X,Y)とすると、(x+1,Y),(x+1,Y−
1),(x,Y−1),(x−1,Y−1),(x−
1,Y+1),(x,Y+1),(x+1,Y+1),
(x−1,Y)である。現在点のドットを、内部を塗り
潰すためのデータとしてメモリ1(20)上に描画する
か否かは、現在点がいずれの方向から移動してきたかの
情報と次にいずれの方向に移動するかの情報から判定す
る。判定結果がアクティブならば、そのドットを塗り潰
し用のデータとしてメモリ1(20)に描画する。描画
にあたっては、排他的論理和(EOR)でライトする。
つまり、メモリ1(20)のうち対応するビットを反転
させるのである。判定結果がノンアクティブならばドッ
トを描画しない。次にメモリ1を1水平ライン毎に走査
し、奇数番目のドットから偶数番目のドットまでの間を
塗り潰す。次に塗り潰しが終了したデータ(22のデー
タ)と21のデータとの論理和(OR)をとることによ
り、完全な塗り潰しデータ(23)を得る。次に文字・
図形を分割して発生させる際の、内部塗り潰し用データ
及び輪郭線データ発生方法について、図3,図4を用い
て詳しく説明する。図3(a)において、発生すべき領
域30にたいしてY方向が領域内でX方向がXminよ
り小さい領域にあるドットを領域30の左端に水平移動
させる。すなわち、Y座標はそのままでX座標をXmi
nとするのである。ドット移動させて発生させた塗り潰
しデータの内部を塗り潰すと、正しい塗り潰し後のデー
タ31を得る。これに対し、文字・図形の輪郭線データ
の発生方法は図4に示すように、発生すべき領域(4
0)内にあるドットのみを描画する。描画にあたって
は、論理和(OR)でライトする。つまり、メモリ2
(21)のうち対応するビットに1を立てるのである。
以上説明したように、文字・図形を分割して発生させて
も正しい塗り潰しデータを得ることができる。
(X,Y)とすると、(x+1,Y),(x+1,Y−
1),(x,Y−1),(x−1,Y−1),(x−
1,Y+1),(x,Y+1),(x+1,Y+1),
(x−1,Y)である。現在点のドットを、内部を塗り
潰すためのデータとしてメモリ1(20)上に描画する
か否かは、現在点がいずれの方向から移動してきたかの
情報と次にいずれの方向に移動するかの情報から判定す
る。判定結果がアクティブならば、そのドットを塗り潰
し用のデータとしてメモリ1(20)に描画する。描画
にあたっては、排他的論理和(EOR)でライトする。
つまり、メモリ1(20)のうち対応するビットを反転
させるのである。判定結果がノンアクティブならばドッ
トを描画しない。次にメモリ1を1水平ライン毎に走査
し、奇数番目のドットから偶数番目のドットまでの間を
塗り潰す。次に塗り潰しが終了したデータ(22のデー
タ)と21のデータとの論理和(OR)をとることによ
り、完全な塗り潰しデータ(23)を得る。次に文字・
図形を分割して発生させる際の、内部塗り潰し用データ
及び輪郭線データ発生方法について、図3,図4を用い
て詳しく説明する。図3(a)において、発生すべき領
域30にたいしてY方向が領域内でX方向がXminよ
り小さい領域にあるドットを領域30の左端に水平移動
させる。すなわち、Y座標はそのままでX座標をXmi
nとするのである。ドット移動させて発生させた塗り潰
しデータの内部を塗り潰すと、正しい塗り潰し後のデー
タ31を得る。これに対し、文字・図形の輪郭線データ
の発生方法は図4に示すように、発生すべき領域(4
0)内にあるドットのみを描画する。描画にあたって
は、論理和(OR)でライトする。つまり、メモリ2
(21)のうち対応するビットに1を立てるのである。
以上説明したように、文字・図形を分割して発生させて
も正しい塗り潰しデータを得ることができる。
【0012】次に、ドットをメモリ上に描画するための
アドレス計算方法及びドットの移動方法について図5,
図6を用いて詳しく説明する。文字・図形を表現するた
めに必要な横方向のワード数をSWN(ここではメモリ
のアクセス単位をワードであるものとしたが、アクセス
単位がバイトである場合には横方向のバイト数とする)
とすると、通常文字・図形を分割しないで発生させる場
合には、点(X,Y)のアドレスは、次式で表される。
アドレス計算方法及びドットの移動方法について図5,
図6を用いて詳しく説明する。文字・図形を表現するた
めに必要な横方向のワード数をSWN(ここではメモリ
のアクセス単位をワードであるものとしたが、アクセス
単位がバイトである場合には横方向のバイト数とする)
とすると、通常文字・図形を分割しないで発生させる場
合には、点(X,Y)のアドレスは、次式で表される。
【0013】 アドレス=SWN*Y+X/16 …………(1) (少数点以下切り捨て) ここで、*は乗算、/は除算を表す。例えばSWN=1
0,P(100,100)のアドレスは、10*100
+100/16=1006となる。また、ワード内にお
けるビット位置は以下のようにして求められる。
0,P(100,100)のアドレスは、10*100
+100/16=1006となる。また、ワード内にお
けるビット位置は以下のようにして求められる。
【0014】ビット位置=x座標の下位4ビットの値 つまり、X座標の下位4ビットが0ならば0ビット目、
7ならば7ビット目となる。しかし文字・図形を分割さ
せて発生させる場合には、このままのアドレス計算方法
では不都合が多い。例えば、ドットを描画するためのメ
モリの容量が256ワードしかないような場合、点Pの
アドレス=1006はメモリのアドレスに対応しない。
したがって、分割させて発生させる場合には、原点
(0,0)を基準にするのではなく、(Xmin,Ym
in)を基準とした相対アドレスを用いる必要がある。
まず横方向のワード数SWN’を発生すべき領域のワー
ド数とする。したがって、X方向の領域設定Xmax,
Xminは16の倍数とすることが望ましい。また、メ
モリのアクセス単位がバイトであるならば8の倍数であ
ることが望ましい。この際、点(X,Y)のアドレス計
算方法は次式であらわされる。
7ならば7ビット目となる。しかし文字・図形を分割さ
せて発生させる場合には、このままのアドレス計算方法
では不都合が多い。例えば、ドットを描画するためのメ
モリの容量が256ワードしかないような場合、点Pの
アドレス=1006はメモリのアドレスに対応しない。
したがって、分割させて発生させる場合には、原点
(0,0)を基準にするのではなく、(Xmin,Ym
in)を基準とした相対アドレスを用いる必要がある。
まず横方向のワード数SWN’を発生すべき領域のワー
ド数とする。したがって、X方向の領域設定Xmax,
Xminは16の倍数とすることが望ましい。また、メ
モリのアクセス単位がバイトであるならば8の倍数であ
ることが望ましい。この際、点(X,Y)のアドレス計
算方法は次式であらわされる。
【0015】 アドレス=(Y−Ymin)*SWN’+(X−Xmin)/16 …(2) (小数点以下切り捨て) Xmin=64,Xmax=128,Ymin=64,
Ymax=128とするとSWN’=4となり、点P
(100,100)のアドレスは アドレス=(100−64)*64+(100−64)
/16=146となる。したがって、このアドレスはド
ットを発生させるメモリのアドレスに対応する。
Ymax=128とするとSWN’=4となり、点P
(100,100)のアドレスは アドレス=(100−64)*64+(100−64)
/16=146となる。したがって、このアドレスはド
ットを発生させるメモリのアドレスに対応する。
【0016】次に図6を用いて、Y方向が領域内でX方
向がXminより小さい領域内のドットを、発生すべき
領域の左端に水平移動させる具体的な方法について詳し
く説明する。Y方向が領域内でX方向がXminより小
さい領域内にあるドットのアドレスをAD,座標を(X
H,YH)とすると、このドットを発生すべき領域の左
端に水平移動させるための計算は次式で表される。移動
後のアドレスをAD’とすると AD’=AD−(XH−Xmin)/16 ……(3) (ここで(XH−Xmin)/16の計算は小数点以下
切り捨て) 例えばQ(40,80),Q’(64,80)とすると
点Q(40,80)のアドレスは、(2)式から求める
と、(80−40)*4+(40−64)/16=62
であり、点Q’(64,80)のアドレスは、(2)式
から求めると、(80−64)*4+(64−64)/
16=64である。QのアドレスQADはQAD=62
であり、QをQ’に移動した後のアドレスQ’ADは
(3)式により、 Q’AD=62−(40−64)/16=64となり、
正しく移動されたことが証明できる。またドットを移動
させた場合には、移動後のアドレスを求めるだけでな
く、ワ−ド内(バイト内)のビット位置も変えなければ
ならない。Q(40,80)のビット位置は8ビット目
であるが、ドットを左端に水平移動させるのであるか
ら、ビット位置は必ず0ビット目にしなければならな
い。
向がXminより小さい領域内のドットを、発生すべき
領域の左端に水平移動させる具体的な方法について詳し
く説明する。Y方向が領域内でX方向がXminより小
さい領域内にあるドットのアドレスをAD,座標を(X
H,YH)とすると、このドットを発生すべき領域の左
端に水平移動させるための計算は次式で表される。移動
後のアドレスをAD’とすると AD’=AD−(XH−Xmin)/16 ……(3) (ここで(XH−Xmin)/16の計算は小数点以下
切り捨て) 例えばQ(40,80),Q’(64,80)とすると
点Q(40,80)のアドレスは、(2)式から求める
と、(80−40)*4+(40−64)/16=62
であり、点Q’(64,80)のアドレスは、(2)式
から求めると、(80−64)*4+(64−64)/
16=64である。QのアドレスQADはQAD=62
であり、QをQ’に移動した後のアドレスQ’ADは
(3)式により、 Q’AD=62−(40−64)/16=64となり、
正しく移動されたことが証明できる。またドットを移動
させた場合には、移動後のアドレスを求めるだけでな
く、ワ−ド内(バイト内)のビット位置も変えなければ
ならない。Q(40,80)のビット位置は8ビット目
であるが、ドットを左端に水平移動させるのであるか
ら、ビット位置は必ず0ビット目にしなければならな
い。
【0017】次に、本発明を実現するための回路構成に
ついて図7,図8,図9,図10を用いて詳しく説明す
る。図7は塗り潰し,輪郭線データ発生回路のブロック
図である。70は塗り潰し用,輪郭線データを発生する
ための処理の流れを制御するCONTROL部,71は
CONTROL部からの信号により加減算等の演算を行
ない、結果を格納するEXECUTION UNIT
(EU)であり、加減算器,シフタ,セレクタ,レジス
タなどから構成される。72は描画すべきドットが領域
内にあるか、Y方向が領域内でX方向がXminより小
さい領域内にあるか、あるいはそれ以外の領域内である
かを判定するブロック(以下DIVブロックと称す)。
74は塗り潰し用データを発生するためのメモリ(以下
メモリ1と称す)。75は輪郭線データを発生するため
のメモリ(以下メモリ2と称す)。73はメモリ1,メ
モリ2からリードしたデータを加工し再びメモリ1,メ
モリ2にライトするモディファイブロックである。CO
NTROL部は塗り潰し用データ,輪郭線データ発生の
アルゴリズムを回路化したものであり、通常、状態遷移
図,フローチャートを回路化したものが用いられる。C
ONTROL部はEU,DIV,モディファイブロッ
ク,メモリ1,メモリ2に対して、順次制御信号を発生
して、各ブロックに所定の処理を実行させる。まず、ド
ットがどの領域にあるかを判定するために、EUに必要
な演算を実行させる。次に、EUの実行結果を基にし
て、DIVブロックにドットがいずれの領域内にあるか
を判定させる。次に、判定結果を基にして、モディファ
イブロックに、メモリ1,メモリ2からリードしたデー
タをどのように加工させるかを判定させる。モディファ
イブロックは判定結果を基にして、リードデータを加工
する。また、CONTROL部はDIVブロックの判定
結果により、描画すべきドットのアドレスをそのままに
しておくか、あるいはY座標はそのままで、X座標をX
minとしたアドレスに変換するかを判定し、所定の演
算をEUに実行させる。
ついて図7,図8,図9,図10を用いて詳しく説明す
る。図7は塗り潰し,輪郭線データ発生回路のブロック
図である。70は塗り潰し用,輪郭線データを発生する
ための処理の流れを制御するCONTROL部,71は
CONTROL部からの信号により加減算等の演算を行
ない、結果を格納するEXECUTION UNIT
(EU)であり、加減算器,シフタ,セレクタ,レジス
タなどから構成される。72は描画すべきドットが領域
内にあるか、Y方向が領域内でX方向がXminより小
さい領域内にあるか、あるいはそれ以外の領域内である
かを判定するブロック(以下DIVブロックと称す)。
74は塗り潰し用データを発生するためのメモリ(以下
メモリ1と称す)。75は輪郭線データを発生するため
のメモリ(以下メモリ2と称す)。73はメモリ1,メ
モリ2からリードしたデータを加工し再びメモリ1,メ
モリ2にライトするモディファイブロックである。CO
NTROL部は塗り潰し用データ,輪郭線データ発生の
アルゴリズムを回路化したものであり、通常、状態遷移
図,フローチャートを回路化したものが用いられる。C
ONTROL部はEU,DIV,モディファイブロッ
ク,メモリ1,メモリ2に対して、順次制御信号を発生
して、各ブロックに所定の処理を実行させる。まず、ド
ットがどの領域にあるかを判定するために、EUに必要
な演算を実行させる。次に、EUの実行結果を基にし
て、DIVブロックにドットがいずれの領域内にあるか
を判定させる。次に、判定結果を基にして、モディファ
イブロックに、メモリ1,メモリ2からリードしたデー
タをどのように加工させるかを判定させる。モディファ
イブロックは判定結果を基にして、リードデータを加工
する。また、CONTROL部はDIVブロックの判定
結果により、描画すべきドットのアドレスをそのままに
しておくか、あるいはY座標はそのままで、X座標をX
minとしたアドレスに変換するかを判定し、所定の演
算をEUに実行させる。
【0018】次に、EUブロック,DIVブロックの詳
細及び2つのブロックの関係について図8,図9を用い
て詳しく説明する。図8はEUブロックの詳細回路図で
あり、図9はDIVブロックの詳細回路図である。
細及び2つのブロックの関係について図8,図9を用い
て詳しく説明する。図8はEUブロックの詳細回路図で
あり、図9はDIVブロックの詳細回路図である。
【0019】図8において、801はベクトルデータを
格納するためのレジスタ群であり、(X0,Y0),
(X1,Y1)が格納される。この場合(X0,Y0)
→(X1,Y1)に向かってドットを発生させる。ドッ
トを移動させるアルゴリズムは、通常ブレゼンハムのア
ルゴリズムが用いられる。ブレゼンハムのアルゴリズム
については様々な文献に記載されているので、ここでの
説明は省略する。802は領域を設定するための値を格
納するためのレジスタ群であり、Xmin,Ymin,
Xmax,Ymaxが格納される。803は発生領域の
横方向のワード数SWN、メモリ1,メモリ2をリード
/ライトするためのアドレス(MADR)が格納され
る。804は加減算を行うALU(Arithmeti
c Logical Unit)、805は演算結果を
一時的に格納するためのラッチ、806はワード内にお
けるビット位置を指定するためのレジスタ(MAS
K)、807はMASKを左右に1ビットシフトするた
めのシフタ、808は値“0”を格納するレジスタ、8
09は値“1”を格納するレジスタ、810はX0の下
位4ビットの値からワード内におけるビット位置を算出
するデコーダである。
格納するためのレジスタ群であり、(X0,Y0),
(X1,Y1)が格納される。この場合(X0,Y0)
→(X1,Y1)に向かってドットを発生させる。ドッ
トを移動させるアルゴリズムは、通常ブレゼンハムのア
ルゴリズムが用いられる。ブレゼンハムのアルゴリズム
については様々な文献に記載されているので、ここでの
説明は省略する。802は領域を設定するための値を格
納するためのレジスタ群であり、Xmin,Ymin,
Xmax,Ymaxが格納される。803は発生領域の
横方向のワード数SWN、メモリ1,メモリ2をリード
/ライトするためのアドレス(MADR)が格納され
る。804は加減算を行うALU(Arithmeti
c Logical Unit)、805は演算結果を
一時的に格納するためのラッチ、806はワード内にお
けるビット位置を指定するためのレジスタ(MAS
K)、807はMASKを左右に1ビットシフトするた
めのシフタ、808は値“0”を格納するレジスタ、8
09は値“1”を格納するレジスタ、810はX0の下
位4ビットの値からワード内におけるビット位置を算出
するデコーダである。
【0020】まず、X0の下位4ビットをデコードして
ワード内のビット位置を求めMASKに格納する。次
に、ブレゼンハムのアルゴリズムに従ってドットを移動
させる。ドットがY方向に+1移動する場合には、MA
DR+SWNをALUを用いて行い結果をMADRに格
納する。またこの場合Y0+1をALUを用いて行い結
果をY0に格納する。809の“1”をセレクトすれば
よい。Y方向にドットを−1移動する場合には、MAD
R−SWNをALUを用いて行い結果をMADRに格納
する。またこの場合Y0−1をALUを用いて行い結果
をY0に格納する。809の“1”をセレクトすればよ
い。X方向にドットを+1移動する場合には、MASK
データを左に1ビットシフトし結果を再度MASKに格
納し、X0+1を実行し、結果をX0に格納する。ま
た、シフトしたことによりキャリーが生じた場合にはS
WN+1を行い、キャリーが生じない場合には、SWN
+0を行う。この場合808の“0”をセレクトして実
行する。また、キャリーが生じた場合にはビット位置を
0とする。X方向に−1移動する場合にはMASKデー
タを右に1ビットシフトし、X0−1を行う。また、シ
フトしたことによりキャリーが生じた場合にはSWN−
1を行い、キャリーが生じない場合にはSWN+0を行
う。また、キャリーが生じた場合にはビット位置を15
とする。
ワード内のビット位置を求めMASKに格納する。次
に、ブレゼンハムのアルゴリズムに従ってドットを移動
させる。ドットがY方向に+1移動する場合には、MA
DR+SWNをALUを用いて行い結果をMADRに格
納する。またこの場合Y0+1をALUを用いて行い結
果をY0に格納する。809の“1”をセレクトすれば
よい。Y方向にドットを−1移動する場合には、MAD
R−SWNをALUを用いて行い結果をMADRに格納
する。またこの場合Y0−1をALUを用いて行い結果
をY0に格納する。809の“1”をセレクトすればよ
い。X方向にドットを+1移動する場合には、MASK
データを左に1ビットシフトし結果を再度MASKに格
納し、X0+1を実行し、結果をX0に格納する。ま
た、シフトしたことによりキャリーが生じた場合にはS
WN+1を行い、キャリーが生じない場合には、SWN
+0を行う。この場合808の“0”をセレクトして実
行する。また、キャリーが生じた場合にはビット位置を
0とする。X方向に−1移動する場合にはMASKデー
タを右に1ビットシフトし、X0−1を行う。また、シ
フトしたことによりキャリーが生じた場合にはSWN−
1を行い、キャリーが生じない場合にはSWN+0を行
う。また、キャリーが生じた場合にはビット位置を15
とする。
【0021】次にドットを移動した後に、どの領域に存
在するかを判定するために、X0−Xmin,X0−X
max,Y0−Ymin,Y0−Ymaxの演算を行
う。X0−Xmin及びY0−Yminについては演算
結果が負ならば、すなわち結果の15ビット目が“1”
ならば、領域にたいしてXあるいはY方向がXmin,
Yminより小さくなったことを示す。また、X0−X
max,Y0−Ymaxについては演算結果が正なら
ば、すなわち結果の15ビット目が“0”ならば、領域
にたいしてXあるいはY方向がXmax,Ymaxより
大きくなったことを示す。この演算結果の15ビット目
のデータを領域判定用のデータとしてDIVブロックに
供給する。
在するかを判定するために、X0−Xmin,X0−X
max,Y0−Ymin,Y0−Ymaxの演算を行
う。X0−Xmin及びY0−Yminについては演算
結果が負ならば、すなわち結果の15ビット目が“1”
ならば、領域にたいしてXあるいはY方向がXmin,
Yminより小さくなったことを示す。また、X0−X
max,Y0−Ymaxについては演算結果が正なら
ば、すなわち結果の15ビット目が“0”ならば、領域
にたいしてXあるいはY方向がXmax,Ymaxより
大きくなったことを示す。この演算結果の15ビット目
のデータを領域判定用のデータとしてDIVブロックに
供給する。
【0022】次に、この15ビット目のデータを供給さ
れたDIVブロックの動作について、図9を用いて詳し
く説明する。図9において、91はX方向がXmaxよ
り大きくなった事を示す情報を格納するフリップフロッ
プ(BX)であり、BX=1ならばX0≧Xmax,B
X=0ならばX0<Xmaxを示すものとする。92は
X方向がXminより小さくなった事を示す情報を格納
するフリップフロップ(SX)であり、SX=1ならば
X0<Xmin,SX=0ならばX0≧Xminを示す
ものとする。93はY方向がYmaxより大きくなった
事を示す情報を格納するフリップフロップ(BY)であ
り、BY=1ならばY0≧Ymax,BY=0ならばY
0<Ymaxを示すものとする。94はY方向がYmi
nより小さくなった事を示す情報を格納するフリップフ
ロップ(SY)であり、SY=1ならばY0<Ymi
n,SY=0ならばY0≧Yminを示すものとする。
まず、X0−Xmaxの15ビット目の反転データがB
XのDに入力された時にenable1がアクティブに
なり、Dの値がBXに格納される。次に、X0−Xmi
nの15ビット目のデータがSXのDに入力された時に
enable2がアクティブになり、Dの値がSXに格
納される。次に、Y0−Ymaxの15ビット目の反転
データがBYのDに入力された時にenable3がア
クティブになり、Dの値がBYに格納される。次に、Y
0−Yminの15ビット目のデータがSYのDに入力
された時にenable4がアクティブになり、Dの値
がSYに格納される。ここで、BX=SX=BY=SY
=0ならば、このドットは領域内にあり、領域内である
ことを示す信号NAKAがアクティブになる。また、S
X=1,BX=BY=SY=0ならば、このドットはY
方向が領域内で、X方向がXminより小さい領域内に
あり、Y方向が領域内で、X方向がXminより小さい
領域内であることを示す信号HIDARIがアクティブ
になる。
れたDIVブロックの動作について、図9を用いて詳し
く説明する。図9において、91はX方向がXmaxよ
り大きくなった事を示す情報を格納するフリップフロッ
プ(BX)であり、BX=1ならばX0≧Xmax,B
X=0ならばX0<Xmaxを示すものとする。92は
X方向がXminより小さくなった事を示す情報を格納
するフリップフロップ(SX)であり、SX=1ならば
X0<Xmin,SX=0ならばX0≧Xminを示す
ものとする。93はY方向がYmaxより大きくなった
事を示す情報を格納するフリップフロップ(BY)であ
り、BY=1ならばY0≧Ymax,BY=0ならばY
0<Ymaxを示すものとする。94はY方向がYmi
nより小さくなった事を示す情報を格納するフリップフ
ロップ(SY)であり、SY=1ならばY0<Ymi
n,SY=0ならばY0≧Yminを示すものとする。
まず、X0−Xmaxの15ビット目の反転データがB
XのDに入力された時にenable1がアクティブに
なり、Dの値がBXに格納される。次に、X0−Xmi
nの15ビット目のデータがSXのDに入力された時に
enable2がアクティブになり、Dの値がSXに格
納される。次に、Y0−Ymaxの15ビット目の反転
データがBYのDに入力された時にenable3がア
クティブになり、Dの値がBYに格納される。次に、Y
0−Yminの15ビット目のデータがSYのDに入力
された時にenable4がアクティブになり、Dの値
がSYに格納される。ここで、BX=SX=BY=SY
=0ならば、このドットは領域内にあり、領域内である
ことを示す信号NAKAがアクティブになる。また、S
X=1,BX=BY=SY=0ならば、このドットはY
方向が領域内で、X方向がXminより小さい領域内に
あり、Y方向が領域内で、X方向がXminより小さい
領域内であることを示す信号HIDARIがアクティブ
になる。
【0023】このHIDARI信号はCONTROL部
に供給されており、CONTROL部はHIDARI信
号がアクティブならば、ドットをY座標はそのままにし
て、X座標をXminとするために、MADRを基にア
ドレスを再計算する。計算式は前述した通り、 MADR’=MADR−(X0−Xmin)/16 で
ある。
に供給されており、CONTROL部はHIDARI信
号がアクティブならば、ドットをY座標はそのままにし
て、X座標をXminとするために、MADRを基にア
ドレスを再計算する。計算式は前述した通り、 MADR’=MADR−(X0−Xmin)/16 で
ある。
【0024】CONTROL部はEUブロックに制御信
号を出力して、まず、(X0−Xmin)を行わせて結
果をラッチ805に一時的に格納する。次に、ラッチ8
05のデータを右に4ビット算術シフトし、シフト結果
をMADRから減算する。この値がドットが移動した後
のアドレスである。
号を出力して、まず、(X0−Xmin)を行わせて結
果をラッチ805に一時的に格納する。次に、ラッチ8
05のデータを右に4ビット算術シフトし、シフト結果
をMADRから減算する。この値がドットが移動した後
のアドレスである。
【0025】次に、DIVブロックとモディファイブロ
ックとの関係について、図10を用いて詳しく説明す
る。図10において、101はメモリ1のリードデータ
を一時的に格納するラッチであり、102はメモリ2の
リードデータを一時的に格納するラッチである。103
は図8におけるMASKデータであり、104はドット
を水平移動させた場合のワード内におけるビット位置0
x0001である。105はMASKと0x0001を
選択するセレクタである。ここで、FLAG信号はドッ
トを塗り潰し用データとして発生させるかどうかを示す
信号であり、FLAG=1ならば発生させ、FLAG=
0ならば発生させない。FLAG=1になるか0になる
かの判定方法は前述した通りである。
ックとの関係について、図10を用いて詳しく説明す
る。図10において、101はメモリ1のリードデータ
を一時的に格納するラッチであり、102はメモリ2の
リードデータを一時的に格納するラッチである。103
は図8におけるMASKデータであり、104はドット
を水平移動させた場合のワード内におけるビット位置0
x0001である。105はMASKと0x0001を
選択するセレクタである。ここで、FLAG信号はドッ
トを塗り潰し用データとして発生させるかどうかを示す
信号であり、FLAG=1ならば発生させ、FLAG=
0ならば発生させない。FLAG=1になるか0になる
かの判定方法は前述した通りである。
【0026】塗り潰し用データの発生方法は以下の通り
であり、メモリ1をリードしてラッチしたデータとMA
SKあるいは0x0001との排他的論理和(EOR)
をとる。FLAG=1かつNAKAまたはHIDARI
が1ならば、MASKあるいは0x0001のビット位
置が示すメモリ1のビットを反転させ、その他のビット
はそのままとする。次に、輪郭線データの発生方法は以
下の通りであり、メモリ2をリードしてラッチしたデー
タとMASKとの論理和(OR)をとる。NAKA=1
ならばMASKのビット位置が示すメモリ2のビットに
1をたて、その他のビットはそのままとする。これによ
って、メモリ1に塗り潰し用データが、メモリ2に輪郭
線データが発生される。メモリ1とメモリ2を逆にして
も実現可能であることは言うまでもない。また、図7,
図8,図8,図10に示した回路構成図は本発明を実現
するための一例であり、その他、多少異なる回路構成図
をとっても実現可能であることは言うまでもない。
であり、メモリ1をリードしてラッチしたデータとMA
SKあるいは0x0001との排他的論理和(EOR)
をとる。FLAG=1かつNAKAまたはHIDARI
が1ならば、MASKあるいは0x0001のビット位
置が示すメモリ1のビットを反転させ、その他のビット
はそのままとする。次に、輪郭線データの発生方法は以
下の通りであり、メモリ2をリードしてラッチしたデー
タとMASKとの論理和(OR)をとる。NAKA=1
ならばMASKのビット位置が示すメモリ2のビットに
1をたて、その他のビットはそのままとする。これによ
って、メモリ1に塗り潰し用データが、メモリ2に輪郭
線データが発生される。メモリ1とメモリ2を逆にして
も実現可能であることは言うまでもない。また、図7,
図8,図8,図10に示した回路構成図は本発明を実現
するための一例であり、その他、多少異なる回路構成図
をとっても実現可能であることは言うまでもない。
【0027】
【発明の効果】本発明によれば、描画すべきドットが発
生すべき領域にたいして、領域内にあるか、あるいはY
方向が領域内でX方向がXminより小さい領域内であ
るか、あるいはそれ以外の領域内であるかを判定し、領
域内であればそのままドットを描画し、Y方向が領域内
でX方向がXminより小さい領域内であればY座標は
そのままでX座標をXminとしてドットを描画し、そ
れ以外の領域内であれば、ドットを描画しないように動
作できるので、発生すべき領域内に塗り潰し用データと
輪郭線データを正確に発生できる。その結果領域内を正
しく塗り潰した文字・図形のビットマップデータを得る
ことができる。
生すべき領域にたいして、領域内にあるか、あるいはY
方向が領域内でX方向がXminより小さい領域内であ
るか、あるいはそれ以外の領域内であるかを判定し、領
域内であればそのままドットを描画し、Y方向が領域内
でX方向がXminより小さい領域内であればY座標は
そのままでX座標をXminとしてドットを描画し、そ
れ以外の領域内であれば、ドットを描画しないように動
作できるので、発生すべき領域内に塗り潰し用データと
輪郭線データを正確に発生できる。その結果領域内を正
しく塗り潰した文字・図形のビットマップデータを得る
ことができる。
【0028】また、ドットをメモリ上に描画するための
アドレスは(Xmin,Ymin)を基準として計算す
るので、領域内にあるドットのアドレスはメモリの要領
内に納まるという効果もある。
アドレスは(Xmin,Ymin)を基準として計算す
るので、領域内にあるドットのアドレスはメモリの要領
内に納まるという効果もある。
【図1】本発明の文字・図形の分割発生図である。
【図2】内部を塗り潰した文字・図形の発生方法図であ
る。
る。
【図3】塗り潰し用データの発生図である。
【図4】輪郭線データの発生図である。
【図5】メモリアドレスの供給方法図である。
【図6】塗り潰し用データのドット移動図である。
【図7】塗り潰し用,輪郭線データの発生ブロック図で
ある。
ある。
【図8】実行ユニットの回路図である。
【図9】領域判定ブロックの回路図である。
【図10】メモリデータ加工ブロックの回路図である。
1…分割領域、 2…領域内のビットマップデータ、 20…塗り潰し用データ、 21…輪郭線データ、 22…塗り潰し用データの塗り潰し後データ、 23…文字・図形のビットマップデータ、 70…CONTROL部、 71…Execution Unit、 72…領域判定ブロック、 73…メモリデータ加工ブロック、 74,75…メモリ、 801…ベクトルデータ格納用レジスタ群、 802…領域設定値格納用レジスタ群、 803…メモリアクセスアドレス、領域の横ワード数格
納用レジスタ群、 804…加減算(ALU)、 806…ビット位置格納用レジスタ、 807…シフタ、 810…ビット位置算出用デコーダ、 91,92,93,94…領域判定情報を格納するフリ
ップフロップBX,SX,BY,SY。
納用レジスタ群、 804…加減算(ALU)、 806…ビット位置格納用レジスタ、 807…シフタ、 810…ビット位置算出用デコーダ、 91,92,93,94…領域判定情報を格納するフリ
ップフロップBX,SX,BY,SY。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 脇坂 新路 神奈川県横浜市戸塚区吉田町292番地株式 会社日立製作所マイクロエレクトロニクス 機器開発研究所内 (72)発明者 長谷川 和子 神奈川県横浜市戸塚区吉田町292番地株式 会社日立製作所マイクロエレクトロニクス 機器開発研究所内 (72)発明者 佐藤 裕子 神奈川県横浜市戸塚区吉田町292番地株式 会社日立製作所マイクロエレクトロニクス 機器開発研究所内 (72)発明者 白根 弘晃 神奈川県横浜市戸塚区吉田町292番地株式 会社日立画像情報システム内 (72)発明者 西本 和久 神奈川県横浜市戸塚区吉田町292番地株式 会社日立画像情報システム内 (72)発明者 高橋 芳文 神奈川県横浜市戸塚区吉田町292番地株式 会社日立画像情報システム内 (72)発明者 林 繁夫 東京都小平市上水本町五丁目20番1号株式 会社日立製作所半導体設計開発センタ内
Claims (2)
- 【請求項1】ベクトル形式で表された文字・図形の輪郭
情報(以下、ベクトルデータと称す)からドット形式の
文字・図形データ(以下、ビットマップデータと称す)
を発生し、発生すべきビットマップデータが、該ビット
マップデータを格納するメモリの容量よりも大きい場合
には、該ビットマップデータをいくつかの領域に分割し
て発生させる文字・図形発生装置において、文字・図形
の輪郭線データ及び文字・図形の内部を塗り潰すための
データを構成するドットが、発生すべき領域(ここで領
域とは、X,Y方向の最大値Xmax,Ymax、X,
Y方向の最小値Xmin,Yminで囲まれるであるも
のとする)内であるか、あるいはY方向が領域内であり
X方向がXminより小さい領域内であるかを判定する
手段を備え、ドットが領域内である場合にはそのまま発
生し、Y方向が領域内でX方向がXminより小さい領
域内の場合には、ドットをY座標はそのままでX座標を
Xminとして発生させることを特徴とする文字・図形
分割発生方式。 - 【請求項2】請求項1記載の文字・図形分割発生方式に
おいて、 ドットをメモリに描画するためのアドレスを(Xmi
n,Ymin)を基準とした相対アドレスとすることを
特徴とする文字・図形分割発生方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5081769A JPH06295170A (ja) | 1993-04-08 | 1993-04-08 | 文字・図形分割発生方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5081769A JPH06295170A (ja) | 1993-04-08 | 1993-04-08 | 文字・図形分割発生方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06295170A true JPH06295170A (ja) | 1994-10-21 |
Family
ID=13755678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5081769A Pending JPH06295170A (ja) | 1993-04-08 | 1993-04-08 | 文字・図形分割発生方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06295170A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003084417A (ja) * | 2001-09-07 | 2003-03-19 | Pentax Corp | 描画装置における描画処理方法 |
JP2003084423A (ja) * | 2001-09-07 | 2003-03-19 | Pentax Corp | バッファレス描画処理方法及び描画装置 |
-
1993
- 1993-04-08 JP JP5081769A patent/JPH06295170A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003084417A (ja) * | 2001-09-07 | 2003-03-19 | Pentax Corp | 描画装置における描画処理方法 |
JP2003084423A (ja) * | 2001-09-07 | 2003-03-19 | Pentax Corp | バッファレス描画処理方法及び描画装置 |
JP4568461B2 (ja) * | 2001-09-07 | 2010-10-27 | 株式会社オーク製作所 | 描画装置における描画処理方法 |
JP4718732B2 (ja) * | 2001-09-07 | 2011-07-06 | 株式会社オーク製作所 | バッファレス描画処理方法及び描画装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1566773B1 (en) | Alpha blending based on a look-up table | |
US4736200A (en) | Graphic processing apparatus with clipping circuit | |
JPH06295170A (ja) | 文字・図形分割発生方式 | |
EP0464794B1 (en) | Painting pattern generation system and pattern painting method using the system | |
JPS6144317B2 (ja) | ||
JP2806679B2 (ja) | 文字発生装置 | |
JP2621138B2 (ja) | 重ね文字発生方式 | |
JP2836617B2 (ja) | レンダリングプロセッサ | |
JP2748787B2 (ja) | 曲線発生装置 | |
JP2656754B2 (ja) | 画像データ処理装置及びそれを用いたシステム | |
JP3159431B2 (ja) | 画像処理システム | |
JP2656753B2 (ja) | 画像データ処理装置及びそれを用いたシステム | |
JPH01304486A (ja) | 多値文字フォント発生システム | |
JP2606176B2 (ja) | 図形処理装置 | |
JP2766478B2 (ja) | 画像処理システム | |
JP2804028B2 (ja) | レンダリングプロセツサ | |
JPS6315617B2 (ja) | ||
JP2551322B2 (ja) | 画像再生方法および装置 | |
JPH05205070A (ja) | 図形描画方法 | |
JPH1145083A (ja) | 画像データ処理装置及びそれを用いたシステム | |
JPH06162184A (ja) | 曲線補間方式及び装置 | |
JPH09282474A (ja) | 階調画像生成方法 | |
JPH0346826B2 (ja) | ||
JPH0594170A (ja) | ベクトルフオント描画装置 | |
JPH06119460A (ja) | 文字塗り潰し方法および装置 |