(57)【要約】【課題】プリンタコントローラの速度や印刷エンジンの速度が減じられても，最適な閾値に基づいて中間コードの事前展開の必要性を判断することができるようにする。  【解決手段】画像形成装置のコントローラは，所定の印刷範囲内の中間コードについて，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超えない場合に当該中間コードを中間コードバッファに記憶し，超える場合に当該中間コードを前記イメージデータに事前展開して前記中間コードバッファに記憶し，さらに，印刷エンジンの動作に同期して，中間コードバッファ内の中間コードをイメージデータに展開しながら当該イメージデータを，または中間コードバッファ内に事前展開したイメージデータを，印刷エンジンに供給する。そして，コントローラの動作速度または印刷エンジンの速度に応じて，所定の閾値を変更設定する。【選択図】図１
2008049664.tif 000002
【特許請求の範囲】
【請求項１】
所定の印刷範囲毎に印刷データから変換された中間コードを記憶し，その後，印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給する画像形成装置のコントローラにおいて，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超えない場合に当該中間コードを中間コードバッファに記憶し，超える場合に当該中間コードを前記イメージデータに事前展開して前記中間コードバッファに記憶し，
前記印刷エンジンの動作に同期して，前記中間コードバッファ内の中間コードをイメージデータに展開しながら当該イメージデータを，または前記中間コードバッファ内に事前展開した前記イメージデータを，前記印刷エンジンに供給し，
前記コントローラの動作速度または前記印刷エンジンの速度のいずれか一つまたは両方に応じて，前記所定の閾値を前記所定の印刷範囲毎に変更設定することを特徴とする画像形成装置のコントローラ。  
【請求項２】
所定の印刷範囲毎に印刷指令に対応する中間コードを画像形成装置に供給する画像形成装置のドライバコントローラであって，前記画像形成装置にて，印刷エンジンの動作に同期して前記供給した中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給させるドライバコントローラにおいて，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超えない場合に当該中間コードを中間コードバッファに記憶し，超える場合に当該中間コードを前記イメージデータに事前展開して前記中間コードバッファに記憶し，
前記中間コードバッファに記憶した中間コードまたは事前展開したイメージデータを前記画像形成装置に供給し，
前記画像形成装置において，前記印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを，または事前展開した前記イメージデータを，前記印刷エンジンに供給させ，
前記コントローラの動作速度または前記印刷エンジンの速度のいずれか一つまたは両方に応じて，前記所定の閾値を前記所定の印刷範囲毎に変更設定することを特徴とする画像形成装置のコントローラ。
【請求項３】
請求項１または２において，
前記コントローラの動作速度が基準速度の場合に前記所定の閾値が基準閾値に設定され，前記コントローラの動作速度が前記基準速度より遅い場合は前記所定の閾値が前記基準閾値よりも小さく変更設定することを特徴とする画像形成装置のコントローラ。
【請求項４】
請求項３において，前記画像形成装置が省電力モードの場合に前記コントローラの動作速度が前記基準速度より遅くなることを特徴とする画像形成装置のコントローラ。
【請求項５】
請求項１または２において，
前記印刷エンジンの速度が基準速度の場合に前記所定の閾値が基準閾値に設定され，前記印刷エンジンの速度が前記基準速度より遅い場合は前記所定の閾値が前記基準閾値よりも大きく変更設定することを特徴とする画像形成装置のコントローラ。  
【請求項６】
請求項５において，前記画像形成装置が省電力モードの場合，または印刷媒体種が低速での画像形成を必要とする種の場合，前記印刷エンジンの速度が前記基準速度より遅くなることを特徴とする画像形成装置のコントローラ。
【請求項７】
請求項１または２において，前記所定の印刷範囲とは，印刷エンジンの１回の動作で画像形成可能な１プレーン，前記１プレーンを複数に分割した１バンド，または１ページのいずれかであることを特徴とする画像形成装置のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，画像形成装置のコントローラ及び画像形成装置のドライバに関し，特に，印刷データから中間コードを生成し，中間コードをイメージデータに展開しながら印刷エンジンに転送して印刷時間を短縮する場合に，コントローラの速度や印刷エンジンの速度に応じて，中間コードを事前展開するようにした画像形成装置のコントローラ及び画像形成装置のドライバに関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置のコントローラは，ホストコンピュータから供給された印刷データを，一旦，中間コードに変換し保存する。そして，画像形成装置は，印刷エンジンの印刷単位である１プレーン分の中間コードが形成されるタイミングで印刷エンジンを起動し，印刷エンジンの動作に同期して中間コードをイメージデータに展開しながら当該イメージデータを印刷エンジンに供給する。このように印刷エンジンの動作に同期して中間コードをイメージデータに展開することで，イメージデータへの展開時間を印刷エンジンの動作時間にダブらせて，印刷時間を短縮することができる。
【０００３】
ここで，イメージデータとは画素毎の画像再生データであり，印刷エンジンの形態に応じて，画素にドットを形成するか否かの情報であったり，画素のドット面積を示す情報であったりする。また，中間コードは，画像形成装置に固有のまたは汎用的なコードであり，ホストコンピュータが生成する印刷データを解釈して得られる描画コマンドに基づいて形成されるコードであり，通常の画像であれば印刷エンジンの動作速度に対応できる程度にイメージデータへの展開を可能にするコードである。つまり，イメージデータへの展開を短時間で可能にする中間コードである。
【０００４】
しかしながら，複雑で大量の画像が含まれている場合は，たとえ中間コードであっても，中間コードからイメージデータへの展開が印刷エンジンの動作速度に追従することができず，いわゆるオーバーランエラーを起こすことがある。
【０００５】
このオーバーランエラーを回避する方法として，中間コードをイメージデータに変換する処理時間を事前に予想し，変換処理時間が所定の閾値を超える場合は中間コードを事前にイメージデータに展開しておき，印刷エンジンには展開済みのイメージデータを供給することが行われる。このように，印刷データから中間コードを生成する段階で，事前にイメージデータに展開（事前展開）することで，印刷エンジンが起動した後でオーバーランエラーが発生することを回避することができる。
【０００６】
印刷エンジンへのイメージデータの事前展開は，１プレーンを複数に分割したバンド単位で制御される。したがって，上記の事前展開の必要性を評価する場合，１バンド内の中間コードについて展開処理時間に対応する負荷評価値が求められ，その負荷評価値が所定の閾値を超えるか否かの判定が行われる。具体的には，中間コードに対応して展開処理時間に対応する負荷係数が設定され，各バンドに生成される中間コードの負荷係数の累計値が負荷評価値として利用される。
【０００７】
上記のように，印刷エンジンに同期して中間コードをイメージデータに展開しながら当該イメージデータを印刷エンジンに供給することは，主にモノクロプリンタで行われる制御である。
【０００８】
特許文献１には，各バンドの負荷評価値を求めておき，１プレーン内の最大の負荷評価値に対応する速度で印刷エンジンを動作させることで，負荷評価値が閾値近傍または超える場合でも，印刷エンジンの速度を落としてオーバーランエラーが発生しないようにすることが記載されている。
【０００９】
特許文献２には，あるバンドにおいて一旦オーバーランエラーが発生すると，負荷評価値の閾値を低く再設定し，その後の同様の中間コードを含むバンドが存在すると，計算した負荷評価値が閾値を上回ることになり，中間コードがイメージデータに事前展開されることが記載されている。それにより，同様の画像に対して再度オーバーランエラーが発生することが防止される。
【００１０】
さらに，特許文献３には，一旦オーバーランエラーが発生したら，その原因となったバンドの中間コードの負荷係数を，より負荷が大きい値に変更し，その後オーバーランエラーが発生しないようにすることが記載されている。
【特許文献１】特開平１１−１１５２７８号公報
【特許文献２】特開２００１−００１５７６号公報
【特許文献３】特開２００６−２０５４０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従来の画像形成装置では，事前展開を行う判断基準である負荷評価値の閾値の設定において，印刷エンジンの速度が一定であり，またイメージデータへの展開処理などの画像処理を行うコントローラの速度が一定であることを前提にしている。
【００１２】
しかしながら，近年において，印刷エンジンの速度が記録紙の種類に応じて動的に変化するものや，画像処理を行うコントローラの動作速度が省電力モードなどに応じて動的に変化するものが提案されてきている。このように，印刷エンジンの速度が変化した場合や，コントローラの動作速度が変化した場合に，負荷評価値の閾値を一定にしておくと，必要のない事前展開を行ってしまったり，必要があるのに事前展開せずにオーバーランエラーが発生したりすることが予想される。
【００１３】
そこで，本発明の目的は，印刷エンジンの速度に応じて，またはコントローラの動作速度に応じて，中間コードの事前展開の必要性の判断基準を最適化した画像形成装置のコントローラ及び画像形成装置のドライバを提供することにある。
【課題を解決するための手段】
【００１４】
上記の目的を達成するために，本発明の第１の側面によれば，画像形成装置のコントローラは，所定の印刷範囲内の中間コードについて，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超えない場合に当該中間コードを中間コードバッファに記憶し，超える場合に当該中間コードを前記イメージデータに事前展開して前記中間コードバッファに記憶し，さらに，印刷エンジンの動作に同期して，中間コードバッファ内の中間コードをイメージデータに展開しながら当該イメージデータを，または中間コードバッファ内に事前展開したイメージデータを，印刷エンジンに供給する。そして，コントローラの動作速度または印刷エンジンの速度に応じて，所定の閾値を変更設定する。具体的には，コントローラの動作速度が遅くなると所定の閾値を小さくし，印刷エンジンの速度が遅くなると所定の閾値を大きくする。これにより，中間コードの事前展開の必要性を判断する閾値を最適な値に設定して，必要な事前展開を行い不必要な事前展開は行わないようにして，印刷スループットを高めることができる。
【００１５】
上記の目的を達成するために，本発明の第２の側面によれば，所定の印刷範囲毎に印刷データから変換された中間コードを記憶し，その後，印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給する画像形成装置のコントローラにおいて，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超えない場合に当該中間コードを中間コードバッファに記憶し，超える場合に当該中間コードを前記イメージデータに事前展開して前記中間コードバッファに記憶し，
前記印刷エンジンの動作に同期して，前記中間コードバッファ内の中間コードをイメージデータに展開しながら当該イメージデータを，または前記中間コードバッファ内に事前展開した前記イメージデータを，前記印刷エンジンに供給し，
前記コントローラの動作速度または前記印刷エンジンの速度のいずれか一つまたは両方に応じて，前記所定の閾値を前記所定の印刷範囲毎に変更設定することを特徴とする。
【００１６】
上記の目的を達成するために，本発明の第３の側面によれば，所定の印刷範囲毎に印刷指令に対応する中間コードを画像形成装置に供給する画像形成装置のドライバコントローラであって，前記画像形成装置にて，印刷エンジンの動作に同期して前記供給した中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給させるドライバコントローラにおいて，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超えない場合に当該中間コードを中間コードバッファに記憶し，超える場合に当該中間コードを前記イメージデータに事前展開して前記中間コードバッファに記憶し，
前記中間コードバッファに記憶した中間コードまたは事前展開したイメージデータを前記画像形成装置に供給し，
前記画像形成装置において，前記印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを，または事前展開した前記イメージデータを，前記印刷エンジンに供給させ，
前記コントローラの動作速度または前記印刷エンジンの速度のいずれか一つまたは両方に応じて，前記所定の閾値を前記所定の印刷範囲毎に変更設定することを特徴とする。
【００１７】
上記の第２または第３の側面において，好ましい態様によれば，前記コントローラの動作速度が基準速度の場合に前記所定の閾値が基準閾値に設定され，前記コントローラの動作速度が前記基準速度より遅い場合は前記所定の閾値が前記基準閾値よりも小さく変更設定する。
【００１８】
そして，前記画像形成装置が省電力モードの場合に前記コントローラの動作速度が前記基準速度より遅くなる。
【００１９】
上記の第２または第３の側面において，好ましい態様によれば，前記印刷エンジンの速度が基準速度の場合に前記所定の閾値が基準閾値に設定され，前記印刷エンジンの速度が前記基準速度より遅い場合は前記所定の閾値が前記基準閾値よりも大きく変更設定する。
【００２０】
そして，前記画像形成装置が省電力モードの場合，または印刷媒体種が低速での画像形成を必要とする種の場合，前記印刷エンジンの速度が前記基準速度より遅くなる。
【００２１】
なお，前記所定の印刷範囲とは，印刷エンジンの１回の動作で画像形成可能な１プレーン，前記１プレーンを複数に分割した１バンド，または１ページのいずれかである。
【発明を実施するための最良の形態】
【００２２】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００２３】
図１は，本実施の形態における画像形成装置であるプリンタ装置の構成図である。プリンタ装置１４は，ホストコンピュータ１０のプリンタドライバから印刷データ１２を受信し，印刷データ１２から画素に展開したイメージデータ１８を生成するコントローラ１６と，コントローラ１６から供給されるイメージデータ１８に応じて画像を形成する印刷エンジン２０とを有する。なお，イメージデータ１８は，印刷エンジン２０の形態に応じて種々のデータを取りうる。例えば，レーザープリンタの場合は，各画素内に形成されるドット面積のデータまたは各画素にドットを形成するか否かを示すデータである。また，インクジェットプリンタの場合は，各画素にドットを形成するか否かを示すデータである。いずれの印刷エンジンであっても，コントローラ１６は，ホストコンピュータ１０から供給された印刷データ１２から画素に展開されたイメージデータ１８を生成し，印刷エンジン２０の印刷動作に同期してそのイメージデータ１８を供給する。
【００２４】
コントローラ１６は，ホストコンピュータ１０から印刷データ１２を受信するインターフェース３０と，コントロールプログラムが格納されたプログラムメモリ３４と，当該コントロールプログラムを実行して画像処理を制御すると共に，印刷データ１２から中間コードを生成し，更に，負荷評価値が閾値を超える場合に圧縮・伸張・展開ユニット３６に中間コードを画素に展開してイメージデータ（ビットマップデータ）を生成させるＣＰＵ３２とを有する。
【００２５】
また，コントローラ１６は，中間コードを画素毎のイメージデータに展開し，展開されたイメージデータを圧縮または伸張する圧縮・伸張・展開ユニット３６と，中間コードを格納する中間コードバッファ４０と，画像処理に利用されるワークメモリ３８と，中間コードに対応する負荷係数や，事前展開の必要性を評価するための負荷評価値の演算式や，事前展開の必要性を判定する閾値などを格納する不揮発性メモリ（図示せず）とを有する。圧縮・伸張・展開ユニット３６は，例えば，専用的に設計されたＡＳＩＣにより構成可能である。更に，コントローラ１６は，中間コードを展開したイメージデータ１８を一時的に記憶し，印刷エンジンに出力する展開バッファ４４を有する。
【００２６】
コントローラ１６の構成要素３０乃至４４は，全て内部バス４６を介して接続される。但し，コントローラ１６の内部構成は，このような構成に限定されるものではなく，必要に応じて，プログラムメモリ３４内の機能を専用のハードウエアユニットで構成してもよい。
【００２７】
コントローラ１６の動作速度は，ＣＰＵ３２と圧縮・伸張・展開ユニット３６に供給されるシステムクロックＣＬＫの周波数に依存する。システムクロックＣＬＫは，クロック生成回路４２により生成され，ＣＰＵ３２と圧縮・伸張・展開ユニット３６とに供給される。そして，システムクロックのスピードは，ＣＰＵ３２により適宜制御される。例えば，省電力モードでは通常動作時に比較してシステムクロックの周波数が低く変更設定され，それに応じてコントローラ１６の動作速度も低下する。
【００２８】
さらに，印刷エンジン２０は，露光，現像，転写，定着を主に行うエンジンユニット２４と，エンジンユニット２４を制御するメカ制御部２２とを有する。メカ制御部２２は，コントローラ１６から転送されるイメージデータ１８を受信し，露光に必要な駆動信号２８をエンジンユニット２４に供給し，さらに，エンジンユニット２４に定着ユニットの温度設定などを含む制御パラメータ２６をエンジンユニット２４に与える。
【００２９】
この制御パラメータ２６には，コントローラ３２のＣＰＵ３２からの制御パラメータＣＮｐ，例えば印刷媒体の種類（一般紙，ＯＨＰ，厚紙など）や，省電力モード（定着ユニットの低電圧化モード），などが含まれる。例えば，印刷媒体の種類が厚紙やＯＨＰの場合は，一般紙に比較して定着時間が長くなり，エンジンユニットの動作速度が遅く設定される。さらに，省電力モードでは，定着ユニットの電圧が低くなりそれに伴い定着温度が低くなり，同様にエンジンユニットの動作速度が遅く設定される。
【００３０】
コントローラ１６内のＣＰＵ３２は，受信した印刷データ１２を解析し，１プレーンを分割したバンド毎の中間コードに変換する。
【００３１】
印刷データ１２は，例えば，写真などのイメージと，文字と，グラフィックスとを印刷するためのデータであり，イメージの場合はその大きさと画素に展開されたイメージデータの形態であり，必要に応じて圧縮されたデータからなり，文字の場合は大きさとフォントと色などのデータからなり，グラフィックスの場合は形状（矩形や円形，三角など）と大きさと色などのデータからなる。いずれの場合も，印刷用紙のどの位置かのデータを有する。印刷データ１２は，所定の言語で表現された印刷コマンドからなり，概略して上記３種類の画像オブジェクトに対応するデータからなる。この印刷データから生成される描画コマンドは，例えば，印刷場所と大きさ，そして描画すべき画像の種類およびイメージの場合は展開されたイメージデータからなる。
【００３２】
また，中間コードは，画素に展開されたイメージデータを生成するためのコードであり，印刷エンジン２０に同期してコントローラ１６が中間コードバッファ４０から読み出しイメージデータに展開して印刷エンジンに供給できる程度の下位言語で表現されたコードである。具体例は後述する。
【００３３】
そして，ＣＰＵ３２は，バンド内の中間コードの負荷係数に基づいてバンド内の中間コードを展開した時に要する時間を評価する負荷評価値を演算で求める。概略的には，負荷係数の累計値が負荷評価値である。この負荷評価値が所定の閾値を超える場合は，印刷エンジンに同期してイメージデータへの展開が間に合わずにオーバーランを生じる可能性が高いので，バンド内の中間コードをイメージデータに事前展開する。
【００３４】
この場合，事前展開すべきか否かの基準となる閾値は，コントローラ１６が通常の動作速度を有し，印刷エンジン２０が通常の速度を有する場合に対応して設定された基準閾値である。そして，コントローラ１６のＣＰＵ３２は，コントローラの動作速度が遅い場合，つまりシステムクロックの周波数が遅い場合，それに応じて基準閾値より低い閾値に変更設定する。中間コードを展開するために要する時間が長くなるからである。同様に，コントローラ１６のＣＰＵ３２は，印刷エンジン２０の速度が遅い場合，それに応じて基準閾値より高い閾値に変更設定する。中間コードを展開するために利用できる時間が長くなるからである。変更設定の演算例については，後で詳述する。
【００３５】
図２は，印刷画像例を示す図である。また，図３は，図２の印刷画像に対応する中間コードバッファ内の中間コードと負荷評価値及び閾値の例を示す図である。図２には，印刷エンジンが１回の動作で画像形成可能な印刷範囲に対応する１つのプレーンＰＬＮ内に形成される画像例が示されている。
【００３６】
このプレーンＰＬＮは複数のバンド領域ＢＮＤ１〜ＢＮＤ３に分割されている。このプレーンＰＬＮは，例えば，Ａ４のレーザープリンタであればＡ４サイズに，Ａ３のレーザープリンタであればＡ３サイズに対応する。したがって，印刷用紙のサイズによっては１プレーンが複数ページに対応することもある。また，印刷エンジンが１回の動作で１枚の印刷用紙に画像を形成する場合は，この１プレーンＰＬＮは，その１枚の印刷用紙に対応する。
【００３７】
図２の画像例は，写真からなるイメージ５０と，所定の濃度の矩形ＲＣＴ０と，文字「ＡＢＣＤＥＦ」と，楕円形５２と，三角形５４と，所定の濃度を有し内部に文字「Ａ」が重ね書きされている長方形５６とを有する。
【００３８】
かかる印刷画像の場合，印刷データ１２は，イメージ５０についてはその属性と位置と圧縮方式などに加えて画素に展開されたイメージデータを有し，矩形ＲＣＴ０，楕円５２，三角形５４，矩形５６などについてはその属性と位置とテクスチャデータや濃度データを有し，文字「ＡＢＣＤＥＦ」や「Ａ」についてはその属性とキャラクタの種類（フォント）と位置及び濃度のデータを有する。
【００３９】
これらの印刷データ１２は，例えば，ＰＤＬやポストスクリプトなどの印刷ジョブ記述言語で記述されている。また，印刷データ１２はプレーン毎に区分して構成される。
【００４０】
そして，この印刷データ１２から画素に展開されたイメージデータを生成するに適した中間コードが生成される。更に，画素展開を容易にするために，中間コードに変換される段階で，文字は画素に展開したイメージデータにされ，楕円５２は単位幅を有する垂直矩形Ｖ０〜Ｖ４に分解され，三角形５４は単位高さを有する水平矩形Ｌ０〜Ｌ３に分解される。また，中間コードは，印刷プレーンＰＬＮを複数に分割したバンド領域ＢＮＤ０〜ＢＮＤ３毎に生成され，それに伴い，イメージ５０はバンドＢＮＤ０に属するイメージＩＭＧ０とバンドＢＮＤ１に属するイメージＩＭＧ２とに分解され，矩形５６はバンドＢＮＤ２に属する矩形ＲＣＴ１とバンドＢＮＤ３に属する矩形ＲＣＴ２とに分解される。
【００４１】
つまり，図２に示されるとおり，バンドＢＮＤ０には，イメージＩＭＧ０と矩形ＲＣＴ０と文字を画素に展開したイメージＩＭＧ１とに対応する中間コードが生成される。バンドＢＮＤ１には，イメージＩＭＧ２と複数の垂直矩形Ｖ０〜Ｖ４に対応する中間コードが生成される。また，バンドＢＮＤ２には，複数の水平矩形Ｌ０〜Ｌ３と矩形ＲＣＴ１に対応する中間コードが生成され，バンドＢＮＤ３には矩形ＲＣＴ２とイメージＩＭＧ３に対応する中間コードが生成される。
【００４２】
そして，印刷データに含まれる画像オブジェクトは１プレーン単位で記述され，必ずしもバンドの順になっていない。したがって，１プレーン分の印刷データを全て中間コードに変換した段階で，全てのバンドの中間コードがそろうことになる。
【００４３】
図３には，図２に示した分解された画像に対応する中間コードの例が示されている。バンドＢＮＤ０には，イメージＩＭＧ０と，矩形ＲＣＴ０と，イメージＩＭＧ１に対応する中間コード６０，６１，６２が含まれる。具体的には，
（１）イメージＩＭＧ０の中間コード６０は，その属性ＩＭＧ０と，左上の点（図３中の黒点）のバンドＢＮＤ０内のローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）と，イメージデータの圧縮形式ＣＯＭＰと，具体的なイメージデータ（00110011…）とを有する。
（２）矩形ＲＣＴ０の中間コード６０は，その属性ＲＣＴ０と，矩形の模様を示すスクリーンデータＰと，左上点のバンドＢＮＤ０内のローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
（３）イメージＩＭＧ１の中間コード６２は，その属性ＩＭＧ１と，ローカル座標（Ｘ，Ｙ）と，幅及び高さ（Ｗ，Ｈ）と，文字を画素に展開したイメージデータ（0010101…）
とを有する。
【００４４】
同様に，バンドＢＮＤ１には，イメージＩＭＧ２と複数の垂直矩形Ｖ０〜Ｖ４に対応する中間コード７０〜７５が含まれる。具体的には，
（１）垂直矩形Ｖ０〜Ｖ４の中間コード７０〜７４は，その属性Ｖ０〜Ｖ４と，模様を示すスクリーンデータＰと，それぞれの左上点のローカル座標（Ｘ，Ｙ）と，高さＨとを有する。
（２）イメージＩＭＧ２の中間コード７５は，その属性ＩＭＧ２と，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）と，イメージデータの圧縮形式ＣＯＭＰと，具体的なイメージデータ（00110011…）とを有する。
【００４５】
同様に，バンドＢＮＤ２には，水平矩形Ｌ０〜Ｌ３の中間コード８０〜８３と，矩形ＲＣＴ１の中間コード８４とを有する。具体的には，
（１）水平矩形Ｌ０〜Ｌ４の中間コード８０〜８３は，その属性Ｌ０〜Ｌ４と，モノクロデータＢと，ローカル座標（Ｘ，Ｙ）と，幅Ｗとを有する。
（２）矩形ＲＣＴ１の中間コード８４は，その属性ＲＣＴ１と，矩形の模様を示すスクリーンデータＰと，色データＣＯＬと，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
【００４６】
そして，バンドＢＮＤ３には，矩形ＲＣＴ２とイメージＩＭＧ３の中間コード９０，９１が含まれる。具体的には，
（１）矩形ＲＣＴ２の中間コード９０は，その属性ＲＣＴ２と，矩形の模様を示すスクリーンデータＰと，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
（２）イメージＩＭＧ３は，その属性データＩＭＧ３と，下地との重なりの関係（ＡＮＤかＯＲかＥＯＲかなど）のデータＤと，スクリーンデータＰと，ローカル座標（Ｘ，Ｙ）と，幅及び高さ（Ｗ，Ｈ）とを有する。
【００４７】
図３に示されるようにイメージデータ以外は，細分化された簡単な図形に対応する中間コードにされる。それにより，その後印刷エンジンの動作速度に追従して中間コードから画素に展開したイメージデータを高速に生成することが可能になる。
【００４８】
上記の中間コードにはあらかじめ展開時の時間に換算される負荷係数が設定されている。そして，ＣＰＵ３２は中間コードが生成されるたびにバンド毎に負荷係数の累計値に対応する負荷評価値を計算し，バンドに対応して負荷評価値を記録する。そして，各バンドの負荷評価値ＬＦ０〜ＬＦ３が，所定の閾値Ｖｔｈ１を超えるか否かが判定され，超える場合には中間コードがイメージデータに事前展開される。
【００４９】
図４は，本実施の形態における画像形成装置のコントローラの動作を示すフローチャート図である。図４のコントローラの動作は，印刷エンジンが１回の連続動作で印刷可能な１プレーン分の印刷データを中間コードに変換する準備動作と，中間コードをイメージデータに展開しながら印刷エンジンに転送する動作に対応する。したがって，印刷データが複数プレーンの画像の形成を要求している場合は，図４のコントローラの動作は，各プレーン毎に行われる。
【００５０】
さて，コントローラ１６のＣＰＵ３２は，コントロールプログラムを実行して，以下の制御を行う。最初に，ホストコンピュータ１０から供給された印刷データ１２を受信し，印刷媒体の種別を判別し印刷エンジンの速度を判別する。また，省電力モードの有無によりコントローラ１６の動作速度を判別する。さらに，省電力モードの有無により印刷エンジンの速度も判別する。そして，それらの速度に対応して各バンドの負荷評価値の閾値を演算し設定する（Ｓ１０）。この閾値は，印刷単位である１印刷プレーン毎に設定される。
【００５１】
図５は，本実施の形態における負荷評価値の閾値の決定手順を示すフローチャート図であり，図６は，その閾値の例を示す図である。ＣＰＵ３２は，印刷エンジンの速度に応じてその印刷プレーンにおける各バンドの負荷評価値の閾値を決定する（Ｓ３０）。例えば，図６において，（１）のように，エンジン速度Ｖｅとコントローラ速度Ｖconとが共に標準値の１の場合に，基準閾値Ｖｔｈ１に設定されていたとする。そして，（２）のように，印刷媒体の種別が厚紙やＯＨＰシートである場合や省電力モードである場合などでエンジン速度Ｖｅが遅い０．５になると，中間コードの展開に利用できる時間が長くなるので，閾値は基準閾値Ｖｔｈ１の２倍の２Ｖｔｈ１に変更設定される。
【００５２】
さらに，ＣＰＵ３２は，コントローラの速度に応じてバンドの負荷評価値の閾値を決定する（Ｓ３２）。例えば，図６において，（３）のように，省電力モードの場合などにシステムクロックが低速度（低周波数）にされてコントローラ速度Ｖconが遅い０．５になると，中間コードの展開能力が半減するので，閾値は基準閾値Ｖｔｈ１の半分の０．５Ｖｔｈ１に変更設定される。
【００５３】
そして，（４）のように，エンジン速度Ｖｅ＝０．６，コントローラ速度Ｖcon＝０．８の場合は，閾値は（０．８／０．６）×Ｖｔｈ１＝１．３Ｖｔｈ１に変更設定される。
【００５４】
このように，本実施の形態では，各バンドの負荷評価値の閾値を，エンジン速度とコントローラ速度のいずれか一方または両方に基づいて変更設定する。これにより，事前展開の判断を適切な閾値で行うことができる。
【００５５】
図４に戻り，次に，コントローラ１６のＣＰＵ３２は，受信した印刷データ１２を解釈し，描画コマンドを生成する（Ｓ１２）。そして，ＣＰＵ３２は，描画コマンドを所定の印刷領域毎，つまりバンド毎の中間コードに変換する（Ｓ１４）。中間コードには，前述したとおり画素に展開されたイメージデータも含まれる。かかるイメージデータは，ＲＡＭ内のワークメモリ３８に格納され，中間コードバッファ４０にはそのワークメモリ３８内の格納されたアドレスデータが，展開済みのイメージデータのポインタ情報として格納される。
【００５６】
次に，ＣＰＵ３２は，各バンドについて，保存済みの中間コードと新たに変換された中間コードに対して展開に要する負荷評価値を演算により求める（Ｓ１６）。前述のとおり，負荷評価値とは中間コードを展開するのに必要な演算時間に対応するものであり，印刷エンジンが起動した時に，コントローラ１６が中間コードからイメージデータに展開し，そのイメージデータを印刷エンジンの動作速度に対応して適切なタイミングで印刷エンジン２０に供給できるか否かを評価するための指標である。つまり，この負荷評価値が所定の閾値を超えるか否かを事前にチェックすることで，保存される中間コードから印刷エンジンに追従してイメージデータを供給可能か否かをバンド毎に評価することができる。
【００５７】
ＣＰＵ３２は，負荷評価値と設定された閾値とを比較し（Ｓ１８），負荷評価値が閾値を超えない場合は（Ｓ１８のＮＯ），生成した中間コードを中間コードバッファ４０の対応するバンドの領域に保存する（Ｓ２２）。逆に，負荷評価値が所定の閾値を超える場合は，オーバーランエラーが発生する蓋然性が高いと見なして，そのバンドの中間コードを画素に事前展開してイメージデータの形態で中間コードバッファ４０の対応するバンドの領域に保存する（Ｓ２０）。事前展開されたイメージデータはユニット３６により圧縮される。
【００５８】
上記の処理Ｓ１６〜Ｓ２２が，描画コマンドから変換された全ての中間コードに対して繰り返される（Ｓ２６）。そして，１プレーン分の印刷データについての処理が完了すると（Ｓ２６のＹＥＳ），コントローラは，中間コードバッファ４０に保存されている中間コードを圧縮・伸張・展開ユニット３６でイメージデータに展開し，展開バッファ４４に保存する。また，コントローラは，中間コードバッファ４０に事前展開されたイメージデータが保存されている場合はそれをユニット３６で伸張して，展開バッファ４４に保存する。展開バッファ４４は，数バンド分の容量を有し，ここに保存されたイメージデータは，印刷エンジン２０に同期して転送される（Ｓ２８）。
【００５９】
上記のとおり，本実施の形態では，印刷データを受信するとその時のコントローラの動作速度や印刷エンジンの速度に対応して，中間コードを事前展開すべきか否かの基準である負荷評価値の閾値を最適な値に変更設定する。よって，エンジン速度が遅く展開に利用可能な時間が長いにもかかわらず不必要に事前展開することが回避される。また，コントローラ速度が遅く展開能力が低下しているにもかかわらず必要な事前展開をせずにオーバーランエラーに至ることが回避される。
【００６０】
図７は，本実施の形態における別のプリンタシステムの構成図である。このプリンタシステムでは，ホストコンピュータ１０にインストールされているプリンタドライバ１１が，印刷データではなく，プリンタ装置１４に対応する中間コードを生成して，プリンタ装置１４に供給する。そして，プリンタ装置のコントローラ１６が，１プレーン分の中間コードがそろった時点で，中間コードをイメージデータに展開しながら印刷エンジン２０に供給する。
【００６１】
したがって，プリンタドライバ１１側で中間コードを生成する時に，事前展開が必要か否かを判断し，必要な場合はイメージデータに事前展開する。よって，プリンタドライバ１１が，コントローラ速度と印刷エンジン速度に基づいて，事前展開の判断基準である負荷評価値の閾値を変更設定する。したがって，プリンタ装置１４の状態をプリンタドライバ１１が常に把握している。なお，プリンタドライバ１１は，プリンタ装置を制御する機能も有するドライバコントローラである。
【００６２】
図８は，本実施の形態におけるプリンタドライバの動作を示すフローチャート図である。このフローチャートの各工程において，図４と同じ工程には同じ引用番号を与えている。図４と異なるのは，工程Ｓ１３とＳ３０であり，それ以外は図４と同じである。
【００６３】
まず，プリンタドライバは，各バンドの負荷評価値の閾値をコントローラ速度と印刷エンジン速度とに依存して決定し，必要な場合に変更設定する（Ｓ１０）。そして，オペレーションシステムからの描画指令に応答して，バンド毎の中間コードを作成する（Ｓ１３）。そして，中間コードが生成されたバンドにおいて，負荷係数に応じた負荷評価値を求める（Ｓ１６）。そして，負荷評価値を設定した閾値と比較し（Ｓ１８），閾値を超えなければホストコンピュータ内の中間コードバッファに中間コードを保存し（Ｓ２２），超える場合はイメージデータに事前展開し，それを中間コードバッファに保存する（Ｓ２０）。描画指令に対応する全ての中間コードについて処理が終了し（Ｓ２４），１プレー分の描画指令が終了すると（Ｓ２６），プリンタドライバは，生成した中間コードをプリンタ装置に転送する（Ｓ３０）。このとき，中間コードがイメージデータに事前展開されていたら，そのイメージデータをプリンタ装置に転送する。
【００６４】
プリンタ装置のコントローラ１６は，受信した中間コードを，印刷エンジンに同期してイメージデータに展開しながら，展開したイメージデータを印刷エンジンに転送する。
【００６５】
以上説明したとおり，本実施の形態では，中間コードをイメージデータに事前展開すべきか否かを判定する閾値を，コントローラ速度や印刷エンジン速度に応じて最適値に設定するので，事前展開を適切に行うことができる。よって，処理能力の低い廉価なコントローラであっても，オーバーランエラーをおこすことなく最大の印刷スループットを発揮させることができる。
【００６６】
上記の実施の形態で，負荷評価値と閾値の比較をバンド毎に行ったが，これは１印刷プレーン毎に行っても良い。あるいは，１印刷プレーンに複数のページが含まれる場合には各ページ毎に行っても良い。
【図面の簡単な説明】
【００６７】
【図１】本実施の形態における画像形成装置であるプリンタ装置の構成図である。
【図２】印刷画像例を示す図である。
【図３】図２の印刷画像に対応する中間コードバッファ内の中間コードと負荷評価値及び閾値の例を示す図である。
【図４】本実施の形態における画像形成装置のコントローラの動作を示すフローチャート図である。
【図５】本実施の形態における負荷評価値の閾値の決定手順を示すフローチャート図である。
【図６】本実施の形態における負荷評価値の閾値の例を示す図である。
【図７】本実施の形態における別のプリンタシステムの構成図である。
【図８】本実施の形態におけるプリンタドライバの動作を示すフローチャート図である。
【符号の説明】
【００６８】
１０：ホストコンピュータ          
１１：プリンタドライバ（ドライバコントローラ）
１２：印刷データ                        １４：プリンタ装置
１６：コントローラ                      ２０：印刷エンジン
【図１】
2008049664.tif 000003
【図２】
2008049664.tif 000004
【図３】
2008049664.tif 000005
【図４】
2008049664.tif 000006
【図５】
2008049664.tif 000007
【図６】
2008049664.tif 000008
【図７】
2008049664.tif 000009
【図８】
2008049664.tif 000010