(57)【要約】      （修正有）【課題】オーバーランエラー発生後に再度オーバーランエラーが発生する確率を下げることができる画像形成装置を提供する。【解決手段】コントローラ１６は，印刷データから変換された中間コードを記憶し，印刷エンジンの動作に同期して中間コードをイメージデータに展開しながら印刷エンジンに供給する。そして，コントローラ１６は，所定の印刷範囲内の中間コードを，中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，負荷評価値が所定の閾値を超える場合に中間コードをイメージデータに事前展開して記憶しておく。そして，印刷エンジンがオーバーランエラーを発生した場合は，オーバーランエラーが発生した印刷範囲に含まれる中間コードの少なくとも一つの中間コードの負荷係数を，増加するように設定変更する。これにより，以降，同様の画像に対しては適切に事前展開が行われ，オーバーランエラーの発生が抑制される。【選択図】図１
2006205403.tif 000002
【特許請求の範囲】
【請求項１】
所定の印刷範囲毎に印刷データから変換された中間コードを記憶し，その後，印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給する画像形成装置のコントローラにおいて，
当該コントローラは，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超える場合に当該中間コードを前記イメージデータに事前展開して記憶し，
前記印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給するときに，前記印刷エンジンがオーバーランエラーを発生した場合は，当該オーバーランエラーが発生した印刷範囲に含まれる中間コードの少なくとも一つの中間コードの負荷係数を，増加するように設定変更することを特徴とする画像形成装置のコントローラ。
【請求項２】
所定の印刷範囲毎に印刷データから変換された中間コードを画像形成装置に供給する画像形成装置のコントローラであって，前記画像形成装置にて，印刷エンジンの動作に同期して前記供給した中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給させるコントローラにおいて，
当該コントローラは，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超える場合に当該中間コードを前記イメージデータに事前展開して，当該事前展開したイメージデータを前記中間コードに代えて前記画像形成装置に供給し，
前記画像形成装置において，前記印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給するときに，前記印刷エンジンがオーバーランエラーを発生した場合は，当該オーバーランエラーが発生した印刷範囲に含まれる中間コードの少なくとも一つの中間コードの負荷係数を，増加するように設定変更することを特徴とする画像形成装置のコントローラ。
【請求項３】
請求項１または２において，前記所定の印刷範囲とは，印刷エンジンの１回の動作で画像形成可能な１プレーン，前記１プレーンを複数に分割した１バンド，または１ページのいずれかであることを特徴とする画像形成装置のコントローラ。
【請求項４】
請求項１または２において，
前記コントローラは，前記中間コードの負荷係数と当該中間コードにより展開されるイメージデータの面積との乗算値に基づいて前記負荷評価値を求めることを特徴とする画像形成装置のコントローラ。
【請求項５】
請求項１または２において，
前記コントローラは，前記オーバーランエラーが発生した印刷範囲に含まれる中間コードの負荷係数を増加するように設定変更することを特徴とする画像形成装置のコントローラ。
【請求項６】
請求項１または２において，
前記コントローラは，前記オーバーランエラーが発生した印刷範囲に含まれる中間コードのうち，前記印刷範囲の負荷評価値のうち，最も負荷評価値を大きくする第１の中間コードの負荷係数を増加するように設定変更することを特徴とする画像形成装置のコントローラ。
【請求項７】
請求項１または２において，
前記コントローラは，前記オーバーランエラーが発生した印刷範囲に含まれる中間コードのうち，最も描画面積が大きい第１の中間コードの負荷係数を増加するように設定変更することを特徴とする画像形成装置。
【請求項８】
請求項５乃至７のいずれかにおいて，
前記コントローラは，前記オーバーランエラーが発生した印刷範囲に含まれる中間コードから求められる負荷評価値が前記閾値を超えるように，設定変更する中間コードの負荷係数を増加することを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，印刷エンジンのオーバーランエラーを抑制した画像形成装置のコントローラに関し，特に，オーバーランエラーの評価計算を最適化することができる画像形成装置のコントローラに関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置のコントローラは，ホストコンピュータから供給された印刷データを，一旦，中間コードに変換し，保存する。そして，画像形成装置は，１プレーン分の中間コードが形成されるタイミングで印刷エンジンを起動し，印刷エンジンの動作に同期して中間コードをイメージデータに展開しながら当該イメージデータを印刷エンジンに供給する。このように印刷エンジンの動作に同期して中間コードをイメージデータに展開することで，イメージデータへの展開時間を印刷エンジンの動作時間にダブらせて印刷スループットから隠すことができ，印刷スループットを向上させることができる。
【０００３】
ここで，イメージデータとは画素毎の画像再生データであり，印刷エンジンの形態に応じて，画素にドットを形成するか否かの情報であったり，画素のドット面積を示す情報であったりする。また，中間コードは，画像形成装置に固有のまたは汎用的なコードであり，ホストコンピュータが生成する印刷データを解釈して得られる描画コマンドに基づいて形成されるコードであり，通常の画像であれば印刷エンジンの動作速度に対応できる程度にイメージデータへの展開を可能にするコードである。つまり，イメージデータへの展開を短時間で可能にする中間コードである。
【０００４】
しかしながら，複雑で大量の画像が含まれている場合は，たとえ中間コードであっても，中間コードからイメージデータへの展開が印刷エンジンの動作速度に追従することができず，いわゆるオーバーランエラーを起こすことがある。このオーバーランエラーを回避する方法として，中間コードをイメージデータに変換する処理時間を事前に予想し，変換処理時間が所定の閾値を超える場合は中間コードを事前にイメージデータに展開しておき，印刷エンジンには展開済みのイメージデータを供給することが行われる。このように，印刷データから中間コードを生成する段階で，事前にイメージデータに展開することで，印刷エンジンが起動した後でオーバーランエラーが発生することを回避することができる。
【０００５】
印刷エンジンへのイメージデータの展開は，１プレーンを複数に分割したバンド単位で制御される。したがって，上記の事前展開の必要性を評価する場合，１バンド内の中間コードについて展開処理時間に対応する負荷評価値が求められ，その負荷評価値が所定の閾値を超えるか否かの判定が行われる。但し，中間コードの種類は多数に及ぶため，上記負荷評価値の演算を高精度に行おうとすると評価値演算自体に多くの工数を必要とし，中間コードまたはイメージデータを準備する準備工程のオーバーヘッドを高くしてしまう。そのため，負荷評価値を求めるためには簡易的な演算しかできず，高い精度で負荷評価値を求めることはできない。そこで，事前展開必要性の判断を行う閾値をより控えめに（低めに）設定し，オーバーランエラーの発生確率を低くすることが行われる。
【０００６】
以上のような場合であっても，あるバンドにおいてオーバーランエラーが発生する確率はゼロではなく，きわめてまれではあるがかかるオーバーランエラーが発生する場合がある。そのような場合，一旦印刷用紙を排紙し，オーバーランエラーが発生したバンドの中間コードをイメージデータに事前展開し，再度印刷処理を行うことが行われる。しかし，オーバーランエラーが発生する画像は多数のバンドさらに多数のプレーンに及ぶことがある。そこで，オーバーランエラーが発生すると，そのバンドの中間コードから演算した負荷評価値を，新たな閾値に設定し，その後のバンドに対してオーバーランエラーが発生することを未然に防止することが提案されている。例えば，以下の特許文献１に示される通りである。
【特許文献１】特開２００１−１５７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記の方法によれば，一旦オーバーランエラーが発生すると，負荷評価値の閾値を低く再設定するので，その後の同様の中間コードを含むバンドが存在すると，計算した負荷評価値が閾値を上回ることになり，中間コードがイメージデータに事前展開される。それにより，同様の画像に対して再度オーバーランエラーが発生することが防止される。
【０００８】
しかしながら，特許文献１のように，事前展開の必要性を判断する閾値を低く設定する方法では，必ずしも必要なバンドに対してのみ事前展開を行うという判断ができなくなる場合がある。つまり，多くの中間コードの組合せがあるにもかかわらず負荷評価値の演算式とそれに対応する負荷係数が簡便にできているため，事前展開を判断する閾値を一律に下げる方法では，事前展開しなくてもオーバーランエラーが発生しないような中間コードの組合せに対しても，負荷評価値がその閾値を超える場合が発生し，過剰反応になるおそれがある。したがって，オーバーランエラーが発生したバンドと同様の中間コードの組合せを持つバンドには適切に事前展開が行われるものの，それとは異なる中間コードの組合せを有するバンドに対しても負荷評価値が新しい閾値を上回ることになると，不必要な事前展開が実行されることになり，印刷全体のスループットを低下させるおそれがある。
【０００９】
そこで，本発明の目的は，不必要なイメージデータへの事前展開を必要とせずに，オーバーランエラー発生後に再度オーバーランエラーが発生する確率を下げることができる画像形成装置のコントローラを提供することにある。
【課題を解決するための手段】
【００１０】
そこで，上記の目的を達成するために，本発明の第１の側面によれば，所定の印刷範囲毎に印刷データから変換された中間コードを記憶し，その後，印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給する画像形成装置のコントローラにおいて，
当該コントローラは，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超える場合に当該中間コードを前記イメージデータに事前展開して記憶し，
前記印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給するときに，前記印刷エンジンがオーバーランエラーを発生した場合は，当該オーバーランエラーが発生した印刷範囲に含まれる中間コードの少なくとも一つの中間コードの負荷係数を，増加するように設定変更する。
【００１１】
上記の第１の側面によれば，オーバーランエラーが発生した時に，そのエラーが発生した印刷範囲に含まれる中間コードの少なくとも一つの中間コードの負荷係数を増加するように設定を変更するので，それ以降，同様の中間コードを有する印刷範囲に対しては適切に事前展開が行われ，異なる中間コードを有する印刷範囲に対しては不必要に事前展開が行われることはない。その結果，画像形成全体のスループットを低下させることなく，オーバーランエラーの発生を回避することができる。
【００１２】
さらに，上記の目的を達成するために，本発明の第２の側面によれば，所定の印刷範囲毎に印刷データから変換された中間コードを画像形成装置に供給する画像形成装置のコントローラであって，前記画像形成装置にて，印刷エンジンの動作に同期して前記供給した中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給させるコントローラにおいて，
当該コントローラは，
前記所定の印刷範囲内の前記中間コードを，当該中間コードに対応して設定されている負荷係数に応じて負荷評価値を求め，当該負荷評価値が所定の閾値を超える場合に当該中間コードを前記イメージデータに事前展開して，当該事前展開したイメージデータを前記中間コードに代えて前記画像形成装置に供給し，
前記画像形成装置において，前記印刷エンジンの動作に同期して前記中間コードをイメージデータに展開しながら当該イメージデータを前記印刷エンジンに供給するときに，前記印刷エンジンがオーバーランエラーを発生した場合は，当該オーバーランエラーが発生した印刷範囲に含まれる中間コードの少なくとも一つの中間コードの負荷係数を，増加するように設定変更する。
【００１３】
上記の第２の側面によれば，ホストコンピュータ側に設けられる画像形成装置のコントローラが，オーバーランエラーが発生した時に，そのエラーが発生した印刷範囲に含まれる中間コードの少なくとも一つの中間コードの負荷係数を増加するように設定を変更する。したがって，それ以降，同様の中間コードを有する印刷範囲に対しては適切に事前展開が行われ，異なる中間コードを有する印刷範囲に対しては不必要に事前展開が行われることはない。その結果，画像形成全体のスループットを低下させることなく，オーバーランエラーの発生を回避することができる。
【発明を実施するための最良の形態】
【００１４】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１５】
図１は，本実施の形態における画像形成装置であるプリンタ装置の構成図である。プリンタ装置１４は，ホストコンピュータ１０から印刷データ１２を受信し，印刷データ１２から画素に展開したイメージデータ１８を生成するコントローラ１６と，コントローラ１６から供給されるイメージデータ１８に応じて画像を形成する印刷エンジン２０とを有する。なお，イメージデータ１８は，印刷エンジン２０の形態に応じて種々のデータを取りうる。例えば，レーザープリンタの場合は，各画素内に形成されるドット面積のデータである。また，インクジェットプリンタの場合は，各画素にドットを形成するか否かを示すデータである。いずれの印刷エンジンであっても，コントローラ１６は，ホストコンピュータ１０から供給された印刷データ１２から画素に展開されたイメージデータ１８を生成し，印刷エンジン２０の印刷動作に同期してそのイメージデータ１８を供給する。
【００１６】
コントローラ１６は，ホストコンピュータ１０から印刷データ１２を受信するインターフェース３０と，コントロールプログラムが格納されたプログラムメモリ３４と，当該コントロールプログラムを実行して，印刷データ１２から中間コードを生成し，更に，中間コードを画素に展開されたイメージデータを生成するＣＰＵ３２とを有する。また，コントローラ１６は，イメージデータを展開する展開ユニット３６と，中間コードを格納する中間コードバッファ４０と，事前に展開したイメージデータなどを格納するワークメモリ３８と，中間コードに対応する負荷係数や，事前展開の必要性を評価するための負荷評価値の演算式や，事前展開の必要性を判定する閾値などを格納する不揮発性メモリ４２とを有する。更に，コントローラ１６は，イメージデータ１８を印刷エンジン２０に出力する出力バッファ４４を有する。コントローラ１６の構成要素３０乃至４４は，全て内部バス４６を介して接続されている。但し，コントローラ１６の内部構成は，このような構成に限定されるものではなく，必要に応じて，プログラムメモリ３４内の機能を専用のハードウエアユニットで構成してもよい。
【００１７】
図２は，本実施の形態における画像形成装置のコントローラの動作を示すフローチャート図である。図２のコントローラの動作は，印刷エンジンが１回の連続動作で印刷可能な１プレーン分の印刷データを中間コードに変換するなどの準備動作に対応する。したがって，印刷データが複数プレーンの画像の形成を要求している場合は，図２のコントローラの動作は，各プレーン毎に行われる。
【００１８】
さて，コントローラ１６のＣＰＵ３２は，コントロールプログラムを実行して，以下の制御を行う。まず，ホストコンピュータ１０から供給された印刷データ１２を受信し，その印刷データ１２を解釈し，描画コマンドを生成する（Ｓ１０）。印刷データ１２は，例えば，写真などのイメージと，文字と，グラフィックスとを印刷するためのデータであり，イメージの場合はその大きさと画素に展開されたイメージデータの形態であり，必要に応じて圧縮されたデータからなり，文字の場合は大きさとフォントと色などのデータからなり，グラフィックスの場合は形状（矩形や円形，三角など）と大きさと色などのデータからなる。いずれの場合も，印刷用紙のどの位置かのデータを有する。印刷データ１２は，所定の言語で表現された印刷コマンドからなり，概略して上記３種類の画像に対応するデータからなる。この印刷データから生成される描画コマンドは，例えば，印刷場所と大きさ，そして描画すべき画像の種類およびイメージの場合は展開されたイメージデータからなる。
【００１９】
コントローラ１６のＣＰＵ３２は，描画コマンドを所定の印刷領域毎の中間コードに変換し，中間コードバッファ４０に記録する（Ｓ１２）。この中間コードは，画素に展開されたイメージデータを生成するためのコードであり，印刷エンジン２０に同期してコントローラ１６が中間コードバッファ４０から読み出しイメージデータに展開して印刷エンジンに供給することができる程度の下位言語で表現されたコードである。以下，その一例について説明する。
【００２０】
図３は，印刷画像例を示す図である。また，図４は，図３の印刷画像に対応する中間コードの例を示す図である。図３には，印刷エンジンが１回の動作で画像形成可能な印刷範囲に対応するプレーンＰＬＮ内に形成される画像例が示されている。このプレーンＰＬＮは複数のバンド領域ＢＮＤ１〜ＢＮＤ３に分割されている。このプレーンＰＬＮは，例えば，Ａ４のレーザープリンタであればＡ４サイズに，Ａ３のレーザープリンタであればＡ３サイズに対応する。したがって，印刷用紙のサイズによってはプレーンが複数ページに対応することもある。また，印刷エンジンが１回の動作で１枚の印刷用紙に画像を形成する場合は，このプレーンＰＬＮは，その１枚の印刷用紙に対応する。図３の画像例は，写真からなるイメージ５０と，所定の色の矩形ＲＣＴ０と，文字「ＡＢＣＤＥＦ」と，楕円形５２と，三角形５４と，所定の色を有し内部に文字「Ａ」が重ね書きされている長方形５６とを有する。
【００２１】
かかる印刷画像の場合，印刷データ１２は，イメージ５０についてはその属性と位置と圧縮方式などに加えて画素に展開されたイメージデータを有し，矩形ＲＣＴ０，楕円５２，三角形５４，矩形５６などについてはその属性と位置と色のデータを有し，文字「ＡＢＣＤＥＦ」や「Ａ」についてはその属性とキャラクタの種類（フォント）と位置及び色のデータを有する。これらの印刷データ１２は，例えば，ＰＤＬやポストスクリプトなどの印刷ジョブ記述言語で記述されている。
【００２２】
そこで，この印刷データ１２から画素に展開されたイメージデータを生成するに適した中間コードが生成される。更に，画素展開を容易にするために，中間コードに変換される段階で，文字は画素に展開したイメージデータにされ，楕円５２は単位幅を有する垂直矩形Ｖ０〜Ｖ４に分解され，三角形５４は単位高さを有する水平矩形Ｌ０〜Ｌ３に分解される。また，中間コードは，印刷プレーンＰＬＮを複数に分割したバンド領域ＢＮＤ０〜ＢＮＤ３毎に生成され，それに伴い，イメージ５０はバンドＢＮＤ０に属するイメージＩＭＧ０とバンドＢＮＤ１に属するイメージＩＭＧ２とに分解され，矩形５６はバンドＢＮＤ２に属する矩形ＲＣＴ１とバンドＢＮＤ３に属する矩形ＲＣＴ２とに分解される。
【００２３】
つまり，図３に示されるとおり，バンドＢＮＤ０には，イメージＩＭＧ０と矩形ＲＣＴ０と文字を画素に展開したイメージＩＭＧ１とに対応する中間コードが生成される。バンドＢＮＤ１には，イメージＩＭＧ２と複数の垂直矩形Ｖ０〜Ｖ４に対応する中間コードが生成される。また，バンドＢＮＤ２には，複数の水平矩形Ｌ０〜Ｌ３と矩形ＲＣＴ１に対応する中間コードが生成され，バンドＢＮＤ３には矩形ＲＣＴ２とイメージＩＭＧ３に対応する中間コードが生成される。
【００２４】
図４には，図３に示した分解された画像に対応する中間コードの例が示されている。バンドＢＮＤ０には，イメージＩＭＧ０と，矩形ＲＣＴ０と，イメージＩＭＧ１に対応する中間コード６０，６１，６２が含まれる。具体的には，
（１）イメージＩＭＧ０の中間コード６０は，その属性ＩＭＧ０と，左上の点（図３中の黒点）のバンドＢＮＤ０内のローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）と，イメージデータの圧縮形式ＣＯＭＰと，具体的なイメージデータ（00110011…）とを有する。
（２）矩形ＲＣＴ０の中間コード６０は，その属性ＲＣＴ０と，矩形の模様を示すスクリーンデータＰと，色データＣＯＬと，左上点のバンドＢＮＤ０内のローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
（３）イメージＩＭＧ１の中間コード６２は，その属性ＩＭＧ１と，ローカル座標（Ｘ，Ｙ）と，幅及び高さ（Ｗ，Ｈ）と，文字を画素に展開したイメージデータ（0010101…）とを有する。
【００２５】
同様に，バンドＢＮＤ１には，イメージＩＭＧ２と複数の垂直矩形Ｖ０〜Ｖ４に対応する中間コード７０〜７５が含まれる。具体的には，
（１）垂直矩形Ｖ０〜Ｖ４の中間コード７０〜７４は，その属性Ｖ０〜Ｖ４と，色データＣＯＬと，それぞれの左上点のローカル座標（Ｘ，Ｙ）と，高さＨとを有する。
（２）イメージＩＭＧ２の中間コード７５は，その属性ＩＭＧ２と，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）と，イメージデータの圧縮形式ＣＯＭＰと，具体的なイメージデータ（00110011…）とを有する。
【００２６】
同様に，バンドＢＮＤ２には，水平矩形Ｌ０〜Ｌ３の中間コード８０〜８３と，矩形ＲＣＴ１の中間コード８４とを有する。具体的には，
（１）水平矩形Ｌ０〜Ｌ４の中間コード８０〜８３は，その属性Ｌ０〜Ｌ４と，モノクロデータＢと，ローカル座標（Ｘ，Ｙ）と，幅Ｗとを有する。
（２）矩形ＲＣＴ１の中間コード８４は，その属性ＲＣＴ１と，矩形の模様を示すスクリーンデータＰと，色データＣＯＬと，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
【００２７】
そして，バンドＢＮＤ３には，矩形ＲＣＴ２とイメージＩＭＧ３の中間コード９０，９１が含まれる。具体的には，
（１）矩形ＲＣＴ２の中間コード９０は，その属性ＲＣＴ２と，矩形の模様を示すスクリーンデータＰと，色データＣＯＬと，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
（２）イメージＩＭＧ３は，その属性データＩＭＧ３と，下地との重なりの関係（ＡＮＤかＯＲかＥＯＲかなど）のデータＤと，スクリーンデータＰと，ローカル座標（Ｘ，Ｙ）と，幅及び高さ（Ｗ，Ｈ）とを有する。
【００２８】
図４に示されるようにイメージデータ以外は，細分化された簡単な図形に対応する中間コードにされる。それにより，その後印刷エンジンの動作速度に追従して中間コードから画素に展開したイメージデータを高速に生成することが可能になる。
【００２９】
図２に戻り，コントローラ１６のＣＰＵ３２が，描画コマンドから中間コードを生成し，中間コードバッファ４０に保存する（Ｓ１２）。中間コードには，前述したとおり画素に展開されたイメージデータも含まれる。かかるイメージデータは，ＲＡＭ内のワークメモリ３８に格納され，中間コードバッファ４０にはそのワークメモリ３８内の格納されたアドレスデータが，展開済みのイメージデータのポインタ情報として格納される。
【００３０】
次に，ＣＰＵ３２は，各バンドに含まれる中間コードについて，中間コードの展開に要する負荷評価値を演算により求める（Ｓ１４）。この負荷評価値とは中間コードを展開するのに必要な演算時間に対応するものであり，印刷エンジンが起動した時に，コントローラ１６が中間コードからイメージデータを生成し，そのイメージデータを印刷エンジンの動作速度に対応して適切なタイミングで印刷エンジン２０に供給できるか否かを評価するための指標である。つまり，この負荷評価値が所定の閾値を超えるか否かを事前にチェックすることで，保存された中間コードから印刷エンジンに追従してイメージデータを供給可能か否かを評価することができる。負荷評価値が所定の閾値を超える場合は，オーバーランエラーが発生する蓋然性が高いと見なして，そのバンドの中間コードを事前に画素に展開してイメージデータの形態でＲＡＭに保存する。
【００３１】
図５は，負荷評価値の演算例を説明するための図である。負荷評価値の計算は，中間コードの組合せに対応して負荷係数Ａ（ｘ）があらかじめ設定され，その負荷係数Ａ（ｘ）とその画像の面積（幅Ｗ×高さＨ）から，式１００に示されるように負荷評価値Ｚが演算される。つまり，バンド内の複数の中間コード（または中間コードの組合せ）の負荷係数Ａ（ｘ）とその面積（Ｗ＊Ｈ）との乗算値の合計が，そのバンドの負荷評価値Ｚとなる。
【００３２】
ここで，図５の図表に示される論理演算式は，中間コードの組合せに対応する。例えば，論理演算式は，前述したイメージＩＭＧ，水平矩形Ｌ，垂直矩形Ｖ，及び矩形ＲＣＴからなるソースＳと，その中間コードの画像が重ねられる下地の画像を意味するデスティネーションＤと，その中間コードの画像の表面模様（スクリーン）や色などを含むデータＰとの組合せで構成される。図５の図表には，最初にソースＳのみからなる論理演算式ＩＭＧ，Ｌ，Ｖ，ＲＣＴが示され，それらに対してはスクリーンや色などは含まれておらず，それぞれに負荷係数ａ１〜ａ４が設定されている。また，５行目には，論理演算式「ＤＳＰ０」が示され，デスティネーションＤは下地の画像との重ね方を示すデータであり，データＰ０についてはスクリーンをＰ１とし色をモノクロＢＷとすることが示され，その場合の負荷係数はａ５と設定されている。それ以外の論理演算式「ＤＳＰ１」「ＤＳＰｎ」も同様であり，それぞれ負荷係数はａ６，ａｍと設定されている。
【００３３】
この図表の負荷係数Ａ（ｘ）の設定値は，コントローラ１６の不揮発性メモリ４２に格納されている。そして，コントローラ１６のＣＰＵ３２が，バンド内の中間コードに基づき，この図表の負荷係数Ａ（ｘ）の設定値を参照し，式１００に示したような演算を行って，各バンドの負荷評価値Ｚを演算で求める。
【００３４】
論理演算式の種類は，多岐にわたり，たとえば２５６種類に達する場合もある。その場合に，それぞれの負荷係数Ａ（ｘ）を個別に高精度に設定するとすると，負荷係数Ａ（ｘ）の桁数が多くなるなどにより，負荷評価値の演算時間が長くなる。そのため，負荷係数Ａ（ｘ）には簡便化された値が設定され，負荷評価値の演算時間が長くならないようにする必要がある。それに伴い，異なる論理演算式であっても同等の負荷係数が設定されることなどがあり，演算で求められる負荷評価値は，必ずしも高い精度で求められるものではない。この負荷評価値をより高い精度で求めるためには，負荷係数を精度よく設定する必要があり，それに伴って，負荷評価値の演算時間が長くなり，中間コードを生成する工程で事前展開の必要性の判断自体の工数が多くなり，画像形成全体のスループットが下がり好ましくない。
【００３５】
図２に戻り，コントローラ１８のＣＰＵ３２は，各バンド毎に演算で求めた負荷評価値が，あらかじめ設定されている閾値を超えるか否かを判定する（Ｓ１６）。そして，負荷評価値が閾値を超えている場合は（Ｓ１６のＹＥＳ），該当するバンド内の中間コードを全て画素に展開したイメージデータに事前展開し，そのイメージデータをワークメモリ領域３８にそのアドレスを中間コードバッファ４０にそれぞれ保存する（Ｓ１８）。そして，そのバンドの負荷評価値をゼロに設定する（Ｓ２０）。つまり，事前展開したことによりそのバンドにおいて中間コードをイメージデータに展開する工数がゼロになったので，そのバンドの負荷評価値はゼロになるのである。負荷評価値が閾値を超えていない場合は，上記した中間コードの事前展開は行われない。そして，１プレーンの全てのバンドが終了するまで，上記の工程Ｓ１４〜Ｓ２０が繰り返される。
【００３６】
以上の中間コードへの変換と事前展開が，印刷エンジンの１プレーン分行われると，印刷エンジンによる印刷起動準備が終了する。それに応答して，コントローラ１６は印刷エンジン２０に起動をかけて，中間コードをイメージデータに展開しながら，または事前展開済みのイメージデータを読み出して，印刷エンジン２０の動作に同期してそのイメージデータ１８を供給する。この印刷エンジン２０の起動タイミングは，１プレーン分の中間コード生成または事前展開が終了する前に，印刷エンジン２０の起動に要する時間を考慮して，早めに設定される場合もある。
【００３７】
図６は，本実施の形態においてコントローラが印刷エンジンを起動してからの動作を示すフローチャート図である。コントローラ１６のＣＰＵ３２は，１プレーン内の全てのバンドについて中間コードの生成または事前展開が終了すると，印刷エンジン２０を起動する（Ｓ３０）。そして，印刷エンジンの動作に同期して，中間コードバッファ４０から対応するバンドの中間コードを読み出して画素に展開したイメージデータを生成しながら，そのイメージデータ１８を印刷エンジン２０に供給する（Ｓ３２）。印刷エンジン２０は，供給されたイメージデータ１８に基づき所望の画像を形成する。そして，印刷エンジン２０の動作にイメージデータの供給が間に合わない場合は，印刷エンジン２０からコントローラ１６に対してオーバーランエラーの発生が通知される（Ｓ３４）。それに応答して，コントローラ１６は，印刷中の用紙を排出し，エラーの発生を図示しない表示パネルやエラーランプを介してユーザに通知する（Ｓ３８）。
【００３８】
通常は，負荷評価値に対する閾値が安全サイドに設定されているので，事前展開されなかった場合，中間コードからイメージデータへの変換と供給は印刷エンジンの動作速度に追従することができ，オーバーランエラーが発生することはない。しかし，まれに複雑な画像の形成が要求され，演算で求めた負荷評価値が閾値を上回ることはなくても，印刷エンジン起動後に中間コードからイメージデータへの変換が間に合わずにオーバーランエラーが発生することがある。
【００３９】
たとえば，図４の中間コードの例において，バンドＢＮＤ０とＢＮＤ１の負荷評価値が等しく且つ閾値を超えていないと仮定すると，その場合，それらのバンドの中間コードは事前展開されないまま保存される。そして，印刷エンジンを起動すると，バンドＢＮＤ０ではオーバーランエラーが発生したが，バンドＢＮＤ１ではオーバーランエラーが発生しなかったとする。従来の方法では，一律に事前展開判断の閾値を低い値に再設定しているので，再度同じような画像の形成が要求された場合，バンドＢＮＤ１では事前展開は必要なかったにもかかわらず，バンドＢＮＤ０，ＢＮＤ１の両方において中間コードをイメージデータに事前展開する必要があると判断されてしまう。
【００４０】
本実施の形態では，閾値を低い値に再設定するのではなく，オーバーランエラーが発生したバンドに含まれる中間コードの負荷係数を変更する（Ｓ４０）。つまり，負荷評価値の演算のために設定される負荷係数は，演算を簡略化するため最初はラフに設定されている。そこで，オーバーランエラーが発生した場合は，その原因となった中間コードの負荷係数をより高い値に再設定する。これにより，ユーザに適合した最適な値に負荷係数が変更される。
【００４１】
そして，コントローラ１６のＣＰＵ３２は，オーバーランエラーが発生したバンドの中間コードをイメージデータに事前展開し，ＲＡＭ内のワークメモリ領域３８に格納し，その格納したアドレスを中間コードバッファ４０に格納する（Ｓ４２）。そして，オーバーランエラー発生後に再度印刷要求が出されるまで待機する（Ｓ４４）。
【００４２】
再度印刷要求が出されると，オーバーランエラーが発生したプレーンの印刷を再開するために，コントローラ１６のＣＰＵ３２が印刷エンジンを起動する（Ｓ３０）。そして，再度，プレーンの複数のバンドについて中間コードをイメージデータに展開しながら，且つ事前展開したイメージデータを読み出しながら，当該イメージデータを印刷エンジンの動作に同期して印刷エンジンに供給する（Ｓ３２）。そして，オーバーランエラーが発生しない間は（Ｓ３４のＮＯ），全てのバンドが終了するまで工程Ｓ３２が繰り返される（Ｓ３６のＮＯ）。全てのバンドの印刷が終了すると（Ｓ３６のＹＥＳ），そのプレーンの画像形成は終了する。
【００４３】
本実施の形態では，オーバーランエラーが発生したバンドＢＮＤ０内の中間コードの負荷係数がより高い値に設定変更される。したがって，その後の印刷データに対して，上記バンドＢＮＤ０と同様の中間コードを有するバンドに対しては，演算される負荷評価値がより高い値になり，今度は閾値を超えることになる。したがって，コントローラ１６のＣＰＵ３２は，そのバンドについては中間コードをイメージデータに事前展開する（図２のＳ１６，Ｓ１８）。しかしながら，前述のバンドＢＮＤ１と同じ中間コードを有するバンドについては，構成される中間コードが異なるため，演算される負荷評価値が必ずしも閾値を超えると判断されることはない。つまり，バンドＢＮＤ１はオーバーランエラーが発生しなかったので，中間コードのイメージデータへの事前展開は不必要であるところ，本実施の形態の方法によれば，一部の中間コードの負荷係数を変更設定した後も，同様の中間コードを有するバンドに対して不要な事前展開が行われることはない。その結果，本当に事前展開が必要なバンドのみを精度よく判別して中間コードを事前展開するので，最小限の事前展開でオーバーランエラーを回避することができる。
【００４４】
次に，図６の工程Ｓ４０での中間コードの負荷係数の変更設定について説明する。本実施の形態では，オーバーランエラーが発生したバンドに含まれる中間コードに対する負荷係数をより大きな値に設定変更する。そこで，そのバンドに含まれるどの中間コードの負荷係数を変更設定するかが問題となる。種々の方法が考えられるが，一例を説明すると以下の通りである。
【００４５】
たとえば，第１の方法としては，コントローラは，オーバーランエラーが発生したバンド（印刷範囲）に含まれる中間コード全てについて，その負荷係数を増加するように設定変更する。但し，その増加の程度は，一律同じ割合でもよく，それぞれの中間コードによる負荷評価値の割合に応じた比率で増加してもよい。
【００４６】
第２の方法としては，オーバーランエラーが発生したバンド（印刷範囲）に含まれる中間コードのうち，そのバンドの負荷評価値を大きくした原因となる中間コードの負荷係数を増加するように設定変更する。たとえば，図４に示した中間コードを例にして説明すると，バンドＢＮＤ０には３つの中間コード６０，６１，６２があり，それらの中間コードに対する負荷評価値の演算用の論理演算式は，中間コード６０，６２のＩＭＧと，中間コード６１のＲＣＴとに分類され，それらの中間コードにはそれぞれ負荷係数が設定されている。そして，中間コードＩＭＧに対応して求められる負荷評価値の合計よりも中間コードＲＣＴに対応して求められる負荷評価値のほうが大きい場合は，中間コードＲＣＴの負荷がオーバーランエラーに寄与していると見なして，その負荷係数のみをより高く再設定する。このようにすれば，以降，同様の矩形を描画する必要のあるバンドには，適切に事前展開が行われるようになる。
【００４７】
第３の方法としては，コントローラは，オーバーランエラーが発生したバンド（印刷範囲）に含まれる中間コードのうち，最も描画面積が大きい中間コードの負荷係数を増加するように設定変更する。上記のバンドＢＮＤ０の例では，中間コードＩＭＧ０の描画面積が最も大きいので，それに対応する負荷係数がより大きな値に再設定される。その結果，以降，同様に描画面積が大きいイメージＩＭＧを描画すべきバンドに対しては，適切に事前展開が行われるようになる。
【００４８】
そして，コントローラは，オーバーランエラーが発生したバンド（印刷範囲）に含まれる中間コードから求められる負荷評価値が，設定されている閾値を超える程度に，設定変更する中間コードの負荷係数を増加することが望ましい。つまり，設定変更する負荷係数の増加の程度を上記のようにすることで，以降に同様の中間データのバンドが存在する場合に，確実に事前展開が行われるようにすることができる。
【００４９】
以上説明したとおり，本実施の形態によれば，オーバーランエラーが発生した場合，そのバンドに含まれる中間コードの負荷評価値の演算に必要な係数をより高めに設定変更するので，同様のバンドについてはそれ以降オーバーランエラーを回避することができると共に，不必要な中間コードのイメージデータへの事前展開の発生を抑制することができる。
【００５０】
なお，上記の実施の形態では，バンド毎に負荷評価値を求めて事前展開するか否かを判定したが，例えば，１ページ毎に行っても良く，あるいは１プレーン毎に行っても良い。つまり，所定の印刷単位で事前展開の判定を行えばよい。
【００５１】
更に，図１に示した実施の形態では，ホストコンピュータ１０が印刷データ１２をプリンタ装置のコントローラ１６に供給しているが，ホストコンピュータ１０側で中間コードまで変換してプリンタ装置のコントローラ１６に供給する場合にも，本件発明を適用することができる。その場合は，プリンタ装置のコントローラ１６は，供給された中間コードについて，図２の工程Ｓ１４〜Ｓ２２を実行する。また，コントローラ１６は，図６の動作も行う。
【００５２】
更に，ホストコンピュータ１０側で中間コードに変換し，更にバンド毎に負荷評価値を求めて必要に応じてイメージデータに事前展開してもよい。つまり，ホストコンピュータにインストールされているプリンタのコントローラ（ドライバプログラム）が図２のコントロール動作を全て実行する。そして，中間コードまたは事前展開されたイメージデータがホストコンピュータ１０からプリンタ装置のコントローラ１６に供給される。この場合は，印刷エンジン２０でオーバーランエラーが発生した場合，その発生した事実とどのバンドで発生したかの情報を，コントローラ１６がホストコンピュータ１０内のコントローラにフィードバックする必要がある。このオーバーランエラーのフィードバックに応答して，ホストコンピュータ１０内のコントローラは，図６の工程Ｓ３８〜Ｓ４４を実行する。そして，プリンタ装置内のコントローラ１６は，図６の工程Ｓ３０〜Ｓ３６を実行するのみとなる。
【図面の簡単な説明】
【００５３】
【図１】本実施の形態における画像形成装置であるプリンタ装置の構成図である。
【図２】本実施の形態における画像形成装置のコントローラの動作を示すフローチャート図である。
【図３】印刷画像例を示す図である。
【図４】図３の印刷画像に対応する中間コードの例を示す図である。
【図５】負荷評価値の演算例を説明するための図である。
【図６】本実施の形態においてコントローラが印刷エンジンを起動してからの動作を示すフローチャート図である。
【符号の説明】
【００５４】
１０：ホストコンピュータ      １２：印刷データ
１４：プリンタ装置，画像形成装置    １６：コントローラ
１８：イメージデータ    ２０：印刷エンジン
【図１】
2006205403.tif 000003
【図２】
2006205403.tif 000004
【図３】
2006205403.tif 000005
【図４】
2006205403.tif 000006
【図５】
2006205403.tif 000007
【図６】
2006205403.tif 000008