(57)【特許請求の範囲】
【請求項１】
ページ記述言語データに基づいて印刷を行う画像形成装置であって、
前記ページ記述言語データに含まれる描画コマンドを順次解析する解析手段と、
前記解析手段により解析された描画コマンドから描画コマンド単位で中間コードをそれぞれ並列に生成する複数の生成手段と、
前記複数の生成手段により生成された中間コードからイメージデータを生成するレンダリング手段と、
前記レンダリング手段により生成されたイメージデータを印刷する印刷手段と、
前記解析手段により解析された描画コマンドが、当該描画コマンドより先に解析され中間コード生成が終了していない各描画コマンドと処理順序を変更可能かどうか判定する判定手段と、
前記判定手段により前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記先に解析された描画コマンドの中間コード生成終了状況に関係なく前記生成手段に中間コード生成を依頼し、一方、前記判定手段により１又は複数の特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドの中間コード生成終了を待って前記生成手段に中間コード生成を依頼するように制御する管理手段と、
を有することを特徴とする画像形成装置。
【請求項２】
前記解析手段により解析され中間コード生成が終了していない描画コマンドを順次登録するための管理テーブルを有し、
前記判定手段は、前記解析手段により解析された描画コマンドが、前記管理テーブルに登録されている各描画コマンドと処理順序を変更可能かどうか判定するものであり、
前記管理手段は、前記判定手段により特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドを示す待合情報を付加した状態で前記管理テーブルに登録し、一方、前記判定手段により前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記待合情報なしの状態で前記管理テーブルに登録し、前記管理テーブルに登録されている各描画コマンドの状態に基づいて、前記各描画コマンドの中間コード生成を前記生成手段に依頼する、ことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記管理手段は、前記生成手段が１の描画オブジェクトの中間コード生成を終了すると、その描画オブジェクトを示す待合情報を前記管理テーブルに登録されている描画コマンドから削除し、前記待合情報のない状態で前記管理テーブルに登録されている描画コマンドから中間コード生成を依頼することを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記判定手段は、２つの描画コマンドの描画位置に重なりが有り、且つ、描画する色が異なる場合に、前記２つの描画コマンドについて処理順序変更不可能と判定し、上記場合以外の場合に、前記２つの描画コマンドについて処理順序変更可能と判定する判定処理を行う、ことを特徴とする請求項１乃至３のいずれか１項に記載の画像形成装置。
【請求項５】
前記判定手段は、前記解析手段により解析された描画コマンドに、当該描画コマンドと前記処理順序の判定を行わない描画コマンドを示す示唆情報が付加されている場合、当該描画コマンドと前記示唆情報が示す描画コマンドと間では前記判定処理を行うことなく処理順序変更可能であるとみなす、ことを特徴とする請求項４に記載の画像形成装置。
【請求項６】
前記示唆情報は、前記ページ記述言語データを生成する情報処理装置で動作してプリンタドライバにより付加されることを特徴とする請求項５に記載の画像形成装置。
【請求項７】
前記示唆情報は、１の描画データを分割して生成された複数の描画コマンドに対して、該複数の描画コマンドを示す情報として付加されることを特徴とする請求項６に記載の画像形成装置。
【請求項８】
情報処理装置から受信するページ記述言語データに基づいて印刷を行う画像形成装置の制御方法であって、
解析手段が、前記ページ記述言語データに含まれる描画コマンドを順次解析する解析ステップと、
生成手段が、前記解析ステップで解析された描画コマンドから描画コマンド単位で中間コードをそれぞれ並列に生成する複数の生成ステップと、
レンダリング手段が、前記複数の生成ステップで生成された中間コードからイメージデータを生成するレンダリングステップと、
印刷手段が、前記レンダリングステップで生成されたイメージデータを印刷する印刷ステップと、
判定手段が、前記解析ステップで解析された描画コマンドが、当該描画コマンドより先に解析され中間コード生成が終了していない各描画コマンドと処理順序を変更可能かどうか判定する判定ステップと、
管理手段が、前記判定ステップで前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記先に解析された描画コマンドの中間コード生成終了状況に関係なく前記生成手段に中間コード生成を依頼し、一方、前記判定ステップで１又は複数の特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドの中間コード生成終了を待って前記生成手段に中間コード生成を依頼するように制御する管理ステップと、
を有することを特徴とする画像形成装置の制御方法。
【請求項９】
コンピュータを、請求項１乃至７のいずれか１項に記載された手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページ記述言語（ＰＤＬ）のデータを複数のプロセッサにより処理する画像形成装置の制御に関するものである。
【背景技術】
【０００２】
近年、ハードウェア技術の向上により、マルチコアのＣＰＵが開発され、パーソナルコンピュータ（ＰＣ）等では、複数のアプリケーションを同時実行可能となっている。
マルチファンクションプリンタ（ＭＦＰ；Multifunction Printer又はMultifunction Peripheral）においても、コピー、プリント等の複数の機能をストレスなく並列実行するために、マルチコアのＣＰＵが搭載されるようになっている。
【０００３】
ページ記述言語（ＰＤＬ；Page Description Language）データの印刷処理を行う場合、各描画コマンドをマルチコアのＣＰＵによりそれぞれ並列に処理し、マルチコアのＣＰＵにより高速に処理する方法が提案されている（特許文献１参照）。
【０００４】
また、ＰＤＬデータ内の描画コマンドの並べ替えをしてから、各描画コマンドをそれぞれのＣＰＵで並列に処理し、効率よくマルチコアのＣＰＵで処理する方法も提案されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１１６４５０号公報
【特許文献２】特開２００９−２５９２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に示すように、ＰＤＬを並列に処理する場合、生成される中間コードの順序は保証されないため、ページ終了後、生成された中間コードの並べ替えを行う必要があり、並べ替えの処理に時間がかかってしまう。
【０００７】
また、特許文献２に示すように、事前にコマンドの並べ替えをする場合、全てのデータを事前に受け取る必要があり、メモリ資源を圧迫するとともに、最初の印刷を行うまで時間がかかってしまう。
【０００８】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、ページ記述言語データの描画コマンドから中間コードを生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアＣＰＵを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアＣＰＵを無駄なく使用し、ＣＰＵコア数に応じてページ記述言語データ処理のパフォーマンスを向上して、少ないメモリ資源でページ記述言語データを高速に処理し、印刷時間を短縮することができる仕組みを提供することである。
【課題を解決するための手段】
【０００９】
本発明は、ページ記述言語データに基づいて印刷を行う画像形成装置であって、前記ページ記述言語データに含まれる描画コマンドを順次解析する解析手段と、前記解析手段により解析された描画コマンドから描画コマンド単位で中間コードをそれぞれ並列に生成する複数の生成手段と、前記複数の生成手段により生成された中間コードからイメージデータを生成するレンダリング手段と、前記レンダリング手段により生成されたイメージデータを印刷する印刷手段と、前記解析手段により解析された描画コマンドが、当該描画コマンドより先に解析され中間コード生成が終了していない各描画コマンドと処理順序を変更可能かどうか判定する判定手段と、前記判定手段により前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記先に解析された描画コマンドの中間コード生成終了状況に関係なく前記生成手段に中間コード生成を依頼し、一方、前記判定手段により１又は複数の特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドの中間コード生成終了を待って前記生成手段に中間コード生成を依頼するように制御する管理手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ページ記述言語データの描画コマンドから中間コードを生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアＣＰＵを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアＣＰＵを無駄なく使用し、ＣＰＵコア数に応じてページ記述言語データ処理のパフォーマンスを向上して、少ないメモリ資源でページ記述言語データを高速に処理し、印刷時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施例を示す画像形成装置の構成の一例を示すブロック図である。
【図２】本発明におけるＰＤＬ全体のデータフローの一例を示す図である。
【図３】本発明におけるＰＤＬ全体のタスク制御の一例を示す図である。
【図４】画像形成装置１０１の電源投入時の処理の一例を示すフローチャートである。
【図５】実施例１における受信タスク４０１が実行する受信処理３０１の一例を示すフローチャートである。
【図６】実施例１におけるＰＤＬタスク４０２が実行するＰＤＬ処理３０２の一例を示すフローチャートである。
【図７】本発明におけるＰＤＬ全体のタスク制御の一例を示す図である。
【図８】実施例１におけるＤＬ生成管理タスク４０３が実行するＤＬ生成管理処理３０３の一例を示すフローチャートである。
【図９】図８のＳ１３６１に示したＤＬ生成終了処理の一例を示すフローチャートである。
【図１０】描画オブジェクトの描画イメージの一例を示す図である。
【図１１】実施例１におけるＤＬ生成管理タスク実行中のＤＬ生成管理テーブルの変化を説明するための図である。
【図１２】実施例１における各ＤＬ生成タスク４０４が実行するＤＬ生成処理３０４の一例を示すフローチャートである。
【図１３】実施例１におけるレンダラタスク４０５が実行するレンダリング処理３０５の一例を示すフローチャートである。
【図１４】実施例２におけるＰＤＬデータの一例を示す図である。
【図１５】実施例２におけるＤＬ生成管理タスク４０３の一例を示すフローチャートである。
【図１６】描画オブジェクトの描画結果の一例を示す図である。
【図１７】実施例２におけるＤＬ生成管理タスク実行中のＤＬ生成管理テーブルの変化を説明するための図である。
【図１８】２コアのＣＰＵにおける各処理の積み上げた時間を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について、図面を参照して説明する。
【実施例１】
【００１３】
図１は、本発明の一実施例を示す画像形成装置の構成の一例を示すブロック図である。
図１において、１０１は画像形成装置である。２０４は、画像形成装置１０１の演算処理や制御などを並列で行うことができるマルチコアの中央演算処理装置（ＣＰＵ）である。即ち、ＣＰＵ２０４は、複数のプロセッサに対応するものである。ＣＰＵ２０４は、複数のコア（演算ユニット）により、複数の処理（例えば、後述する複数のＤＬ生成タスク）を並列処理可能である。
【００１４】
２０１はＲＯＭで、ＣＰＵ２０４の制御コード等をコンピュータ読取可能に格納する。ＲＯＭ２０１に格納される制御コードは、後述する受信部２１１、解析部２１２、中間コード生成管理部２１３、中間コード生成部２１４、展開処理部２１５等として、ＣＰＵ２０４を機能させるためのものである。
【００１５】
２０２はＲＡＭで、様々な情報を一時格納する。ＲＡＭ２０２は、受信バッファ２２１、ワークメモリ２２２、フレームバッファ２２３、ラスタメモリ２２４等として利用される。
【００１６】
２０３はネットワークインターフェース（ネットワークＩ／Ｆ）で、ＰＣ等外部デバイスとネットワーク１０２を介して情報の入出力を行うためのものであり、外部デバイスから送信された印刷データを受信する。
【００１７】
受信部２１１は、ネットワークＩ／Ｆ２０３を介して受信したデータを受信バッファ２２１にデータを格納する。また、受信部２１１は、受信バッファ２２１から印刷データを読み出し、該読み出した印刷データからＰＤＬ（Page Discription Language）を特定し、ＰＤＬデータをワークメモリ２２２に格納し、解析部２１２にＰＤＬデータ（ページ記述言語データ）を渡す。
【００１８】
解析部２１２は、受信部２１１から渡されたＰＤＬデータをワークメモリ２２２から読み出し、コマンドを解析する。
中間コード生成管理部２１３は、解析部２１２において解析されたデータを判定し、中間コード生成を制御するための情報をワークメモリ２２２に格納する。
【００１９】
中間コード生成部２１４は、解析部２１２において解析されたデータから描画を行なうための内部情報である中間コード（ＤＬ：Display List（中間データともいう））を生成し、フレームバッファ２２３に格納する。なお、中間コード（ＤＬ）は、レンダラ（Ｒｅｎｄｅｒｅｒ）２０７により、ラスタイメージの生成が可能なデータである。
【００２０】
展開処理部２１５は、フレームバッファ２２３に格納された中間コード（ＤＬ）をラスタイメージ（ビットマップデータ）に展開し、該展開したラスタイメージをラスタメモリ２２４に格納する。なお、展開処理部２１５は、処理に時間がかかるため、専用ハードウェアであるレンダラ２０７を用いて高速に処理を行っている。
【００２１】
受信バッファ２２１は、ネットワークＩ／Ｆ２０３を介して受信した印刷データを格納するメモリである。ワークメモリ２２２は、入力された印刷データから特定されたＰＤＬデータや、中間コードに変換するときに一時的に使用するメモリである。
【００２２】
フレームバッファ２２３は、中間コード生成部２１４で生成された中間コードを格納するメモリである。ラスタメモリ２２４は、フレームバッファ２２３に格納された中間コードから展開処理部２１５により展開制御されたラスタイメージを格納するメモリである。
【００２３】
レンダラ２０７は、上述したように、展開処理部２１５の制御により、フレームバッファ２２３に格納されているディスプレイリスト（ＤＬ）を入力として、ラスタイメージを生成する専用ハードウェアである。
【００２４】
２０５はエンジンＩ／Ｆで、プリンタエンジン２０６との信号の入出力を行う。プリンタエンジン２０６は、ラスタイメージデータに基づいて、例えば、周知の電子写真プロセスによって感光ドラム上に潜像を形成し、用紙に転写して定着し印字を行う。なお、プリンタエンジン２０６の印刷方法は、電子写真プロセスによる印刷方法に限定されるものではなく、どのような印刷方法であってもよく、例えばインクジェット方式、昇華式等の他の印刷方法でもよい。
【００２５】
図２は、本発明におけるＰＤＬ全体のデータフローの一例を示す図である。なお、図２に示す各処理はインプットとアウトプットのデータがあり、それぞれＲＡＭ２０２に一時的に格納される。
【００２６】
受信処理３０１は、受信部２１１で実行される処理である。受信処理３０１は、受信バッファ２２１に格納された受信データからＰＤＬを特定し、ＰＤＬデータ３１１をワークメモリ２２２に格納する。
【００２７】
ＰＤＬ処理３０２は、解析部２１２で実行される処理である。ＰＤＬ処理３０２は、ワークメモリ２２２に格納されたＰＤＬデータ３１１を解析し、解析したコマンドに従って中間コード生成コマンド（ＤＬ生成コマンド３１２）をワークメモリ２２２に格納する。なお、ＤＬ生成コマンド３１２とは、ＰＤＬデータから解析された描画コマンド毎に生成されるものであり、該描画コマンドから中間コードを生成するための命令である。
【００２８】
ＤＬ生成管理処理３０３は、中間コード生成管理部２１３で実行される処理である。ＤＬ生成管理処理３０３は、ワークメモリ２２２に格納されたＤＬ生成コマンド３１２に従って判定を行う。そして、判定結果に基づいて、ＤＬ生成管理処理３０３は、ワークメモリ２２２内のＤＬ生成管理テーブル３１５に、ＤＬ生成コマンドの描画情報（描画オブジェクト）を格納（順次登録）し、ＤＬ生成実行を管理する。
【００２９】
ＤＬ生成処理３０４は、中間コード生成部２１４で実行される処理である。ＤＬ生成処理３０４は、ワークメモリ２２２に格納されたＤＬ生成コマンド３１２に従って、ＤＬ３１３を生成し、フレームバッファ２２３に格納する。
【００３０】
レンダリング処理３０５は、展開処理部２１５で実行され処理である。レンダリング処理３０５は、レンダラ２０７を用いて、フレームバッファ２２３に格納されたＤＬ３１３からビットマップ３１４を生成し、ラスタメモリ２２４に格納する。
なお、ＰＤＬにおいては、以上説明した各処理をシーケンシャルに実行し、通常、ＰＤＬデータのコマンド順にＤＬを生成する必要がある。
【００３１】
図３は、本発明におけるＰＤＬ全体のタスク制御の一例を示す図である。なお、図３に示す各タスクは、画像形成装置１０１の電源投入時に生成され、他のタスクからの指示に従って各タスクの処理が実行される。
【００３２】
受信タスク４０１は、ネットワークＩ／Ｆ２０３からの指示に従って受信処理３０１を実行し、ＰＤＬタスク４０２にジョブ開始を依頼する。
ＰＤＬタスク４０２は、受信タスク４０１にＰＤＬデータを要求し、ＰＤＬ処理３０２の解析結果からＤＬ生成管理タスク４０３に処理依頼する。
ＤＬ生成管理タスク４０３は、ＰＤＬタスク４０２から処理依頼されたデータの判定と複数のＤＬ生成タスク４０４の動作状況を管理し、ＤＬ生成タスク４０４に処理依頼をする。また、ＤＬ生成管理タスク４０３は、１ページ分のＤＬ生成を終了するとレンダラタスク４０５に処理を依頼する。
【００３３】
各ＤＬ生成タスク４０４はそれぞれ、ＤＬ生成管理タスク４０３から処理依頼された描画コマンドから描画コマンド単位で中間コード（ＤＬ）を生成するＤＬ生成処理３０４を行う。
レンダラタスク４０５は、ＤＬ生成管理タスク４０３からの依頼に従ってレンダリング処理３０５を実行し、不図示のエンジンタスクに渡して印刷処理を依頼する。
なお、各タスクは全て独立であり、マルチコアのＣＰＵ２０４において、複数のタスクを並列に実行できる。
【００３４】
以下、画像形成装置１０１処理についてフローチャートを参照して説明する。
図４は、画像形成装置１０１の電源投入時の処理の一例を示すフローチャートである。なお、このフローチャートの処理（Ｓ１００１〜Ｓ１００５等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１にコンピュータ読み取り可能に記録されたプログラムを実行することにより実現されるものである。
【００３５】
Ｓ１００１において、ＣＰＵ２０４は、受信タスク４０１を起動し、受信処理３０１を実行可能にする。
次に、Ｓ１００２において、ＣＰＵ２０４は、ＰＤＬタスク４０２を起動し、ＰＤＬ処理３０２を実行できるようにする。
次に、Ｓ１００３において、ＣＰＵ２０４は、ＤＬ生成管理タスク４０３を起動し、ＤＬ生成管理処理３０３を実行できるようにする。
【００３６】
次に、Ｓ１００４において、ＣＰＵ２０４は、１つまたは複数のＤＬ生成タスク４０４を起動し、ＤＬ生成処理３０４を実行できるようにする。ＣＰＵ２０４は、ＣＰＵコアの数だけＤＬ生成タスク４０４を起動し、各ＣＰＵコアにより並列に実行するようにする。
次に、Ｓ１００５において、ＣＰＵ２０４は、レンダラタスク４０５を起動し、レンダリング処理３０５を実行できるようにする。
なお、各ステップは、順不同で実行することができ、各タスク間で通信できるようにする。
【００３７】
以下、画像形成装置１０１の各タスクについてフローチャートを参照して説明する。
図５は、実施例１における受信タスク４０１が実行する受信処理３０１の一例を示すフローチャートである。即ち、このフローチャートの処理（Ｓ１１０１〜Ｓ１１２１等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１に記録されたプログラム（受信部２１１）を実行することにより実現されるものである。
【００３８】
まず、受信タスク４０１は、データ受信待ち、又はデータ取得依頼待ちを行う（Ｓ１１０１，Ｓ１１１０）。ネットワークＩ／Ｆ２０３を介してデータ受信すると（Ｓ１１０１でＹｅｓ）、受信タスク４０１は、Ｓ１１０２において、受信バッファ２２１にデータを格納する。
【００３９】
次に、Ｓ１１０３において、受信タスク４０１は、ジョブ開始実行済みか否かを判定する。そして、まだジョブ開始実行していないと判定した場合（Ｓ１１０３でＮｏ）、受信タスク４０１は、Ｓ１１０４によりを進める。Ｓ１１４では、受信タスク４０１は、ＰＤＬタスク４０２に「ジョブ開始通知」を行う。この「ジョブ開始通知」に応じて、ＰＤＬタスク４０２は「データ取得依頼」を受信タスクに行う。
【００４０】
一方、既にジョブ開始実行していると判定した場合（Ｓ１１０３でＹｅｓ）、受信タスク４０１は、Ｓ１１０１に処理を戻す。
また、ネットワークＩ／Ｆ２０３を介してＰＤＬタスク４０２から「データ取得依頼」を受信すると（Ｓ１１１０でＹｅｓ）、受信タスク４０１は、Ｓ１１１１に処理を進める。
【００４１】
Ｓ１１１１では、受信タスク４０１は、受信バッファ２２１にデータが格納されているか否かを判定する。
そして、受信バッファ２２１にデータが格納されていると判定した場合（Ｓ１１１１でＹｅｓ）、受信タスク４０１は、Ｓ１１１２に処理を進める。
Ｓ１１１２では、受信タスク４０１は、ＰＤＬタスク４０２からデータ取得依頼時に渡されたワークメモリ２２２のアドレスに、上記受信バッファ２２１に格納されたデータをコピーする。
【００４２】
次に、Ｓ１１１３において、受信タスク４０１は、「データ取得完了」をＰＤＬタスク４０２に通知する。次に、Ｓ１１１４において、受信タスク４０１は、受信バッファ２２１を解放し、Ｓ１１０１に処理を戻す。
【００４３】
一方、受信バッファ２２１にデータが格納されていないと判定した場合（Ｓ１１１１でＮｏ）、受信タスク４０１は、Ｓ１１２０において、データ受信待ちを行う。
そして、ネットワークＩ／Ｆ２０３を介してデータを受信すると（Ｓ１１２０でＹｅｓ）、受信タスク４０１は、Ｓ１１２１において、データ取得依頼時に渡されたワークメモリ２２２のアドレスに、上記受信したデータを格納し、Ｓ１１１２に処理を進める。
【００４４】
図６は、実施例１におけるＰＤＬタスク４０２が実行するＰＤＬ処理３０２の一例を示すフローチャートである。このフローチャートの処理（Ｓ１２０１〜Ｓ１２２３等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１に記録されたプログラム（解析部２１２）を実行することにより実現されるものである。
【００４５】
まず、ＰＤＬタスク４０２は、Ｓ１２０１において、受信タスク４０１からの「ジョブ開始通知」待ちを行う。そして、受信タスク４０１から「ジョブ開始通知」を受けると、Ｓ１２０２において、ＰＤＬタスク４０２は、受信タスク４０１にワークメモリ２２２のアドレスを渡し、「データ取得依頼」を行う。
【００４６】
次に、Ｓ１２０３において、ＰＤＬタスク４０２は、受信タスク４０１からのデータ取得完了通知待ちを行う。そして、受信タスク４０１からデータ取得完了通知を受けると（Ｓ１２０３でＹｅｓ）、ＰＤＬタスク４０２は、Ｓ１２０４で、上記ワークメモリ２２２のアドレスに格納されたデータを解析する。
【００４７】
次に、Ｓ１２０５において、ＰＤＬタスク４０２は、上記Ｓ１２０４での解析の結果、上記ワークメモリ２２２に格納されたデータがページ開始を示すデータか否かを判定する。
【００４８】
そして、ページ開始を示すデータであると判定した場合（Ｓ１２０５でＹｅｓ）、ＰＤＬタスク４０２は、Ｓ１２０６において、ＤＬ生成管理タスク４０３に、「ページ開始通知」を行う。
【００４９】
次に、Ｓ１２０７において、ＰＤＬタスク４０２は、ＤＬ生成管理タスク４０３からの「ページ開始処理完了通知」待ちを行う。そして、ＤＬ生成管理タスク４０３から「ページ開始処理完了通知」を受けると（Ｓ１２０７でＹｅｓ）、ＰＤＬタスク４０２は、Ｓ１２０２に処理を戻す。
【００５０】
一方、上記Ｓ１２０５において、ページ開始を示すデータでないと判定した場合（Ｓ１２０５でＮｏ）、ＰＤＬタスク４０２は、Ｓ１２１０に処理を進める。
Ｓ１２１０では、ＰＤＬタスク４０２は、上記ワークメモリ２２２に格納されたデータがページ終了を示すデータであるか否かを判定する。
そして、ページ終了を示すデータであると判定した場合（Ｓ１２１０でＹｅｓ）、ＰＤＬタスク４０２は、Ｓ１２１１において、ＤＬ生成管理タスク４０３に、「ページ終了通知」を行う。
【００５１】
さらに、Ｓ１２１２において、ＰＤＬタスク４０２は、ＤＬ生成管理タスク４０３からの「ページ終了処理完了通知」待ちを行う。そして、ＤＬ生成管理タスク４０３から「ページ終了処理完了通知」を受けると（Ｓ１２１２でＹｅｓ）、ＰＤＬタスク４０２は、Ｓ１２０２に処理を戻す。
【００５２】
一方、上記Ｓ１２１０において、ページ終了を示すデータでないと判定した場合（Ｓ１２１０でＮｏ）、ＰＤＬタスク４０２は、Ｓ１２２０に処理を進める。
Ｓ１２２０では、ＰＤＬタスク４０２は、上記ワークメモリ２２２に格納されたデータがジョブ終了を示すデータであるか否かを判定する。そして、ジョブ終了示すデータでないと判定した場合（Ｓ１２２０でＮｏ）、ＰＤＬタスク４０２は、Ｓ１２２１に処理を進める。
【００５３】
Ｓ１２２１では、ＰＤＬタスク４０２は、上記ワークメモリ２２２に格納されたデータ（描画コマンド）からＤＬ生成コマンドを生成し、ワークメモリ２２２に格納する。
次に、Ｓ１２２２において、ＰＤＬタスク４０２は、ＤＬ生成管理タスク４０３へＤＬ生成処理依頼を行う。この際、ワークメモリ２２２を介して、上記Ｓ１２２１で生成したＤＬ生成コマンドをＤＬ生成管理タスク４０３へ渡す。
【００５４】
さらに、Ｓ１２２３において、ＰＤＬタスク４０２は、ＤＬ生成管理タスク４０３からのＤＬ生成終了通知待ちを行う。そして、ＤＬ生成管理タスク４０３からＤＬ生成終了通知を受けると（Ｓ１２２３でＹｅｓ）、ＰＤＬタスク４０２は、Ｓ１２０２に処理を戻す。
【００５５】
一方、上記ワークメモリ２２２に格納されたデータがジョブ終了を示すデータであると判定した場合（Ｓ１２２０でＹｅｓ）、ＰＤＬタスク４０２は、Ｓ１２０１に処理を戻す。
【００５６】
ここで、図７を参照して、ＤＬ生成タスク４０４にてＤＬ生成処理される描画オブジェクトについて説明する。
図７は、実施例１において処理される描画コマンドで描画指示される描画オブジェクトの構成の一例を示す図である。
図７に示すように、描画オブジェクトは、外径１００１を形成する複数の頂点座標３（Ｘｎ，Ｙｎ）の点列を示すデータを含む。また、描画オブジェクトは、その外径１００１又は外径内の領域１００３を描画する色値（Ｒ，Ｇ，Ｂ）と、その外径１００１を包含する矩形１００２の左上の描画座標（Ｘ，Ｙ）と、矩形１００２の幅Ｗｄ、高さＨｔを示すデータを含む。
【００５７】
後述する重なり判定おいては、各描画オブジェクトの矩形１００２の描画座標（Ｘ，Ｙ）と、矩形１００２の幅Ｗｄ、高さＨｔを用いて判定する。また、後述する色の判定においては、外径１００１又は外径に囲まれた領域１００３を描画する色値（Ｒ，Ｇ，Ｂ）を用いて判定する。
【００５８】
図８は、実施例１におけるＤＬ生成管理タスク４０３が実行するＤＬ生成管理処理３０３の一例を示すフローチャートである。このフローチャートの処理（Ｓ１３０１〜Ｓ１３８２等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１に記録されたプログラム（中間コード生成管理部２１３）を実行することにより実現されるものである。
【００５９】
ＤＬ生成管理タスク４０３は、他のタスクからの通知を受信すると、該通知がＤＬ生成依頼、ＤＬ生成終了通知、ページ開始通知、ページ終了通知かを判定する（Ｓ１３０１、Ｓ１３６０、Ｓ１３７０、Ｓ１３８０）。
【００６０】
そして、受信した通知がＰＤＬタスク４０２からの「ページ開始通知」であると判定した場合（Ｓ１３７０でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３７１に処理を進める。
【００６１】
Ｓ１３７１では、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトのＩＤを示すＣｕｒＩＤと、ＤＬ生成管理テーブルに登録されている描画オブジェクトの数を示すＯｂｊｅｃｔＣｏｕｎｔ（ＲＡＭ２０２内に確保される変数）を「０」に初期化する。なお、ＣｕｒＩＤは、カレントの描画オブジェクトのＩＤを示す変数であり、ＲＡＭ２０２内に確保される。また、ＯｂｊｅｃｔＣｏｕｎｔは、後述するＤＬ生成管理テーブルに登録されている描画オブジェクトの数を示す変数であり、ＲＡＭ２０２内に確保される。
【００６２】
次に、ＤＬ生成管理タスク４０３は、Ｓ１３７２において、ＰＤＬタスク４０２に「ページ開始処理完了通知」を行い、Ｓ１３０１に処理を戻す。
また、受信した通知がＰＤＬタスク４０２からの「ＤＬ生成依頼」であると判定した場合（Ｓ１３０１でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３０２に処理を進める。
Ｓ１３０２では、ＤＬ生成管理タスク４０３は、ＣｕｒＩＤをインクリメントする。
次に、Ｓ１３０３において、ＤＬ生成管理タスク４０３は、ＤＬ生成依頼とともにワークメモリ２２２を介して受け取ったＤＬ生成コマンドから生成されるカレントの描画オブジェクトに、ＣｕｒＩＤを割り当てる。なお、この描画オブジェクトは、ＤＬ生成コマンドがＤＬ生成を指示する描画コマンドで描画指示される描画オブジェクトに対応する。
【００６３】
次に、Ｓ１３０４において、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトの描画位置（ＣｕｒＸ、ＣｕｒＹ）、幅ＣｕｒＷｄ、高さＣｕｒＨｔ、色（ＣｕｒＲ、ＣｕｒＧ、ＣｕｒＢ）を上記ＤＬ生成コマンドから取得する。
【００６４】
次に、Ｓ１３０５において、ＤＬ生成管理タスク４０３は、ＯｂｊｅｃｔＣｏｕｎｔが「０」であるか否かを判定する。
そして、ＯｂｊｅｃｔＣｏｕｎｔが「０」であると判定した場合（Ｓ１３０５でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３２２に処理を進める。
Ｓ１３２２では、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトの情報を、ＤＬ生成管理テーブルに、「ＤＬ生成処理中状態」で登録する。例えば、図１１（ａ）の１２２１に示すように、ＣｕｒＩＤ、描画位置、幅、高さ、色、及び１２２２に示すように、ＤＬ生成処理中状態（ここでは１２１１や１２１２のように「ＤＬ生成処理中状態」を示す「Ｅｘｅｃ」）を、ＤＬ生成管理テーブルに登録する。
【００６５】
次に、ＤＬ生成管理タスク４０３は、Ｓ１３２３において、ＯｂｊｅｃｔＣｏｕｎｔをインクリメントし、Ｓ１３２４において、空き状態のＤＬ生成タスク４０４に「ＤＬ生成依頼」をして、Ｓ１３０１に処理を戻す。なお、ＤＬ生成依頼の際には、ＤＬ生成依頼とともにＤＬ生成コマンドをＤＬ生成タスク４０４に通知する。このＤＬ生成依頼を受けたＤＬ生成タスク４０４は、ＤＬ生成を行い、「ＤＬ生成終了通知」をＤＬ生成管理タスク４０３に返す（詳細は、後述する図１２に示す）。
【００６６】
また、上記Ｓ１３０５において、ＯｂｊｅｃｔＣｏｕｎｔが「０」でないと判定した場合（Ｓ１３０５でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１３１０に処理を進める。
Ｓ１３１０では、ＤＬ生成管理タスク４０３は、ＤＬ生成管理テーブルに登録されている描画オブジェクトを１つ取得し、該取得した描画オブジェクトの描画位置（Ｘ、Ｙ）、幅Ｗｄ、高さＨｔ、色（Ｒ、Ｇ、Ｂ）、描画オブジェクトＩＤのＯｂｊＩＤを取得する。
【００６７】
そして、Ｓ１３１１において、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトと上記Ｓ１３１０で取得したＤＬ生成管理テーブルに登録されている描画オブジェクトについて、描画位置、幅、高さをそれぞれ比較し、重なりがあるか否かを判定する。重なりの有無の判定方法は以下の条件文で行う。
【００６８】
（ＣｕｒＸ＜Ｘ＋Ｗｄ） ＡＮＤ （ＣｕｒＹ＜Ｙ＋Ｈｔ） ＡＮＤ （ＣｕｒＸ＋ＣｕｒＷｄ＞Ｘ） ＡＮＤ （ＣｕｒＹ＋ＣｕｒＨｔ＞Ｙ）
そして、この条件文を満たす場合には重なりがあると判定し、一方、この条件文を満たさない場合には重なりがないと判定する。
【００６９】
そして、重なりがないと判定した場合（Ｓ１３１１でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１３１４に処理を進める。
一方、重なりがあると判定した場合（Ｓ１３１１でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３１２に処理を進める。
Ｓ１３１２では、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトと上記Ｓ１３１０で取得したＤＬ生成管理テーブルに登録されている描画オブジェクトについて、色（Ｒ，Ｇ，Ｂ）を比較し、色が異なるか否かを判定する。色の判定方法は以下の条件文で行う。
【００７０】
（ＣｕｒＲ≠Ｒ） ＯＲ （ＣｕｒＧ≠Ｇ） ＯＲ （ＣｕｒＢ≠Ｂ）
そして、この条件文を満たす場合には色が同じと判定し、一方、この条件文を満たさない場合には色が異なると判定する。
【００７１】
そして、色が同じと判定した場合（Ｓ１３１２でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１３１４に処理を進める。
一方、色が異なると判定した場合（Ｓ１３１２でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３１３に処理を進める。
Ｓ１３１３では、ＤＬ生成管理タスク４０３は、待ち合わせ対象の描画オブジェクトとしてＯｂｊＩＤを保持する。なお、ＯｂｊＩＤは、ＲＡＭ２０２内に保持される。
即ち、本実施例の待ち合わせ判定処理では、２つの描画コマンドの描画位置に重なりが有り、且つ、描画する色が異なる場合に、前記２つの描画コマンドについて処理順序変更不可能と判定し、上記場合以外の場合に、前記２つの描画コマンドについて処理順序変更可能と判定する。
次に、Ｓ１３１４において、ＤＬ生成管理タスク４０３は、ＤＬ生成管理テーブルに登録されている描画オブジェクトを全てチェックしたか否かを判定する。そして、ＤＬ生成管理テーブルに登録されている描画オブジェクトを全てチェックしたと判定するまで、Ｓ１３１０〜Ｓ１３１４を繰り返し実行する。
【００７２】
一方、ＤＬ生成管理テーブルに登録されている描画オブジェクトを全てチェックしたと判定した場合（Ｓ１３１４でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３２０に処理を進める。
【００７３】
Ｓ１３２０では、ＤＬ生成管理タスク４０３は、待ち合わせ対象の描画オブジェクトのＩＤが保持されているか否かを判定する。
そして、待ち合わせ対象の描画オブジェクトのＩＤが保持されていないと判定した場合（Ｓ１３２０でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３２１に処理を進める。
Ｓ１３２１では、ＤＬ生成管理タスク４０３は、空き状態のＤＬ生成タスク４０４があるか否かを判定する。
そして、空き状態のＤＬ生成タスク４０４があると判定した場合（Ｓ１３２１でＹｅｓ）、ＤＬ生成管理タスク４０３は、上述したＳ１３２２〜Ｓ１３２４の処理を実行し、Ｓ１３０１に処理を戻す。
【００７４】
一方、空き状態のＤＬ生成タスクがないと判定した場合（Ｓ１３２１でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１３３０に処理を進める。
Ｓ１３３０では、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトを、ＤＬ生成管理テーブルに、「ＤＬ生成タスク空き待ち状態」で登録する。例えば、図１１（ａ）の１２２１に示すように、ＣｕｒＩＤ、描画位置、幅、高さ、色、及び１２２２に示すように、ＤＬ生成タスク空き待ち状態（ここでは１２１４のように、「ＤＬ生成タスク空き待ち状態」を示す「ｗａｉｔ＝０」）を、ＤＬ生成管理テーブルに登録する。
【００７５】
さらに、ＤＬ生成管理タスク４０３は、Ｓ１３５０において、ＯｂｊｅｃｔＣｏｕｎｔをインクリメントし、Ｓ１３０１に処理を戻す。
また、上記Ｓ１３２０において、待ち合わせ対象の描画オブジェクトのＩＤが保持されていると判定した場合（Ｓ１３２０でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１３４０に処理を進める。
【００７６】
Ｓ１３４０では、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトを、ＤＬ生成管理テーブルに、「待ち合わせ状態」で登録する。例えば、図１１（ａ）の１２２１に示すように、ＣｕｒＩＤ、描画位置、幅、高さ、色、及び１２２２に示すように、「待ち合わせ状態」（例えば、待ち合わせＩＤが「２」の場合、１２１３のように「ＩＤ＝２の待ち合わせ状態」を示す「ｗａｉｔ＝２」）を、ＤＬ生成管理テーブルに登録する。なお、待ち合わせＩＤが複数（例えば、０，２，４）保持されている場合には、「ｗａｉｔ＝０，２，４」のように、複数の待ち合わせＩＤ（待合情報）を登録する。
【００７７】
そして、ＤＬ生成管理タスク４０３は、ＯｂｊｅｃｔＣｏｕｎｔをインクリメントし（Ｓ１３５０）、Ｓ１３０１に処理を戻す。
また、ＤＬ生成管理タスク４０３は、受信した通知がＤＬ生成タスク４０４からの「ＤＬ生成終了通知」であると判定した場合（Ｓ１３６０でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３６１に処理を進める。
【００７８】
Ｓ１３６１では、ＤＬ生成管理タスク４０３は、後述する図９に示すＤＬ生成終了処理を行い、Ｓ１３０１に処理を戻す。
また、ＤＬ生成管理タスク４０３は、受信した通知がＰＤＬタスク４０２からの「ページ終了通知」であると判定した場合（Ｓ１３８０でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３８１に処理を進める。
【００７９】
Ｓ１３８１では、ＤＬ生成管理タスク４０３は、レンダラタスク４０５に、「レンダリング処理依頼」を行う。
さらに、Ｓ１３８２において、ＤＬ生成管理タスク４０３は、ＰＤＬタスク４０２に、「ページ終了処理完了通知」を行い、Ｓ１３０１に処理を戻す。
【００８０】
図９は、図８のＳ１３６１に示したＤＬ生成終了処理の一例を示すフローチャートである。このフローチャートの処理（Ｓ１４０１〜Ｓ１４３０等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１に記録されたプログラム（中間コード生成管理部２１３）を実行することにより実現されるものである。
【００８１】
まず、Ｓ１４０１において、ＤＬ生成管理タスク４０３は、ＤＬ生成タスク４０４から「ＤＬ生成終了通知」とともに通知された終了した描画オブジェクトのＩＤと一致する描画オブジェクト情報をＤＬ生成管理テーブルから削除する。
【００８２】
次に、Ｓ１４０２において、ＤＬ生成管理タスク４０３は、ＯｂｊｅｃｔＣｏｕｎｔをデクリメントする。
さらに、Ｓ１４０３において、ＤＬ生成管理タスク４０３は、ＯｂｊｅｃｔＣｏｕｎｔが「０」か否かを判定する。
そして、ＯｂｊｅｃｔＣｏｕｎｔが「０」であると判定した場合（Ｓ１４０３でＹｅｓ）、ＤＬ生成管理タスク４０３は、本ＤＬ生成終了処理を終了し、図８のフローチャートに処理を戻す。
【００８３】
一方、ＯｂｊｅｃｔＣｏｕｎｔが「０」でないと判定した場合（Ｓ１４０３でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１４０４に処理を進める。
Ｓ１４０４では、ＤＬ生成管理タスク４０３は、ＤＬ生成管理テーブルに登録されている描画オブジェクトの情報を１つ取得し、該取得した描画オブジェクト（以下、「現在の描画オブジェクト」という）の状態が「ＤＬ生成処理中状態」か否かを判定する。
【００８４】
そして、現在の描画オブジェクトの状態が「ＤＬ生成処理中状態」であると判定した場合（Ｓ１４０４でＹｅｓ）、ＤＬ生成管理タスク４０３は、そのままＳ１４３０に処理を進める。
【００８５】
一方、現在の描画オブジェクトの状態が「ＤＬ生成処理中状態」でないと判定した場合（Ｓ１４０４でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１４０５に処理を進める。
Ｓ１４０５では、ＤＬ生成管理タスク４０３は、上記終了した描画オブジェクトのＩＤが、現在の描画オブジェクトの待ち合わせ対象のＩＤか否かを判定する。
そして、上記終了した描画オブジェクトのＩＤが現在の描画オブジェクトの待ち合わせ対象のＩＤでないと判定した場合（Ｓ１４０５でＮｏ）、ＤＬ生成管理タスク４０３は、そのままＳ１４３０に処理を進める。
【００８６】
一方、上記終了した描画オブジェクトのＩＤが現在の描画オブジェクトの待ち合わせ対象のＩＤであると判定した場合（Ｓ１４０５でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１４０６に処理を進める。
【００８７】
Ｓ１４０６では、ＤＬ生成管理タスク４０３は、上記終了した描画オブジェクトのＩＤを、現在の描画オブジェクトの待ち合わせ対象のＩＤから削除する。例えば、上記終了した描画オブジェクトのＩＤが「１」で、現在の描画オブジェクトの状態が「ｗａｉｔ＝１，２」の場合、待ち合わせ対象のＩＤ「１」を削除して「ｗａｉｔ＝２」のようにする。
【００８８】
次に、Ｓ１４０７において、ＤＬ生成管理タスク４０３は、現在の描画オブジェクトに、待ち合わせ対象のＩＤが登録されている（待ち合わせ対象あり）か否かを判定する。
そして、現在の描画オブジェクトに、待ち合わせ対象のＩＤが登録されている（待ち合わせ対象あり）と判定した場合（Ｓ１４０７でＮｏ）、ＤＬ生成管理タスク４０３は、そのままＳ１４３０に処理を進める。
【００８９】
一方、現在の描画オブジェクトに、待ち合わせ対象のＩＤが登録されていない（待ち合わせ対象なし）と判定した場合（Ｓ１４０７でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１４０８に処理を進める。
【００９０】
Ｓ１４０８では、ＤＬ生成管理タスク４０３は、空き状態のＤＬ生成タスク４０４が存在する（ＤＬ生成タスク４０４が空いている）か否かを判定する。
そして、空き状態のＤＬ生成タスク４０４が存在する（ＤＬ生成タスク４０４が空いている）と判定した場合（Ｓ１４０８でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１４１０に処理を進める。
【００９１】
Ｓ１４１０では、ＤＬ生成管理タスク４０３は、ＤＬ生成管理テーブルに登録されている現在の描画オブジェクトの状態の「ＤＬ生成処理中状態」を示す「Ｅｘｅｃ」に変更し、Ｓ１４１１において、空き状態のＤＬ生成タスク４０４にＤＬ生成依頼する。
【００９２】
一方、空き状態のＤＬ生成タスク４０４が存在しない（ＤＬ生成タスク４０４が空いていない）と判定した場合（Ｓ１４０８でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１４２０に処理を進める。
【００９３】
Ｓ１４２０では、ＤＬ生成管理タスク４０３は、現在の描画オブジェクトの状態を「ＤＬ生成タスク空き待ち状態」を示す「Ｗａｉｔ＝０」に変更し、Ｓ１４３０に処理を進める。
【００９４】
Ｓ１４３０では、ＤＬ生成管理タスク４０３は、ＤＬ生成管理テーブルの全ての描画オブジェクトについてＳ１４０４〜Ｓ１４３０の処理が終わったか否かを判定する。
そして、まだＤＬ生成管理テーブルの描画オブジェクトでＳ１４０４〜Ｓ１４３０の処理が終わっていないものがあると判定した場合（Ｓ１４３０でＮｏ）、ＤＬ生成管理タスク４０３は、Ｓ１４０４に処理を進める。
【００９５】
一方、既にＤＬ生成管理テーブルの全ての描画オブジェクトについてＳ１４０４〜Ｓ１４３０の処理が終わったと判定した場合（Ｓ１４３０でＹｅｓ）、ＤＬ生成管理タスク４０３は、本ＤＬ生成終了処理を終了し、図８のフローチャートに処理を戻す。
【００９６】
以上示した図９の処理は、ＤＬ生成タスク４０４から「ＤＬ生成終了通知」を受け取る毎に実行される。即ち、図９の処理は、ＤＬ生成タスク４０４がＤＬ生成を終了するごとに実行される。
【００９７】
以下、図１０、図１１（ａ）〜図１１（ｃ）を参照して、図８，図９で示したＤＬ生成管理タスク実行中のＤＬ生成管理テーブルの変化を具体的に説明する。
図１０、図１１（ａ）〜図１１（ｃ）は、実施例１におけるＤＬ生成管理タスク実行中のＤＬ生成管理テーブルの変化を説明するための図である。なお、ここでは、ＤＬ生成タスク４０４が２つの場合を例に、ＤＬ生成管理テーブルの登録、削除について説明する。
【００９８】
図１０は、描画オブジェクトの描画イメージの一例を示す図である。
図１０において、１１０１、１１０２、１１０３、１１０４、１１０５は、それぞれ描画オブジェクトの描画イメージである。
図１１（ａ）は、図１０に示したＤＬ生成管理タスク４０３が描画オブジェクト１１０１、１１０２、１１０３、１１０４をＤＬ生成管理テーブルに登録した状態を示す図である。
【００９９】
図１１（ａ）において、１２０１、１２０２は、それぞれＤＬ生成タスク０、ＤＬ生成タスク１で実行している描画オブジェクト情報を指すポインタである。
１２０３は、登録された描画オブジェクトを管理するＤＬ生成管理テーブル３１５（図２）である。
１２１１、１２１２、１２１３、１２１４は、それぞれ図１０に示した描画オブジェクト１１０１、１１０２、１１０３、１１０４に対応して、登録された描画オブジェクト情報である。描画オブジェクト情報には、１２２１のように、ＩＤ、描画位置（Ｘ、Ｙ）、幅Ｗｄ、高さＨｔ、色（Ｒ、Ｇ、Ｂ）と、１２２２のように、処理状態等の情報が格納されている。
【０１００】
描画オブジェクト情報１２１１と１２１２は、それぞれ「ＤＬ生成処理中状態」を示す「Ｅｘｅｃ」となっている。また、描画オブジェクト情報１２１３は、「ＩＤ＝２の描画オブジェクトの待ち合わせ状態」を示す「Ｗａｉｔ＝２」となっている。また、描画オブジェクト情報１２１４は、「ＤＬ生成タスク空き待ち状態」を示す「Ｗａｉｔ＝０」となっている（待ち合わせ無し）。
【０１０１】
図１１（ｂ）は、描画オブジェクト１１０５の登録時のＤＬ生成管理テーブルを示す図である。
図１１（ｂ）に示すように、１２１５は描画オブジェクト１１０５の描画オブジェクト情報である。描画オブジェクト情報１２１５に示すように、描画オブジェクト１１０５は、描画位置（２３０，２３０）、幅１００、高さ１００である。
【０１０２】
描画オブジェクト１１０５は、ＩＤ＝１の描画オブジェクト１１０１に対し、図８のＳ１３１１の重なり判定で「重なり無し」と判定される。よって、ＩＤ＝１の描画オブジェクト１１０１と描画オブジェクト１１０５とは、ＤＬ生成の順番が入れ替わっても描画結果に影響ない。そのため、ＩＤ＝１の描画オブジェクト１１０１は描画オブジェクト１１０５の待ち合わせ対象とならない。
【０１０３】
また、描画オブジェクト１１０５は、ＩＤ＝２の描画オブジェクト１１０２に対し、図８のＳ１３１１の重なり判定で「重なり有り」と判定され、図８のＳ１３１２の色判定が行われる。なお、描画オブジェクト１１０２の色値（２５５，０，０）は、描画オブジェクト１１０５の色値（２５５，０，０）と同じであり、図８のＳ１３１２の色判定で「同色」と判定される。よって、ＩＤ＝２の描画オブジェクト１１０２と描画オブジェクト１１０５とは、ＤＬ生成の順番が入れ替わっても描画結果に影響ない。そのため、ＩＤ＝２の描画オブジェクト１１０２は描画オブジェクト１１０５の待ち合わせ対象とならない。
【０１０４】
また、描画オブジェクト１１０５は、ＩＤ＝３の描画オブジェクト１１０３に対し、図８のＳ１３１１の重なり判定で「重なり有り」と判定され、図８のＳ１３１２の色判定が行われることとなる。なお、描画オブジェクト１１０３の色値（０，０，０）は、描画オブジェクト１１０５の色値（２５５，０，０）と異なり、図８のＳ１３１２の色判定で「異なる色」と判定される。よって、ＩＤ＝３の描画オブジェクト１１０３は、描画オブジェクト１１０５の待ち合わせ対象となる。このため、待ち合わせ対象としてＩＤ＝３が「Ｗａｉｔ＝３」のように、描画オブジェクト情報１２１５に格納される。
【０１０５】
また、描画オブジェクト１１０５は、ＩＤ＝１の描画オブジェクト１１０１の場合と同様に、ＩＤ＝４の描画オブジェクト１１０３と重なりがない。よって、ＩＤ＝４の描画オブジェクト１１０４と描画オブジェクト１１０５とは、ＤＬ生成の順番が入れ替わっても描画結果に影響ない。そのため、ＩＤ＝４の描画オブジェクト１１０４は描画オブジェクト１１０５の待ち合わせ対象とならない。
【０１０６】
図１１（ｃ）は、ＩＤ＝２の描画オブジェクト１１０２のＤＬ生成終了時のＤＬ生成管理テーブルを示す図である。
図１１（ｃ）に示すように、ＩＤ＝１の描画オブジェクト情報１２１１は、図９のＳ１４０４で「ＤＬ生成処理中」と判定され、何も変更されない。
一方、ＩＤ＝３の描画オブジェクト情報１２１３は、図１１（ｂ）に示したように、図９のＳ１４０５で「ＤＬ生成終了したＩＤ＝２の描画オブジェクト１１０２が待ち合わせ対象である」と判定される。そして、図９のＳ１４０６で描画オブジェクト情報１２１３の「ｗａｉｔ＝２」から「２」が削除され、「ｗａｉｔ＝０」に変更される。これにより、描画オブジェクト情報１２１１は、待ち合わせ対象のＩＤがなくなり、且つ「ＤＬ生成タスク１」が空いている状態となる。このため、図９のＳ１４１０で、ＩＤ＝３の描画オブジェクト情報１２１３を「ＤＬ処理中状態」を示す「Ｅｘｅｃ」に変更する。この状態を図１１（ｃ）に示している。
ＩＤ＝４の描画オブジェクト情報１２１４、ＩＤ＝５の描画オブジェクト情報１２１５は、それぞれ変更なしである。
【０１０７】
以下、図１２、図１３を参照して、ＤＬ生成タスク４０４、レンダラタスク４０５について説明する。
図１２は、実施例１における各ＤＬ生成タスク４０４が実行するＤＬ生成処理３０４の一例を示すフローチャートである。このフローチャートの処理（Ｓ１５０１〜Ｓ１５０３等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１に記録されたプログラム（中間コード生成部２１４）を実行することにより実現されるものである。
【０１０８】
ＤＬ生成タスク４０４は、Ｓ１５０１において、ＤＬ生成管理タスク４０３からのＤＬ生成依頼待ちを行う。
そして、ＤＬ生成管理タスク４０３からＤＬ生成依頼を受信すると（Ｓ１５０１でＹｅｓ）、ＤＬ生成タスク４０４は、Ｓ１５０２に処理を進める。
Ｓ１５０２では、ＤＬ生成タスク４０４は、ＤＬ生成依頼とともに受けたＤＬ生成コマンドに従ってＤＬ生成を行い、生成したＤＬをフレームバッファ２２３に格納する。
そして、Ｓ１５０３において、ＤＬ生成タスク４０４は、ＤＬ生成管理タスク４０３に、ＤＬ生成終了通知を行う。なお、ＤＬ生成終了通知を行う際には、上記Ｓ１５０２でＤＬ生成したＤＬ生成コマンドのＩＤもＤＬ生成管理タスク４０３に通知する。上記Ｓ１５０３の通知処理を終了すると、ＤＬ生成タスク４０４は、Ｓ１５０１に処理を戻す。
【０１０９】
図１３は、実施例１におけるレンダラタスク４０５が実行するレンダリング処理３０５の一例を示すフローチャートである。このフローチャートの処理（Ｓ１６０１〜Ｓ１６０３等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１に記録されたプログラム（展開処理部２１５）を実行することにより実現されるものである。
【０１１０】
レンダラタスク４０５は、Ｓ１６０１において、ＤＬ生成管理タスク４０３からのレンダリング依頼待ちを行う。
そして、ＤＬ生成管理タスク４０３からレンダリング依頼を受信すると（Ｓ１６０１でＹｅｓ）、レンダラタスク４０５は、Ｓ１６０２に処理を進める。
なお、レンダラタスク４０５は、各ＤＬ生成タスク４０４でのＤＬ生成に応じて、フレームバッファ２２３上に生成されたＤＬをフレームバッファ２２３からレンダラ２０７内のメモリに転送するＤＬ転送を行っている。このため、「レンダリング処理依頼」があった際には、ＤＬ転送はほぼ終了しており、レンダラタスク４０５は速やかにレンダリングを行うことが可能な状態である。
【０１１１】
Ｓ１６０２では、レンダラタスク４０５は、上記ＤＬ転送により専用ハードウェアであるレンダラ２０７内のメモリに格納されたＤＬに対してレンダリングを行い、レンダラ２０７でレンダリングされたビットマップデータ（ラスタデータ）を、ラスタメモリ２２４に格納する。
【０１１２】
次に、Ｓ１６０３において、レンダラタスク４０５は、エンジンＩ／Ｆ２０５を介してプリンタエンジン２０６にビットマップデータを出力し、印刷させ、Ｓ１６０１に処理を戻す。
【０１１３】
以上示したように、実施例１によれば、マルチコアＣＰＵで並列して描画コマンドからＤＬ生成を行う場合において、ＰＤＬタスクで順次解析された描画コマンドの順番（処理順序）を、先に解析され未だＤＬ生成終了していない描画コマンドと変更可能かどうか判定するように構成する。そして、順番の変更が可能（処理順序変更可能）な描画コマンドについては順番を考慮することなく（先に解析された描画コマンドの中間コード生成終了状況（ＤＬ生成終了状況）に関係なく）ＤＬ生成を依頼する。一方、順番の変更が不可能（処理順序変更不可能）な描画コマンドについては順番通り（先の描画コマンドのＤＬ生成終了を待って）にＤＬ生成を依頼するように、ＤＬ生成順序を管理（制御）するように構成する。このような構成により、ＰＤＬデータの描画コマンドから中間コード（ＤＬ）を生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアＣＰＵを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアＣＰＵを無駄なく使用し、ＣＰＵコア数に応じてＰＤＬ処理のパフォーマンスを向上して、少ないメモリ資源でＰＤＬデータを高速に処理し、印刷時間を短縮することができる。
【実施例２】
【０１１４】
上記実施例１では、ＤＬ生成管理テーブルに登録されている全ての描画オブジェクトに対して待ち合わせの判定を行う構成を示した。実施例２では、ＰＤＬデータを生成するホストコンピュータで描画オブジェクトを分割して送ってくる場合のように待ち合わせ判定が必要ない場合には、待ち合わせ判定をしないように構成する。以下、図面を用いて詳細に説明する。
【０１１５】
図１４は、実施例２におけるＰＤＬデータの一例を示す図である。
描画オブジェクト１４０３、１４０４、１４０５は、一つのイメージデータを分割したイメージである。
なお、拡大描画を行うときに隣接するイメージ間の位相のずれを少なくするために、１４４３、１４４４、１４４５に示すように、描画オブジェクト１４０３、１４０４、１４０５を重ねて描画する場合がある。このような描画オブジェクト１４０３、１４０４、１４０５は重なりが有るが、どの順番で描画しても問題ない。このため、描画オブジェクト１４０３、１４０４、１４０５間での、ＤＬ生成管理タスク４０３での待ち合わせ判定は不要である。
【０１１６】
よって、本実施例では、このような描画オブジェクトに対して、ＤＬ生成管理タスク４０３にて待ち合わせ判定を行わないようにするため、ホストコンピュータにて各イメージの描画コマンドに、示唆情報（ヒント情報）を付加するように構成する。
【０１１７】
例えば、描画オブジェクト１４０４について、描画オブジェクト１４０３を待ち合わせ判定対象から外すため、ホストコンピュータ側で、ヒント情報１４３１を「Ｈｉｎｔ＝１」とし、描画オブジェクト１４０４の描画コマンド１４２１に付加する。
【０１１８】
また、描画オブジェクト１４０５について、描画オブジェクト１４０３，１４０４を待ち合わせ判定対象から外すため、ホストコンピュータ側で、ヒント情報１４３２を「Ｈｉｎｔ＝２」とし、描画オブジェクト１４０５の描画コマンド１４２２に付加する。
【０１１９】
即ち、ネットワーク１０２を介して画像形成装置１０１と通知可能なホストコンピュータ（情報処理装置）のプリンタドライバは、一つのイメージデータを分割した複数の描画オブジェクトに対応して生成した各描画コマンドに対して、これらの間で待ち合わせ判定が行われないように、ヒント（Ｈｉｎｔ）情報を付加するように構成する。なお、ヒント（Ｈｉｎｔ）情報には、上記各描画コマンドの画像形成装置１０１への送信順序を示す数字が格納される。先頭の描画コマンドには、ヒント（Ｈｉｎｔ）情報を付加しないか、「Ｈｉｎｔ＝０」を付加するようにし、以下、「Ｈｉｎｔ＝１」、「Ｈｉｎｔ＝２」、「Ｈｉｎｔ＝３」、「Ｈｉｎｔ＝４」、・・・のようなヒント情報を、分割された一連の描画コマンドにそれぞれ送信順に付加するように構成する。
【０１２０】
図１４の例では、先頭の描画コマンド１４２０にはヒント情報は付加せず、描画コマンド１４２１、１４２２には、順次「Ｈｉｎｔ＝１」、「Ｈｉｎｔ＝２」のように、描画コマンドの画像形成装置１０１への送信順序を示す数字をヒント情報として付加している。
【０１２１】
このようにして描画コマンドに付加されたヒント情報は、待ち合わせ判定が不要となる一連の描画コマンドの先頭の位置を示すこととなる。即ち、図１４の例では、描画コマンド１４２１については、１４３１に示す「Ｈｉｎｔ＝１」が示すように、１つ先に解析される描画コマンド１４２０を待ち合わせ判定対象外とする。また、描画コマンド１４２２については、１４３２に示す「Ｈｉｎｔ＝２」が示すように、２つ先に解析される描画コマンド１４２０と１つ先に解析される描画コマンド１４２１を待ち合わせ判定対象外とする。
【０１２２】
なお、ここでは、一つのイメージデータを分割した複数の描画オブジェクトに対応して生成した各描画コマンドに対して、ヒント（Ｈｉｎｔ）情報を付加する場合を示した。しかし、一つのイメージデータを分割した各描画コマンドのみでなく、どのような描画コマンドであっても、ホストコンピュータ側で待ち合わせ判定が必要ないと判っている一連の描画コマンドに対しては、プリンタドライバがヒント（Ｈｉｎｔ）情報を付加するように構成してもよい。
【０１２３】
なお、ホストコンピュータのプリンタドライバは、ホストコンピュータのＣＰＵがハードディスク等の記録媒体にコンピュータ読み取り可能に記録されたプリンタドライバプログラムを読み出して実行することにより実現されるものである。
【０１２４】
以下、実施例２における画像形成装置１０１（ＤＬ生成管理タスク４０３）側の処理について説明する。
図１５は、実施例２におけるＤＬ生成管理タスク４０３の一例を示すフローチャートである。このフローチャートの処理（Ｓ１３０１〜Ｓ１３８２、Ｓ２００１〜Ｓ２００３等の各ステップ）は、画像形成装置１０１のＣＰＵ２０４がＲＯＭ２０１に記録されたプログラム（中間コード生成管理部２１３）を実行することにより実現されるものである。なお、図８と同一のステップには同一のステップ番号を付してあり、説明は省略する。
【０１２５】
Ｓ２００１において、ＤＬ生成管理タスク４０３は、カレントの描画オブジェクトの描画位置（ＣｕｒＸ、ＣｕｒＹ）、幅ＣｕｒＷｄ、高さＣｕｒＨｔ、色（ＣｕｒＲ、ＣｕｒＧ、ＣｕｒＢ）、ＨｉｎｔをＤＬ生成コマンドから取得する。
【０１２６】
次に、Ｓ２００２において、ＤＬ生成管理タスク４０３は、ＣｈｅｃｋＩＤに、ＣｕｒＩＤからＨｉｎｔを減算した値を代入する（ＣｈｅｃｋＩＤ＝ＣｕｒＩＤ−Ｈｉｎｔ）。なお、ＣｈｅｃｋＩＤは、ホストコンピュータにて待ち合わせ判定が不要とされた一連の描画オブジェクトの先頭のＩＤを示す変数であり、ＲＡＭ２０２内に確保される。
【０１２７】
また、Ｓ２００３において、ＤＬ生成管理タスク４０３は、Ｓ１３１０で取得したＤＬ生成管理テーブルに登録されている描画オブジェクトのＩＤと、上記Ｓ２００２でセットしたＣｈｅｃｋＩＤとを比較する。そして、ＤＬ生成管理タスク４０３は、ＩＤがＣｈｅｃｋＩＤより小さい（ＩＤ＜ＣｈｅｃｋＩＤ）か否かを判定する。
【０１２８】
そして、ＩＤがＣｈｅｃｋＩＤより小さい（ＩＤ＜ＣｈｅｃｋＩＤ）と判定した場合（Ｓ２００３でＹｅｓ）、ＤＬ生成管理タスク４０３は、Ｓ１３１１〜Ｓ１３１４にて重なり判定や色判定等の処理を実行し、Ｓ１３１４に処理を進めるように制御する。
【０１２９】
一方、ＩＤがＣｈｅｃｋＩＤより小さくない（ＩＤ≧ＣｈｅｃｋＩＤ）と判定した場合（Ｓ２００３でＮｏ）、ＤＬ生成管理タスク４０３は、重なり判定や色判定等の処理を実行することなく（スキップして）、そのままＳ１３１４に処理を進めるように制御する。なお、その他の処理は、図８と同一のため説明を省略する。
【０１３０】
以下、図１６、図１７（ａ）〜図１７（ｃ）を参照して、ＤＬ生成管理タスク実行中のＤＬ生成管理テーブルの変化を具体的に説明する。
図１６、図１７（ａ）〜図１７（ｃ）は、実施例２におけるＤＬ生成管理タスク実行中のＤＬ生成管理テーブルの変化を説明するための図である。なお、ここでは、ＤＬ生成タスク４０４が２つの場合を例に、ＤＬ生成管理テーブルの登録について説明する。
【０１３１】
図１６は、描画オブジェクトの描画結果の一例を示す図である。
図１６において、１４０１、１４０２、１４０３、１４０４、１４０５は、それぞれ描画オブジェクトの描画結果を示す。
図１７（ａ）は、ＤＬ生成管理タスクが図１６の描画オブジェクト１４０１、１４０２、１４０３をＤＬ生成管理テーブルに登録した状態を示す図である。
図１７（ａ）において、１５０１、１５０２は、それぞれＤＬ生成タスク０、ＤＬ生成タスク１で実行している描画オブジェクト情報を指すポインタである。
１５０３は、登録された描画オブジェクトを管理するＤＬ生成管理テーブル３１５である。
１５１１〜１５１３は、登録された描画オブジェクト情報であり、ＩＤ、描画位置（Ｘ、Ｙ）、幅Ｗｄ、高さＨｔ、色（Ｒ、Ｇ、Ｂ）またはイメージ種別Ｉｍａｇｅと、処理状態が格納されている。
【０１３２】
ここでは、３個の描画オブジェクト（図１６の１４０１、１４０２、１４０３）が、描画オブジェクト情報１５１１、１５１２、１５１３として登録されている。
描画オブジェクト情報１５１１と１５１２は、それぞれＤＬ生成状態を示す「Ｅｘｅｃ」となっている。描画オブジェクト情報１５１３は、ＩＤ＝１の描画オブジェクトのＤＬ生成終了待ち状態を示す「Ｗａｉｔ＝１」となっている。
【０１３３】
図１７（ｂ）は、描画オブジェクト１４０４の登録時のＤＬ生成管理テーブルを示す図である。
図１７（ｂ）において、１５０６は描画オブジェクト１４０４の描画コマンドである。１５０６に示すように、描画オブジェクト１４０４は、「Ｈｉｎｔ＝１」であるため、図１５のＳ２００３で「Ｎｏ」と判定され、待ち合わせ対象外として、ＩＤ＝３の描画オブジェクト情報１５１３との重なり判定や色判定は実行されず（省略され）、処理順序変更可能とみなされる。
なお、描画オブジェクト情報１５１４は、ＩＤ＝１やＩＤ＝２の描画オブジェクトとの重なり判定や色判定は実行される。ここでは、ＩＤ＝１の描画オブジェクトとの重なり判定や色判定で「Ｙｅｓ」と判定され、ＩＤ＝１の描画オブジェクトのＤＬ生成終了待ち状態を示す「Ｗａｉｔ＝１」となる。
【０１３４】
図１７（ｃ）は、描画オブジェクト１４０５の登録時のＤＬ生成管理テーブルを示す図である。
図１７（ｃ）において、１５０７は描画オブジェクト１４０５の描画コマンドである。１５０７に示すように、描画オブジェクト１４０５は、「Ｈｉｎｔ＝２」であるため、図１５のＳ２００３で「Ｎｏ」と判定され、待ち合わせ対象外として、ＩＤ＝３の描画オブジェクト情報１５１３及びＩＤ＝４の描画オブジェクト情報１５１４との重なり判定や色判定は実行されず（省略され）、処理順序変更可能とみなされる。
なお、描画オブジェクト情報１５１４は、ＩＤ＝１やＩＤ＝２の描画オブジェクトとの重なり判定や色判定は実行される。しかし、ここでは、ＩＤ＝１、ＩＤ＝２の描画オブジェクトのいずれの重なり判定や色判定でも「Ｎｏ」と判定され、ＤＬ生成スレッド空き待ち状態を示す「Ｗａｉｔ＝０」となる。
【０１３５】
以上示したように、実施例２によれば、ホストコンピュータ側で待ち合わせ判定の必要がないと判断された一連の描画コマンドにヒント情報を付加して画像形成装置に送信するように構成する。そして、画像形成装置側では、ヒント情報に基づいて待ち合わせ判定を省略して処理順序変更可能とみなし、描画コマンドからＤＬ生成を行うように構成する。このような構成により、実施例１の効果に加え、ＰＤＬデータに描画データを分割した一連の描画コマンド等の待ち合わせ判定が不要な一連の描画コマンドが含まれている場合には、さらに高速にＰＤＬデータを処理し、印刷時間を短縮することができる。
【０１３６】
以下、本発明の効果について従来と比較して説明する。
図１８は、２コアのＣＰＵにおける各処理の積み上げた時間を示す図である。
以下に示す積み上げ時間は、ＰＤＬ処理、ＤＬ生成処理、ＤＬ転送処理、レンダリング処理の各処理の積み上げ時間である。
なお、レンダリング処理は専用のハードウェアで行い、ＤＬ生成時のメモリ領域とは別のメモリ領域から参照する構成のケースを想定しており、ＤＬ生成タスク４０４で生成したＤＬの転送が実行されるものとしている。この転送処理が、上記ＤＬ転送処理となる。
【０１３７】
図１８（ａ）は、ＤＬ生成タスク４０４を１つで動作させたときの積み上げ時間を示す図である。
このケースでは、ＰＤＬ解析の結果を順次１つのＤＬ生成タスク４０４でＤＬ生成し、生成したＤＬをハードウェアがアクセスするメモリ領域にＤＬ転送を並行で行う。ページ終了した時点で、ほぼＤＬ転送は終了しており、レンダリングが実行される。レンダリング実行中には、次のページのＰＤＬ解析、ＤＬ生成が実行される。
【０１３８】
図１８（ｂ）は、ＤＬ生成タスク４０４を２つで動作させ、且つ、本発明対応前の積み上げ時間を示す図である。
このケースでは、ＰＤＬ解析の結果を順次２つのＤＬ生成タスク４０４でＤＬ生成するため、ＤＬ生成タスク４０４を１つで動作させたときの半分の時間で終了する。しかし、生成されたＤＬの順番は描画順番とは異なるため、それぞれのＤＬ生成タスク４０４で作成したＤＬの結合処理（並べ替え）を必要とする。
【０１３９】
また、各描画オブジェクトのＤＬ生成後は未だレンダリングできる状態でないため、ＤＬ転送はＤＬ結合処理終了後となる。また、次のページのＤＬ生成はＤＬ転送後になり、ＤＬ生成タスク４０４を２つで動作させる効果はかなり落ちる。
【０１４０】
図１８（ｃ）は、ＤＬ生成タスク４０４を２つで動作させ、かつ、本発明対応後の積み上げ時間を示す図である。
このケースでも、ＰＤＬ解析の結果を順次２つのＤＬ生成タスク４０４でＤＬ生成するため、ＤＬ生成タスク４０４を１つで動作させたときの半分の時間で終了する。
また、生成されたＤＬの順番は描画順番と常に一致するため、各描画オブジェクトのＤＬ生成後すぐにＤＬ転送が可能である。さらに、次のページのＤＬ生成もすぐに実行することが可能である。これらのため、ＤＬ生成タスク４０４を２つ動作させる効果を無駄なく発揮することができる。このため、ＣＰＵコア数に応じてＰＤＬ処理のパフォーマンスを向上することができる。
【０１４１】
以上示したように、本発明によれば、ＰＤＬデータの描画コマンドから中間コード（ＤＬ）を生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアＣＰＵを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアＣＰＵを無駄なく使用し、ＣＰＵコア数に応じてＰＤＬ処理のパフォーマンスを向上して、少ないメモリ資源でＰＤＬデータを高速に処理し、印刷時間を短縮することができる。
【０１４２】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【０１４３】
（他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１４４】
１０１    画像形成装置
２０１    ＲＯＭ
２０２    ＲＡＭ
２０４    ＣＰＵ
２０６    プリンタエンジン
２０７    レンダラ
２１１    受信部
２１２    解析部
２１３    中間コード生成管理部
２１４    中間コード生成部
２１５    展開処理部
【図１】
0005766059.tif 000002
【図２】
0005766059.tif 000003
【図３】
0005766059.tif 000004
【図４】
0005766059.tif 000005
【図５】
0005766059.tif 000006
【図６】
0005766059.tif 000007
【図７】
0005766059.tif 000008
【図８】
0005766059.tif 000009
【図９】
0005766059.tif 000010
【図１０】
0005766059.tif 000011
【図１１】
0005766059.tif 000012
【図１２】
0005766059.tif 000013
【図１３】
0005766059.tif 000014
【図１４】
0005766059.tif 000015
【図１５】
0005766059.tif 000016
【図１６】
0005766059.tif 000017
【図１７】
0005766059.tif 000018
【図１８】
0005766059.tif 000019