(57)【要約】      （修正有）【課題】受信した印刷データから中間コードを生成し、当該中間コードをイメージ展開した後に、印刷可能なデータとして印刷エンジンに出力する画像処理装置であって、負荷が高く事前展開をせざるを得ない場合の処理時間を短縮することのできる画像処理装置等を提供する。【解決手段】当該画像処理装置が、前記中間コードを生成する中間コード生成部と、バンドに分けて格納する中間コードバッファと、前記中間コードを、前記バンド毎に、予め定められた処理時間内に、イメージ展開するイメージ展開部とを有し、前記イメージ展開部において、前記処理時間内に前記イメージ展開が完了しないと判断されるバンドについて、中間コード生成時にイメージ展開し、生成されるイメージデータを当該画像処理装置内のメモリに格納しておき、前記イメージ展開部が、当該バンドの処理時に、前記メモリに格納されたイメージデータを読み出す。【選択図】                    図１
2004291343.tif 000002
【特許請求の範囲】
【請求項１】
受信した印刷データから中間コードを生成し、当該中間コードをイメージデータにイメージ展開した後に、印刷可能なデータを生成して、印刷エンジンに出力する画像処理装置であって、
前記中間コードを生成する中間コード生成部と、
前記中間コード生成部が生成した中間コードを、印刷時の１ページの範囲を複数に分割した領域であるバンドに分けて格納する中間コードバッファと、
前記中間コードバッファが格納する中間コードを、前記バンド毎に、一つのバンドに対して予め定められた処理時間内に、前記イメージ展開するイメージ展開部とを有し、
前記イメージ展開部において、前記処理時間内に前記イメージ展開が完了しないと判断されるバンドについて、
前記中間コード生成部が、前記処理時間内でイメージ展開が完了する中間コードはイメージ展開せずに、当該イメージ展開が完了する中間コード以外の中間コードをイメージ展開し、当該イメージ展開により生成されるイメージデータを当該画像処理装置内のメモリに格納しておき、
前記イメージ展開部が、当該バンドの処理時に、前記メモリに格納されたイメージデータを読み出す
ことを特徴とする画像処理装置。
【請求項２】
受信した印刷データから中間コードを生成し、当該中間コードを、印刷時の１ページの範囲を複数に分割した領域であるバンド毎に、印刷エンジンの動作に対応して、一つのバンドに対して与えられた処理時間内にイメージデータにイメージ展開し、印刷可能なデータを生成した後に前記印刷エンジンに出力する画像処理装置であって、
前記処理時間内に前記イメージ展開が完了しないと判断されるバンドについては、前記中間コード生成時に、前記処理時間内でイメージ展開が完了する中間コードはイメージ展開せずに、当該イメージ展開が完了する中間コード以外の中間コードをイメージ展開する
ことを特徴とする画像処理装置。
【請求項３】
受信した印刷データから中間コードを生成し当該中間コードをイメージデータにイメージ展開した後に印刷可能なデータを生成する画像処理装置と、当該印刷可能なデータを前記画像処理装置から受信して印刷を実行する印刷エンジンとを有する印刷装置であって
前記画像処理装置が、
前記中間コードを生成する中間コード生成部と、
前記中間コード生成部が生成した中間コードを、印刷時の１ページの範囲を複数に分割した領域であるバンドに分けて格納する中間コードバッファと、
前記中間コードバッファが格納する中間コードを、前記バンド毎に、一つのバンドに対して予め定められた処理時間内に、前記イメージ展開するイメージ展開部とを有し、
前記イメージ展開部において、前記処理時間内に前記イメージ展開が完了しないと判断されるバンドについて、
前記中間コード生成部が、前記処理時間内でイメージ展開が完了する中間コードはイメージ展開せずに、当該イメージ展開が完了する中間コード以外の中間コードをイメージ展開し、当該イメージ展開により生成されるイメージデータを当該画像処理装置内のメモリに格納しておき、
前記イメージ展開部が、当該バンドの処理時に、前記メモリに格納されたイメージデータを読み出す
ことを特徴とする印刷装置。
【請求項４】
アプリケーションから印刷データを受信し、印刷を実行する印刷装置用の中間コードを生成して、当該中間コードを前記印刷装置へ送信する処理をホストコンピュータに実行させる印刷装置用ドライバプログラムであって、
印刷時の１ページの範囲を複数に分割した領域であるバンド毎に、前記印刷装置における前記中間コードをイメージデータにするイメージ展開処理が予め定められた処理時間内に完了するか否かを判定するステップと、
前記判定において、完了すると判定されたバンドについては、生成した中間コードを前記印刷装置へ送信し、完了しないと判定されたバンドについては、前記処理時間内で前記印刷装置におけるイメージ展開処理が完了する中間コード以外の中間コードをイメージ展開し、当該イメージ展開により生成されたイメージデータと当該イメージ展開を行わなかった中間コードとを前記印刷装置へ送信するステップとを前記ホストコンピュータに実行させる
ことを特徴とする印刷装置用ドライバプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、受信した印刷データから中間コードを生成し、当該中間コードをイメージデータに展開後、印刷エンジンに出力する画像処理装置等に関し、特に、前記中間コードの量が多い場合の処理時間を短縮することのできる画像処理装置等に関する。
【０００２】
【従来の技術】
通常、ページプリンタでは、印刷要求元のホストコンピュータ等から印刷データを受信し、それから印刷イメージの中間コードを生成して中間コードバッファに格納する。そして、印刷１ページ分の中間コードが出来上がると、印刷エンジンを動作させ、その印刷エンジン動作に同期して、格納された中間コードを順次イメージデータに展開しバンドバッファに格納していく。格納されたイメージデータは、順次スクリーン処理等を施されて印刷可能なデータとなり、印刷エンジンに転送されていき、印刷が実行される。
【０００３】
ここで、ページプリンタが受信する上記印刷データは、オブジェクト（文字、イメージ、グラフィクスなど）単位のデータとなっており、印刷を実行するために、ページプリンタは、このデータから印刷するページ上のドット（画素）毎の色情報の羅列からなる前記イメージデータを生成する。前記中間コードとは、これらオブジェクト単位の印刷データとイメージデータの中間的な形式のデータであり、プリンタ内のメモリ効率を良くするために生成されるものである。なお、前述した中間コードからイメージデータに展開する処理のことを、以下、イメージ展開と呼ぶこととする。
【０００４】
また、通常、ページプリンタでは、印刷の１ページの範囲を「バンド」と呼ばれる複数の層に分けて管理している。従って、前記生成される中間コードは、その中間コードが表すイメージが位置するバンドに振り分けられ、前記中間コードバッファでは、１ページ分の中間コードがバンドに分類されてバンド順に収められている。そして、前述した中間コードからのイメージ展開は、最初のバンドから順次行われ、展開後のイメージデータもバンド毎にバンドバッファに収められる。ここで、各バンドの領域は同じ大きさであり、同じ大きさの領域に対する印刷エンジンでの処理時間は同じであるので、印刷エンジンの動作に同期して行われるイメージ展開においては、各バンドに対して許される処理時間は同じとなる。
【０００５】
しかし、バンドによっては、印刷する内容が多いものもあり、その場合にはそのバンドの中間コードの量も多くなって、場合によっては上記許された一定の処理時間内にイメージ展開が完了しないこともある。かかる場合には、前述した印刷エンジンへのデータの転送が間に合わなくなってしまう、いわゆるオーバーランという事態が起こってしまう。
【０００６】
このオーバーランを未然に防止するために、従来から、下記特許文献にも記載されているように、「事前展開」という方法が提案されていた。かかる事前展開では、中間コード生成時に、中間コードの量が多くオーバーランになりそうなバンドを検出すると、そのバンドについては、前述した印刷エンジン同期の処理の中でイメージ展開を行わずに、事前に、即ち中間コード生成時にイメージ展開を行ってしまい、できたイメージデータはバンドバッファとは異なる一時的な記憶場所に格納しておく。そして、印刷エンジン同期のイメージ展開時には、その事前展開されたイメージデータを前記一時的な記憶場所から前述したバンドバッファにコピーする。従来は、このような方法でオーバーランの未然防止が図られていた。なお、中間コードの量が多いことを、以下、負荷が高いと称する。
【０００７】
【特許文献１】
特開平５−１１６４３１号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、上述した従来の事前展開の方法では、負荷が高くオーバーランしそうなバンドについては、全てのデータを事前にイメージ展開しておくため、中間コード生成時に事前展開をしないバンドよりも余計に時間がかかってしまい、オーバーランは防げるものの印刷データを受信してから印刷を完了するまでの処理時間が長くなってしまう。また、事前展開をしたバンドでは、印刷エンジンに同期して実行されるイメージ展開時に、すでにイメージデータが出来上がっており、前述したようにその出来上がったデータをコピーするだけなので、処理を実行する内部プロセッサを遊ばせてしまうことになる。
【０００９】
そこで、本発明の目的は、受信した印刷データから中間コードを生成し、当該中間コードをイメージ展開した後に、印刷可能なデータとして印刷エンジンに出力する画像処理装置であって、負荷が高く事前展開をせざるを得ない場合の処理時間を短縮することのできる画像処理装置等を提供することである。
【００１０】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面は、受信した印刷データから中間コードを生成し、当該中間コードをイメージデータにイメージ展開した後に、印刷可能なデータを生成して、印刷エンジンに出力する画像処理装置が、前記中間コードを生成する中間コード生成部と、前記中間コード生成部が生成した中間コードを、印刷時の１ページの範囲を複数に分割した領域であるバンドに分けて格納する中間コードバッファと、前記中間コードバッファが格納する中間コードを、前記バンド毎に、一つのバンドに対して予め定められた処理時間内に、前記イメージ展開するイメージ展開部とを有し、前記イメージ展開部において、前記処理時間内に前記イメージ展開が完了しないと判断されるバンドについて、前記中間コード生成部が、前記処理時間内でイメージ展開が完了する中間コードはイメージ展開せずに、当該イメージ展開が完了する中間コード以外の中間コードをイメージ展開し、当該イメージ展開により生成されるイメージデータを当該画像処理装置内のメモリに格納しておき、前記イメージ展開部が、当該バンドの処理時に、前記メモリに格納されたイメージデータを読み出すことである。従って、本発明によれば、中間コードの量が多く負荷が高いバンドであり、事前展開が必要な場合にも、印刷エンジン同期でイメージ展開する時に当該バンドに与えられた展開時間を有効に使うため、従来のようにそのバンドの全てのデータを事前展開する場合よりも処理時間を短くすることができる。
【００１１】
上記の目的を達成するために、本発明の別の側面は、受信した印刷データから中間コードを生成し、当該中間コードを、印刷時の１ページの範囲を複数に分割した領域であるバンド毎に、印刷エンジンの動作に対応して、一つのバンドに対して与えられた処理時間内にイメージデータにイメージ展開し、印刷可能なデータを生成した後に前記印刷エンジンに出力する画像処理装置が、前記処理時間内に前記イメージ展開が完了しないと判断されるバンドについては、前記中間コード生成時に、前記処理時間内でイメージ展開が完了する中間コードはイメージ展開せずに、当該イメージ展開が完了する中間コード以外の中間コードをイメージ展開することである。これにより、事前展開が必要なバンドについても、前記処理時間を有効に使うため、従来よりも全体の処理時間を短くすることができる。
【００１２】
上記の目的を達成するために、本発明の更に別の側面は、受信した印刷データから中間コードを生成し当該中間コードをイメージデータにイメージ展開した後に印刷可能なデータを生成する画像処理装置と、当該印刷可能なデータを前記画像処理装置から受信して印刷を実行する印刷エンジンとを有する印刷装置において、前記画像処理装置が、前記中間コードを生成する中間コード生成部と、前記中間コード生成部が生成した中間コードを、印刷時の１ページの範囲を複数に分割した領域であるバンドに分けて格納する中間コードバッファと、前記中間コードバッファが格納する中間コードを、前記バンド毎に、一つのバンドに対して予め定められた処理時間内に、前記イメージ展開するイメージ展開部とを有し、前記イメージ展開部において、前記処理時間内に前記イメージ展開が完了しないと判断されるバンドについて、前記中間コード生成部が、前記処理時間内でイメージ展開が完了する中間コードはイメージ展開せずに、当該イメージ展開が完了する中間コード以外の中間コードをイメージ展開し、当該イメージ展開により生成されるイメージデータを当該画像処理装置内のメモリに格納しておき、前記イメージ展開部が、当該バンドの処理時に、前記メモリに格納されたイメージデータを読み出すことである。
【００１３】
上記の目的を達成するために、本発明の更に別の側面は、アプリケーションから印刷データを受信し、印刷を実行する印刷装置用の中間コードを生成して、当該中間コードを前記印刷装置へ送信する処理をホストコンピュータに実行させる印刷装置用ドライバプログラムが、印刷時の１ページの範囲を複数に分割した領域であるバンド毎に、前記印刷装置における前記中間コードをイメージデータにするイメージ展開処理が予め定められた処理時間内に完了するか否かを判定するステップと、前記判定において、完了すると判定されたバンドについては、生成した中間コードを前記印刷装置へ送信し、完了しないと判定されたバンドについては、前記処理時間内で前記印刷装置におけるイメージ展開処理が完了する中間コード以外の中間コードをイメージ展開し、当該イメージ展開により生成されたイメージデータと当該イメージ展開を行わなかった中間コードとを前記印刷装置へ送信するステップとを前記ホストコンピュータに実行させることである。これにより、ホストコンピュータ側の印刷装置用ドライバプログラムで中間コードの生成まで行う場合に、オーバーランを起こしそうなバンドについては、一部事前展開がなされ印刷装置でイメージ展開する際に間に合う量の中間コードしか残っていないので、オーバーランを未然に防止することができる。また、事前展開が必要なバンドについて、そのバンドの全てのデータを事前展開する場合よりも、処理の時間を短縮することができる。
【００１４】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【００１５】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
【００１６】
図１は、本発明を適用した印刷装置及び画像処理装置の第一の実施の形態例に係る構成図である。図１に示すように、第一の実施の形態例に係る印刷装置２は、コントローラにあたる画像処理装置３と印刷エンジン４から構成され、ホストコンピュータ１から受信した印刷データ５に対して、画像処理装置３が各種の画像処理を施し、その後画像処理装置３からの出力により印刷エンジン４が印刷を実行するが、バンドの負荷が高く事前展開が必要なときに、そのバンドの全てを事前展開するのではなく、一部を事前展開することに特徴を有している。以下、本実施の形態例に係る画像処理装置３の構成と機能について説明する。
【００１７】
図１に示すように、画像処理装置３には、まず受信部３１が備えられており、ここで印刷要求元のホストコンピュータ１から送信される印刷データ５が受信される。次に、中間コード生成部３２は、受信部３１から送信される前記印刷データ５を解釈して、当該印刷データ５から中間コードを生成し、中間コードバッファ３３に格納する部分である。中間コードは、従来と同様にバンドの単位で振り分けられて格納される。この中間コード生成部３２が、本実施の形態例に係る印刷装置２及び画像処理装置３の特徴部分であり、具体的な処理の内容については後述するが、負荷が高く事前展開が必要なバンドに対して、後述するイメージ展開部３５で展開できる部分については事前展開せずに、その他の部分について事前展開することを特徴としている。なお、当該中間コード生成部３２は、処理の内容を記述したプログラムとそのプログラムに従って処理を実行する制御装置で実装することができる。
【００１８】
次に、中間コードバッファ３３は、前述の通り、中間コード生成部３２が生成した中間コードを印刷の１ページ分蓄えるバッファである。図１に示すように、中間コードバッファ３３に格納される中間コード（図１のＡ、Ｂ、Ｃなど）は、バンド（図１のバンド１、バンド２、…バンドｎ）毎に振り分けられており、バンド順に収められている。また、事前展開された中間コードについては、中間コードの代わりに、展開後のイメージデータが収められているメモリのアドレスがこの中間コードバッファ３３に格納される。
【００１９】
また、一時メモリ３４は、事前展開した中間コードのイメージデータを一時的に格納しておく部分であり、当該イメージデータは後述するイメージ展開部３５から読み出される。次に、イメージ展開部３５は、中間コードバッファ３３に格納された中間コードを画素毎のイメージデータに展開する部分であり、中間コードバッファ３３に印刷１ページ分の中間コードが出来上がると、印刷エンジン４の動作に同期して処理を実行する。このイメージ展開の処理は、バンド毎に順次行われ、各バンドのイメージデータがバンドバッファ３６に格納される。また、この各バンドのイメージ展開は、印刷エンジン４の動作に同期した処理であるため、予め定められた一定時間内に処理されなければならず、この１バンドのイメージ展開に許された時間を、以下、許容時間と称することとする。また、イメージ展開部３５は、中間コードバッファ３３に前述したアドレスが格納されている場合には、そのアドレスにしたがって一時メモリ３４から対応する事前展開されたイメージデータを読み出し、そのままバンドバッファ３６にコピーする。
【００２０】
次に、バンドバッファ３６は、図１に示すように、イメージ展開部３５で展開されたイメージデータをバンド毎に格納する部分であり、格納されたイメージデータは、スクリーン部３７から順次読み出されてその後の処理が施される。スクリーン部３７は、バンドバッファ３６に格納されたイメージデータの色濃度を表す画素値をパルス幅に変換するスクリーン処理を実行する部分であり、ＰＷＭ部３８は、パルス幅に変換されたデータをレーザ発光のＯＮ／ＯＦＦ信号に変換する処理を行う部分である。その後、この最終的に作成されたデータが印刷エンジン４に出力され、印刷エンジン４において印刷を実行する。
【００２１】
図２は、本実施の形態例に係る中間コード生成部３２における処理の一例を示したフローチャートである。以下、本印刷装置２及び画像処理装置３の特徴部分である中間コード生成部３２の処理内容について説明する。なお、図２は、印刷１ページ分の処理について示したものである。また、本画像処理装置２では、中間コード係数というものを定めており、生成される中間コード毎にこの中間コード係数が決定される。この係数は、その中間コードを処理するための時間を表すものであり、例えば、係数が“５”の中間コードは、係数が“１”の中間コードの５倍の処理時間を要することを意味する。
【００２２】
まず、中間コード生成部３２は、印刷１ページについて最初のデータを受信部３１から受け取ると、各バンドの係数累積値を初期化する（図２のステップＳ１）。ここで、各バンドの係数累積値とは、各バンドに対してそれまでに生成された中間コードの中間コード係数の合計値であり、ｋ番目のバンドであるバンドｋの係数累積値をＸｋで表す。従って、この初期化の工程では、印刷１ページがｎバンドに分割されている場合には、Ｘ１＝０，Ｘ２＝０，    ．．．，Ｘｎ＝０とされる。換言すれば、全てのバンドの係数累積値が０とされる。また、受信部３１から送られるデータの単位は、例えばオブジェクト（文字、イメージ、グラフィクスなど）単位となっている。
【００２３】
次に、中間コード生成部３２は、受け取ったデータを解釈し（図２のステップＳ２）、当該データに対応する中間コードを生成する。受け取ったデータのオブジェクトが複数のバンドにまたがって位置する場合などには、複数のバンドに係る中間コードが生成される。生成された中間コードは、中間コード生成部３２により、バンド毎に分類されて中間コードバッファ３３に格納される。
【００２４】
次に、中間コード生成部３２は、今回生成した中間コードの中間コード係数を当該中間コードが属するバンドの係数累積値Ｘｋに加える（図２のステップＳ４）。例えば、今回のデータ解釈からバンド１の中間コードＡとバンド２の中間コードＣが生成された場合には、中間コードＡの中間コード係数をαＡ、中間コードＣの中間コード係数をαＣとすると、Ｘ１＝Ｘ１＋αＡ，      Ｘ２＝Ｘ２＋αＣとされる。
【００２５】
かかる係数累積値Ｘｋの算出が終わると、中間コード生成部３２は、今回中間コードを生成したバンドについて、オーバーランを起こしてしまうか否かのオーバーラン判定を行う（図２のステップＳ５）。オーバーランとは、前述したように、バンドの中間コード量が多く、イメージ展開部３５で印刷エンジン４に同期して当該バンドについてイメージ展開する際に、前記許容時間内で処理が完了しない事態のことをいう。
【００２６】
従って、このオーバーラン判定では、中間コードを生成したバンドの中間コード量を前記係数累積値に基づいて把握し、各バンド毎に許容時間内で処理が完了するか否かを判断する。より具体的には、前記許容時間内でイメージ展開が完了する中間コード量に対応する中間コード係数値（以下、許容係数値Ｙと称する）を定めておき、各バンドの係数累積値とこの許容係数値とを比較することによってオーバーラン判定を行う。即ち、今回中間コードを生成したバンドの係数累積値Ｘｋが許容係数値Ｙよりも大きければオーバーランが発生すると判定し、そうでなければまだオーバーランが発生しないと判定する。
【００２７】
このオーバーラン判定により、オーバーランが発生しないと判定されたバンドについては（図２のステップＳ５のＮｏ）、今回受信部３１から受け取ったデータについての処理を終了する。一方、オーバーランが発生すると判定されたバンドについては（図２のステップＳ５のＹｅｓ）、一部事前展開の処理を実行する（図２のステップＳ６）。事前展開とは、従来技術で説明したとおり、オーバーランを防止するために事前にそのバンドの中間コードをイメージ展開しておくことであるが、本画像処理装置３では、従来の如くそのバンドの全てを事前展開してしまうのではなく、そのバンドの一部の中間コードを事前展開する。この点が、本画像処理装置３の大きな特徴である。
【００２８】
一部事前展開の具体的な手法については、様々な手法を取ることができるが、例えば、そのバンドの先に生成した中間コードから順番に事前展開する方法を取ることができる。その際、事前展開後に残った中間コードの係数累積値が前記許容係数値Ｙよりも小さくなるように事前展開を行う。従って、一つの中間コードを事前展開しても残った中間コードの係数累積値が前記許容係数値Ｙよりも小さくならない場合には、二つ以上の中間コードが事前展開される。
【００２９】
図３は、かかる一部事前展開を説明するための図である。この図は、あるバンドｋに生成された中間コードの係数累積値の推移を表現しており、図の右向き方向の長さは、この係数累積値の大きさを表している。図３の（ａ）は、中間コードＡとＢが生成された状態であり、この時の係数累積値Ｘｋは許容係数値Ｙよりも小さいため、この段階では事前展開がなされない。次に、図３の（ｂ）に示すように、当該バンドｋについて新たに中間コードＣが生成された場合には、その係数累積値Ｘｋが許容係数値Ｙよりも大きくなるため、前述したオーバーラン判定により一部事前展開を行うと判断される。図３の（ｃ）は、一部事前展開後の状態を示している。この例では、始めに生成された中間コードＡを事前展開することで、残りの中間コードの係数累積値Ｘｋが許容係数値Ｙよりも小さくなるので一つの中間コードのみが事前展開されている。
【００３０】
このように事前展開された中間コードについては、中間コード生成部３２が、その事前展開後のイメージデータが格納されている一時メモリ３４内の場所を表すアドレスを中間コードの代わりに中間コードバッファ３３に収めておく。図３の（ｄ）は、前述した図３の（ｃ）の段階における、バンドｋについての中間コードバッファ３３内の様子を示している。
【００３１】
次に、中間コード生成部３２は、前記一部事前展開したバンドの係数累積値を変更する（図２のステップＳ７）。具体的には、事前展開した中間コードの中間コード係数βを係数累積値Ｘｋから差し引く処理を行う。この処理の結果の係数累積値Ｘｋは、中間コードバッファ３３に残っている中間コードの係数累積値であり、この値は前述した処理の内容により許容係数値Ｙよりも小さくなっている。この係数累積値の変更処理で、一部事前展開を行うと判断されたバンドについての処理も終了する。
【００３２】
このように、今回受信部３１から受け取ったデータについての処理が終了すると、印刷１ページ分についての全ての中間コード生成処理が終了したかチェックし（図２のステップＳ８）、印刷１ページ分について処理が終了していなければ（図２のステップＳ８のＮｏ）、受信部３１から次のデータを受け取り、前述した解釈（図２のステップＳ２）から印刷１ページ分についての終了チェックし（図２のステップＳ８）までの処理を同様に実行する。かかる受け取ったデータに対する処理を印刷１ページ分の処理が終了するまで（図２のステップＳ８のＹｅｓ）繰り返し、中間コード生成部３２における印刷１ページ分の処理を終了する。
【００３３】
これにより、中間コードバッファ３３には、印刷１ページ分の中間コードが生成されるので、前述したように、イメージ展開部３５が動作を開始し、バンド順に中間コードのイメージ展開を実行する。その際、一部事前展開されたバンドについては、事前展開先のアドレスと中間コードが混在しているが、イメージ展開部３５は、アドレスについてはそのアドレスが示す一時メモリ３４の場所からイメージデータをバンドバッファ３６にコピーし、中間コードについては、イメージ展開してバンドバッファ３６に収める。なお、前述したように、中間コードバッファ３３の各バンドに格納されている中間コードの量は、前記許容時間内でイメージ展開が完了する量なので、オーバーランを起こすことはない。
【００３４】
以上説明したように、第一の実施の形態例に係る印刷装置２及び画像処理装置３では、中間コード生成時にオーバーランを起こしそうなバンドについては、前記許容時間内にイメージ展開できる中間コードを残して、それ以外の中間コードについては事前展開を行う。したがって、印刷量の多いバンドについてもオーバーランを防止でき、さらに、事前展開したバンドについても前記許容時間を有効に使用するため、従来のバンド毎に全てを事前展開する方法よりも処理時間を短縮することができる。
【００３５】
図４は、かかる処理時間の短縮を説明するための図である。図４の（ａ）は、中間コード生成部３２で処理が行われている際の、ある一つのバンドｋについて中間コードバッファ３３に生成された中間コードの係数累積値Ｘｋの推移を表現しており、図の右向き方向の長さは、この係数累積値の大きさを表している。また、図４の（ｂ）は、そのバンドｋについて中間コード生成部３２で費やされる処理時間Ｔを表している。なお、図中Ａ、Ｂ等は中間コードを表し、ＴＡ、ＴＢ等は中間コード生成時間を表し、また、Ｔａ、Ｔｂ等は事前展開（イメージ展開）時間を表している。
【００３６】
図４の（ａ）におけるイは、バンドｋについて中間コードＡ、Ｂ、及びＣが生成された段階を示している。この段階までにバンドｋについては、ＴＡ＋ＴＢ＋ＴＣの時間がかかっており、図４の（ｂ）におけるイに示す位置まで処理時間が費やされている。このイの状態は、係数累積値Ｘｋが前記許容係数値Ｙを越えているため、前述のように、バンドｋについて一部事前展開がなされる。そして、先に生成された中間コードＡについて事前展開が行われ、係数累積値Ｘｋは、図４の（ａ）におけるロの状態となる。この事前展開によりバンドｋについては、さらにＴａの時間が費やされるので、これまでのバンドｋについての処理時間は、図４の（ｂ）におけるロに示す位置となる。
【００３７】
以下同様に、図４の（ａ）におけるハでは中間コードＤが生成され、それにより中間コードＢが事前展開されて二の状態となる。その後、さらに中間コードＥが生成されてホの状態となったところで、印刷１ページ分の処理が終了したものとする。この推移に対応した処理時間の経過は、図４の（ｂ）におけるハ、二、ホのようになる。したがって、この例で本中間コード生成部３２においてバンドｋに費やされる処理時間は、図４の（ｂ）に示すＴ１となる。
【００３８】
また、図４の（ｃ）は、同じデータに対して従来の事前展開方式で処理した場合のバンドｋに費やされる処理時間を示したものである。従来の方式は、各バンドについて、一度係数累積値Ｘｋが前記許容係数値Ｙを越えれば、そのバンドについては、それ以降の中間コード生成を行わずに、そのバンドについて全てを事前展開する。したがって、図４の例では、図４の（ａ）におけるイの段階で、バンドｋについては全て事前展開すると判断されて、中間コードＡ、Ｂ、Ｃ、Ｄ、及びＥに対応するデータが事前展開される。図４の（ｃ）は、この処理による経過時間を示しており、したがって従来方式によるバンドｋに費やされる処理時間は、図４の（ｃ）に示すＴ２となる。
【００３９】
図４のＴ１とＴ２から明らかなように、同じデータのバンドｋに対して、本発明に係る中間コード生成部３２により、中間コード生成時の処理時間を従来法よりも短縮することができる。具体的には、図４の（ｂ）と（ｃ）を比較して、（ＴＤ＋ＴＥ）＜（Ｔｃ＋Ｔｄ＋Ｔｅ）となり、（Ｔ２−Ｔ１）＝（（Ｔｃ＋Ｔｄ＋Ｔｅ）−（ＴＤ＋ＴＥ））＝（図４の（ｂ）のΔＴ）だけ時間を短縮することができる。通常、中間コードを生成する時間よりもイメージ展開する時間の方がかなり長くなるため、殆どの場合において、図４に示した例のような状態となって、時間短縮を図ることができる。なお、イメージ展開部３５におけるイメージ展開時に費やされる処理時間は、前述の通り、各バンドに対して一定であり本画像処理装置３と従来装置とで差がないので、上記バンドｋについての全体の処理時間も本画像処理装置３により短縮されることになる。このように、本実施の形態例に係る画像処理装置３を用いることにより、事前展開が必要なバンドについての処理時間を短縮することができる。
【００４０】
次に、本発明の第二の実施の形態例について説明する。第二の実施の形態例は、第一の実施の形態例における中間コード生成部３２が実施する処理をホストコンピュータ側で行うものである。より具体的には、ホストコンピュータ側にインストールされる印刷装置用ドライバプログラムによって、中間コード生成部３２と同様の処理を行おうとするものである。図５は、第二の実施の形態例に係る構成図である。図５に示すように、印刷要求元のホストコンピュータ１’には、中間コード生成部３２’が設けられ、印刷装置２’には、受信部３１’、中間コードバッファ３３’、一時メモリ３４’等が設けられる。
【００４１】
中間コード生成部３２’が、本実施の形態例における特徴部分であり、処理の内容を記述した印刷装置用ドライバプログラム、そのプログラムに従って処理を実行する制御装置、及びデータ等を格納する記憶装置等で構成される。当該中間コード生成部３２’は、印刷を要求するアプリケーション等から印刷データ５’を受信し、印刷装置２’用の中間コードを生成して印刷装置２’に送信するが、オーバーランを起こしそうなバンドについては、その一部の中間コードをイメージデータに展開した後に印刷装置２’へ送信する。
【００４２】
具体的な処理手順は、図２に基づいて説明した第一の実施の形態例における中間コード生成部３２の処理手順と同様であるが、各バンドについて生成した中間コードと一部事前展開して生成されたイメージデータについては、中間コード生成部３２’内の記憶装置に格納しておく。したがって、印刷１ページ分の処理が終了した時点で、前記記憶装置内には、バンド毎の中間コードと一部事前展開によるイメージデータが格納されることになる。中間コード生成部３２’は、印刷１ページ分の処理が終了すると、上記記憶装置に格納された印刷１ページ分の中間コードと一部事前展開によるイメージデータを印刷装置２’へ送信する。
【００４３】
印刷装置２’に備えられた受信部３１’は、ホストコンピュータ１’から送信された上記印刷１ページ分の中間コードとイメージデータを受信する部分であり、受信された中間コードは、バンド毎に中間コードバッファ３３’に格納される。また、一部事前展開されたイメージデータについては、一時メモリ３４’に格納され、その格納場所を表すアドレスが、中間コードバッファ３３’の対応する位置に収められる。
【００４４】
印刷装置２’には、図示していないが、中間コードバッファ３３’以降、第一の実施の形態例に係る印刷装置２と同様にイメージ展開部等が備えられており、中間コードバッファ３３’に印刷１ページ分の中間コードが生成されると印刷エンジン（図示せず）に同期して処理を実行する。なお、イメージ展開部以降の各部の処理内容は第一の実施の形態例の場合と同様であるので、ここでは説明を省略する。
【００４５】
以上説明したように、第二の実施の形態例によれば、ホストコンピュータ１’側の印刷装置用ドライバプログラムで中間コードの生成まで行う場合に、オーバーランを起こしそうなバンドについては、一部事前展開がなされ印刷装置２’でイメージ展開する際に間に合う量の中間コードしか残っていないので、オーバーランを未然に防止することができる。また、事前展開が必要なバンドについて、そのバンドの全てのデータを事前展開する場合よりも、第一の実施の形態例において説明した理由により、処理時間を短縮することができる。
【００４６】
なお、上述の実施の形態例における構成図においては、中間コードバッファとバンドバッファを別々に表現したが、これらは同一のメモリ内に備えられても良い。また、バンドバッファ３６は、図１に示したように、前述の実施の形態例においては、１ページ分のバンド数用意されているように表現したが、受け取ったデータについては順次印刷エンジン４に送られ、送られたデータについてはもはや格納しておく必要がないので、必ずしも１ページ分のバンド数用意する必要はなく、１ページ分のバンド数より少ない数としてもよい。
【００４７】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【図面の簡単な説明】
【図１】第一の実施の形態例に係る画像処理装置の構成図である。
【図２】中間コード生成部３２における処理フローを例示した図である。
【図３】一部事前展開を説明するための図である。
【図４】時間短縮の効果を説明するための図である。
【図５】第二の実施の形態例に係る構成図である。
【符号の説明】
１  ホストコンピュータ、  ２  印刷装置、  ３  画像処理装置、  ４  印刷エンジン、  ５  印刷データ、  ３１  受信部、  ３２  中間コード生成部、３３  中間コードバッファ、３４  一時メモリ、  ３５  イメージ展開部、  ３６バンドバッファ、  ３７  スクリーン部、  ３８  ＰＷＭ部
【図１】
2004291343.tif 000003
【図２】
2004291343.tif 000004
【図３】
2004291343.tif 000005
【図４】
2004291343.tif 000006
【図５】
2004291343.tif 000007