(57)【特許請求の範囲】
【請求項１】
ホストコンピュータ上にて作成され、１ページの画像データがプリンタエンジンでの副走査方向の複数のバンドに区切って送られて来る画像データを展開してプリンタエンジンに送り、印刷を実行させるプリンタ制御装置において、
前記ホストコンピュータから前記画像データを受信すると同時に前記バンド単位で印刷する画像データが含まれているか否かの判別を開始する判別手段と、
該判別手段が印刷する画像データが含まれていると判別したバンドの画像データをＲＡＭ上にイメージ展開する展開処理手段と、
そのイメージ展開した画像データを前記プリンタエンジンに出力する際に、前記ＲＡＭに直接アクセスして高速に出力させるビデオＤＭＡコントローラと、
前記判別手段によって印刷する画像データが含まれていないと判別されたバンドについては、前記ビデオＤＭＡコントローラに前記ＲＡＭの画像データを読み出させることなく、白データを発生して出力させる空白データ出力手段と
を有することを特徴とするプリンタ制御装置。
【請求項２】
請求項１記載のプリンタ制御装置において、
前記展開処理手段は、連続する複数ページの印刷を行う際には、前記判別手段により印刷する画像データが含まれていないと判断されたバンドに対して前記ビデオＤＭＡコントローラが白データを出力中であっても、次ページの印刷データのイメージ展開を行う手段を有することを特徴とするプリンタ制御装置。
【請求項３】
請求項１又は２に記載のプリンタ制御装置において、
前記展開処理手段が、画像データをイメージ展開するバンドの幅を任意に設定する手段を有することを特徴とするプリンタ制御装置。
【請求項４】
請求項１記載のプリンタ制御装置において、
前記展開手段は前記イメージ展開したデータを圧縮して前記ＲＡＭに記憶させ、
該展開処理手段によって圧縮されたイメージ画像を伸張して前記ビデオＤＭＡコントローラに出力すると共に、前記ビデオＤＭＡコントローラが白データを発生して出力している際には、次のバンドの圧縮されたイメージ画像の伸張処理を予め行う伸張手段を設けた
ことを特徴とするプリンタ制御装置。
【請求項５】
請求項４記載のプリンタ制御装置において、
前記伸張手段によって伸張処理した画像データを一時的に記憶するメモリを設けたことを特徴とするプリンタ制御装置。
【請求項６】
請求項４記載のプリンタ制御装置において、
前記伸張手段が伸張処理を予め行う場合には、ホストコンピュータからの画像データの受信、および前記展開処理手段による画像データのイメージ展開と圧縮処理を優先的に行わせる手段を設けたことを特徴とするプリンタ制御装置。
【請求項７】
ホストコンピュータ上にて作成され、プリンタドライバによってプリンタエンジンでの副走査方向の複数のバンドに分けてプリンタ制御装置で解釈できるコード系に変換され、画像データの無いバンドはブランクバンドであると指定されて送られる画像データを展開してプリンタエンジンに送り、印刷を実行させるプリンタ制御装置において、
前記コード系に変換されて送られた画像データを前記複数のバンドに区切ってＲＡＭ上にイメージ展開する展開処理手段と、
そのイメージ展開した画像データを前記プリンタエンジンに出力する際に前記ＲＡＭに直接アクセスして高速に出力させるビデオＤＭＡコントローラと、
前記プリンタドライバによってブランクバンドであると指定されたバンドについては、前記ビデオＤＭＡコントローラに前記ＲＡＭの画像データを読み出させることなく、白データを発生して出力させる空白データ出力手段と
を有することを特徴とするプリンタ制御装置。
【請求項８】
請求項１乃至７のいずれか一項に記載のプリンタ制御装置において、
前記展開処理手段が、複数の色を重ね合わせて印刷するための画像データを展開処理する手段であり、その印刷する各色毎に画像データをイメージ展開するバンドを個別に管理する手段を有することを特徴とするプリンタ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ホストコンピュータ上にて作成される画像データを展開してレーザビームプリンタ等のプリンタエンジンへ送って印刷を実行させるプリンタ制御装置（一般に「プリンタコントローラ」と称する）に関する。
【０００２】
【従来の技術】
プリンタコントローラにて画像を展開する際には、通常、印刷する領域をバンドに区切って行うようにしている。
従来のプリンタコントローラにおいて、印刷するページを副走査方向のバンドに区切って任意ＲＡＭアドレス上にイメージ展開し、パーシャルビットマップ方式で処理する技術として、例えば特開平５−９６７９４号公報に見られるものがある。また、印刷する画像をバンドに分けて描画および展開を行ない、空白の領域に対しては空白データを生成して出力する方式のものが、例えば特開平８−２５８３７８号公報に見られる。そこで、これらの技術の説明を行う。
【０００３】
ホストコンピュータにより使用者は印刷したい画像を作成し、印刷を行うプリンタを指定して、作成した画像の印刷命令を出す。印刷命令が出されると、ホストコンピュータでは、接続されたプリンタにあったプリンタドライバ・ソフトにより、プリンタコントローラ側にて解釈が可能な命令コードの体系に画像データを変換し、その変換した画像データを接続先のプリンタのインタフェースに出力する。
【０００４】
プリンタコントローラでは、ホストインタフェースによって印刷する画像データの受信が開始されると、送られてきた画像データをプリンタコントローラ内部に持つＣＰＵがＲＡＭ上にイメージ描画して展開する。
プリンタコントローラで画像データを描画して展開する方式としては、１ページの印刷イメージをそのまま記憶するフルビットマップ方式と、印刷イメージをバンドに区切って記憶するパーシャルビットマップ方式とがある。
【０００５】
例えば、図８に示すような画像をＲＡＭに記憶する際には、フルビットマップ方式の場合、図９に示すアドレスマップのように、描画開始アドレスから描画終了アドレスまで、１ページ分のイメージデータをそのまま記憶させる。ただし、実際のアドレスマップは１バイトずつのコードデータとなっており、画像の先頭番地からシリアルに画像データが並ぶ構成となっている。
【０００６】
また、パーシャルビットマップ方式の場合には、印刷する画像を図１０に示すように副走査方向に同じ幅のバンドに区切り（この例では８バンドに区切っているがバンド数はいくつでもよい）、そのバンド毎に図１１に示すように、ワークＲＡＭ上のバンドが入りきる空いている領域をそのバンドに割り当てて画像の描画を行なう。
【０００７】
このように、パーシャルビットマップ方式を用いることにより、ワークＲＡＭ上に必ずしも１ページ分の連続した空き領域を確保できなくても、イメージ展開が行えることになる。
次に、ＣＰＵにてＲＡＭへのイメージ展開がされた後、プリンタエンジンに印刷起動命令を出して印刷を開始するとともに、イメージ展開した画像データをプリンタエンジンに出力して印刷を実行させる。
【０００８】
ただし、通常、プリンタエンジンに画像データを出力する（ビデオ出力）場合には、膨大な量のデータを短期間で転送しなければならないため、ビデオＤＭＡコントローラにてＤＭＡ処理を行なって高速化を図っている。また、パーシャルビットマップ方式の場合には、ビデオＤＭＡコントローラに、印刷を行うバンドのＤＭＡの開始アドレスと転送回数を指定して、設定した転送回数分のＤＭＡ動作を行う。
【０００９】
さらに、ビデオＤＭＡコントローラは、ＤＭＡ転送が終了するとＣＰＵにビデオＤＭＡ終了のインタラプトを発行して終了を知らせる。するとＣＰＵは、次に続くバンドのＤＭＡパラメータを再びビデオＤＭＡコントローラに設定し、ビデオＤＭＡコントローラが同様なビデオＤＭＡ動作を行うことを繰り返すことにより、プリンタエンジンへの画像データの出力を完了する。
【００１０】
また、画像データのイメージ展開が終了した時点では、展開したイメージデータで印刷する画像が最後に出てくる部分を探し出す。図１０に示した例では、バンド６の画像が最後のデータであると判別する。そして、それ以降の領域は全て空白（白）であるから、ビデオＤＭＡ動作は行わず、強制的に白データをプリンタエンジンに対して出力するか、または空白領域描画命令を出すことにより、ＣＰＵは次のページの画像データのイメージ展開をすることが可能になり、処理の効率化および高速化を図っている。
【００１１】
なお、プリンタエンジンにおいて用紙ジャムなどのエラーが発生せずに印刷が完了した時点で、ＣＰＵはイメージ展開した画像のＲＡＭ領域を全て白データに書き換え、ＲＡＭクリアを行うことにより、次回以降の処理のための再利用ができる。
このような処理・操作を行うことにより、使用者が作成した画像データをバンドに区切って印刷することが可能になり、画像の後端部の空白部分のビデオＤＭＡを行わずに印刷が可能になる。
【００１２】
【発明が解決しようとする課題】
近年のレーザプリンタエンジンの発達に伴い、高速で高解像度の画像を扱うマシンが増え、さらにカラーのレーザプリンタも開発されている現状から、プリンタコントローラには大容量のＲＡＭが必要となってきている。それに伴い、圧縮技術を用いてより少ないＲＡＭでプリンタコントローラを構成する必要が出てきている。
【００１３】
しかしながら、上述した従来のパーシャルビットマップ方式のプリンタコントローラでは、次ページの印刷画像のイメージ展開の効率化を行って、印刷時にプリントアンダーランを極力避けることを主眼としている。そのため、印刷する１ページの画像データの内の最後の画像データがどこにあるかを検出して、検出した場所以降の印刷部分のみを空白領域として、ビデオＤＭＡ動作を行わずに強制的に白データを出力することにより、ＲＡＭが接続されているバスのトラフィックを低下させて、次ページの画像データ受信およびイメージ展開の高速化を図っている。
【００１４】
したがって、最後の画像データよりも前に空白のバンドが存在している場合は、その空白領域に対しても白画像を出力するためのビデオＤＭＡ動作を行わなくてはならず、無駄な処理時間を費やしてしまうという不具合があった。
また、最後の画像データ以前に空白のバンドが存在している場合であっても、その空白部分のイメージ画像を記憶させておくのに必要なＲＡＭの記憶領域（メモリ容量）を確保しておかなくてはならなくなり、その分だけコストが高くなってしまうという不具合もあった。
【００１５】
さらに、この空白部分を記憶させるＲＡＭ領域に対しても、次のページの印刷のためのメモリクリア処理を行わなくてはならず、メモリクリアの処理速度を落してしまうという不具合もあった。
【００１６】
また、通常のプリンタコントローラでは、イメージ展開した画像データを圧縮して記憶させておき、ビデオＤＭＡ動作によってプリンタエンジンへ出力する際に、イメージデータの伸張処理をして出力するのが一般的であるが、空白領域のバンドであるにもかかわらず、ＲＡＭから圧縮処理がされた画像データを読み出し、伸張処理を施した後に出力しなくてはならないため、圧縮効率が悪いばかりか、ＲＡＭが接続されているバスのトラフィック量が増加してさらに処理速度を落してしまうという不具合もあった。
【００１７】
さらに、ホストコンピュータからプリンタコントローラへの画像転送の際にイメージ転送して印刷する方式の場合においても、空白の画像データを転送しなくてはならず、画像転送量が増してしまい、処理速度を落してしまうだけでなく、ネットワーク環境に接続して動作させる場合などには、ネットワーク全体のトラフィック量を増加させてしまうという不具合もあった。
【００１８】
この発明は、パーシャルビットマップ方式のプリンタ制御装置において、上述のような不具合を解消して、ＲＡＭの記憶領域の一層の効率的な利用を図り、必要なＲＡＭ容量を低減して低コスト化すると共に、画像データの展開および転送処理を高速化して印刷に要する時間を短縮することを目的とする。
【００１９】
【課題を解決するための手段】
この発明は、ホストコンピュータ上にて作成され、１ページの画像データがプリンタエンジンでの副走査方向の複数のバンドに区切って送られて来る画像データを展開してプリンタエンジンに送り、印刷を実行させるプリンタ制御装置において、上記の目的を達成するため、次の各手段を設けたものである。
【００２０】
すなわち、上記ホストコンピュータから前記画像データを受信すると同時にバンド単位で印刷する画像データが含まれているか否かの判別を開始する判別手段と、該判別手段が印刷する画像データが含まれていると判別したバンドの画像データをＲＡＭ上にイメージ展開する展開処理手段と、そのイメージ展開した画像データを上記プリンタエンジンに出力する際に、上記ＲＡＭに直接アクセスして高速に出力させるビデオＤＭＡコントローラと、上記判別手段によって印刷する画像データが含まれていない（ホワイトバンド）と判別されたバンドについては、上記ビデオＤＭＡコントローラにＲＡＭの画像データ読み出させることなく、白データを発生して出力させる空白データ出力手段とを設けたものである。
【００２１】
このように構成することにより、中間のホワイトバンドのイメージデータ出力時にも、バストラフィックを低減させて、処理を高速化することができる。
さらに、上記展開処理手段は、連続する複数ページの印刷を行う際には、上記判別手段により印刷する画像データが含まれていないと判断されたバンドに対してビデオＤＭＡコントローラが白データを出力中であっても、次ページの印刷データのイメージ展開を行う手段を有するようにすれば、画像データのイメージ展開処理を高速化することが可能になる。
【００２２】
【００２３】
なお、画像データをＲＡＭにイメージ展開する際に、印刷する画像データが存在するバンドのみにＲＡＭ領域を割り当てるようにすれば、冗長な白画像をＲＡＭに記憶させる必要がなくなるので、ＲＡＭの記憶容量が少なくて済むためコストを低減させることが可能になる。
【００２４】
上記各プリンタ制御装置において、展開処理手段が、画像データをイメージ展開するバンドの幅を任意に設定する手段を有するとよい。
それによって、白画像の幅にあったバンド幅を設定できるため、例えば、複数行に亘るテキストデータを印刷する場合などに、行間をホワイトバンドと指定することができ、ＲＡＭを効率よく利用することが可能になる。
【００２５】
また、上記展開処理手段は、展開処理が必要なバンドにＲＡＭの割り当てを行う際にのみ、該ＲＡＭの割り当てた領域に白データを書き込むＲＡＭクリア処理を行なう手段を有するとよい。
すなわち、この発明によるプリンタ制御装置は、ホワイトバンドを印刷する際には自動的に白データを出力できるため、印刷終了後に通常行ってきたメモリクリア処理を行わず、イメージ展開の際に画像データが存在すると検知した時点でそのバンド領域のメモリクリア処理を行うことにより、不要な領域のメモリクリア処理を行う必要はなくなり、処理を高速化させることが可能になる。
【００２６】
さらにまた、展開処理手段が、複数のバンドに区切ってＲＡＭ上にイメージ展開した画像データを圧縮してＲＡＭに記憶させるようにし、その圧縮されたイメージ画像を伸張してビデオＤＭＡコントローラに出力すると共に、そのビデオＤＭＡコントローラが白データを発生して出力している際には、次のバンドの圧縮されたイメージ画像の伸張処理を予め行う伸張手段を設けるようにするとよい。
このようにすることにより、ＲＡＭの記憶領域を一層効率よく利用できる。
なお、この場合に、上記伸張手段によって伸張処理した画像データを一時的に記憶するメモリ（バンドバッファ）を設けるのが望ましい。
【００２７】
さらに、上記伸張手段が伸張処理を予め行う場合には、ホストコンピュータからの画像データの受信、および上記展開処理手段による画像データのイメージ展開と圧縮処理を優先的に行わせる手段を設けるとよい。
それによって、次ページ以降の画像データのイメージ展開や、ホストコンピュータから次ページ以降の画像データの受信等が行われていないときのように、バスアービトレーションの優先順位を落して、バスが空いている期間中に圧縮されたイメージデータの伸張処理を行うことができ、処理の効率化と高速化が可能になる。
【００２８】
また、ホストコンピュータ上にて作成され、プリンタドライバによってプリンタエンジンでの副走査方向の複数のバンドに分けてプリンタ制御装置で解釈できるコード系に変換されて送られ、画像データの無いバンドはブランクバンド（前記ホワイトバンドに相当する）であると指定されて送られる画像データを展開してプリンタエンジンに送り、印刷を実行させるプリンタ制御装置においても、次の各手段を設けることによって前述の目的を達成することができる。
【００２９】
すなわち、上記コード系に変換されて送られた画像データを複数のバンドに区切ってＲＡＭ上にイメージ展開する展開処理手段と、そのイメージ展開した画像データをプリンタエンジンに出力する際にＲＡＭに直接アクセスして高速に出力させるビデオＤＭＡコントローラと、上記プリンタドライバによってブランクバンドであると指定されたバンドについては、上記ビデオＤＭＡコントローラにＲＡＭの画像データ読み出させることなく、白データを発生して出力させる空白データ出力手段とを設ける。
【００３０】
これらのいずれのプリンタ制御装置においても、上記展開処理手段が、複数の色を重ね合わせて印刷するための画像データを展開処理する手段である場合には、その印刷する各色毎に画像データをイメージ展開するバンドを個別に管理する手段を有するのが望ましい。
それによって、ホワイトバンド（ブランクバンド）の発生頻度を上げることができるので、ＲＡＭのメモリ容量を抑えて安価なカラープリンタ制御装置を提供することが可能になる。
【００３１】
【発明の実施の形態】
以下、この発明の実施の形態を図面に基づいて具体的に説明する。
まず、この発明の第１の実施形態について説明する。図３はこの発明の第１の実施形態のプリンタ制御装置であるプリンタコントローラを用いたプリンタシステムのブロック構成図である。
【００３２】
このプリンタシステムは、ホストコンピュータ１とプリンタコントローラ２とプリンタエンジン３とによって構成されており、プリンタコントローラ２とプリンタエンジン３とが一体となってプリンタを構成しているものも含む。
【００３３】
プリンタコントローラ２は、ホスト・インタフェース（以下「ホストＩ／Ｆ」と略称する）１２，中央処理装置であるＣＰＵ１３，プログラムメモリであるＲＯＭ１０，およびデータメモリであるＲＡＭ４とがシステムバス５によって相互に接続され、マイクロコンピュータを構成している。
【００３４】
さらに、そのシステムバスに接続されたビデオＤＭＡコントローラ（以下「ＶＤＭＡＣ」と略称する）６と、伸張器９，セレクタ７，およびエンジン・インタフェース（「エンジンＩ／Ｆ」と略称する）８とを備えている。
そして、ホストＩ／Ｆ１２にホストコンピュータ１が接続され、エンジンＩ／Ｆ８にプリンタエンジン３が接続される。
【００３５】
このプリンタシステムにおいて、使用者は、ホストコンピュータ１上でアプリケーションソフトウェアを利用して、印刷を行いたい画像データを作成する。
この時、使用者によって作成される画像データは、複数ページに渡っているものやカラーデータとして作成されるもの等、各種の画像データが存在する。
そして、画像データの作成が完了した時点で、使用者はホストコンピュータ１に接続されて印刷が可能なプリンタのうち、印刷を行いたいプリンタを選択して、印刷命令を発行する。
【００３６】
その際の使用者からの印刷命令には、印刷部数の指定、カラーかモノクロかの指定、拡大あるいは縮小率の指定、用紙サイズの指定、１枚の用紙に複数のページをまとめて印刷する集約印刷を行なうか否かの指定など、各種の印刷モードが指定される。
【００３７】
使用者により印刷命令が発行されると、使用者から指定された各種モードを満足するように、ホストコンピュータ１の内部に記憶されているプリンタドライバと呼ばれるソフトウェアによって、接続されているプリンタコントローラ２が解読できるコードに変換して、その変換した画像データのコードをプリンタコントローラ２に出力する。
【００３８】
プリンタコントローラ２では、ネットワークや各種インタフェースで構成されるホストＩ／Ｆ１２によって、ホストコンピュータ１からの画像データの受信が始まると、ＣＰＵ１３に対してインタラプトを発生させて印刷命令が発行されたことを知らせ、受信した画像データをＲＡＭ４にバッファリングして一時的に記憶させる。
【００３９】
ＣＰＵ１３は、受信してバッファリングした画像データをプリンタエンジン３によって印刷が可能なデータにするために、ＲＡＭ４にイメージ展開して、コード情報として受信された画像をビットマップ情報に変換して記憶させていく。
その際、ＣＰＵ１３は、ＲＡＭ４の画像データをイメージ展開する部分は仮想的に副走査方向のバンドに区切ってイメージ展開させるとともに、それぞれ各バンドに印刷すべき画像データが存在するかどうかを参照するための図２に示すようなテーブルをＲＡＭ４内のイメージ展開をする場所とは違う領域に作成する。
【００４０】
また、バンドに区切る際には予め１ページ分のフレームメモリを確保する必要はなく、イメージ展開する必要のあるバンドのみＲＡＭ４に順次割り当てて展開する構成にすることにより、メモリ領域を効率的に利用することができる。さらに、バンドを割り当てるときにのみメモリクリアを行なうことにより、多重のメモリクリア処理を行なわなくて良くなり、一層効率的な処理が可能になる。
【００４１】
カラープリンタコントローラの場合には、通常ＣＭＹＫの４色のイメージ展開をするため、例えばイメージ展開する色が赤の場合には、Ｍ（マゼンタ）とＹ（イエロー）のみを展開すれば良いため、各色毎にバンドに区切って処理を施すことにより、冗長なＲＡＭ領域を確保する必要がなくなる。
【００４２】
このＲＡＭ４へのイメージ展開と同時に、必要に応じてＲＡＭ４に記憶されたイメージデータを圧縮（高能率符号化）して再びＲＡＭ４に格納し直すことができる。画像データの圧縮技術については公知技術を利用すればよいので、その説明は省略する。
【００４３】
ただし、プリンタコントローラ２は必ずしも圧縮が行えなくてもよい。また、圧縮が可能な環境であっても、ＲＡＭ４の容量が多くて充分記憶できる場合などは、圧縮を行わずにイメージデータのまま記憶させておく場合もあり、その方が圧縮・伸張処理を行わない分だけ処理速度が速くなる。
また、圧縮を行う場合には、専用の圧縮器を用いて行う場合とＣＰＵ１３によって行う場合とがある。
【００４４】
ＣＰＵ１３によって受信された画像データのうち、１ページ分のイメージ展開（圧縮）が全て完了すると、ＣＰＵ１３はＶＤＭＡＣ６にビデオＤＭＡを行わせるために、各種パラメータをセットしてビデオＤＭＡの開始を司令する。
なお、設定するパラメータとしては、印刷を行うバンドについて図２に示したテーブルを参照した結果が、ホワイトバンド（データなし）か画像データが存在している（データあり）かの指定や、画像データが存在している時には、ＤＭＡ動作を行うＲＡＭ４上の開始アドレスやＤＭＡ転送する際の転送回数の指定、ビデオＤＭＡを行なうイメージデータが圧縮されているか否かの指定などを設定する。
【００４５】
このように、転送回数を任意に変更可能な構成にすることにより、任意のバンド幅を指定できるようになり、ホワイトバンド（データなし）をできるだけ多く作成することが可能になり、メモリをより効率的に利用できるだけではなく、より高速に処理が可能になる。
【００４６】
ＶＤＭＡＣ６では、各パラメータが指定されてＤＭＡの起動がかかると、ＲＡＭ４の指定されたアドレスを読み出し、圧縮されていない展開された画像データ（イメージデータ）の場合にはセレクタ７をＶＤＭＡＣ６からの入力を有効なように切り替えて、エンジンＩ／Ｆ８を通してプリンタエンジン３にそのイメージデータを出力する。
【００４７】
また、ＲＡＭ４の指定されたイメージデータが圧縮されている場合には、伸張器９にそのイメージデータを送って、伸張器９によって伸張されたイメージデータをエンジンＩ／Ｆ８に出力するようにセレクタ７を切り替えて、そのイメージデータをエンジンＩ／Ｆ８からプリンタエンジン３に出力する。
【００４８】
伸張器９では、ＶＤＭＡＣ６からイメージデータが送られてきた場合には、圧縮した方式の逆の方式を使用して伸張して出力することとなる。一般的に、プリンタエンジン３で出力する画像データはイメージデータとして扱い、短時間に大容量のデータを転送しなければならず、伸張処理をＣＰＵ３にて行なっているとプリントオーバーランが発生してしまうため、ビデオＤＭＡを行う際には、専用の伸張器を用いることになる。
【００４９】
また、ＣＰＵ１３によって指定されたモードが、ホワイトバンドの場合には、ＶＤＭＡＣ６が白画像を強制的に生成してセレクタ７に出力する。この場合にはＲＡＭ４からイメージデータを読み出すことはせずに、設定された転送回数分の白データを出力することになる。
一般的に「白」は、カラーのＣＭＹＫ又はモノクロで印刷する場合には、画像データはなしということで“０”が出力される。ただし、インタフェース上の取り決めで“１”を出力する場合もある。
【００５０】
また、伸張後のデータやＶＤＭＡＣ６からの出力データを一旦バッファリングして記憶可能な構成にしておくことにより、ホワイトバンド出力の際にはホストＩ／Ｆ１２からの画像データ入力等が行なわれていない間のバスが空いている時間に伸張処理を行うことができる。そのために、ＦＩＦＯメモリ等のバッフア用のメモリを設けておくとよい。
【００５１】
エンジンＩ／Ｆ８では、プリンタエンジン３にて印刷が可能な解像度および速度に合わせて画像データを出力する。また、プリンタエンジン３では送られてきたビットマップデータの印刷を実行して印刷を完了する。
【００５２】
以上の操作を１ページ分のうちの全てのバンドについて行うことにより、１ページ分の画像の印刷が完了する。ただし、印刷が複数ページに亘る場合には、前のページのイメージ展開が終了して、ビデオＤＭＡ動作にて印刷処理を行うと同時に、バスが空いている時間を利用して次のページのイメージ展開を行う並列処理をする。このようにして、全てのページの印刷が終了した時点で処理を完了する。
【００５３】
また、プリンタコントローラ２にて解読できるエミュレーションが、例えばＧＤＩプリンタ方式のようにプリンタドライバソフトから直接バンドに区切って転送されてくるような場合には、プリンタドライバにて転送する時点で、ブランクバンド（前述のホワイトバンドに相当する）を指定する。
【００５４】
なお、ＲＯＭ１０には、ＣＰＵ１３を動作させるためのプログラムコードや、テキスト画像のイメージ展開に使用するフォント情報等が記憶されている。
またこの発明における展開処理手段（ＲＡＭの割り当て手段，バンド幅設定手段，ＲＡＭクリア処理手段，圧縮手段等を含む）、判別手段、および空白データ出力手段などの機能は、ＣＰＵ１３がＲＯＭ１０に書き込まれたプログラムに従って動作することによって実現される。
【００５５】
次に、この発明の第２の実施形態について説明する。図３は、この発明の第２の実施形態のプリンタ制御装置であるプリンタコントローラを用いたカラープリンタシステムのブロック構成図である。
この第２の実施形態のプリンタコントローラ２′はカラープリンタコントローラであり、ホストコンピュータ１およびプリンタエンジン３とによってカラープリンタシステムを構成している。
【００５６】
このプリンタコントローラ２′において、図１に示したプリンタコントローラ２と相違する主な点は、セレクタ７に代えてバンドバッファ１１を設けた点である。このバンドバッファ１１は、伸張器９によって予め伸張したイメージデータおよびＶＤＭＡＣ６によってＲＡＭ４から読み出したイメージデータを一時的に記憶するバッファ用のメモリである。
【００５７】
使用者によってホストコンピュータ１上で作成された画像データは、ホストコンピュータ１からプリンタコントローラ２′の内部のホストＩ／Ｆ１２に送られる。その際、ホストコンピュータ１の内部ではプリンタドライバによって、画像データを接続されるプリンタコントローラが解釈可能な言語形式に変換して出力する。また、画像データの出力時には、図１０に示したように、１ページの画像データをプリンタエンジン３の副走査方向に複数のバンドに分けて出力する。
【００５８】
その際には、図１０のバンド２のようにバンド領域に全く画像データの無いバンドは、ブランクバンドとしてプリンタコントローラに指定する。また、バンド３と４のように、１つの文字が複数のバンドにまたがっている場合には、Ｃという文字を２つに分解してイメージ展開する。画像データがカラーの場合には、ホストコンピュータ１で扱われる画像は通常ＲＢＧで表現されているが、印刷を行う場合にはＣＭＹＫで表されるため、ＣＭＹＫの各色成分に分割してさらにバンドに分けて処理を行う。
【００５９】
ただし、ＲＢＧ→ＣＭＹＫの変換は、必ずしもプリンタドライバで行わなくてはならないわけではなく、ＲＢＧデータで転送して、プリンタコントローラ２′においてＣＭＹＫデータに変換しても構わない。
【００６０】
次に、図６のフロー図を参照して、このプリンタコントローラ２′側でのイメージ展開に関わる処理の説明を行う。
ステップＳ１で、ホストＩ／Ｆ１２で受信した画像データを一旦ＲＡＭ４に記憶させる。受信と同時にＣＰＵ１３にインタラプトを発生させて、受信を知らせるとともに、ＣＰＵ１３ではイメージの展開を開始する。イメージ展開の際には、プリンタドライバから予めバンド単位にソートされて画像データが入力されてきているため、バンド０からイメージ展開していく。
【００６１】
その入力される画像データが図１０に示したようにバンド分けされているとすると、ステップＳ２のチェックにおいて、バンド０でのプリンタドライバからの画像データには印刷する画像データが含まれているため、ステップＳ３で１バンド分が入りきる容量のあるＲＡＭ空間を割り当てて、ステップＳ４で割り当てた空間のＲＡＭクリア（０を書き込む）を行う。
この際、ＲＡＭ空間は１バンド分が連続している領域であれば、どのアドレスを割り当ててもよい。
【００６２】
次に、ステップＳ５で「バンド０の領域にはデータがありバンドを割り当てた」ことを記憶しておくために、図４に示すようなバンドテーブルを発行し、バンド番号毎に、データの有無、およびデータがある場合の開始アドレスと終了アドレスを記憶させておく。そして、ステップＳ６で受け取った画像データをイメージ展開し、ステップＳ７で圧縮してＲＡＭ領域に書き込む。
【００６３】
バンド０の画像データを全て展開し終わると、次のバンド１も画像データが存在しているため、同様にしてＲＡＭ空間を割り当て、そのＲＡＭ空間をクリアしてイメージ展開し、バンドテーブルに登録する。
次に、バンド２の領域では印刷する画像データは存在していないため、ＲＡＭ空間の割り当ては行わず、ステップＳ１０でバンドテーブルにのみブランクバンド（データなし）として登録する。
【００６４】
ステップＳ８において最後のバンドとなるまで、すなわち最後のバンドの画像データを展開し終わるまでこのような操作を繰り返して行い、１ページ分の全てのバンドについてイメージ展開を行う。
そして、全てのページに対して展開が終ったら、ステップＳ９の判断で「次ページはなし」になるので処理を終える。
【００６５】
また、図５に示すように、一般的なテキスト文書は複数行にわたって記述されており、一定のピッチで行間が空けられている。従って、行間にあたる空白部分が１バンドとなるようにバンド幅を設定することにより、空白部分をイメージデータとしてＲＡＭに記憶する必要はなくなる。
【００６６】
さらに、カラーでの印刷の際には、ＣＭＹＫのそれぞれの色についてバンド幅を別々に管理する。これは、例えば、赤を印刷する場合には、ＭとＹのインクだけ足し合わせて行えばよいため、画像データのイメージ展開もまた、ＭとＹのみを行って記憶しておけばよく、ＣとＫの成分は空白となるので、場合によっては、ブランクバンド領域を増やすことが可能になるためである。また、イメージ展開する際には、ＲＡＭ容量と展開時間を考慮して、必要であれば圧縮させて記憶させておく。
【００６７】
次に、印刷時の処理を図７のフロー図を参照して説明する。
１ページのイメージ展開が終了した時点で、図７の処理を開始し、まずステップＳ１１でプリンタエンジン３のステータスをチェックして、プリンタエンジン３が印刷ジャムなどがなく印刷可能な状態（レディ）ならば、プリンタエンジン３に印刷起動命令を出して印刷を開始させる。
【００６８】
それと同時に、ＣＰＵ１３はステップ１２以降の処理を行う。すなわち、ステップＳ１２でＶＤＭＡＣ６にビデオパラメータをセットする。これは、図４に示したバンドテーブルにしたがって、バンド０から印刷するバンドがブランクであるか否かの指定、ＲＡＭ４の開始アドレスの指定、転送回数の指定、イメージデータが圧縮されているか否かの指定をＶＤＭＡＣ６に設定することである。
【００６９】
ステップＳ１２でビデオパラメータをセットすると、次にステップＳ１３でＶＤＭＡＣ６を起動させてＤＭＡ動作を開始させる。
ＶＤＭＡＣ６は、指定されたバンドがブランクバンドであるか否かを見て、ブランクバンドでない場合にはＲＡＭ４上の開始アドレスから順次データを読み出し、読み出したイメージデータが圧縮されている場合には、読み出してきたイメージデータを伸張器９に出力する。
【００７０】
伸張器９では圧縮したデータの伸張作業を行い、バンドバッファ１１に一時的に記憶させておく。また、読み出したイメージデータが圧縮されていない場合には、ＶＤＭＡＣ６が読み出したイメージデータをそのままバンドバッファ１１に書き込む。また更に、ＶＤＭＡＣ６に設定されたパラメータがブランクバンドの場合には、ＲＡＭ４からイメージデータを読み込むことはせずに、ＶＤＭＡＣ６にて強制的に“０”をバンドバッファ１１に書き込む。
【００７１】
エンジンＩ／Ｆ８では、プリンタエンジン３の印刷スピードに合わせて、バンドバッファ１１から印刷データを読み出してプリンタエンジン３へ出力を行い、印刷を実行させる。１つのバンドのＤＭＡ転送が完了した時点で、ＶＤＭＡＣ６はＣＰＵ１３にインタラプトを発生してＤＭＡの転送終了を伝える。
【００７２】
ＣＰＵ１３は、ステップＳ１４にてインタラプトの発生を検知すると、ステップＳ１５で最後のバンドでなければステップＳ１１へ戻り、ステップＳ１２で次のバンドのパラメータをＶＤＭＡＣ６に再設定し、ステップＳ１３でＶＤＭＡＣ６を起動する。
それ以降同様の処理を行って、最終のバンドの処理を終え、ステップＳ１５でＹＥＳになるまで印刷を行う。
【００７３】
また、ＶＤＭＡＣ６にてホワイトバンドを出力している際には、システムバス５を利用しているものは、ホストＩ／Ｆ１２にて画像データの受信を行ってＲＡＭ４にバッファリングしている場合と、ＣＰＵ１３によって後に印刷するバンドのイメージ展開を行っている場合である。
【００７４】
このとき、ビデオＤＭＡ動作でのバスの利用はされていないため、比較的トラフィックは多くない。そのため、印刷しているバンドよりも次のバンド以降の伸張処理を、ホストＩ／Ｆ１２からの受信とイメージ展開の空いた時間を利用して、ＲＡＭ４からイメージデータを読み出し、伸張器９に出力することにより予め行ってしまうことができる。これにより、プリントオーバランの発生を防止しやすくなる。
【００７５】
以上の操作を行うことにより、ブランクバンドでのイメージ転送を行なわずに印刷が可能になる。また、一連のジョブを完了する際には、メモリクリアは行わずに終了して構わない。
この図６及び図７のフロー図によって説明した処理は、図１に示したプリンタコントローラ２による処理の場合にも、ほとんど同様にあてはまる。
【００７６】
【発明の効果】
以上説明してきたように、この発明によるプリンタ制御装置（プリンタコントローラ）を使用することにより、画像データをＲＡＭ上にイメージ展開する際に副走査方向のバンドに区切って処理し、そのイメージ展開した画像データをビデオＤＭＡ動作によってＲＡＭから読み出してプリンタエンジンへ送出する際に、印刷する画像が存在しないホワイトバンドである場合には、ビデオＤＭＡ動作を行わずに自動的に白データを生成してプリンタエンジンに出力するため、１ページの中間のホワイトバンド出力時にも、バスのトラフィックを低減させて処理を高速化することが可能になる。
【００７７】
また、請求項２以降の各発明によれば、上記に加えて次のような効果が得られる。
請求項２の発明によれば、ホワイトバンドに対する白データの出力時には、バスのトラフィックが低減するため、複数ページの印刷を行う際にＲＡＭ容量に余裕がある場合には、次ページ以降の画像データを展開することにより、展開処理を速めることができる。
【００７８】
また、画像データを複数のバンドに区切って展開処理をする際に、ＲＡＭ上に１ページ分の各バンドの領域を設けることなく、イメージ展開する際に、展開が必要なバンドすなわち印刷する画像データが存在するバンドのみにＲＡＭ領域を割り当てることにより、冗長な白画像をＲＡＭに記憶させる必要がなくなり、ＲＡＭの容量を節約してコストを低減させることが可能になる。
【００７９】
請求項３の発明によれば、画像データをイメージ展開するバンド幅を可変にすることにより、印刷する画像中の白画像の幅にあったバンド幅を設定できるため、例えば複数行に亘るテキストデータを印刷する場合などに、行間の幅に合わせてホワイトバンドの幅を設定することができ、それによってＲＡＭを一層効率よく利用することが可能になる。
【００８０】
なお、ホワイトバンドを印刷する際には自動的に白画像を出力できるため、印刷終了後に通常行ってきたメモリクリア処理を行わず、イメージ展開の際に画像データが存在すると検知した時点で、そのバンド領域のメモリクリア処理を行うことにより、不要な領域のメモリクリア処理を行う必要がなくなり、処理を高速化させることが可能になる。
【００８１】
請求項４の発明によれば、複数のバンドに区切ってイメージ展開したデータを圧縮してＲＡＭに記憶させることにより、ＲＡＭの利用効率をさらに高めることができる。そして、ホワイトバンドを印刷している期間には、バスのトラフィックが低減されるため、次ページ以降のイメージ展開やホストコンピュータから次ページ以降の画像データの受信などと同時に、並行して次に印刷処理を行うバンドの圧縮されたイメージデータの伸張処理も行うことにより、伸張処理の効率化を図ることが可能になる。
【００８２】
請求項５の発明によれば、上記伸張処理によって予め伸張した画像データをメモリに一時的に記憶させておき、印刷時にはそのメモリから伸張した画像データ（イメージデータ）を出力することができ、プリンタエンジンへの画像データの出力処理の効率化を図ることが可能になる。
【００８３】
請求項６の発明によれば、圧縮されたイメージデータの伸張処理を行なう場合に、次ページ以降の画像データのイメージ展開や、ホストコンピュータから次ページ以降の画像データの受信等が行なわれていないときのように、バスアービトレレーションの優先順位を落して、バスが空いている期間中に行なうことにより、処理の効率化が可能になる。
【００８４】
請求項７の発明によれば、例えばイメージプリンタやＧＤＩプリンタのように、ホストコンピュータ側でイメージ展開や各種画像処理を行う場合には、プリンタドライバから画像データをプリンタコントローラに出力する際に、バンドに区切って処理を行ない、ブランクバンド（ホワイトバンド）が存在する場合にはブランクバンドであるという情報のみを出力するようにした場合にも、上述の各プリンタ制御装置と同様に、ＲＡＭ容量の低減と画像データ処理の高速化を可能にする。
【００８５】
そして、請求項８の発明によれば、カラープリントを行なうためのプリンタ制御装置の場合に、印刷する各色毎に画像データをイメージ展開するバンドを個別に管理することによって、ホワイトバンド（ブランクバンド）の発生頻度を上げることができ、プリンタ制御装置におけるＲＡＭの容量を節減して、カラープリンタの低コスト化を可能にする。
【図面の簡単な説明】
【図１】  この発明の第１の実施形態のプリンタ制御装置であるプリンタコントローラを用いたプリンタシステムのブロック構成図である。
【図２】  図１に示すプリンタコントローラのＲＡＭ上に作成する各バンドのデータの有無を記録するバンドテーブルの一例を示す図である。
【図３】  この発明の第２の実施形態のプリンタ制御装置であるプリンタコントローラを用いたカラープリンタシステムのブロック構成図である。
【図４】  図３に示したプリンタコントローラで作成するバンドテーブルの一例を示す図である。
【図５】  テキスト文書とその行間の一例を示す説明図である。
【図６】  図３に示したプリンタコントローラ側でのイメージ展開に関わる処理のフロー図である。
【図７】  同じくその印刷時の処理のフロー図である。
【図８】  １ページの画像の例をその主走査方向および副走査方向と共に示す説明図であ
る。
【図９】  図８に示した画像のイメージデータをフルビットマップ方式でＲＡＭに記憶する場合のアドレスマップの説明図である。
【図１０】  図８に示した画像のイメージデータをパーシャルビットマッブ方式でＲＡＭに記憶する場合のバンド構成例を示す説明図である。
【図１１】  図１０に示した複数のバンドのワークＲＡＭ上でのアドレスマップの一例を示す説明図である。
【符号の説明】
１：ホストコンピュータ    ２，２′：プリンタコントローラ    ３：プリンタエンジン    ４：ＲＡＭ    ６：ビデオＤＭＡコントローラ（ＶＤＭＡＣ）
７：セレクタ    ８：エンジンインタフェース    ９：伸張器    １０：ＲＯＭ
１１：バンドバッファ    １２：ホストインタフェース    １３：ＣＰＵ
【図１】
0003655457.tif 000002
【図２】
0003655457.tif 000003
【図３】
0003655457.tif 000004
【図４】
0003655457.tif 000005
【図５】
0003655457.tif 000006
【図６】
0003655457.tif 000007
【図７】
0003655457.tif 000008
【図８】
0003655457.tif 000009
【図９】
0003655457.tif 000010
【図１０】
0003655457.tif 000011
【図１１】
0003655457.tif 000012