JP3413829B2 - 描画処理装置および方法 - Google Patents

描画処理装置および方法

Info

Publication number
JP3413829B2
JP3413829B2 JP31743197A JP31743197A JP3413829B2 JP 3413829 B2 JP3413829 B2 JP 3413829B2 JP 31743197 A JP31743197 A JP 31743197A JP 31743197 A JP31743197 A JP 31743197A JP 3413829 B2 JP3413829 B2 JP 3413829B2
Authority
JP
Japan
Prior art keywords
command
scan line
data
clip
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.)
Expired - Fee Related
Application number
JP31743197A
Other languages
English (en)
Other versions
JPH11147344A (ja
Inventor
雅夫 森田
千登 林
彰司 坂本
浩史 川本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP31743197A priority Critical patent/JP3413829B2/ja
Publication of JPH11147344A publication Critical patent/JPH11147344A/ja
Application granted granted Critical
Publication of JP3413829B2 publication Critical patent/JP3413829B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Record Information Processing For Printing (AREA)
  • Image Generation (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は描画データを中間デ
ータ形式に変換した後スキャンコンバージョンでラスタ
ライズデータを出力する描画処理技術に関し、とくに、
並列処理により描画オブジェクトを中間データ形式に変
換し、同様に並列処理により中間データ形式の描画デー
タをスキャンコンバージョンし、このスキャンコンバー
ジョンの際に、複数の任意形状のクリップ処理と塗りつ
ぶし処理とを同時に行なうようにしたものである。
【0002】
【従来の技術】コンピュータ・グラフィックス(C
G)、あるいはデスクトップ・パブリッシング(DT
P)等における描画処理装置は、入力された図形デー
タ、文字データ、画像データ等を、中間データ形式に変
換し、この後、最終出力形態のラスタ生成を行なう。
【0003】近年、CGやDTPの複雑化により、処理
時間が長くかかってしまうという問題がある。そこで、
並列処理を導入して、処理時間を短くする手法が採用さ
れてきている。
【0004】逐次実行型のページ記述言語(PDL)の
典型的な処理は、入力を解釈して描画命令を特定し、描
画命令を実行して図形を描画し、そして図形を蓄積す
る、という動作を1ページ分繰り返すことで行われる。
この処理を並列に行うには、入力を解釈する処理におい
て入力を適当な単位に分割し、これら分割単位を、描画
動作を行う複数のプロセッサに割り当てて並列に処理さ
せ、それらの処理結果を蓄積する際に1ページにまとめ
ることが必要となる。このような処理を行うシステム
が、たとえば特公平8−10465号公報に提案されて
いる。このシステムは、入力データストリームをブロッ
クに分割し、ブロックの内容を解釈して中間形式データ
に変換し、中間形式データからラスタ・ピクセルマップ
を生成し、そのラスタ・ピクセルマップをソートして合
成することでページ記述言語からラスタライズデータを
生成するものであって、解釈処理からソート処理までの
処理を並列に動作する複数のパイプラインで実行するも
のである。
【0005】しかし、並列処理を導入するためには、現
状の逐次処理での処理方法をそのまま適用しただけで
は、高速化できない。これは、並列処理特有の分割処
理オーバヘッド、分割した処理の処理時間のばらつき
による処理待ちオーバヘッド、ロック待ちオーバヘッ
ドにより、CPUの利用効率が低くなるためである。
【0006】また、並列処理を適用する場合には、処理
全体を並列化しないかぎり、高いCPUの利用効率を引
き出すことができない。これは、逐次処理部分が残って
いると、逐次処理の間は、残りのCPUが待っているた
めである。
【0007】描画処理は、機能別に分解すると、描画デ
ータの中間データ化、中間データによる塗りつぶし処
理、重なり処理からなる。したがって、どのような形式
を中間データに採用するかで処理方法が異なってくる。
また、PDLの処理は、重なり処理のために描画順序系
列のデータを位置に基づく領域単位のデータに変換する
必要があるため、必ずページイメージを反映した蓄積が
必要になる。
【0008】
【発明が解決しようとする課題】特公平8−10465
号公報に示された方法では、システムへの入力として与
えられるデータストリームを状態独立なブロックに分割
し、分割されたそれぞれのブロックを並列に解釈実行す
ることで高速な処理を実現しようとしている。しかしな
がら、この方法では次に示す二つの理由により現実的に
システムを構築することが難しい。すなわち、第1の理
由は入力データストリームに現れるページ記述言語表現
を簡単な記号処理で状態独立なブロックに分割すること
は難しい点である。ページ記述言語の描画命令は多様な
属性値を参照してその動作を行う。そして、これらの属
性値は言語処理系の状態としてモデル化されている。こ
のため、状態独立なブロックを識別するためには言語処
理系の状態を予測する必要がある。記号処理だけでこの
動作を実現することは難しい。第2の理由は、後段のパ
イプラインに対する負荷が考慮されておらず、分割され
たブロックを処理する負荷が均等に分散されない場合が
ある点である。1ページ分の印刷可能な画像データを生
成するには、最も時間のかかるパイプラインの処理を待
たなければならないため、負荷が均等でなければ待ち時
間が大きくなり並列処理の効果が損われるという問題点
があった。
【0009】また、従来の描画処理方法において、一般
的に用いられているページメモリまたはバンドメモリを
用いて上書き処理を行なう方式では、上書きの順序を保
証するために描画データの入力順で上書きを行なう必要
があり、描画データの単位で並列に実行したとしても、
最も処理の遅い描画データを待たなければならず、並列
処理の効果が損なわれるという問題があった。この問題
は、重なり処理を最終形態であるラスタの状態で行なう
ためである。
【0010】本発明は、上述の従来の描画処理装置が有
している問題を解決するためになされたものであって、
その目的とするところは、並列処理に適した処理構成を
用いて、高速な処理を提供することにある。
【0011】
【課題を解決するための手段】本発明によれば、上記目
的は、少なくとも、文字、図形または画像のいずれかの
記述命令と前記記述命令に対するクリップ命令とを描画
命令として含み、所定の記述言語で記載されている描画
データを、スキャンライン毎のラスタライズデータとし
て出力する描画処理装置において、前記描画データを入
力する描画データ入力手段と、並列に動作し、それぞ
れ、前記描画命令の外形を、前記スキャンラインとの関
係のもとにベクターに表現する複数の描画データ処理手
段と、前記描画命令の前記描画データ入力手段での入力
順序に基づく順序情報、および、前記描画命令のうち前
記記述命令と前記クリップ命令との対応情報を、前記描
画命令との関係のもとに抽出する手段と、前記描画命令
の前記ベクターを所定数の前記スキャンライン毎に分配
する手段と、前記分配手段で分配された前記ベクターの
前記描画命令が有する前記順序情報および前記対応情報
を、前記分配手段で分配された前記ベクターに対応付け
る手段と、並列に動作し、それぞれ、前記分配手段で分
配された前記描画命令の前記ベクターと前記ベクターに
対応付けられた前記順序情報および前記対応情報とを、
直接かつ前記スキャンラインに沿った一走査で最終画像
に変換する複数のスキャンライン処理手段とを設けるこ
とによって達成される。
【0012】本処理装置の特徴は、二種類の並列処理を
組み合せ、各並列処理が高い効率で動作することであ
る。すなわち、描画オブジェクト間の順序依存関係を残
したまま描画オブジェクトを並列に処理し、中間データ
形式でページ蓄積をおこなう。そして、ページ蓄積した
中間データ形式で、スキャンラインを最少単位とする領
域に分割して領域単位ごとに依存関係を解決しながら並
列処理を行なうことである。
【0013】なお、本発明は方法としても実現できる。
また、少なくともその一部をコンピュータプログラム製
品として実現できる。
【0014】
【発明の実施の形態】以下、本発明の実施例の描画処理
装置について図面を用いて詳細に説明する。
【0015】[全体の構成]はじめに、本実施例の描画
処理装置の構成を図1に示すブロック図を用いて説明す
る。図1において、本実施例の描画処理装置は、言語パ
ーザ11、データオブジェクト分配処理部12、複数の
描画オブジェクト処理部13、ディスプレイリストバッ
ファ(DLバッファ)14、描画属性表15、スキャン
ライン分配処理部16、複数のスキャンライン処理部1
7、ランレングス出力処理部18を含んで構成されてい
る。
【0016】この構成において、言語パーザ11がPD
Lなどの描画データを受け取る。言語パーザ11は、受
け取った描画データを内部表現形式であるデータオブジ
ェクトに変換し、データオブジェクト分配処理部12に
渡す。データオブジェクト分配処理部12は、データオ
ブジェクトのうち資源オブジェクトを資源表に登録して
から、データオブジェクトの描画オブジェクトを並列に
処理する単位にまとめ、描画オブジェクト処理部13に
渡す。描画オブジェクト処理部13は、描画オブジェク
トの外形情報であるディスプレイリスト(DL)を作成
し、DLバッファ14に登録し、描画オブジェクトの属
性情報を描画属性表15に登録する。描画オブジェクト
処理部13は、並列に動作する。
【0017】上記処理を繰り返し、一ページ分のデータ
オブジェクトを処理し終わると、次に、スキャンライン
分配処理部16がDLバッファ14と描画属性表15の
データを並列に処理する単位にまとめ、スキャンライン
処理部17に渡す。スキャンライン処理部17は渡され
たデータを用いて、依存関係を決定しながら、塗りつぶ
し、クリップ、重なり処理を行い、ランレングス形式デ
ータを出力する。スキャンライン処理部17は並列に動
作する。ランレングス出力処理部18は、スキャンライ
ン処理部17が出力するデータを受け取り、出力媒体上
へランレングスデータを出力する。
【0018】このように、本描画処理装置は、2つのス
テップから構成される。すなわち、描画オブジェクトを
並列に処理する第一のステップと、スキャンライン単位
で描画処理を行なう第二のステップである。
【0019】以下では、データオブジェクトおよびデー
タオブジェクトを生成する言語パーザについて説明し、
その後、描画処理装置の2つのステップについて説明す
る。
【0020】[データオブジェクト]データオブジェク
トの例を図2に示す。図2では、データオブジェクトと
して7種類挙げている。7種類とは、座標値のアフィン
変換を指定する『行列』と、文字列描画で参照される
『フォント』と、クリップ形状を指定する『クリップ』
と、図形の外形形状を指定しその内部を塗りつぶす『塗
り』と、太さを持ったペンで線分上をトレースする『軌
跡』と、指定したフォントで文字列を描画する『文字』
と、画素列を指定する『イメージ』である。これらの7
種類のデータオブジェクトは、大きく2種類のカテゴリ
に分類できる。2種類とは、資源オブジェクト(『行
列』、『フォント』、『クリップ』)と、描画オブジェ
クト(『クリップ』、『塗り』、『軌跡』、『文字』、
『イメージ』)である。資源オブジェクトは主として描
画オブジェクト処理の段階で消費され、スキャンライン
描画では使用されない。描画データオブジェクトは、形
状または色を持ち、描画オブジェクト処理の段階でDL
と属性表に登録され、スキャンライン描画で使用され
る。『クリップ』は、特殊なオブジェクトで、両方のカ
テゴリに属す。
【0021】次に、各データオブジェクトの例を構成す
るフィールドを説明する。なお、フィールド名は「」で
表現する。
【0022】『行列』は、他のオブジェクトで参照され
る自分自身の識別子である「MID」と、データオブジ
ェクト種別を表す「MATRIX」と、アフィン変換行
列の値である「行列値」から構成される。
【0023】『フォント』は、他のオブジェクトから参
照される自分自身の識別子である「FID」と、データ
オブジェクト種別を表す「FONT」と、フォントの形
状を決定するために用いる「フォント名」と、フォント
の大きさを指定する「行列値」から構成される。
【0024】『クリップ』は、描画オブジェクトから参
照される自分自身の識別子である「CID」と、データ
オブジェクト種別を表す「CLIP」と、クリップ枠の
アフィン変換行列識別子「MID」と、このクリップの
親クリップの識別子「CID」と、クリップ枠の内部・
外部判定に用いる規則「判定規則」と、図形の形状とペ
ージ内での位置指定する「パス」で構成される。クリッ
プ自身にも「CID」があるのは、一つのクリップオブ
ジェクトが指定するのは単一の形状であり、複数の形状
からなるクリップを表現するために用いるためである。
すなわち、クリップ同士の依存関係(親子関係)を表現
している。
【0025】以上が資源オブジェクトであるが、資源オ
ブジェクトはオブジェクトの種類ごとに独自の識別子空
間を持つ。それに対して、描画オブジェクトは、描画オ
ブジェクトカテゴリで単一の識別子空間を持つ。これ
は、描画オブジェクトの上下関係(重なり判定に用い
る)を、描画オブジェクト識別子を用いて判定するため
である。すなわち、描画の順序を描画オブジェクト識別
子が表現しているものとする。
【0026】『塗り』は、描画オブジェクト識別子であ
る「ID」と、描画オブジェクトの種類(描画オブジェ
クト種別)を示す「FILL」、描画オブジェクトのア
フィン変換行列識別子「MID」と、描画オブジェクト
が影響を受けるクリップの識別子「CID」と、描画オ
ブジェクトの内部をどのように彩色するかを表現する識
別子または色値である「色」と、内部・外部判定に用い
る規則「判定規則」と、図形の形状とページ内での位置
指定する「パス」で構成される。
【0027】『軌跡』は、描画オブジェクト識別子であ
る「ID」と、描画オブジェクト種別を示す「STRO
KE」、描画オブジェクトのアフィン変換行列識別子
「MID」と、描画オブジェクトが影響を受けるクリッ
プの識別子「CID」と、描画オブジェクトの内部をど
のように彩色するかを表現する識別子または色値である
「色」と、トレースする線の太さを指定する「線幅」
と、線分と線分の接続する点においてどのような形状を
用いるかを指定する「接続指定」と、線分の開端点にお
いてどのような形状を用いるかを指定する「端点指定」
と、図形の形状とページ内での位置指定する「パス」で
構成される。
【0028】『文字』は、描画オブジェクト識別子であ
る「ID」と、描画オブジェクト種別を示す「TEX
T」、描画オブジェクトのアフィン変換行列識別子「M
ID」と、描画オブジェクトが影響を受けるクリップの
識別子「CID」と、描画オブジェクトの内部をどのよ
うに彩色するかを表現する識別子または色値である
「色」と、フォント資源オブジェクト識別子「FID」
と、描画オブジェクトのページ内での位置を指定する
「座標値」と、描画する文字のコード体系指定と文字コ
ードで構成されるコード列「文字列」で構成される。
【0029】『イメージ』は、描画オブジェクト識別子
である「ID」と、描画オブジェクト種別を示す「IM
AGE」、描画オブジェクトのアフィン変換行列識別子
「MID」と、描画オブジェクトが影響を受けるクリッ
プの識別子「CID」と、描画オブジェクトのページ内
での位置を指定する「座標値」と、描画オブジェクトの
大きさを指定する「幅」「高さ」と、画素の並びの順序
指定と実際の画素値を持っている「画素列」で構成され
る。
【0030】ここで、『塗り』、『軌跡』、『クリッ
プ』に存在するフィールド「パス」とは、図形の形状と
ページ内での位置指定するもので、直線、円弧、ベジェ
曲線などの形状指定識別子と座標値列から構成されるも
のである。
【0031】また、『塗り』と『クリップ』に存在する
判定規則とは、図形を表す領域の内部・外部判定に用い
る規則のことである。判定規則の種類は、ノンゼロ(N
Z)ワインディング規則と奇偶規則が代表的である。こ
れらはいずれも複数の外形(パス)で形成された一つの
図形の内部を判定する際に用いられる規則である。NZ
ワインディング規則及び奇偶規則による図形の内部判定
方法を、図3を用いて説明する。図3(a)に示すNZ
ワインディング規則は、図形22を構成する外形がスキ
ャンライン(走査線)20と交差する際の向きを考慮し
たものである。図3(a)では外形がスキャンライン2
0を上向きに交差する場合を正、下向きに交差する場合
を負としている。走査方向に向かって正の交差であれば
1を加算し、負の交差であれば1を減算することにし、
合計値が0でなくなった点から0に戻った点までが内部
であると判定する。図3(b)に示す奇偶規則は、スキ
ャンライン20と交差するパスの個数をカウントして、
奇数の点から偶数の点までを内部と判定することにして
いる。このように、スキャンライン上でパスと交差する
ごとに、判定規則を用いて内外判定を行ない、内部と判
定された時に彩色するまたはクリップする権利を得るこ
とになる。この権利を行使するかどうかは、第二ステッ
プで説明するスキャンライン処理において、他の描画オ
ブジェクトとの依存関係、重なりの依存関係により決定
されるため、第二ステップで説明する。
【0032】『軌跡』に存在する「接続指定」は図4に
示すような線分と線分の接続する点において、どのよう
な形状を用いるかを指定する。「端点指定」は図5に示
すような線分の開端点において、どのような形状を用い
るかを指定する。
【0033】[言語パーザ]次に、以上のデータオブジ
ェクトを生成する言語パーザ11について詳細に説明す
る。
【0034】言語パーザ11は、受け取った入力画像デ
ータから、データオブジェクトとして描画オブジェクト
(『クリップ』、『塗り』、『軌跡』、『文字』、『イ
メージ』)と資源オブジェクト(『行列』、『フォン
ト』、『クリップ』)を出力する。
【0035】入力描画データは、2種類に大きく分類で
きる。すなわち、描画指示を表すデータと、属性変更の
データである。描画指示を表すデータは、図2に示した
描画オブジェクトを生成するために用いる。また、属性
変更のデータは、パーザ内部の属性表を変更するために
用いる(変換行列、色、対応するクリップ、フォントデ
ータなど)。
【0036】言語パーザ11は、現在の属性値を保存す
る属性表と、属性表内に資源オブジェクトを出力したか
どうかを示すフラグと、各資源オブジェクトおよび描画
オブジェクトに対応するIDカウンタを持っている。
【0037】図6は言語パーザ11の動作を示してい
る。図6において、言語パーザの処理が始まると、描画
データが残っているかどうかが判定される(S11)。
描画データが残っている場合には構文解析処理が行われ
る(S12)。
【0038】構文解析処理の結果、描画指示のデータで
あるか、属性変更の指示であるかが判別される(S1
3)。描画指示のデータである場合、現在の属性表を参
照し、この描画指示に対応する描画オブジェクトを作成
するために必要となる属性を取得する(S14)。取得
した属性のうち、描画指示オブジェクトに先立って出力
すべき属性について、出力したかどうかのフラグをチェ
ックし、まだ出力していなければ属性を表すデータオブ
ジェクトを形成し出力する。その際、出力した属性のI
Dカウンタをインクリメント(1を加算)し、出力フラ
グをセットする(S15)。すでに出力してあれば、属
性値の出力は行わない。
【0039】つぎに、描画指示のデータと取得した属性
およびIDカウンタを用いて、描画指示に対応するデー
タオブジェクトを形成し出力する。その際、出力した描
画指示のIDカウンタをインクリメントする(S1
6)。
【0040】構文解析の結果、属性変更の指示である場
合には、パーザが保持する属性表内の対応する属性を変
更し、対応する資源オブジェクトの出力フラグをリセッ
トする(S13、S17)。
【0041】描画データがなくなるまで以上の処理を繰
り返す(S11、S19)。
【0042】つぎにPostscript(米国Ado
be Systems社の商標)で記述された具体的な
入力描画データにそって言語パーザ11の動作を詳細に
説明する。ここでは、図7に示した描画データを図2に
示したオブジェクトの形式に出力する例を説明する。な
お、ページの大きさは、幅600、高さ840であると
する。長さの単位は省略する。
【0043】行番号1はコメントである。
【0044】行番号2で、ページに対する座標変換が指
定されている。ここでは、左下にある原点を左上に移動
しY字句の値を下向きに正方向としている。パーザ11
は属性表に座標変換行列を登録し、出力フラグをリセッ
トする。
【0045】行番号3で、矩形クリップ(C1)が指定
されている。ここでは、(10,10)の点から幅57
0、高さ820の矩形をクリップ枠として指定してい
る。パーザ11は、クリップのオブジェクトを出力する
ために、属性表から座標変換行列を取得し出力する。こ
の時に座標変換行列のIDをインクリメントし、出力フ
ラグをセットする。そして、クリップ自身のオブジェク
トを出力し、クリップのIDをインクリメントする。
【0046】行番号4で、色(R:G:B=1:0:
0)が指定されている。パーザ11は属性表に色を変換
する。
【0047】行番号5で、矩形の塗りつぶしが指定され
ている。ここでは、(50,720)の点から幅48
0、高さ100の矩形で塗るつぶす指示である。パーザ
11は、塗りつぶしFILLに必要な属性値を取得す
る。変換行列M1とクリップC1はすでに出力されてい
るので、塗りつぶし自身のオブジェクトを出力し、描画
指示のIDをインクリメントする。
【0048】行番号6で、内部に属性表の状態を保存す
ることが指示されている。パーザ11は、属性表のコピ
ーを内部に保持する。
【0049】行番号7で、矩形クリップ(C2)が指定
されている。ここでは、(50,400)の点から幅4
80、高さ310の矩形をクリップ枠として指定してい
る。パーザ11は、クリップのオブジェクトを出力する
ために、属性表から座標変換行列を取得するが、M1は
すでに出力されているので、クリップ自身のオブジェク
トを出力し、クリップのIDをインクリメントする。
【0050】行番号8で、色(R:G:B=0:1:
0)が指定されている。パーザ11は属性表に色を登録
する。
【0051】行番号9で、矩形の塗りつぶしが指定され
ている。ここでは、(80,410)の点から幅25
0、高さ200の矩形で塗りつぶす指示である。パーザ
11は、塗りつぶしFILLに必要な属性値を取得す
る。変換行列M1とクリップC2はすでに出力されてい
るので、塗りつぶし自身のオブジェクトを出力し、描画
指示のIDをインクリメントする。
【0052】行番号10で、色(R:G:B=0:0:
1)が指定されている。パーザ11は属性表に色を登録
する。
【0053】行番号11−12で、フォントデータの登
録が指定されている。ここでは、フォント名Helve
tica、フォント行列[50 0 0 −50 0
0]が指定されている。パーザ11は、属性表にフォン
トデータを登録する。
【0054】行番号13で、描画開始点を(120,6
70)に移動することが指定されている。パーザ11
は、属性表に描画開始点を登録する。
【0055】行番号14で、文字列Stringの描画
が指定されている。パーザ11は、文字描画に必要な属
性値を取得する。変換行列M1とクリップC2はすでに
出力されているので、塗りつぶし自身のオブジェクトを
出力し、描画指示のIDをインクリメントする。
【0056】行番号15で、矩形クリップ(C3)が指
定されている。ここでは、(370,400)の点から
幅140、高さ210の矩形をクリップ枠として指定し
ている。パーザ11は、クリップのオブジェクトを出力
するために、属性表から座標変換行列を取得するが、変
換行列M1はすでに出力されているので、クリップ自身
のオブジェクトを出力し、クリップのIDをインクリメ
ントする。
【0057】行番号16で、色(C:M:Y:K=1:
0:0:0)を指定されている。パーザ11は属性表に
色を登録する。
【0058】行番号17で、矩形の塗りつぶしが指定さ
れている。ここでは、(370,500)の点から幅1
40、高さ80の矩形で塗りつぶす指示である。パーザ
11は、塗りつぶしFILLに必要な属性値を取得す
る。変換行列M1とクリップC3はすでに出力されてい
るので、塗りつぶし自身のオブジェクトを出力し、描画
指示のIDをインクリメントする。
【0059】行番号18で、内部に保持している属性表
の状態に回復することが指示されている。パーザ11
は、属性表のコピーから属性表の回復を行う。
【0060】行番号19で、色(C:M:Y:K=0:
1:0:0)が指示されている。パーザ11は属性表に
色を登録する。
【0061】行番号20で、矩形の塗りつぶしが指定さ
れている。ここでは、(360,620)の点から幅2
20、高さ80の矩形で塗りつぶす指示である。パーザ
11は、塗りつぶしFILLに必要な属性値を取得す
る。変換行列M1とクリップC1はすでに出力されてい
るので、塗りつぶし自身のオブジェクトを出力し、描画
指示のIDをインクリメントする。
【0062】行番号21で、内部に属性表の状態を保存
することが指示されている。パーザ11は、属性表のコ
ピーを内部に保持する。
【0063】行番号22で、矩形クリップ(C4)が指
定されている。ここでは、(50,20)の点から幅4
80、高さ370の矩形をクリップ枠として指定してい
る。パーザ11は、クリップのオブジェクトを出力する
ために、属性表から座標変換行列を取得するが、変換行
列M1はすでに出力されているので、クリップ自身のオ
ブジェクトを出力し、クリップのIDをインクリメント
する。
【0064】行番号23で、内部に属性表の状態を保存
することが指示されている。パーザ11は、属性表のコ
ピーを内部に保持する。
【0065】行番号24で、原点を(100,20)に
移動することが指示されている。パーザ11は属性表の
座標変換行列を変更し、出力フラグをリセットする。
【0066】行番号25で、拡大/縮小率を縦方向37
0倍、y個方向370倍に設定することが指示されてい
る。パーザ11は属性表の座標変換行列を変更し、出力
フラグをリセットする。
【0067】行番号26−28で、画像の描画が指示さ
れている。この例では、画像データの幅5、高さ5、画
素ビット数8、画素データの読み出し順が左から右、上
から下へスキャンされることを指定している。パーザ1
1は、イメージのオブジェクトを出力するために属性表
から座標変換行列を取得し出力(M2)する。この時に
座標変換行列のIDをインクリメントし、出力フラグを
セットする。そして、イメージ自身のオブジェクトを出
力し、描画指示のIDをインクリメントする。
【0068】行番号29で、内部に保持している属性表
の状態に回復することが指示されている。パーザ11
は、属性表のコピーから属性表の回復を行う。
【0069】行番号30で、内部に保持している属性表
の状態に回復することが指示されている。パーザ11
は、属性表のコピーから属性表の回復を行う。
【0070】行番号31で、1ページのデータの終了に
応じて、紙の出力が指示されている。パーザ11は1ペ
ージのデータが終了したことを図示していない全体制御
部に通知する。
【0071】[第一ステップ]次に、各ステップごとに
処理の流れを説明する。
【0072】第一のステップの流れを、図8を用いて説
明する。まず、動作の概要から説明する。データオブジ
ェクト分配処理部12は、言語パーザ11から渡される
データオブジェクト列の種類(資源オブジェクトか描画
オブジェクトか)を判別し、資源オブジェクトを資源表
に登録し、他方、描画オブジェクトについては、描画オ
ブジェクトを描画オブジェクト処理部13に渡すため、
描画オブジェクト処理部13からの描画オブジェクト取
得要求を待つ。各描画オブジェクト処理部13は、図示
しない全体制御部から起動され、データオブジェクト分
配処理部12に取得要求を発行し、描画オブジェクト列
が割り当てられるのを待つ。描画オブジェクト処理部1
3に描画オブジェクト列が割り当てられると、描画オブ
ジェクトの種別に従い、外形情報はディスプレイリスト
に変換し、DLバッファ14に登録する。属性情報は、
描画属性表15に登録する。この処理を一ページ分の描
画オブジェクトがなくなるまで続ける。
【0073】次に、各ブロックごとに説明する。まず、
入力データが言語パーザ11に渡されると、図2で説明
した内部表現形式であるデータオブジェクト(列)が生
成される。言語パーザ11からは、データオブジェクト
が少なくとも一つ存在するデータオブジェクト列が出力
される。
【0074】データオブジェクト分配処理部12は、言
語パーザ11から出力されるデータオブジェクト列の受
け取り、受け取ったデータオブジェクトを判別し、判別
結果により資源オブジェクトは資源表へ登録し、描画オ
ブジェクトについては描画オブジェクト処理部13から
の取得要求通知を待つ。取得要求が通知されると、他の
描画オブジェクト処理部13からの取得要求を排他制御
し、言語パーザ11から描画オブジェクト列が渡されて
いれば、描画オブジェクトを取得要求に従って分配す
る。分配に際し、言語パーザ11から渡された単位のま
ま描画オブジェクト処理部13に渡しても良いし、描画
オブジェクト列を分割・統合してから渡しても良い。
【0075】描画オブジェクト処理部13は、図示しな
い全体制御部によって描画オブジェクト処理部13の並
列度数分、起動される。起動された各描画オブジェクト
処理部13は、それぞれ独立に動作し、データオブジェ
クト分配処理部12に対して、描画オブジェクトの取得
要求を通知する。データオブジェクト分配処理部12か
ら描画オブジェクト列が渡されると、描画オブジェクト
の種別に従って、描画オブジェクトが持っているフィー
ルド値を、外形情報とそれ以外の属性情報とに分離す
る。外形情報はディスプレイリストと呼ばれるベクタ形
式に変換され、DLバッファ14に登録される。属性情
報は、描画オブジェクトIDで検索可能であり、IDご
とに独立なフィールドを持つ描画属性表15に登録す
る。描画オブジェクト処理部13は、データオブジェク
ト分配処理部12から渡された描画オブジェクト列を全
て処理すると、再度データオブジェクト分配処理部12
に描画オブジェクト列の取得要求を発行する。そして、
データオブジェクト分配処理部12から、分配する描画
オブジェクトがないことが通知されると、図示しない全
体制御部に対して処理が終わったことを通知する。全体
制御部は、全ての描画オブジェクト処理部13から処理
終了の通知を受けると、第一のステップを終了し、第二
のステップへ制御を移す。
【0076】描画オブジェクトの外形情報とは、描画オ
ブジェクトごとに異なる。『塗り』の場合には「MI
D」、「パス」であり、『軌跡』の場合には「MI
D」、「線幅」、「接続指定」、「端点指定」、「パ
ス」であり、『文字』の場合には「MID」、「FI
D」、「座標値」、「文字列」であり、『イメージ』の
場合には「MID」、「座標値」「幅」「高さ」であ
り、『クリップ』の場合には「MID」、「パス」であ
る。
【0077】外形情報からディスプレイリストを生成す
る方法も、描画オブジェクトごとに異なる。『塗り』と
『クリップ』の場合には、「MID」で示される行列を
資源表から取得し、行列演算を施しながらパスを全て直
線化し、ディスプレイリストに変換する。『軌跡』の場
合には、「MID」で示される行列を資源表から取得
し、行列演算を施しながらパスを全て直線化する。そし
て、その直線を中心線とし、与えられた幅で直線に平行
な二辺を持つ直線群とする。さらに、その直線群に接続
点や端点の形状を表す図形の直線化成分を付加し、ディ
スプレイリストに変換する。『文字』の場合には、与え
られた「MID」で示される行列を資源表から取得し、
座標値、「FID」の行列成分に行列演算を施し、その
結果と文字列を用いて文字のアウトラインまたは文字の
内部を表現するデータを生成し、ディスプレイリストに
変換する。『イメージ』の場合には、与えられた「MI
D」で示される行列を資源表から取得し、座標値、幅、
高さに対して行列演算を施し、イメージの枠をディスプ
レイリストに変換する。
【0078】ここで、ディスプレイリストとして、図9
に示すベクター表現を用いる。図9のベクターにおいて
「ID」は描画オブジェクトのIDである。「X座標」
は現在のスキャンラインを横切るベクターのX切片の値
を示す。「X変位」は次のスキャンラインに処理が移動
した場合のX切片の変化量を示している。「Y高さ」は
当該ベクターに影響を受ける残りのスキャンライン数を
示している。「向き」は当該ベクターの向きを示す。
【0079】図9のベクターを、図10を用いてより具
体的に説明する。図10において、座標系は図面左上方
を原点とし、従って図面の水平右方向にX座標値は増加
し、図面の垂直下方向にY座標値は増加するものとす
る。ベクターの向きは、座標系のY方向が増加する向き
を1と定義し、座標系のY方向が減少する向きを−1と
定義している。この座標系で表現される領域で3点P1
(0,300)、P2(600,0)、P3(300,
600)で決定される三角形を例に取る。この3点か
ら、ベクターの向きを考慮して、P1P2、P2P3、
P3P1の3つのディスプレイリストが生成される。P
1P2は、「X」が600、「X変位」が−2、「Y高
さ」が300、「向き」が−1となる。DLバッファと
も関連するが、このようにY座標値の小さい値を持つ点
をディスプレイリストの始点として計算することにす
る。これは、後で説明するスキャンライン処理部17で
の処理において、Y座標の小さい方から処理をすること
を前提にしているためである。処理の向きは説明の都合
上限定しているだけであり、Y座標の大きいほうから処
理する場合には、始点をY座標の大きいほうにすればよ
い。他のディスプレイリストも図10に示したとおりで
ある。この3つのディスプレイリストが囲む領域が、三
角形の内部領域である。
【0080】DLバッファ14は、ディスプレイリスト
をスキャンライン単位で管理する。管理方法は、先に述
べた処理の向きにより、始点側のかかるスキャンライン
にディスプレイリストを登録する。図11における
(a)の図形が描画オブジェクトであるとすると、DL
バッファ14内では(b)のように管理する。すなわ
ち、ディスプレイリストD1はスキャンラインL1から
始まるため、L1のエントリに登録される。D2はL3
から始まるため、L3のエントリに登録される。以下同
様にして、D3はL13、D4はL5、D5はL5、D
6はL7、D7はL11、D8はL1に登録される。図
からも明らかなように、L1とL5には、2つのディス
プレイリストが登録されている。
【0081】DLバッファ14は、複数の描画オブジェ
クト処理部14から同時に書き込まれるため、スキャン
ライン単位で排他制御を行なう。すなわち、DLをある
スキャンラインに登録する場合には、スキャンラインを
ロックし、他の描画オブジェクト処理部14から同一の
スキャンラインを同時にアクセスできないにする。排他
制御を行なう代わりに、DLバッファ14を描画オブジ
ェクト処理部13の数だけ用意し、各描画オブジェクト
処理部13に一つずつ割り当てて、各描画オブジェクト
処理部13が独立に書き込めるようにしてもよい。この
場合には、第二ステップで全てのDLバッファ14を統
合する処理を行なえば良い。また、統合しなくとも、D
Lバッファ14からデータを取り出すときに、全てのD
Lバッファ14からデータを取り出しすようにしても良
い。
【0082】また、DLバッファ14は、描画オブジェ
クトから生成された描画DLと、クリップオブジェクト
から生成されたクリップDLを判別できる形式で管理す
る。内部的に2つのDLバッファ14を持っていても良
いし、DL自身に判別できるフラグを持たせてもよい
し、DLの割当領域を描画DLとクリップDLで異なる
領域にして、判別できるようにしてもよい。
【0083】描画オブジェクトの属性情報が登録される
描画属性表15は、2つの表、すなわち、描画オブジェ
クト用の表とクリップオブジェクト用の表とから構成さ
れる。描画オブジェクト用の表は、各描画オブジェクト
ごとに異なるフィールドを持つ表である。『塗り』の場
合には、描画オブジェクト種別「FILL」、「CI
D」、「色」、「判定規則」のフィールドを持つ。『軌
跡』の場合には、描画オブジェクト種別「STROK
E」、「CID」、「色」フィールドを持つ。『文字』
の場合には、描画オブジェクト種別「TEXT」、「C
ID」、「色」フィールドを持つ。『イメージ』の場合
には、描画オブジェクト種別「IMAGE」、「CI
D」、「画素列」フィールドを持つ。クリップオブジェ
クト用の表は、親のクリップを指す「CID」、「判定
規則」フィールドを持つ。これ以外にも、描画属性表1
5に共通のフィールドがあるが、これについては、第二
ステップで説明する。
【0084】属性情報のうち、「色」もしくは「画素
列」のフィールドは、場合により描画オブジェクト処理
部13で加工された結果が登録される。例えば、『イメ
ージ』の場合には、色変換や拡大縮小などの処理が終わ
ってから登録される。また、「色」の入力色空間が出力
色空間と異なる場合には、色空間変換が施された結果が
登録される。
【0085】描画属性の処理として、クリップオブジェ
クトは特別な処理を必要とする。クリップは、第二ステ
ップで実際の処理が行われるが、それに先立って内部に
状態を作っておく必要がある。この説明では、第一ステ
ップの属性処理として行なう。
【0086】クリップオブジェクトの属性処理は、2種
類の依存関係で調整される。一つは、クリップオブジェ
クトの親子関係(クリップ組と呼ぶ)一つずつに状態変
数を与え、描画オブジェクトから参照できる位置に置く
ことである。もう一つは、あるクリップオブジェクトが
影響を与えるクリップ状態変数の一覧をクリップオブジ
ェクトから参照できる位置に置くことである。
【0087】依存関係ごとに、詳しく説明する。
【0088】[依存関係その1]クリップは、クリップ
枠の内部にある描画データだけページ上に置くことを許
すため、複数のクリップに影響を受ける場合、全てのク
リップが内部状態にある場合だけ描画データを通過させ
る必要がある。一つめの依存関係であるクリップ組の状
態変数は、複数のクリップをまとめて処理するために用
いる。
【0089】第二ステップで詳しく説明するが、本実施
例ではスキャンラインをただ一度主走査方向に走査する
だけで、塗りつぶし、重なり、クリップを処理する。そ
こで、スキャンライン上である描画オブジェクトの色を
ページ上に置くかどうかを判別する時に、その描画オブ
ジェクトが参照しているクリップ組の内外判定を、状態
変数を用いて行なう。
【0090】状態変数の構成は、クリップ組を構成する
クリップオブジェクトの個数を表す「総数フィールド」
と、この状態を構成するクリップオブジェクトのうち、
何個のクリップオブジェクトが内部状態になっているか
を示す「作業領域フィールド」がある。
【0091】クリップ組が内部状態にある場合には、状
態変数の総数フィールドと作業領域フィールドの数値が
等しくなり、クリップ組が外部状態にある場合には、総
数フィールドと作業領域フィールドの値が異なるように
操作される。
【0092】すなわち、第二ステップでスキャンライン
上を走査中に、クリップ組を構成するあるクリップオブ
ジェクトの内外状態が変化したときに、対応するクリッ
プ状態変数の作業領域フィールドに書き込みを行なう。
クリップオブジェクトが内部状態になった時は作業領域
フィールドの値に+1し、外部状態になった時は作業領
域フィールドの値に−1する。
【0093】このように、複数のクリップを同時に扱う
ために、クリップ組ごとに状態変数を用意する。図2に
示したデータオブジェクトの例は、一つの描画オブジェ
クトから一つのクリップを参照するだけであり、クリッ
プオブジェクトの直上の親は一つだけ指定しているの
で、クリップ組は一意に定まり、かつ、クリップオブジ
ェクトの個数がクリップ組の個数になる。
【0094】そこで、描画属性表内にクリップオブジェ
クトの個数分だけ状態変数表を用意する。この表は、ク
リップオブジェクトのIDで検索できるようになってい
る。クリップオブジェクトのIDで検索できれば、描画
オブジェクトの属性表内にあるCIDから状態変数を検
索できる。
【0095】[依存関係その2]依存関係その1では、
描画オブジェクトから状態変数をアクセスできるように
したが、先に説明したように、スキャンライン上を走査
する段階で、あるクリップオブジェクトの内外状態が変
化した場合に、そのクリップオブジェクトが影響を与え
る状態変数に書き込みを行なう必要がある。そのため
に、この2つめの依存関係処理が必要になる。 すなわ
ち、あるクリップオブジェクトが影響を与える子供のク
リップオブジェクトの一覧を作成することである。これ
は、図2に示したデータオブジェクトの例だと、クリッ
プオブジェクト自身が親クリップオブジェクトのデータ
を持っているので、親をたどりながら親に子供を通知す
る。状態変数と同様に、クリップオブジェクトのID
(CID)から参照できる表を作成し、検索結果として
子供クリップオブジェクトIDの一覧を返せるようにす
る。そうすれば、あるクリップオブジェクトのIDをも
とにこの表を引き、検索結果が保持する子供クリップオ
ブジェクトのID一覧から、状態変数表をアクセスすれ
ば、影響を与える全ての状態変数にアクセスできる。
【0096】このための処理としては、描画属性表15
のクリップオブジェクト用の表を全て走査し、あるクリ
ップオブジェクトが参照する親クリップオブジェクトを
全てたどりながら、子供クリップオブジェクト一覧表の
親クリップオブジェクトIDをキーとして子供クリップ
オブジェクトIDを登録する。
【0097】以上のように、描画オブジェクト、クリッ
プオブジェクトの描画属性表15も、同時に複数の描画
オブジェクト処理部13からアクセスされるが、描画オ
ブジェクトのIDごとに独立な構造となっているため、
特に排他制御をする必要はない。ただし、クリップオブ
ジェクトにおける依存関係その2の処理は、子供側から
親をたどる処理において、親の描画属性がセットされて
いる必要があり、描画オブジェクトごとに並列に処理す
ると親の描画属性がセットされることを待つ場合があ
る。また、子供をたくさん持つ親の場合、同時に子供の
一覧に書き込みが発生するため、排他制御が必要にな
る。そこで、描画オブジェクト処理部13で処理せず
に、第二ステップの前処理としてスキャンライン分配処
理部17側で処理しても良い。
【0098】次に、具体的な例を用いて説明する。図1
2に言語パーザ11から出力されたデータオブジェクト
列の例を示す。図12では、13個の描画オブジェクト
が順々に言語パーザ11から渡された例を示している。
座標値は示さないが、図13に示すページイメージがで
きるものとする。
【0099】図12のデータオブジェクト列のうち、描
画オブジェクト(クリップオブジェクトは除く)の描画
属性表15として、図14に示す表が作られる。描画オ
ブジェクトは6個であるため、図14のような描画オブ
ジェクト用の表ができる。また、図12のデータオブジ
ェクト列のうち、クリップオブジェクトの描画属性表1
5として、図15に示す表が作られる。クリップオブジ
ェクトは4個であるため、図15のようなクリップオブ
ジェクト用の表ができる。
【0100】依存関係その1の調整は、先に述べたよう
に、クリップオブジェクトの個数分だけ状態変数領域が
作られる。すなわち、図12のデータオブジェクトの例
では、4つのクリップオブジェクトがあるため、図16
(a)のように4つの状態変数の領域が作られる。
【0101】依存関係その2の調整は、先に述べたよう
に、クリップオブジェクトが参照する親クリップオブジ
ェクトに子供クリップオブジェクトIDを結び付ける。
例えば、C1の場合には親がないので、何もしなくてよ
い。C2の場合には、C1が親であるのでC2をC1に
登録する。C3の場合にはC2を参照するため、C2に
C3を登録する。さらに、C2がC1を参照するのでC
1にC3を登録する。C4の場合には、C1が親である
のでC1にC4を登録する。この結果として、図16
(b)のように親クリップオブジェクトIDに対して、
子供クリップオブジェクトIDの一覧が作成される。
【0102】以上で第一ステップの処理の流れについて
の説明を終わる。
【0103】[第二ステップ]第二ステップの流れを、
図17を用いて説明する。動作の概要から説明する。ま
ず、図示しない全体制御部からスキャンライン分配処理
部16が起動される。スキャンライン分配処理部16
は、各スキャンライン処理部17が処理すべき領域を決
定し、領域に含まれるDL情報と描画属性情報を収集
し、スキャンライン処理部17から処理範囲の割当要求
が発行されるのを待つ。スキャンライン処理部17は、
図示しない全体制御部から起動され、スキャンライン分
配処理部16に対して、処理範囲の割当要求を発行す
る。処理範囲が割り当てられると、スキャンラインごと
に塗りつぶし、クリップ、重なり処理を行い、処理結果
としてランレングスデータを出力する。スキャンライン
処理部17は、割り当てられた処理範囲が終了すると、
再度スキャンライン分配処理部16に対して割当要求を
発行する。スキャンライン分配処理部16から割り当て
る領域がないことが通知されると、図示しない全体制御
部に対して処理の終了を通知する。全体制御部は、起動
した全てのスキャンライン処理部17から終了通知が発
行されるのを待っている。各スキャンライン処理部17
から出力されたランレングスデータはランレングス出力
処理部18に渡され、ランレングス出力処理部18が必
要に応じて出力媒体に転送する。
【0104】次に、各ブロックごとに説明する。スキャ
ンライン分配処理部16が起動されると、DLバッファ
14と描画属性表15から必要な情報を取り出し、スキ
ャンライン処理部17に割り当てる領域を決定する。ス
キャンライン処理部17は、領域の決定を行なった後
は、各スキャンライン処理部17から領域の取得要求が
発行されるのを待つ。あるスキャンライン処理部17か
ら領域割当ての要求が発行されると、他のスキャンライ
ン処理部17からの取得要求を排他制御し、決定した領
域の割当てを行なう。スキャンライン分配処理部16は
割り当てる領域がなくなってから、スキャンライン処理
部17から割当要求が通知されると、割当領域完了通知
を行なう。
【0105】なお、ここでは、スキャンライン分配処理
部16が各スキャンライン処理部17で使用するワーク
領域である内部判定テーブルと状態変数テーブルを用意
して各スキャンライン処理部17に渡すものとする。た
だし、スキャンライン分配処理部16が用意しなくと
も、スキャンライン処理部17側で必要になってから用
意しても構わない。なお、内部判定テーブルとは、図3
で示した内部判定規則をオブジェクトごとに適用するた
めに、オブジェクトのID(描画オブジェクトの場合に
は描画オブジェクトID、クリップオブジェクトの場合
にはクリップオブジェクトID)に対応づけて生成する
ものとする。また、これら2つのワーク領域は、各スキ
ャンライン処理部17で独立である必要があるため、ス
キャンライン処理部17の数だけ用意する必要がある。
ワーク領域以外のデータは、読み出すだけであり、全て
のスキャンライン処理部17が共通に参照する一つだけ
で良い。
【0106】スキャンライン処理部17は、図示しない
全体制御部によってスキャンライン処理部17の並列度
数分、起動される。起動された各スキャンライン処理部
17は、それぞれ独立に動作し、スキャンライン分配処
理部16に対して、処理領域の取得要求を通知する。ス
キャンライン分配処理部16から処理領域が割り当てら
れると、スキャンライン単位の描画処理を領域の先頭か
ら領域の終端まで行なう。割り当てられた領域を全て終
了すると、再度スキャンライン分配処理部16に対して
領域の割当要求を発行する。スキャンライン処理部17
から割当領域完了通知が返されると、図示しない全体制
御部に対し、スキャンライン処理部17の処理が終了し
たことを通知する。全体制御部は、全てのスキャンライ
ン処理部17から処理終了の通知を受けると、第二ステ
ップを終了し、ランレングス出力処理の終了を待って、
一ページ分の処理を完了し、次のページまたは次のジョ
ブの処理に移る。
【0107】ここで、スキャンライン内の塗りつぶし、
クリップ、重なり処理(塗りつぶし・クリップ処理)に
ついて説明する。割り当てられた領域の処理の流れは、
図18に示すとおり行われる。図18のフローチャート
において、まず、全てのスキャンラインが処理されたか
どうかが判断される(S21)。全てのスキャンライン
についての処理を終了したら割り当てられた領域の処理
が終了する(S22)。
【0108】処理すべきスキャンラインがまだ残ってい
る場合には次のステップにおいて、現在のスキャンライ
ンにかかるDLを、DLバッファ14から取得してアク
ティブテーブルに格納する(S23)。アクティブテー
ブルは、DLバッファ14と同様に、描画DLとクリッ
プDLが識別できる形式となっている。
【0109】次にアクティブテーブルに描画DLがある
かどうかが判断される(S24)。アクティブテーブル
が空であれば、当該スキャンラインには何も描画データ
が存在しないことになるので、空のスキャンラインを生
成して本ループの最初のステップに戻る(S25)。
【0110】次に、アクティブテーブルに描画DLが存
在している場合には、現在処理対象としているスキャン
ラインで新たなDLが加わったかどうかにかかわらず、
当該スキャンラインの全DLのソートを行う(S2
6)。このソートは、スキャンライン間でDLが交差す
るような場合には、当該スキャンラインでのDLの状態
が前スキャンラインでのDLの状態とは異なるものとな
るので、改めて当該スキャンラインでの全DLのソート
を行って当該スキャンラインにかかるDLを所定の順序
に並べ替えるために行われる。
【0111】ソートは、スキャンラインの走査方向に、
X座標の座標値の小さい順にソートするようにしてい
る。本実施の形態ではスキャンライン毎に必ずアクティ
ブテーブル内の全DLのソートを実行しているが、例え
ば、DLの交差情報に基づいてソートするかしないかを
判断するようにしてもよい。
【0112】次に、スキャンライン内のDLに共通の情
報を初期化する(S27)。スキャンライン内で共通の
情報とは、描画オブジェクトの内外判定に用いる内部判
定テーブルの情報、及び描画状態表の情報である。
【0113】描画状態表は、描画図形の内部判定を行っ
た結果として、現在、どの図形が内部の状態にあるかを
保持するために設けられている。これについての詳しい
説明は後述する。
【0114】共通情報の初期設定が終わった後、スキャ
ンラインの走査方向に塗りつぶしとクリップ処理を行う
(S28、図20)。この塗りつぶし・クリップ処理の
全体の流れは後程詳述する。
【0115】一つのスキャンラインの処理が終了する
と、次のスキャンラインに備えてアクティブテーブルの
更新処理を行う(S29、図19)。
【0116】ここで、アクティブテーブルの更新処理の
流れを、図19を用いて説明する。まず、アクティブテ
ーブルからDLを取得する(S31)。DLが取得され
たかどうかを判断し、取得されなければ処理を終了して
元に戻る(S32、S33)。DLが取得されれば、取
得されたDLのY変位が1より大きいかどうかを判断す
る(S32、S34)。DLのY変位が1より大きけれ
ば、次のスキャンラインは当該DLに影響される可能性
があるので、当該べクターのX値にX変位値を加えた値
をX値の更新値とし、Y変位から1を減した値をY変位
の更新値とする(S35)。Y変位の更新値が0であれ
ば当該DLは、次のスキャンラインに影響を及ぼさない
のでアクティブテーブルから削除する(S36)。この
ようにして、アクティブテーブルの更新処理が行われ
る。
【0117】図18において、アクティブテーブルの更
新が終了すると、次に当該スキャンラインの出力を行
う。割り当てられた領域の全てのスキャンラインについ
てこの処理が行われる(S21)。
【0118】次に、塗りつぶし・クリップ処理のより詳
細な流れを、図20を用いて説明する。図20におい
て、まず、アクティブテーブルから順次DLを取得する
(S41)。ここで、DLの取得の際にクリップDLと
描画DLとが同一のX座標値を有している場合には、ク
リップDLを先に取得するものとする。
【0119】アクティブテーブルに取得すべきDLが無
くなったら、スキャンラインの残りの領域を空白として
処理を終了する(S42、S43、S44)。
【0120】DLがある場合には、当該DLの内部判定
処理を行う(S42、S45)。内部判定処理の詳細は
図21を用いて後程詳述する。次に内部判定処理の結果
を元に、5つの状態に場合分けされる。1つのめ状態
は、「クリップ領域開始」(S47)であり、DL種別
がクリップで、かつ、このDLで表現されるクリップが
内部状態である場合である。2つめの状態は、「クリッ
プ領域終了」(S48)であり、DL種別がクリップ
で、かつ、このDLで表現されるクリップが外部状態で
ある場合である。3つの状態は、「描画領域開始」(S
49)であり、DL種別が描画で、かつ、このDLで表
現される描画図形が内部状態である場合である。4つめ
の状態は、「描画領域終了」(S50)であり、DL種
別が描画で、かつ、このDLで表現される描画図形が外
部状態である場合である。5つのめ状態は、DL種別に
関係なくこのDLで表現される描画図形またはクリップ
に何も影響を与えない場合である(S51)。この5つ
の状態ごとに処理が行われる。
【0121】以上の処理が終了すると当該スキャンライ
ン内の次のDLをアクティブテーブルから取得するため
のステップに戻る。以上のようにして、塗りつぶし・ク
リップ処理が行われる。
【0122】次に、5つの状態の識別に用いられる、D
Lの内部判定処理の詳細を、図21を用いて説明する。
まず、DLのIDから、このDLで構成される図形の内
部判定規則を描画属性表15のテーブルから取得する
(S61)。判定規則の種類がNZ(NZワインディン
グ規則)であれば左側のステップへ移行し、EO(奇偶
規則)であれば右側のステップへ移行する(S62)。
【0123】判定規則がNZであれば、DLのIDから
内部判定テーブルの値を取得し、当該値が0であるかな
いかを判断する(S63、S64)。値が0であれば当
該DLで構成される図形は必ず内部になる。従って、内
部判定テーブルにおいて当該DLのIDの位置に格納さ
れている値にDLの向きを加えてから、「領域の開始」
として戻る(S65、S66)。取り出した値が0でな
い場合には、内部判定テーブルにおいて当該DLのID
の位置にある値にDLの向きを加え、加えた結果が0で
あるかどうかを判断する(S67、S68)。加えた結
果が0であれば、「領域の終了」として戻る(S6
9)。加えた結果が0以外の場合は、引き続き内部状態
が継続するので「領域の継続」として戻る(S70)。
【0124】判定規則がEOであれば、当該DLのID
から内部判定テーブルの値を取得し、当該値を1だけ増
加させてから2の剰余を求める(S62、S71)。2
の剰余の値が1であれば判定結果は奇数となり、図形が
内部になるので「領域の開始」として戻る(S72、S
73)。2の剰余が0であれば判定結果は偶数となり図
形の外部となるので「領域の終了」として戻る(S7
2、S74)。なお、2の剰余を求める代わりに、内部
判定テーブルの値を反転し、0のときは1、1の時は0
としても同様の結果を得られる。このようにして、図2
0での内部判定処理が行われる。
【0125】次に、図20の内部判定結果とDLの種別
により判別された、5つの状態ごとに行われる処理につ
いて説明する。
【0126】まず、1つめの状態であるクリップ領域開
始処理では、このクリップが影響を与える図形のうち、
既に描画状態表の内部状態にあるものを対象とし、図形
の描画データの一部である優先順位「ID」をもとに、
最も優先順位の高いものを一つ選択する。そして、以前
に描画状態表の描画開始位置に塗りを開始するものとし
て登録されていた図形の「ID」と、この図形の「I
D」を比較し、今回採用した図形の方が高い優先順位を
持てば、以前に登録した図形の色情報を用いて、以前に
登録した図形の描画開始位置から、このディスプレイリ
ストのX座標値−1まで塗り処理を行なう。以前に登録
した図形がない場合には、空の状態の色で塗り処理す
る。そして、今回採用した図形の「ID」と色情報とこ
のディスプレイリストのX座標値とを描画開始位置に塗
りを開始する図形として登録する。今回採用した図形の
方が低い優先順位を持つ場合や、このクリップが影響を
与える図形で、かつ既に内部状態にあるもののうち、最
大の優先順位を持たないものについては、何もしない。
【0127】2つめの状態であるクリップ領域終了処理
では、まず、このクリップが影響を与える図形のうち、
既に描画状態表の内部状態にあるものを全て対象とす
る。対象とした図形の中に、以前に描画状態表の描画開
始位置に塗りを開始すると登録されていた図形が含まれ
ていれば、その図形の色情報を用いて、描画開始位置か
ら、このディスプレイリストのX座標値−1まで塗り処
理を行なう。次に、このクリップが影響を与えない図形
で内部状態になっている図形から、最大の優先順位を持
つ図形の「ID」と色情報と、このディスプレイリスト
のX座標値とを、描画開始位置に塗りを開始する図形と
して登録する。内部状態である図形がなければ、空の状
態を表す「ID」と空の状態の色情報とこのディスプレ
イリストのX座標値とを描画開始位置に関連して登録す
る。
【0128】3つめの状態である図形領域開始処理で
は、この図形が影響を受けるクリップの内部状態をクリ
ップ状態変数を参照することで調べ、クリップが内部状
態になっていれば、以前に塗りを開始するものとして登
録されていた図形の「ID」とこの図形の「ID」とを
比較し、この図形の優先順位の方が高ければ、以前の図
形の色情報を用いて、以前の図形の描画開始位置から、
このディスプレイリストのX座標値−1まで塗り処理を
行なう。以前の状態が空の状態の場合には、空の状態の
色で塗り処理する。この図形の優先順位の方が低い場合
や、この図形が影響を受けるクリップが内部状態になっ
ていなければ、内部状態にある図形として描画状態表の
内部状態に登録する。
【0129】4つめの状態である図形領域終了処理で
は、この図形が以前に塗りを開始するものとして登録さ
れた図形の場合には、その図形の色情報を用いて、描画
開始位置から、このディスプレイリストのX座標値−1
まで塗り処理を行なう。次に、描画状態表の内部状態か
らこの図形を取り除く。取り除いた後で、描画状態表の
内部状態にある図形から、最大の優先順位を持つ図形の
「ID」と色情報と、このディスプレイリストのX座標
値とを描画開始位置に関連して登録する。描画状態表の
内部状態に図形がなければ、空の状態を表すの「ID」
と空の状態の色情報とこのディスプレイリストのX座標
値とを描画開始位置に塗りを開始する図形として登録す
る。
【0130】5つめの状態である領域継続処理では、何
もしない。
【0131】このようにして、スキャンライン処理部1
7は割り当てられた領域に対して、スキャンラインごと
の塗りつぶし・クリップ処理を行い、スキャンライン内
の描画処理を行なう。
【0132】[具体例による全体を通しての説明]次に
具体的な例を用いて、全体を通しての内部状態の変化を
説明する。
【0133】図22は、描画コマンドとして2つのクリ
ップが指定され、このクリップから影響を受ける3つの
矩形領域を描画した例を示している。まず、描画コマン
ド「クリップA」により、図示の通り3点CA1、CA
2、CA3で構成される三角形領域24が画定される。
次に、描画コマンド「クリップB」により、3点CB
1、CB2、CB3より構成される三角形領域26が画
定される。本具体例では点CA1、CA2、及びCB3
のY座標値は同一であり、点CA3、CB1、及びCB
2のY座標値も同一である。また、点CA1とCB1、
CA3とCB3、CA2とCB2のX座標値はそれぞれ
同一である。従って、2つの三角形領域24、26とで
菱形領域28が形成される。この菱形領域28がクリッ
プ領域となる。
【0134】次に、描画コマンド「描画領域A」、「描
画領域B」、「描画領域C」によりそれぞれ異なる位置
に異なる色で矩形領域30、32、34が順に塗りつぶ
し処理される。
【0135】クリップ処理された描画結果として、内部
に矩形領域30、32、34で指定された色で塗りつぶ
された菱形領域36が得られる。
【0136】図22の描画処理におけるパーザからの出
力データであるデータオブジェクト列を図23に示す。
図23に示したデータオブジェクト列は、6つのデータ
オブジェクトから構成される。データオブジェクト「行
列1」は、行列ID=M1、データオブジェクト種別が
行列を示すMATRIX、行列値=行列値1から構成さ
れている。データオブジェクト「クリップA」は、描画
順序を表すID=C1、描画コマンド種類が「クリッ
プ」であることを示す識別子CLIP、内部判定のため
の判定規則=NZ、クリップ形状を決定する点の位置情
報CA1、CA2、CA3とから構成されている。デー
タオブジェクト「クリップB」も同様に、ID=C2、
識別子CLIP、判定規則=NZ、点の位置情報CB
1、CB2、CB3とから構成されている。データオブ
ジェクト「描画領域A」は、ID=ID1、描画コマン
ド種類が「塗り」であることを示す識別子FILL、判
定規則=NZ、パスは全て直線で構成され点の位置情報
DA1、DA2、DA3、DA4と、さらに塗りつぶし
の色情報「色1」から構成されている。データオブジェ
クト「描画領域B」も同様に、ID=ID2、識別子F
ILL、判定規則=NZ、色情報「色2」、点の位置情
報DB1、DB2、DB3、DB4から構成されてい
る。データオブジェクト「描画領域C」は、ID=ID
3、識別子FILL、判定規則=NZ、色情報「色
3」、点の位置情報DC1、DC2、DC3、DC4か
ら構成されている。
【0137】図24は、図22及び図23の具体例に基
づくスキャンラインとDLとの関係を示している。図中
縦方向には複数のスキャンラインが並列しており、各D
Lの始点及び終点に関係するスキャンラインに上方から
Y1〜Y8の番号を付している。例えば、描画領域Bを
構成する2つの描画DL(DB4、DB1)及び(DB
3、DB2)は、スキャンラインY1に結び付けられて
いる。DLは、DLの「向き」を考慮して必ず下向きに
補正された状態でDLの開始点のY座標に結び付けられ
るので、DLの始点DB2、終点DB3の描画DL(D
B3、DB2)はスキャンラインY1に結び付けられ
る。同様にして描画領域A、Cの描画DLがそれそれス
キャンラインY3、Y5に結び付けられている。
【0138】一方、クリップDLも同様にDLの「向
き」を考慮してスキャンラインY2に結び付けられてい
る。
【0139】この図23に示したデータオブジェクト列
と図24のスキャンラインとDLの関係を用いて、本実
施の形態における描画処理装置の処理手順の詳細な説明
を行う。
【0140】まず、図示しない全体制御部が各ブロック
を初期化して、言語パーザ11、データオブジェクト分
配処理部12、描画オブジェクト処理部13、DLバッ
ファ14、描画属性表15を使用可能な状態にする。す
ると、言語パーザ11から図23に示したデータオブジ
ェクト列がデータオブジェクト分配処理部12に対して
出力される。
【0141】ここでは、言語パーザ11からデータオブ
ジェクト分配処理部12に一度にデータオブジェクトが
渡されたものとする。また、描画オブジェクト処理部1
3は3つ起動されたものとし、それぞれ描画オブジェク
ト処理部13(1)、描画オブジェクト処理部13
(2)、描画オブジェクト処理部13(3)とする。
【0142】まず、第一のステップとして、データオブ
ジェクト分配処理部12では、パーザ11から出力され
るデータオブジェクト列の種類を判別する。図23の例
では、資源オブジェクトである行列1が最初に出力され
ているので、行列1のデータを資源表に登録する。以降
のデータを判別すると、全て描画オブジェクトであるた
め、データオブジェクト分配処理部12は描画オブジェ
クト処理部13から取得要求が発行されるのを待つ。
【0143】描画オブジェクト処理部13は、全体制御
部から起動され、データオブジェクト分配処理部12に
対して描画オブジェクトの取得要求を発行する。このと
き、描画オブジェクト処理部13(1)、描画オブジェ
クト処理部13(2)、描画オブジェクト処理部13
(3)の順序でデータオブジェクト分配処理部12に取
得要求が受理されたものとする。すると、データオブジ
ェクト分配処理部12は、描画オブジェクト処理部13
(1)にクリップA、描画オブジェクト処理部13
(2)にクリップB、描画オブジェクト処理部13
(3)に描画領域Aを割り当てる。
【0144】描画オブジェクト処理部13(1)は、割
り当てられたクリップAから外形情報のパスを取り出
し、さらにM1の情報を用いて資源表から行列値1を取
得する。パスに行列演算を施し、DLを2つ(水平なD
Lは省略する)生成し、DLバッファ14のY2の部分
にCA1CA3、CA2CA3を登録する。さらに、描
画属性表15内のクリップオブジェクト用の表に対し
て、C1は親クリップなし、判定規則NZを登録する。
【0145】同様にして、描画オブジェクト処理部13
(2)は、DLを2つ生成し、DLバッファ14のY2
の部分にCB3CB1、CB3CB2を登録し、描画属
性表15内に、C2は親クリップC1、判定規則NZを
登録する。
【0146】描画オブジェクト処理部13(3)は、割
り当てられた描画領域Aから外形情報のパスを取り出
し、さらにM1の情報を用いて資源表から行列値1を取
得する。パスに行列演算を施し、DLを2つ生成し、D
Lバッファ14のY3の部分にDA4DA1、DA3D
A2を登録する。さらに、描画属性表15内の描画オブ
ジェクト用の表に対して、ID1は『塗り』であること
を示すFILL、クリップはC2、色1、判定規則NZ
を登録する。
【0147】この後は、早く処理を終了した描画オブジ
ェクト処理部13がデータオブジェクト分配処理部12
に対して再度取得要求を発行して、データオブジェクト
分配処理部12からデータオブジェクトを割り当てられ
る。この場合は、描画オブジェクト処理部13(1)に
描画領域B、描画オブジェクト処理部13(2)に描画
領域Bを割り当てたとする。描画オブジェクト処理部1
3(3)には分配する描画オブジェクトがないことが通
知され、全体制御部に処理終了を通知する。
【0148】描画オブジェクト処理部13(1)は、前
回の描画オブジェクト処理部13(3)と同様に、DL
を2つ生成し、DLバッファ14のY1の部分にDB4
DB1、DB3DB2を登録する。さらに、描画属性表
15内の描画オブジェクト用の表に対して、ID2は
『塗り』であることを示すFILL、クリップはC2、
色2、判定規則NZを登録する。
【0149】描画オブジェクト処理部13(2)も、前
回の描画オブジェクト処理部13(3)と同様に、DL
を2つ生成し、DLバッファ14のY5の部分にDC4
DC1、DC3DC2を登録する。さらに、描画属性表
内の描画オブジェクト用の表に対して、ID3は『塗
り』であることを示すFILL、クリップはC2、色
2、判定規則NZを登録する。
【0150】この後、描画オブジェクト処理部13
(1)、描画オブジェクト処理部13(2)ともに再度
取得要求を出すが、分配するデータがないため、全体制
御部に処理終了を通知する。
【0151】以上で、全てのデータオブジェクトを処理
したことになる。この段階での内部状態として、DLバ
ッファ14の状態を図25、描画属性表の状態を図26
に示す。
【0152】なお、図25の描画DLテーブルにあって
は、スキャンラインY2、Y4及びY6〜Y8のよう
に、クリップDLテーブルにあってはスキャンラインY
1及びY3〜Y8のように、共にDLとの交点を有する
スキャンラインの情報も持たせているが、この情報はな
くてもよい。或いは逆に、全スキャンラインのデータを
配列としてテーブルに保持するようにしてもよい。
【0153】また、クリップオブジェクトの属性処理と
して、依存関係その1の処理が行われる。すなわち、2
つの状態変数を生成する。なお、状態変数の初期値は、
クリップAに対応する状態変数は、一つのクリップで構
成されるので、総数フィールドは1、作業領域フィール
ドは0である。クリップBに対応する状態変数は、2個
のクリップオブジェクトから構成されているため、総数
フィールドは2、作業領域フィールドは0である。
【0154】さらに、依存関係その2の処理として、各
クリップオブジェクトが参照する親クリップオブジェク
トをたどり、親クリップオブジェクトに子供クリップオ
ブジェクトのIDを結び付ける。この場合は、C2の親
C1にC2を結び付ける。C2には子供がない状態にセ
ットされる。
【0155】なお、この依存関係の処理は、第二ステッ
プにおけるスキャンライン分配処理部16で行なっても
良い。
【0156】以上で、全てのデータオブジェクトを処理
したことになる。この段階での内部状態として、状態変
数の内容を図27(a)に、クリップ親子関係の対応表
を図27(b)に示す。
【0157】第一ステップが終了すると、第二ステップ
として、全体制御部からスキャンライン分配処理部16
が起動される。このとき、同時にスキャンライン処理部
17が3つ生成されたとし、それぞれ、スキャンライン
処理部17(1)、スキャンライン処理部17(2)、
スキャンライン処理部17(3)とする。また、ランレ
ングス出力処理部18も同時に起動されたとする。
【0158】まず、スキャンライン分配処理部16が、
各スキャンライン処理部17に分配する領域を決定す
る。領域の決定方法にはさまざまな方法があるが、ここ
では、単純にページ内をスキャンライン数で等分する方
法で説明する。すなわち、各スキャンライン処理部17
に渡す領域データとしては、ページのスキャンライン数
をスキャンライン処理部17の個数で割った値を用い、
全ての割当てをスキャンライン処理部17に割り当てる
前に行い、一度でページ内の全ての領域を割り当てるも
のとする。ここでは、図24に示したとおり、L1から
L18までの18本のスキャンラインがあるため、スキ
ャンライン処理部17(1)はL1からL6、スキャン
ライン処理部17(2)はL7からL12、スキャンラ
イン処理部17(3)はL13からL18が割り当てら
れる。
【0159】また、スキャンライン分配処理部16によ
り、内外判定に用いる描画オブジェクトごとのワーク領
域が生成される。この場合では、5つ(図形領域3つ、
クリップ領域2つ)の描画オブジェクト用ワーク領域
が、各スキャンライン処理部17用に生成される。合計
15個のワーク領域が生成される。また、状態変数もス
キャンライン処理部17の数だけコピーされる。すなわ
ち、図28に示したデータが準備される。
【0160】スキャンライン分配処理部16は、分配領
域を決定すると、スキャンライン処理部17からの割当
通知を待つ。
【0161】各スキャンライン処理部17は、全体制御
部から起動されると、スキャンライン分配処理部16に
対して、領域の割当通知を行なう。ここでは、スキャン
ライン処理部17(1)、スキャンライン処理部17
(2)、スキャンライン処理部17(3)の順序で割当
通知が受理されたものとする。すると、図28に示され
たデータが、排他制御を受けながら、それぞれのスキャ
ンライン処理部17に渡される。また、ここでは、説明
の簡単化のために、全てのDLが各スキャンライン処理
部17にコピーされて渡されるものとする。
【0162】次にスキャンライン処理部17の動作とし
て、スキャンライン処理部17(2)のY3のスキャン
ライン(L7)に着目し、内部の状態変化を図29と図
30を用いて説明する。まず、図29(a)において、
取得DLとして描画DL(DB4DB1)が得られ、内
部判定は図28のワーク領域からID2=0が読み出さ
れるので描画開始となり、ワーク領域ID2=1とな
る。しかし、対応するC2の状態変数の作業領域は0で
あり、クリップ総数の数値と異なる。したがって、描画
状態表の「登録待ち状態」にID2が登録される。描画
状態表の「描画開始位置」は0である。
【0163】次に、図29(b)で取得DLとして描画
DL(DA4DA1)が得られ、ワーク領域ID1=1
となるが、対応するC2の状態変数の作業領域は0であ
り、描画DL(DB4DB1)と状況は変わらないた
め、描画状態表の「登録待ち状態」にID1がID2の
下位に登録される。
【0164】次に、図29(c)で取得DLとしてクリ
ップDL(CA1CA3)が得られ、内部判定はワーク
領域C2から0が読み出されるのでクリップ開始とな
り、ワーク領域C2=1となる。従って、状態変数C2
の作業領域の値が1になる。登録待ちのID=ID2と
ID=ID1の参照クリップID=C2を用いて状態変
数C2を調べると、まだ、1個のクリップしか開始され
ていないので、描画状態は変わらない。
【0165】次に、図29(d)で取得DLとしてクリ
ップDL(CB3CB1)が得られ、内部判定はワーク
領域C1から0が読み出されるのでクリップ開始とな
り、ワーク領域C1=1となる。従って、状態変数C1
の作業領域=1、状態変数C2の作業領域=2となる。
「登録待ち状態」の描画DLのIDを用いて描画属性表
の対応するフィールドから参照クリップID=C2を用
いて状態変数C2を調べると状態変数内の2数値が等し
いため、ID2とID1が条件を満たす。したがって、
ID2とID1共に描画状態表の「内部状態」ヘ移動さ
れる。ID2の描画判定処理のときに、描画状態表の
「描画開始位置」は(DB4DB1)のY3におけるX
座標値(ここではX1とする)がセットされる。ID1
の描画判定のときには、すでに大きいIDであるID2
が内部状態にあるため、内部状態に移動するだけであ
る。
【0166】次に、図30(a)で取得DLとしてクリ
ップDL(CB3CB2)が得られ、内部判定はC2=
0となり、クリップ終了となる。従って、状態変数C2
の作業領域=1となる。「内部状態」の描画DLのID
を用いて描画属性表の対応するレコードから参照クリッ
プID=C2を用いて状態変数C2を調べると状態変数
内の2数値が異なるため、ID2とID1が条件を満た
すので、ID2とID1共に「登録待ち状態」ヘ移動さ
れる。ID2の描画判定処理のときに、ID2の色でX
座標値X1からX2ー1までの範囲が塗られる(但し、
X2は(CB3CB2)のY3におけるX座標値である
とする)。「描画開始位置」にはX2がセットされる。
ID1の描画判定のときには、「描画開始位置」がX2
であるため、「登録待ち状態」に移動されるだけであ
る。
【0167】次に、図30(b)で取得DLとしてクリ
ップDL(CA2CA3)が得られ、内部判定はC1=
0になり、クリップ終了となる。従って、状態変数C1
の作業領域=0となる。「内部状態」に変化はない。
【0168】次に、図30(c)で取得DLとして描画
DL(DA3DA2)が得られ、内部判定はID1=0
になり、描画終了となる。このDLは「内部状態」にな
いので、「登録待ち状態」から削除する。
【0169】次に、図30(d)て取得DLとして描画
DL(DB3DB2)が得られ、内部判定はID2=0
になり、描画終了となる。このDLは「内部状態」にな
いので、「登録待ち状態」から削除する。
【0170】このようにして、X座標値X1からX2−
1の領域がID2の色で塗られることになる。
【0171】以上で実施例の説明を終わりにする。
【0172】つぎに、以上の実施例の具体的な構成例や
変更例について説明する。
【0173】[構成例1]実施例で説明した方法は、言
語パーザ11とのデータの受渡しが描画オブジェクト単
位であった。そのため、言語パーザ11からデータが連
続で供給される必要があるが、言語パーザ11の処理が
遅い場合には、何らかの調整機能を持たせる必要があ
る。描画オブジェクト処理部13が動作を始めてしまえ
ば、一般的に描画処理の方に、時間が掛かるため、最初
の受渡しをある程度大きな単位で渡しておくことが望ま
しい。
【0174】そこで、言語パーザ11とデータをやり取
りする部分に複数データオブジェクトを保持できる複数
のバッファを用意し、言語パーザが出力するバッファ
と、描画オブジェクト分配処理部12が処理するバッフ
ァに異なるバッファを割り当て、一方が処理し終わると
他方のバッファの解放を待つようにする。これにより、
言語パーザ11とデータをやり取りする部分でのオーバ
ヘッドを低減でき、言語パーザ11と描画オブジェクト
分配処理部12がそれぞれ独立に動作できるようにな
る。
【0175】[構成例2]実施例で説明した方法は、処
理の終了した描画オブジェクト処理部13に対して次々
に描画オブジェクトを分配することで、結果として負荷
の均一化が図れることを想定している。しかし、極端に
処理時間が異なる描画オブジェクトを分配してしまう
と、結果としてその描画オブジェクトの処理を待つこと
になってしまう。
【0176】一般的に、塗り、軌跡、文字はほぼ同じよ
うなオーダーで処理できるが、イメージの場合には、他
のオブジェクトより処理時間が掛かる。
【0177】そこで、描画オブジェクト処理部13がイ
メージオブジェクトを受け取った場合、その描画オブジ
ェクト処理部13が他の描画オブジェクト処理部13を
停止し、イメージオブジェクトの処理を並列に実行する
ようにする。そして、イメージオブジェクトの処理が終
了した段階で、停止した描画オブジェクト処理部13の
実行を再開する。
【0178】このように、極端に処理時間のかかる描画
オブジェクトについては、描画オブジェクト処理部13
内で更に並列処理を行なう。そうすれば、限られたCP
U資源の中で、極端に処理の遅い描画オブジェクトを受
け持った描画オブジェクト処理部13の終了を待つこと
がなくなり、結果として並列処理の効率を落とさずに処
理することが可能になる。
【0179】[構成例3]実施例で説明した方法は、ス
キャンライン分配処理部16がページを構成するスキャ
ンラインを等分して、各スキャンライン処理部17に分
配していた。しかし、この方法では、各スキャンライン
処理部17の負荷が均一にならないため、処理待ちによ
り並列化効果が抑えられてしまう。
【0180】そこで、DLバッファ14への入力時にD
LのY高さを副走査軸に射影し、各スキャンラインごと
に何本のDLが存在するかの集計を行なう。スキャンラ
イン分配処理部16は、このスキャンライン単位の集計
結果を用いて負荷予測値を計算し、負荷予測値が等しく
なるようにページ内を分割して、スキャンライン処理部
17に分配する。
【0181】このように、スキャンライン処理部17に
割り当てるスキャンライン数を調整することで、スキャ
ンライン処理部17の負荷が均一化され、待ち時間の低
減により並列処理の効率が向上する。
【0182】[構成例4]実施例で説明した方法は、各
スキャンライン処理部17に対して、DLバッファ14
内にある全てのDLをコピーして渡していた。そのた
め、メモリ使用量がスキャンライン処理部17の並列度
数分増加するため、効率が悪くなっている。
【0183】そこで、各スキャンライン処理部17が、
アクティブテーブルにDLを登録する時に、DLバッフ
ァ14からDLをコピーするようにすれば、必要になっ
たDLだけをコピーするため、メモリ使用効率が改善さ
れる。
【0184】そのためには、スキャンライン処理部17
が処理すべき領域に含まれるDLだけを抽出する必要が
ある。
【0185】一つの方法は、描画処理をしないでアクテ
ィブテーブルへの登録、更新作業を行い、対象とするス
キャンラインまで空送りすることである。すなわち、ペ
ージの先頭スキャンラインから領域開始スキャンライン
まで、スキャンラインごとにDLを取り出して、アクテ
ィブテーブルに登録し、描画処理をせずにアクティブテ
ーブルの更新を行なう。これを領域開始スキャンライン
まで繰り返せば、アクティブテーブルの初期状態として
正しい状態が保証される。この作業は、スキャンライン
分配処理部16が各スキャンライン処理部17に分配す
る領域を決定する際に行い、領域を決定した段階のアク
ティブテーブルの状態対象とするスキャンライン処理部
17に渡せば良い。
【0186】もう一つの方法は、DLのY長さに着目し
たDLバッファでの分類保存である。例えば、DLをあ
る閾値をもとに2つに分類するとする。そして、閾値よ
り長いDLを保持するDLバッファと、閾値より短いD
Lを保持する部分に分ける。そして、スキャンライン分
配処理部16が領域を決定した際に、閾値より長いDL
は全てのスキャンライン処理部17に分配する。閾値よ
り短いDLは、各領域の始まるスキャンラインより閾値
分だけ前にあるスキャンラインから領域の終わるスキャ
ンラインまでに存在するDLを分配するようにする。こ
のようにすれば、簡単な判断で必要なDLが必ず含まれ
て分配することができる。
【0187】また、図28に示した状態変数やワーク領
域も、先に全て用意せずに、アクティブテーブルに初め
てDLが登録された時に確保してもよいし、分配された
領域内にどのIDのオブジェクトが存在するかを調べて
から必要な分だけ確保してもよい。
【0188】[構成例5]実施例においては、描画オブ
ジェクトの外形をベクター形式のDLで表現したが、描
画オブジェクトの内部を表す基本図形で表現してもよ
い。基本図形とはランレングス形式、台形、三角形など
を指す。また、複数の基本図形を組み合せて用いてもよ
い。
【0189】例えば、描画オブジェクト処理部13が描
画オブジェクトの内部を表す台形を生成する。DLバッ
ファの代わりに基本図形バッファを用意して、DLと同
様に基本図形の上端または下端のかかるスキャンライン
に登録する。スキャンライン処理部17はDLの場合と
同様にアクティブテーブルを操作して、スキャンライン
内の描画処理を行なう。この時に、DLの場合は対応す
るDLペアで図形の内部を表現したが、基本図形の場合
は内部を表すデータになっているため、スキャンライン
にかかる基本図形の一端に出会った場合にDLにおける
図形の内部開始状態とし、基本図形のもう一端に出会っ
た場合にDLにおける図形の内部終了状態として扱えば
よい。
【0190】[構成例6]実施例においては、出力形式
がランレングスであったが、ランレングス出力処理部1
8が受け取ったランレングスを更に圧縮して出力しても
良い。
【0191】
【発明の効果】以上のとおり、本発明によれば、二種類
の並列処理を組み合せ、最低限の依存関係を調整するこ
とで、各並列処理が高い効率で動作する。その結果、高
速な描画処理が可能となる。特に、中間データとしてD
Lを採用しページ蓄積に要するロック待ちを低減した。
また、スキャンライン独立な描画アルゴリズムを採用し
たことで、スキャンライン処理部が柔軟にページを分割
できることで負荷が均一化され処理待ちを低減する。以
上のことから、並列処理の効果を高めることができる。
【図面の簡単な説明】
【図1】 本発明の実施例による描画処理装置の構成を
示すブロック図である。
【図2】 言語パーザが出力するデータオブジェクトの
構成を示す図である。
【図3】 判定規則を説明する図である。
【図4】 線分の接続形状の種類を説明する図である。
【図5】 線分の端点形状の種類を説明する図である。
【図6】 言語パーザの処理の流れ説明する図である。
【図7】 描画データの例を示す図である。
【図8】 第一ステップの処理の流れを説明する図であ
る。
【図9】 ディスプレイリストの説明図である。
【図10】 図9に示すディスプレイリストを具体的に
説明する図である。
【図11】 ディスプレイリストがDLバッファに登録
された状態を説明する図である。
【図12】 データオブジェクト列の具体的な例を示す
図である。
【図13】 図12に示すデータオブジェクトのページ
上での配置を示す図である。
【図14】 図12に示すデータオブジェクトのうち、
描画オブジェクトが描画属性表に登録された状態を説明
する図である。
【図15】 図12に示すデータオブジェクトのうち、
クリップオブジェクトが描画属性表に登録された状態を
説明する図である。
【図16】 図12に示すデータオブジェクトのうち、
クリップオブジェクトの依存関係を表現する表を説明す
る図である。
【図17】 第二ステップの処理の流れを説明する図で
ある。
【図18】 スキャンライン処理部の処理の流れを説明
する図である。
【図19】 図18に示すアクティブテーブルの更新処
理をより詳細に説明する図である。
【図20】 図18に示す塗りつぶし・クリップ処理を
より詳細に説明する図である。
【図21】 図20に示す内部判断処理をより詳細に説
明する図である。
【図22】 本発明の実施例における塗りつぶし・クリ
ップ処理の具体例を示す図である。
【図23】 図22に示す描画処理におけるデータオブ
ジェクト列を示す図である。
【図24】 図22に示す具体例に対応させた、スキャ
ンラインとディスプレイリストの関係を示す図である。
【図25】 図22に示す具体例に対応させた、描画オ
ブジェクト処理部が外形形状をDLバッファに登録した
後の状態を示す図である。
【図26】 図22に示す具体例に対応させた、描画オ
ブジェクト処理部が属性情報を描画状態表に登録した後
の状態を示す図である。
【図27】 図22示す具体例に対応させた、クリップ
オブジェクトの依存関係を表現する表の状態を示す図で
ある。
【図28】 図22示す具体例に対応させた、スキャン
ライン分配処理部が各スキャンライン処理部に渡すデー
タを説明する図である。
【図29】 図24のY3スキャンラインにおける描画
状態表および内部状態の変化を説明する図である。
【図30】 図24のY3スキャンラインにおける描画
状態表および内部状態の変化を説明する図である。
【符号の説明】
11 言語パーザ 12 データオブジェクト分配処理部 13 描画オブジェクト処理部 14 ディスプレイリストバッファ 15 描画属性表 16 スキャンライン分配処理部 17 スキャンライン処理部 18 ランレングス出力処理部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 坂本 彰司 神奈川県足柄上郡中井町境430 グリー ンテクなかい 富士ゼロックス株式会社 内 (72)発明者 川本 浩史 神奈川県足柄上郡中井町境430 グリー ンテクなかい 富士ゼロックス株式会社 内 (56)参考文献 特開 平9−171564(JP,A) 特開 平5−318837(JP,A) (58)調査した分野(Int.Cl.7,DB名) B41J 21/00 B41J 5/30 G06F 3/12 G06T 11/00

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】 少なくとも、文字、図形または画像のい
    ずれかの記述命令と前記記述命令に対するクリップ命令
    描画命令として含み、所定の記述言語で記載されて
    いる描画データを、スキャンライン毎のラスタライズデ
    ータとして出力する描画処理装置において、 前記描画データを入力する描画データ入力手段と、 並列に動作し、それぞれ、前記描画命令の外形を、前記
    スキャンラインとの関係のもとにベクターに表現する複
    数の描画データ処理手段と、前記描画データを前記複数の描画データ処理手段に分配
    する第1分配手段と、 前記描画命令の前記描画データ入力手段での入力順序に
    基づく順序情報、および、前記描画命令のうち前記記述
    命令と前記クリップ命令との対応情報を、前記描画命令
    との関係のもとに抽出する手段と、 前記描画命令の前記ベクターを所定数の前記スキャンラ
    イン毎に分配する第2分配手段と、 前記第2分配手段で分配された前記ベクターの前記描画
    命令が有する前記順序情報および前記対応情報を、前記
    第2分配手段で分配された前記ベクターに対応付ける手
    段と、 並列に動作し、それぞれ前記第2分配手段で分配された
    前記描画命令の前記ベクターと前記ベクターに対応付け
    られた前記順序情報および前記対応情報とを、直接かつ
    前記スキャンラインに沿った一走査で最終画像に変換す
    る複数のスキャンライン処理手段とを備えたことを特徴
    とする描画処理装置。
  2. 【請求項2】 前記順序情報、および、対応関係を記憶
    する描画属性記憶手段を備えていること特徴とする請求
    項1記載の描画処理装置。
  3. 【請求項3】 前記描画データのベクターを記憶するベ
    クター記憶手段を備えていること特徴とする請求項1ま
    たは2記載の描画処理装置。
  4. 【請求項4】 前記描画命令の前記ベクターには、前記
    記述命令のベクターと前記クリップ命令のベクターとが
    含まれていることを特徴とする請求項1、2または3記
    載の描画処理装置。
  5. 【請求項5】 前記スキャンライン処理手段は、 前記ベクターと前記スキャンラインとの交差点を決定す
    る手段と、 前記スキャンライン毎の前記交差点について、前記順序
    情報および前記対応情報に基づき走査方向に向かって、
    前記交差点間を塗る、或るいは、塗らないの判断をおこ
    なう塗りつぶし判断手段と、 前記判断手段の判断に基づいて前記交差点間で塗り処理
    を行う塗り処理手段とを備えていることを特徴とする請
    求項1、2、3または4記載の描画処理装置。
  6. 【請求項6】 前記塗りつぶし判断手段は、 前記順序情報および前記対応情報に基づき、判断開始ス
    キャンラインの走査始点から最初の前記交差点までの塗
    る、或るいは、塗らないの状態を決定する初期状態決定
    手段と、 前記初期状態決定手段の決定および前記順序情報および
    前記対応情報に基づき、前記最初の前記交差点から判断
    開始スキャンラインの走査方向に見て次の前記交差点ま
    での間の塗る、或るいは、塗らないの状態を決定する状
    態決定手段とを備えていることを特徴とする請求項5記
    載の描画処理装置。
  7. 【請求項7】 前記最終画像は、ビツトマップ画像であ
    ることを特徴とする1、2、3、4、5または6記載の
    描画処理装置。
  8. 【請求項8】 前記最終画像は、ランレングス出力画像
    であることを特徴とする1、2、3、4、5または6記
    載の描画処理装置。
  9. 【請求項9】 少なくとも、文字、図形または画像のい
    ずれかの記述命令と前記記述命令に対するクリップ命令
    とを描画命令として含み、所定の記述言語で記載されて
    いる描画データを、スキャンライン毎のラスタライズデ
    ータとして出力する描画処理装置において、 前記描画データを入力する描画データ入力手段と、 並列に動作し、それぞれ、前記描画命令を、前記スキャ
    ンラインとの関係のもとに少なくとも一つの特定の基本
    図形を含む中間形式の中間描画データに変換する複数の
    中間描画データ処理手段と、前記描画データを前記複数の中間描画データ処理手段に
    分配する第1分配手段と、 前記描画命令の前記描画データ入力手段での入力順序に
    基づく順序情報、および、前記描画命令のうち前記記述
    命令と前記クリップ命令との対応情報を、前記描画命令
    との関係のもとに抽出する手段と、前記描画命令の前記
    中間描画データを所定数の前記スキャンライン毎に分配
    する第2分配手段と、 前記分配手段で分配された前記中間描画データの前記描
    画命令が有する前記順序情報および前記対応情報を、前
    第2分配手段で分配された前記中間描画データに対応
    付ける手段と、 並列に動作し、それぞれ、前記第2分配手段で分配され
    た前記描画命令の前記中間描画データと前記中間描画デ
    ータに対応付けられた前記順序情報および前記対応情報
    とを、直接かつ前記スキャンラインに沿った一走査で最
    終画像に変換する複数のスキャンライン処理手段とを備
    えたことを特徴とする描画処理装置。
  10. 【請求項10】 少なくとも、文字、図形または画像の
    いずれかの記述命令と前記記述命令に対するクリップ命
    令とを描画命令として含み、所定の記述言語で記載され
    ている描画データを、スキャンライン毎のラスタライズ
    データとして出力する描画処理方法において、 前記描画データを入力する描画データ入力ステップと、前記描画データの描画命令を分配するステップと、 並列に動作し、それぞれ、分配された前記描画命令の外
    形を、前記スキャンラインとの関係のもとにベクターに
    表現する第1の並列処理ステップと、 前記描画命令の入力順序に基づく順序情報、および、前
    記描画命令のうち前記記述命令と前記クリップ命令との
    対応情報を、前記描画命令との関係のもとに抽出する抽
    出ステップと、 前記描画命令の前記ベクターを所定数の前記スキャンラ
    イン毎に分配する分配ステップと、 前記分配ステップで分配された前記ベクターの前記描画
    命令が有する前記順序情報および前記対応情報を、前記
    分配ステップで分配された前記ベクターに対応付ける対
    応づけステップと、 並列に動作し、それぞれ、前記分配ステップで分配され
    た前記描画命令の前記ベクターと前記ベクターに対応付
    けられた前記順序情報および前記対応情報とを、直接か
    つ前記スキャンラインに沿った一走査で最終画像に並列
    に変換する第2の並列処理ステップとを有することを特
    徴とする描画処理方法。
  11. 【請求項11】 少なくとも、文字、図形または画像の
    いずれかの記述命令と前記記述命令に対するクリップ命
    令とを描画命令として含み、所定の記述言語で記載され
    ている描画データを、スキャンライン毎のラスタライズ
    データとして出力する描画処理方法において、 前記描画データを入力する描画データ入力ステップと、前記描画データの描画命令を分配するステップと、 並列に動作し、それぞれ、分配された前記描画命令を、
    前記スキャンラインとの関係のもとに並列に少なくとも
    一つの特定の基本図形を含む中間形式の中間描画データ
    に変換する第1の並列処理ステップと、 前記描画命令の入力順序に基づく順序情報、および、前
    記描画命令のうち前記記述命令と前記クリップ命令との
    対応情報を、前記描画命令との関係のもとに抽出する抽
    出ステップと、 前記描画命令の前記中間描画データを所定数の前記スキ
    ャンライン毎に分配する分配ステップと、 前記分配ステップで分配された前記中間描画データの前
    記描画命令が有する前記順序情報および前記対応情報
    を、前記分配ステップで分配された前記中間描画データ
    に対応付ける対応づけステップと、 並列に動作し、それぞれ、前記分配ステップで分配され
    た前記描画命令の前記中間描画データと前記中間描画デ
    ータに対応付けられた前記順序情報および前記対応情報
    とを、直接かつ前記スキャンラインに沿った一走査で最
    終画像に変換する第2の並列処理ステップとを有するこ
    とを特徴とする描画処理方法。
  12. 【請求項12】 少なくとも、文字、図形または画像の
    いずれかの記述命令と前記記述命令に対するクリップ命
    令とを描画命令として含み、所定の記述言語で記載され
    ている描画データに基づいて、前記記述命令に対応する
    第1のオブジェクトと、前記クリップ命令に対応する第
    2のオブジェクトとを生成し、前記第1のオブジェクト
    は関連する前記第2のオブジェクトの情報を含むように
    することを特徴とする描画処理用言語パーザ。
JP31743197A 1997-11-18 1997-11-18 描画処理装置および方法 Expired - Fee Related JP3413829B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31743197A JP3413829B2 (ja) 1997-11-18 1997-11-18 描画処理装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31743197A JP3413829B2 (ja) 1997-11-18 1997-11-18 描画処理装置および方法

Publications (2)

Publication Number Publication Date
JPH11147344A JPH11147344A (ja) 1999-06-02
JP3413829B2 true JP3413829B2 (ja) 2003-06-09

Family

ID=18088151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31743197A Expired - Fee Related JP3413829B2 (ja) 1997-11-18 1997-11-18 描画処理装置および方法

Country Status (1)

Country Link
JP (1) JP3413829B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000141811A (ja) 1998-11-11 2000-05-23 Nec Corp プリンタシステム
AUPS134202A0 (en) 2002-03-25 2002-05-09 Canon Kabushiki Kaisha System and method for optimizing halftoning printer performance
JP4818389B2 (ja) 2009-04-07 2011-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列処理によりデータ処理を行う印刷装置および制御方法
JP2012200956A (ja) * 2011-03-24 2012-10-22 Fuji Xerox Co Ltd 画像処理システムおよび画像処理プログラム
JP5767501B2 (ja) * 2011-04-08 2015-08-19 キヤノン株式会社 画像処理装置及び画像処理方法
JP5766059B2 (ja) * 2011-07-25 2015-08-19 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
JP5874385B2 (ja) * 2011-12-26 2016-03-02 コニカミノルタ株式会社 画像形成装置、画像形成方法及びプログラム

Also Published As

Publication number Publication date
JPH11147344A (ja) 1999-06-02

Similar Documents

Publication Publication Date Title
JP3618838B2 (ja) 画像出力方法
US5600768A (en) Image generation with dynamically consolidated list of image data
JP3618839B2 (ja) 画像出力方法
JPH02197962A (ja) 電子ファイル装置
US6167410A (en) Document processing apparatus for adding predetermined design types to an original document
JP2006018842A (ja) グラフィックオブジェクトを描画する方法
JP3413829B2 (ja) 描画処理装置および方法
JPH09185721A (ja) 画像形成装置
JP6379516B2 (ja) 上塗りコーティング処理のための機構
JP2681367B2 (ja) 図形処理方法及びその装置
CN112463141B (zh) 一种基于bpmn的微服务工作流部署方法
US5920324A (en) Character pattern producing apparatus capable of producing character pattern having connected character elements
EP0849710A2 (en) Drawing processing apparatus
JP4429212B2 (ja) 画像記述データ処理方法、装置及びプログラム
JP4143613B2 (ja) 描画方法、描画装置
JP3628523B2 (ja) 情報処理装置およびパターン生成プログラムを記録した記録媒体
JP2007122188A (ja) 画像形成装置及び画像処理方法、並びにプログラム
JPH1058770A (ja) 電子印刷装置
JP2004164549A (ja) 画像処理装置、描画処理方法及び該方法を実行するためのプログラム
JP2006072834A (ja) 画像形成装置および方法
JP4574347B2 (ja) 画像処理装置、方法及びプログラム
JP3119051B2 (ja) 印字情報変換方法およびその装置
JP3617225B2 (ja) 描画処理装置
JP3496709B2 (ja) 描画処理装置
JPH1185428A (ja) 画像形成方法及び画像形成装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080404

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090404

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100404

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110404

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120404

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130404

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees