(57)【特許請求の範囲】
【請求項１】
ページ記述言語を入力として描画処理を行う描画処理装置において、
前記ページ記述言語から変換されたオブジェクト単位のデータである描画オブジェクトを描画領域の少なくとも一方向から順番にとりだせるように格納する描画オブジェクト格納手段と、
前記描画オブジェクトを前記描画オブジェクト格納手段から読み出して、内部表現規約である描画コードに展開する描画オブジェクト展開手段と、
前記描画コードの並列描画処理を走査線単位で行う複数の描画処理手段と、
複数の前記描画処理手段から共通にアクセス可能な共有メモリ構造をとり、前記描画コードを描画領域の少なくとも一方向から順番にとりだせるように格納するメモリ領域が確保された描画コード格納手段と、
前記描画処理手段の進行状況として、描画処理位置を管理し、最も遅い描画位置の変化に対応して不要な描画コードを削除して、前記描画コードの格納に必要となる前記描画コード格納手段の前記メモリ領域を開放しながら、前記描画コードの展開範囲の指示及び制御を行う進行管理手段と、
を有することを特徴とする描画処理装置。
【請求項２】
前記描画コード格納手段は、前記描画コードの終了位置を登録することを特徴とする請求項１記載の描画処理装置。
【請求項３】
前記進行管理手段は、並列動作する前記描画処理手段の最も速いものを監視し、この位置よりも常に進んだ位置に対して前記描画コードの展開範囲を前記描画オブジェクト展開手段に指示することを特徴とする請求項１記載の描画処理装置。
【請求項４】
前記進行管理手段は、並列動作する前記描画処理手段の最も遅いものを監視し、この位置よりも前に処理した領域の前記描画コードの開放を前記描画コード格納手段に指示することを特徴とする請求項１記載の描画処理装置。
【請求項５】
前記描画処理手段は、処理位置を進める際に前記進行管理手段あるいは前記描画コード格納手段に対して前記描画コードの展開処理が済んでいるかを確認し、済んでいない場合には再起動要求を前記進行管理手段に登録し、一時停止することを特徴とする請求項１記載の描画処理装置。
【請求項６】
前記進行管理手段は、単位描画領域に関する前記描画コードの展開が終るたびに、あるいはまとまった量の単位描画領域に関する前記描画コードの展開が終るたびに前記描画コードの展開を参照する描画コード展開済み位置管理手段と、前記描画コードの展開待ちの前記描画処理装置の再起動要求を登録する描画コード展開時イベント処理機構と、を含むことを特徴とする請求項１記載の描画処理装置。
【請求項７】
前記再起動要求は、前記描画コード展開時イベント処理機構へ登録される際に、前記描画コードの展開が済んでいないことを発見した位置に関係づけて登録されることを特徴とする請求項６記載の描画処理装置。
【請求項８】
前記再起動要求は、前記描画コード展開時イベント処理機構へ登録される際に、前記描画コードの展開が済んでいないことを発見した位置から処理の進行方向に向かって先の位置に登録されることを特徴とする請求項６記載の描画処理装置。
【請求項９】
前記再起動要求は、前記描画コード展開時イベント処理機構へ登録される際に、前記描画コードの展開が済んでいないことを発見した位置から処理の進行方向に向かって予め定められた距離分先の位置に登録されることを特徴とする請求項６記載の描画処理装置。
【請求項１０】
前記再起動要求は、前記描画コード展開時イベント処理機構へ登録される際に、前記描画コードの展開が済んでいないことを発見した位置から処理の進行方向に向かって先の位置に登録され、かつ、この距離は前記描画コード格納手段内に格納済みの前記描画コードの量に応じて変動することを特徴とする請求項６記載の描画処理装置。
【請求項１１】
前記描画処理装置は、前記描画処理手段が出力した出力データを格納する出力データ格納手段を有し、前記出力データ格納手段は、描画領域の一部に対応するだけの処理結果データの格納領域を備えると共に、処理結果を受け付ける描画領域の範囲を保持する出力データ格納範囲保持手段を備えることを特徴とする請求項１記載の描画処理装置。
【請求項１２】
前記出力データ格納手段が保持する描画領域は、前記進行管理手段が管理する最も遅い前記描画処理装置の処理位置に連動して変化することを特徴とする請求項１１記載の描画処理装置。
【請求項１３】
前記描画処理装置は、処理位置を進める際に前記出力データ格納範囲保持手段に保持された描画領域が範囲内であるかどうかを調べることを特徴とする請求項１１記載の描画処理装置。
【請求項１４】
前記描画処理装置は、担当する描画領域に処理位置を進める際に前記出力データ格納範囲保持手段に保持された範囲内であるかどうかを調べることを特徴とする請求項１１記載の描画処理装置。
【請求項１５】
前記描画処理装置は、前記出力データ格納範囲保持手段に保持された範囲内でない位置に処理を進めようとした場合に、前記進行管理手段に対して前記再起動を予約して一時停止することを特徴とする請求項１１記載の描画処理装置。
【請求項１６】
前記進行管理手段は、最も遅い前記描画処理手段の処理位置の変化を監視して、前記出力データ格納手段に格納する描画範囲の最大値と最小値を管理する出力データ格納範囲変更時イベント処理機構と、出力データの格納範囲から外れることを原因として停止した前記描画処理装置の前記再起動要求を登録する出力データ格納範囲変更時イベント処理機構と、を含むことを特徴とする請求項１１記載の並列描画処理装置。
【請求項１７】
前記出力データ格納範囲変更時イベント処理機構への登録は、前記描画処理手段が、前記出力データ格納手段の範囲外であると判定したその処理位置に登録されることを特徴とする請求項１６記載の描画処理装置。
【請求項１８】
前記出力データ格納範囲変更時イベント処理機構への登録は、前記描画処理手段が、前記出力データ格納手段の範囲外であると判定したその処理位置よりも処理の進行方向に向かって先の位置に登録されることを特徴とする請求項１６記載の描画処理装置。
【請求項１９】
前記出力データ格納範囲変更時イベント処理機構の参照は、新たな出力データ格納範囲よりも、処理方向に対して後方だけを参照することを特徴とする請求項１６記載の描画処理装置。
【請求項２０】
前記描画コード展開時イベント処理機構の参照は、描画コードの展開が終了した位置よりも、処理方向に対して後方だけを参照することを特徴とする請求項６記載の描画処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、描画処理装置に関し、特にページ記述言語を入力として描画処理を行う描画処理装置に関する。
【０００２】
【従来の技術】
現在、ページプリンタで文書を印刷する場合には、Ｉｎｔｅｒｐｒｅｓｓ（米国ゼロクッス社の登録商標）やＰｏｓｔＳｃｒｉｐｔ（米国アドビ・システムズ社の商標）などのＰＤＬ（ページ記述言語）を入力としてページプリンタに印刷イメージを指示している。
【０００３】
このようなＰＤＬを入力として印刷を実行する際には、ＰＤＬ形式のデータからラスタ出力デバイスに適した形式のデータに変換するイメージング処理を行う必要がある。ところが、一般にイメージング処理にかかる時間は非常に長く、このことは特に高速のページプリンタに出力するシステムなどで問題となっている。
【０００４】
例えば、カラーの高速プリンタは毎分４０枚以上の出力能力があるものが発表されているにもかかわらず、イメージング処理にかかる時間は、１０数秒から数分かかるものがある。このため高価な高速プリンタの能力を十分に生かせなかった。したがって、イメージング処理を高速に行うために、並列処理を行う必要がある。
【０００５】
例えば、特開平１−３１８１７４号公報では、描画領域を走査線単位にまで分割し、インタリーブして複数の描画処理装置に割り当てておき、分割された描画領域を複数の描画処理装置に送って処理を行っている。
【０００６】
また、特開平７−１５２３５７号公報では、描画要素を副走査方向のバンド領域ごとに分割して保持し、そのバンド領域ごとに並列処理を行っている。
【０００７】
【発明が解決しようとする課題】
しかし、上記で説明した前者の従来技術では、描画要素の入力毎に順に分割して分配するため、最後に出現する描画要素が描画領域上のどこに影響を与えるかわからず、描画の最初から最後まで描画領域全体に対応するバッファを用意しておく必要があり、装置規模が大きくなるという問題があった。
【０００８】
また、後者の従来技術では、バンド幅が大きいと並列度があげられない上、描画領域上の負荷の偏りの影響を受けてしまい、負荷の重いバンド領域に対しての処理がボトルネックとなってしまうという問題があった。
【０００９】
さらに、分割を細かくすると描画要素をバンド領域毎に分割する処理量が大きくなり、大きなオーバヘッドになる上、分割後のデータ量が非常に大きくなりメモリ量が増大するという問題があった。
【００１０】
本発明はこのような点に鑑みてなされたものであり、負荷のばらつきによる並列描画処理の性能低下の抑制（高速並列描画処理の実現）と、並列描画処理を行う上でのメモリ容量の削減を行う描画処理装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明では上記課題を解決するために、ページ記述言語を入力として描画処理を行う描画処理装置において、前記ページ記述言語から変換されたオブジェクト単位のデータである描画オブジェクトを描画領域の少なくとも一方向から順番にとりだせるように格納する描画オブジェクト格納手段と、前記描画オブジェクトを前記描画オブジェクト格納手段から読み出して、内部表現規約である描画コードに展開する描画オブジェクト展開手段と、前記描画コードの並列描画処理を走査線単位で行う複数の描画処理手段と、複数の前記描画処理手段から共通にアクセス可能な共有メモリ構造をとり、前記描画コードを描画領域の少なくとも一方向から順番にとりだせるように格納するメモリ領域が確保された描画コード格納手段と、前記描画処理手段の進行状況として、描画処理位置を管理し、最も遅い描画位置の変化に対応して不要な描画コードを削除して、前記描画コードの格納に必要となる前記描画コード格納手段の前記メモリ領域を開放しながら、前記描画コードの展開範囲の指示及び制御を行う進行管理手段と、を有することを特徴とする描画処理装置が提供される。
【００１２】
ここで、描画オブジェクト格納手段は、ページ記述言語から変換されたオブジェクト単位のデータである描画オブジェクトを描画領域の少なくとも一方向から順番にとりだせるように格納する。描画オブジェクト展開手段は、描画オブジェクトを描画オブジェクト格納手段から読み出して、内部表現規約である描画コードに展開する。描画処理手段は、描画コードの並列描画処理を走査線単位で行う。描画コード格納手段は、複数の描画処理手段から共通にアクセス可能な共有メモリ構造をとり、描画コードを描画領域の少なくとも一方向から順番にとりだせるように格納するメモリ領域が確保されている。進行管理手段は、描画処理手段の進行状況として、描画処理位置を管理し、最も遅い描画位置の変化に対応して不要な描画コードを削除して、描画コードの格納に必要となる描画コード格納手段のメモリ領域を開放しながら、描画コードの展開範囲の指示及び制御を行う。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態を図面にもとづいて説明する。なお、本発明は、クライアントとなるコンピュータからネットワークあるいは専用通信路などを通じて、描画データの送信を受けとり、これをプリンタ等の出力機用のデータに変換する装置内にあるものとする。さらに、本発明は複数の演算機能を持つ処理装置や共有メモリ装置あるいは通信路を介して結合されたシステム上に構築される。
【００１４】
図１は、本発明の描画処理装置の原理図である。まず、図示しない入力手段によりページ記述言語６（ＰＤＬ）などの描画入力フォーマットが、描画オブジェクト格納手段１で描画オブジェクトの列に変換されて格納される。この際に描画オブジェクト格納手段１は、描画領域の少なくとも一方向から順番にとりだせるように、描画オブジェクトを整理して格納する。
【００１５】
描画オブジェクト展開手段２は、後述する進行管理手段３からの指示にしたがって、指示された描画領域から始まる描画オブジェクトを描画オブジェクト格納手段１から読み込み、内部表現規約である描画コードに展開する。そして、描画コード格納手段４は、少なくとも一方向から順番にとりだせるように、描画コードを格納する。
【００１６】
複数の描画処理手段２０ａ〜２０ｎは、進行管理手段３からの制御を受けながら、描画コード格納手段４内の描画コードを順に読み込み、割り当てられた特定の描画領域に対して描画処理を行う。
【００１７】
また、描画領域の分割は、走査線方向に細長い描画領域になるように行う。これは、走査線ごとの分割でも良いし、連続する数本から数十本あるいは数百本分の描画領域ごとに分割してもよい。ただし、分割した描画領域の割り当ては、飛び飛びの描画領域が同一の描画処理手段に割り当てられるようにする。描画処理の結果は、それぞれ、出力データ格納手段５に転送される。
【００１８】
出力データ格納手段５は、描画処理手段２０ａ〜２０ｎの処理結果を、副走査線方向に順番に出力装置に転送するためのものである。並列に動作する描画処理手段２０ａ〜２０ｎの結果は必ずしも、副走査線方向に順に得られるとは限らないため、出力手段（図示せず）に送信する前に、出力手段が要求する順に並び替えるためのものである。
【００１９】
ただし、出力手段が描画処理手段２０ａ〜２０ｎの出力をそのまま受け取ることができる場合には、各描画処理手段が、そのまま出力手段にデータを転送すればよいので、この場合は出力データ格納手段５を特に設ける必要はない。
【００２０】
進行管理手段３は、描画処理手段２０ａ〜２０ｎの処理の進行を監視する、あるいは、各手段から処理の進行の報告を受けることにより描画処理等の処理の進行状況をとらえる。（図では接続関係を破線で示している。）また、この情報を利用して描画オブジェクト展開手段２や出力データ格納手段５に動作の指示を行う。
【００２１】
図２は、本発明の描画処理装置が適用されるシステムの概念図である。ネットワーク１００に接続されたネットワークインタフェース２００を介して、描画処理装置１０が接続される。そして、描画処理装置１０からの処理結果を出力する出力装置３００が描画処理装置１０に接続される。
【００２２】
システムの動作としては、図示しないクライアント・コンピュータから、専用線等のネットワーク１００を介して描画出力用のデータが送られる。この描画出力用のデータはネットワークインタフェース２００を介して、描画処理装置１０に受信され処理される。そして、処理の終ったデータは出力装置３００に転送されて、紙やフィルムあるいは高解像度の媒体上にイメージが再現される。
【００２３】
図３は、描画処理装置の全体の処理の流れを示すフローチャートである。描画処理が開始されると、システムの初期化が行われる（ステップＳ１）。そして、入力データが読み込まれた後、解釈されて描画オブジェクトが生成され、描画オブジェクト格納手段１に格納される（ステップＳ２）。
【００２４】
描画オブジェクト格納手段１内に描画オブジェクトが蓄積されると、進行管理手段３に対して処理の開始が指示され、この進行管理手段３の制御の下に描画処理が並列に行われる（ステップＳ３）。進行管理手段３が描画処理の終了を検知すると、進行管理手段３は出力データ格納手段５に対して、まだ格納している出力データを出力するように命令し、処理が終る（ステップＳ４）。
【００２５】
次に、描画処理装置の各手段について詳しく説明する。図４は、描画オブジェクト格納手段１の構成を示す図である。描画オブジェクト格納手段１は、描画オブジェクト格納領域１ａと、描画オブジェクト整列機構１ｂと、から構成される。
【００２６】
描画オブジェクト格納領域１ａは、１ページ分などの、まとまった量の描画オブジェクトを格納するための記憶領域であり、半導体メモリやディスク装置などのような通常の記憶装置や公知の記憶装置管理装置などにより容易に構成することができる。
【００２７】
描画オブジェクト整列機構１ｂは、各描画オブジェクトを少なくとも描画領域の一方向の順に取り出すための整列機構であり、描画オブジェクト格納領域１ａ内の各描画オブジェクトへの参照ポインタなどを描画領域上の位置情報と関係づけて管理する。
【００２８】
また、描画オブジェクト整列機構１ｂは、描画オブジェクト格納領域１ａに格納した描画オブジェクトを並び替える公知の並び替え機構でもよいし、描画オブジェクトの格納時に特別な構造に描画オブジェクトのデータを組み上げるデータ構造でもよい。ここでは、説明の簡単のため副走査線方向の位置に対応して、描画データを登録することができる保持機構を備えたテーブル形式のデータ構造を用いたものとする。
【００２９】
図５は、描画オブジェクト格納手段１の処理の流れを示すフローチャートである。描画オブジェクト格納手段１は、描画オブジェクト格納領域１ａと描画オブジェクト整列機構１ｂとの初期化を行う（ステップＳ１０）。ここで描画オブジェクトの入力が終わりかどうかを調べる（ステップＳ１１）。入力が終われば終了し、入力が続いている場合は、描画オブジェクトを読み込む（ステップＳ１２）。そして、格納する領域を描画オブジェクト格納領域１ａから確保して（ステップＳ１３）、格納する（ステップＳ１４）と共に、描画オブジェクト整列機構１ｂに登録する（ステップＳ１５）。このような処理が１ページを構成する描画オブジェクトがなくなるまで、あるいは、予め定められた量の描画オブジェクトを処理するまで繰り返される。
【００３０】
次に、描画オブジェクト展開手段２について詳しく説明する。図６は、描画オブジェクト展開手段２の処理の流れを示すフローチャートである。描画オブジェクト展開手段２は、処理の開始時に内部の記憶手段の初期化を行い（ステップＳ２０）、その後、進行管理手段３からの処理開始命令を待つ（ステップＳ２１）。ここで、進行管理手段３から終了が伝えられたかどうかが判断される（ステップＳ２２）。終了が伝えられた場合は終了し、そうでなければ展開処理の開始が、進行管理手段３から展開処理の範囲情報と共に伝えられ、展開処理の範囲情報を格納する（ステップＳ２３）。
【００３１】
そして、格納された展開範囲にしたがって処理位置を設定し（ステップＳ２４）、処理範囲内かどうかが判断される（ステップＳ２５）。処理範囲外であればステップＳ２１に戻り、そうでなければ描画オブジェクトがあるかどうかが判断される（ステップＳ２６）。描画オブジェクトがない場合は、さらに処理位置を進め（ステップＳ３０）、そうでなければ描画オブジェクト格納手段１に格納されている描画オブジェクトを読みだす（ステップＳ２７）。そして、展開して描画コードを生成し（ステップＳ２８）、描画コード格納手段４に格納する（ステップＳ２９）。ここで処理位置を進める（ステップＳ３０）際には、展開処理の済んだ位置を進行管理手段３に通知する。
【００３２】
次に、描画コード格納手段４について詳しく説明する。図７は、描画コード格納手段４の構成を示す図である。描画コード格納手段４は、描画コード登録機構４ａと、描画コード格納領域４ｂと、描画コード削除用登録機構４ｃと、から構成される。
【００３３】
描画コード登録機構４ａは、描画コードを少なくとも描画領域の一方向にそって順に取り出すために整理しておく。描画コード格納領域４ｂは、描画コードを格納するための記憶領域である。描画コード削除用登録機構４ｃは、少なくとも描画領域の一方向にそって順に走査して、使わなくなった描画コードを削除していく。
【００３４】
図８は、描画コード格納手段４の処理の流れを示すフローチャートである。ここで、描画コード格納手段４は、格納領域を描画処理手段２０ａ〜２０ｎから共通にアクセスできる共有メモリ装置に実現すれば、描画処理手段２０ａ〜２０ｎへの描画コードの送出処理については特に考慮する必要がなくなる。したがって、描画コードが登録される時の処理と、描画コードの削除が命令されるときの処理とについてのみ説明する。
【００３５】
また、描画領域の副走査線方向をＹ軸に、走査線方向をＸ軸にとった座標系を設定し、処理はＹ座標が小さい方から大きい方へ進むものとする。（図示したときには、Ｙ軸は上から下を向いている。）
まず、処理が開始されると、描画コード格納領域４ｂと、描画コード登録機構４ａと、描画コード削除用登録機構４ｃとの初期化を行う（ステップＳ４０）。初期化が終ると、他の処理装置からの通信待ちとなる（ステップＳ４１）。ここで、進行管理手段３から終了が伝えられたかどうかが判断される（ステップＳ４２）。終了が伝えられた場合は終了し、そうでなければ必要な描画コードが入力されたかどうかが判断される（ステップＳ４３）。
【００３６】
必要な描画コードが描画オブジェクト展開手段２から入力されると、描画コード格納領域４ｂ内に必要な領域が確保されて（ステップＳ４４）、格納される（ステップＳ４５）。これと共に、描画コード登録機構４ａと描画コード削除用登録機構４ｃに対する登録が行われる（ステップＳ４６）。この登録は、例えば、描画コード登録機構４ａと描画コード削除用登録機構４ｃとがＹ方向の単位量毎に（走査線毎に）値を格納することができるテーブルから構成されている場合を例として説明すると、各描画コードのＹ座標の最小の値をキーとして描画コード登録機構４ａにその描画コードを登録する。そして、各描画コードのＹ座標の最大の値をキーとして描画コード削除用登録機構４ｃにその描画コードを登録することによって、期待する描画コード登録機構４ａと描画コード削除用登録機構４ｃとを実現することができる。
【００３７】
実際、このような登録を行えば、描画コード登録機構４ａのテーブルをＹ座標の小さい方から大きい方へたどることにより、容易に、描画コードをＹ座標の小さい方から取り出すことができる。また、描画コード削除用登録機構４ｃのテーブルをＹ座標の小さい方から順にたどることにより、描画処理に必要でない描画コードを順に特定することができる。
【００３８】
次に、進行管理手段３から与えられる描画コードの削除命令に対する処理を説明する。入力が描画コードの削除命令であるかどうかを判断する（ステップＳ４７）。削除命令でない場合はステップＳ４１へ戻り、そうでなければ削除命令と共に指定された描画領域を保管し（ステップＳ４８）、処理位置の設定（ステップＳ４９）が行われ、指定範囲内かどうかが判断される（ステップＳ５０）。指定範囲内でなければステップＳ４１へ戻り、指定範囲内であればこの領域に関して描画コード削除用登録機構４ｃに登録されているデータを処理する。より具体的には、入力された描画領域をキーとして描画コード削除用登録機構４ｃから描画コードを得る。そして、得られた描画コードを削除し、それらの描画コードが占めていたメモリ領域を開放する（ステップＳ５１）。そして処理位置を進め（ステップＳ５２）、ステップＳ５０に戻る。この開放されたメモリ領域は、あらたに描画コードを生成する際などに再利用されることになる。
【００３９】
次に、出力データ格納手段５について詳しく説明する。出力データ格納手段５は、並列動作する描画処理手段２０ａ〜２０ｎの処理結果を一旦蓄積することによってまとめて、従来のシーケンシャルな処理を前提としたインタフェースを提供するためのものである。また、この出力データ格納手段５に関する処理が簡単になるのは、１ページ分以上の描画領域に対応するバッファ領域を確保して処理する場合であるが、必要となるメモリ量が大きくなってしまうため、ここでは、１ページ分よりも小さい描画領域分のバッファを用いて、並列に描画データを出力する方法について説明する。
【００４０】
図９は、出力データ格納手段５の構成図である。ここでは、システムが共有メモリをそなえた並列計算機上に構築された場合について説明する。出力データ格納手段５は、格納している出力データの描画領域上でのＹ座標の範囲を示す出力データ格納範囲保持手段５ａと、実際の出力データを格納しておくための記憶領域である出力データ保持領域５ｂと、格納した出力データをＹ座標の順に取り出せるように整列させる出力データ整列手段５ｃと、から構成される。
【００４１】
出力データ格納範囲保持手段５ａは、例えば、Ｙ座標の２つの値を保持する記憶装置によって実現することができる。出力データ保持領域５ｂは通常の記憶装置と簡単なメモリ管理機構を組み合わせることにより容易に実現することが可能である。出力データ整列手段５ｃは、出力データを蓄積しておいて後で整列させる機構を用意したり、蓄積時にツリー構造のようなデータ構造を利用して蓄積したりすることができる。
【００４２】
また、以降では、副走査方向の最小単位ごとに記憶領域をもったテーブル構造を用いて、出力データをそのテーブル上に副走査方向の位置をキーとした場所に登録する構成を例として説明する。
【００４３】
図１０は、出力データ格納手段５の処理の流れを示すフローチャートである。出力データ格納手段５は初期化時に、出力データ格納範囲保持手段５ａと、出力データ保持領域５ｂと、出力データ整列手段５ｃと、の初期化を行う（ステップＳ６０）。その後、複数の処理手段からのデータの入力待ちとなる（ステップＳ６１）。ここで、進行管理手段３から終了が伝えられたかどうかが判断される（ステップＳ６２）。終了が伝えられた場合は内部に保持している出力データを出力し（ステップＳ６３）、終了する。そうでなければ出力データの格納範囲の初期範囲が設定される。これは、例えばＹ座標が０から２５５までという副走査方向の描画領域上の位置を示す数値により設定することができる。
【００４４】
その後、描画処理手段２０ａ〜２０ｎからの出力データ格納範囲保持手段５ａへの問い合わせがあったかどうかを判断する（ステップＳ６４）。問い合わせがあった場合には、出力データの格納範囲を返信し（ステップＳ６５）、その後ステップＳ６１に戻る。問い合わせがない場合には、出力データの登録かどうかを判断する（ステップＳ６６）。出力データの登録であった場合には、領域を確保して（ステップＳ６７）、値を格納し（ステップＳ６８）、整列機構に登録する（ステップＳ６９）。出力データの登録でない場合には、進行管理手段３から、出力命令であったかどうかを判断する（ステップＳ７０）。出力命令でない場合は、ステップＳ６１へ戻る。出力命令であった場合は、出力命令が指定する範囲の出力データを保管し（ステップＳ７１）、出力データ整列手段５ｃを参照してから出力手段へ出力する（ステップＳ７２）。
【００４５】
そして、出力データ格納範囲保持手段５ａに格納されている出力データ格納範囲を開放（ステップＳ７３）、更新し（ステップＳ７４）、ステップＳ６１に戻る。例えば、出力データ格納範囲保持手段５ａに格納されている範囲が０から２５５であった場合に、０〜５の出力命令が与えられた場合には、出力データ整列手段５ｃを参照して、０〜５の位置にある出力データを順に出力すると共に出力データ格納範囲保持手段５ａを更新する。この結果、出力データ格納範囲保持手段５ａに格納されている数値は６〜２３１となる。
【００４６】
次に、描画処理手段２０ａ〜２０ｎについて詳しく説明する。いずれも構成は同じなので描画処理手段２０として説明する。図１１は、描画処理手段２０の構成を示す図である。描画処理手段２０は、担当描画領域情報を保持する担当描画領域保持手段２１と、描画コードを読みだす描画コード読み込み手段２２と、描画コードを保持する描画コード保持手段２３と、担当描画領域の描出処理を行う担当描画領域描出手段２４と、処理過程を進行管理手段３に報告する処理過程報告手段２５と、処理位置を保持する処理位置保持手段２６と、から構成される。
【００４７】
担当描画領域保持手段２１は、分割した描画領域の内、それぞれの描画処理手段が担当する描画領域に関する情報を保持する。描画コード読み込み手段２２は、描画コード格納手段４に格納されている描画コードを読みだしてくる。そして、描画コード保持手段２３は、担当する分割された描画領域の内、複数の描画領域にわたって処理する必要がある描画コードを保持する。担当描画領域描出手段２４は、この描画コードを処理して担当する描画領域の描出処理を行う。処理過程報告手段２５は、処理の終った領域について、その旨を進行管理手段３に通知する。
【００４８】
図１２は、描画処理手段２０の処理の流れを示すフローチャートである。描画処理手段２０は、処理の開始時に、担当描画領域保持手段２１などの記憶装置の初期化を行う（ステップＳ８０）。この時、固定的に描画領域を割り当てる場合には、初期化後に担当する描画領域を示す情報が得られ、これを担当描画領域保持手段２１に格納する。また、担当する描画領域のうち、Ｙ方向の座標値が一番小さい描画領域に処理位置保持手段２６をセットする。この後で、描画処理手段２０は進行管理手段３からの起動待ち状態に入る（ステップＳ８１）。進行管理手段３から起動されると、それぞれの担当する描画領域を順に描出処理を行っていく。
【００４９】
まず、処理位置保持手段２６に保持されている位置から始まる描画コードが既に生成されているかを、進行管理手段３または描画コード格納手段１に問い合わせて調べる（ステップＳ８２）。まだ生成されていない場合には、進行管理手段３に対して、その時の処理位置あるいは、その位置よりもある程度進んだ位置の描画コードが生成された時に再起動されるように、後述する描画コード展開時イベント処理機構３ｃに登録して（ステップＳ８３）、一旦停止する（ステップＳ８４）。先の問い合わせの結果が、描画コードが既に生成されているということを示す結果であった場合には、処理位置が担当描画領域かどうかを判断する（ステップＳ８５）。処理位置が担当描画領域でない場合は、描画コード読み込み手段２２が、描画コードを読み込み（ステップＳ８６）、処理位置が更新されると（ステップＳ８７）、描画コード保持手段２３が保持している描画コードについて、処理位置保持手段２６にセットされている描画領域を描出する描画コードだけを整理をなおす（ステップＳ８８）。
【００５０】
処理位置が担当描画領域の場合は、出力データ格納手段５に格納準備がされているかを調べる（ステップＳ８９）。準備がされていない場合は、出力データ格納手段５に対して、出力データ格納範囲保持手段５ａの値を要求する。処理位置がこの範囲に入っていなければ、進行管理手段３に対して、その時の処理位置、あるいは、その時の処理位置が出力データ格納範囲に入るような位置を指定して出力データ格納範囲変更時イベント処理機構３ｂに登録して（ステップＳ９０）、一旦停止する（ステップＳ９１）。
【００５１】
ステップＳ８９で出力データ格納手段５に格納準備がされている場合は、描画コード読み込み手段２２が、処理位置保持手段２６にセットされている描画領域を描出するために必要な描画コードを読み込んで（ステップＳ９２）、描画コード保持手段２３内にその処理位置の描画処理を行うために必要な描画コードを集める。
【００５２】
そして、処理位置が担当する描画範囲であった場合には担当描画領域描出手段２４が処理位置保持手段２６にセットされている描画領域を描出する（ステップＳ９３）。例えば、描画オブジェクトを点列表現の多角形のデータ構造、描画コードを、その多角形を分割した台形のデータ構造等がある。
【００５３】
処理位置保持手段２６に保持されている描画領域に対する描出処理が終ると、処理過程報告手段２５により、その領域の処理が終ったことを進行管理手段３に知らせる（ステップＳ９４）。そして、処理位置保持手段２６に次の描画位置に処理位置をセットして、担当する描画領域に対する描出処理が終るまで、繰り返し同様の処理が行われる。処理位置が更新されると（ステップＳ９５）、描画コード保持手段２３が保持している描画コードについて、処理位置保持手段２６にセットされている描画領域を描出する描画コードだけを整理しなおす（ステップＳ９６）。その後、ステップＳ８２へ戻る。
【００５４】
描画オブジェクト展開手段２が描画オブジェクトを展開して描画コードを展開するスピードが十分に速く、出力データ格納手段５からの出力処理がスムーズに行われた場合には上記の例外処理がなくても、効果的に並列描画処理を実現することができるが、上記の例外処理は、描画コードの生成が間に合わなかった場合と、出力データの生成のスピードがアンバランスになった時の処理の速すぎる描画処理装置の動作を規定したものとなっている。
【００５５】
しかし、描画領域を細かく分割し、インタリーブして割り当てると確率的に複数の描画処理手段の負荷が等しくなり、出力データの生成のスピードのアンバランスはまれになる。また、描画コード生成のスピードが間に合わない場合には、描画オブジェクト展開手段を並列化するなどして高速化することにより、バランスをとることが可能である。
【００５６】
次に、進行管理手段３について詳しく説明する。図１３は、進行管理手段３の構成を示す図である。進行管理手段３は、描画コードが生成済みの位置を保持する描画コード展開済み位置管理手段３ａと、出力データ格納範囲変更時イベント処理機構３ｂと、描画コード展開時イベント処理機構３ｃと、出力データ格納手段５に格納できる描画領域のＹの最大値と最小値を管理する出力データ格納可能範囲管理手段３ｄと、全ての描画処理手段２０ａ〜２０ｎの処理位置を管理する描画処理位置管理手段３ｅと、最も遅い描画処理手段の処理位置を管理する最遅描画位置管理手段３ｆと、後述する描画オブジェクト展開済み位置保持手段３ｇと、描画処理完了位置保持手段３ｈと、描画オブジェクト展開先行距離保持手段３ｉと、を備えている。進行管理手段３を構成する各手段の動作は後述する。
【００５７】
図１４は、進行管理手段３の処理の流れを示したフローチャートである。進行管理手段３は、全体の初期化後（ステップＳ１００）、最遅処理位置の初期化を特別に行い、最遅処理位置の変化イベントを発生させる（ステップＳ１０１）。そして、描画処理手段２０ａ〜２０ｎを起動しておく（ステップＳ１０２）。
ただし、描画処理手段は十分に描画コードが展開された後から起動してもよい。その後進行管理手段３は通信あるいは内部状態の変更待ちとなる（ステップＳ１０３）。この通信あるいは内部状態の変化を説明の簡単のために進行管理イベントと呼ぶ。
【００５８】
進行管理イベントがくると、これの種類によって異なる処理が行なわれる。描画処理手段２０ａ〜２０ｎからの処理済みの位置が報告された場合には（ステップＳ１０４）、最遅処理位置の変更が必要であるか検査し、必要ならば更新する（ステップＳ１０５）。この時、最遅処理位置の変更があったという進行管理イベントが発生する。
【００５９】
進行管理イベントが描画コード展開済み位置の変化であった場合には（ステップＳ１０６）、描画コード展開時イベントの処理が行われる（ステップＳ１０７）。実際には、主に描画コードの展開待ちの描画処理手段が起動される。
【００６０】
進行管理イベントが出力データ格納範囲の変化であった場合には（ステップＳ１０８）、出力データ格納範囲変更時イベントの処理が行われる（ステップＳ１０９）。実際には、主に出力データ格納範囲の変更待ちの描画処理手段が起動される。
【００６１】
最遅処理位置の変化であった場合には（ステップＳ１１０）、描画領域が終了かどうか判断される（ステップＳ１１１）。終了でない場合は、描画コードの展開命令の発行（ステップＳ１１２）、不必要となった描画コードの削除命令の発行（ステップＳ１１３）、出力データ格納手段に格納範囲の変更命令を発行し（ステップＳ１１４）、その後、ステップＳ１０３に戻る。
【００６２】
次に、本発明の描画処理装置の動作を具体的な絵を用いて説明する。図１５は、描画処理装置の動作を説明するために使用する絵の概念図である。この例においては、描画オブジェクトＡ、描画オブジェクトＢ、描画オブジェクトＣの３つの描画オブジェクトが描画される。
【００６３】
図１６は、図１５に示した例で用いた描画オブジェクトを表現するデータ構造の一例を示す図である。図１５に示した図は、説明の簡単のために楕円だけを描画オブジェクトとして使用しているため、図１６に示したデータ構造１ｃも非常に簡単なものになっている。
【００６４】
まず、楕円形を外接長方形により規定し、外接長方形の左下の座標（ＬＸ，ＬＹ）と、右上の座標（ＲＸ，ＲＹ）により描画オブジェクトの塗りつぶし領域を表現し、これらに加えて重ね塗り時の優先順位（ＰＲＩＯ）と色データなどの属性値（ＡＴＴＲ）を保持するものとなる。
なお、ここで説明する描画オブジェクトのデータ構造は、一例であって、他の多角形や曲線図形やマスクデータなどのさまざまな領域表現によって表現される描画オブジェクトにも適用できる。
【００６５】
図１７は、描画領域の分割の例と、分割したあとの分割描画領域３６〜分割描画領域５９を以降の説明に使用する描画処理手段２０ａ、描画処理手段２０ｂ、描画処理手段２０ｃに割り当てる例を示す。この例においては説明の簡単のため、描画領域の分割は走査線単位への分割であり、描画処理手段２０ａ、描画処理手段２０ｂ、描画処理手段２０ｃへの割り当ては飛び飛びにかつ周期的に割り当てる例を示している。
【００６６】
なお、走査線単位での分割も、周期的な描画処理手段への割り当ても説明の簡単のためであり、特に限定するものではない。
図１８は、描画オブジェクトＡと、描画オブジェクトＢと、描画オブジェクトＣと、が描画オブジェクト格納手段１内に格納された状態を模式的に示した図である。これら３つの描画オブジェクトＡ〜Ｃは、図４で示した描画オブジェクト格納領域１ａ内に格納されると共に、各描画オブジェクトのＹ座標の最小値をキーとして、図４で示した描画オブジェクト整列機構１ｂに登録される。
【００６７】
描画オブジェクトＡ〜Ｃが描画オブジェクト格納手段１に格納されると、進行管理手段３の処理が指示される。進行管理手段３は、描画オブジェクト展開済み位置保持手段３ｇと、描画処理完了位置保持手段３ｈと、を参照し、両者の格納する位置の間の距離と描画オブジェクト展開先行距離保持手段３ｉに保持されている値を比較する。この場合、初期位置であるためにこの比較結果は等しいか、あるいは描画オブジェクト展開先行距離保持手段３ｉに保持されている値の方が大きくなってしまう。このため、まず、描画オブジェクト展開手段２に展開処理の実行命令が送られる。
【００６８】
描画オブジェクト展開手段２は、描画オブジェクト展開済み位置保持手段３ｇに保持されている位置より１単位進んだ描画領域からオブジェクトの展開処理を進め、描画処理完了位置保持手段３ｈに保持されている位置＋描画オブジェクト展開先行距離保持手段３ｉに保持されている距離＋αの位置まで処理を進めて停止する。＋αの部分は予め定められた距離でもよいし、描画オブジェクトを展開するために必要なメモリ容量が許すかぎり展開するという基準でもよい（以降、このαの数値を描画オブジェクト展開位置マージンと呼ぶ）。
【００６９】
また、描画処理完了位置保持手段３ｈの位置の進み方と、描画オブジェクト展開済み位置保持手段３ｇの位置の進み方がバランスがとれていると（すなわち、描画オブジェクトの展開のスピードと描画処理のスピードのバランスがとれていると）、描画オブジェクト展開手段２が起動されてから１ページ分の描画オブジェクトを全て展開し終えるまで停止することなく動作するという場合もありうる。
【００７０】
以降、説明の簡単のため描画コードとして台形表現により描画領域を表すものを用いる。ただし、これは一例であり、描画コードとしては、走査線単位のランレングス形式のデータやマスク形式のデータ、線分列のペアにより領域を表す形式、曲線集合により領域を表す形式、などの多くの表現形式に対しても適用できる。
【００７１】
図１９は、描画オブジェクトＡが、描画コード格納手段４に格納された時の状態の概念図である。描画オブジェクト展開手段２の処理位置が分割描画領域３７に進み、描画オブジェクトＡを描画コードＡ１〜描画コードＡ５に展開して、描画コード格納手段４に格納された時の状態の概念図を示している。
【００７２】
描画オブジェクトＡが展開されると描画コードＡ１〜描画コードＡ５の５つの描画コードが生成される。そして、これらの描画コードＡ１〜Ａ５は、描画コード格納手段４に転送されて、図７で示した描画コード格納領域４ｂに格納されると共に、Ｙ座標の最小値（図中の上側）をキーとして、描画コード登録機構４ａに登録される。
【００７３】
また、Ｙ座標の最大値（図中の下側）をキーとして、図７で示した描画コード削除用登録機構４ｃに登録される。
図２０は、描画コードの一例について、そのデータ構造の例を示した図である。Ｙ座標値の最小値（ＹＭＩＮ）と、Ｙ座標値の最大値（ＹＭＡＸ）と、Ｙ座標値の最小値における左側の斜辺のＸ座標（Ｘ１）と、Ｙ座標値の最小値における右側の斜辺のＸ座標（Ｘ２）と、左側の斜辺においてＹ座標が単位量増えた時のＸ座標の増分値（ＤＸ１）と、右側の斜辺においてＹ座標が単位量増えた時のＸ座標の増分値（ＤＸ２）と、色などの塗りつぶし属性（ＡＴＴＲ）と、塗りつぶしの優先順位（ＰＲＩＯ）と、のデータにより少なくとも本実施例の説明に使用する描画コードを規定することが可能である。
【００７４】
ここで、図１３で示した描画オブジェクト展開先行距離保持手段３ｉに保持されている数値が５であったとし、また、描画オブジェクト展開位置マージンが３であったものとして説明を続ける。
【００７５】
すると、描画オブジェクト展開手段２が分割描画領域４０の処理を終えたことを進行管理手段３が検知すると、進行管理手段３は描画処理手段２０ａ、描画処理手段２０ｂ、描画処理手段２０ｃに対して処理を再開することを指示する。これらの描画処理手段２０ａ〜２０ｎは、分割描画領域３６の位置から順に描画コードを読み込んで担当する分割描画領域の描画処理を行う。
【００７６】
図２１は、描画オブジェクト展開手段２が処理を行っている位置と、描画処理手段２０ａが処理を行っている位置の位置関係を示す概念図である。描画処理手段２０ａは、まず描画コード格納手段４に対して、分割描画領域３６に登録されている描画コードを要求する。しかし、この領域にはなにも登録されていないうえ、担当する分割描画領域でもないため、なにも処理を行わないまま、次の分割描画領域３７に処理を進める。
【００７７】
分割描画領域３７には、描画コードＡ１が描画コード格納手段４内に登録されているため、この描画コードＡ１を読み込む。そして、次の分割描画領域３８に移る。分割描画領域３８は、新たに読み込まれる描画コードもなく、また、描画処理手段２０ａの担当する描画領域でもないため、特に描画処理を行わずに次の分割描画領域３９に移る。
【００７８】
しかし、描画処理手段２０ａが、図１１で示した描画コード保持手段２３内に保持している描画コードＡ１が、この分割描画領域３８までのデータであるため、これを描画コード保持手段２３内から削除する。
【００７９】
また、仮に、描画処理手段２０ａが描画処理手段２０ｂと描画処理手段２０ｃよりも処理が遅れていたとすると、描画処理手段２０ａが処理位置を動かすと、図１３で示した最遅描画位置管理手段３ｆに格納されている値が変化する。つまり、最遅描画位置管理手段３ｆが分割描画領域３８となる。
【００８０】
すると、この情報が描画コード格納手段４に送信され、図７で示した描画コード削除用登録機構４ｃ内に、分割描画領域３８の場所に登録されている描画コードを描画コード格納領域４ｂから削除する。
【００８１】
この例の場合には、描画コードＡ１が登録されているため、これを描画コード格納領域４ｂ内から削除することになる。図２２に描画コードＡ１が削除されたときの描画コード格納領域４ｂ内の状態の概念図を示す。
【００８２】
分割描画領域３９を処理位置とすると、分割描画領域３９は描画処理手段２０ａの担当する描画領域であるため、分割描画領域３９が出力データ格納手段５上に書き込むことができるかどうか調べる。できない場合には、分割描画領域３９が出力データ格納手段５上に書き込めるように用意された時に、動作指示がくるように進行管理手段３に登録してから、描画処理を一旦停止する。ここでは、説明の簡単のため、続けて分割描画領域３９の処理を行えたものとして説明を続ける。
【００８３】
描画コードＡ２が登録されているため、これを読み込む。そして、この分割描画領域３９は、描画処理手段２０ａの担当する描画領域であるため、図１１で示した担当描画領域描出手段２４を起動して、分割描画領域３９に対応する出力データを生成して、出力データ格納手段５に格納する。図２３に分割描画領域３９ａを描画処理した時の結果の概念図を示す。
【００８４】
ここで、次の描画オブジェクトが展開されて図７で示した描画コード格納領域４ｂに格納される例について説明するために、描画オブジェクト展開手段２の処理位置が分割描画領域３９、描画処理手段２０ａ、描画処理手段２０ｂ、描画処理手段２０ｃの位置が分割描画領域３９になった場合を想定する。このとき、描画オブジェクト展開手段２は、描画オブジェクト格納手段１に対して、分割描画領域４３に登録されている描画オブジェクトを要求し、描画オブジェクト３３が得られるため、これを展開して描画コード格納手段４に転送する。このとき展開された描画コードＢ１〜Ｂ５は、、描画コード格納領域４ｂに格納されるとともに、Ｙ座標の最小値（図中の上側）をキーとして、描画コード登録機構４ａに登録され、また、Ｙ座標の最大値（図中の下側）をキーとして、描画コード削除用登録機構４ｃに登録される。
【００８５】
この時の描画コード格納手段４の状態の概念図を図２４に示す。このときの描画処理手段の処理位置が分割描画領域３９に進んでいることを想定したため、すでに描画コードＡ２も描画コード格納手段４から削除されている。また、次に展開される描画コードとして、描画コードＢ１〜Ｂ５が描画コード格納領域４ｂに格納されている。
【００８６】
図２５は、実施例の処理の説明に使用した図の描画結果の概念図を示す。副走査方向に各処理手段が協調して、描画オブジェクトの展開、描画、出力を繰り返していきこれを出力データ格納手段５が順に集めて、正しい順に出力することにより、期待する描画結果ＡＯ、ＢＯ、ＣＯを得ることができる。
【００８７】
【発明の効果】
以上説明したように、本発明の描画処理装置は、描画コード格納手段では、複数の描画処理手段から共通にアクセス可能な共有メモリ構造をとり、描画コードを描画領域の少なくとも一方向から順番にとりだせるように格納するメモリ領域を確保する。そして、複数の描画処理手段により、並列描画処理を走査線単位で行う。また、進行管理手段により、描画処理手段の描画処理位置を管理して、最も遅い描画位置の変化に対応して不要な描画コードを削除して、描画コードの格納に必要となるメモリ領域を開放しながら、描画コードの展開範囲の指示及び制御を行う構成とした。これにより、描画領域を走査線方向に分割して描画処理することで、負荷のばらつきを抑えることができるので、描画処理の高速化を図ることが可能になり、さらに、描画処理位置を管理して、描画コードの格納に必要となるメモリ領域の開放・展開を制御することで、メモリ領域を効率よく使用することができるので、描画コードを格納するメモリ量を削減することが可能になる。
【図面の簡単な説明】
【図１】  本発明の描画処理装置の原理図である。
【図２】  本発明の描画処理装置が適用されるシステムの概念図である。
【図３】  描画処理装置の全体の処理の流れを示すフローチャートである。
【図４】  描画オブジェクト格納手段の構成を示す図である。
【図５】  描画オブジェクト格納手段の処理の流れを示すフローチャートである。
【図６】  描画オブジェクト展開手段の処理の流れを示すフローチャートである。
【図７】  描画コード格納手段の構成を示す図である。
【図８】  描画コード格納手段の処理の流れを示すフローチャートである。
【図９】  出力データ格納手段の構成を示す図である。
【図１０】  出力データ格納手段の処理の流れを示すフローチャートである。
【図１１】  描画処理手段の構成を示す図である。
【図１２】  描画処理手段の処理の流れを示すフローチャートである。
【図１３】  進行管理手段の構成を示す図である。
【図１４】  進行管理手段の処理の流れを示すフローチャートである。
【図１５】  描画処理装置の動作を説明するために使用する絵の概念図である。
【図１６】  描画オブジェクトを表現するデータ構造の一例を示す図である。
【図１７】  分割描画領域を描画処理手段に割り当てる一例を示す図である。
【図１８】  描画オブジェクトが、描画オブジェクト格納手段に格納された状態を示す模式図である。
【図１９】  描画オブジェクトが、描画コード格納手段に格納された時の状態概念図である。
【図２０】  描画コードのデータ構造を示す図である。
【図２１】  描画オブジェクト展開手段と描画処理手段とが処理を行っている位置の位置関係を示す図である。
【図２２】  描画処理の進行により不必要になった描画コードを削除した図である。
【図２３】  分割画像領域を描画処理した時の概念図である。
【図２４】  描画オブジェクトを展開して描画コードを格納した場合の図である。
【図２５】  描画結果の概念図である。
【符号の説明】
１  描画オブジェクト格納手段
２  描画オブジェクト展開手段
３  進行管理手段
４  描画コード格納手段
５  出力データ格納手段
６  ページ記述言語
２０ａ〜２０ｎ  描画処理手段
【図１】
0003663757.tif 000002
【図２】
0003663757.tif 000003
【図３】
0003663757.tif 000004
【図４】
0003663757.tif 000005
【図５】
0003663757.tif 000006
【図６】
0003663757.tif 000007
【図７】
0003663757.tif 000008
【図８】
0003663757.tif 000009
【図９】
0003663757.tif 000010
【図１０】
0003663757.tif 000011
【図１１】
0003663757.tif 000012
【図１２】
0003663757.tif 000013
【図１３】
0003663757.tif 000014
【図１４】
0003663757.tif 000015
【図１５】
0003663757.tif 000016
【図１６】
0003663757.tif 000017
【図１７】
0003663757.tif 000018
【図１８】
0003663757.tif 000019
【図１９】
0003663757.tif 000020
【図２０】
0003663757.tif 000021
【図２１】
0003663757.tif 000022
【図２２】
0003663757.tif 000023
【図２３】
0003663757.tif 000024
【図２４】
0003663757.tif 000025
【図２５】
0003663757.tif 000026