JPH11144066A - 図形処理装置 - Google Patents

図形処理装置

Info

Publication number
JPH11144066A
JPH11144066A JP30240397A JP30240397A JPH11144066A JP H11144066 A JPH11144066 A JP H11144066A JP 30240397 A JP30240397 A JP 30240397A JP 30240397 A JP30240397 A JP 30240397A JP H11144066 A JPH11144066 A JP H11144066A
Authority
JP
Japan
Prior art keywords
polygon
data
line
coordinate
processing
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
Application number
JP30240397A
Other languages
English (en)
Other versions
JP3536894B2 (ja
Inventor
Takashi Nagao
隆 長尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP30240397A priority Critical patent/JP3536894B2/ja
Publication of JPH11144066A publication Critical patent/JPH11144066A/ja
Application granted granted Critical
Publication of JP3536894B2 publication Critical patent/JP3536894B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 入力された任意の多角形を処理装置中のDD
A/ソート手段で一括して処理可能な部分多角形に分割
して処理することの可能な図形処理装置を実現する。 【解決手段】 図形出力デバイスのスキャンラインと入
力データに含まれる多角形構成線分の交点を算出する2
N個のDDA手段と、DDA手段から出力された交点デ
ータをソートするソート手段を有する図形処理装置であ
り、処理対象となる多角形データの展開されたXY座表
面の各Y座標ライン上において任意のX座標を有する多
角形データ構成線分の数がN(Nは1以上の自然数)以
下となるように多角形分割処理を実行して1以上の多角
形構成線分データの集合を生成する多角形分割手段を有
し、多角形分割手段によって生成された線分データの集
合を1単位としてDDAによる処理を一括して実行す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、図形処理装置に関
する。詳細には、プリンタやディスプレイ装置などへの
出力を目的として図形やアウトラインデータで表現され
た文字などの描画処理を実行する図形処理装置に関す
る。
【0002】
【従来の技術】図形やアウトラインデータで表現された
文字を扱うエディタ、CAD/CAMシステムなどで
は、それをプリンタやディスプレイ装置に出力するため
に、図形の描画処理が行われる。このような描画は、例
えば図2に示すようなブロックの構成を有するシステム
を使って処理が進められる。
【0003】ユーザ指示や外部からの入力により図形や
文字の描画命令が入力されると、命令解釈部1により解
釈され、ベクターデータ生成部2に入力される。ベクタ
ーデータ生成部2は、文字の場合はフォント管理部3に
要求して文字のアウトラインを表現するベクターデータ
を取得する。線図形の場合は、太さや接続部分の形状を
もとに例えば図3に示すようなベクターデータに変換さ
れる。このように変換された文字、線図形と面図形は、
ショートベクター生成部4でベジェ,スプラインなどで
表現された曲線部分を微小直線で近似したベクターデー
タに変換されて、図4に示すような多角形となる。
【0004】このようにして生成された多角形データ
は、多角形描画部6に入力される。多角形描画部6で
は、入力された多角形の各辺と出力デバイスの各スキャ
ンラインとの交点座標をDDA(Digital Di
fferential Analyzer)などの手法
で計算し、各スキャンライン毎にX座標値でソートして
塗りつぶしの始点/終点の対応を求め、その区間に対応
したスキャンラインに平行な線分をメモリ部7上に描画
する。このようにして描画されたメモリデータをプリン
タやディスプレイ装置などの出力デバイスに転送するこ
とで、印刷や表示が行われる。
【0005】このような図形描画処理において、図2に
おける多角形描画部6の動作は、各辺毎のDDAでの交
点計算やソートなどを含んでいるため重い処理となり、
全体の処理速度を落とす大きな要因となる。そこで、専
用ハードウエアによる高速処理が意図されるが、これは
図5(a)のように凸多角形の場合には比較的単純であ
るが、図5(b)のように凹部を含んでいる場合や図5
(c)のように辺の交差を含んでいる場合には、各スキ
ャンラインについて複数の始点/終点の対が存在するこ
とになるため、前述のように求められた各交点をソート
して対応を見つける処理が必要になる。しかし、入力さ
れる図形の複雑さに制約が無い場合、交点の個数にも制
限がなく、ハードウエアでソート回路を構成することは
非常に困難である。
【0006】従来このような問題を解決する試みとし
て、多角形を、底辺がX軸に平行な台形(四角形や三角
形を含む)などのソートが発生しない部分図形に分割
し、それぞれを処理する手法がある。そのような考え方
を持った従来技術として、特開昭60ー74086号公
報や特開昭61ー248176号公報、特開昭62ー2
71186号公報などがある。
【0007】
【発明が解決しようとする課題】特開昭60−7408
6号公報や特開昭61−248176号公報では、多角
形を底辺がX軸に平行な台形(四角形や三角形を含む)
に分割し、各台形を順に処理することで塗りつぶし処理
時のソート回路を不要としている。しかしこの方式で
は、複雑な多角形を分割すると非常に多くの台形が生成
されるため、その管理や一時記憶が難しく、また台形毎
に処理されるため処理速度が上がらないという問題があ
った。
【0008】特開昭62−271186号広報では、入
力された曲線を含む図形を曲線を含んだまま各スキャン
ラインでの描画線分が1つとなるような部分図形に分割
し、各部分図形を複数のDDA回路と線分描画回路に入
力して並列に処理を行っている。しかし、この方式では
入力される図形の複雑さに応じて幾つのDDA/線分描
画回路が必要かが制限できず、また各部分図形の描画が
異なるスキャンラインに対して行われるため、実際にメ
モリに書き込む部分で競合が発生し、処理速度が上がら
ないことが予想される。
【0009】本発明は以上のような点を考慮してなされ
たものであり、2N個(Nは1以上)のDDA手段と、
2N個の入力をソート可能なソート手段と、入力された
任意の多角形を各スキャンラインでの描画線分数がN以
下となる複数の多角形に分割する多角形分割手段を持
ち、入力された多角形をDDA/ソート可能な部分多角
形に分割して処理することで、分割図形をなるべく小さ
な領域で管理/記憶でき、高速に処理可能な図形処理装
置を実現することを目的とする。
【0010】
【課題を解決するための手段】本発明は、上記の目的を
達成するために成された図形処理装置に関するものであ
る。即ち、本発明は、図形の描画処理を行う図形処理装
置において、XY座表面上に展開した多角形データを分
割する多角形分割手段であり、該多角形データの展開さ
れたXY座表面の各Y座標ライン上において任意のX座
標を有する多角形データ構成線分の数がN(Nは1以上
の自然数)以下となるように多角形分割処理を実行し、
1以上の多角形構成線分データの集合を生成する多角形
分割手段と、多角形分割手段によって生成された多角形
構成線分データの集合を1単位とするデータを入力と
し、該入力されたデータ単位ごとに、図形出力デバイス
のスキャンラインと入力データに含まれる多角形構成線
分の交点を算出する2N個のDDA手段と、DDA手段
から出力された交点データをソートするソート手段と、
ソート手段によってソートされたデータから多角形図形
を形成する各描画線分の始点および終点の対を検出し、
該検出された始点および終点間のメモリ領域を塗りつぶ
すメモリ描画手段とを有することを特徴とする図形処理
装置である。
【0011】さらに、本発明の図形処理装置において、
多角形データの展開されるXY座表面のY軸は図形出力
デバイスのスキャンラインと平行なラインとして構成さ
れることを特徴とする。
【0012】さらに、本発明の図形処理装置において、
メモリ描画手段は、多角形図形を形成する各描画線分の
始点および終点の間のランデータを出力するラン生成手
段を有することを特徴とする。
【0013】さらに、本発明の図形処理装置において、
多角形分割手段は、多角形を構成する各辺の始点、終
点、および該多角形を構成する他の辺との交差点を検出
し、該検出された始点、終点、または交差点の存在する
Y座標についてのみ、多角形分割処理を実行することを
特徴とする。
【0014】さらに、本発明の図形処理装置において、
多角形分割手段は、多角形を構成する各辺のX軸および
Y軸方向の存在範囲を検出し、該検出された各辺の存在
範囲の重複の有無により交差点の有無を判定する手段を
有することを特徴とする。
【0015】さらに、本発明の図形処理装置において、
多角形分割手段は、多角形の展開されるXY座表面にお
ける各Y座標ライン上の多角形構成線分の数を検出し、
該検出線分の数がN本を越えるY座標ライン部分につい
てのみ、多角形分割処理を実行することを特徴とする。
【0016】さらに、本発明の図形処理装置において、
多角形分割手段は、入力された多角形をディスプレイリ
スト形式のデータ構造に変更した際の、該ディスプレイ
リスト中の辺の数を検出し、該検出された辺の数が2N
以上の場合にのみ、多角形分割処理を実行することを特
徴とする。
【0017】
【発明の実施の形態】以下、図面に基づき本発明の印刷
処理装置の一実施例について説明する。図1は、本発明
の図形処理装置の一実施例を示すブロック図である。図
1において、図形処理装置は、命令解釈部1と、ベクタ
ーデータ生成部2と、フォント管理部3と、ショートベ
クター生成部4と、多角形分割部5と、多角形描画部6
と、メモリ部7と、出力デバイス8とを有している。さ
らに、多角形描画部6は、2N(Nは自然数)個のDD
A部61と、ソート部62と、メモリ描画部63とから
構成されている。
【0018】命令解釈部1は、入力された図形または文
字の描画命令を解釈し、次のベクターデータ生成部2が
理解できる形式に変換するものである。ポストスクリプ
ト(PostScript:Adobe System
s社商標)やインタープレス(Interpress:
Xerox社商標)などのページ記述言語では、これら
の描画命令は文字列やバイナリ列として与えられるの
で、そのような場合には命令解釈部1はトークンを切り
出し、字句解釈などを行って内部の描画命令に変換す
る。
【0019】ベクターデータ生成部2は、命令解釈部1
からの入力を受けて、ベクターデータを生成する。例え
ば入力が塗りつぶし図形の場合は、命令解釈部1から図
形の輪郭を表現するベクターと、偶奇規則/非零巻線規
則などの塗りつぶし規則と、曲線を直線近似する場合の
精度を指示するフラットネス(flatness)値
や、描画色などの描画に必要な情報が与えられるので、
その情報をそのまま出力する。
【0020】入力がストローク(線)図形の場合には、
線を表現するベクターと、線幅/終端形状/接続形状な
どの線属性と、曲線を直線近似する場合の精度を指示す
るフラットネス(flatness)値や、描画色など
が与えられるので、このうちのベクターと線属性の情報
を使って、図3に示す線の輪郭ベクターを生成し、残り
の情報とともに出力する。
【0021】入力が文字の場合には、文字コードと、フ
ォントIDと、描画位置や描画色などの情報が与えられ
るので、このうちの文字コードとフォントID、描画位
置の情報をフォント管理部3に送って文字の輪郭ベクタ
ーを取得し、残りの情報とともに出力する。
【0022】フォント管理部3は、各種フォントに対す
るアウトラインベクターデータを記憶するとともに、与
えられた文字コードとフォントIDによって、その文字
に対するアウトラインベクターデータを提供する。
【0023】上記の各種の処理により、入力された図形
/文字は全て、輪郭を表現するベクターデータと描画
色、フラットネス(flatness)値、塗りつぶし
規則の情報に変換される。
【0024】ショートベクター生成部4は、これらの入
力されたベクターデータ中に曲線が含まれている場合に
その曲線部分を、誤差がフラットネス(flatnes
s)値で指定された精度以下となるように、微小な直線
ベクターで近似する処理を行う。例えば曲線のベクター
には、図6に示す4つの制御点で表現されるベジエ曲線
が使われる。この場合ショートベクター化の処理は、図
6に示す通りベジエ曲線を再帰的に分割し、高さ(距離
d)がフラットネス(flatness)値より小さく
なった時点で分割を終了する。そして分割された各ベジ
エ曲線の始点と終点を順番に結ぶことにより、ショート
ベクター化が完了する。
【0025】ショートベクター化が終了した時点で、全
ての図形/文字は多角形のベクターデータに変換され
る。多角形分割部5は、次の多角形描画部6で処理可能
となるように、各スキャンラインでの描画線分数がN以
下となる部分多角形に分割する。この処理については、
後段で詳細に説明する。
【0026】分割された多角形は、1個づつ多角形描画
部6に入力される。多角形描画部6は、2N(Nは自然
数)個のDDA部61と、DDA部61から出力される
2N個のデータをX座標値でソートするソート部62
と、ソートされた結果から始点/終点の対を求め、その
間を指定の描画色でメモリに描画するメモリ描画63と
から構成され、入力された部分多角形を展開してメモリ
部7に描画する。この処理についても、後段で詳細に説
明する。
【0027】メモリ部7に全ての入力図形/文字が描画
されると、その結果は出力デバイス8に出力され、印刷
または表示される。なお、ここでは説明を簡単にするた
めに、メモリ部7が出力デバイス8の描画領域全体に対
応する容量を持つように説明したが、例えばバンドバッ
ファ方式の印刷処理装置のように、メモリ部7はページ
を水平の短冊状に分割した領域の2個分の容量を持ち、
交互に描画と出力デバイスへの転送を行うように構成す
ることも可能である。この場合、例えば多角形分割部5
と多角形描画部6の間に、多角形をバンド毎に分割して
格納する多角形記憶部を設けて1ページ分の描画要素を
保持し、出力デバイスの速度に合わせてバンドバッファ
の片側に多角形描画を行って出力するような構成が可能
となる。
【0028】以上、本発明の印刷処理装置の概要につい
て記述した。次に、この印刷処理装置の主要部の詳細に
ついて説明する。
【0029】初めに、多角形分割部5について詳細に説
明する。図7に多角形分割部5の詳細構成例をブロック
図で示す。図7に示すように、多角形分割部5はディス
プレイリスト制御部51と、交点算出部52と、アクテ
ィブリスト制御部53と、第1のディスプレイリスト記
憶部54と、第2のディスプレイリスト記憶部55とを
有する。
【0030】ディスプレイリスト制御部51は、ショー
トベクタ生成部4から入力された前述した多角形ベクタ
ー情報をもとに、ディスプレイリスト511(図8参
照)を生成する。生成されるディスプレイリストの例
を、図8に示す。図8の左側に示す図形が処理対象とな
る多角形図形である。多角形図形はXY座表面に位置付
けられている。入力された多角形ベクターは、始めに各
頂点のY座標が整数になるように変換される。具体的に
は、例えば各辺についてY座標の小さい方の頂点は切上
げを行い、大きい方の頂点は切捨てを行う。図8におけ
る多角形図形はY座標値の最小値が5、最大値が21で
あり、多角形図形を構成する各辺も5〜21の範囲の整
数値を持つように変換される。さらに各辺の傾きが変わ
らないように整数化誤差をX座標値で補正する。このよ
うにしてY座標値を整数化した後、同じ開始Y座標を持
つ辺を集めてリストで接続する。リストの各要素には、
その辺(ベクター)の方向が上向きか下向きかを+1/
−1で表す方向フラグ「Dir」と、開始点Ysにおけ
るX座標値「Xs」と、終了点のY座標値「Ye」と、
Y座標値の+1増加に対するX座標値の変化量、すなわ
ち辺の傾き「Dx」とが格納される。尚、水平に近い辺
など、どのスキャンラインも横切らないものについて
は、ディスプレイリストの要素に登録されない。
【0031】図8のディスプレイリスト511に記載さ
れたリストの例について説明すると、Y座標「5」の点
について「+1、9.0、15、−0.6」および「−
1、9.4、10、0.5」のリストが示されている。
「+1、9.0、15、−0.6」は、図8に示す多角
形図形の左下側にある左上方向に向かうベクターを示す
もので、上向きであるのでDir=+1、ベクター開始
点のX座標Xs=9.0、ベクター終了点のY座標Ye
=15、辺の傾きDx=−0.6、これらの値によって
データが構成される。さらに、「−1、9.4、10、
0.5」は、Y座標値「5」で終点を構成するもう1つ
のベクターに関して同様の各要素によって構成されるデ
ータである。これらの各データが図8に示す多角形図形
を構成する7つの辺各々に対して生成される。
【0032】さらにディスプレイリスト制御部51は、
次のステップでの処理を高速化するため、辺の関係に変
化が起きるY座標を予めチェックした配列512を作成
する。辺の対応関係や順序関係は、辺の追加/削除と交
差がある場合のみ変化する可能性がある。そこで、Y座
標値の個々に対応する数の配列512を用意し、追加/
削除/交差のある座標値に対応する部分にチェックを入
れる(図8チェック配列512中の×と▲)。図8の配
列512中の×は、辺の追加または削除の発生するY座
標、すなわち辺の始点、または終点のあるY座標であ
り、▲は、交差の発生するY座標を示している。交差▲
の場合は、実際の制御の変更は交差の発生したY座標の
次のY座標から行うことになるので、多角形図形の交差
発生点のY座標値から1つ切り上げた位置にチェック▲
が付与されている。尚、交差の交点座標は、次に述べる
交点算出部52を用いて求められる。
【0033】交点算出部52は、台形を構成する各辺に
交差があるかどうかを判定し、あればその交点座標を計
算してディスプレイリスト制御部51に返す。交点計算
は、対象となる辺がm個あるとすると{m×(m−1)
/2}回の処理が必要となるが、実際には各辺の存在範
囲が重複しない場合(例えばY=6〜13の辺とY=1
6〜21の辺)などでは、交点は存在しないので計算を
省略するなどの高速化が可能である。尚、以下の処理で
はY座標しか使用しないので、ここでは交点のY座標値
だけを求めればよい。
【0034】このような交点算出の結果、交点のY座標
を切上げた位置(図4の▲)の配列にチェックが入る。
アクティブリスト制御部53は、ディスプレイリスト5
11とチェック配列512を読み込んで、図9〜11に
示すフローチャートのように動作して多角形を分割す
る。以下、図9〜11のフローチャートを参照しながら
詳細に説明する。
【0035】初めにステップ1において、処理対象スキ
ャンラインを表す変数Ycを、ディスプレイリスト中に
含まれるY座標の最小値(図8の場合にはYmin=
5)に設定する。
【0036】次にステップ2において、ディスプレイリ
スト中にYcを開始行とする辺があれば、これをアクテ
ィブリストに移動する。アクティブリストの例を図12
に示す。図12に示すようにアクティブリストを構成す
る要素は、図8のディスプレイリスト各要素、すなわち
「Dir」,「Xs」,「Ye」,「Dx」の他に「M
ode」,「Xc」,「Ys」の情報を付加したもので
ある。「Mode」はモードフラグであり、Mode
値:INは1回前の処理時点でのソート後の順番iが2
N(=DDA部個数(図1参照))以下だったことを表
し、Mode値:OUTは同じくiが2Nより大きかっ
たことを表し、Mode値:INITの辺はアクティブ
リストに追加されたばかりの辺であることを示す。Xc
は現Y座標でのX座標値、Ysは辺の開始点のY座標を
表す。ステップ1でYc=Yminに設定され、最初の
処理辺に関する情報をステップ2でディスプレイリスト
からアクティブリストに移動する場合はアクティブリス
トの各要素にMode(=INIT),Xc(=X
s),Ys(=Yc)の情報を付加されることとなる。
【0037】次にステップ3において、現スキャンライ
ンと各辺との交点のX座標値を計算し、Xcに代入す
る。各辺のXcは、{Xs+(Yc−Ys)×Dx}で
求めることができ、また1回前の処理でのYcが現在の
Ycと1しか違わない場合には、{Xc+Dx}で求め
ることができる。さらに、Mode=INITの辺はス
テップ2でアクティブリストに追加されたばかりなので
ステップ2でXcが設定されているので、この処理をス
キップしてもよい。
【0038】次にステップ4において、ステップ3で計
算されたX座標値をもとに、アクティブリストをX座標
値の昇順にソートする。
【0039】次にステップ10(図10参照)におい
て、アクティブリスト中の何番目の要素を読み出すかを
保持する変数iに初期値として1を設定し、次にステッ
プ11において、アクティブリスト中のi番目の要素を
読み出す。
【0040】次にステップ12において、iと2Nとの
大小関係を比較し、iの方が2Nより大きい場合にはS
2に、iの方が小さい場合にはステップ13に進む。
【0041】ステップ13では、読み出されたi番目の
要素のModeをチェックし、INならばステップ17
に、OUTならステップ14に、INITならステップ
16に進む。尚、前述のようにMode値のINは1回
前の処理時点でのソート後の順番iが2N以下だったこ
とを表し、OUTは同じくiが2Nより大きかったこと
を表している。
【0042】ステップ14では、前回OUT(ステップ
13の判定でMode=OUT:前回処理時点でのソー
ト後の順番iが2Nより大)だつた辺が今回IN状態
(ソート後の順番iが2N以下:ステップ12でi>2
Nの判定がNo)になっているので、この辺のYsから
Yc−1までを切り出し、第2のディスプレイリスト記
憶部55にその情報を出力する。具体的には、Y=Ys
の位置に、Dir=Dir,Xs=Xs,Ye=Yc−
1,Dx=Dxなるディスプレイリスト要素を挿入す
る。
【0043】ステップ15では、ステップ14でYc−
1までが出力されたので、その分を補正するためアクテ
ィブリストのi番目の辺データを修正する。具体的に
は、Ys=Yc,Xs=Xcに変更し、さらにMode
値をINに修正する。
【0044】ステップ16では、アクティブリストのi
番目の辺データのModeをINに変更する。
【0045】次にステップ17において、YeがYcと
等しいかどうかをチェックし、もし等しい場合には、ス
テップ18においてその辺データを第1のディスプレイ
リスト記憶部54に出力して、その辺データをアクティ
ブリストから削除する。等しくない場合には、ステップ
19においてiに1を加える。
【0046】ステップ18またはステップ19の処理に
より、iの指す要素がこれまで処理してきたものの次の
要素を指すようになるので、ステップ20ではそのよう
な次の要素がアクティブリスト中に存在するかどうかを
チェックし、もし存在する場合にはステップ11に戻っ
てステップ11以下の処理を繰り返す。もし存在しない
場合には、図9のステップ5に戻る。
【0047】また、ステップ12でiが2Nより大きい
と判定された場合には、図11のステップ23に制御が
移される。ステップ23では、読み出されたi番目の要
素のModeをチェックし、OUTならばステップ27
に、INならステップ24に、INITならステップ2
6に進む。
【0048】ステップ24では、前回INだった辺が今
回OUT状態になっているので、この辺のYsからYc
−1までを切り出し、第1のディスプレイリスト記憶部
54にその情報を出力する。具体的には、Y=Ysの位
置に、Dir=Dir,Xs=Xs,Ye=Yc−1,
Dx=Dxなるディスプレイリスト要素を挿入する。
【0049】ステップ25では、ステップ24でYc−
1までが出力されたので、その分を補正するためアクテ
ィブリストのi番目の辺データを修正する。具体的に
は、Ys=Yc,Xs=Xcに変更し、さらにMode
値をOUTに修正する。
【0050】ステップ26では、アクティブリストのi
番目の辺データのModeをOUTに変更する。
【0051】次にステップ27において、YeがYcと
等しいかどうかをチェックし、もし等しい場合には、ス
テップ28においてその辺データを第2のディスプレイ
リスト記憶部55に出力して、その辺データをアクティ
ブリストから削除する。等しくない場合には、ステップ
29においてiに1を加える。
【0052】ステップ30では、ステップ20と同様に
次の要素がアクティブリスト中に存在するかどうかをチ
ェックし、もし存在する場合にはステップ11に戻って
ステップ11以下の処理を繰り返す。もし存在しない場
合には、図9のステップ5に戻る。
【0053】ステップ5では、ディスプレイリスト制御
部51中のチェック配列512をもとに、現在のYcの
次にチェックされているY座標値があるかどうかを見
て、あればステップ6でそのY座標値をYcに設定して
ステップ2に制御を移す。無い場合には、アクティブリ
スト制御部53での処理を終了する。このように、Yc
を順次変更しながら処理したアクティブリストの途中ま
での経過を、図12に示す。尚、図12ではN=2を仮
定している。
【0054】このような処理の結果、第1のディスプレ
イリスト記憶部54には、2N個のDDAとソート回路
で処理可能な部分多角形を表現するディスプレイリスト
が生成される。また第2のディスプレイリスト記憶部5
5には、入力された多角形からその部分多角形を除いた
部分を表現するディスプレイリストが残る。図8のディ
スプレイリストの処理後の第1のディスプレイリスト記
憶部54の結果を図13に、第2のディスプレイリスト
記憶部55の結果を図14に示す。尚、図13,14も
N=2を仮定する。
【0055】図9ないし図11の処理フローを図8に示
す多角形図形に適用した場合の具体的処理について説明
する。まず、図9のステップ1におけるYc=Ymin
は、図8のディスプレイリストにおいて、Ymin=5
であるから、Yc=5の設定がなされる。ステップ2に
おいてY=5を開始点とする辺は図8の多角形において
2つの辺があるから、この2つの辺についてアクティブ
リストに移動する。
【0056】この場合、この2つのアクティブリストは
図12に示すY=5のライン上に示す2つの辺データで
ある。なお、アクティブリストに移動したこの時点で
は、この2つの辺データのModeは「INIT」であ
る。ステップ3でアクティブリストに移動された各辺の
Xcが計算される。移動時点の辺データについては、X
s=Xcとなる。次にステップ4でX座標値をもとに昇
順ソートされる。これは、図12に示す矢印の順、すな
わち左側から右側の辺データ順となる。
【0057】次に図10に進み、ステップ10でi=1
とされ、ステップ11で、まず図12に示すY=5の最
初の辺データ「INIT,9.0,5,+1,9.0,
15,−0.6」が読み出される。この辺に関してステ
ップ12でi>2Nの判定はNo(N=2を想定)であ
り、ステップ13でMODE?=INITであり、ステ
ップ16でMODE=INに変更され、ステップ17に
進む。
【0058】ステップ17ではYe=Ycの判定がなさ
れる。現時点でYc=5であるのでステップ17の判定
はNoとなり、ステップ19に進み、i=i+1、すな
わちi=2と設定され、ステップ20に進み、さらに、
ステップ11に戻って、Y=5の次の辺、すなわち図1
2に示すY=5のラインに示す右側の辺データについて
同様の処理が進められる。
【0059】図12に示すY=6の4つの辺データにつ
いても、ほぼY=5の辺データと同様の処理が進められ
る。
【0060】図12に示すY=8の6つの辺データの発
生ラインについての処理はY=5,6とは異なってく
る。図9のステップ1から4までの結果、図12のY=
8に示す6つの辺データが矢印で接続された順にソート
されて生成される。但し、この時点では、Y=8の6つ
の辺データの3番目と4番目の2つの辺データは新たに
アクティブリストに加わった辺データである(Xc=X
sであることから明らか)のでMODEは「INIT」
に設定されており、5番目と6番目の辺データのMOD
Eは「IN」として設定されている。すなわち、前回の
処理時点ではこれらの辺はソート後の順番iが2N以下
であるからである。なお、図12は、すでにY=10ま
での処理が進行した時点のアクティブリストを説明する
ものであるのでY=8の各辺データのMODE値が異な
って示されている。
【0061】次にY=8のアクティブリストの辺データ
について図10の処理が開始される。まず、ステップ1
0でi=1として最初の辺の処理が実行される。Y=8
の辺データのうち1番目と2番目の辺データ処理は上述
のY=5の辺データ処理と同様であるので説明を省略す
る。3番目と4番目の辺データ処理はステップ12の
「i>2N」の判定がNo、ステップ13の「MODE
?」の判定がINITであり、ステップ16でMODE
=INに設定される。
【0062】Y=8の5番目の辺データは、ステップ1
2の判定「i>2N」がYesとなり、図11に示すス
テップ23に進む。ステップ23の「MODE?」は、
この時点でこれらの辺データのMODEは「IN」であ
るので、ステップ24に進み、YsからYc−1までの
辺データをディスプレイリスト記憶部1に出力する。こ
の場合、図12に示すようにY=8の5番目のYsは6
であり、またYc=8であるので、Y=6〜7の辺デー
タがディスプレイリスト記憶部1に記憶されることにな
る。
【0063】次に、ステップ25において辺データの変
更が実行される。Ys=Yc、Xs=Xc、MODE=
OUTに変更される。この場合、Ys=8、Xs=1
9.9となる。これらの処理がY=8の最後の6番目の
辺データについても同様に実行される。
【0064】次にY=10の4つの辺データについて説
明する。図8の多角形図形から明らかなようにY=10
の座標において2つの辺の始点、終点が発生している。
Y=10のラインにおける図9のステップ1からステッ
プ4において生成されるアクティブリストの辺データは
図8のY=10のライン上に存在するに6つの辺データ
となる。6つの辺データ中、ステップ4においてX座標
値に基づいて昇順にソートされ、処理順が決定される。
このソートによる処理順は図8に示す多角形図形のY=
10のライン上の左側からの順となる。
【0065】Y=10のライン上の1番目の辺について
の図10に示す各ステップの処理は上述のY=6等と同
様であるので省略する。
【0066】Y=10のライン上の左から2番目の辺
は、図8から明らかなようにY=10からY=5へ向か
う下向きベクターである。図10のフローのステップ1
0において、i=2として設定され、このベクターの処
理が開始される。ステップ12において、「i>2N」
の判定がNo、ステップ13において「MODE?」の
判定がINとなり、ステップ17へ進む。ステップ17
で「Ye=Yc」の判定がなされる。この辺のYeは1
0であるのでステップ17の判定はYesとなり、ステ
ップ18に進み、この辺に関する辺データがディスプレ
イリスト1に出力されるとともにこの辺のデータをアク
ティブリストから削除する。
【0067】次にY=10の第3番目の辺の処理が開始
される。第3番目の辺は、図8の多角形図形から明らか
なようにY=8からY=10へ向かう上向きベクターで
ある。この辺についての図10のフローによる処理は上
述の第2番目の辺と同様であり、ステップ12におい
て、「i>2N」の判定がNo、ステップ13において
「MODE?」の判定がINとなり、ステップ17の
「Ye=Yc」の判定がYesとなり、ステップ18に
進み、この辺に関する辺データがディスプレイリスト1
に出力されるとともにこの辺のデータをアクティブリス
トから削除する。
【0068】Y=10のライン上の第4番目の辺は、図
8の多角形図形から明らかなようにY=13からY=8
へ向かう下向きベクターである。この辺の図10のフロ
ーによる処理は、Y=10の第1番目の辺の処理と同様
である。
【0069】Y=10のライン上の第5番目の辺は、図
8の多角形図形から明らかなようにY=21からY=6
へ向かう下向きベクターである。この辺については、図
10のステップ10でi=5の設定が実行され処理が開
始される。ステップ12において、「i>2N」の判定
がYesとなり、図11のフローに進む。図11のステ
ップ23における「MODE?」の判定はOUTであ
り、ステップ27に進み、「Ye=Yc」の判定がなさ
れ、Noの判定により、ステップ29に進んで次の辺の
処理が開始される。
【0070】Y=10のライン上の第6番目の辺は、図
8の多角形図形から明らかなようにY=6からY=13
へ向かう上向きベクターである。この辺は、上述の第5
番目の辺と同様の処理がなされる。ここまでの処理が終
了すると、図12に示すアクティブリストが得られる。
【0071】上述したように、図9〜図11のフローに
示す処理によって多角形を構成する各辺の辺データは、
第1のディスプレイリストおよび第2のディスプレイリ
ストに振り分けられる。
【0072】このような処理の結果、第1のディスプレ
イリスト記憶部54には、2N=4(N=2)個のDD
Aとソート回路で処理可能な部分多角形を表現するディ
スプレイリストが生成される。また第2のディスプレイ
リスト記憶部55には、第1のディスプレイリスト記憶
部54に生成された部分多角形を除いたディスプレイリ
ストが残る。第1のディスプレイリスト記憶部54の結
果が図13に示すものとなり、第2のディスプレイリス
ト記憶部55の結果が図14に示すものとなる。図13
から明らかなように各Y座標において処理される辺の数
は4以下となっており、2N=4(N=2)個のDDA
とソート回路で処理可能な構成となっている。残りの部
分が図14に示す辺およびディスプレイリストとなる。
【0073】このようにして分割された多角形のうち、
第1のディスプレイリスト記憶部54に格納されたディ
スプレイリストがまず、多角形描画部6に出力され、第
2のディスプレイリスト記憶部55に格納されたディス
プレイリストはディスプレイリスト制御部51に戻され
て、次の分割処理の対象となる。もし、入力された多角
形がもともと分割が不要だった場合には、第2のディス
プレイリスト記憶部55は要素の無い状態となり、その
場合にはディスプレイ制御部51は、ショートベクター
生成部4に次の多角形データの入力を要求して続けて処
理を行う。
【0074】尚、ここでは全ての多角形をアクティブリ
スト制御部53で処理するように説明を行ったが、例え
ば辺の数が2N以下の場合のように明らかに分割が不要
な場合などは、処理を省略できる。また、辺の数が2N
を越える場合でも、各辺のY座標の存在範囲をチェック
して処理が必要かどうか(=2Nを越えるところがある
か)を判定することも可能である。このような前判定処
理を行うことで、分割処理を行う対象数を減らし、処理
全体を高速化することができる。
【0075】また、前記の説明では、入力された多角形
の全体を分割処理の対象としたが、図15に示すように
各辺のY座標の存在範囲から各行が何本の水平線で描画
されるかを予め求めておき、2Nを越える部分と越えな
い部分とで多角形を分割し、越える部分のみを分割処理
の対象とする方法も考えられる。この方法では、前記の
方法に比べて出力される多角形の個数が増えるためにデ
ータ量が増加するという欠点があるが、分割処理の範囲
を狭められるため処理速度は向上することが期待され
る。
【0076】図15に示す例は、上記の実施例と同様に
N=2として設定され、2N=4であるので4を超える
部分と越えない部分とで多角形を分割し、越える部分の
みを分割処理の対象とする方法を想定したものである。
【0077】さらに、入力された多角形をディスプレイ
リスト形式のデータ構造に変更した際の、ディスプレイ
リスト中の辺の数を検出し、該検出された辺の数が2N
以上の場合にのみ、多角形分割処理を実行するようにし
てもよい。
【0078】上述した本発明の図形処理装置の実施例の
説明においては、説明を簡単にするため、塗りつぶし規
則は偶奇規則を実行するものとして説明を行った。もし
塗りつぶし規則が非零巻線規則の場合には、各要素のD
irを積算するカウンタを設けて描画線分の両端を構成
する有効な辺とそうでない辺とをチェックし、有効な辺
のみで2N以下となるように分割を行うように図9〜1
1のフローチャートを変更すればよい。
【0079】次に、多角形描画部6の動作について詳細
に説明する。上述の処理により、描画要求された図形/
文字は、各スキャンラインでの描画線分数がN本以下に
制約されたディスプレイリスト形式のデータに変更さ
れ、描画色データなどとともに多角形描画部6に入力さ
れる。多角形描画部6は、この入力をもとにメモリ部7
に多角形を描画する。以下、多角形描画部6の動作を図
16のフローチャートなどを使って説明する。
【0080】初めにステップ51において、処理対象ス
キャンラインを表す変数Ycを、ディスプレイリストの
Y座標の最小値に設定する。
【0081】次にステップ52において、DDA部61
を用いて、現スキャンラインと各辺との交点のX座標値
を計算してXcを更新する。各辺の交点のX座標値Xc
は、1回前のXcを使って{Xc+Dx}で求めること
ができる。もし、ここでどの辺もDDA部61に設定さ
れていない場合には、ここでは何も行われない。
【0082】次にステップ53において、入力されたデ
ィスプレイリスト中にYcを開始点とする辺があれば、
それを空いているDDA部にセットする。DDA部は、
現在のスキャンラインとの交点X座標Xcと、辺の終点
Y座標Yeと、Y座標の+1増加に対するX座標の変化
量Dxとを持ち、Xc=Xs,Ye=Ye,Dx=Dx
としてDDA部に代入される。
【0083】次にステップ54において、辺が設定され
ているDDA部からXcの値を全てソート部62に出力
し、ソート部62はこれを昇順になるようにソートし、
メモリ描画部63に出力する。
【0084】次にステップ55において、メモリ描画部
63でソート済みのX座標値を先頭から2個づつ取り出
して対にし、その対間の水平線分に対応するメモリ部7
の領域を塗りつぶす。尚、各Xcは小数で出力されるが
メモリ部への描画は整数座標の必要があるので、実際の
塗りつぶしは例えばXcを切捨て/切上げ/四捨五入な
どした座標値を使って行われる。また塗りつぶしの色
は、多角形分割部5から渡された描画色データで指定さ
れた色が用いられる。
【0085】次にステップ57において、Ycを1だけ
増加させる。次にステップ58において、このYc値が
多角形の存在範囲のY座標最大値Ymaxより大きいか
どうかをチェックし、もし大きければ処理を終了し、そ
うでない場合にはステップ52に戻ってY=Ycの処理
を継続する。
【0086】図17に、このような図16に示すフロー
に従って、図13のディスプレイリストを処理した場合
の、Yc=10からYc=11にかけての動作の説明図
を示す。図のように、各辺はDDA部61によりスキャ
ンラインとの交点を求められ、ソートされ、各対の間を
塗りつぶされる。このような処理をYminからYma
xまで行うことで、入力されたディスプレイリストが表
現する多角形が、メモリ部7上に描画される。描画手段
は、多角形図形を形成する各描画線分の始点および終点
の間のランデータを出力するラン生成手段を有し、ラン
生成手段によって生成されるランデータに従って描画処
理を行うことができる。
【0087】尚、ここでも説明を簡単にするため、塗り
つぶし規則は偶奇規則を前提に説明を行った。もし塗り
つぶし規則が非零巻線規則の場合には、ソート後のデー
タを先頭から2個づつ対にする代わりに、各要素のDi
rを積算するカウンタを設けてカウンタ値が0でなくな
る辺と0になる辺とを対にして描画するようにフローを
変更すればよい。
【0088】
【発明の効果】以上説明したように本発明の図形処理装
置では、図形やアウトラインデータで表現された文字を
描画する図形処理装置において、2N個(Nは1以上の
自然数)のDDA手段と、2N個の入力をソート可能な
ソート手段とを有し、入力された任意の多角形を各スキ
ャンラインでの描画線分数がN以下となる複数の多角形
に分割する多角形分割手段を持ち、入力された多角形を
図形処理装置の有する2N個のDDAで一括処理可能な
線分の集合に分割することで、分割図形をなるべく小さ
な領域で管理/記憶でき、高速に処理可能な図形処理装
置を実現することが可能になる。
【図面の簡単な説明】
【図1】 本発明の図形処理装置の一実施例を示すブロ
ック図である。
【図2】 既存の図形処理装置の一例を示すブロック図
である。
【図3】 線図形の塗りつぶし図形への変換を説明する
図である。
【図4】 曲線の微小直線での近似を説明する図であ
る。
【図5】 図形処理装置において処理される各種の多角
形を示す図である。
【図6】 ベジエ曲線の再帰的な分割を説明する図であ
る。
【図7】 多角形分割部の詳細構成の一実施例を示すブ
ロック図である。
【図8】 ディスプレイリストの構成を説明する図であ
る。
【図9】 多角形分割処理の手順を示すフローチャート
を示す図である。
【図10】 多角形分割処理の手順を示すフローチャー
トの続きを示す図である。
【図11】 多角形分割処理の手順を示すフローチャー
トの続きを示す図である。
【図12】 アクティブリストの構成を説明する図であ
る。
【図13】 分割処理後に出力されるディスプレイリス
トを説明する図である。
【図14】 分割処理後に残されるディスプレイリスト
を説明する図である。
【図15】 多角形とディスプレイリストの分割との対
応を説明する図である。
【図16】 多角形描画処理の手順を示すフローチャー
トを示す図である。
【図17】 多角形描画処理を説明する図である。
【符号の説明】
1 命令解釈部 2 ベクターデータ生成部 3 フォント管理部 4 ショートベクター生成部 5 多角形分割部 6 多角形描画部 7 メモリ部 8 出力デバイス 51 ディスプレイリスト制御部 52 交点算出部 53 アクティブリスト制御部 54 ディスプレイリスト記憶部1 55 ディスプレイリスト記憶部2 61 DDA部 62 ソート部 63 メモリ描画部 511 ディスプレイリスト 512 チェック配列

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 図形の描画処理を行う図形処理装置にお
    いて、 XY座表面上に展開した多角形データを分割する多角形
    分割手段であり、該多角形データの展開されたXY座表
    面の各Y座標ライン上において任意のX座標を有する多
    角形データ構成線分の数がN(Nは1以上の自然数)以
    下となるように多角形分割処理を実行し1以上の多角形
    構成線分データの集合を生成する多角形分割手段と、 前記多角形分割手段によって生成された多角形構成線分
    データの集合を1単位とするデータを入力とし、該入力
    されたデータ単位ごとに、図形出力デバイスの各スキャ
    ンラインと前記入力データに含まれる前記多角形構成線
    分の交点を算出する2N個のDDA手段と、 前記DDA手段から出力された交点データをソートする
    ソート手段と、 前記ソート手段によってソートされたデータから前記多
    角形図形を形成する各描画線分の始点および終点の対を
    検出し、該検出された始点および終点間のメモリ領域を
    塗りつぶすメモリ描画手段とを有することを特徴とする
    図形処理装置。
  2. 【請求項2】 前記多角形データの展開されるXY座表
    面のY軸は前記図形出力デバイスのスキャンラインと平
    行なラインとして構成されることを特徴とする請求項1
    記載の図形処理装置。
  3. 【請求項3】 前記メモリ描画手段は、前記多角形図形
    を形成する各描画線分の始点および終点の間のランデー
    タを出力するラン生成手段を有することを特徴とする請
    求項1または2記載の図形処理装置。
  4. 【請求項4】 前記多角形分割手段は、多角形を構成す
    る各辺の始点、終点、および該多角形を構成する他の辺
    との交差点を検出し、該検出された始点、終点、または
    交差点の存在するY座標についてのみ、前記多角形分割
    処理を実行することを特徴とする請求項1乃至3いずれ
    かに記載の図形処理装置。
  5. 【請求項5】 前記多角形分割手段は、多角形を構成す
    る各辺のX軸およびY軸方向の存在範囲を検出し、該検
    出された各辺の存在範囲の重複の有無により交差点の有
    無を判定する手段を有することを特徴とする請求項4に
    記載の図形処理装置。
  6. 【請求項6】 前記多角形分割手段は、多角形の展開さ
    れるXY座表面における各Y座標ライン上の前記多角形
    構成線分の数を検出し、該検出線分の数がN本を越える
    Y座標ライン部分についてのみ、前記多角形分割処理を
    実行することを特徴とする請求項1乃至3いずれかに記
    載の図形処理装置。
  7. 【請求項7】 前記多角形分割手段は、入力された多角
    形をディスプレイリスト形式のデータ構造に変更した際
    の、該ディスプレイリスト中の辺の数を検出し、該検出
    された辺の数が2N以上の場合にのみ、前記多角形分割
    処理を実行することを特徴とする請求項1乃至3いずれ
    かに記載の図形処理装置。
JP30240397A 1997-11-05 1997-11-05 図形処理装置 Expired - Fee Related JP3536894B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30240397A JP3536894B2 (ja) 1997-11-05 1997-11-05 図形処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30240397A JP3536894B2 (ja) 1997-11-05 1997-11-05 図形処理装置

Publications (2)

Publication Number Publication Date
JPH11144066A true JPH11144066A (ja) 1999-05-28
JP3536894B2 JP3536894B2 (ja) 2004-06-14

Family

ID=17908504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30240397A Expired - Fee Related JP3536894B2 (ja) 1997-11-05 1997-11-05 図形処理装置

Country Status (1)

Country Link
JP (1) JP3536894B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6466229B1 (en) 1999-01-26 2002-10-15 Fuji Xerox Co., Ltd. Graphics processing apparatus and graphics processing method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6466229B1 (en) 1999-01-26 2002-10-15 Fuji Xerox Co., Ltd. Graphics processing apparatus and graphics processing method

Also Published As

Publication number Publication date
JP3536894B2 (ja) 2004-06-14

Similar Documents

Publication Publication Date Title
US6466229B1 (en) Graphics processing apparatus and graphics processing method
US5241653A (en) Apparatus and method for adjusting and displaying scaled, rasterized characters
EP0356103B1 (en) Scan-conversion process and processor
JP3333297B2 (ja) ラスタ出力文字の太さを改変する方法
US4779081A (en) Graphics in display unit
US8723884B2 (en) Scan converting a set of vector edges to a set of pixel aligned edges
US5524198A (en) Character or graphic processing method and apparatus
US5388166A (en) Image drawing apparatus
JP3536894B2 (ja) 図形処理装置
JP3606006B2 (ja) 画像形成装置およびグラデーション描画方法
JP3266905B2 (ja) 図形処理装置
JP2002015329A (ja) 画像処理装置および画像処理方法
JP3843794B2 (ja) 図形処理装置
JP3146771B2 (ja) フォントラスタライズ装置およびその方法
US20020118124A1 (en) Highly compressed and scaleable outline font engine
JP2000099750A (ja) 画像処理装置及び画像処理方法
JP3823730B2 (ja) 画像処理装置及びその方法
JP2001307115A (ja) 画像処理装置および画像処理方法
JP3089906B2 (ja) 描画装置
JPH08254973A (ja) 文字出力装置およびその方法
JP2001109454A (ja) 文字処理装置
JP2001034772A (ja) 図形処理装置および図形処理方法
JP2001092981A (ja) 画像処理装置および画像処理方法
JPH08101675A (ja) フォント展開装置
JP2002133431A (ja) 画像処理装置及び画像処理方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031224

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040309

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080326

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090326

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100326

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees