(57)【要約】【課題】  ＰＤＬデータの解釈結果からのディスプレイリストの生成が遅延することによる、ＰＤＬデータの解釈の遅延を抑制する。【解決手段】  第１の記憶手段に記憶されているＰＤＬデータの解釈結果を第２の記憶手段に複製し、その第２の記憶手段に記憶された解釈結果の複製からディスプレイリストを生成する。【選択図】  図１
2015020384.tif 000002
【特許請求の範囲】
【請求項１】
ＰＤＬデータを解釈し、その解釈結果を第１の記憶手段に記憶する解釈手段と、
前記第１の記憶手段に記憶されている前記解釈結果を複製し、当該複製された解釈結果を前記第２の記憶手段に記憶する複製手段と、
前記第２の記憶手段に記憶された前記複製された解釈結果からディスプレイリストを生成する生成手段と、
を有するディスプレイリスト生成装置。
【請求項２】
前記複製手段は、前記第１の記憶手段に記憶されている前記解釈結果に含まれているデータが、前記解釈結果に含まれている他のデータが記憶されている前記第１の記憶手段におけるメモリアドレスを指し示すポインタである場合、前記複製の際に、当該ポインタが指し示すメモリアドレスを、前記他のデータが記憶される前記第２の記憶手段におけるメモリアドレスに変更する請求項１に記載のディスプレイリスト生成装置。
【請求項３】
前記解釈手段は、前記複製手段による処理の間、ＰＤＬデータの解釈および解釈結果の前記第１の記憶手段への記憶を中断する請求項１または２に記載のディスプレイリスト生成装置。
【請求項４】
前記解釈手段によるＰＤＬデータの解釈と、前記生成手段によるディスプレイリストの生成とは、非同期に実行される請求項１乃至３の何れか１項に記載のディスプレイリスト生成装置。
【請求項５】
前記解釈手段は、ＣＰＵであり、
前記生成手段は、前記ＣＰＵと異なるＣＰＵであり、
前記生成手段によるディスプレイリストの生成が実行されている間に、前記解釈手段によるＰＤＬデータの解釈が実行される請求項１乃至４の何れか１項に記載のディスプレイリスト生成装置。
【請求項６】
前記解釈手段は、ＰＤＬデータをＰＤＬコマンド単位で解釈し、その解釈結果を前記第１の記憶手段における特定のメモリアドレスからＰＤＬコマンド単位で、より古い解釈結果に上書きすることで、その解釈結果を前記第１の記憶手段に記憶する請求項１乃至５の何れか１項に記載のディスプレイリスト生成装置。
【請求項７】
前記生成手段によって生成されたディスプレイリストからビットマップ画像を描画する描画手段をさらに有し、
前記解釈手段は、複数の種類のＰＤＬのＰＤＬデータを解釈可能であり、
前記解釈結果は、ＰＤＬの種類に依存しないフォーマットのデータであり、
前記ディスプレイリストは、前記描画手段において処理可能なフォーマットのデータである請求項１乃至６の何れか１項に記載のディスプレイリスト生成装置。
【請求項８】
前記第１の記憶手段に記憶されている前記解釈結果に基づいて、前記複製手段による前記複製が行われるか否かを判定する判定手段を有し、
前記判定手段によって前記複製が行われないと判定された場合、
前記複製手段は、前記第１の記憶手段に記憶されている前記解釈結果を複製せず、
前記生成手段は、前記第１の記憶手段に記憶されている前記解釈結果からディスプレイリストを生成し、
前記判定手段によって前記複製が行われると判定された場合、
前記複製手段は、前記第１の記憶手段に記憶されている前記解釈結果を複製し、当該複製された解釈結果を前記第２の記憶手段に記憶し、
前記生成手段は、前記第２の記憶手段に記憶された前記複製された解釈結果からディスプレイリストを生成する請求項１乃至７の何れか１項に記載のディスプレイリスト生成装置。
【請求項９】
前記解釈手段は、前記判定手段によって前記複製が行われないと判定された場合、前記生成手段が、前記第１の記憶手段に記憶されている前記解釈結果からのディスプレイリストの生成を完了するまで、ＰＤＬデータの解釈および解釈結果の前記第１の記憶手段への記憶を中断する請求項８に記載のディスプレイリスト生成装置。
【請求項１０】
前記判定手段は、前記第１の記憶手段に記憶されている前記解釈結果のデータサイズまたは種類に基づいて、前記複製が行われるか否かを判定する請求項１乃至９の何れか１項に記載のディスプレイリスト生成装置。
【請求項１１】
前記判定手段は、前記第１の記憶手段に記憶されている前記解釈結果のデータサイズが所定の閾値を超える場合に、前記第１の記憶手段に記憶されている前記解釈結果の複製が行われないと判定し、前記第１の記憶手段に記憶されている前記解釈結果のデータサイズが前記所定の閾値以下である場合に、前記複製が行われると判定する請求項１０に記載のディスプレイリスト生成装置。
【請求項１２】
前記判定手段は、前記第１の記憶手段に記憶されている前記解釈結果のデータの種類が所定の種類でない場合に、前記複製が行われると判定し、前記第１の記憶手段に記憶されている前記解釈結果のデータの種類が前記所定の種類である場合に、前記複製が行われないと判定する請求項１０または１１に記載のディスプレイリスト生成装置。
【請求項１３】
前記判定手段は、
前記第１の記憶手段に記憶されている前記解釈結果のデータサイズまたはデータの種類の少なくとも１つに基づいて、前記複製手段による前記複製にかかる負荷を求める手段と、
前記第１の記憶手段に記憶されている前記解釈結果のデータサイズまたはデータの種類の少なくとも１つに基づいて、前記第１の記憶手段に記憶されている前記解釈結果からの前記生成手段によるディスプレイリストの生成にかかる負荷を求める手段と、
前記求められた前記複製にかかる負荷が、前記求められた前記ディスプレイリストの生成にかかる負荷より大きい場合に、前記複製が行われないと判定し、前記求められた前記複製にかかる負荷が、前記求められた前記ディスプレイリストの生成にかかる負荷より大きくない場合に、前記複製が行われると判定する手段と、
を有する請求項８に記載のディスプレイリスト生成装置。
【請求項１４】
前記第２の記憶手段に記憶されている解釈結果の複製のデータサイズまたはデータの種類の少なくとも１つに基づいて、前記第２の記憶手段に記憶されている当該解釈結果の複製からの前記生成手段によるディスプレイリストの生成にかかる負荷を求める手段と、
前記第２の記憶手段に解釈結果の複製が記憶されているか否かを判定する手段と、
をさらに有し、
前記判定手段は、
前記第２の記憶手段に解釈結果の複製が記憶されていないと判定された場合に、前記求められた、前記複製にかかる負荷および前記求められた前記生成手段による前記第１の記憶手段に記憶されている前記解釈結果からのディスプレイリストの生成にかかる負荷に基づいて、前記複製が行われるかを判定し、
前記第２の記憶手段に解釈結果の複製が記憶されていると判定された場合に、前記求められた前記複製にかかる負荷が、前記求められた前記生成手段による前記第２の記憶手段に記憶されている解釈結果の複製からのディスプレイリストの生成にかかる負荷より大きい場合に、前記複製が行われないと判定し、前記求められた前記複製にかかる負荷が、前記求められた前記生成手段による前記第２の記憶手段に記憶されている解釈結果の複製からのディスプレイリストの生成にかかる負荷より大きくない場合に、前記複製が行われると判定する手段と、
を有する請求項１３に記載のディスプレイリスト生成装置。
【請求項１５】
前記第１の記憶手段および前記第２の記憶手段は、同一の記憶手段における異なる記憶領域である請求項１乃至１４の何れか１項に記載のディスプレイリスト生成装置。
【請求項１６】
前記ＰＤＬデータに含まれるＰＤＬコマンドは、曲線を指定する描画コマンドであり、
前記描画コマンドの解釈結果は、前記曲線を近似した複数の線分のデータであって、互いに接続する線分は互いにリンクしており、
前記描画コマンドの解釈結果から得られるディスプレイリストは、前記複数の線分の輪郭線を表す複数のオブジェクトのデータである請求項１乃至１５の何れか１項に記載のディスプレイリスト生成装置。
【請求項１７】
ＰＤＬデータを解釈し、その解釈結果を第１の記憶手段に記憶する解釈工程と、
前記第１の記憶手段に記憶されている前記解釈結果を複製し、当該複製された解釈結果を第２の記憶手段に記憶する複製工程と、
前記第２の記憶手段に記憶された前記複製された解釈結果からディスプレイリストを生成する生成工程と、
を有するディスプレイリスト生成方法。
【請求項１８】
請求項１乃至１６の何れか１項に記載の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスプレイリストを生成する技術に関する。
【背景技術】
【０００２】
特許文献１は、ＰＤＬデータからディスプレイリスト（ＤＬ）と呼ばれる描画処理部が処理可能な中間データを生成する装置を開示する。この特許文献１に開示される装置において、ＰＤＬ解釈部がＰＤＬデータを解釈し、その解釈結果からＤＬ生成部がＤＬを生成する。そして描画処理部がその生成されたＤＬに基づいて描画を行うことでビットマップ画像を生成する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−８６４５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで図９に示されるように、ＰＤＬデータの解釈結果をＤＬ生成部に渡すために用いられる解釈結果記憶部の記憶容量が極めて小さい場合を考えてみる。例えば解釈結果記憶部の記憶容量が、ＰＤＬデータに含まれるＰＤＬコマンドの１コマンド分の解釈結果しか記憶できないような場合を考える。
【０００５】
この場合、ＤＬ生成部が解釈結果記憶部にアクセスしてその１コマンド分の解釈結果からＤＬを生成している最中に、その解釈結果の内容が変更されないことが要求される。そこで、ＤＬ生成部が解釈結果記憶部にアクセスしている最中は、ＰＤＬ解釈部が解釈結果記憶部にアクセスしない。その結果、ＤＬ生成部が解釈結果記憶部にアクセスしている最中は、ＰＤＬ解釈部はこの解釈結果記憶部にアクセスしないことになり、ＰＤＬ解釈部は次のＰＤＬコマンドの解釈結果をこの解釈結果記憶部に上書き記憶できない。つまりＰＤＬ解釈部による処理とＤＬ生成部による処理とが同期して実行されるため、ＤＬ生成部の処理の遅延がそのまま、ＰＤＬ解釈部の処理の遅延になってしまう。
【課題を解決するための手段】
【０００６】
本発明の装置は、ＰＤＬデータを解釈し、その解釈結果を第１の記憶手段に記憶する解釈手段と、前記第１の記憶手段に記憶されている前記解釈結果を複製し、当該複製された解釈結果を第２の記憶手段に記憶する複製手段と、前記第２の記憶手段に記憶された前記複製された解釈結果からディスプレイリストを生成する生成手段と、を有する。
【発明の効果】
【０００７】
本発明は、解釈結果の複製を記憶する第２の記憶手段を設けることで、解釈手段による処理と生成手段による処理とを独立して実行できる。その結果、生成手段の処理が遅延しても解釈手段の処理が遅延してしまうことを防ぐ。
【図面の簡単な説明】
【０００８】
【図１】プリンタコントローラのハードウェアブロック図。
【図２】ＰＤＬコマンド、解釈結果、ＤＬを説明するための図。
【図３】第一実施例のＰＤＬデータの解釈処理を説明するためのフローチャート。
【図４】ＤＬの生成処理を説明するためのフローチャート。
【図５】解釈結果の複製処理を説明するための図。
【図６】第二実施例のＰＤＬデータの解釈処理を説明するためのフローチャート。
【図７】解釈結果の複製処理の実行有無の判定処理を説明するためのフローチャート。
【図８】第二実施例のプリンタコントローラの動作を説明するための図。
【図９】ＰＤＬデータからＤＬを生成する処理を説明するための図。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を用いて説明する。
【００１０】
＜第一実施例＞
＜第一実施例のプリンタコントローラの構成＞
図１は、本実施例の印刷装置におけるプリンタコントローラのハードウェア構成の一例である。このプリンタコントローラにおいて、解釈結果記憶部１３０は、バッファ１４３に接続し、ＰＤＬ解釈部１２０によって記憶されたＰＤＬデータの解釈結果をバッファ１４３に複製する構成をとる。この構成によって、ＤＬ生成部１５０がバッファ１４３に記憶されている解釈結果の複製からＤＬを生成している最中でも、ＰＤＬ解釈部１２０はＰＤＬデータの解釈結果を解釈結果記憶部１３０に記憶することができる。以下この動作について詳細に説明する。
【００１１】
印刷装置は、ＳＦＰ（Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）であっても、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）であっても良い。まずこのプリンタコントローラの処理の概要について説明する。なお本実施例のプリンタコントローラは、以下で明らかになるようにディスプレイリストを生成するディスプレイリスト生成装置としても機能する。
【００１２】
図１に示される各ブロックは、各部のハードウェアを示し、各ブロックをつなぐ線は各部を接続する信号線を表している。この信号線を介して各部は他の部と情報の送受信を行う。
【００１３】
ＰＤＬ解釈部１２０は、複数の種類のＰＤＬ（例えばＰＣＬ（登録商標）やＰｏｓｔＳｃｒｉｐｔ（登録商標））のフォーマットのＰＤＬデータを不図示のネットワークＩ／Ｆを介して外部の装置から受信する。そしてＰＤＬ解釈部１２０は、図３に示されるフローチャートの処理を実行する。つまりＰＤＬ解釈部１２０は、複数の種類のＰＤＬフォーマットのＰＤＬデータを解釈可能である。
【００１４】
解釈結果記憶部１３０は内部に、ＰＤＬ解釈部１２０によるＰＤＬデータに含まれるコマンド（ＰＤＬコマンド）の解釈結果を記憶する記憶領域を有する揮発性のメモリを有する。解釈結果記憶部１３０は、この解釈結果をバッファ１４３に複製する。なお本実施例の解釈結果記憶部１３０の記憶容量は、ＰＤＬコマンドの１コマンド分の解釈結果の量の最大値（固定サイズ）である。この解釈結果解釈部１３０は、ＰＤＬコマンドの１コマンド分の解釈結果を記憶し、２コマンド分以上の解釈結果を記憶しない。
【００１５】
バッファ１４３は内部に、解釈結果記憶部１３０に記憶されている解釈結果の複製を記憶する記憶領域を有する揮発性のメモリを有する。本実施例のバッファ１４３は、リングバッファである。このバッファ１４３の記憶容量は、解釈結果記憶部１３０よりも大きい固定サイズである。
【００１６】
ＤＬ生成部１５０は、図４に示されるフローチャートの処理を実行する。
【００１７】
描画処理部１７０は、ＰＤＬ解釈部１２０からの描画処理の開始が指示され、且つ、ＤＬ生成部１５０から１ページ分のディスプレイリスト（ＤＬ）の生成の完了が通知されると、ＤＬ生成部１５０から１ページ分のＤＬを受信する。そして描画処理部１７０は、そのＤＬからビットマップ画像を生成する。ＤＬからビットマップ画像を生成する処理をレンダリング処理と呼ぶ。
【００１８】
レンダリング処理によって生成されたビットマップ画像は、本実施例の印刷装置が備える不図示のプリンタエンジンに送信され、そのプリンタエンジンによって紙などのシート状の記録媒体に印刷される。そして、印刷された記録媒体は印刷物として印刷装置の機外に排出される。なお、このプリンタエンジンは、電子写真方式やインクジェット方式などどのような方式のプリンタエンジンでもよい。
【００１９】
＜ＰＤＬコマンド、解釈結果、ＤＬ＞
ＰＤＬデータは、一般に複数のＰＤＬコマンドを含む。このＰＤＬコマンドは、印刷ジョブの終了を指定するコマンド、ページの区切りを指定するコマンド、オブジェクトの描画を指定するコマンド（描画コマンド）の何れかとなっている。
【００２０】
図２は、ＰＤＬコマンドが描画コマンドである場合の、そのＰＤＬコマンド（描画コマンド）の解釈結果、および、その解釈結果から生成されるＤＬを概念的に示したものであり、特にベジエ曲線の描画コマンドを例示したものである。この図２の例を用いて、ＰＤＬコマンド、解釈結果、ＤＬの違いについて説明する。
【００２１】
図２（ａ）において破線で示されたベジエ曲線を描画するためのＰＤＬコマンド（描画コマンド）は、ベジエ曲線の制御点の４点（Ｐ０、Ｐ１、Ｐ２、Ｐ３）、ベジエ曲線の線幅（ｗ）、ベジエ曲線の線の色を指定するコマンドである。この描画コマンドは、同じ描画結果を得るとしても、ＰＤＬの種類（例えばＰＣＬ（登録商標）やＰｏｓｔＳｃｒｉｐｔ（登録商標））によって描画コマンドのフォーマットが異なる。
【００２２】
ＰＤＬ解釈部１２０は、この描画コマンドを解釈することで、破線で示されたベジエ曲線を複数の線分で近似する。これら複数の線分のそれぞれは、線分の両端点の座標で定義される。例えば線分Ｑ０−Ｑ１は、座標（ｘ０、ｙ０）の点Ｑ０と、座標（ｘ１、ｙ１）の点Ｑ１とを結ぶ、線幅ｗの線分である（図２（ｂ））。
【００２３】
またこれら複数の線分を表すデータ（解釈結果）は、解釈結果記憶部１３０に記憶され、接続する線分は互いにポインタでリンクされたリンク構造を有している。例えば、解釈結果記憶部１３０に記憶されている線分Ｑ０−Ｑ１を表すデータは、線分Ｑ１−Ｑ２を表すデータが記憶されている解釈結果記憶部１３０上のメモリアドレスを指し示すポインタを有している。また各線分を表すデータはその線分の線幅を表す情報、線分の色（ベジエ曲線の色）を持っている。この解釈結果は、同じ描画結果を得る場合、ＰＤＬの種類に依存にしない一意のフォーマットのデータである。
【００２４】
ＤＬ生成部１５０は、線幅を持つ複数の線分を表すデータである解釈結果から、ＤＬを生成する。ここでの例においてＤＬは、色が関連付けられた線幅を持たない論理的な線分のオブジェクトである。本例においてより具体的な説明をすると、線の色で塗り潰される線幅を持つ解釈結果の１つの線分は、局所的には線の色で塗り潰される四角形である。ＤＬでは、その四角形の輪郭線である４つの辺をそれぞれ１つのオブジェクトとして扱う。例えば図２（ｃ）に示されるＤＬにおいては、解釈結果において線幅ｗを持つ線分Ｑ０−Ｑ１の左側の辺である線分Ｒ０−Ｒ１が、線の色が関連付けられた線幅を持たない１つのオブジェクトとして扱われる。なお、ＤＬにおけるこの１つのオブジェクトは、線分の開始点、その線分のｙ方向の高さ（長さ）、その線分の傾き、その線分に関連付けられている色で定義される。例えば線分Ｒ０−Ｒ１であれば、線分の開始点Ｒ１と、ｙ方向の高さＬ０と、その線分の傾きｓ０、その線分の色（ベジエ曲線の色）を表す情報がＤＬに含まれる。
【００２５】
このようにＤＬは、１つの描画コマンド（例えばベジエ曲線の描画コマンド）で指定されるオブジェクト（例えばベジエ曲線）を、描画処理部１７０において処理可能な単位である単純な１つ以上のオブジェクトで表現したフォーマットの中間データである。
【００２６】
描画処理部１７０は、このＤＬに含まれるオブジェクト（例えば線分）を描画することで、描画コマンドで指定される１つのオブジェクト（例えばベジエ曲線）のビットマップ画像を生成する。このビットマップ画像は、例えば図２（ｃ）のＤＬで表されている輪郭線の間をベジエ曲線の色で塗りつぶした画像である。
【００２７】
以上説明したように、ＰＤＬコマンドから解釈結果が生成され、その解釈結果からＤＬが生成され、さらにそのＤＬからビットマップ画像が生成される。ＰＤＬコマンドから生成される解釈結果は、ＰＤＬデータの種類（例えば、ＰＣＬ（登録商標）やＰｏｓｔＳｃｒｉｐｔ（登録商標）など）によらない共通化されたフォーマットのデータである。データのフォーマットが共通化されているためＤＬ生成部１５０は、異なる種類のＰＤＬコマンドであっても、容易にＤＬを生成することができる。なおこのような共通化されたフォーマットのデータをＰＤＬコマンドから生成するために、ＰＤＬ解釈部１２０は、ＰＤＬデータの種類に応じた複数の回路を備える。
【００２８】
＜第一実施例のプリンタコントローラの動作＞
続いて、図３、４のフローチャートを用いて、本実施例のプリンタコントローラの動作について説明する。
【００２９】
＜ＰＤＬデータの解釈＞
図３は、ＰＤＬ解釈部１２０および解釈結果記憶部１３０によるＰＤＬデータの解釈処理のフローチャートである。
【００３０】
ＰＤＬ解釈部１２０は、外部からネットワークＩ／Ｆを介して、複数のＰＤＬコマンドを含むＰＤＬデータを受信する（Ｓ２０１）。
【００３１】
ＰＤＬ解釈部１２０は、Ｓ２０１で受信されたＰＤＬデータに含まれる１コマンド分のＰＤＬコマンドの解釈を行う（Ｓ２０２）。すなわちＰＤＬ解釈部１２０はＰＤＬデータをＰＤＬコマンド単位で解釈する。
【００３２】
ＰＤＬ解釈部１２０は、Ｓ２０２で解釈されたＰＤＬコマンドが印刷ジョブの終了を指定するコマンドであるかを判定する（Ｓ２０３）。ＰＤＬコマンドがジョブの終了を指定するコマンドであれば、処理は終了する。
【００３３】
ＰＤＬコマンドがジョブの終了を指定するコマンドでなければ、ＰＤＬ解釈部１２０は、Ｓ２０２で解釈されたＰＤＬコマンドがページの区切り（終了）を指定するコマンドであるか判定する（Ｓ２０４）。
【００３４】
ＰＤＬコマンドがページの区切りを指定するコマンドであれば、ＰＤＬ解釈部１２０は、１ページ分のＰＤＬコマンドを解釈したこと（ページ終了通知）を、図１のＰＤＬ解釈部１２０とＤＬ生成部１５０とを接続する信号線を介してＤＬ生成部１５０に通知する。また、ＰＤＬ解釈部１２０は、ＤＬ生成部１５０がＤＬの生成処理を完了してから描画処理部１７０が描画処理を開始するように、図１のＰＤＬ解釈部１２０と描画処理部１７０とを接続する信号線を介して描画処理部１７０に指示する（Ｓ２０５）。すると描画処理部１７０は、生成された１ページ分のＤＬからビットマップ画像を生成する。そして処理はＳ２０２へ戻り、ＰＤＬデータの次のＰＤＬコマンドの解釈を始める。
【００３５】
ＰＤＬコマンドがページの区切りを指定するコマンドでなく描画コマンドである場合、ＰＤＬ解釈部１２０は、描画コマンドの解釈結果を解釈結果記憶部１３０に記憶する（Ｓ２０６）。このとき、ＰＤＬ解釈部１２０は、描画コマンドの解釈結果を、解釈結果記憶部１３０中のメモリ空間の特定のメモリアドレスから、古い解釈結果を順次上書きしながら、解釈結果記憶部１３０に記憶させる。
【００３６】
続いてＰＤＬ解釈部１２０は、次のＰＤＬデータの解釈を中断（停止）する（Ｓ２０７）。
【００３７】
そしてＰＤＬ解釈部１２０は、解釈結果記憶部１３０に、解釈結果記憶部１３０が記憶している解釈結果を複製させて、その複製をバッファ１４３に記憶させる（Ｓ２１０）。解釈結果記憶部１３０によるこの複製処理については図５を用いて後述する。この複製が完了すると、解釈結果記憶部１３０は、解釈結果の複製が完了したことを、図１の解釈結果記憶部１３０とＤＬ生成部１５０とを接続する信号線を介してＤＬ生成部１５０に通知する。また解釈結果記憶部１３０は、ＰＤＬデータの解釈を再開するように、図１の解釈結果記憶部１３０とＰＤＬ解釈部１２０とを接続する信号線を介してＰＤＬ解釈部１２０に通知する。
【００３８】
ＰＤＬ解釈部１２０は、解釈結果記憶部１３０からのＰＤＬデータの解釈の再開通知を受信すると、ＰＤＬデータの解釈を再開する（Ｓ２１１）。そして処理はＳ２０２へ戻り、次のＰＤＬコマンドの解釈を始める。
【００３９】
なお、上記の処理フローと並行してＤＬ生成部１５０は、バッファ１４３に記憶されている解釈結果の複製を用いてＤＬの生成を非同期に行う。
【００４０】
＜解釈結果の複製＞
描画コマンドの解釈結果の複製処理は、解釈結果にアドレス参照ポインタが含まれている場合、図５に示されるように、ポインタによって参照されるメモリアドレスを変更する処理を含む。このメモリアドレスの変更処理は時間を要する処理である。これについて説明する。
【００４１】
解釈結果記憶部１３０に記憶されている解釈結果のデータ構造が、そのデータ内でアドレスを参照するためのポインタを含むリンク構造である場合がある。例えば、図２に説明されるベジエ曲線のように、解釈結果が、複数の線分を表すデータであって、各線分を表すデータに他の線分を表すデータのメモリアドレスを指し示すポインタが含まれているとする。これを２つの線分を表すデータ１とデータ２とに着目してみると、例えば図５に示されるように、データ２を参照するために、データ１は、データ２の解釈結果記憶部１３０のメモリ空間におけるデータ２のメモリアドレスＡ１を指し示すポインタＰを有している。
【００４２】
解釈結果がこのようなデータ構造を持つ場合、解釈結果の複製処理においては次のような処理が行われる。データ１の値およびデータ２の値をバッファ１４３のメモリ空間に複製し、データ１の有するポインタの指し示すメモリアドレスをバッファ１４３のメモリ空間におけるデータ２のメモリアドレスＡ２に変更する。この処理は、リンク構造の長さが長ければ長いほど、複製処理の負荷が大きく、この複製処理に時間がかかる。このように、複製処理に時間がかかるデータ構造は、例えば曲線の描画コマンドなどに多い。なお曲線の描画コマンドの解釈結果は複数の単純な線分となるので、各線分から各ＤＬを生成する処理の負荷は小さく、ＤＬの生成処理には時間がかからない。
【００４３】
次に非同期のＤＬの生成処理について説明する。
【００４４】
＜ＤＬの生成＞
図４は、ＤＬ生成部１５０によるＤＬの生成処理のフローチャートである。
【００４５】
ＤＬ生成部１５０は、Ｓ２０５におけるＰＤＬ解釈部１２０からの通知あるいはＳ２１０における解釈結果記憶部１３０からの通知を受信すると、ＤＬ生成部１５０が処理していない解釈結果がバッファ１４３に記憶されているかを判定する（Ｓ３０１）。
【００４６】
未処理の解釈結果が記憶されている場合、ＤＬ生成部１５０は、バッファ１４３に記憶されている未処理の解釈結果から、バッファ１４３に記憶された順に従ってＤＬを１つずつ生成する（Ｓ３０２）。ＤＬ生成部１５０は、生成した順にＤＬを１つずつ、不図示のＤＬ記憶部に記憶する。このときＤＬ生成部１５０は、１つの未処理の解釈結果からＤＬを生成し終えてから、次の未処理の解釈結果を受信する。
【００４７】
ＤＬ生成部１５０は、１つの解釈結果からＤＬを生成し終えると、その解釈結果をバッファ１４３から削除する（Ｓ３０３）。
【００４８】
これらＳ３０１〜Ｓ３０３の処理は、バッファ１４３から未処理の解釈結果がなくなるまで繰り返される。なおＤＬ生成部１５０は、バッファ１４３に未処理の解釈結果が記憶されていないと、ＰＤＬ解釈部１２０からＳ２０５の通知（ページ終了通知）を受信したかを判定する（Ｓ３０４）。ページ終了通知を受信しなかった場合、本実施例ではＤＬ生成部１５０はＳ２０５の解釈結果の複製の完了通知を受信したことになり、処理は終了する。ページ終了通知を受信した場合、ＤＬ生成部１５０は、１ページ分のＤＬの生成が完了したことを描画処理部１７０に通知し、不図示のＤＬ記憶部に記憶されている１ページ分のＤＬを順次描画処理部１７０に送信する（Ｓ３０５）。
【００４９】
上述したように、第一実施例のプリンタコントローラは、ＰＤＬ解釈部１２０によってＰＤＬデータに含まれるＰＤＬコマンドを１コマンドずつ解釈し、その解釈結果を解釈結果記憶部１３０に１コマンド分ずつ記憶する。そして１コマンドの解釈結果が解釈結果記憶部１３０に記憶されると、その解釈結果はバッファ１４３に複製されて記憶される。そして、ＰＤＬ解釈部１２０は次のＰＤＬコマンドを解釈し、それと並列して、ＤＬ生成部１５０はバッファ１４３に記憶された解釈結果の複製からＤＬを生成する。すなわち、ＰＤＬ解釈部１２０によるＰＤＬデータの解釈処理とＤＬ生成部１５０によるＤＬの生成処理とが独立して非同期に実行される。
【００５０】
このように本実施例のプリンタコントローラは、解釈結果をバッファに複製する構成を有することにより、ＤＬの生成処理の遅延によって、ＰＤＬデータの解釈処理を遅延させることなく、効率的にＰＤＬデータの解釈処理を実行する。
【００５１】
＜第二実施例＞
第一実施例のプリンタコントローラにおいて、ＰＤＬコマンドの解釈結果はバッファ１４３に複製されていた。本実施例のプリンタコントローラは、ＰＤＬコマンドの解釈結果をバッファ１４３に複製するか否かを判定し、その判定に基づいて解釈結果を複製する。この理由について次に説明する。
【００５２】
ＰＤＬコマンド、特に描画コマンドの解釈結果の複製処理は、解釈結果にアドレス参照ポインタが含まれている場合、ポインタによって参照されるメモリアドレスを変更する処理を含む。このメモリアドレスの変更処理は、図５を用いて上述したように、時間を要する処理である。このようなデータの構造は、複製処理に時間がかかりすぎて全体の処理効率が低下する場合がある。そこで、このようなデータ構造であれば複製処理を行わないようにする。
【００５３】
一方、これらの描画コマンドに対して、フォントの描画コマンドなどは、解釈結果はフォントのグリフ（形状）を指定するインデックス番号であり、ポインタの変更を必要としないので、その解釈結果の複製処理の負荷は小さい。しかし、解釈結果からＤＬを生成する際に、グリフの輪郭（オブジェクトの輪郭）を抽出する処理が行われるため、解釈結果からのＤＬの生成処理の負荷は大きい。
【００５４】
以上説明したような事情があるため、本実施例のプリンタコントローラは、この処理の負荷の大きさに応じて、解釈結果の複製処理を行うか行わないかを切り替える。
【００５５】
＜第二実施例のプリンタコントローラの構成＞
本実施例のプリンタコントローラは、第一実施例のプリンタコントローラとは、ＰＤＬ解釈部１２０がＰＤＬデータの解釈結果の複製を行うか否かを判定する点、および、その判定に従って解釈結果を複製する点で異なる。
【００５６】
本実施例のＰＤＬ解釈部１２０は、図６に示されるフローチャートの処理を実行する。
【００５７】
他の部に関しては、特に説明がなければ、第一実施例と同様である。
【００５８】
＜第二実施例のプリンタコントローラの動作＞
図６のフローチャートを用いて、本実施例のプリンタコントローラの動作、特にＰＤＬ解釈部１２０について説明する。
【００５９】
＜ＰＤＬデータの解釈＞
図６は、ＰＤＬ解釈部１２０および解釈結果記憶部１３０によるＰＤＬデータの解釈処理のフローチャートである。
【００６０】
Ｓ６０１〜Ｓ６０７の処理は、Ｓ２０１〜Ｓ２０７の処理と同様である。
【００６１】
そして解釈結果記憶部１３０は、解釈結果記憶部１３０が記憶している解釈結果をバッファ１４３に複製させるか否かを判定する（Ｓ６０８）。判定方法については、図７を用いて後述する。
【００６２】
Ｓ６０８において解釈結果を複製させないと判定した場合、解釈結果記憶部１３０は、ＤＬ生成部１５０に図４に示されるフローチャートの処理を実行させる。また解釈結果記憶部１３０は、ＤＬ生成部１５０に、解釈結果記憶部１３０が記憶している解釈結果からＤＬを生成させる（Ｓ６０９）。具体的には、解釈結果記憶部１３０は以下の処理を実行する。
【００６３】
解釈結果記憶部１３０は、バッファ１４３に記憶された解釈結果の全てがＤＬ生成部１５０によって処理されたかを、バッファ１４３に解釈結果が残っているか否かで判定する。つまりバッファ１４３に解釈結果が残っていない場合に、解釈結果記憶部１３０は、バッファ１４３に記憶された解釈結果の全てがＤＬ生成部１５０によって処理されたと判定する。解釈結果記憶部１３０は、バッファ１４３に未処理の解釈結果がなくなったかを所定の時間間隔で判定する。そして解釈結果記憶部１３０は、バッファ１４３に記憶された解釈結果の全てが処理されたと判定した場合に、ＤＬ生成部１５０に、解釈結果記憶部１３０が記憶している解釈結果からＤＬを生成させる。このＤＬの生成指示は、図１の解釈結果記憶部１３０とＤＬ生成部１５０とを接続する信号線を介して、解釈結果記憶部１３０によってＤＬ生成部１５０に通知される。するとＤＬ生成部１５０は、解釈結果記憶部１３０に記憶されている解釈結果からＤＬを生成し、生成が完了すると解釈結果記憶部１３０にＤＬの生成が完了したことを通知する。そして解釈結果記憶部１３０は、ＤＬ生成部１５０からのＤＬの生成完了の通知を受信したことに応じて、ＰＤＬ解釈部１２０にＰＤＬデータの解釈を再開するように通知する。
【００６４】
そして処理はＳ６１１に進む。なお本実施例の解釈結果記憶部１３０は、ＤＬ生成部１５０によって解釈結果に直接アクセスされるため、ＰＤＬ解釈部１２０とＤＬ生成部１５０に共用される記憶部と言える。
【００６５】
Ｓ６０８において解釈結果を複製すると判定した場合、ＰＤＬ解釈部１２０は、解釈結果記憶部１３０に、解釈結果記憶部１３０が記憶している解釈結果を複製させて、その複製をバッファ１４３に記憶させる（Ｓ６１０）。複製処理については図５を用いて上述したとおりである。解釈結果記憶部１３０によるこの複製処理については図５を用いて後述する。この複製が完了すると、解釈結果記憶部１３０は、解釈結果の複製が完了したことを、図１の解釈結果記憶部１３０とＤＬ生成部１５０とを接続する信号線を介してＤＬ生成部１５０に通知する。また解釈結果記憶部１３０は、ＰＤＬデータの解釈を再開するように、図１の解釈結果記憶部１３０とＰＤＬ解釈部１２０とを接続する信号線を介してＰＤＬ解釈部１２０に通知する。そして処理はＳ６１１に進む。
【００６６】
ＰＤＬ解釈部１２０は、解釈結果記憶部１３０からのＰＤＬデータの解釈の再開通知を受信すると、ＰＤＬデータの解釈を再開する（Ｓ６１１）。そして処理はＳ２０２へ戻り、次のＰＤＬコマンドの解釈を始める。
【００６７】
＜ＰＤＬ解釈結果をバッファ１４３に複製するか否かの判定＞
解釈結果記憶部１３０の実行するＳ６０８の判定処理について、図７のフローチャートおよび図８を用いて説明する。
【００６８】
まず図８を用いて、本判定処理の目的について説明する。
【００６９】
図８（ａ）は、未処理の解釈結果がバッファ１４３に残っていない場合において、解釈結果記憶部１３０に記憶されている解釈結果の複製を行うか否かを説明する図である。
【００７０】
図８（ａ）に示されるＴｃとは、解釈結果記憶部１３０に記憶されている解釈結果から直接ＤＬ生成部１５０がＤＬを生成する処理の、処理負荷である。一方Ｔｄとは、解釈結果記憶部１３０に記憶されている解釈結果をバッファ１４３に複製する処理の、処理負荷である。なお処理負荷が大きいと処理時間もより多くかかる。図８（ａ）に示されるように、未処理の解釈結果がバッファ１４３に残っていない場合、解釈結果記憶部１３０に記憶されている解釈結果の処理としては２択である。１つは、解釈結果記憶部１３０に記憶されている解釈結果をバッファ１４３に解釈結果を複製する処理（複製処理）である。もう１つは、解釈結果記憶部１３０に記憶されている解釈結果をバッファ１４３に複製せずに、その解釈結果から直接ＤＬを生成する処理（ＤＬ生成処理）である。ＰＤＬ解釈部１２０は早く次のＰＤＬコマンドの解釈処理を行いたいので、複製処理かＤＬ生成処理かのいずれか早く処理が完了する方の処理を選択すればよい。したがって、図８（ａ）の場合、ＴｃとＴｄとを比較して処理負荷が小さい方の処理が実行される。
【００７１】
一方図８（ｂ）は、未処理の解釈結果がバッファ１４３に残っている場合において、解釈結果記憶部１３０に記憶されている解釈結果の複製を行うか否かを説明する図である。
【００７２】
図８（ｂ）に示されるＴｄとは、図８（ａ）を用いて説明したものと同様である。一方Ｔｒとは、図７を用いて後述するように、バッファ１４３に記憶されている全ての未処理の解釈結果からＤＬを生成する処理の、処理負荷である。なお処理負荷が大きいと処理時間もより多くかかる。図８（ｂ）に示されるように、未処理の解釈結果がバッファ１４３に残っている場合、解釈結果記憶部１３０に記憶されている解釈結果の処理としては２択である。１つは、解釈結果記憶部１３０に記憶されている解釈結果をバッファ１４３に複製する処理（複製処理）である。もう１つは、バッファ１４３に記憶されている未処理の解釈結果からのＤＬの生成を待ってから、解釈結果記憶部１３０に記憶されている解釈結果をバッファ１４３に複製せずにその解釈結果から直接ＤＬを生成する処理（ＤＬ生成処理）である。バッファ１４３に未処理の解釈結果が残っているということは、ＤＬの生成処理が遅れているということなので、ＤＬの生成処理の遅延を早く解消したい。そのために、複製処理かＤＬ生成処理かのいずれか早く処理が完了する方の処理を選択する。したがって、図８（ｂ）の場合、ＴｒとＴｄとを比較して処理負荷が小さい方の処理が実行される。
【００７３】
図７のフローチャートを用いて、この処理負荷に基づく判定処理について説明する。
【００７４】
解釈結果記憶部１３０は、解釈結果記憶部１３０に記憶している解釈結果に基づいて、解釈結果を複製するための負荷（処理コスト）を予測する（Ｓ４０１）。例えば、解釈結果記憶部１３０に記憶された解釈結果のデータサイズや、描画コマンドの種類や解釈結果によって描画される描画オブジェクトの種類毎に定められた負荷係数（値）によって負荷を数値的に計算する。なおこの負荷が大きければ解釈結果をバッファ１４３に複製するために要する時間も大きくなる傾向があるので、間接的に処理時間を予測しているとも言い換えることができる。
【００７５】
一般的には解釈結果のデータサイズが大きいほど複製処理の負荷は大きくなるが、その他の要因によっても複製処理の負荷は大きくなる。具体的には図２を用いて説明した、ベジエ曲線を指定する描画コマンドなどは、多くの場合、曲率が小さい曲線を描くため、リンク構造を持つ。そのためベジエ曲線を指定する描画コマンドの負荷係数は、リンク構造を持たない解釈結果が生成される直線の描画コマンドの負荷係数より大きく設定される。また逆に、フォントの描画コマンドのグリフを指定するインデックス番号の複製のような単純な解釈結果の複製となる描画コマンドの負荷係数は、比較的小さく設定される。
【００７６】
続いて解釈結果記憶部１３０は、ＤＬ生成部１５０が処理していない、バッファ１４３に記憶されている解析結果の個数を調べる（Ｓ４０２）。
【００７７】
未処理の解析結果がない場合（Ｓ４０２の個数が０の場合）、解釈結果記憶部１３０は、ＤＬ生成部１５０が解釈結果記憶部１３０に記憶されている解釈結果を処理してＤＬを生成するための負荷を予測する（Ｓ４０３）。すなわち、解釈結果記憶部１３０は、この解釈結果を複製せずにこの解釈結果からＤＬを生成する場合の処理コストを求める。例えば、バッファ１４３に記憶される解釈結果のデータサイズ、或いは解釈結果によって描画される描画オブジェクトの種類毎に定められたＳ４０１と異なる負荷係数（値）によって負荷を数値的に計算する。具体的には曲率の小さい曲線の描画コマンドや、破線やシェーディングの描画コマンドは、ＤＬの生成には比較的時間がかからないのでそのような描画コマンドの負荷は、そうでない描画コマンドよりも小さくなるように設定される。一方で、フォントの描画コマンドのような解釈結果からＤＬを生成する際に比較的時間がかかるような描画コマンドの負荷は、そうでない描画コマンドよりも大きくなるように設定される。
【００７８】
続いて解釈結果記憶部１３０は、Ｓ４０１とＳ４０３で予測した負荷を比較する（Ｓ４０４）。この比較によって、解釈結果記憶部１３０は、２種類の処理の遅延のうち何れが大きいかを判定する。この場合の一方の遅延は、Ｓ４０１の複製負荷による遅延、すなわち、解釈結果のバッファ１４３への複製が開始してから完了するまでの間、ＰＤＬデータの解釈が中断されることによって生じる遅延である。他方の遅延は、Ｓ４０３の処理負荷による遅延、すなわち、ＤＬ生成部１５０が解釈結果記憶部１３０にアクセスしてＤＬを生成している間、ＰＤＬデータの解釈が中断されることによって生じる遅延である。つまり、解釈結果を複製する場合と、しない場合とで、どちらの方がＰＤＬデータの解釈の再開に時間がかかるかを判定している。
【００７９】
Ｓ４０１で予測した負荷がＳ４０３で予測した負荷より大きい場合（解釈結果を複製する負荷が大きい場合）、解釈結果記憶部１３０は解釈結果を複製しないと判定する（Ｓ４０５）。
【００８０】
Ｓ４０１で予測した負荷がＳ４０３で予測した負荷以下の場合（解釈結果を複製する負荷が小さい場合）、解釈結果記憶部１３０は解釈結果を複製すると判定する（Ｓ４０７）。
【００８１】
一方、Ｓ４０２にて、未処理の解析結果が残っている場合、解釈結果記憶部１３０は、ＤＬ生成部１５０が未処理の解釈結果を全て処理するための負荷を予測する（Ｓ４０６）。すなわち、解釈結果記憶部１３０は、既にバッファ１４３に複製された未処理の解釈結果からＤＬ生成する場合の処理コストを求める。例えば未処理の解釈結果毎に，Ｓ４０３と同じ方法で処理負荷を予測した値の和を計算する。更に、解釈結果記憶部１３０は、ＤＬ生成部１５０がバッファ１４３に記憶されている解釈結果の複製を受信してからＳ４０６で処理負荷を計算するまでで、ＤＬ生成部１５０が処理を完了した分の処理負荷を上記で計算した値から減じる。その後解釈結果記憶部１３０は、Ｓ４０４にてＳ４０１とＳ４０６で予測した負荷を比較して、複製するか否かを判定する。
【００８２】
この比較によって、解釈結果記憶部１３０は、２種類の処理の遅延のうち何れが大きいかを判定する。この場合の一方の遅延は、Ｓ４０１の複製負荷による遅延、すなわち、解釈結果をバッファ１４３に複製した後に、バッファ１４３に記憶されたその解釈結果からＤＬの生成を完了するまでの遅延である。他方の遅延は、Ｓ４０６の処理負荷による遅延、すなわち、ＤＬ生成部１５０がバッファ１４３にアクセスして未処理の解釈結果からＤＬを生成した後に、解釈結果記憶部１３０に記憶されている解釈結果からＤＬの生成を完了するまでの遅延である。つまり、解釈結果を複製する場合と、しない場合とで、どちらの方が、その解釈結果からのＤＬ生成の完了に時間がかかるかを判定している。
【００８３】
＜負荷を予測するための計算式＞
例えばＳ４０１で計算する負荷Ｔｄの計算式は次のようになる。
Ｔｄ  ＝  Ｋｄ・Ｓ  ＋  Ｃｄ（ｏｂｊ）
ここで、Ｋｄは解釈結果記憶部１３０のハードウェア処理能力に依存する係数である。この係数はハードウェアの処理能力が高いほど小さい。また、Ｓは複製する解釈結果のデータサイズである。また、Ｃｄ（ｏｂｊ）は描画オブジェクトの種類を示すｏｂｊ毎に定義される、解釈結果記憶部１３０のハードウェア処理能力に依存する定数値である。この定数値はハードウェアの処理能力が高いほど小さい。
【００８４】
また、例えばＳ４０３で計算する負荷Ｔｃの計算式は次のようになる。
Ｔｃ  ＝  Ｋｃ（ｏｂｊ）・Ｓ  ＋  Ｃｃ（ｏｂｊ）
ここで、Ｋｃ（ｏｂｊ）は描画オブジェクトの種類を示すｏｂｊ毎に定義される、ＤＬ生成部１５０のハードウェア処理能力に依存する係数である。この係数はハードウェアの処理能力が高いほど小さい。また、Ｓは処理する解釈結果のデータサイズである。また、Ｃｃ（ｏｂｊ）は描画オブジェクトの種類を示すｏｂｊ毎に定義される、ＤＬ生成部１５０のハードウェア処理能力に依存する定数値である。この係数はハードウェアの処理能力が高いほど小さい。ここでＫｃを描画オブジェクト毎に定義する理由について説明する。例えば描画オブジェクトがイメージデータである場合、Ｓは別種の描画オブジェクトに比べて大きくなりやすい。しかしながら、ＤＬ生成部１５０がイメージデータを処理するのにかかる負荷（時間）は、別種の描画オブジェクトに比べて比較的小さい。このため描画オブジェクト毎に処理する描画オブジェクトのデータサイズに乗ずる係数を定義したほうが、より精度よくＴｃの値を予測できる。
【００８５】
また、例えばＳ４０６で計算する負荷Ｔｒの計算式は次のようになる。
Ｔｒ  ＝  ΣＴｃ  −  Ｔｆ
ここでΣＴｃは、バッファ１４３に複製されている未処理の解釈結果の上述した負荷Ｔｃの合計である。ＴｆはＤＬ生成部１５０が処理中の解釈結果を処理し始めてから、Ｓ４０６を実行するまでの時間である。
【００８６】
すなわち、解釈結果記憶部１３０は、解釈結果記憶部１３０が記憶したデータ（解釈結果）の、バッファ１４３への複製の有無を決定するために用いられる情報に基づいて、そのデータをバッファ１４３に複製するか否かを判定している。ここではその情報は、ここでは各処理にかかる負荷の算出値である。
【００８７】
以上で説明したように、解釈結果記憶部１３０は、解釈結果記憶部１３０に記憶している解釈結果から、解釈結果記憶部１３０による複製処理の負荷とＤＬ生成部１５０によるＤＬ生成処理の負荷とを予測する。このため、描画するオブジェクトの種類に応じた負荷を精度よく予測できる。また、バッファ１４３に未処理の解釈結果が残っていない際に、続くＰＤＬデータの解釈を早く開始できるように解釈結果を複製するか否かを判定することができる。
【００８８】
なお本実施例において、負荷Ｔｄ、Ｔｃ，Ｔｒを描画されるオブジェクトの種類に関係なく一つの式で定義したが、例えば描画オブジェクトの種類毎に予測する式を定義してもよい。
【００８９】
予測されるＴｄは、解釈結果記憶部１３０に記憶されている解釈結果をバッファ１４３に複製するまでにかかる時間に相当する。言い換えるとバッファ１４３に未処理の解釈結果が残っていない場合に予測されるこのＴｄは、複製処理を行うことによる、次のＰＤＬデータのＰＤＬコマンドの解釈を再開するまでの遅延時間に相当する。
【００９０】
バッファ１４３に未処理の解釈結果が残っていない場合に予測されるＴｃは、解釈結果記憶部１３０に記憶されている解釈結果から直接にＤＬを生成完了するまでにかかる時間に相当する。言い換えるとこのＴｃは、直接にＤＬ生成処理を行うことによる、次のＰＤＬデータのＰＤＬコマンドの解釈を再開するまでの遅延時間に相当する。
【００９１】
バッファ１４３に未処理の解釈結果が残っていない場合には、この２種類の遅延時間に相当するＴｄとＴｃとが比較され、より遅延の少ない方の処理が選択される。このため、バッファ１４３に未処理の解釈結果が残っていない場合のＰＤＬ解釈部１２０によるＰＤＬデータの解釈処理の再開を早めることができる。
【００９２】
一方で、バッファ１４３に未処理の解釈結果が残っている場合に予測されるＴｄは、複製処理を行うことによって、バッファ１４３に複製された解釈結果からＤＬの生成が開始されるまでに少なくともかかる、最短の遅延時間に相当する。
【００９３】
またバッファ１４３に未処理の解釈結果が残っている場合に予測されるＴｒは、バッファ１４３に残っている未処理の解釈結果からのＤＬの生成が完了するまでにかかる時間に相当する。言い換えると、解釈結果記憶部１３０に記憶されている解釈結果から直接にＤＬの生成が開始されるまでにかかる遅延時間に相当する。
【００９４】
バッファ１４３に未処理の解釈結果が残っている場合には、この２種類の遅延時間に相当するＴｄとＴｒとが比較され、より遅延の少ない方の処理が選択される。このため、バッファ１４３に未処理の解釈結果が残っている場合のＤＬ生成部１５０によるＤＬの生成処理の開始を早めることができる。なおＤＬの生成の開始が早ければＤＬの生成の完了も早くなるため、結果としてＤＬの生成の完了を早めることができる。
【００９５】
なお上述した本実施例においては、各処理負荷Ｔｄ、Ｔｃ、Ｔｒを算出し、算出された処理負荷を比較することで、解釈結果の複製処理を行うかを制御していた。しかし他の方法を取っても良い。
【００９６】
例えば、解釈結果の複製処理にかかる処理コスト（負荷Ｔｄ）のみに基づいて判定しても良い。この場合、ＰＤＬ解釈部１２０は、Ｔｄが所定の閾値を超えた場合に複製処理を行わずにＤＬ生成するように制御し、Ｔｄが所定の閾値未満の場合に複製処理を行ってＤＬ生成するように制御する。
【００９７】
また例えば、解釈結果のＤＬ生成処理にかかる処理コスト（負荷Ｔｃ）のみに基づいて判定しても良い。この場合、ＰＤＬ解釈部１２０は、Ｔｃが所定の閾値を超えた場合に、複製処理を行ってＤＬ生成するように制御し、Ｔｃが所定の閾値未満の場合に、複製処理を行わずにＤＬ生成するように制御する。
【００９８】
また例えば、バッファ１４３に記憶されている未処理の解釈結果のＤＬ生成処理にかかる処理コスト（負荷Ｔｒ）のみに基づいて判定しても良い。この場合、ＰＤＬ解釈部１２０は、Ｔｒが所定の閾値を超えた場合に、複製処理を行ってＤＬ生成するように制御し、Ｔｒが所定の閾値未満の場合に、複製処理を行わずにＤＬ生成するように制御する。
【００９９】
また例えば、本実施例のように各処理の処理コスト（負荷Ｔｄ、Ｔｃ、Ｔｒ）を算出することなく、次のようにして、解釈結果を複製するかを判定しても良い。ＰＤＬ解釈部１２０は、解釈結果記憶部１３０に記憶された解釈結果のデータサイズが所定の閾値を超えた場合に複製処理を行わずにＤＬ生成するように制御し、解釈結果のデータサイズが所定の閾値以下の場合に複製処理を行ってＤＬ生成するように制御する。この場合、所定の閾値が解釈結果の複製の有無を決定するために用いられる情報である。
【０１００】
あるいは、描画コマンドの種類や解釈結果によって描画される描画オブジェクトの種類に基づいて判定しても良い。この場合、描画コマンドの種類や描画オブジェクトの種類のうち、特定の種類の描画コマンドや描画オブジェクトを記載したテーブルを用いる。ＰＤＬ解釈部１２０は、描画コマンドがこのテーブルに合致する（描画コマンドが特定の種類である）場合に、複製処理を行わずにＤＬ生成するように制御し、解釈結果がこのテーブルに合致しないする場合に、複製処理を行わずにＤＬ生成するようにする。この場合、このテーブルが解釈結果の複製の有無を決定するために用いられる情報である。例えばテーブルにはシェーディングの描画コマンドが含まれており、描画コマンドがフォントの描画コマンドであれば解釈結果の複製処理を行い、描画コマンドがシェーディングの描画コマンドであれば解釈結果の複製処理を行わない。
【０１０１】
＜その他の実施例＞
以上の実施例におけるプリンタコントローラでは、解釈結果記憶部１３０とバッファ１４３とは別々のハードウェアであったが、同一のハードウェア上に構成されていても良い。この場合、該ハードウェアの有するＲＡＭ等の１つのメモリを、解釈結果記憶部１３０の有する固定サイズの記憶領域のメモリ、および、バッファ１４３の有する固定サイズの記憶領域のメモリとして機能させるようにすればよい。これがその他の実施例のうちの一例である。
【０１０２】
また、他の例についても説明する。以上の実施例におけるプリンタコントローラは、ＰＤＬデータの解釈処理、解釈結果の複製処理、解釈結果からのＤＬの生成処理を独立した専用のハードウェアにて行った。しかし、以上の実施例におけるＰＤＬ解釈部１２０、解釈結果記憶部１３０、バッファ１４３、ＤＬ生成部１５０と同様の処理を、ＣＰＵ等の汎用的な演算ユニットに実行させることができる。
【０１０３】
例えばＲＯＭ、ＲＡＭ、そして２つのＣＰＵを有するプリンタコントローラにおいて、ＰＤＬ解釈部１２０、解釈結果記憶部１３０、バッファ１４３の処理を一方のＣＰＵ（ＣＰＵ１）に行わせる。そしてＣＰＵ１がそれらの処理を行っている最中に、ＤＬ生成部１５０の処理を他方のＣＰＵ（ＣＰＵ２）に行わせるようにすればよい。処理の際には、ＣＰＵ１は、ＲＯＭから上述したＰＤＬ解釈部１２０、解釈結果記憶部１３０、バッファ１４３の処理を実行するためのプログラムを読み出して実行する。またＣＰＵ２は、ＲＯＭから上述したＤＬ生成部１５０の処理を実行するためのプログラムを読み出して実行する。この場合に、ＲＡＭが上述した解釈結果記憶部１３０およびバッファ１４３のそれぞれの記憶領域として機能する。この解釈結果記憶部１３０として機能する記憶領域とバッファ１４３として機能する記憶領域とは、重複しない。
【０１０４】
またこの処理を、ＰＤＬコマンドの単位のスレッドで行うようにすれば、ＣＰＵ１がＰＤＬコマンドの解釈処理を実行している間にＣＰＵ２が別の解釈結果からのＤＬの生成処理を実行できるようにプリンタコントローラを構成することができる。そしてスレッドで処理を行うことで、逆に、ＣＰＵ２がＰＤＬコマンドの解釈処理を実行し、その間に、ＣＰＵ１が別の解釈処理からのＤＬの生成処理を実行できるようにも、プリンタコントローラを構成することができる。
【０１０５】
すなわち、本発明は、以下の処理を実行することによっても実現される。その処理は、上述した実施例の機能を実現させるソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015020384.tif 000003
【図２】
2015020384.tif 000004
【図３】
2015020384.tif 000005
【図４】
2015020384.tif 000006
【図５】
2015020384.tif 000007
【図６】
2015020384.tif 000008
【図７】
2015020384.tif 000009
【図８】
2015020384.tif 000010
【図９】
2015020384.tif 000011