(57)【要約】【課題】  １ページを複数のブロックに分割するための処理の負荷を分散させる。【解決手段】  ＰＤＬデータから中間データを生成する処理と、中間データを画像データに変換する処理とを、別々のハードウェア（ＣＰＵ１０６、描画処理Ｈ／Ｗ１０９）で実現する。ＣＰＵ１０６は、複数のバンドに分割された中間データを生成する。描画処理Ｈ／Ｗ１０９は、１つのバンドを複数のブロックに分割し、各ブロックの画像データを生成する。【選択図】  図１
2012254583.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータにより生成された描画データから、ページごとに中間データを生成する中間データ生成手段と、
前記中間データに対して描画処理を行って実際の画像データを生成する描画処理手段と、を有し、
前記中間データ生成手段は、１ページが複数のバンドに分割された中間データを生成し、
前記描画処理手段は、前記複数のバンドに分割された中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成し、
前記中間データ生成手段と、前記描画処理手段は、別々のハードウェアであることを特徴とする画像形成装置。
【請求項２】
前記中間データ生成手段は、ブロックを識別する情報と、当該ブロックに全てが含まれるオブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成し、
前記描画処理手段は、前記描画処理を行うブロックが、前記補足情報で識別されるブロックでない場合、当該補足情報に基づいて、当該補足情報で識別されるブロックに全てが含まれるオブジェクトを読み飛ばすことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記ブロックに全てが含まれるオブジェクトを読み飛ばすための情報は、当該ブロックの次に処理されるブロックの先頭のオブジェクトを指定するアドレスを含むことを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記描画処理手段は、ブロックの中間データに対して描画処理を行った後、当該ブロックの最後のオブジェクトが、隣のブロックに跨って存在する場合、当該隣のブロックを識別する情報と、当該オブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成することを特徴とする請求項２または３に記載の画像形成装置。
【請求項５】
前記描画処理手段は、描画処理を行うブロックに含まれるオブジェクトの横方向のエッジの位置を求め、当該位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割する複数のブロック切り出し処理手段と、
前記複数のバンドに分割された中間データを、前記複数のブロック切り出し処理手段の何れで複数のブロックに分割するのかを判断する振り分け処理手段と、を有し、
前記複数のブロック切り出し処理手段は、前記複数のバンドに分割された中間データであって、相互に異なる中間データを複数のブロックに分割することを、並列に行うことが可能であることを特徴とする請求項１〜４の何れか１項に記載の画像形成装置。
【請求項６】
前記描画処理手段は、描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトでない場合には、当該オブジェクトの横方向のエッジの位置を縦方向の異なる位置において求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割し、
描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトである場合には、当該オブジェクトの横方向のエッジの位置が縦方向において同じであるとし、当該オブジェクトの横方向のエッジの位置を１回だけ求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割することを特徴とする請求項１〜５の何れか１項に記載の画像形成装置。
【請求項７】
前記描画処理手段により生成された、ブロックの画像データに対して圧縮処理を行う圧縮処理手段と、
メインメモリとは別のメモリであって、前記描画処理手段により生成された、ブロックの画像データが個別に格納されるブロックメモリとを有し、
前記描画処理手段は、前記ブロックメモリを利用して、前記ブロックの画像データを生成し、
前記圧縮処理手段は、前記ブロックメモリに格納された、ブロックの画像データに対して圧縮処理を行い、圧縮処理を行った、ブロックの画像データを前記メインメモリに出力することを特徴とする請求項１〜６の何れか１項に記載の画像形成装置。
【請求項８】
前記ブロックメモリは、複数あり、
前記描画処理手段は、前記複数のブロックメモリのうち、前記圧縮処理手段により利用されていないブロックメモリを使用し、
前記圧縮処理手段は、前記複数のブロックメモリのうち、前記描画処理手段により利用されていないブロックメモリを使用することを特徴とする請求項７に記載の画像形成装置。
【請求項９】
前記描画処理手段は、複数のブロックを１つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項８に記載の画像形成装置。
【請求項１０】
前記描画処理手段は、前記複数のバンドに分割された中間データに含まれる矩形のオブジェクト以外のオブジェクトの数が閾値以上である場合には、複数のブロックを１つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項９に記載の画像形成装置。
【請求項１１】
ホストコンピュータにより生成された描画データから、ページごとに中間データを生成する中間データ生成工程と、
前記中間データに対して描画処理を行って実際の画像データを生成する描画処理工程と、を有し、
前記中間データ生成工程は、１ページが複数のバンドに分割された中間データを生成し、
前記描画処理工程は、前記複数のバンドに分割された中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成し、
前記中間データ生成工程と、前記描画処理工程は、別々のハードウェアで実行されることを特徴とする画像形成方法。
【請求項１２】
前記中間データ生成工程は、ブロックを識別する情報と、当該ブロックに全てが含まれるオブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成し、
前記描画処理工程は、前記描画処理を行うブロックが、前記補足情報で識別されるブロックでない場合、当該補足情報に基づいて、当該補足情報で識別されるブロックに全てが含まれるオブジェクトを読み飛ばすことを特徴とする請求項１１に記載の画像形成方法。
【請求項１３】
前記ブロックに全てが含まれるオブジェクトを読み飛ばすための情報は、当該ブロックの次に処理されるブロックの先頭のオブジェクトを指定するアドレスを含むことを特徴とする請求項１２に記載の画像形成方法。
【請求項１４】
前記描画処理工程は、ブロックの中間データに対して描画処理を行った後、当該ブロックの最後のオブジェクトが、隣のブロックに跨って存在する場合、当該隣のブロックを識別する情報と、当該オブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成することを特徴とする請求項１２または１３に記載の画像形成方法。
【請求項１５】
前記描画処理工程は、描画処理を行うブロックに含まれるオブジェクトの横方向のエッジの位置を求め、当該位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割する複数のブロック切り出し処理工程と、
前記複数のバンドに分割された中間データを、前記複数のブロック切り出し処理工程の何れで複数のブロックに分割するのかを判断する振り分け処理工程と、を有し、
前記複数のブロック切り出し処理工程は、前記複数のバンドに分割された中間データであって、相互に異なる中間データを複数のブロックに分割することを、並列に行うことが可能であることを特徴とする請求項１１〜１４の何れか１項に記載の画像形成方法。
【請求項１６】
前記描画処理工程は、描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトでない場合には、当該オブジェクトの横方向のエッジの位置を縦方向の異なる位置において求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割し、
描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトである場合には、当該オブジェクトの横方向のエッジの位置が縦方向において同じであるとし、当該オブジェクトの横方向のエッジの位置を１回だけ求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割することを特徴とする請求項１１〜１５の何れか１項に記載の画像形成方法。
【請求項１７】
前記描画処理工程により生成された、ブロックの画像データに対して圧縮処理を行う圧縮処理工程を有し、
前記描画処理工程は、メインメモリとは別のメモリであって、前記描画処理工程により生成された、ブロックの画像データが個別に格納されるブロックメモリを利用して、前記ブロックの画像データを生成し、
前記圧縮処理工程は、前記ブロックメモリに格納された、ブロックの画像データに対して圧縮処理を行い、圧縮処理を行った、ブロックの画像データを前記メインメモリに出力することを特徴とする請求項１１〜１６の何れか１項に記載の画像形成方法。
【請求項１８】
前記ブロックメモリは、複数あり、
前記描画処理工程は、前記複数のブロックメモリのうち、前記圧縮処理工程により利用されていないブロックメモリを使用し、
前記圧縮処理工程は、前記複数のブロックメモリのうち、前記描画処理工程により利用されていないブロックメモリを使用することを特徴とする請求項１７に記載の画像形成方法。
【請求項１９】
前記描画処理工程は、複数のブロックを１つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項１８に記載の画像形成方法。
【請求項２０】
前記描画処理工程は、前記複数のバンドに分割された中間データに含まれる矩形のオブジェクト以外のオブジェクトの数が閾値以上である場合には、複数のブロックを１つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項１９に記載の画像形成方法。
【請求項２１】
請求項１１〜２０の何れか１項に記載の画像形成方法の各工程をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、画像形成方法、及びコンピュータプログラムに関し、特に、ホストコンピュータで生成された描画データを解釈して、実際の画像データを生成するために用いて好適なものである。
【背景技術】
【０００２】
ホストコンピュータ等から、複数のオブジェクトを含むＰＤＬ（Page Description Language：ページ記述言語）データや電子ドキュメントを受信し、画像の形成を行う画像形成装置がある。画像形成装置でカラーの画像データ（１２００ｄｐｉ／Ａ４／ＲＧＢ）を生成する場合には、４００ＭＢｙｔｅといった大きなメモリ容量が必要になる。一方で、高速に印刷することが求められる。このため、画像の形成のために仮想メモリ等を利用することは好ましくない。そこで、画像を形成する時に使用されるメモリを少なくするために、１ページを複数のブロックの小領域に分割してから画像を形成する技術が知られている。１ページを複数のブロックに分割する場合、当該複数のブロックを管理する必要がある。しかしながら、前述したカラーの画像データ（１２００ｄｐｉ／Ａ４／ＲＧＢ）を、幅方向を６４、高さ方向を６４に分割して、６４×６４個のブロックの小領域に分割すると、１ページを３０００００個以上の領域に分割する必要がある。そのため、１ページを複数のブロックに分割する処理と、複数のブロックを管理する処理に、非常に多くの時間を要する。よって、画像を形成するのに時間がかかるという問題がある。そこで、特許文献１には、ＰＤＬデータや電子ドキュメントに含まれるオブジェクトと各ブロックとの重なりを関連付けて管理する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２２１５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の技術では、画像データを生成する際に、既に、ブロックとオブジェクトとの関連付けが明確になっている。このため、特許文献１に記載の技術では、画像を形成する処理が容易になるという利点はある。しかしながら、特許文献１に記載の技術では、１ページを複数のブロックに分割するための処理の負荷が、一か所（ＣＰＵ）に集中してしまう。よって、画像を形成する処理を十分に速めることが困難であるという課題がある。
本発明は、このような問題点に鑑みてなされたものであり、１ページを複数のブロックに分割するための処理の負荷を分散させることを目的とする。
【課題を解決するための手段】
【０００５】
本発明の画像形成装置は、ホストコンピュータにより生成された描画データから、ページごとに中間データを生成する中間データ生成手段と、前記中間データに対して描画処理を行って実際の画像データを生成する描画処理手段と、を有し、前記中間データ生成手段は、１ページが複数のバンドに分割された中間データを生成し、前記描画処理手段は、前記複数のバンドに分割された中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成し、前記中間データ生成手段と、前記描画処理手段は、別々のハードウェアであることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、１ページが複数のバンドに分割された中間データを生成する手段と、当該中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成する手段とを設ける。そして、これらの手段を別々のハードウェアで構成する。したがって、描画データから中間データを生成して、中間データを複数のブロックに分割し、分割した複数のブロックの描画処理を行って画像データを生成するに際し、１ページを複数のブロックに分割するための処理の負荷を分散させることができる。よって、１ページを複数のブロックに分割する処理負荷を抑えることができ、画像データを高速に形成することが可能になる。
【図面の簡単な説明】
【０００７】
【図１】画像形成装置の構成を示す図である。
【図２】画像形成装置内のモジュール構成を示す図である。
【図３】中間データを複数のブロックに分割する処理の負荷を説明する図である。
【図４】画像形成装置で扱う座標系とブロックＩＤの一例を示す図である。
【図５】ブロック分割補足情報を示す図である。
【図６】命令ＩＤの内容を示す図である。
【図７】中間データ生成部の処理を説明するフローチャートである。
【図８】ページ管理情報とバンド管理情報を示す図である。
【図９】ブロック分割補足情報生成処理を説明するフローチャートである。
【図１０】ブロック分割補足情報生成終了処理を説明するフローチャートである。
【図１１】ブロック分割補足情報生成継続処理を説明するフローチャートである。
【図１２】描画処理Ｈ／Ｗの処理を説明するフローチャートである。
【図１３】変形例１のブロック分割補足情報の作成方法を概念的に示す図である。
【図１４】変形例１の描画処理Ｈ／Ｗの処理を説明するフローチャートである。
【図１５】変形例２の描画処理Ｈ／Ｗの構成を示す図である。
【図１６】矩形オブジェクトを示す図である。
【図１７】変形例３の描画処理Ｈ／Ｗの処理を説明するフローチャートである。
【図１８】バンドを複数のブロックに分割する処理を説明する図である。
【図１９】矩形オブジェクト以外のオブジェクトを示す図である。
【図２０】変形例４のバンド管理情報を示す図である。
【発明を実施するための形態】
【０００８】
以下、図面を用いて本発明を実施するための一形態を説明する。
図１は、画像形成装置の構成の一例を示す図である。
画像形成装置１０１には、画像形成装置１０１を制御するコントローラ１０２が搭載されている。コントローラ１０２には、ＣＰＵ１０６が搭載されている。ＣＰＵ１０６は、制御プログラム等に基づいて、システムバス１０３に接続されている印刷部Ｉ／Ｆ１１３を介し、印刷部（プリンタエンジン）１１４に出力情報としての画像信号を出力する。尚、制御プログラムは、ＲＯＭ１０８内のプログラム用ＲＯＭや、メモリコントローラ１１６を介して接続されている外部メモリ１１７等に記憶される。ＲＯＭ１０８には、プログラム用ＲＯＭの他に、データＲＯＭが含まれている。データＲＯＭは、各種プログラムが動作するために必要な初期値を格納している。
【０００９】
画像形成装置１０１は、ネットワーク１０４等を介してホストコンピュータ等の外部装置と相互に通信可能に接続されている。ＣＰＵ１０６は、外部Ｉ／Ｆ１０５を介して、ホストコンピュータ等から、描画データを受信することが可能である。描画データは、ホストコンピュータにより生成されるデータである。描画データには、画像形成装置１０１で描画される内容が記述されている。具体的に、描画データは、ＰＤＬデータや電子ドキュメント等である。以下の説明では、描画データがＰＤＬデータである場合を例に挙げて説明する。
【００１０】
ＲＡＭ１０７は、ＣＰＵ１０６の主メモリやワークエリア等として機能する。図示しない増設ポートに接続されるオプションＲＡＭにより、画像形成装置１０１のメモリ容量を拡張することができる。尚、ＲＡＭ１０７は、中間データや画像データの展開領域、及びプリンタモード設定情報の格納領域等に用いられる。外部メモリ１１７は、例えば、ハードディスク（ＨＤＤ）又はＩＣカードである。外部メモリ１１７とのアクセスは、メモリコントローラ１１６により制御される。また、コントローラ１０２には、描画処理Ｈ／Ｗ（ハードウェア）１０９が搭載される。尚、本実施形態では、描画処理Ｈ／Ｗ１０９を用いて描画処理を行う場合を例に挙げて説明する。しかしながら、必ずしもこのようにする必要はない。例えば、ＣＰＵ１０６とは別のＣＰＵをコントローラ１０２に搭載し、そのＣＰＵが、描画処理を行うプログラムを実行することにより、描画処理を行ってもよい。
【００１１】
ＣＰＵ１０６は、中間処理プログラムを実行することにより、ＰＤＬデータから中間データを生成してＲＡＭ１０７に格納する。描画処理Ｈ／Ｗ１０９は、中間データを画像データに変換する処理を行う。描画処理Ｈ／Ｗ１０９で生成された複数のブロックの画像データは、ＲＡＭ１０７（メインメモリ）とは別のブロックＲＡＭ１１０（ブロックメモリ）に個別に出力される。１つのブロックＲＡＭ１１０には、１つのブロックの画像データが出力される。ここで、１つのブロックの形状は、バンドの長辺の方向（横方向）を一辺とし、バンドの短辺の方向（縦方向）を他の一辺とする正方形である。ブロックＲＡＭ１１０内の画像データは、圧縮処理Ｈ／Ｗ１１１によって圧縮される。圧縮処理Ｈ／Ｗ１１１によって圧縮された画像データは、ＲＡＭ１０７に格納される。このような構成にするのは、画像形成装置１０１の処理の高速化および低価格化のためである。特に、カラーの画像を形成する場合には、画像データの容量が膨大になる。そこで、システムバス１０３やＲＡＭ１０７が、高速な動作に対応できるものである必要がある。ただし、システムバス１０３やＲＡＭ１０７を高価なものにしてしまうと、画像形成装置１０１が非常に高価なものになってしまう。
【００１２】
これに対し、前述したようにブロックＲＡＭ１１０を用いる構成を採用すると、ブロックＲＡＭ１１０のみを高価なものにすればよい。このため、システムバス１０３やＲＡＭ１０７を高価なものにする場合よりも低価格の画像形成装置を実現できる。しかも、システムバス１０３やＲＡＭ１０７を高価なものにする場合と同程度の速度で高速に処理を行うことができる画像形成装置を実現できる。ブロックＲＡＭ１１０は、描画処理Ｈ／Ｗ１０９と圧縮処理Ｈ／Ｗ１１１とを並列に動作させるために、複数個用意される。
【００１３】
描画処理Ｈ／Ｗ１０９が、１つ目のブロックＲＡＭ１１０を用いて描画処理をして、１つのブロックの画像データを形成し終えると、圧縮処理Ｈ／Ｗ１１１は、そのブロックＲＡＭ１１０を利用して、次のブロックの画像データの圧縮処理を行う。圧縮処理Ｈ／Ｗ１１１は、圧縮処理を行った画像データをＲＡＭ１０７に格納する。その間、描画処理Ｈ／Ｗ１０９は、圧縮処理Ｈ／Ｗ１１１が使用しているブロックＲＡＭ１１０を利用できない。そのため、描画処理Ｈ／Ｗ１０９は複数用意されたブロックＲＡＭ１１０のうち、圧縮処理Ｈ／Ｗ１１１が利用していないブロックＲＡＭ１１０を利用して、次のブロックの画像データの描画処理を行う。これにより、描画処理Ｈ／Ｗ１０９がブロックＲＡＭ１１０の空きを待つ必要がなくなる。よって、描画処理Ｈ／Ｗ１０９と圧縮処理Ｈ／Ｗ１１１とを並列に動作させることができる。このため、画像データの形成を高速に行うことができる。圧縮されてＲＡＭ１０７に格納された画像データは、伸長処理Ｈ／Ｗ１１２によって伸長処理される。伸長処理Ｈ／Ｗ１１２によって伸長処理された画像データは、印刷部Ｉ／Ｆ１１３を介して、印刷部（プリンタエンジン）１１４に出力される。
【００１４】
外部メモリ１１７は、オプションとして画像形成装置１０１に接続される。外部メモリ１１７は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。外部メモリ１１７は、１個に限らない。内蔵フォントに追加されるオプションフォントや、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した複数の外部メモリを画像形成装置１０１に接続できるようにしてもよい。
操作部１１５は、ユーザが操作するためのスイッチおよびＬＥＤ表示器等が配された操作パネルを有する。画像形成装置１０１は、図示しないＮＶＲＡＭを有していてもよい。このＮＶＲＡＭに、操作部１１５の操作により設定されるプリンタモード設定情報等を記憶するようにしてもよい。
【００１５】
図２は、画像形成装置１０１内のモジュール構成の一例を示す図である。尚、図２において、ハードウェア以外のモジュールが動作するためのプログラムは、ＲＯＭ１０８に格納されている。このプログラムは、画像形成装置１０１の起動時にＲＡＭ１０７に展開され、ＣＰＵ１０６により実行される。
図２において、ＰＤＬデータ受信部２０１は、外部Ｉ／Ｆ１０５を介して、ホストコンピュータからのＰＤＬデータを受信する。ＰＤＬデータ受信部２０１は、受信したＰＤＬデータをＰＤＬ処理部２０２へ渡す。
【００１６】
ＰＤＬ処理部２０２は、ＰＤＬデータを解釈し、その結果を中間データ生成部２０３に渡す。中間データ生成部２０３は、ＰＤＬ処理部２０２から渡された情報を元に、複数のバンドに分割された状態の中間データ２０４を作成し、ＲＡＭ１０７に格納する。また、中間データ生成部２０３は、描画処理Ｈ／Ｗ１０９が描画処理を行うときに使用されるブロック分割補足情報２０５を生成し、中間データ２０４と同様にＲＡＭ１０７に格納する。
【００１７】
描画処理Ｈ／Ｗ１０９は、中間データ２０４とブロック分割補足情報２０５とをＲＡＭ１０７から読み出す。描画処理Ｈ／Ｗ１０９は、中間データ２０４とブロック分割補足情報２０５とに基づいて、各ブロックの画像データ２０６を生成し、ブロックＲＡＭ１１０に個別に格納する。尚、以下の説明では、ブロック分割補足情報２０５が中間データとして、中間データ２０４に含まれる場合を例に挙げて説明する。
圧縮処理Ｈ／Ｗ１０９は、ブロックの画像データ２０６をブロックＲＡＭ１１０から読み出して圧縮し、圧縮データ２０７を生成する。圧縮処理Ｈ／Ｗ１０９は、圧縮データ２０７をＲＡＭ１０７に格納する。
【００１８】
伸長処理Ｈ／Ｗ１１２は、圧縮データ２０７をＲＡＭ１０７から読み出す。伸長処理Ｈ／Ｗ１１２は、圧縮データ２０７を伸長し、伸長した画像データを印刷処理Ｉ／Ｆ１１３に渡す。印刷処理Ｉ／Ｆ１１３は、伸長処理Ｈ／Ｗ１１２から渡された画像データを印刷部１１４に渡す。印刷部１１４は、印刷処理Ｉ／Ｆ１１３から渡された画像データに基づく画像を実際の用紙に形成する。
【００１９】
ここで、図２に示す例では、中間データをバンド単位で分割する処理は、ＣＰＵ１０６により行われる。バンドに分割された中間データ２０４を複数のブロックに分割する処理は、描画処理Ｈ／Ｗ１０９により行われる。そのため、中間データを複数のブロックに分割する処理の負荷が、ＣＰＵ１０６と描画処理Ｈ／Ｗ１０９とに分散される。これにより、画像を形成する処理を高速にすることができる。描画処理Ｈ／Ｗ１０９は、中間データ生成部２０３により生成されたブロック分割補足情報２０５を使用して処理を行う。これにより、描画処理Ｈ／Ｗ１０９が、バンドに分割された中間データ２０４を複数のブロックに分割する処理の負荷を下げることができる。
【００２０】
図３は、中間データを複数のブロックに分割する処理の負荷の一例を説明する図である。図３の上の図が従来技術による処理を示し、図３の下の図が本実施形態による処理を示す。
従来技術では、１ページ目のブロック分割処理３０１の時間が長い。このため、２ページ目のブロック分割処理３０４が、本実施形態の中間データ生成処理３０５よりも遅れて開始される。
【００２１】
本実施形態では、従来技術におけるブロック分割処理３０１を、バンド分割処理３０２とブロック分割処理３０３とに分ける。すなわち、ＣＰＵ１０６がバンド分割処理３０２を行い、描画処理Ｈ／Ｗ１０９がブロック分割処理３０３を行う。このように、従来技術におけるブロック分割処理３０１を、ＣＰＵ１０６と描画処理Ｈ／Ｗ１０９とに分散する。これにより、最終的に、２ページ目の描画処理３０７が終了するタイミングが、従来技術の描画処理３０６が終了するタイミングよりも早くなる。その結果、本実施形態の方が、従来技術よりも、画像を形成するための時間を時間Ｔだけ短くすることができる。このように、本実施形態の方が、従来技術よりも、画像を高速に形成することができる。
【００２２】
図４は、画像形成装置１０１で扱う座標系とブロックＩＤの一例を示す図である。
図４に示すように、本実施形態では、ページの左上を座標の原点とし、横軸をＸ軸、縦軸をＹ軸とする。図に向かって右の方向をＸ軸の正の方向とする。図に向かって下の方向をＹ軸の正の方向とする。図４に示すように、本実施形態では、バンドのＸ軸方向（横方向）の長さは、ページのＸ軸方向の全体の長さと一致する。すなわち、バンドは、ページをＹ軸方向において分割したものである。図４に示す例では、バンドは、ページをＹ軸方向において等間隔に６つに分割したものである。ブロックのＹ軸方向の長さは、バンドのＹ軸方向（縦方向）の全体の長さと一致する。すなわち、ブロックは、バンドをＸ軸方向において分割したものである。図４に示す例では、ブロックは、バンドをＸ軸方向において等間隔に５つに分割したものである（ブロック４０１ａ〜４０１ｅを参照）。
【００２３】
画像形成装置１０１が、それぞれのブロック４０１ａ〜４０１ｅを認識するために、それぞれのブロック４０１ａ〜４０１ｅには、ブロックＩＤが付加される。ブロックＩＤは、バンドの左から１、２、３、４、５というように昇順に付けられるものとする（図４のブロック４０１ａ〜４０１ｅの中に示されている数字を参照）。また、本実施形態では、ブロックＩＤの小さいブロック４０１から順番に処理されるものとする。
【００２４】
図５は、ブロック分割補足情報２０５の一例を示す図である。前述したように、ブロック分割補足情報２０５は、バンドに分割された中間データ２０４に含まれる。
「あ」および「い」のオブジェクト５０１は、ブロックＩＤが「１」以外のブロックでは利用されない。よって、中間データ生成部２０３は、ブロック分割補足情報２０５の中間データ５０２を、バンドに分割された中間データ２０４の中に生成する。ブロック分割補足情報２０５の中間データ５０２は、描画処理Ｈ／Ｗ１０９における処理対象のブロックが、ブロックＩＤが「１」以外のブロックであるときには、オブジェクト５０１が読み飛ばされるようにするための情報である。命令ＩＤ５０３は、中間データが、ブロック分割補足情報２０５の中間データ５０２であることを示す命令ＩＤである。図６は、命令ＩＤの内容の一例を示す図である。図６に示すように、命令ＩＤには、ブロック分割補足情報を示す命令ＩＤの他に、バンドの終了を示す命令ＩＤと、オブジェクトの描画処理を示す命令ＩＤとが存在する。
【００２５】
描画処理Ｈ／Ｗ１０９は、バンドに分割された中間データ２０４に含まれるブロック分割補足情報２０５の中間データ５０２から、命令ＩＤ５０３を読み出す。これにより、描画処理Ｈ／Ｗ１０９は、ブロック分割補足情報２０５の中間データ５０２が、バンドに分割された中間データ２０４の中にあることを認識する。描画処理Ｈ／Ｗ１０９は、現在処理中のブロックのブロックＩＤが、ブロックＩＤ５０４に示されている値でない場合、アドレス５０５に示されているオブジェクト５０７まで、オブジェクトの読み飛ばしを行う。この処理によって描画処理Ｈ／Ｗ１０９は、中間データが複数のバンドに分割された状態であっても、現在処理中のブロックに含まれないオブジェクトの処理を行う必要がなくなる。このため、バンドを複数のブロックに分割する処理を効率的に行うことができる。
【００２６】
また、中間データ生成部２０３は、相互に隣接する複数のブロックに跨るオブジェクトである「う」のオブジェクト５０７に関しては、ブロックＩＤが「１」のブロックに属するようにし、分割処理等を実施しない。つまり、中間データ生成部２０３は、相互に隣接する２つのブロックに跨るオブジェクトを複数のブロックに分割しない。このため、複数のブロックに分割した中間データを生成するよりも大幅に処理を高速化することができる。
【００２７】
次に、図７のフローチャートを参照しながら、中間データ生成部２０３の詳細な処理の一例を説明する。図７のフローチャートに含まれる処理は全て中間データ生成部２０３の処理であり、そのプログラムは、ＲＯＭ１０８からＲＡＭ１０７に展開されてＣＰＵ１０６によって実行される。
まず、ステップＳ７０１において、中間データ生成部２０３は、全てのバンド管理情報を初期化する。図８は、ページ管理情報とバンド管理情報の一例を示す図である。バンド管理情報は、アドレス８０２〜８０４とブロックＩＤ８０５とを含む。アドレス８０２は、バンドに分割された中間データ２０４の先頭のアドレスである。アドレス８０３は、空き領域（次の中間データの作成のための空きメモリ）の先頭のアドレスである。アドレス８０４は、バンドに分割された中間データ２０４に含まれる「生成中のブロック分割補足情報」のアドレスである。生成中のブロック分割補足情報がない場合には、ブロック分割補足情報の中間データが生成されることがないことを示すアドレス等（本実施形態では０ｘ００００００００）を、アドレス８０４に設定する。これにより、ブロック分割補足情報が生成中でないことが表される。
【００２８】
ブロックＩＤ８０５は、生成中のブロック分割補足情報が、どのブロックＩＤ用のものであるかを示す。生成中のブロック分割補足情報がない場合には、ブロックＩＤ８０５として、そのことを示すＩＤ（例えば０ｘ０）が設定される。生成中のブロック分割補足情報が、全てのブロックに該当する場合には、ブロックＩＤ８０５として、そのことを示すＩＤ（０ｘＦＦＦＦＦＦＦＦ）が設定される。
以上の情報を含むバンド管理情報は、１ページ内に含まれる複数のバンドのそれぞれに必要となる。このため、ページ管理情報８０１によって、１ページ内の複数のバンド管理情報が管理される。
【００２９】
本実施形態では、次のようにしてバンド管理情報を初期化する。
まず、中間データ生成部２０３は、ページ管理情報８０１及びバンド管理情報のためのメモリをＲＡＭ１０７に確保する。次に、中間データ生成部２０３は、それぞれのバンドの中間データ２０４のための空きメモリをＲＡＭ１０７から取得する。そして、中間データ生成部２０３は、その空きメモリの先頭のアドレスを、バンドに分割された中間データ２０４の先頭のアドレス８０２及び空き領域の先頭のアドレス８０３として設定する。また、中間データ生成部２０３は、生成中のブロック分割補足情報のアドレス８０４として、ブロック分割補足情報が生成中でないことを示す０ｘ００００００００に設定する。また、ブロック分割補足情報が生成中でないので、前述したように、中間データ生成部２０３は、ブロックＩＤ８０５として０ｘ０に設定する。
【００３０】
中間データ生成部２０３は、以上のようにしてバンド管理情報の初期化が終了すると、実際の中間データの生成を開始する。
図７において、中間データ生成部２０３は、ＰＤＬ処理部２０２から受け取った情報から、１オブジェクトの情報を取得する（ステップＳ７０２）。次に、中間データ生成部２０３は、１ページを複数のバンドに分割する（ステップＳ７０３）。
中間データ生成部２０３は、１ページを複数のバンドに分割することによって、ステップＳ７０２で取得したオブジェクトに関連するバンドに対して、ステップＳ７０４〜Ｓ７１２の処理を行う。その処理の中で、中間データ生成部２０３は、バンドに分割された中間データ２０４を生成する。さらに、中間データ生成部２０３は、描画処理Ｈ／Ｗ１０９で行われる処理（バンドを複数のブロックに分割する処理）を高速化するためのブロック分割補足情報２０５の中間データ５０２を生成する。
【００３１】
中間データ生成部２０３は、複数のバンドに分割された後に、ステップＳ７０２で取得したオブジェクトの「左側のエッジ（左端）のＸ座標と右側のエッジ（右端）のＸ座標」を取得する（ステップＳ７０４）。左端のエッジおよび右端のエッジは、オブジェクトを外接矩形で囲んだときの、当該外接矩形の左側のエッジおよび右側のエッジである。中間データ生成部２０３は、左側のエッジのＸ座標と右側のエッジのＸ座標とが、同一のブロック内に収まっているか否かを判断する（ステップＳ７０５）。この判断の結果、左側のエッジのＸ座標と右側のエッジのＸ座標とが、同一のブロック内に収まっていない場合、中間データ生成部２０３は、ブロック分割補足情報を生成中であるか否かを判断する（ステップＳ７０６）。ブロック分割補足情報を生成中であるか否かは、バンド管理情報に含まれるアドレス８０４が０ｘ００００００００であるか否かで判断することができる。
【００３２】
この判断の結果、ブロック分割補足情報を生成中でない場合、中間データ生成部２０３は、ステップＳ７０２で取得したオブジェクトを描画する中間データの生成のみを行う（ステップＳ７１１）。このステップＳ７１１の処理を具体的に説明すると、まず、中間データ生成部２０３は、バンド管理情報に含まれるアドレス８０３（空き領域の先頭アドレス）から、オブジェクトを描画する中間データを生成するのに必要なメモリを確保する。これにより、空き領域の先頭アドレスが変わるので、中間データ生成部２０３は、アドレス８０３を更新する。その後、中間データ生成部２０３は、確保したメモリ領域に、オブジェクトを描画する中間データを生成する。
【００３３】
ステップＳ７０６の判断の結果、ブロック分割補足情報を生成中の場合、ブロック分割補足情報を確定することができる。すなわち、描画処理Ｈ／Ｗ１０９は、ステップＳ７０２で取得したオブジェクトの１つ前のオブジェクトまで読み飛ばすことができる。そこで、中間データ生成部２０３は、ブロック分割補足情報生成終了処理を行う（ステップＳ７０７）。ブロック分割補足情報生成終了処理の詳細については後述する（図１０）。そして、中間データ生成部２０３は、ステップＳ７０２で取得したオブジェクトを描画する中間データを生成する（ステップＳ７１１）。
【００３４】
ステップＳ７０５の判断の結果、左側のエッジのＸ座標と右側のエッジのＸ座標とが、同一のブロック内に収まっている場合、中間データ生成部２０３は、ブロック分割補足情報を生成中であるか否かを判断する（ステップＳ７０９）。この判断の結果、ブロック分割補足情報を生成中でない場合、中間データ生成部２０３は、ブロック分割補足情報生成開始処理を行う（ステップＳ７１０）。ブロック分割補足情報生成開始処理の詳細については後述する（図９を参照）。一方、ブロック分割補足情報を生成中の場合、中間データ生成部２０３は、ブロック分割補足情報生成継続処理を行う（ステップＳ７０９）。ブロック分割補足情報生成継続処理の詳細については後述する。
ブロック分割補足情報生成開始処理又はブロック分割補足情報生成継続処理が終了した後、中間データ生成部２０３は、ステップＳ７０２で取得したオブジェクトを描画する中間データを生成する（ステップＳ７１１）。
【００３５】
そして、中間データ生成部２０３は、ステップＳ７０２で取得したオブジェクトに関連するバンドの処理が全て終了したか否かを判断する（ステップＳ７１２）。この判断の結果、ステップＳ７０２で取得したオブジェクトに関連するバンドの処理が全て終了していない場合には、未処理のバンドについてステップＳ７０４〜Ｓ７１１の処理を行う。そして、ステップＳ７０２で取得したオブジェクトに関連するバンドの処理が全て終了するまで、ステップＳ７０４〜Ｓ７１２の処理を繰り返し行う。
【００３６】
ステップＳ７０２で取得したオブジェクトに関連するバンドの処理が全て終了すると、中間データ生成部２０３は、１ページ内に含まれる全てのオブジェクトの処理が終了したか否かを判断する（ステップＳ７１３）。この判断の結果、１ページ内に含まれる全てのオブジェクトの処理が終了していない場合、未処理のオブジェクトについてステップＳ７０２〜ステップＳ７１２の処理を行う。そして、１ページ内に含まれる全てのオブジェクトの処理が終了するまで、ステップＳ７０２〜Ｓ７１３の処理を繰り返し行う。
【００３７】
１ページ内に含まれる全てのオブジェクトの処理が終了すると、中間データ生成部２０３は、全てのバンドの中間データに対して、ステップＳ７１４〜Ｓ７１６の処理を行う。まず、ステップＳ７１４において、中間データ生成部２０３は、ブロック分割補足情報を生成中であるか否かを判断する。この判断を行うのは、ブロック分割補足情報を生成中のまま、ステップＳ７１３までの処理が終わっている場合があるためである。この判断の結果、ブロック分割補足情報を生成中の場合、中間データ生成部２０３は、ブロック分割補足情報生成終了処理を行う（ステップＳ７１５）。そして、中間データ生成部２０３は、中間データの最後に、バンドの終了を示す中間データを生成する（ステップＳ７１６）。
以上のようにして、バンドに分割された中間データ２０４が生成される。
【００３８】
次に、図９〜図１１のフローチャートを参照しながら、図７のステップＳ７０７、Ｓ７０９、Ｓ７１０、Ｓ７１５の処理の詳細を説明する。
図９は、図７のステップＳ７１０のブロック分割補足情報生成処理の詳細を説明するフローチャートである。
まず、中間データ生成部２０３は、バンド管理情報のアドレス８０３（空き領域の先頭のアドレス）から、ブロック分割補足情報の中間データを作成するのに必要なメモリ領域を確保する。これにより、空き領域の先頭のアドレスが変わるので、中間データ生成部２０３は、アドレス８０３を更新する（ステップＳ９０１）。
【００３９】
次に、中間データ生成部２０３は、バンド管理情報のアドレス８０４（生成中のブロック分割補足情報のアドレス）を、ステップＳ９０１で確保したメモリ領域のアドレスに設定する（ステップＳ９０２）。
次に、中間データ生成部２０３は、ステップＳ９０１で確保したメモリ領域に、ブロック分割補足情報を示す命令ＩＤおよびブロックＩＤを書き込む（ステップＳ９０３）。このブロックＩＤは、図７のステップＳ７０５において、ステップＳ７０２で取得したオブジェクトの左側のエッジのＸ座標と右側のエッジのＸ座標とが収まっていると判定されたブロックのブロックＩＤである。
【００４０】
次に、中間データ生成部２０３は、ステップＳ９０３で書き込んだものと同一のブロックＩＤを、バンド管理情報内のブロックＩＤ８０５にも書き込む（ステップＳ９０４）。バンド管理情報にもブロックＩＤを記載するのは、処理の簡易化のためである。すなわち、生成中のブロック分割補足情報が、どのブロックＩＤ用のものであるのかを確認するために、中間データ生成部２０３が、ブロック分割補足情報の中間データ内のブロックＩＤまで見に行く必要をなくすためである。そして、図７のフローチャートに戻る。
【００４１】
図１０は、図７のステップＳ７０７、Ｓ７１５のブロック分割補足情報生成終了処理の詳細を説明するフローチャートである。
中間データ生成部２０３は、バンド管理情報から、アドレス８０４（生成中のブロック分割補足情報のアドレス）を取得する（ステップＳ１００１）。
次に、中間データ生成部２０３は、ブロック分割補足情報の中間データに含まれるアドレス５０５を、バンド管理情報のアドレス８０３（空き領域の先頭のアドレス）に書き換える（ステップＳ１００２）。その後、中間データ生成部２０３は、バンド管理情報に含まれるアドレス８０４（生成中のブロック分割補足情報のアドレス）を、ブロック分割補足情報を生成中でないことを示す値（０ｘ００００００００）に書き換える（ステップＳ１００３）。このようにして書き換えられた値により、ブロック分割補足情報を生成中でないことが示される。そして、図７のフローチャートに戻る。
【００４２】
図１１は、図７のステップＳ７０９のブロック分割補足情報生成継続処理の詳細を説明するフローチャートである。
まず、中間データ生成部２０３は、バンド管理情報から、ブロックＩＤ８０５（生成中のブロック分割補足情報に対応するブロックＩＤ）を取得する。そして、中間データ生成部２０３は、現在処理しているオブジェクトが、取得したブロックＩＤ８０５が示すブロック内のものであるか否かを判断する（ステップＳ１１０１）。この判断の結果、現在処理しているオブジェクトが、ブロックＩＤ８０５が示すブロック内のものである場合には、図７のフローチャートに戻る。
【００４３】
一方、現在処理しているオブジェクトが、ブロックＩＤ８０５が示すブロック内のものでない場合、中間データ生成部２０３は、生成中のブロック分割補足情報の中間データについて、ブロック分割補足情報終了処理を行う（ステップＳ１１０２）。
次に、中間データ生成部２０３は、現在処理中のオブジェクトのためのブロック分割補足情報開始処理を行う（ステップＳ１１０３）。そして、図７のフローチャートに戻る。
ステップＳ１１０２、Ｓ１１０３の処理は、それぞれ図９、図１０の処理と同じである。
以上のようにして、中間データ生成部２０３によって、描画処理Ｈ／Ｗ１０９の入力データとして、バンドを複数のブロックに分割する際の補足情報の一例であるブロック分割補足情報２０５を含む「バンドに分割された中間データ２０４」が生成される。
【００４４】
次に、図１２のフローチャートを参照しながら、中間データ生成部２０３が生成した「バンドに分割された中間データ２０４」を描画処理Ｈ／Ｗ１０９が複数のブロックに分割しながら、画像データを生成する処理の一例を説明する。図１２のフローチャートは、描画処理Ｈ／Ｗ１０９の１バンドの処理の流れを示している。よって、１ページ分の画像データを生成するには、１ページに含まれるバンド数分だけ、図１２のフローチャートを繰り返し実行する必要がある。
【００４５】
描画処理Ｈ／Ｗ１０９は、変数ｉを「１」に初期化する（ステップＳ１２０１）。この「ｉ」は、描画処理するブロックＩＤを示すものである。
次に、描画処理Ｈ／Ｗ１０９は、処理対象のバンドに含まれる全てのブロックの画像データの生成が終了したか否かを判断する（ステップＳ１２０２）。この判断の結果、全てのブロックの画像データの生成が終了した場合には、図１２のフローチャートによる処理を終了する。この判断は、例えば、描画処理Ｈ／Ｗ１０９が、バンドに含まれるブロックの数を保持しておき、その数と変数ｉとを比較することにより行うことができる。変数ｉは、後述するステップＳ１２１９でインクリメントされる。このため、描画処理Ｈ／Ｗ１０９は、変数ｉが、処理対象のバンドに含まれるブロックの数以上になったら、バンドに含まれる全てのブロックの画像データを生成したと判断する。
【００４６】
一方、全てのブロックの画像データの生成が終了していない場合、描画処理Ｈ／Ｗ１０９は、変数ｉで示される処理対象のブロックの「左側のエッジ（左端）と右側のエッジ（右端）のＸ座標」を求める（ステップＳ１２０３）。これらのＸ座標は、後述するステップＳ１２１２、Ｓ１２１５で、オブジェクトがブロックからはみ出るか否かを判断する際に利用される。
次に、描画処理Ｈ／Ｗ１０９は、バンド管理情報に含まれるアドレス８０２（バンドに分割された中間データ２０４の先頭のアドレス）と、空いているブロックＲＡＭ１１０（ブロックメモリ）とを取得する（ステップＳ１２０４）。
【００４７】
描画処理Ｈ／Ｗ１０９は、ステップＳ１２０４で取得したアドレス８０２（バンドに分割された中間データ２０４の先頭のアドレス）から順番に、バンドに分割された中間データ２０４を解釈することによって、ステップＳ１２０５以降の処理を行う。
まず、描画処理Ｈ／Ｗ１０９は、バンドに分割された中間データ２０４から読み出した命令ＩＤが、バンドの終了を示す命令ＩＤ（「０」）であるか否かを判断する。この判断の結果、バンドに分割された中間データ２０４から読み出した命令ＩＤが、バンドの終了を示す命令ＩＤであれば、１ブロックの画像データの生成が終了したことになる。そこで、描画処理Ｈ／Ｗ１０９は、１ブロックの画像データの生成が終了したことを圧縮処理Ｈ／Ｗ１１１に終了を通知する（ステップＳ１２１９）。また、描画処理Ｈ／Ｗ１０９は、変数ｉをインクリメントする（ステップＳ１２１９）。そして、ステップＳ１２０２に戻る。
【００４８】
一方、バンドに分割された中間データ２０４から読み出した命令ＩＤが、バンドの終了を示す命令ＩＤでない場合、描画Ｈ／Ｗ１０９は、次の処理を行う。すなわち、描画Ｈ／Ｗ１０９は、バンドに分割された中間データ２０４から読み出した命令ＩＤが、ブロック分割補足情報を示す命令ＩＤ（「２」）であるか否かを判断する（ステップＳ１２０６）。この判断の結果、バンドに分割された中間データ２０４から読み出した命令ＩＤが、ブロック分割補足情報を示す命令ＩＤである場合、描画Ｈ／Ｗ１０９は、次の処理を行う。すなわち、描画Ｈ／Ｗ１０９は、ブロック分割補足情報２０５の中間データ５０２から、ブロックＩＤ５０４を取得する（ステップＳ１２０７）。
【００４９】
次に、描画処理Ｈ／Ｗ１０９は、ステップＳ１２０７で取得したブロックＩＤが、現在処理中のブロックＩＤ（ｉ）、すなわち、変数ｉで示されるブロックのブロックＩＤであるか否かを判断する（ステップＳ１２０８）。この判断の結果、ステップＳ１２０７で取得したブロックＩＤが、現在処理中のブロックＩＤ（ｉ）でない場合、描画処理Ｈ／Ｗ１０９は、ブロック分割補足情報２０５の中間データ５０２から、アドレス５０５を取得する（ステップＳ１２０９）。
【００５０】
次に、描画処理Ｈ／Ｗ１０９は、アドレス５０５に示されているオブジェクトを、処理する中間データとして設定する（ステップＳ１２１０）。この処理により、描画処理Ｈ／Ｗ１０９は、前述したオブジェクトの読み飛ばしを行うことができる。よって、描画処理Ｈ／Ｗ１０９は、バンドの中間データからのブロックへの分割を効率良く行うことができる。
ステップＳ１２０６において、ブロック分割補足情報２０５の中間データ５０２の命令ＩＤが、ブロック分割補足情報を示す命令ＩＤでないと判定された場合には、ステップＳ１２１１に進む。また、ステップＳ１２０８において、ステップＳ１２０７で取得したブロックＩＤが、現在処理中のブロックＩＤ（ｉ）であると判定された場合にも、ステップＳ１２１１に進む。そして、描画処理Ｈ／Ｗ１０９は、オブジェクトをブロックに分割しながら描画処理し、ブロックの単位で画像データを生成する。
【００５１】
具体的に説明すると、まず、描画処理Ｈ／Ｗ１０９は、現在処理中のブロックに含まれる最も左側のオブジェクトの左側のエッジ（左端）のＸ座標を求める（ステップＳ１２１１）。
次に、描画処理Ｈ／Ｗ１０９は、ステップＳ１２１１で求めた「オブジェクトの左側のエッジのＸ座標」が、ステップＳ１２０３で求めた「現在処理中のブロックの左側のエッジのＸ座標」よりも小さいか否かを判断する（ステップＳ１２１２）。この判断の結果、オブジェクトの左側のエッジのＸ座標が、現在処理中のブロックの左側のエッジのＸ座標よりも小さい場合、描画処理Ｈ／Ｗ１０９は、オブジェクトの左側のエッジのＸ座標を、ブロックの左側のＸ座標にする（ステップＳ１２１３）。
【００５２】
同様に、描画処理Ｈ／Ｗ１０９は、現在処理中のブロックに含まれる最も右側のオブジェクトの右側のエッジ（右端）のＸ座標を求める（ステップＳ１２１４）。そして、描画処理Ｈ／Ｗ１０９は、ステップＳ１２１４で求めた「オブジェクトの右側のエッジのＸ座標」が、ステップＳ１２０３で求めた「現在処理中のブロックの右側のエッジのＸ座標」よりも大きいか否かを判断する（ステップＳ１２１５）。この判断の結果、オブジェクトの右側のエッジのＸ座標が、現在処理中のブロックの右側のエッジのＸ座標よりも大きい場合、描画処理Ｈ／Ｗ１０９は、オブジェクトの右側のエッジのＸ座標を、ブロックの右側のＸ座標にする（ステップＳ１２１６）。
以上の処理により、現在処理しているブロック以外の部分（オブジェクト）が削除され、バンドが複数のブロックに分割される。描画Ｈ／Ｗ１０９は、以上のようにして求めたブロックの左側のエッジのＸ座標と右側のエッジのＸ座標との間の画像を描画処理する（ステップＳ１２１７）。
【００５３】
そして、描画処理Ｈ／Ｗ１０９は、オブジェクトの高さ分（ライン分）の処理が終了したか否かを判定する（ステップＳ１２１８）。この判定の結果、オブジェクトの高さ分の処理が終了していない場合には、ステップＳ１２１１の処理に戻る。そして、オブジェクトの高さ分の処理が終了するまで、ステップＳ１２１７〜Ｓ１２１８の処理を繰り返し行う。すなわち、描画処理Ｈ／Ｗ１０９は、オブジェクトの高さ方向（縦方向）の異なる位置で、オブジェクトの左右のエッジのＸ座標（横方向の位置）を求め、そのＸ座標に基づいて、バンドを複数のブロックに分割し、ブロックの単位で描画処理を行う。そして、オブジェクトの高さ分の処理が終了すると、現在処理しているブロックに該当するオブジェクトの描画処理が完了する。以上の処理フローにより、描画処理Ｈ／Ｗ１０９は、ブロック分割補足情報２０５を含む「バンドに分割された中間データ２０４」を読み出し、当該バンドを効率的に複数のブロックに分割しながら描画処理を実行することができる。
【００５４】
以上のように本実施形態では、ＰＤＬデータから中間データを生成する処理と、中間データを画像データに変換する処理とを、別々のハードウェア（ＣＰＵ１０６、描画処理Ｈ／Ｗ１０９）で実現する。ＣＰＵ１０６は、複数のバンドに分割された中間データを生成する。描画処理Ｈ／Ｗ１０９は、１つのバンドを（正方形の）複数のブロックに分割し、各ブロックの画像データを生成する。ＣＰＵ１０６は、ブロックを識別するブロックＩＤ５０４と、次に処理されるブロックの先頭のオブジェクトを指定するアドレス５０５とを含むブロック分割補足情報２０５の中間データ５０２を、バンドに分割された中間データの２０４の中に生成する。描画処理Ｈ／Ｗ１０９は、処理対象のブロックが、ブロックＩＤ５０４で示されるブロックでない場合、ブロック分割補足情報２０５の中間データ５０２に基づき、当該ブロック内のオブジェクトを読み飛ばす。そして、描画処理Ｈ／Ｗ１０９は、次に処理されるブロックの先頭のオブジェクトの描画処理を行う。
したがって、１ページを複数のブロックに分割して、ＰＤＬデータや電子データから、画像データを形成する際に、複数のブロックに分割する処理の負荷を分散することができる。また、描画処理において、バンドを複数のブロックに分割する際のオブジェクトの過剰な読み出しを抑制することができる。よって、高速に画像を形成することが可能になる。
【００５５】
（変形例１）
オブジェクトの描画処理を実行した後に、描画処理Ｈ／Ｗ１０９が、オブジェクトを描画する中間データから、ブロック分割補足情報２０５を含む中間データに中間データを変換して、バンドを複数のブロックに分割する処理を効率化することができる。
図１３は、オブジェクトの描画処理を実行した後に、オブジェクトを描画する中間データから、ブロック分割補足情報２０５を含む中間データに中間データを変換する様子の一例を概念的に示す図である。具体的に図１３（ａ）は、中間データ生成部２０３でブロック分割補足情報を設定することができないオブジェクトの一例を示す図である。また、図１３（ｂ）は、描画処理Ｈ／Ｗ１０９でブロック分割補足情報を設定する前（左側の図）と後（右側の図）の中間データの一例を示す図である。
【００５６】
図１３において、ブロックＩＤが「２」のブロックの最後のオブジェクト（「あ」の文字）１３０１は、隣の（次の）ブロック（ブロックＩＤが「３」のブロック）に跨って存在している。このため、中間データ生成部２０３では、このオブジェクト１３０１に対してブロック分割補足情報をつけられない。そこで、描画処理Ｈ／Ｗ１０９が、ブロック１３０２の描画処理が終了した時点で、オブジェクトを描画する中間データ１３０４を、ブロック分割補足情報の中間データ１３０５を含む中間データに書き換える。図１３（ｂ）に示す例では、描画処理Ｈ／Ｗ１０９は、ブロックＩＤ１３０６として「３」を設定する。このようにしておけば、描画処理Ｈ／Ｗ１０９は、ブロックＩＤが４以降のブロック１３０３に関しては、オブジェクトを描画する中間データ１３０４の処理を省略することができる。これにより、ブロックに分割する処理を効率化することができる。
【００５７】
次に、図１４のフローチャートを参照しながら、本変形例における描画処理Ｈ／Ｗ１０９の処理の一例を説明する。図１４のフローチャートは、図１２のステップＳ１２１１〜Ｓ１２１８の代わりに実施されるものである。
まず、描画処理Ｈ／Ｗ１０９は、Ｆｌａｇの値を「０」に初期化する（ステップＳ１４０１）。
次に、描画処理Ｈ／Ｗ１０９は、現在処理中のブロックに含まれる最も左側のオブジェクトの左側のエッジ（左端）のＸ座標を求める（ステップＳ１４０２）。
次に、描画処理Ｈ／Ｗ１０９は、ステップＳ１４０２で求めた「オブジェクトの左側のエッジのＸ座標」が、ステップＳ１２０３で求めた「現在処理中のブロックの左側のエッジのＸ座標」よりも小さいか否かを判断する（ステップＳ１４０３）。この判断の結果、オブジェクトの左側のエッジのＸ座標が、現在処理中のブロックの左側のエッジのＸ座標よりも小さい場合、描画処理Ｈ／Ｗ１０９は、オブジェクトの左側のエッジのＸ座標を、ブロックの左側のＸ座標にする（ステップＳ１４０４）。
【００５８】
同様に、描画処理Ｈ／Ｗ１０９は、現在処理中のブロックに含まれる最も右側のオブジェクトの右側のエッジ（右端）のＸ座標を求める（ステップＳ１４０５）。そして、描画処理Ｈ／Ｗ１０９は、ステップＳ１４０５で求めた「オブジェクトの右側のエッジのＸ座標」が、ステップＳ１２０３で求めた「現在処理中のブロックの右側のエッジのＸ座標」よりも大きいか否かを判断する（ステップＳ１４０６）。この判断の結果、オブジェクトの右側のエッジのＸ座標が、現在処理中のブロックの右側のエッジのＸ座標よりも大きい場合、描画処理Ｈ／Ｗ１０９は、オブジェクトの右側のエッジのＸ座標を、ブロックの右側のＸ座標にする（ステップＳ１４０７）。そして、描画処理Ｈ／Ｗ１０９は、Ｆｌａｇの値を「１」に設定する（ステップＳ１４０８）。ステップＳ１４０６において、オブジェクトの右側のエッジのＸ座標が、現在処理中のブロックの右側のエッジのＸ座標よりも大きくない場合には、ステップＳ１４０７、Ｓ１４０８の処理を省略してステップＳ１４０９に進む。
【００５９】
描画Ｈ／Ｗ１０９は、以上のようにして求めた左側のエッジのＸ座標と右側のエッジのＸ座標との間の画像を描画処理する（ステップＳ１４０９）。そして、描画処理Ｈ／Ｗ１０９は、オブジェクトの高さ分（ライン分）の処理が終了したか否かを判定する（ステップＳ１４１０）。この判定の結果、オブジェクトの高さ分の処理が終了していない場合には、ステップＳ１４０２の処理に戻る。そして、オブジェクトの高さ分の処理が終了するまで、ステップＳ１４０２〜Ｓ１４１０の処理を繰り返し行う。オブジェクトの高さ分の処理が終了すると、現在処理しているブロックに該当するオブジェクトの描画処理を完了する。
【００６０】
その後、描画処理Ｈ／Ｗ１０９は、Ｆｌａｇの値が「１」であるか否かを判断する（ステップＳ１４１１）。この判断の結果、Ｆｌａｇの値が「１」である場合、現在処理しているブロックよりも右にあるオブジェクトは、当該ブロックとは関連しないことが解る。そこで、描画処理Ｈ／Ｗ１０９は、オブジェクトを描画する中間データ１３０４を、ブロック分割補足情報の中間データ１３０５を含む中間データに書き換える（ステップＳ１４１２）。そして、図１４のフローチャートによる処理を終了する。一方、Ｆｌａｇの値が「１」でない場合には、ステップＳ１４１２の処理を行わずに、図１４のフローチャートによる処理を終了する。
【００６１】
（変形例２）
本実施形態では、ブロック分割補足情報を用いて、バンドを複数のブロックへ分割する際の処理の効率化を図るようにした。本変形例では、さらに、描画処理Ｈ／Ｗ１０９の構成や処理によって、当該処理の効率化を図るようにする。
図１５は、本変形例における描画処理Ｈ／Ｗ１０９の詳細な構成の一例を示す図である。描画処理Ｈ／Ｗ１０９は、ブロックの切り出しを行う複数のブロック切り出し処理部１５０１、１５０２を搭載する。これらのブロック切り出し処理部１５０１、１５０２が並列処理を行うことによって、ブロックへの分割処理の高速化を行う。描画処理Ｈ／Ｗ１０９の処理は、図１２のフローチャートと同様になる。
【００６２】
振り分け処理部１５００が、図１２のフローチャートのＳ１２０１〜Ｓ１２１０、Ｓ１２１９の処理を実行する。振り分け処理部１５００は、処理の対象となる中間データが、オブジェクトを描画する中間データである場合、ステップＳ１２１１〜Ｓ１２１６の処理を、ブロック切り出し処理部１５０１、１５０２の何れかに実行させる。ブロック切り出し処理部１５０１、１５０２の何れにこの処理に行わせるかは、振り分け処理部１５００が動作状況（ブロック切り出し処理部が動作中であるか否か）をみて判断する。
【００６３】
その後、振り分け処理部１５００は、次の中間データを取得し、処理の対象となる中間データが、オブジェクトを描画する中間データである場合、先ほど振り分けたブロック切り出し処理部とは異なるブロック切り出し処理部に、当該中間データの処理を振り分ける。
このような処理を行うことにより、描画処理Ｈ／Ｗ１０９は、バンドを複数のブロックに分割する処理を並列に行うことができる。よって、バンドを複数のブロックに分割する処理の効率化を図ることができる。
【００６４】
ブロック切り出し処理部１５０１、１５０２は、図１２のステップＳ１２１１〜Ｓ１２１６のブロック分割処理を行い、その結果を、ＦＩＦＯメモリ１５０３、１５０４に格納する。書き出し処理部１５０５は、図１２のフローチャートのステップＳ１２１７の処理を実行するモジュールである。書き出し処理部１５０５は、ＦＩＦＯメモリ１５０３、１５０４に格納された情報を元に、ブロックＲＡＭ１１０へ描画処理し、画像データの生成を行う。
【００６５】
（変形例３）
次に、オブジェクトが矩形オブジェクトである場合に、描画処理Ｈ／Ｗ１０９が、バンドを複数のブロックへ分割する処理の効率化を図る方法の一例について説明する。
図１６は、描画処理される矩形オブジェクトの一例を示す図である。
図１６に示すように、描画処理されるオブジェクトが矩形オブジェクト１６０１である場合、ブロック１６０２に対する左右のエッジ１６０３、１６０４のＸ座標は一定である。よって、左右のエッジのＸ座標を１回だけ算出すれば、左右のエッジのＸ座標をラインごとに算出しなす必要はない。そのため、描画処理Ｈ／Ｗ１０９は、図１７のフローチャートのように処理する。図１７は、本変形例における描画処理Ｈ／Ｗ１０９の処理の一例を説明するフローチャートである。図１７のフローチャートは、図１２のステップＳ１２１１〜Ｓ１２１８の代わりに実施されるものである。
【００６６】
まず、描画処理Ｈ／Ｗ１０９は、図１２のステップＳ１２１１〜Ｓ１２１６の処理を行う（ステップＳ１７０１）。そして、描画処理Ｈ／Ｗ１０９は、ステップＳ１２１７と同様に、ブロックの左側のエッジのＸ座標と右側のエッジのＸ座標との間の画像を描画処理する（ステップＳ１７０２）。
そして、描画処理Ｈ／Ｗ１０９は、ステップＳ１２１８と同様に、オブジェクトの高さ分（ライン分）の処理が終了したか否かを判断する（ステップＳ１２１８）。この判断の結果、オブジェクトの高さ分の処理が終了していない場合、描画処理Ｈ／Ｗ１０９は、処理の対象となっているオブジェクトが矩形オブジェクトであるか否かを判断する（ステップＳ１７０４）。この判断の結果、処理の対象となっているオブジェクトが矩形オブジェクトである場合には、ステップＳ１７０２の処理に戻る。この場合には、ステップＳ１７０１の処理を行わない。すなわち、オブジェクトの左右のエッジのＸ座標を再度算出せずに、次のラインの描画処理を行う。これにより、バンドを複数のブロックに分割する処理を効率的に行って、矩形オブジェクトの描画処理を行うことができる。
一方、オブジェクトが矩形オブジェクトでない場合には、ステップＳ１７０１に戻る。そして、描画処理Ｈ／Ｗ１０９は、図１２のフローチャートと同様に、各ラインにおいて、オブジェクトの左右のエッジのＸ座標を算出する。
【００６７】
（変形例４）
ブロックＲＡＭ１１０が複数あることを利用して、描画処理Ｈ／Ｗ１０９が、バンドを複数のブロックに分割する処理を効率化する方法の一例について説明する。
図１８は、本変形例において、バンドを複数のブロックに分割する処理の一例を説明する図である。
図１８に示すように、複数のブロックがある場合に、描画処理Ｈ／Ｗ１０９は、複数の正方形のブロックを纏めた長方形の１つのブロック１８０１、１８０３としてブロックの描画処理を実行する。
図１８に示す例では、描画処理Ｈ／Ｗ１０９は、ブロック１８０１、１８０３を、２つの正方形のブロックを１つに纏めた長方形のブロックとして処理する。ここでは、２つの正方形のブロックを１つに纏めている。描画処理Ｈ／Ｗ１０９は、２つの正方形のブロックを１つのブロックとし、当該ブロックについて、２つのブロックＲＡＭ１１０を用いて、例えば図１２のフローチャートによる処理を行う。一方、ブロック１８０２は、正方形のブロックであるので、前述したのと同じ処理が行われる。
【００６８】
このようにすることにより、描画処理Ｈ／Ｗ１０９が、バンドを複数のブロックに分割する処理を、効率良く行うことができる。このようにすると、利用可能なブロックＲＡＭ１１０の数が減ることになる。前述したように、描画処理Ｈ／Ｗ１０９と圧縮処理Ｈ／Ｗ１１１との並列処理により、処理の効率化を図ることができる。しかしながら、描画処理Ｈ／Ｗ１０９が使用するブロックＲＡＭ１１０の空き待ち等によって、前記並列処理を行うことができず、処理の効率が逆に低下する可能性がある。よって、処理の対象のブロックを、複数の正方形のブロックを纏めた１つの長方形のブロックとして処理することによって、描画処理Ｈ／Ｗ１０９が、バンドを複数のブロックに分割する処理をより効率良く行えるバンドにのみ、当該処理を適用する。
【００６９】
また、変形例３において、矩形のオブジェクトについては、バンドを複数のブロックに分割することが比較的容易であることを説明した（図１６を参照）。図１９は、描画処理される矩形オブジェクト以外のオブジェクトの一例を示す図である。図１９に示すように、矩形以外のオブジェクト１９０１と、ブロックの左右のエッジとの交差が複雑となる。よって、１ラインごとに、左右のエッジのＸ座標を求め直す必要がある。このため、ハンドを複数のブロックに分割するのに時間がかかる。
【００７０】
図２０は、矩形オブジェクト以外のオブジェクトを含む場合のバンド管理情報の一例を示す図である。
図２０に示すように、バンド管理情報に、矩形以外のオブジェクトの数２００１を書き込む領域を設ける。中間データ生成部２０３は、１つのバンドに含まれる矩形以外のオブジェクトの数２００１をカウントして、この領域に書き込んでおく。描画処理Ｈ／Ｗ１０９は、矩形以外のオブジェクトの数を、バンド管理情報から読み出す。そして、矩形以外のオブジェクト数が閾値以上であれば、描画処理Ｈ／Ｗ１０９は、長方形のブロックとして処理を行う。このとき、バンドの全体を１つの長方形のブロックとして処理を行っても、バンドの一部を１つの長方形のブロックとして処理を行ってもよい。矩形以外のオブジェクトの数と閾値との差に応じて、これらの何れの処理を採用するかを決めることができる。また、バンドの一部を１つの長方形のブロックとして処理する場合、例えば、矩形のオブジェクトのみを含む領域を長方形のブロックとし、矩形以外のオブジェクトを含む領域を正方形のブロックとすることができる。
一方、矩形以外のオブジェクト数が閾値未満であれば、描画処理Ｈ／Ｗ１０９は、正方形のブロックとして処理を行う。
【００７１】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００７２】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【図１】
2012254583.tif 000003
【図２】
2012254583.tif 000004
【図３】
2012254583.tif 000005
【図４】
2012254583.tif 000006
【図５】
2012254583.tif 000007
【図６】
2012254583.tif 000008
【図７】
2012254583.tif 000009
【図８】
2012254583.tif 000010
【図９】
2012254583.tif 000011
【図１０】
2012254583.tif 000012
【図１１】
2012254583.tif 000013
【図１２】
2012254583.tif 000014
【図１３】
2012254583.tif 000015
【図１４】
2012254583.tif 000016
【図１５】
2012254583.tif 000017
【図１６】
2012254583.tif 000018
【図１７】
2012254583.tif 000019
【図１８】
2012254583.tif 000020
【図１９】
2012254583.tif 000021
【図２０】
2012254583.tif 000022