(57)【特許請求の範囲】
【請求項１】
非圧縮のラスターを記憶するのに要求されるメモリ容量より実質的に少ない予め定められたメモリ容量を使用して、画像オブジェクトを含むページに対応するラスター用の圧縮されたデータを作成する方法において、
（ａ）画像オブジェクトをラスター上で、どのように、かつ、どこに、ラスター化するのかを規定するラスター化要求を生成するステップと、
（ｂ）ラスター化要求を圧縮された走査線セグメントのラスター化コマンドに変換するステップであって、各走査線セグメントのラスター化コマンドがどのように対応する走査線のセグメントをレンダするかを規定するステップと、
（ｃ）対応する走査線にしたがって、走査線セグメントのラスター化コマンドを組織化するステップと、
（ｄ）各走査線用の関連するキューをメモリの中に記憶するステップであって、各キューが対応する走査線セグメントのラスター化コマンドを含むステップと、
（ｅ）予め定められた条件が発生したとき、走査線セグメントのラスター化コマンドの関連するキューにしたがって、一度に１走査線、各走査線をレンダし、レンダされた走査線を圧縮されたラスターデータに再圧縮するステップと、および
（ｆ）ページのすべてのラスター化要求が処理されるまで、（ａ）〜（ｅ）の操作を繰り返すステップと、
を含むラスター用の圧縮されたデータを作成する方法。
【請求項２】
各走査線をレンダするステップは、
（ｉ）ラスター用の圧縮されたラスターデータの現存する状態をメモリの中に保存するステップと、
（ii）ラスターデータに適する現存する圧縮されたデータを伸張することにより、第１のパスで走査線用のラスターデータをレンダするステップと、
（iii）走査線セグメントのラスター化コマンドの関連するキューを順次伸張することにより、第１のパスからのラスターデータを第２のパスでレンダするステップと、
（iv）走査線用の第２のパスのラスターデータを再圧縮するステップと、
（ｖ）キューの中の走査線セグメントのラスター化コマンドのシーケンスを破棄することにより、メモリの中にスペースを作るステップと、
（vi）走査線用の再圧縮されたラスターデータを用いて現存する圧縮されたラスターデータを更新するステップと、
をさらに含む請求項１記載の方法。
【請求項３】
前記ページは、ページ描写言語（PDL）ステートメントの流れによって記述され、そして、前記ラスター化要求を生成するステップは、PDLステートメントの流れを翻訳するステップを含む請求項１または２記載の方法。
【請求項４】
前記ページは、画像コマンドの流れによって記述され、そして、前記ラスター化要求を生成するステップは、画像コマンドの流れを翻訳するステップを含む請求項１または２記載の方法。
【請求項５】
前記予め定められた条件には、ページ用のラスター化要求のすべての処理が完了していることが含まれている請求項１または２記載の方法。
【請求項６】
前記予め定められた条件には、メモリが記憶されたキューで満たされていることが含まれている請求項１または２記載の方法。
【請求項７】
前記レンダされた走査線は、プリントエンジンに適した伸張レートにしたがって再圧縮される請求項１または２記載の方法。
【請求項８】
前記レンダされた走査線は、ランレングス符号方式にしたがって再圧縮される請求項１または２記載の方法。
【請求項９】
前記レンダされた走査線は、変換符号方式にしたがって再圧縮される請求項１または２記載の方法。
【請求項１０】
前記レンダされた走査線は、損失圧縮方式にしたがって再圧縮される請求項１または２記載の方法。
【発明の詳細な説明】
発明の背景
1.発明の分野
本発明は、プリンタで印刷するための画像のレンダリングに関し、ここでのプリンタは、さらに詳しく言えば、レーザプリンタであり、そしてさらに詳しく言えば、カラーレーザプリンタのようなページプリンタである。
2.最新技術
近年、ディスクトップコンピュータの計算能力は、日に日に高まっている。同時に、一般的なコンピュータユーザーが、高度なプリント能力を利用できる機会も増えてきている。ビジネスセクターで一般的に使用されているのは、ほとんどが活字の品質を提供するレーザプリンタである。好ましいカラー特性を提供する適度な解像度のカラープリンタを、大部分のユーザーが使用し始めてきている。
前述の傾向に応じて、実写および実写に近いカラープリンタの需要が高まるものと予想される。現在、カラープリンタは、一般的に次の３つの異なるタイプのいずれかであり、それらは、染料昇華，インクジェット，およびレーザである。染料昇華のプリンタの品質は良いが、速度が遅く高価なものである。安価なインクジェットプリンタは、低速であり低品質の出力を生成する。より高価なインクジェットプリンタは、低速ではあるが、大画面用に良い品質の出力を生成する。しかしながら、カラーインクジェットプリンタ（現在市販されている大量のカラープリンタを占める）と比較すると、カラーレーザプリンタは、印刷速度が高速で一枚当たりのコストが安価な実写カラー出力を達成する見込みが最も高いものである。
プリンタ（プロッタと対立するもの）は、ページのあるパターンに小さなドット（ピクセルとも呼ばれる）を形成することで動作する。レーザプリンタにおいて、これらの小さなドットは、感光ドラムにある走査方向にレーザビームを走査することによって形成される。（感光ドラム上の画像は、その後、現像され，転写され，そして実際のページに固定される。）通常、走査は、レーザが照射される回転ポリゴンミラーを使用することで達成される。前記ミラーの各面によりレーザビームが生じ、感光ドラムを横切ると走査される。走査中、レーザビームは変調され、すなわち、オン／オフされて、走査内のある特定の位置にドットを露出するか、もしくはドットを露出しない。感光ドラムは、走査中、紙送り方向に一定の速度で移動し、次の走査にずらされる。走査線がずらされる量は、ラインピッチと呼ばれる。
走査線にあるドットの集合は、ラスター走査線と呼ばれる。引き続く走査線のグループは、バンドもしくは走査線の束と呼ばれる。１ページ上の全ての走査線にある全てのドットの集合は、ラスター画像と呼ばれる。ページのある特定（および通常、矩形）の領域内に印刷されるドットの集合は、ピクセルマップと呼ばれる。例えば、カラーのパンフレット上にある会社のロゴは、ピクセルマップで定義され、ページの上部に印刷される。
バンド（走査線束）装置の一例であるインクジェットプリンタとは対照的に、レーザプリンタは、本質的にページ装置である。すなわち、一旦レーザ印刷が開始する（すなわち、ドラムのレーザ走査が開始する）と、それを停止させたり一時停止することが出来ず、途中で止めることなく動作が完了するまで持続させなければならない。インクジェットプリンタは、シングルバンドに対してある実時間データ要求を有するが、レーザ印刷動作は、データがページ全体に利用されるという点で、生成される印刷が十分に満足できるものとなるように、より高い実時間データ要求を有する。
従来、レーザプリンタは、プリンタコントローラおよびプリントエンジンから成るものである。プリントエンジンは、実際のページにドットを露出し、現像する。プリンタコントローラは、プリンタコマンドおよびプリントデータをプリントエンジンに供給し、望ましいページにプリントさせる。プリントコントローラは、例えば、アドーブシステムズのPostscriptTMのような「ページ描写言語（PDL）」にあるページ描写を、アプリケーションプログラムから受ける。
通常、プリントコントローラは、アプリケーションプログラムからPDLステートメントを受け、PDLインタプリタにより、それらを解釈する。PDLインタプリタは、通常、PDLステートメントを予め処理し、それは、前記ステートメントに関連するグラフィック対象物の実際の形状および位置を計算することでなされ、その後、マーキングインターフェースにより、ページラスター画像に前記グラフィック対象物を適用する。このインターフェースは、一般的に適当であるが、通常十分に理解されているラスター化要求と呼ばれる一連の動作から成る。マーキングインターフェースは、ラスター化要求を引き続きのラスター化処理に伝える。例えば、PDLインタプリタは、ページにラスター画像を描写するために、次の一連のラスター化要求（「RAST」で表示）を用いる。
RAST1:所定のカラーの矩形のピクセルアレイ（テキストアプリケーションに）を適用
RAST2:台形領域に所定のカラー（領域グラフィック）を充填
RAST3:画像を伸張（拡大，回転，測定，湾曲等）して、それをラスターに適用
本発明はまた、（PDLステートメントとは異なる）グラフィックコマンドが発生するマイクロソフト社のウィンドウズ，アップル社のマッキントッシュ等のようなグラフィック環境にも応用可能である。これらのグラッフィックコマンドは、グラフィックコマンドプロセッサによりラスター化要求に同様に処理される。そして、ある場合には、これらの環境は、既知の広汎なフォーマットのラスター化要求を直接発生する。
従来のPDLインタプリタにおいて、ラスター化要求は、通常、３つの主要な方法のいずれかで組織化される。ラスター化要求を組織化する第１の方法は、表示リストにソーティング要求を含むことである。要求は、一般的にｙ座標の小さい方から順にソートされる。例えば、次の要求はPDL源から受けたものであり、順序は、
1.三角形を表示
2.（x3,Y2）にそれを描写
3.フォント１を選択
4.（x1,y1）にストリング「AB」をセット
5.フォント２を選択
6.（x4,y3）にストリング「Ｃ」をセット
ソートされた表示リストと対応するページが図１に示されている。そこに示されているように、表示リストは、ｙ座標で最初ソートされ、その後、ｘ座標でソートされている。
ラスター化要求を組織化する第２の方法は、図２に示されているように、ページをバンドに分割することである。各バンドには、別々の表示リストがある。この技術および前述の技術は、ページが長いバンドとみなされる点が似ているものである。しかしながら、全体的に、バンドの表示リストは、フルページの表示リストよりも大きいものである（なぜなら、同じ印刷要素はバンドと重複し、各々に含まれるようにするからである）。表示リストのサイズは、一般的に限界がないので、連続した表示リストが替わりに生成され、したがって、多数のラスター化に各バンドを通過させる必要がある。どちらにしても、結果として生じるラスターは同じものである。
ラスター化要求を組織化する第３の方法は、ソートをかけていない要求のセットを単に作ることである。この組織方法では、ラスタライザシステムが無作為にアクセス可能な走査線のリストを増加し続ける必要がある。メモリをセーブする方法は種々に考案されており、それは、例えば、実際に使用されている前記走査線を割当てるだけで行われたり、必要に応じてラスターの矩形パッチを割り当てることで行われる。しかしながら、一般的に、ラスタライザは、効果的に全ビットマップにアクセスできなければならない。このアプローチの重要な利点は、表示リストを作る必要がないということである。
単一の高解像度のフルカラー画像には、数百メガパイトの記憶メモリが必要である。カラーレーザプリンタを使用してそのような画像を印刷するためには、画像全てを再現して一度にメモリに記憶することであり、それにより、画像データをプリントエンジン（動作中）に遅れて供給する可能性がなくなる。
このレーザ印刷では、高解像度のフルカラーレーザプリンタに、非常に大きなメモリ記憶およびメモリ帯域要求が必要となる。したがって、そのようなプリンタは非常に高価なものであった。従来の技術において、全画像もしくは少なくも画像バンドはラスター化され記憶される。記憶されラスター化された画像もしくは画像バンドは、その後、読みだされ圧縮される。最終的に、圧縮された画像もしくは画像バンドは、後の伸張およびプリントエンジンへの出力用に記憶される。その結果、画像の各ピクセルは複数回処理される。メモリ要求およびメモリ帯域要求のいずれも大きいものである。
発明の要約
本発明は、一般的に、画像情報をレンダリング処理中に圧縮フォーマットに表示することで、カラーレーザプリンタ（もしくは実時間印刷制限をもつ他のプリンタ）のメモリ記憶およびメモリ帯域要求を下げる。レンダリング処理中のある時間で、好ましくは、単一の走査線のみが、最終的な印刷に必要な完全で圧縮されていないフォーマットに伸張される。再現された走査線は、その後、再度圧縮されてメモリに記憶される。全ての走査線が処理されて圧縮フォーマットでメモリに記憶されると、全画像が、連続して実時間で伸張されてプリンタに送られる。
好ましくは、本発明は、実際に出来るだけ長時間圧縮状態で画像情報を保持し、一度に出来るだけ画像の小さい部分を伸張させ（例えば、単一の走査線）、そして出来るだけ短時間伸張した状態で前記画像部分を残し、素早く再度圧縮して記憶する。したがって、メモリおよびメモリ帯域要求はかなり減少される。さらに、圧縮されていないラスターのメモリ要求は非常に小さいので、極端に速いメモリ記憶が使用され、したがって、さらにあまりコストをかけずに処理全体を加速できる。
本発明の別の特徴に従って、全ての要求は極端に単純な動作のセットまで削減され、前記動作セットは、非常に安価なハードウェアもしくは効率が良く最適化し易いソフトウェア処理で実行されるものである。
【図面の簡単な説明】
本発明は添付図面と関連する以下の記載からさらに理解されるものである。
図１は、１ページ分の図と対応するソートされた表示リストである。
図２は、図１のページをバンドに分割した図である。
図３は、ラスター化要求のソートされないセットの図である。
図４は、本発明の環境を示す一般的なブロック図である。
図５は、本発明で用いられるレンダリング装置のブロック図である。
図６は、図５のメモリ308内にある２つの主要な記憶領域を示した図である。
図７は、図６のメモリ領域321内のコマンドキュー構造を示した図である。
図８は、カラーアプリケーションの走査動作への変換および走査動作のキューを示した図である。
図９は、図５のラスタライザ／コンプレッサ306のブロック図である。
図10は、図５のラスタライザ／コンプレッサ306内のラスター化フェーズ中に繰り返しコマンドを実行するために用いられるコードセグメントである。
図11は、図５のラスタライザ／コンプレッサ306内の圧縮フェーズを実行するために用いられるコードセグメントである。
図12は、図５のエキスパンダ307のブロック図である。
図13は、図５のエキスパンダ307内の繰り返しコマンドを実行するために用いられるコードセグメントである。
図14は、図５の第２のインターフェース回路のブロック図である。
好適な実施例の詳細な説明
図４を参照すると、コンピュータ100とプリント制御装置300は、第１の通信リンク180を経由して内部接続されている。通信リンク180は、ケーブル、またはより一般的には、あらゆる種類の通信リンクであり、ディジタル情報を、例えばネットワーク（有線もしくは無線，点接続等）のように、それが直列または並列であろうと伝送することができるものである。前記第１の通信リンク180は、コンピュータ100の外部接続コネクタ101と、プリント制御装置300の第１のインターフェース301に接続されている。通信リンク180は、プリントコマンドをコンピュータ100とプリント制御装置300間で伝送する。装置300は、プリンタ200（例えば、既知のタイプのカラーレーザプリンタ）に第２の通信リンク502を介して接続されている。第２の通信リンク190は、装置300の第２のインターフェースコネクタ302と、プリンタ200のインターフェースコネクタ201に接続されている。通信リンク502は、画像データと制御コマンドをプリント制御装置300からプリンタ200に伝送する。
プリント制御装置300の構造は、図５を参照してより詳細に記載される。図５において、コンピュータ100からのデータを受信するための第１のインターフェースコネクタ301は、受信したデータを受け入れる第１のインターフェース回路303に接続されている。前記第１のインターフェース回路303は、当業者には既知のタイプ（例えば、RS232に直列，セントロニクスパラレル等）であり、詳細な説明は省略する。
前記第１のインターフェース回路の他端は、バス313に接続されており、そしてインターフェース回路とプログラムおよびデータメモリ304に接続されるCPU305間のデータ交換が可能となる。前記バス313はまた、ラスタライザ／コンプレッサ306,エキスパンダ回路307,メモリ308およびDMAC（直接記憶アクセスモード）314に接続されている。前記DMCA314により、種々の装置間に直接メモリ転送が可能になる。別々のプログラムおよびデータメモリ304を提供する替わりに、前記メモリ308は、この目的で使用されることもあることに留意されたい。
第２のインターフェース回路350は、その入力側でバス315を介してエキスパンダ307に接続されており、そしてその出力側で前記プリンタインターフェースコネクタ302に接続されている。第２のインターフェース回路350は、図14に関連して以下に詳細に説明される。
ラスタライザ／コンプレッサ306は、少なくとも１つ、好ましくは２つのバッファ309と311を含み、それらは伸張された画像データを一時的に保持するために用いられる。バッファ309と311は、明確にするために別々に図示されている。同様に、エキスパンダ307は、少なくとも１つのバッファ310、および任意に付加的なバッファ312を含み、それらはプリンタに出力される伸張された画像データを保持するために用いられる。再度言うが、バッファ310と312は、明確にするために別々に図示されている。
一般的に、プリント制御装置300により実行される画像レンダリング処理は、以下の連続したステップを含むものである。
1.ページ描写は、例えば、ポストスクリプトのようなページ描写言語（PDL）のアプリケーションプログラム（図３のコンピュータ100で作動）から受信される。
2.アプリケーションプログラムから受信したPDLコマンドは、ラスター化要求に解釈され、それは圧縮フォーマットでグラフィックの対象物を表示する一連のカラーアプリケーションに分解される。
3.これらのカラーアプリケーションは、引き続き走査動作に変換され、その走査動作はそれらの対応する走査線を表すデータ構造に付加される。
4.各走査線は、１つずつにラスターデータを生成するために再現され、そして圧縮され記憶される。
5.一度全体のページが再現され圧縮されると、圧縮されたラスターデータは伸張され、そしてプリンタ（例えば、図４に示すカラーレーザプリンタ200）に送られる。
上記ステップ１（ページ描写を発生するプログラム）は良く知られている。それに続く各ステップは、さらに詳細に説明される。
種々のPDLに互換性を持たせるために、特定のPDLによって発生したラスター化要求を、種々のPDLに使用される共通のコマンドのセットに翻訳する必要がある。したがって、このプリンタコントローラにおいては、ラスター化要求はさらに、少数の非常に単純なカラーアプリケーションに分解される。例えば、好適な実施例において、１つのカラーアプリケーションの形式は、マルチカラーアプリケーションに利用され、そして、別のカラーアプリケーションの形式は、シングルカラーアプリケーションに利用される。マルチカラーアプリケーションでは、カラーアプリケーションコマンドは、以下の形式となる。
At＜x,y＞：＜カラー1,n1＞＜カラー2,n2＞...
容易に理解できるように、上記のコマンドは、座標ｘおよびｙで規定された点で始まり、ｘ方向にある多数のピクセルn1は、第１のカラーであるカラー１にセットされ、その後、複数のピクセルn2は、第２のカラーであるカラー２にセットされる。
シングルカラーアプリケーションでは、カラーは常に同じものに保たれる。したがって、カラーアプリケーションは以下の形式となる。
At＜x,y＞：カラー＜ペイントn1＞＜スキップn2＞＜ペイントn3＞...
容易に理解できるように、上記のアプリケーションは、座標ｘおよびｙで規定される点で始まり、ｘ方向にある複数のピクセルn1は特定のカラーにセットされ、その後、複数のピクセルn2はスキップされ（すなわち、そのカラー状態がそのまま残され）、その後、ｘ方向にある複数のピクセルn3は特定のカラーにセットされる。
ラスター化要求（PDLインタプリタにより生成される）は、ラスター化要求が前記PDLインタプリタから受信されると処理され、単純なルーチンのセットを使用するカラーアプリケーションに分解される。この分解を実行するために使用される特定のルーチンは、当業者に容易に理解されるものであるから詳細に説明しない。
カラーアプリケーションが生成されるにつれて、それらは以下に詳細に説明されるタイプの走査動作に変換され、前述した組織計画の一つのような組織計画に従って待ち行列状態になる。すなわち、現在のレンダリング技術は、走査動作をセットアップすることで適用可能であり、前記走査動作は、図1,図2,および図３に関して記載されたものを含むラスター化処理の種々の従来のセッティング方法の任意のものを用いるものである。カラーアプリケーションをラスター化コマンドに変換することは、再度言うが、非常に簡単なルーチンであり、当業者に良く知られた方法で実行される。そのような変換の例は、図８に関連して以下に記載される。
走査動作は、圧縮フォーマットでPDLラスター化要求により描写された画像を表示する。さらに、画像の圧縮された表示は、最初に画像を伸張せずに、または画像のいかなる部分も再現せずに生成される。
図６を参照すると、好適な実施例において、走査動作はメモリ308の領域321内にあるキュー構造に記憶される。メモリの分離された領域323は、後述されるようにラスタライザ／コンプレッサ306により生成された圧縮されたラスターデータを記憶するために用いられる。アレイ321と323の両方は、（各々に固定した割当てを保持するよりはむしろ）メモリ308内に動的に割当られる。
メモリ領域321内で、走査動作は図７に示されているように組織化される。走査線インデックス341は、一連のリンクされたリストまたはキューのヘッドを形成する。（ラスター化要求に応じて）走査動作が生成されるにつれて、走査動作がそれらの走査線の最後のラスター化ブロックに付加される。したがって、走査動作はｙ座標でソートされるが、そうでなければ、レンダリング要求順に記憶される。レンダリング要求順に走査動作を記憶することで、最終的に印刷されるページが、PDL源により描写されたページと同じものであることを保証する。
前記走査動作のキューは、１つずつ圧縮されたラスターデータを生成するために各走査線を再現し、連続して圧縮するために使用され、前記圧縮されたラスターデータは、メモリ308内にある領域323に記憶される。前記ラスター化処理は、１）１ページが終了するとき、または２）ラスター化ブロック（メモリ308内の領域321にある）に利用可能なメモリが存在しないときのいずれかの場合に開始される。
簡潔に示すために、現在の記載は、１ページ全体の圧縮されたラスターデータを記憶するために、十分なメモリをメモリ308の領域232で利用可能であると仮定している。典型的な画像の場合には、メモリ308中の領域232をフルページのビットマップよりもかなり小さくすることで、圧縮が有効に行われる。しかしながら、極端な場合（元の画像のエントロピーが非常に高い場合）、ほとんどもしくは、全く圧縮されない。メモリ308のメモリ領域232がフルページのビットマップよりも小さい場合には、プリンタコントローラ300は、減衰のない圧縮技術を用いて前記ページを再現することができない。これは、１）通常高いエントロピーを持つ元の画像を再現しないが、誤り状態信号を発生する、２）フルページのビットマップを提供することで、任意の画像を再現することができるように、メモリ要求の減少させる可能性を犠牲にする、または、３）メモリ308の領域323内に合うサイズに画像を圧縮するために、減衰のある圧縮技術（従来技術として知られている）を使用することで生じる。
図５のラスタライザ／コンプレッサ306は、２つのフェーズのラスター化フェーズおよび圧縮フェーズで動作する。ラスター化フェーズ中では、ある特定の走査線用に待ち行列状態にされた走査動作は、ラスターデータを生成するラスタライザによって実行される。圧縮フェーズ中では、前記ラスターデータは前記走査動作として同じ圧縮フォーマットに再度圧縮され、メモリに記憶される。全ての走査線のラスター化が終了すると、前記記憶され圧縮されたラスターデータは、走査線毎に伸張され、プリンタに出力される。
前記ラスターデータは、最初の走査動作と同じ圧縮フォーマットに再度圧縮され、ラスタライザ／コンプレッサ306およびエキスパンダ307のラスタライザ部分は、大部分において同じ形式の走査動作を使用して、同様の方法で両方が実行される。例示した実施例において、ラスタライザ306およびエキスパンダ307の両方により使用される走査動作は、以下のものを含む。
0003604152.tif 000002
ラスタライザの操作とエキスパンダの操作の間にいくつかの重要な差が存在する。始めに、エキスパンダは、走査動作を厳密に走査線の順で受入れ、ラスタライザの前の操作の結果として受け入れる。第２に、エキスパンダは、伸張されたラスターデータを直接に出力パイプラインに出力して、そこから前記データがプリントエンジンにより使用される。一方で、ラスタライザは走査線を計数するが、走査線を出力パイプラインに出力するよりも、走査線を後の伸張用に記憶する。さらに、ラスタライザは、走査動作を走査線の順ではなく、ラスター化要求の順で受信する。ラスタライザの仕事は、異なる時間でほぼ全ての走査線でピクセルを操作することで、適切な順序で実行された全てのコマノドを記憶した結果である操作線を表示することになる。
例えば、影の境界を形成するためには、第１のカラーのボックスが描かれるが、それは、第２の色のパターンで満たされたボックスの後ろに配置される。ある所定の走査線において、ピクセルのストリングは、結果的に始めは第１のカラーにセットされ、その後第２のカラーにセットされる。したがって、前述の走査動作に加えて、ラスタライザ306は、走査線内の位置を変化するために、以下のコマンドを使用するが、エキスパンダ307はそれらを使用しない。
0003604152.tif 000003
しかしながら、用いられる実際の走査動作のエンコーディングは、変更し得るものであることに留意されたい。例えば、ホフマンコーディングまたはその変形は、前述の操作をエンコードするために効果的に用いられる。
ラスター化要求が受信され、カラーアプリケーション、そしてその後前述の走査動作に翻訳されて行われる処理は、その後キューされるもので、図８を参照してより明確に理解されるものである。１つの典型的なラスター化要求は、At（x0,y0）というコマンド形式をもつものと仮定する。ここにおいて要求は、前述した要求RAST1,RAST2およびRAST3のいずれかである。座標y0は、翻訳された走査動作をどこにキューするかを決定するのに用いられる。前記翻訳された走査動作は、走査線y0,y0＋１・・・,y0＋ｈ−１に影響し、ここにおいてｈは、前記ラスター化要求に対応する対象物の高さである。走査動作は走査線ｙに影響し、走査線ｙの最後のラスター化ブロックにキューされる。
可能性のあるシナリオを２つ説明する。それは、コマンドがシングルカラーの適用を要求し、それが一連のシングルカラーのカラーアプリケーションに翻訳される場合か、もしくはマルチカラーの適用を要求し、それが一連のマルチカラーのカラーアプリケーションに翻訳される場合である。これらのカラーアプリケーションは、その後前の走査動作に翻訳される。いずれの場合においても、前記第１の走査動作は、セットｘ走査動作であり、それはｘ座標を値x0にセットするために用いられる。
マルチカラーアプリケーションに関して、カラーアプリケーションは以下の形式であることを思い出されたい：
〔カラー1,n1〕〔カラー2,n2〕...
ここにおいて、角括弧は、カラーアプリケーションと走査動作を区別するために用いられている。図８に示されているように、各マルチカラーアプリケーションは、連続した一対の走査動作に翻訳され、各対は上記の角括弧の一つに対応する。各フィールド〔カラー,n〕に関して、セットカラー走査動作は、要求されたカラーにカラーをセットすることに用いられ、そして第２のリピート走査動作は、前記カラーを適当な数だけ繰り返すために用いられる。前記セットカラー走査動作自体により、カラーが１つのドットに適用される。したがって、前記リピート走査動作は、対応するカラーアプリケーションよりも少ない１つの値を特定する。
前述したように、シングルカラーのコマンドは、以下の形式をとる。
カラー＜ペイントn1＞＜スキップn2＞＜ペイントn3＞...
この適用は、第１のものをセットカラー走査動作に翻訳し、要求されるカラーにカラーをセットするために用いられる。次に、リピート走査動作は、前記カラーを適当な回数だけ繰り返すために用いられる。スキップフィールドは、スキップ走査動作に翻訳される。引き続くリピートおよびスキップ走査動作は、その後、走査線中の異なるピクセルとピクセルグループに特定のカラーを選択的に適用するように使用される。
図９を参照すると、ラスタライザ／コンプレッサ306の例示的実行例が示されている。しかしながら、ラスタライザ／コンプレッサの他の実行例もまた同様に可能であり、例えば、ここで示したピクセルアレイに基づいたものよりも走査線の作動長さをエンコードしたものに基づいたものも可能である。図９のラスタライザ／コンプレッサ306において、制御回路501は、バス313に接続されており、そしてバス313から走査線を描写する連続した走査動作を受信するもので、各走査動作は前述の走査動作の１つである。制御回路501はまた、Ｘレジスタ503,カラーレジスタ505,ストリングフラッグレジスタ507,長さレジスタ509,および出力レジスタ511に接続されている。Ｘレジスタ503とカラーレジスタ505は、メモリ400に接続され、そしてメモリ400のアドレス入力およびデータ入力にそれぞれ接続されている。
メモリ400は、図５に示されている２つの走査線アレイ309と311を保持するために用いられる。走査線アレイの各位置は、走査線中の１ピクセルのカラーを保持し、そして各アレイは、走査線にあるピクセルの数ｎと等しい数の位置を有し、前記ピクセルは、Ｘの値によって番号を付けられている。１つの走査線アレイは現在の走査線のデータを保持し、そして他の走査線アレイは前の走査線のデータを保持する。現在の走査線中のデータは前の走査線のデータにほとんど似ていることがよくあるので、この配列により高度の圧縮が達成できる。圧縮が問題とならないかもしくは他の方法で達成される他の配列においては、一つの走査線アレイのみが必要となる。
各走査線を処理した最後に、走査線アレイ309および311の役割は逆にされ、走査線アレイＣであったものが前の走査線アレイとなり、前の走査線アレイＰであったものが現在の走査線アレイとして使用される。
前述の走査動作は既に一般的な用語で記述したが、以下のような実行ステップによって特定される。
0003604152.tif 000004
リピート走査動作は、図10に記述されている一連のステップにより実行される。リピート走査動作が実行されると、ストリングフラグ507は、次にくる走査動作がセットカラー走査動作もしくはコピーカラー走査動作であれば、偽に前もってセットされ、もしくは次にくる走査動作がコピーストリング走査動作であれば、真にセットされる。長さレジスタ509は繰り返し長さであるRepLgにセットされ、そして全てがコードループを通過した後に決定される。各通過において、ストリングフラグが真であれば、前の走査ラインアレイにある位置ｘのカラーは、カラーレジスタ505にコピーされ、そこから、現在の走査ラインアレイにある位置ｘにコピーされる。その後、ｘの値は加算され、長さレジスタ509は減算される。ストリングフラグ507が偽であれば、カラーレジスタの内容は、各リピート走査動作に対して一度単に繰り返されるだけである。
ラインの終了走査動作が始まると、現在の走査ラインのラスター化は完了し、そして走査ラインは再度圧縮される状態になる。圧縮中に実行されるステップが、図11に記述されている。圧縮フェーズの出力は、ラスター化された走査線を記述する一連の走査動作である。これらの走査動作は、メモリ308中の圧縮されたラスターデータ領域323（図６）内にある各走査線キューに記憶される。
図11を参照すると、コンプレッサは、走査線の最初にインデックス値ｘをゼロにセットすることで圧縮を開始する。前記インデックス値での現在の走査線のカラーおよび同じインデックス値での前の走査線のカラーは、第１の作動タイプが同一であるかを確認するように比較され、ここにおいて、カラーはピクセルからピクセルへと変化するが、前の走査線のものと同じ方法で変化する。同一だと分かれば、ストリングフラグ507は真にセットされ、そうでなければ、セットカラー走査動作が出力される。現在のピクセルのカラーは、カラーレジスタ505に記憶される。カラーレジスタに現在のピクセルのカラーを記憶することにより、第２のタイプの作動が確認され、ここにおいて、カラーはピクセルからピクセルで同じものに保たれる。
次に任意の作動の長さが確認される。図11におけるループ１〜４の各々に関して、作動のカラーが所定の条件を満たす度に、長さレジスタ509（最初はゼロにセット）は加算される。Ｘレジスタ503はまた減算される。
作動には両方のタイプがある。すなわち、前の走査ラインにあるピクセルｘ〜ｘ＋ｎは全て所定のカラーであり、そして現在の走査線にあるピクセルｘ〜ｘ＋ｎは全て同じカラーである。現在の走査線にあるピクセルｘ＋ｎ＋１が前の走査線にあるピクセルｘ＋ｎ＋１および現在の走査線にあるピクセルｘ＋ｎの両方と異なるカラーである場合、どちらの作動を選択するかには違いがない。図11のルーチンでは、第１のタイプの作動が任意に選択されている（ループ１）。しかしながら、現在の走査線にあるピクセルｘ＋ｎ＋１が、前の走査線にあるピクセルｘ＋ｎ＋１と同じカラーである場合、第１の作動タイプは延長され、そしてより短い第２のタイプの作動よりも長い第１の作動のタイプを選択することで圧縮が増加される（ループ２）。同様に、現在の走査線にあるピクセルｘ＋ｎ＋１が、現在の走査線にあるピクセルｘ＋ｎと同じカラーであれば、第２のタイプの作動が延長され、そしてより短い第１のタイプの作動よりも長い第２のタイプの作動を選択することで圧縮が増加される（ループ３）。第１および第２のタイプの両方の作動もしくは第１のタイプの作動のみが発見されなければ、第２のタイプの作動のみが発見されるかどうかを決定するように保持する（ループ４）。
したがって、ストリングフラグが真であれば、現在のピクセルが前の走査線にある対応するピクセルのカラーと同じであることを示し、両方のタイプ（同じカラーでかつ前の走査線と対応する作動に等しい）の作動の長さが、ループ１により確認される。その後、前記作動は可能な限り延長される。ループ２は、それが、前の走査線と同じカラーのより長い作動に延長されるかをチェックする。ループ２が継続していれば、コピーストリング走査動作が発生する。ループ３は、それを同じカラーの作動に延長する。ループ３が継続していれば、コピーカラー走査動作が発生する。
ストリングフラグが偽であれば、第２のタイプの作動の長さ（前の走査線とは異なる色で始まる）は、現在の走査ライン中の引き続くピクセルのカラーが、カラーレジスタ505に記憶されているカラーと同一であるかをチェックすることで確認される。これはループ４によりなされる。再度言うが、カラーが同じである度に、長さレジスタ509とＸレジスタ503は両方とも加算される。
いずれのタイプの作動も発見されない場合、長さレジスタ509に記憶される長さはゼロにセットされる。この場合、ｘは常に加算され、先行の動作は繰り返される。ある作動が発見されれば、リピート走査動作は作動の長さとともに出力され、そして先行の動作が新しいｘ値で繰り返される。最後のピクセルが処理されたとき、ラインの終了走査動作が出力され、そしてレジスタは次の走査線用にリセットされる。全ての走査線がラスター化され圧縮されたとき、圧縮された画像はエキスパンダ307により伸張され、プリントエンジに出力される。
一旦走査線が走査線アレイ400に位置させられると、前記走査線がどこから来たかもしくはどのように再現されたのかは、圧縮行為には問題とならない。したがって、同一の圧縮ハードウェアまたはソフトウェアは、任意のラスタライザと関連して用いられる。例えば、ある例において、特殊な独占的PDLのマーキングインターフェースはアクセス可能ではないが、ラスター化された画像は、それが生成されると、アクセス可能となる。前記ラスター化された画像は動作中に圧縮され、全体のラスター画像を記憶する必要性が軽減する。
図12を参照すると、エキスパンダ307の例示的実行例が示されている。エキスパンダはラスタライザ／コンプレッサと同様な方法で実行される。制御回路701はバス313に接続され、バス313から走査線を描写する連続した走査動作を受け、各々の走査動作は先行の伸張走査動作の１つである。制御回路701もまた、Ｘレジスタ703,カラーレジスタ705,ストリングフラグレジスタ707,長さレジスタ709,そして出力レジスタ711に接続されている。前記Ｘレジスタ703とカラーレジスタ705は、メモリ500に接続され、メモリ500のアドレス入力およびデータ入力にそれぞれ接続される。
メモリ500は、現在および前の走査線の両方のデータを保持するために用いられる。特に、このメモリは、現在の走査線を現在のピクセル（Ｘレジスタ703）にアクセスするまで記憶し、そして現在のピクセルと走査線の終わりとの間にある前の走査線の内容を記憶する。もちろん、前記２つの走査線はピンポン方法で２つのバッファに全部記憶される。
先行の伸張走査動作は、一般的な用語で前述したものであるが、以下のように、それらの実行ステップに対して特定される。
0003604152.tif 000005
エキスパンダ中の走査動作用の実行ステップは、僅かに異なってはいるが、ラスタライザ中の対応する動作用の実行ステップと大部分は同じである。リピート走査動作のためのエキスパンダにより実行される実行ステップは、図13に記述されており、図10に記載されている対応するラスター化のリピート走査動作用の実行ステップと大部分が同じであり、再度言うが、僅かに違いはあるが、それをさらに詳細には記載しない。
前述したように、エキスパンダは、伸張されたラスターデータを出力パイプラインに直接出力し、そこから前記データはプリントエンジンによって使用される。多くの場合、プリンタ自体が出力パイプラインを提供し、出力パイプラインにより発生したタイミング信号に応じて、引き続くピクセル値をエキスパンダから要求する。その替わりに、出力データパイプラインは、図５の第２のインターフェース回路350内に位置させられ、図14に詳細に示されているような当業者に既知のタイプのものである。ファーストインファーストアウト（FIFO）メモリ351のデータ入力は、バス313に接続されている。バス313において、メモリ351はCPU305またはDMAC314からのデータを受信する。FIFOメモリ351のデータ出力は、データを第２のインターフェースコネクタ302に出力するためのドライバ352に接続されている。レシーバ253は、第２のインターフェースコネクタ302から制御回路354に準備信号358を伝えるために設けられている。制御回路354は、FIFOメモリ351に向かう読取信号359と、ドライバ352を介して前記第２のインターフェースコネクタ302に接続されるデータクロック信号を発生する。制御回路354のタイミングは、クロック発生回路355により発生するクロック信号360により制御される。FIFOメモリ351の空のフラグ信号は、制御回路354に入力される。
図14の出力パイプラインはまた、走査線の左端のピクセルに達するまでプリンタの白領域を供給し、そして走査線の右端のピクセル後のプリンタの白領域を供給するように、当業者に既知の方法で、マージンを発生するように変形される。
前述した配列において、実際の画像のピクセルは、走査線でソートされているが、走査線内に整理されていない走査動作から生成され（ラスター化中）、そして各ピクセルが一つおよび一つのみのコマンドで規定される状態で、走査線でソートされかつ走査線内に整理される走査動作（圧縮中）を生成するように使用される。ピクセルの圧縮フォーマットの表示は、ピクセル自体よりもよりコンパクトであり、記憶要求を減少させる。さらに、実際のピクセルは、伸張処理中、１度だけとり扱われる。その結果として、処理帯域幅要求は非常に減少され、全体の処理時間は走査線の実際の幅によるもので（適当な定数倍）、かくして、ピクセルを実時間でプリンタに転写するのに十分速い走査線の処理要求を満たすことになる。
前述した配置によると、１つの核となる単純な操作がラスター化／圧縮および後の伸張の両方に使用されるので、ハードウェアは高速に必要な簡単な操作を実行するように設計され、それにより、速い印刷速度を達成できる。同じハードウェアは、ラスター化を加速し、かつCPUの同時操作を可能にするだけに使用されるのではなく、ラスター化処理が既に済んだ場合のみ圧縮目的の為だけに使用される。例えば、特殊なPDLのマーキングインターフェースが独占的であって、アクセス不能であるが、ラスター化された画像が生成されるとアクセス可能になる場合、ラスター化された画像は動作中に圧縮可能であり、全体のラスター画像を記憶する必要性を軽減する。前述のものと同様な利益は、ラスター化がより遅く印刷速度に制限がある速度であることを除けば、この例においても実現される。
本発明は、その精神もしくは実質的な特徴から逸脱することなく、他の特殊な形状において実現できるものであることを当業者により理解されたい。したがって、ここに記載した実施例は、説明のためのものであって、制限されるためのものではない。本発明の範囲は、前述の記載よりも添付の請求の範囲より規定されるべきものであって、それと同等の意味および範囲内からの全ての変形はここに含まれるものである。
【図１】
0003604152.tif 000006
【図２】
0003604152.tif 000007
【図３】
0003604152.tif 000008
【図４】
0003604152.tif 000009
【図６】
0003604152.tif 000010
【図７】
0003604152.tif 000011
【図１０】
0003604152.tif 000012
【図５】
0003604152.tif 000013
【図８】
0003604152.tif 000014
【図１３】
0003604152.tif 000015
【図９】
0003604152.tif 000016
【図１４】
0003604152.tif 000017
【図１１】
0003604152.tif 000018
【図１２】
0003604152.tif 000019