(57)【要約】【課題】印刷データのページに、バンド境界を跨ぐように画像データが含まれていても、当該ページのレンダリング開始の遅れを抑制できるようにする。【解決手段】本発明に係る画像処理装置は、印刷データに基づいてページ画像の第１の領域をレンダリングする第１のレンダリングユニットと、印刷データに基づいてページ画像の第２の領域をレンダリングする第２のレンダリングユニットと、コントローラであって、前記第１の領域と前記第２の領域に跨って配置される画像データを印刷データに基づき取得し、前記画像データにアクセスした前記第１のレンダリングユニットに、前記画像データの全画素のうち前記第１の領域内の画素でレンダリングさせ、前記画像データにアクセスした前記第２のレンダリングユニットに、前記画像データの全画素のうち前記第２の領域内の画素でレンダリングさせる、コントローラと、を備えることを特徴とする。【選択図】図８
2017170884.tif 000002
【特許請求の範囲】
【請求項１】
印刷データに基づいてページ内の第１の領域をレンダリングする第１のレンダリングユニットと、
前記印刷データに基づいて前記ページ内の第２の領域をレンダリングする第２のレンダリングユニットと、
コントローラであって、
前記第１の領域と前記第２の領域に跨って配置される画像データを、前記印刷データに基づき取得し、
前記画像データにアクセスした前記第１のレンダリングユニットに、前記画像データの全画素のうち前記第１の領域内の画素でレンダリングさせ、
前記画像データにアクセスした前記第２のレンダリングユニットに、前記画像データの全画素のうち前記第２の領域内の画素でレンダリングさせる、コントローラと、
を備えたことを特徴とする画像処理装置。
【請求項２】
前記コントローラは、
前記画像データを格納可能なメモリを備え、
前記画像データのうち前記第１の領域における矩形領域の先端画素のメモリアドレス情報と、前記画像データのうち前記第２の領域における矩形領域の終端画素のメモリアドレス情報と、に基づいて、前記第１のレンダリングユニットに前記画像データの全画素のうちの前記第１の領域内の画素でレンダリングさせ、
前記画像データのうち前記第２の領域における矩形領域の先端画素のメモリアドレス情報と、前記画像データのうち前記第２の領域における矩形領域の終端画素のメモリアドレス情報と、に基づいて、前記第２のレンダリングユニットに前記画像データの全画素のうちの前記第2の領域内の画素でレンダリングさせる
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記コントローラは、前記画像データの特定画素のメモリアドレス情報を、少なくとも前記画像データの先頭メモリアドレス情報に基づいて取得することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記コントローラは、前記画像データの特定画素のメモリアドレス情報を、少なくとも前記第１の領域の領域情報に基づいて取得することを特徴とする請求項２に記載の画像処理装置。
【請求項５】
前記コントローラは、前記画像データの特定画素のメモリアドレス情報を、少なくとも前記第２の領域の領域情報に基づいて取得することを特徴とする請求項２に記載の画像処理装置。
【請求項６】
前記コントローラは、前記画像データの特定画素のメモリアドレス情報を、少なくとも前記画像データの前記矩形領域の先頭位置情報に基づいて取得することを特徴とする請求項２に記載の画像処理装置。
【請求項７】
前記コントローラは、前記画像データの特定画素のメモリアドレス情報を、少なくとも前記画像データのチャンネル情報に基づいて取得することを特徴とする請求項２に記載の画像処理装置。
【請求項８】
前記コントローラは、前記画像データの特定画素のメモリアドレス情報を、少なくとも前記画像データの前記矩形領域のサイズ情報に基づいて取得することを特徴とする請求項２に記載の画像処理装置。
【請求項９】
前記第１の領域は前記ページをバンド単位で区切った複数バンド領域のうちの所定のバンド領域であり、前記第２の領域は前記複数バンド領域のうちの前記所定のバンド領域とは異なるバンド領域であることを特徴とする請求項１に記載の画像処理装置。
【請求項１０】
前記コントローラは、前記第１のレンダリングユニットのレンダリング結果と、前記第２のレンダリングユニットのレンダリング結果とに基づきラスタ形式の画像データを取得することを特徴とする請求項１に記載の画像処理装置。
【請求項１１】
前記コントローラは、
前記ページ内の画像データのうち圧縮された画像データを伸長する伸長回路を備え、
前記伸長回路で伸長された画像データに基づいて前記第１のレンダリングユニットに前記第１の領域をレンダリングさせ、
前記伸長回路で伸長された前記画像データに基づいて前記第２のレンダリングユニットに前記第２の領域をレンダリングさせる
ことを特徴とする請求項１に記載の画像処理装置。
【請求項１２】
前記コントローラは、
前記伸長回路で伸長された画像データを格納するメモリを備え、
前記メモリに格納された前記伸長された画像データに基づいて前記第１のレンダリングユニットに前記第１の領域をレンダリングさせ、
前記メモリに格納された前記伸長された画像データに基づいて前記第２のレンダリングユニットに前記第２の領域をレンダリングさせる
ことを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記伸張回路は、前記第１のレンダリングユニット及び前記第２のレンダリングユニットのうちいずれか一方からの伸張指示に基づいて、前記圧縮された画像データを伸張することを特徴とする請求項１１に記載の画像処理装置。
【請求項１４】
印刷データに基づいて中間データをページ単位で生成する生成ユニットと、
前記中間データに基づいてページ内の第１の領域をレンダリングする第１のレンダリングユニットと、
前記中間データに基づいてページ内の第２の領域をレンダリングする第２のレンダリングユニットと、
を備えた画像処理装置の制御方法であって、
前記印刷データに基づいて前記第１の領域と前記第２の領域を跨る圧縮された画像データを含むページの中間データを前記生成ユニットに生成させるステップと、
前記圧縮された画像データを伸長した画像データに基づいて前記第１のレンダリングユニットに前記第１の領域をレンダリングさせ、前記圧縮された画像データを伸長した画像データに基づいて前記第２のレンダリングユニットに前記第２の領域をレンダリングさせるステップと、
を含むことを特徴とする制御方法。
【請求項１５】
コンピュータを、請求項１乃至１３のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【請求項１６】
印刷データに基づき、ページを第１の領域と第２の領域に分けてレンダリングする画像処理装置であって、
前記第１の領域と前記第２の領域に跨って配置される画像データを格納するメモリと、
前記画像データにアクセスし、前記画像データの全画素のうち前記第１の領域内の画素を用いてレンダリングする第１のレンダラと、
前記画像データにアクセスし、前記画像データの全画素のうち前記第２の領域内の画素を用いてレンダリングする第２のレンダラと
を備えたことを特徴とする画像処理装置。 
【請求項１７】
前記第１のレンダラは、前記画像データのうち前記第１の領域における矩形領域の先端画素のメモリアドレス情報と、前記画像データのうち前記第２の領域における矩形領域の終端画素のメモリアドレス情報と、に基づいて、前記画像データの全画素のうちの前記第１の領域内の画素でレンダリングし、
前記第２のレンダラは、前記画像データのうち前記第２の領域における矩形領域の先端画素のメモリアドレス情報と、前記画像データのうち前記第２の領域における矩形領域の終端画素のメモリアドレス情報と、に基づいて、前記画像データの全画素のうちの前記第２の領域内の画素でレンダリングする
ことを特徴とする請求項１６に記載の画像処理装置。
【請求項１８】
前記画像データの特定画素のメモリアドレス情報は、少なくとも前記画像データの先頭メモリアドレス情報に基づいて取得されることを特徴とする請求項１７に記載の画像処理装置。
【請求項１９】
前記画像データの特定画素のメモリアドレス情報は、少なくとも前記第１の領域の領域情報に基づいて取得される請求項１７に記載の画像処理装置。
【請求項２０】
前記画像データの特定画素のメモリアドレス情報は、少なくとも前記第２の領域の領域情報に基づいて取得される請求項１７に記載の画像処理装置。
【請求項２１】
前記画像データの特定画素のメモリアドレス情報は、少なくとも前記画像データの前記矩形領域の先頭位置情報に基づいて取得される請求項１７に記載の画像処理装置。
【請求項２２】
前記画像データの特定画素のメモリアドレス情報は、少なくとも前記画像データのチャンネル情報に基づいて取得される請求項１７に記載の画像処理装置。
【請求項２３】
前記画像データの特定画素のメモリアドレス情報は、少なくとも前記画像データの前記矩形領域のサイズ情報に基づいて取得される請求項１７に記載の画像処理装置。
【請求項２４】
前記第１の領域は前記ページをバンド単位で区切った複数バンド領域のうちの所定のバンド領域であり、前記第２の領域は前記複数バンド領域のうちの前記所定のバンド領域とは異なるバンド領域であることを特徴とする請求項１６に記載の画像処理装置。
【請求項２５】
前記第１のレンダラのレンダリング結果と、前記第２のレンダラのレンダリング結果とに基づき、前記ページのラスタ形式の画像データが生成されることを特徴とする請求項１６に記載の画像処理装置。
【請求項２６】
前記ページ内の画像データのうち圧縮された画像データを伸長する伸長回路を備え、
前記第１のレンダラは、前記伸長回路で伸長された画像データに基づいて前記第１の領域をレンダリングし、
前記第２のレンダラは、前記伸長回路で伸長された画像データに基づいて前記第２の領域をレンダリングする
ことを特徴とする請求項１６に記載の画像処理装置。
【請求項２７】
前記伸長回路で伸長された画像データを格納するメモリを備え、
前記第１のレンダラは、前記メモリに格納された前記伸長された画像データに基づいて前記第１の領域をレンダリングし、
前記第２のレンダラは、前記メモリに格納された前記伸長された画像データに基づいて前記第２の領域をレンダリングする
ことを特徴とする請求項２６に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データのバンド並列レンダリング技術に関する。
【背景技術】
【０００２】
従来より、ホストコンピュータ等から受信した印刷データ（ＰＤＬデータ）のページのレンダリングを高速化するための様々な技術が提案されている。例えば特許文献１には、１つのコアが１ページ分のＰＤＬデータからそのページの中間データをバンド単位で生成し、そして、複数のコアが異なるバンドの中間データを並列でレンダリングする画像形成装置が開示される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１５８９５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＰＤＬデータには、ページの構成要素の一部として、画像データが含まれていることがある。また、こうした画像データは、複数のバンドに跨って配置されることがある。バンドを跨る画像データを、上記特開２０１２−１５８９５１号公報の技術を用いてバンド並列で処理するには、当該画像データをバンド単位で分割し、各バンドに対応する分割画像のそれぞれについて中間データを生成してレンダリングすることになる。これでは、処理コストが増大してしまう。
【課題を解決するための手段】
【０００５】
本発明に係る画像処理装置は、印刷データに基づいてページ内の第１の領域をレンダリングする第１のレンダリングユニットと、前記印刷データに基づいて前記ページ内の第２の領域をレンダリングする第２のレンダリングユニットと、コントローラであって、前記第１の領域と前記第２の領域に跨って配置される画像データを、前記印刷データに基づき取得し、前記画像データにアクセスした前記第１のレンダリングユニットに、前記画像データの全画素のうち前記第１の領域内の画素でレンダリングさせ、前記画像データにアクセスした前記第２のレンダリングユニットに、前記画像データの全画素のうち前記第２の領域内の画素でレンダリングさせる、コントローラと、を備えたことを特徴とする。
【０００６】
本発明によれば、印刷データのページに、バンド境界を跨ぐように画像データが含まれていても、当該ページのレンダリング開始の遅れを抑制できる。
【図面の簡単な説明】
【０００７】
【図１】画像形成装置のハードウェア構成の一例を示す図である。
【図２】（ａ）は画像形成装置の印刷処理に関するソフトウェア構成を示すブロック図であり、（ｂ）は実施例１に係るＲＩＰのハードウェア構成例を示す図である。
【図３】印刷ジョブからビットマップ画像データが生成されるまでの流れを示すフローチャートである。
【図４】圧縮画像を含むページの一例を示す図である。
【図５】図４のページに対応する印刷ジョブを示す図である。
【図６】ＰＤＬデータに対応する中間データを示す図である。
【図７】バンド毎に並列でレンダリング処理する過程を説明する図である。
【図８】第１レンダリング処理の流れを示すフローチャートである。
【図９】スキャンライン処理の詳細を示すフローチャートである。
【図１０】伸長画像格納用メモリ内に画像データが格納される様子を表した図である。
【図１１】第２レンダリング処理の流れを示すフローチャートである。
【図１２】実施例２に係るＲＩＰのハードウェア構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下、添付の図面を参照して、本発明を実施する形態について説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【実施例１】
【０００９】
まず、本実施例に係る画像形成装置のハードウェア構成について説明する。図１は、画像形成装置のハードウェア構成の一例を示す図である。図１に示す画像形成装置１００は、ホストＰＣ１３０とＬＡＮ１２０を介して接続されている。印刷を行いたいユーザは、ホストＰＣ１３０において印刷対象の文書についての印刷ジョブを生成し、ホストＰＣ１３０からＬＡＮ１２０を介して画像形成装置１００に対して送信する。印刷ジョブにはページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述された、文字、写真、図形といったオブジェクトをページ内にどのように配置するかを指定するデータ（ＰＤＬデータ）を含んでいる。そのため印刷ジョブは印刷データとも呼ばれる。そして、本実施例では、ＰＤＬデータのページ内に写真オブジェクトの圧縮画像を含んでいることが前提となる。なお、ここでの画像形成装置１００は、中間データに対しバンド単位の並列レンダリングを行なって印刷を行うＳＦＰ（Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）を想定している。しかし、画像形成装置はコピーやＦＡＸといった複数の機能を備えたＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）であってもよい。中間データに対してバンド単位の並列レンダリングによって印刷を行う機能を有する装置であれば、本実施例の手法は幅広く適用可能である。以下、本実施例の画像形成装置１００を構成する各部について説明する。
【００１０】
図１において、破線の矩形はコントローラ部を示し、ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＰＭ１０３、大容量記憶装置１０４、操作部Ｉ／Ｆ１０６、ネットワークＩ／Ｆ１０７、システムバス１０８、イメージバス１０９で構成される。ＣＰＵ１０１は各種演算処理を行なうプロセッサであり、画像形成装置１００全体の制御を司る。ＲＡＭ１０２は、ＣＰＵ１０１が動作するためのシステムワークメモリである。また、ＲＡＭ１０２は、ホストＰＣ１３０から受け取った印刷ジョブ内のＰＤＬデータを解釈して生成される中間データを一時的に格納したり、中間データをレンダリング処理する際の作業領域でもある。ＲＯＭ１０３は、システムのブートプログラムなどを格納する。大容量記憶部１０４は、例えばハードディスクドライブであり、各種処理のためのシステムソフトウェアやホストＰＣ１３０から受信した印刷ジョブを格納する。
【００１１】
操作部１０５は、各種メニューや印刷データ情報等を表示するためのディスプレイ及びユーザが各種入力操作を行うためのボタンやキーを有し、操作部Ｉ／Ｆ１０６を介してシステムバス１０９と接続される。
【００１２】
ネットワークＩ／Ｆ１０７は、ＬＡＮ１２０を介してホストＰＣ１３０を含む外部装置との間で各種データ・情報のやり取りを行うインターフェースである。これら各部は、システムバス１０８に接続されている。
【００１３】
イメージバスＩ／Ｆ１０９は、システムバス１０８と画像データを高速に転送するイメージバス１１０とを接続するインターフェースであって、データ構造を変換するバスブリッジである。イメージバス１１０には、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）１１１とプリンタ部１１２が接続されている。
【００１４】
ＲＩＰ１１１は、複数のプロセッサ、メモリ、伸張処理回路などで構成され、ＣＰＵ１０１からの指示に基づき、ＰＤＬデータから生成された中間データであるＤＬ（ディスプレイリスト）をラスタ形式の画像データ（ビットマップ画像データ）に変換する。プリンタ部１１２は、ＲＩＰ１１１で生成されたビットマップ画像データをデバイスＩ／Ｆ１１３を介して受け取って、紙等の記録媒体に画像を形成して出力する。なお、本明細書において「レンダリング」とは、中間データであるＤＬからラスタ形式の画像データを生成することを意味し、いわゆるラスタライズと同義である。
【００１５】
図２（ａ）は、画像形成装置１００の印刷処理に関するソフトウェア構成を示すブロック図であり、ＰＤＬデータ解析モジュール２０１、中間データ生成モジュール２０２、レンダリングモジュール２０３で構成される。
【００１６】
ＰＤＬデータ解析モジュール２０１は、ホストＰＣ１３０から入力された印刷ジョブに含まれるＰＤＬデータを解析し、ページ情報と、当該ページ情報に含まれるオブジェクト情報とを取得する。取得したページ情報とオブクジェト情報は、中間データ生成モジュール２０２に送られる。
【００１７】
中間データ生成モジュール２０２は、ＰＤＬデータ解析モジュール２０１から受け取ったページ情報及びオブジェクト情報に基づいて、オブジェクトの描画命令等で構成される中間データ（ＤＬ）を生成する。生成した中間データは、レンダリングモジュール２０３に送られる。
【００１８】
レンダリングモジュール２０３は、生成された中間データに基づいて、バンド毎に並列でレンダリングを行い、ページ単位でビットマップ画像データを生成する。図２（ｂ）は、レンダリングモジュール２０３によるバンド毎の並列レンダリングを可能にする、本実施例に係るＲＩＰ１１１のハードウェア構成例を示す図である。ＲＩＰ１１１は、第１レンダリング処理部２１１、第２レンダリング処理部２１２、及び、中間データに含まれる圧縮画像を第１レンダリング処理部２１１からの伸長指示に基づいて伸長する伸長処理部２１３で構成される。伸長処理部２１３で伸張された後の画像データは、伸長画像格納用メモリ２２０に格納される。また、伸張処理部２１３は、内部にレジスタ（不図示）を有しており、受け取った伸長指示のうち伸長処理が完了した数（解凍された圧縮画像の数）を当該内部レジスタに記憶する。この内部レジスタに記憶される数値は、１ページ分の処理が終了する毎に“０”に初期化される。なお、本実施例では、ＰＤＬデータ解析モジュール２０１と中間データ生成モジュール２０２は、ＣＰＵ１０２が所定のプログラムに従いＲＡＭ１０２を用いて実現する構成を想定している。しかしながら、ＰＤＬデータを解析してビットマップ画像データを生成するまでのすべての工程をＲＩＰ１１１内の閉じた構成の中で行うようにしてもよい。また、本実施例では前述のＲＡＭ１０２を伸長画像格納用メモリ２２０として用いることを想定しているが、ＲＡＭ１０２とは別個に伸長画像格納のための専用メモリを設けてもよい。
【００１９】
＜用語の説明＞
ここで、本実施例のレンダリング処理で登場する、「エッジ」「スキャンライン」「スパン」「レベル」「フィル」「バンド」の各用語について確認しておく。
【００２０】
エッジとは、ページ内に存在するオブジェクト同士の境界、又はオブジェクトと背景の境目を指す。すなわち、エッジはオブジェクトのアウトラインである。
【００２１】
スキャンラインとは、画像形成処理において画像データが連続的にメモリ走査される主走査方向のラインである。スキャンラインの高さは１ピクセルとなっている。
【００２２】
スパンとは、単一のスキャンラインにおいて、エッジ間の区間を指す。この区間のことを閉領域とも呼ぶ。
【００２３】
レベルとは、ページ内に描画するオブジェクト同士の上下関係を示す情報であり、各オブジェクトには必ずそれぞれ異なるレベル番号が割り振られる。レベルは、Ｚオーダーとも呼ばれ、ページの背面から前面に向かう方向（ページの描画範囲をＸＹ平面で表現した際のＸＹ平面に直交する方向：Ｚ軸方向）に沿ったオブジェクトの並び順を表す。
【００２４】
フィルとは、スパンに対する塗り情報であり、ビットマップ画像データやシェーディングのように１ピクセル毎に異なる色値を持つフィルや、ベタ塗りのようにスパン中で色値の変化がないフィルが存在する。したがって、１つのスパン（閉領域）については、当該スパンに関連するオブジェクトの数だけレベルが存在し、レベルの数だけ異なるフィルを有することになる。また、ビットマップ画像データがフィルとして指定される場合、該ビットマップ画像データはあらかじめＲＡＭ１０２に格納される。ＰＤＬデータに圧縮画像が含まれる場合、フィルとしてＲＩＰ１１１が参照する前にＲＡＭ１０２上の所定位置に伸長後のビットマップ画像データが格納されることになる。
【００２５】
バンドとは、複数のスキャンラインを束ねたものを指す。
【００２６】
続いて、印刷ジョブからビットマップ画像データを生成するまでの大まかな処理の流れを説明する。図３は、印刷ジョブからビットマップ画像データが生成されるまでの流れを示すフローチャートである。以下では、図４に示すような、写真属性のオブジェクト４０１〜４０３の圧縮画像を含むページの印刷ジョブがホストＰＣ１３０から送信されたものとして説明を行なうものとする。なお、本実施例の場合、後述するステップ３０３におけるレンダリング処理を並列で行なうことを目的に、予め印刷ジョブのデータを分割するようなことは行わない。
【００２７】
ステップ３０１では、ＰＤＬデータ解析モジュール２０１が、ホストＰＣ１３０から受信した印刷ジョブ内の、図４のページに対応するＰＤＬデータを解析する。図５は、図４のページに対応する印刷ジョブを示している。
【００２８】
印刷ジョブ５００は、印刷ジョブの開始を示すジョブ開始命令５１０、印刷対象の画像を特定するＰＤＬデータ５２０、印刷ジョブの終了を示すジョブ終了命令５３０から構成される。ジョブ開始命令５１０は、ＰＤＬデータ５２０の印刷処理時の解像度を設定する印字解像度情報、片面／両面印刷を指定する印刷面指定情報、給紙段を指定する給紙段選択命令、及びＰＤＬデータ５２０の種別を示すＰＤＬ識別子で構成される。なお、本実施例では簡単のために省略したが、ジョブ開始命令５１０には用紙を綴じるために余白位置を指定する命令や、排紙口を選択する命令等も含まれる。また、ジョブ開始命令５１０には上述した印刷環境の他に、操作部１０５から設定可能な各種命令も含まれ得る。ＰＤＬデータ５２０は、ＰＤＬデータ開始命令５２１、イメージ描画命令５２２〜５２４、改ページ命令５２５、及びＰＤＬデータ終了命令５２６、の計６つの命令を含んでいる。ＰＤＬデータ開始命令５２１はＰＤＬデータ５２０の開始を示し、各ページの用紙サイズを選択する用紙サイズ選択命令、描画命令で用いられる単位を指定するサイズ単位指定命令、描画命令が有効な領域を示す描画領域設定命令を含む。イメージ描画命令５２２は、図４のページにおけるオブジェクト４０３に対応する描画命令であり、その描画位置、オブジェクトの幅・高さ、圧縮形式、圧縮画像のデータサイズ、圧縮画像データから構成される。ここで描画位置とは、ページの左上隅を原点（０，０）としたときの、対象オブジェクトが描画される開始点の座標（後述の描画開始座標と同じ）のことである。同様に、イメージ描画命令５２３はオブジェクト４０２に対応する描画命令である。また、イメージ描画命令５２４はオブジェクト４０１に対応する描画命令である。改ページ命令５２５は、以降の描画命令が次ページのものであることを示す命令である。そして、ＰＤＬデータ終了命令５２６は、ＰＤＬデータの終了を意味する命令である。
【００２９】
図３のフローの説明に戻る。
【００３０】
ステップ３０２では、中間データ生成モジュール２０２が、解析したＰＤＬデータの情報を基に、ビットマップ画像データ生成のために必要な中間データ（ＤＬ）の生成を行う。中間データの生成には、周知技術を適用すればよい。図６は、図５に示した印刷ジョブ５００のＰＤＬデータ５２０に対応する中間データを示している。図６に示す中間データ６００は、描画フレーム設定命令６０１、描画領域設定命令６０２、圧縮画像伸張命令６０３、６０４、６０７、描画命令６０５、６０６、６０８、及びページ終了命令６０９、の計９つの命令を含む。図４のページの例では、イメージ描画命令５２４の中間データとして、圧縮画像伸長命令６０３および描画命令６０５が生成される。同様に、イメージ描画命令５２３の中間データとして、圧縮画像伸長命令６０４および描画命令６０６が生成される。そして、イメージ描画命令５２２の中間データとして、圧縮画像伸長命令６０７および描画命令６０８が生成される。また、本ステップでは、この中間データを生成する際に、ＰＤＬデータ５２０に含まれるイメージ描画命令の描画位置を参照して、各イメージ描画命令に対応する中間データの描画命令をソートする。具体的には、中間データに含まれる描画命令の描画開始座標を、Ｙ座標が昇順となるようにまずはソートし、次に描画開始座標のＹ座標が同一の描画命令についてはＸ座標が昇順となるようにソートする。また、このソート処理において、描画命令が圧縮画像についての描画命令であれば、対応する圧縮画像伸長命令をその描画命令の直前に挿入する。直前に挿入する理由は、描画命令の実行直前まで圧縮画像の伸長を待機することで、伸長後の画像データを格納するＲＡＭ１０２を極力省メモリ化するためである。なお、ソート後の描画命令の描画開始座標のＹ座標が同一であるような圧縮画像の描画命令については、それら複数の描画命令の前に、対応する複数の圧縮画像伸長命令を挿入するようにする。このように中間データに含まれる描画命令をソートすることで、レンダリング処理において、ページの開始点（すなわちＸ座標およびＹ座標がともに“０”の原点）から画素順にレンダリング（スキャンラインレンダリングともいう）を行うことができる。
【００３１】
図６に示す中間データ６００において、描画フレーム設定命令６０１は、色空間と階調を指定する命令である。描画領域設定命令６０２は、ページ画像の幅と高さを指定する命令である。圧縮画像伸長命令６０３は、ＰＤＬデータ５００におけるイメージ描画命令５２４に対応する圧縮画像の伸長命令である。この圧縮画像伸張命令６０３には、イメージ描画命令５２４に含まれる圧縮画像データの参照先先頭アドレスと伸長処理に使用する量子化テーブルの参照先先頭アドレス、さらに、伸長後の画像データを格納するのに必要なデータサイズの情報が記述される。なお、格納に必要なデータサイズは、色空間並びに画像の幅と高さとに基づいて算出される。圧縮画像伸長命令６０４は、同様に生成された、イメージ描画命令５２３に対応する圧縮画像の伸長命令である。また、圧縮画像伸長命令６０７は、同様に生成された、イメージ描画命令５２２に対応する圧縮画像の伸長命令である。描画命令６０５は、圧縮画像伸長命令６０３に従って伸長する画像の描画コマンドを示し、描画開始座標、パス点列（描画領域を示す頂点各座標）、レベル（色）合成処理の有無の情報を含む。本実施例では、描画命令６０５の描画領域内には１つの画像を描画するだけで、背面や上位面にある画像との合成は発生しないので、レベル合成は“なし”となっている。描画命令６０６は、同様に生成された、圧縮画像伸長命令６０４で伸長する画像の描画コマンドである。また、描画命令６０８は、同様に生成された、圧縮画像伸長命令６０７で伸長する画像の描画コマンドである。そして、ページ終了命令６０９は、ページの終了を示す命令である。このように、ＰＤＬデータの解析で取得されたオブジェクト情報をスキャンライン上での出現順にソートすることで中間データが生成される。そのため、図５に示すＰＤＬデータ５００と、図６に示す中間データ６００とでは描画命令の順番が異なることになる。すなわち、ＰＤＬデータ５００では、オブジェクト４０３に対応する描画命令５２２が最初に来ているのに対し、図６に示す中間データ６００では、最も原点（０，０）に近いオブジェクト４０１に対応する描画命令６０５が最初に来ている。
【００３２】
また、中間データは、ＲＩＰ１１１が圧縮画像伸長のために確保する伸長画像格納用メモリ２２０としてのＲＡＭ１０２内の領域を、参照する描画命令の処理が終了した時点で破棄できるように生成される。すなわち、図６の中間データ６００では、描画命令６０５と６０６の前に圧縮画像伸張命令６０３と６０４が来るように、描画命令６０８の前に圧縮画像伸張命令６０７が来るように各命令の順序を構成する。これによりＲＩＰ１１１は、描画命令６０５、６０６、６０８を処理する時点で必要な伸長後の画像を参照でき、描画命令６０５と６０６の処理が完了し、圧縮画像伸張命令６０３と６０４の伸長結果を破棄した後に圧縮画像伸張命令６０７を処理できるようになる。
【００３３】
図３のフローの説明に戻る。
【００３４】
ステップ３０３では、レンダリングモジュール２０３が、ステップ３０２で生成した中間データに基づいて、図２（ｂ）の各処理部２１１〜２１３を用いてバンド単位で並列にレンダリングを行い、ビットマップ画像データを生成する。本実施例の特徴であるバンド並列レンダリング処理については、項を改めて説明する。
【００３５】
以上が、印刷ジョブからビットマップ画像データが生成されるまでの大まかな流れである。
【００３６】
＜バンド並列レンダリング処理＞
以下、第１レンダリング処理部２１１と第２レンダリング処理部２１２とを協働させてバンド単位でのレンダリングを並列で行なう手法について詳しく説明する。以下では、１つのバンドを１０２４個（１０２４本）のスキャンラインの集合とし、ページ最上部に位置するバンドを１バンド目とする。図７は、図６の中間データに基づいて、バンド毎に並列でレンダリング処理する過程を説明する図である。レンダリングモジュール２０３は、図６の中間データに基づきページ上部から順にスキャンライン単位でビットマップ画像を生成していく。この時、ページを所定のバンド領域（ここでは１０２４本分のスキャンラインの束）に区分し、奇数バンド領域については第１レンダリング処理部２１１によって、偶数バンド領域については第２レンダリング処理部２１２によってビットマップ画像が生成される。このように、第１レンダリング処理部２１１と第２レンダリング処理部２１２は、それぞれページ全体の中間データを解析して並列に動作し、それぞれに割り当てられたバンド領域をレンダリングする。
【００３７】
＜第１レンダリング処理＞
まずは、第１レンダリング処理部２１１が担当する第１のバンド（ここでは奇数バンド）についてのレンダリング処理（第１レンダリング処理）について説明する。図８は、本実施例に係る、第１レンダリング処理の流れを示すフローチャートである。
【００３８】
ステップ８０１では、第１レンダリング処理部２１１が、ステップ３０２で生成された中間データに含まれる命令を１つ読み込む。中間データに含まれる命令のうちどれを読み込むのかはポインタによって管理され、先頭の命令から順に読み込まれる。ポインタによって指し示された命令の読み込みが完了すると、ポインタは次の命令へと移行する。こうして、中間データに含まれる命令が順次読み込まれる。
【００３９】
ステップ８０２では、第１レンダリング処理部２１１が、ステップ８０１で読み込んだ命令が、ページ終了命令かどうか判定される。読み込んだ命令が、ページ終了命令でない場合はステップ８０３に進む。一方、ページ終了命令である場合は本処理を終える。
【００４０】
ステップ８０３では、第１レンダリング処理部２１１が、オブジェクトの描画を指示する描画命令かどうか判定する。読み込んだ命令が、描画命令でない場合はステップ８０４に進む。一方、描画命令である場合はステップ８０７に進む。
【００４１】
ステップ８０４では、第１レンダリング処理部２１１が、ステップ８０１で読み込んだ命令が圧縮画像伸長命令かどうか判定する。読み込んだ命令が圧縮画像伸長命令である場合はステップ８０５に進む。一方、圧縮画像伸長命令でない場合はステップ８１１に進む。
【００４２】
ステップ８０５では、第１レンダリング処理部２１１が、読み込んだ圧縮画像伸長命令の数（伸長指示数）をカウントする。伸長命令が読み込まれると伸長処理部２１３に圧縮画像の伸長が指示されるので、このときの第１レンダリング処理部２１１は、伸長処理部２１３に出した伸長指示数をカウントするカウント部に対応している。その初期値は“０”であり、図６の中間データの場合、オブジェクト４０３に対応する圧縮画像伸張命令６０７を読み込んだ時点で、カウント値は“３”となる。このカウント値は、ページ終了命令を読み込んだ際にリセットされ初期値“０”に戻る。つまり、カウントされる圧縮画像伸長命令の数はページ毎にリセットされ、バンド毎にはリセットされない。
【００４３】
ステップ８０６では、第１レンダリング処理部２１１が、読み込まれた圧縮画像伸張命令に係る圧縮画像の伸張を、伸長処理部２１３に指示する。当該指示を受けて伸長処理部２１３は、対象の圧縮画像を伸張し、伸長画像格納用メモリ２２０としてのＲＡＭ１０２に伸張された画像を展開する。圧縮画像の伸長処理が完了すると、伸長処理部２１３は、処理が完了した伸長指示の数を内部レジスタに格納する。なお、この内部レジスタの初期値は“０”であり、本フローの終了時にリセットされ、再び“０”となる。第１レンダリング処理部２１１によって圧縮画像の伸張が指示された後は、ステップ８０１に戻る。
【００４４】
ステップ８０７では、第１レンダリング処理部２１１が、ステップ８０１で読み込んだ描画命令によってオブジェクトが描画されることになるスキャンライン上での、当該オブジェクトのエッジの座標（Ｘ座標）を導出する。例えば図７におけるオブジェクト４０１の場合であれば、その輪郭となる矩形の左右両端２箇所のＸ座標が導出されることになる。ここで導出されたエッジの座標情報は、後述のエッジソート処理（ステップ９０１）で用いられる。なお、本ステップでは、１つのオブジェクトについて、隣接する他方のバンド（ここでは、偶数バンド）に属する部分のエッジ座標も導出される。これは、あるスキャンライン上のエッジ座標の導出には、そのスキャンラインの１つ前のスキャンライン上のエッジ座標を用いるようにしているためである。例えば、あるエッジの座標が、スキャンラインが１つ進むごとにΔｘだけずれるならば、直前のエッジ座標にΔｘを加算することで、導出対象エッジの座標を簡単に求めることができる。こうして、エッジ座標の導出を終えた描画命令は、この後のスキャンライン処理に備え、スプールされる。
【００４５】
ステップ８０８では、第１レンダリング処理部２１１が、ステップ８０７でスプールした描画命令に続く命令（次の読込み対象の命令）が描画命令であるかどうかをポインタに基づき判定する。これは、後に行なうスキャンライン処理を、Ｙ座標方向に近接した位置にある複数のオブジェクトについてまとめて処理するためである。次の読込み対象の命令が描画命令である場合は、ステップ８０９に進む。一方、次の読込み対象の命令が描画命令以外の命令である場合は、ステップ８１０に進む。
【００４６】
ステップ８０９では、第１レンダリング処理部２１１が、現時点でスプールされているすべての描画命令における描画範囲と、次の読込み対象の描画命令における描画範囲とが、Ｙ座標の方向（副走査方向）で重なりを持つか判定する。この場合において、現時点でスプールされているすべての描画命令には、直近のステップ８０７でスプールされた描画命令を含む。また、次の読込み対象の描画命令は、判定のために参照するのみで実際に読込みを行なうわけではない。この判定では、現にスプールされているいずれかの描画命令による描画範囲の開始Ｙ座標と終了Ｙ座標との範囲と、次の読込み対象の描画命令による描画範囲の開始Ｙ座標と終了Ｙ座標との範囲との間に重複があるかがチェックされる。判定の結果、重なりを持つ場合は、さらに他のオブジェクトとの重なりの有無を調べるべくステップ８０１に戻る。一方、重なりを持たない場合は、現時点でスプールされている描画命令分の描画範囲のスキャンライン処理を行うべく、ステップ８１０に進む。
【００４７】
ここで、スキャンライン処理の実行が決定されるまでの実際の流れを、図６の中間データの場合を例に説明する。まず、２つのオブジェクト４０１及び４０２についての圧縮画像伸張命令６０３及び６０４が読み込まれ、対応する２つの圧縮画像の伸張が指示される（Ｓ８０１〜８０５）。続いて、オブジェクト４０１についての描画命令６０５が読み込まれてそのエッジ座標が導出され、当該描画命令６０５がスプールされる（Ｓ８０７）。次の読込み対象の命令は、オブジェクト４０２についての描画命令６０６なので、描画範囲のＹ座標方向での重なりの有無がチェックされ、重なり有りと判定される（Ｓ８０９でＹｅｓ）。そして、オブジェクト４０２についての描画命令６０６が読み込まれ（Ｓ８０１）、そのエッジ座標の導出と当該描画命令６０６のスプールがなされる（Ｓ８０７）。この時点で、次の読込み対象の命令は、オブジェクト４０３についての圧縮画像伸張命令６０７なので、ステップ８０８の判定で「描画命令以外」に進むこととなり、２つの描画命令６０５及び６０６についてのスキャンライン処理がまとめて実行されることになる。なお、仮に、描画命令６０６と圧縮画像伸長命令６０７との間に、オブジェクト４０１及び４０２とＹ座標方向に重なった例えば図形属性のオブジェクトについての描画命令αが存在していたとする。この場合は、描画命令６０６のスプールがなされた時点で、次の読込み対象の命令は、当該図形オブジェクトについての描画命令αとなり、さらに描画範囲のＹ座標方向での重なりの有無がチェックされ、重なり有りと判定される（Ｓ８０９でＹｅｓ）。その結果、当該図形オブジェクトについての描画命令αが読み込まれ（Ｓ８０１）、３つのオブジェクトについてのスキャンライン処理がまとめて実行されることになる。
【００４８】
ステップ８１０では、第１レンダリング処理部２１１が、現時点でスプールされている描画命令分の描画範囲を対象にスキャンライン処理を実行する。ここでは、奇数バンド（図７の例では、１バンド目、３バンド目、５バンド目）の領域についてのビットマップ画像データが生成されることになる。このスキャンライン処理の詳細については、後述する。
【００４９】
ステップ８１１では、第１レンダリング処理部２１１が、描画命令及び圧縮画像伸張命令以外の命令（描画フレーム設定命令や描画領域設定命令など）に基づく処理を実行する。例えば、描画フレーム設定命令６０１に基づいて処理対象ページの階調数の設定などが実行される。なお、図６の中間データを見れば分かるように、描画フレーム設定命令や描画領域設定命令は、レンダリング処理の最初の段階で実行される。
【００５０】
ステップ８１２では、第１レンダリング処理部２１１が、中間データ内のすべての命令についての処理が完了したか判定する。未処理の命令があればステップ８０１に戻り、次の命令を読み込む。なお、未処理の命令があるということは、ページ終了命令以外の命令が残っていることを意味している。
【００５１】
以上が、第１レンダリング処理部２１１が担当する奇数バンド領域についての第１レンダリング処理の内容である。なお、第１レンダリング処理部が偶数バンドを担当するような構成であってもよい。
【００５２】
＜スキャンライン処理＞
続いて、上述のステップ８１０におけるスキャンライン処理の詳細について説明する。この処理は、Ｙ座標方向にまとまりのある１以上のオブジェクトに関する、スプールされている描画命令分の描画範囲内の開始Ｙ座標のスキャンラインから順に、スキャンライン毎に行われる。以下では、描画範囲内のスキャンラインのうち処理対象となるスキャンラインのことを「注目スキャンライン」と呼ぶこととする。図９は、スキャンライン処理の詳細を示すフローチャートである。以下、図９のフローに沿って説明する。
【００５３】
ステップ９０１では、スプールされている描画命令分の描画範囲内のスキャンラインの中から注目スキャンラインが決定される。処理開始直後の段階では、上述のとおり開始Ｙ座標のスキャンラインが注目スキャンラインに決定される。
【００５４】
ステップ９０２では、注目スキャンラインについて、エッジソート処理がなされる。具体的には、まず、注目スキャンライン上に現れる１つまたは複数のオブジェクトを特定する。そして、当該特定されたオブジェクトについて、前述のステップ８０７で導出されたエッジ座標から注目スキャンラインにおけるエッジ座標を取得し、当該特定されたオブジェクトをＸ座標昇順で並び替える。この並び替えによって、ビットマップ画像データにおける画素値の生成をＸ座標昇順で行なうことが可能になる。
【００５５】
ステップ９０３では、注目スキャンラインについて、レベルソート処理がなされる。具体的には、ステップ９０２で順番に並べたエッジ間（スパン）の画素の色に影響を与えるオブジェクトをさらに特定し、当該特定されたオブジェクトをレベル順に並べ替える。
【００５６】
ステップ９０４では、伸張指示がなされた圧縮画像についての伸張処理がすべて完了したかどうか判定される。具体的には、前述のステップ８０５で得られた伸長指示数（カウント値）と、伸長処理部２１３の内部レジスタのカウント値（伸張処理が完了した画像数）とを比較する。伸張指示数のカウント値よりも伸長処理部２１３の内部レジスタのカウント値が小さい場合は、等しくなるまで（例えば一定間隔毎に）比較を繰り返す。なお、一定間隔毎の比較に代えて、例えば１つの圧縮画像に対する伸張処理が完了する毎に比較を行ってもよい。このような比較の結果、両カウント値が等しくなれば、ステップ９０５に進む。前述の２つの描画命令６０５及び６０６についてのスキャンライン処理の場合、ステップ８０５で読み込む圧縮画像伸長命令の数は“２”であるため、内部レジスタのカウンタ値（伸張処理が完了した画像数）が“２”となった段階でステップ９０５に進むことになる。
【００５７】
ステップ９０５では、注目スキャンラインが処理対象のバンド（ここでは奇数番目）に含まれているかどうか判定される。注目スキャンラインが処理対象のバンドに含まれている場合は、ステップ９０６に進む。一方、注目スキャンラインが非処理対象のバンド（ここでは偶数番目）に含まれている場合は、ステップ９０７に進む。
【００５８】
ステップ９０６では、注目スキャンラインについて、ビットマップ画像データにおける画素値を生成するフィル処理がなされる。描画対象のオブジェクトが、圧縮画像の写真オブジェクトである本実施例の場合、伸長画像格納用メモリ２２０に展開された伸長画像のデータを読み出し、レベルソートされたオブジェクトに基づいてスパン毎に、画素値の生成が行なわれる。生成された画素値は、処理対象ページのビットマップ画像データにおける画素値として、ＲＡＭ１０２に格納される。
【００５９】
ステップ９０７では、スプールされている描画命令分の描画範囲内のスキャンラインの処理が完了したか判定される。未処理のスキャンラインがある場合は、ステップ９０１に戻って次の注目スキャンラインを決定して処理を続行する。一方、処理が完了している場合は、ステップ９０８に進み、スプールされている描画命令を破棄して本処理を抜ける。
【００６０】
ここで、図７の３バンド目についてのスキャンライン処理を例に具体的に説明する。図１０は、伸長画像格納用メモリ２２０としてのＲＡＭ１０２内に画像データが格納される様子を表した図である。図１０において、領域１０１０は圧縮画像伸長命令６０３によって伸長された画像データを格納するために確保された領域であり、領域１０２０は圧縮画像伸長命令６０４によって伸長された画像データを格納するために確保された領域である。このように、ＲＡＭ１０２の内部に２つの領域が連続して確保される。なお、領域１０１０は、後述の第２レンダリング処理によっても参照され、必要な画像データが読み出される。第１レンダリング処理部２１１は、描画命令６０５及び６０６に基づき、ＲＡＭ１０２から圧縮画像伸長命令６０３及び６０４による伸長が完了した画像データを読み出す。このとき、第１レンダリング処理部２１１が読み出すのは、３バンド目の領域内に存在する画像データのみである。いま３バンド目にはオブジェクト４０１と４０２の２つのオブジェクトがある。例えばオブジェクト４０１の場合、まず、描画命令６０５に含まれる開始座標とパス点列によって表現される矩形領域の幅及び高さとから、３バンド目の領域内における画像データサイズが算出される。ここで、オブジェクト４０１の幅は２３０４−２５６＝２０４８ピクセルであり、オブジェクト４０１全体の４分の１に相当する高さは３０７２（１０２４×３）−２８１６＝２５６ピクセルである。それがＲＧＢの３チャンネル分となるので、３バンド目の領域内におけるオブジェクトの４０１の画像データサイズは、２０４８×２５６×３＝１５７２８６４ｂｙｔｅ（階調８ｂｉｔ：０ｘ１８００００）となる。そして、伸長後画像の先頭アドレスに上記算出した画像データサイズを足して得られる値（０ｘ０２００００００＋０ｘ１８００００＝０ｘ０２１８００００）が、オブジェクト４０１についての４バンド目の先頭アドレスとなる。第１のレンダリング処理では、オブジェクト４０１についての３バンド目の終端画素までを用いる。したがって、第１のレンダリング処理では、オブジェクト４０１について０ｘ０２１８００００以降の読み出しを省略する。オブジェクト４０１についての３バンド目の終端画素のアドレスは、４バンド目の先頭アドレス（０ｘ０２１８００００）−１ピクセル（３ｂｙｔｅ）＝０ｘ２１７ＦＦＦＤである。第１のレンダリング処理に用いられるデータの末尾アドレスは、４バンド目の先頭アドレス（０ｘ０２１８００００）−１ｂｙｔｅ＝０ｘ２１７ＦＦＦＦである。このように、本実施例では、画像データの読み出しの一部を省略することで処理コストを低減できる。
こうした一連の処理がオブジェクト４０２についても同様になされる。こうして、処理対象バンドである３バンド目に含まれるオブジェクト４０１及び４０２の上部４分の１に相当する一部画像１０３１と１０３２の画像データが読み出されることになる。そして、第１レンダリング処理部２１１は、当該読み出した一部画像データについてのフィル処理を行う。フィル処理によって生成された、一部画像１０３１と１０３２に対応する部分の画素値は、ＲＡＭ１０２に格納される。最終的なビットマップ画像データは、第１レンダリング処理によって生成される画素値と、後述の第２レンダリング処理によって生成される画素値とによって構成される。すなわち、本実施例に係るバンド並列レンダリング処理によって得られる、ページ単位のビットマップ画像データの画素値は、２つのレンダリング処理部がそれぞれ生成した画素値の集合である。
【００６１】
以上が、第１レンダリング処理部２１１におけるスキャンライン処理の内容である。
【００６２】
＜第２レンダリング処理＞
次に、第２レンダリング処理部２１２が担当する、第２のバンド（ここでは偶数バンド）についてのレンダリング処理（第２レンダリング処理）について説明する。図１１は、本実施例に係る、第２レンダリング処理の流れを示すフローチャートである。処理対象バンドが偶数バンドとなる点を除けば、基本的には、第１レンダリング処理の流れを示した図８のフローと同様の内容である。主な違いは、第２レンダリング処理では、圧縮画像伸長命令を読み込んだ場合に、伸長指示数のカウントのみを行って、当該圧縮画像伸長命令に基づく伸長指示を伸長処理部２１３に対して行わない点である。以下、図１１のフローチャートに沿って、第２レンダリング処理の特徴部分を中心に説明する。
【００６３】
ステップ１１０１〜１１０５は、前述の図８のフローにおけるステップ８０１〜８０５に相当する。ステップ１１０１で読み込む中間データは、第１レンダリング処理部２１１が読み込む中間データと共通のものである。上述のとおり、本フローにおいても、読み込んだ圧縮画像伸長命令の数（伸長指示数）のカウントは行うが（Ｓ１１０５）、その後は伸長処理部２１３に対する伸長指示を行うことなく、ステップ１１０１に戻る内容になっている。
【００６４】
ステップ１１０６〜１１０１は、前述の図８のフローにおけるステップ８０７〜８１２に相当する。ステップ１１０９のスキャンライン処理の内容も、前述の図９のフローで示した内容と異なるところはないが、処理対象バンドが偶数バンドとなる点が、第１レンダリング処理との違いである。すなわち、図９のフローにおける、注目スキャンラインが処理対象バンドに含まれているかどうかの判定（Ｓ９０５）では、偶数番目のバンドであるかどうかが判定され、偶数番目のバンド領域についてフィル処理（Ｓ９０６）がなされることになる。
【００６５】
ここで、再び図１０を用いて、図７の４バンド目についてのスキャンライン処理を説明する。第２レンダリング処理部２１２も、描画命令６０５及び６０６に基づき、ＲＡＭ１０２から圧縮画像伸長命令６０３及び６０４による伸長が完了した画像データを読み出す。このとき、第２レンダリング処理部２１１が読み出すのは、４バンド目の領域内に存在する画像データのみである。すなわち、処理対象バンドである４バンド目に含まれるオブジェクト４０１及び４０２の下部４分の３に相当する一部画像１０３３と１０３４の画像データが読み出されることになる。一部画像１０３３と１０３４の読み出しは、対象となる画像データのうち、第４のバンドに相当する部分のデータアドレスに直接アクセスすることで行われる。データアドレスの算出方法は第１のレンダリング処理と同様であり、画像データのデータサイズやデータ先頭アドレス、バンド領域等から算出される。例えば、４バンド目の領域内に存在するオブジェクト４０１の画像データは、０ｘ０２１８００００から読み出されることになる。オブジェクト４０１のパス点列（２３０４、３８４０）からオブジェクト４０１の終端画素が４バンド目の領域内にあることがわかる。そのため、第２のレンダリング処理では、オブジェクト４０１の画像データについて、０ｘ０２１８００００から終端アドレスまで読み出せばよい。オブジェクト４０１の画像データの末尾アドレスは、０ｘ０２５ＦＦＦＦＦであり、オブジェクト４０１の終端画素のアドレスは、０ｘ０２５ＦＦＦＦＤである。したがって、第２のレンダリング処理では、オブジェクト４０１について０ｘ０２１８００００よりも前のアドレスの読み出しを省略する。これを読み飛ばし（アドレスジャンプ）と呼ぶ。このように、本実施例では、画像データの読み出しの一部を省略することで処理コストを低減できる。こうした一連の処理がオブジェクト４０２についても同様になされる。
【００６６】
そして、第２レンダリング処理部２１２は、当該読み出した一部画像データについてのフィル処理を行う。フィル処理によって生成された、一部画像１０３３と１０３４に対応する部分の画素値は、ＲＡＭ１０２に格納される。
【００６７】
以上が、第２レンダリング処理部２１２におけるスキャンライン処理の内容である。
【００６８】
なお、本実施例では、レンダリング処理部が２つのケースについて説明した。しかし、レンダリング処理部の数は複数であればよく２つに限定されない。例えば、レンダリング処理部が３つの場合であれば、そのうちの１つのレンダリング処理部が、圧縮画像の伸張指示を伸張処理部に対して行い、他のレンダリング処理部はその伸張された画像のうちの必要な部分を参照してレンダリング処理を行う。つまり、各レンダリング処理部が、１つの伸張画像を共有して用いるように構成されていればよい。
【００６９】
本実施例によれば、複数のレンダリング処理部が、共通する中間データをそれぞれ読み込み、それぞれが担当するバンド領域を跨る圧縮画像の伸長結果を共有して使用しながらバンド並列レンダリング処理を行なう。そのため、バンド領域を跨ぐようにＰＤＬデータ内に圧縮画像に対し、ＰＤＬデータの解析や中間データの生成段階において事前に伸長して、各バンド領域内に収まるように画像を分割しなくても並列処理が可能となる。これにより、バンド境界を跨ぐように圧縮画像がＰＤＬデータ内に存在していても、レンダリングの開始の遅れを抑制することができる。
【実施例２】
【００７０】
実施例１では、並列に動作する複数のレンダリング処理部のうちの１つが圧縮画像の伸長指示を行い、当該伸張指示によって伸長された画像を他のレンダリング処理部でも使用する態様について説明した。次に、並列に動作する複数のレンダリング処理部の各々が伸張処理部と伸長画像格納用メモリを有する態様について、実施例２として説明する。なお、基本的な装置構成や処理フローは実施例１と同じであるので、以下では差異点について説明するものとする。
【００７１】
図１２は、本実施例に係る、ＲＩＰ１１１のハードウェア構成例を示す図である。本実施例のＲＩＰ１１１は、第１レンダリング処理部２１１’、第２レンダリング処理部２１２’を有し、各々のレンダリング処理部に対応する形で、第１伸長処理部１２０１と第２伸長処理部１２０２を有する。そして、さらに各々の伸長処理部に対応する形で、第１伸長画像格納用メモリ１２１１と第２伸長画像格納用メモリ１２１２が用意され、各伸張処理部で伸長された後の画像データがそれぞれ格納される。
【００７２】
そして、本実施例の場合、第１レンダリング処理部２１１’及び第２レンダリング処理部２１２’の双方が、前述の図８に示すフロー（すなわち、伸張処理部に対する伸張指示のステップを含むフロー）を実行する。最終的なビットマップ画像データは、第１レンダリング処理部２１１’によって生成される画素値と、第２レンダリング処理部２１２’によって生成される画素値とによって構成される。すなわち、本実施例に係るバンド並列レンダリング処理によって得られる、ページ単位のビットマップ画像データの画素値も、２つのレンダリング処理部がそれぞれ生成した画素値の集合である。
【００７３】
なお、本実施例の場合も、レンダリング処理部の数は複数であればよく２つに限定されない。例えば、レンダリング処理部が３つの場合であれば、各レンダリング処理部が、自身が担当するバンド領域に関わる圧縮画像の伸張処理を、それぞれに対応して設けられた伸張処理部を用いて行う。そして、各レンダリング処理部が、それぞれ伸張した画像のうちの必要な部分を参照してレンダリング処理を行う。つまり、各レンダリング処理部が自身のための伸張画像を別個に生成して用いるように構成されていればよい。
【００７４】
本実施例によれば、並列に動作する各々のレンダリング処理部が、対応する伸長処理部に伸長指示を行って別個に伸張画像を生成する。これにより、各レンダリング処理部は他のレンダリング処理部に依存する必要がなくなるので、より迅速な処理が可能となる。
【００７５】
＜変形例＞
実施例１では、中間データ内に圧縮画像とその伸長指示が含まれている態様について説明した。しかしながら、中間データ内に含まれる画像は、非圧縮画像であってもよい。非圧縮画像は、伸長処理されずに描画命令に用いられる点が圧縮画像と異なる。非圧縮画像は、圧縮形式（ＢＩＴＭＡＰ）、データサイズ、データ先頭アドレス、画像ＩＤを用いて管理される。非圧縮画像の場合、データ先頭アドレスをそのまま読み飛ばし（アドレスジャンプ）処理に利用することができる。
【００７６】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2017170884.tif 000003
【図２】
2017170884.tif 000004
【図３】
2017170884.tif 000005
【図４】
2017170884.tif 000006
【図５】
2017170884.tif 000007
【図６】
2017170884.tif 000008
【図７】
2017170884.tif 000009
【図８】
2017170884.tif 000010
【図９】
2017170884.tif 000011
【図１０】
2017170884.tif 000012
【図１１】
2017170884.tif 000013
【図１２】
2017170884.tif 000014