(57)【特許請求の範囲】
【請求項１】
ページ記述言語の記載を基に画像処理をする画像処理装置であって、
前記ページ記述言語で記載されたデータを記憶する記憶手段と、
前記記憶手段に記憶したページ記述言語の入れ子構造に関する記載を解析するページ記述言語解析手段と、
前記ページ記述言語解析手段により解析した前記入れ子構造を基に、描画する図形の種類と入れ子構造の深さレベルの情報を含むリストであるディスプレイリストを作成するディスプレイリスト作成手段と、
前記ディスプレイリストに従って、前記入れ子構造の深さレベル毎にサブレンダリングバッファを取得して該サブレンダリングバッファにレンダリングを行い、該サブレンダリングバッファの内容を用いて各ページのレンダリングを行うページレンダリング手段と
を備え、
前記ページレンダリング手段は、同じ深さレベルの前記入れ子構造内の描画を同じサブレンダリングバッファに行うとともに、最も深い深さレベルから逆順に前記入れ子構造内の描画を前記サブレンダリングバッファに行い、最も浅い深さレベルの入れ子構造に対応する前記サブレンダリングバッファの描画データと前記入れ子構造の外側の描画をレンダリングバッファに行って印刷に用いるレンダリングバッファイメージを作成する
ことを特徴とする画像形成装置。
【請求項２】
前記ページ記述言語は、ＸＰＳを含むＸＭＬを基にしたページ記述言語であることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
請求項１または２に記載の画像形成装置と、
通信装置とを備えることを特徴とする画像形成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置及び画像形成システム、特にＸＰＳで描画破綻が起きない画像処理装置及び画像形成システムに関する。
【背景技術】
【０００２】
近年、ＰＣ（パーソナル・コンピュータ）の普及に伴って、ＰＣからデータをプリントするプリンタ等の印刷装置と、プリンタとスキャナやＦＡＸ等を含む複合機等の画像形成システムが普及している。
【０００３】
このプリンタとしては、オフィス等の業務用途では、高速で高品質な画像を印刷するページプリンタが使用されている。ページプリンタの種類としては、例えばレーザーを用いて感光体に印刷するイメージに対応する電荷パターンを作成し、このパターンに従いトナーを感光体に付着させ、トナーを紙に転写して熱と圧力で定着させることで印刷を行うレーザープリンタが広く用いられている。また、レーザーの代わりにＬＥＤアレイを用いたページプリンタである、ＬＥＤプリンタ等もよく用いられている。
【０００４】
このページプリンタにおいては、印刷時に印刷されるデータが、ページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ、ＰＤＬ）と呼ばれるコンピュータ言語で記載されることが多い。
【０００５】
ページ記述言語は、例えば、紙の上のどの座標からどの座標に線を引くといったベクトル情報や、文字の形状であるフォント情報といった情報を備えている。
【０００６】
このため、ページ記述言語で記載されたデータは、ドットの集合体であるビットマップデータをプリンタに直接送信するよりもデータ容量を削減できることが多い。
【０００７】
このページ記述言語で記載されたデータを、例えばＵＳＢやＬＡＮ等を介してページプリンタに送信すると、ページプリンタ内部のＣＰＵ（中央演算装置）が解析し、実際に印刷するイメージを作成する。このイメージの作成をレンダリング（描画）又はラスタライズと呼ぶ。
【０００８】
ページプリンタの内部では、レンダリングにより、例えば１２００ｄｐｉ（ドット・パー・インチ）や２４００ｄｐｉといった、ＰＣの画面（通常は、７２ｄｐｉ）よりも高解像度のビットマップデータを生成している。また、このビットマップデータは、各ページプリンタの特性に合わせたパターンを作成することができる。
【０００９】
このため、ＰＣでビットマップデータを作成して、これを直接プリンタに転送するよりも高品位の印刷を行うことができる。
【００１０】
しかし、ページプリンタ等のプリンタは、ＰＣに比べて主記憶装置等のメモリ容量が少ないことが多い。このため、ページ記述言語で記載されたデータをレンダリングする際に、メモリ容量を削減することが求められる。
【００１１】
そこで、特許文献１を参照すると、ページ記述言語で記載されているデータについて、メモリの使用量を抑えて描画を行う印刷装置が存在する（以下、従来技術１と呼ぶ）。
【００１２】
従来技術１においては、組み合わせてレンダリングする必要がある複数の描画プリミティブ又は描画オブジェクトと呼ばれる描画単位（例えば、描画プリミティブ同士のＡＮＤやＯＲなどの論理演算を行うもの）について、印刷データを送信するホストＰＣ側で指定してヘッダ情報を付加する。
【００１３】
このヘッダ情報の付加されている以外の描画プリミティブの描画画像を、ハーフトーンと呼ばれるディザリングパターン等のメモリ使用量の少ない状態に圧縮することで、印刷装置が使用するメモリ容量を削減することができる。
【特許文献１】特開２００６−１６８０５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかし、従来技術１の印刷装置では、複数の入れ子（ネスト）構造を記述できるページ記述言語の場合、描画を正常に行うことができない場合があるという問題があった。
【００１５】
特に、マイクロソフト社は、近年、Ｗｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａ  ＯＳ（オペレーティング・システム）において、ＸＭＬ形式で記述する高機能なページ記述言語であるＸＰＳを全面的に採用している。このＸＰＳは、何重にも入れ子構造を記載することが可能であるため、従来技術１の印刷装置においては、描画の破綻が起こっていた。
【００１６】
本発明は、このような状況に鑑みてなされたものであり、上述の課題を解消することを課題とする。
【課題を解決するための手段】
【００１７】
本発明の画像処理装置は、ページ記述言語の記載を基に画像処理をする画像処理装置であって、前記ページ記述言語で記載されたデータを記憶する記憶手段と、前記記憶手段に記憶したページ記述言語の入れ子構造に関する記載を解析するページ記述言語解析手段と、前記ページ記述言語解析手段により解析した前記入れ子構造を基に、描画する図形の種類と入れ子構造の深さレベルの情報を含むリストであるディスプレイリストを作成するディスプレイリスト作成手段と、前記ディスプレイリストに従って、前記入れ子構造の深さレベル毎にサブレンダリングバッファを取得して該サブレンダリングバッファにレンダリングを行い、該サブレンダリングバッファの内容を用いて各ページのレンダリングを行うページレンダリング手段とを備え、前記ページレンダリング手段は、同じ深さレベルの前記入れ子構造内の描画を同じサブレンダリングバッファに行うとともに、最も深い深さレベルから逆順に前記入れ子構造内の描画を前記サブレンダリングバッファに行い、最も浅い深さレベルの入れ子構造に対応する前記サブレンダリングバッファの描画データと前記入れ子構造の外側の描画をレンダリングバッファに行って印刷に用いるレンダリングバッファイメージを作成することを特徴とする。
【００１８】
本発明の画像処理装置は、前記ページ記述言語は、ＸＰＳを含むＸＭＬを基にしたページ記述言語であることを特徴とする。
【００１９】
本発明の画像形成システムは、請求項１又は２に記載の画像処理装置と、通信装置とを備えることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、入れ子構造を記述できるページ記述言語で記載されたデータを、正確に描画できる画像処理装置と画像形成システムを提供することができる。
【発明を実施するための最良の形態】
【００２１】
＜第１の実施の形態＞
（画像処理装置Ｘの制御構成）
本発明の実施の形態に係る画像処理装置Ｘは、ページプリンタの画像処理部に相当する部位である。
【００２２】
制御ブロック図である図１を参照すると、画像処理装置Ｘは、ＣＰＵ内のＸＭＬ処理用コ・プロセッサ、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ／Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）方式の演算器、ＲＯＭやＲＡＭ等を用いて実行するプログラム等により実現されるプリントデータ受信記憶部２０１（記憶手段）、ＰＤＬ解析部２０２（ページ記述言語解析手段）、ディスプレイリスト作成部２０３（ディスプレイリスト作成手段）、及びページレンダリング部２０４（ページレンダリング手段）のような構成要素を備えている。
【００２３】
また、本発明の実施の形態に係るページプリンタは、画像処理装置Ｘに加えて、公知のＣＰＵ（中央演算装置、ＭＰＵ）、レーザー、感光体（ドラム）、ポリゴンミラー、補助記憶装置（ＲＡＭ、ＲＯＭ、ＨＤＤやフラッシュメモリ等）、Ｉ／Ｏ等を備えている。
【００２４】
さらに、ＵＳＢ（ユニバーサル・シリアル・バス）やＬＡＮ等であるＰＣ用のインターフェイス（通信装置）等も備えて、画像形成システムとして用いることができる。この画像形成システムには、スキャナやＦＡＸ機能等も備えた複合機等としても用いることができる。
【００２５】
以下で、実施の形態に係る画像処理装置Ｘの制御構成の詳細について説明する。
【００２６】
プリントデータ受信記憶部２０１は、画像処理装置ＸのＵＳＢやＬＡＮ等で受信したページ記述言語で記載されたデータをバッファリングするＲＡＭや補助記憶装置である。
【００２７】
ＰＤＬ解析部２０２は、バッファリングされたデータをページ記述言語の命令により解析してしかるべき処理に分岐する制御手段である。このＰＤＬ解析部２０２は、ページ記述言語の種類毎に異なる解析処理を行うことが可能であり、例えば、マイクロソフト社のＸＰＳに加え、Ａｄｏｂｅ社のＰｏｓｔＳｃｒｉｐｔ（登録商標）言語、ＰＲＥＳＣＲＩＢＥ言語等に対応できる。ＰｏｓｔＳｃｒｉｐｔの場合には、エミュレータにて対応可能である。
【００２８】
ディスプレイリスト作成部２０３は、各ページのデータを用いて、入れ子構造を持つデータを効率よくレンダリングするために、レンダリングする描画の最小単位である描画プリミティブに分割したディスプレイリストを作成する。
【００２９】
ここで、本発明の実施の形態に係る画像処理装置Ｘにおいては、実際に印刷用に用いるビットマップデータであるレンダリングバッファと、これとは別に、一時的に用いる別のバッファを用意してレンダリングを行うことができる。
【００３０】
本発明の実施の形態に係る画像処理装置Ｘでは、この一時的に用いる別のバッファをサブレンダリングバッファと呼ぶ。
【００３１】
ディスプレイリスト作成部２０３は、このサブレンダリングバッファを取得することもできる。
【００３２】
ページレンダリング部２０４は、ディスプレイリストに従い、実際にレンダリングバッファ又はサブレンダリングバッファに対してラスタライズ・オペレーションを行う。これにより、各ページのレンダリングが行われる。また、ページレンダリング部２０４は、線画エンジン、特定色でのフィル、バイリニア拡大・縮小・回転を行うｂｌｔｅｒ、誤差拡散、色空間変換等の処理を高速に行うためのアクセレレーション機能等を搭載しており、高速なレンダリングを行うことが可能である。
【００３３】
（ＸＰＳによるブレンド処理の概略）
ここで、図２と図３を参照して、図２のＸＰＳの記述を基に、レンダリング画像を用いてブレンド処理（半透明描画処理）を行う際の概要について説明する。
【００３４】
まず、ＸＰＳの概略について説明する。
【００３５】
ＸＰＳは、上述のようにＷｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａ  ＯＳに標準で用いられる、高機能なページ記述言語である。ＸＰＳは、データベース等で標準に用いられているＸＭＬ形式で記述され、複数の入れ子構造をとるエレメントから構成される。各エレメントは、例えば＜ｃａｎｖａｓ＞と＜／ｃａｎｖａｓ＞のようなタグに囲まれた内側に、必要な情報を記述することにより規定される。
【００３６】
各エレメントの内側には別のエレメントを記述することも可能である。このため、ＸＰＳでは、レンダリングするイメージが入れ子構造となることがよくある。
【００３７】
ブレンド処理は、上述のような入れ子構造内で描画したイメージを属性値として用いて、別の描画を行うための典型的な例である。具体的には、あるイメージを描画して、その描画したイメージを、他の図形を描画した透明度を記述する透過マスクデータとして使用することが可能である。
【００３８】
ここで、図２を参照して、ＸＰＳでのブレンド処理の記載について簡単に説明する。図２は、ブレンド処理を説明するためのＸＰＳを抜粋したものである。
【００３９】
図２のＸＰＳの記述において、＜ｆｉｘｅｄ  ｐａｇｅ＞エレメントは、あるページに描かれる内容を記述している。すなわち、画像処理装置Ｘは、＜ｆｉｘｅｄ  ｐａｇｅ＞〜＜／ｆｉｘｅｄ  ｐａｇｅ＞のタグ内に記述されたエレメントの内容を、１ページに印刷する。
【００４０】
＜ｃａｎｖａｓ＞エレメントは、任意範囲の図形のレンダリング領域を示しているエレメントである。この＜ｃａｎｖａｓ＞エレメントにより、複数のエレメントを１単位にまとめることができる。すなわち、＜ｃａｎｖａｓ＞〜＜／ｃａｎｖａｓ＞間に記載された内容が、描画するイメージの１単位である描画プリミティブ等に翻訳される。
【００４１】
また、この＜ｃａｎｖａｓ＞エレメントに指定する属性は、内側のエレメントである子エレメントに影響を与える。
【００４２】
＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントは、透過の情報であることを明示的に示すエレメントである。＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントは、このエレメントの内側のエレメントで描画されたイメージを、透明度を記述するアルファ値を示すイメージとして扱うためのエレメントである。すなわち、画像処理装置Ｘは、＜ｏｐａｃｉｔｙｍａｓｋ＞〜＜／ｏｐａｃｉｔｙｍａｓｋ＞間の記述で描いたイメージを、透過マスクデータとして使用する。
【００４３】
上述の透過マスクデータは、例えば０〜２５５（８ｂｉｔ）や０〜６５５３５（１６ｂｉｔ）の単位で透過率を規定する。
【００４４】
８ｂｉｔの場合は、０が完全に透明で、２５５が完全に不透明であることを示す。同様に、１６ｂｉｔの場合は、０が完全に透明で、６５５３５が完全に不透明であることを示す。
【００４５】
なお、この透過マスクデータは、ＲＧＢ値やＣＭＹＫ値等のカラー毎に用意してもよい。
【００４６】
さらに、固定小数点値又は浮動小数点値で表現されていてもよい。この場合は、最大値と最小値を規定する値を決定しておくことが望ましい。
（従来技術１による描画）
図２のＸＰＳをレンダリングする場合、従来技術１によると、＜ｏｐａｃｉｔｙｍａｓｋ＞エレメント内の記載内容を、複数の描画プリミティブとしてまとめて、ヘッダ情報を付加することになる。すなわち、図２のＸＰＳの場合は、全体に対してヘッダ情報が付加されて、従来技術１ではコントーン画像用のバッファと呼ばれているレンダリング用のビットマップデータであるレンダリングバッファのみを使用することになる。
【００４７】
このヘッダの付加については、従来技術１では入れ子構造を処理する仕組みが用意されていないので難しいと考えられるが、全体が圧縮されない状態で描画されるものとして説明する。
【００４８】
また、従来技術１の印刷装置では、入れ子構造を処理しないため、＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントの描画が終了すると、すぐに背景画像であるレンダリングバッファに対して半透明処理を行う。
【００４９】
よって、図２のＸＰＳのレンダリングは、図３を参照すると以下のように行われる。
【００５０】
まず、図３のレンダリングバッファの描画状態のイメージであるレンダリングバッファイメージ１００には、元々、背景の文字等が描かれているとする。
【００５１】
ここで、従来技術１の印刷装置はＰＤＬを解析し、もっとも内側の＜ｃａｎｖａｓ＞エレメントで、図３の図形描画（１）の矩形を２つ、レンダリングバッファに描画する。この時点でのレンダリングバッファは、レンダリングバッファイメージ１０１のようなイメージとなる。ここで、背景の文字等が塗りつぶされる。
【００５２】
この図形描画（１）は、＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントの内側であるため、これが透過マスクデータになる。
【００５３】
次に、透過マスクデータである背景画像と、図３の図形描画（２）の図形（この場合は、５０％グレーの矩形）をレンダリングバッファに対して描画する。この時点でのレンダリングバッファは、レンダリングバッファ１０２のようなイメージとなる。
【００５４】
ここで、レンダリングバッファ１０２のイメージは、＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントの内側であるため、また透過マスクデータとして用いられることになる。
【００５５】
ここで、実際には、従来技術１は、このような複数の入れ子構造には対応していないためエラー処理を行うのが妥当だと思われる。しかし、ここでは説明のために、＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントの情報を用いて描画が進められる場合どうなるかについて解説する。
【００５６】
この場合、従来技術１の印刷装置は、図３の図形描画（３）のカラーの矩形（青成分１００％）を描画し、このとき１０２で生成したイメージのうち、図形描画３に用いられる背景の一部について透過マスクデータとして、描画される矩形とブレンドされたイメージを描画する。
【００５７】
すなわち、最終的なレンダリングバッファのイメージは、レンダリングバッファイメージ１０３のような画像となる。
【００５８】
しかしながら、図３のような描画結果は、本来ＸＰＳの記述が意図していた描画結果とはかけ離れている。すなわち描画の破綻が起こっているといえる。
【００５９】
そこで、本発明の発明者は鋭意研究と実際の印刷データを用いて開発を行い、印刷装置におけるＸＰＳのような高度なページ記述言語での描画に最適な方法を開発するに至った。
【００６０】
本発明の実施の形態に係る画像処理装置Ｘにおいては、上述のように図２のように入れ子構造のあるページ記述言語の記載を基にレンダリングする際に、サブレンダリングバッファを確保してこれに対して描画するといった仕組みを提供することで、描画の破綻を避けることが可能となる。
（本発明の実施の形態に係る画像処理装置Ｘによる描画）
図２のＸＰＳを用いて、本発明の実施の形態に係る画像処理装置Ｘにおいてブレンド処理を行う場合の処理の概要について、図４と図５を参照して説明する。
【００６１】
画像処理装置Ｘは、プリントデータ受信記憶部２０１が印刷データを受信し（ステップＳ７０１）、ＰＤＬ解析部２０２がＰＤＬの解析を行なう（ステップＳ７０２）。
【００６２】
この解析したデータを基に、ディスプレイリスト作成部２０３は＜ｃａｎｖａｓ＞エレメントが解析された場合は、入れ子構造があると判定する（ステップＳ７０３）。
【００６３】
入れ子構造があった場合は、ディスプレイリスト作成部２０３は＜ｃａｎｖａｓ＞のカウンタを増加させる（ステップＳ７０４）。
【００６４】
この上で、ディスプレイリスト作成部２０３は、後の行のＰＤＬの記述内容からディスプレイリストを作成する（ステップＳ７０５）。
【００６５】
さらに、ディスプレイリスト作成部２０３は、入れ子構造の内側でサブレンダリングバッファを取得する必要があると判定した際に（ステップＳ７０６）、レンダリングバッファとは別にサブレンダリングバッファ（２）を取得して（ステップＳ７０７）、サブレンダリングバッファのカウントを増加させる（ステップＳ７０８）。
【００６６】
また、ディスプレイリスト作成部２０３は、入れ子構造の内側でなくなったことを判定し（ステップＳ７０９）、＜ｃａｎｖａｓ＞のカウンタのデクリメント等の処理も行う（ステップＳ７１０）。
【００６７】
更に、ディスプレイリスト作成部２０３は、ディスプレイリストの作成時に、入れ子構造の内側であった場合は、上述のディスプレイリストの描画先として、入れ子構造の階層に対応するサブレンダリングバッファを選択し（ステップＳ７１２）、入れ子構造の外側であった場合はレンダリングバッファを選択する（ステップＳ７１３）
ディスプレイリスト作成部２０３は、ディスプレイリストを作成し終えたか判断し（ステップＳ７０１４）、まだ１ページ分のディスプレイリストの作成が終わっていない場合は、上述のステップを繰り返す。
【００６８】
ディスプレイリスト作成部２０３がディスプレイリストが作成し終えた場合は、ページレンダリング部２０４がディスプレイリストを解釈してレンダリングを行う（ステップＳ７１５〜Ｓ７１６）。
【００６９】
ここで、上述のステップを基に、ディスプレイリストが作成された場合、実際にはページレンダリング部がどのように描画を行うのかについて説明する。
【００７０】
まず、図４のレンダリングバッファイメージ１１０は、図３のレンダリングバッファイメージ１００と同様に、ページレンダリング部２０４により元々の背景文字等が描かれているものとする。
【００７１】
最初に、ページレンダリング部２０４は、もっとも内側の＜ｃａｎｖａｓ＞エレメントに対応したディスプレイリストを解釈した場合、図３の図形描画（１）の矩形を描画する。
【００７２】
この描画は、上述のようにディスプレイリストの作成時にディスプレイリスト作成部２０３がレンダリングバッファとは別にサブレンダリングバッファ（２）を取得しているため、サブレンダリングバッファ（２）に対してレンダリングを行う。この時点でのレンダリングバッファは、レンダリングバッファイメージ１１１のようになっており、変化しない。
【００７３】
なお、図形描画（１）は、＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントの内側であるため、これが透過マスクデータになる。
【００７４】
また、サブレンダリングバッファは、＜ｃａｎｖａｓ＞エレメントの深さレベルによって取得（確保）して用いるのが好適である。この取得の詳細については後述する。
【００７５】
次に、ページレンダリング部２０４は、サブレンダリングバッファ（２）の描画データを透過マスクデータとして、図３の図形描画（２）の図形（この場合は、５０％グレーの矩形）をサブレンダリングバッファ（１）に対して描画する。図形描画（２）の図形は、もっとも内側の＜ｃａｎｖａｓ＞エレメントよりも１つ外側の入れ子構造内にあるからである。
【００７６】
ここで、透過マスクデータは透明度を示すため、ページレンダリング部２０４は、サブレンダリングバッファ（２）とブレンドしたイメージを、サブレンダリングバッファ（１）に対して描画する。また、この時点でのレンダリングバッファは、レンダリングバッファイメージ１１２のように、まだ変化していない。
【００７７】
サブレンダリングバッファ（１）の描画データは、外側の＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントにより、さらに透過マスクデータとして用いられる。
【００７８】
最後に、ページレンダリング部２０４は、サブレンダリングバッファ（１）の描画データを透過マスクデータとして、図３の図形描画（３）のカラーの矩形（青成分１００％）をレンダリングバッファに対して描画する。図形描画（３）の図形は、入れ子構造の外側にあるからである。
【００７９】
これにより、最終的にプリンタが印刷するのに用いるレンダリングバッファ（ビットマップデータ）である、レンダリングバッファイメージ１１３が作成される。
【００８０】
このようなイメージが、本来のＸＰＳの記述が意図していたものである。
（ページ記述言語のレンダリング例）
次に、図５のフローチャートを用いて、上述の例とは別のＸＰＳである図６のＸＰＳと図７の描画例を参照して、画像処理装置Ｘを用いて実際に描画する場合のページ記述言語を解釈し、レンダリングする例について、更に詳しく説明する。
（ステップＳ７０１）
ステップＳ７０１においては、画像処理装置Ｘのプリントデータ受信記憶部２０１が、ＵＳＢやＬＡＮ等で接続されているホストであるＰＣ等から、ページ記述言語で記載されている印刷データを受信して記憶する。
【００８１】
なお、印刷データについては、ページ枚のデータ単位でも、文書全体をまとめて受信してもよい。
【００８２】
印刷データを受信すると、印刷前の初期化処理として、ディスプレイリスト作成部２０３は、ＣＶｃｎｔ、ＳＲｃｎｔを０とし、サブレンダリングバッファが残っていた場合には解放する。
【００８３】
また、ディスプレイリスト用の、先頭位置と追加位置のポインタについても初期化する。さらに、レンダリングバッファに０フィル等を行いクリアする等の処理を行う。
（ステップＳ７０２）
次に、ステップＳ７０２においては、ステップＳ７０１で受信してプリントデータ受信記憶部２０１に記憶したページ記述言語の印刷データを、ＰＤＬ解析部２０２が１行づつ解釈する。
【００８４】
なお、ＰＤＬ解析部２０２は、何行目を解釈しているかについての、行のカウンタを記憶している。
（ステップＳ７０３）
次に、ステップＳ７０３においては、ステップＳ７０２で解釈したデータは＜ｃａｎｖａｓ＞タグであるかについて、ＰＤＬ解析部２０２が判定する。
【００８５】
Ｙｅｓの場合、ＰＤＬ解析部２０２は、ステップＳ７０４に処理を進める。
【００８６】
Ｎｏの場合、ＰＤＬ解析部２０２は、ステップＳ７０９に処理を進める。
（ステップＳ７０４）
ステップＳ７０４においては、ステップＳ７０３でＰＤＬ解析部２０２が解析したエレメントが、＜ｃａｎｖａｓ＞タグだった場合、ディスプレイリスト作成部２０３は＜ｃａｎｖａｓ＞エレメントの入れ子構造の深さをカウントするカウンタをインクリメントする。
【００８７】
具体的には、以下で述べる「ＣＶｃｎｔ」をインクリメントする。
（＜ｃａｎｖａｓ＞エレメントのカウント例）
ここで、＜ｃａｎｖａｓ＞エレメントの入れ子構造における深さレベルのカウントについて、図８を参照して、以下で詳細に説明する。
【００８８】
このカウントした数については、ディスプレイリスト作成部２０３が、＜ｃａｎｖａｓ＞のカウンタ（以下、ＣＶｃｎｔと呼ぶ）と、サブレンダリングバッファのカウンタ（以下、ＳＲｃｎｔ）をＲＡＭ等に記憶する。ここで、ＣＶｃｎｔの数は、＜ｃａｎｖａｓ＞エレメントの深さレベルを示し、ＳＲｃｎｔは、実際に取得したサブレンダリングバッファの数を示す。
【００８９】
実際のサブレンダリングバッファの取得については、ＣＶｃｎｔとＳＲｃｎｔを用いて、以下のように行う。
【００９０】
行６０１をＰＤＬ解析部２０２が読み込むと、まだ＜ｃａｎｖａｓ＞タグを読み取っていないのでＣＶｃｎｔとＳＲｃｎｔはデフォルトの値である０である。
【００９１】
行６０２をＰＤＬ解析部２０２が読み込むと、＜ｃａｎｖａｓ＞タグを解釈する。これにより、ディスプレイリスト作成部２０３は、ＣＶｃｎｔをインクリメントする。さらに、ＳＲｃｎｔよりＣＶｃｎｔが大きいので、ディスプレイリスト作成部２０３がサブレンダリングバッファを確保して、ＳＲｃｎｔをインクリメントする。
【００９２】
行６０３をＰＤＬ解析部２０２が読み込むと、＜ｃａｎｖａｓ＞タグを解釈する。これにより、ディスプレイリスト作成部２０３は、ＣＶｃｎｔをインクリメントする。さらに、ＳＲｃｎｔよりＣＶｃｎｔが大きいのでサブレンダリングバッファを確保して、ＳＲｃｎｔをインクリメントする。
【００９３】
行６０４をＰＤＬ解析部２０２が読み込むと、＜／ｃａｎｖａｓ＞を解釈する。これにより、ディスプレイリスト作成部２０３は、ＣＶｃｎｔをデクリメントする。サブレンダリングバッファは解放しない。
【００９４】
行６０５をＰＤＬ解析部２０２が読み込むと、＜ｃａｎｖａｓ＞を解釈する。これにより、ディスプレイリスト作成部２０３は、ＣＶｃｎｔをインクリメントする。ここで、ＣＶｃｎｔはＳＲｃｎｔよりも大きくないのでサブレンダリングバッファを新たに確保する必要はない。
【００９５】
行６０６をＰＤＬ解析部２０２が読み込むと、＜／ｃａｎｖａｓ＞を解釈する。これにより、ディスプレイリスト作成部２０３は、ＣＶｃｎｔをデクリメントする。しかし、サブレンダリングバッファは解放しない。
【００９６】
行６０７をＰＤＬ解析部２０２が読み込むと、＜／ｃａｎｖａｓ＞を解釈する。これにより、ディスプレイリスト作成部２０３は、ＣＶｃｎｔをデクリメントする。しかし、サブレンダリングバッファは解放しない。
（ステップＳ７０５）
また図５のフローチャートに戻って説明する。
【００９７】
ステップＳ７０５においては、＜ｃａｎｖａｓ＞カウンタのカウント数（ＣＶｃｎｔ）に対応するレンダリングバッファを描画先として指定するオブジェクトを作成し、ディスプレイリストに追加する。
（ディスプレイリストの作成）
ここで、図９を参照して、本発明の実施の形態に係る画像処理装置Ｘで用いられるディスプレイリストについて詳しく説明する。
【００９８】
ディスプレイリストは、描画プリミティブの種類や描画をどのように進めるのかについて記述する属性情報及び付加情報、描画先を示す情報、描画プリミティブを指定する情報、他のオブジェクトへのポインタをまとめたオブジェクトを、ポインタにより接続したような、リスト（リンクリスト）型のデータ構造を備えるデータである。
【００９９】
このディスプレイリストの各オブジェクトには、以下の構成要素を記憶している。
【０１００】
まず、本発明の実施の形態に係る画像処理装置Ｘにおいては、描画することができる描画プリミティブとして、例えば点、線（直線、ベジェ曲線、スプライン曲線等）、円、だ円、四角形フィル、ポリゴンフィル、フォント、ビットマップデータ等を指定することができる。これらの描画プリミティブの種類を記憶する。
【０１０１】
また、描画プリミティブには、描画の際に半透明や透過マスクの描画、図形同士の論理演算（ＡＮＤ、ＯＲ、ＸＯＲ等）を作成することができるため、この属性情報を記憶することができる。
【０１０２】
さらに、点、線、ポリゴン等の色やハイライト、金属の反射係数、シェーディング情報、テクスチャ、シェーディングの方法等に加え、言語、ヘルプテキスト、座標変形の情報等の付加情報も記憶することができる。
【０１０３】
描画先を指定する情報としては、入れ子構造の深さレベルを基に記述する。実際に保持するデータとしては、記憶装置上のアドレス（ポインタ）を記述する。
【０１０４】
さらに、次のオブジェクトを示すポインタを記述する。複数のオブジェクトがまとまって描画される際には、このフラグを含めることができる。
【０１０５】
次に、図１０を参照して、図６のＸＰＳの描画を行う場合のディスプレイリストの作成の例を、さらに詳細に説明する。
【０１０６】
上述の図７のイメージ３０３のレンダリングをする際は、まず３０１と３０２のレンダリングから実行する必要があるので、レンダリングの小単位となるディスプレイリストの作成時も３０１のディスプレイリストを先に作成する。
【０１０７】
まず、ＰＤＬ解析部２０２は、＜ｏｐａｃｉｔｙｍａｓｋ＞エレメントを解釈して、透過処理を有効にするディスプレイリストであるディスプレイリスト４０１を作成する。
【０１０８】
次に、ＰＤＬ解析部２０２は、＜ｃａｎｖａｓ＞エレメントの入れ子構造を解釈した上でディスプレイリスト４０２を作成する。上述のように、図６のＸＰＳでは＜ｃａｎｖａｓ＞エレメントの入れ子構造が発生しているので、後述する入れ子構造の深さレベルのカウントが上がり、サブレンダリングバッファにレンダリングすることになる。よって、ディスプレイリスト４０２は、このサブレンダリングバッファを取得し、このバッファアドレスを描画先としてもつことを記憶する。
【０１０９】
次に、ＰＤＬ解析部２０２は、図６における図形描画（４）と図形描画（５）の各描画プリミティブを示す、ディスプレイリスト４０３を作成する。
【０１１０】
最後に、ＰＤＬ解析部２０２は、図６における図形描画（６）のディスプレイリストを示すディスプレイリスト４０４を作成する。このディスプレイリスト４０４では、＜ｃａｎｖａｓ＞エレメントの入れ子構造の外側なので、レンダリングバッファを描画先とすることを記憶する。
【０１１１】
ディスプレイリスト作成部２０３は、ディスプレイリストの先頭のオブジェクトを示すポインタを保持している。
【０１１２】
また、終端部分のオブジェクトにおける次のオブジェクトを示すポインタのポインタ（アドレス）を保持している。
【０１１３】
このポインタのポインタは、デフォルトではｎｉｌ（空）となっている。上述のように各オブジェクトがディスプレイリストに追加される場合には、オブジェクトのメモリを確保した後で、このポインタのポインタに、追加するオブジェクトのアドレスを記憶する。
（ステップＳ７０６）
また、図５のフローチャートに戻って説明する。
【０１１４】
ステップＳ７０６においては、＜ｃａｎｖａｓ＞カウンタのカウント数（ＣＶｃｎｔ）が、サブレンダリングバッファのカウント数（ＳＲｃｎｔ）より多いかについて、ディスプレイリスト作成部２０３が判断する（＜ｃａｎｖａｓ＞カウンタの数とサブレンダリングバッファの確保数のカウンタについて比較する）。
【０１１５】
Ｙｅｓの場合、ＰＤＬ解析部２０２は、ステップＳ７０７に処理を進める。
【０１１６】
Ｎｏの場合、ＰＤＬ解析部２０２は、ステップＳ７０９に処理を進める。
（ステップＳ７０７）
ステップＳ７０７においては、ステップＳ７０６で、＜ｃａｎｖａｓ＞カウンタの数がサブレンダリングバッファの取得数より大きかったときは、ディスプレイリスト作成部２０３が新たにサブレンダリングバッファを取得する。
【０１１７】
（サブレンダリングバッファの取得）
ここで、本発明の実施の形態に係る画像処理装置Ｘに係るサブレンダリングバッファの取得について説明する。
【０１１８】
画像処理装置Ｘでは、上述のようにＰＤＬ解析部２０２がＰＤＬを解析する。
【０１１９】
その上で、上述のように、レンダリングが階層的に指示されていたときは、ディスプレイリスト作成部２０３が、＜ｃａｎｐｕｓ＞の入れ子構造のレベルにより、一時的なレンダリング用のバッファであるサブレンダリングバッファをＲＡＭ又は補助記憶装置内に取得（確保）する。このサブレンダリングバッファは複数用意することが可能である。
【０１２０】
以下で、図６の同一レベルの入れ子構造をもつＸＰＳと描画結果の図７を参照して、実際にサブレンダリングバッファを取得する手順について、さらに詳しく説明する。
【０１２１】
図６においては、上述のように＜ｃａｎｖａｓ＞エレメント、すなわち＜ｃａｎｖａｓ＞〜＜／ｃａｎｖａｓ＞タグの間の命令を解釈してレンダリング画像を生成する。
【０１２２】
また、上述のように＜ｏｐａｃｉｔｙｍａｓｋ＞エレメント、すなわち＜ｏｐａｃｉｔｙｍａｓｋ＞〜＜／ｏｐａｃｉｔｙｍａｓｋ＞タグの間は透過率である透過マスクデータの定義になる。
【０１２３】
図６を参照すると、図形描画（４）のレンダリング結果であるイメージ３０１を、外側のイメージ３０３のレンダリングで透過情報として用いる。
【０１２４】
具体的には、図形描画（４）は、図６のイメージ３０１のように、実際に印刷されるページとは別のイメージとして描画する。すなわち、レンダリングバッファとは別のサブレンダリングバッファに描画する。このとき、このイメージ３０１の背景は黒色で、５０％Ｇｒａｙの矩形を描画している。つまり、透過率１．０を黒色とし、透過率０．０を白色としている。
【０１２５】
同様に、図形描画（５）のレンダリング結果であるイメージ３０２は、別のイメージとしてイメージ３０１と同じサブレンダリングバッファに描画する。ここでも、背景は黒色で、２５％Ｇｒａｙの矩形を描画している。なお、書き込むサブレンダリングバッファについては、＜ｃａｎｖａｓ＞の入れ子構造の深さレベルのカウントを用いて決定する。これについては後述する。
【０１２６】
次に、イメージ３０１とイメージ３０２のレンダリング結果のイメージを、透過マスクデータとして、イメージ３０３のレンダリングで背景色とブレンド処理して描画する。
【０１２７】
図７を参照すると、イメージ３０３のレンダリングは、イメージ３０１とイメージ３０２のイメージを透過マスクデータとして、青色の矩形イメージとブレンド処理して描画する。
【０１２８】
ここで、＜ｃａｎｖａｓ＞タグから＜／ｃａｎｖａｓ＞タグの間で、子エレメントとして＜ｃａｎｖａｓ＞エレメントが記述されるデータのとき、サブレンダリングバッファを確保する。
【０１２９】
つまり、ＰＤＬ解析部２０２が「＜ｃａｎｖａｓ＞」を解釈して、「＜／ｃａｎｖａｓ＞」を解釈する前に、次の「＜ｃａｎｖａｓ＞」を入力したときに、ディスプレイリスト作成部２０３はサブレンダリングバッファを確保する処理を行う。
【０１３０】
具体的には、ＰＤＬ解析部２０２が子エレメントの＜ｃａｎｖａｓ＞エレメント内を解釈して、ページ内で描画プリミティブでレンダリングする座標の最小値（左上）と最大値（右下）を割り出す。ディスプレイリスト作成部２０３は、この座標に対応するデータをＣ言語でいうｃａｌｌｏｃ（）のようにゼロ・フィルを行ったメモリ領域として、動的にバッファを確保する。ディスプレイリスト作成部２０３は、このサブレンダリングバッファ用のメモリ領域を、ページの描画終了時に開放する。この解放処理についても後述する。
【０１３１】
なお、処理を高速化するため、上述のように子エレメントでの座標を解釈せずに、レンダリングバッファのビットマップデータと同様の容量のサブレンダリングバッファを予め確保又は取得しておいてもよい。
（バッファの使用方法）
次に、実際のサブレンダリングバッファの確保と使用の方法について、図１１のＸＰＳを参照して説明する。
【０１３２】
図１１のＸＰＳを基にレンダリングする場合は、サブレンダリングバッファ２つを用意する。これは、＜ｃａｎｖａｓ＞の深さレベルの情報に応じて、用意するサブレンダリングバッファの数を決めるためである。
【０１３３】
すなわち、ＰＤＬ解析部２０２は、行５０２で＜ｃａｎｖａｓ＞タグを解釈する。この＜ｃａｎｖａｓ＞エレメント内部の描画を行うために、ディスプレイリスト作成部２０３は、サブレンダリングバッファを１つ取得する（これを、サブレンダリングバッファ（３）とする。）。
【０１３４】
次に、ＰＤＬ解析部２０２は、行５０３で＜ｃａｎｖａｓ＞エレメントの内部の＜ｃａｎｖａｓ＞エレメントを解釈する。これにより、ディスプレイリスト作成部２０３がサブレンダリングバッファをもう一つ用意する（これを、サブレンダリングバッファ（４）とする。）。
【０１３５】
また、ＰＤＬ解析部２０２は、行５０４でも＜ｃａｎｖａｓ＞エレメントを解釈する。しかし、これは行５０３の＜ｃａｎｖａｓ＞エレメントと同じ入れ子構造の深さレベルなのでサブレンダリングバッファを追加せずに、行５０３で取得したサブレンダリングバッファと同じサブレンダリングバッファに描画する。
【０１３６】
つまり、同じ深さレベルのカウントとなる入れ子（ネスト）構造内の描画は、同じサブバンドバッファに描画するようにする。
【０１３７】
ここで、図１１おける＜ｃａｎｖａｓ＞の入れ子構造内の描画について、さらに詳しく説明する。
【０１３８】
図１１に記載のＸＰＳの場合は、まず、サブレンダリングバッファ（４）に、ネストした＜ｃａｎｖａｓ＞の図形描画（４）と図形描画（５）のイメージを描画する。
【０１３９】
次に、サブレンダリングバッファ（３）に、サブレンダリングバッファ（４）の画像情報を使用し、図形描画（６）として透過処理を行ってイメージを描画する。
【０１４０】
実際に各行におけるレンダリングの描画先は以下のようになる：
行５０１  ＜ｆｉｘｅｄｐａｇｅ＞エレメントで規定される、ページレベルの描画先は、レンダリングバッファ（画像処理装置Ｘが出力するイメージバッファ、ビットマップデータ）である。
【０１４１】
行５０２  ＰＤＬ解析部２０２において＜ｃａｎｖａｓ＞を読み取ったとき、ディスプレイリスト作成部２０３が、新規のサブレンダリングバッファ（３）確保する。
【０１４２】
行５０３  ＰＤＬ解析部において＜／ｃａｎｖａｓ＞を読み取る前に新たな＜ｃａｎｖａｓ＞を読み取ったので、サブレンダリングバッファ（４）を追加して確保し、図形を描画する。
【０１４３】
行５０４  行５０２で同じレベルのサブレンダリングバッファ（４）を確保しているのでそれに描画する。
（ステップＳ７０８）
ここで、また図５のフローチャートに戻って説明する。
【０１４４】
ステップＳ７０８においては、ディスプレイリスト作成部２０３はサブレンダリングバッファのカウント数であるＳＲｃｎｔをインクリメントする。
（ステップＳ７０９）
ステップＳ７０８においては、ステップＳ７０２で解釈したデータは＜／ｃａｎｖａｓ＞タグであるかについて、ＰＤＬ解析部２０２が判定する。
【０１４５】
Ｙｅｓの場合、ＰＤＬ解析部２０２は、ステップＳ７１０に処理を進める。
【０１４６】
Ｎｏの場合、ＰＤＬ解析部２０２は、ステップＳ７１４に処理を進める。
（ステップＳ７１０）
ステップＳ７１０においては、ステップＳ７０９で解釈したデータが＜／ｃａｎｖａｓ＞であるなら、ディスプレイリスト作成部２０３は＜ｃａｎｖａｓ＞カウンタ（ＣＶｃｎｔ）をデクリメントする。
（ステップＳ７１１）
ステップＳ７１１においては、デクリメントした＜ｃａｎｖａｓ＞カウンタ（ＣＶｃｎｔ）が０ではないかどうかを、ディスプレイリスト作成部２０３が判定する。
【０１４７】
Ｙｅｓ、すなわちＣＶｃｎｔが０でない場合は、ＰＤＬ解析部２０２は、ステップＳ７１２に処理を進める。
【０１４８】
Ｎｏ、すなわちＣＶｃｎｔが０の場合、ＰＤＬ解析部２０２は、ステップＳ７１３に処理を進める。
（ステップＳ７１２）
ステップＳ７１２においては、ステップＳ７１１でＣＶｃｎｔが０でないなら、ディスプレイリスト作成部２０３は、描画先をＣＶｃｎｔのカウント数に対応するサブレンダリングバッファに指定したオブジェクトを作成し、ディスプレイリストに追加する。このディスプレイリストには、レンダリングバッファを解放するかどうかの情報を付け加えることもできる。
（ステップＳ７１３）
ステップＳ７１３においては、ステップＳ７１１でＣＶｃｎｔが０のときは、ディスプレイリスト作成部２０３は、直接印刷するレンダリングバッファを描画先として指定したオブジェクトを作成し、ディスプレイリストに追加する。
（ステップＳ７１４）
ステップＳ７１４においては、ＰＤＬ解析部２０２は、ページ全体のディスプレイリストを作成したかどうか判定する。すなわち、＜／ｆｉｘｅｄｐａｇｅ＞タグや、＜／ｆｉｘｅｄｄｏｃｕｍｅｎｔ＞タグが現れたかどうか、又はステップＳ７０１で読み込んだ印刷データが終了したについて解釈する。
【０１４９】
Ｙｅｓの場合、ＰＤＬ解析部２０２は、処理をステップＳ７１５に進める。
【０１５０】
Ｎｏの場合、ＰＤＬ解析部２０２は、次の行を読み込むように行のカウンタを進めて、処理をステップＳ７０２に戻す。
（ステップＳ７１５）
ステップＳ７１５においては、ディスプレイリストを作成している場合は、ディスプレイリスト作成部２０３が、ページレンダリング部２０４にディスプレイリストのポインタを渡たす。
【０１５１】
これにより、ページレンダリング部２０４は、ディスプレイリスト内のオブジェクトにより指示された種類の描画プリミティブを、レンダリングバッファ又はサブレンダリングバッファにレンダリングし、各種の演算処理を行う。
（ステップＳ７１６）
レンダリングを終了したら、ディスプレイリスト作成部２０３は、確保したサブレンダリングバッファを解放する。
【０１５２】
このサブレンダリングバッファの解放処理について、以下で詳細に記述する。
（サブレンダリングバッファの解放処理）
サブレンダリングバッファは、基本的に、レンダリングバッファに１ページのイメージの作成を終了した時点で、ディスプレイリスト作成部２０３が解放する。
【０１５３】
もっとも、実際にはディスプレイリストを参照して、入れ子構造が解消した時点で解放するようにすることが可能である。しかしこの場合は、ページ記述言語の記述にエラーがあった場合でも解放されないバッファが残らないように、各ページのレンダリングが終了した時点で、サブレンダリングバッファを解放するようにすることが望ましい。これにより、メモリを効率的に使うことが可能になる。なお、サブレンダリングバッファを解放した時点で、ディスプレイリストも同時に解放する。
【０１５４】
なお、メモリ不足等で、サブレンダリングバッファを取得（確保）できなかった場合は、描画を直接レンダリングバッファに行うようにすることで、描画の破綻を最小限に抑えることが可能になる。
【０１５５】
サブレンダリングバッファの解放を行うと、１ページの描画を終了する。
【０１５６】
ここで、画像処理装置Ｘを含むページプリンタの制御装置は実際にレンダリングバッファのビットマップデータを感光体に走査露光して静電により潜像を作成する。その上で、トナーを付着させて紙に転写して印刷を行う。カラー・レーザープリンタの場合は、この手順をＣＭＹＫの各カラーごとに行う。
【０１５７】
この印刷の過程を繰り返して、文書内のすべてのページの印刷が行われる。
【０１５８】
以上のように構成することで、本発明の実施の形態に係る画像処理装置Ｘは以下に掲げるような効果を得ることができる。
【０１５９】
まず、従来技術１の印刷装置の場合は、カラー・ラスター・オペレーションやアルファブレンドなど描画不正が起こる可能性があるページ記述言語の記述が含まれている場合のレンダリングでは、描画できる部位のみレンダリングを行っていた。この描画不正が起こった際、描画できない部位に関しては、半透明化を行って破綻が少なく見せるようにレンダリングを行っていた。
【０１６０】
この従来技術１の方法では、ＸＭＬのように階層的に定義できるページ記述に対してのレンダリングを実現することが難しい。
【０１６１】
実際に、ＸＭＬ形式で記述しているＸＰＳにおいては、レンダリングイメージを階層的、すなわち入れ子構造により描画するように定義できる。すなわち、ＸＰＳで記述されたデータについて、レンダリング結果のサブレンダリングバッファ内のイメージを使って最終的なレンダリング画像を生成する場合が発生するため、問題となっていた。
【０１６２】
このため、ＸＰＳによるページ記述をレンダリングする際に、レンダリングの入れ子構造の解決が必要であった。
【０１６３】
本発明においては、描画結果のイメージを使用して最終的なレンダリングイメージを生成する場合において、描画対象の指定の入れ子構造に応じてバッファを追加確保することで、問題なく描画することができる。
【０１６４】
これにより、従来技術１の印刷装置で起こるような描画の破綻を避けることが可能となる。
【０１６５】
また、本発明においては、入れ子構造が問題になるエレメント（ＸＰＳの場合は＜ｃａｎｖａｓ＞エレメント）に注目して、サブレンダリングバッファを取得するためのカウンタを用意した（例えば、ＣＶｃｎｔとＳＲｃｎｔ）。これにより、容易に入れ子構造のあるデータを描画できるようになり、ソフトウェアによって必要な工数を少なくするという効果が得られる。
【０１６６】
さらに、ＰＤＬを解釈するソフトウェアとして実際のプリンタにインストールする際に、レンダリングで支障が生じることがないという効果が得られる。
【０１６７】
加えて、入れ子構造に従ってサブレンダリングバッファを取得するようにしたため、例えば＜ｃａｎｖａｓ＞が出現するたびにすべてバッファを取得するといった方法に比べて、メモリの消費を必要最小限に抑えることができる。
【０１６８】
なお、この上述の実施の形態においては、サブレンダリングバッファの取得について、ページ記述言語を解析する際に行うように記述した。
【０１６９】
しかし、実際のレンダリング時に取得するように構成することも当然可能である。この場合は、ディスプレイリストの各オブジェクトの描画先を示す情報として、＜ｃａｎｖａｓ＞カウンタ（ＣＶｃｎｔ）の数を記述することもできる。また、サブレンダリングバッファを取得する必要がある場合、これを示すフラグを付加する。この上で、実際のページレンダリング時に、ページレンダリング部２０４がサブレンダリングバッファの取得を行ってレンダリングする。
【０１７０】
なお、この入れ子構造を描画処理する場合に、メモリ容量が十分に確保できる場合、最終的に印刷するレンダリングバッファ（ビットマップデータ）のビット毎に、入れ子構造の深さを記述する深さ（デプス）バッファを用いて、サブレンダリングバッファを用いずに処理することも可能である。
【０１７１】
この場合、各描画プリミティブを描画する際に、深さバッファが入れ子構造の上か下かを判断してビットマップデータに書き込むかを判断する処理を順次処理を行う。これにより、破綻のない描画を行うことができる。
【０１７２】
しかし、半透明の描画処理を行う場合、この深さバッファだけでは描画の順序が問題になることがある。
【０１７３】
この場合は、破綻する箇所に関連するディスプレイリスト内の各描画プリミティブを、＜ｃａｎｖａｓ＞エレメントの深さによりソート（ｚソート）した上で再描画することで、描画の破綻を避けることができる。
【０１７４】
さらに、上述の深さカウントにおいては、入れ子構造をバイナリーツリーのようなツリー形状で表現して、より複雑な構造を描画することも可能である。
【０１７５】
加えて、本発明の実施の形態においては、レーザープリンタを用いて説明したが、本発明の画像処理装置は他の方式のプリンタにも当然、適用できる。
【０１７６】
なお、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更して実行することができることは言うまでもない。
【図面の簡単な説明】
【０１７７】
【図１】本発明の実施の形態に係る画像処理装置Ｘの制御構成図である。
【図２】本発明の実施の形態に係るブレンド処理の概要を説明するためのＸＰＳの記述を示す図である。
【図３】従来技術１に係るブレンド処理の概要を説明するためのレンダリングの概念図である。
【図４】本発明の実施の形態に係るブレンド処理の概要を説明するためのレンダリングの概念図である。
【図５】本発明の実施の形態に係る画像処理装置Ｘのレンダリングの手順を示すフローチャートである。
【図６】本発明の実施の形態に係るサブレンダリングバッファの確保を説明するためのＸＰＳの記述を示す図である。
【図７】本発明の実施の形態に係るサブレンダリングバッファの確保を説明するための概念図である。
【図８】本発明の実施の形態に係る入れ子構造の深さレベルのカウントについて説明するための概念図である。
【図９】本発明の実施の形態に係るディスプレイリストのオブジェクトの構成を示す概念図である。
【図１０】本発明の実施の形態に係るディスプレイリストを示す概念図である。
【図１１】本発明の実施の形態に係るサブレンダリングバッファ取得のタイミングを説明するため概念図である。
【符号の説明】
【０１７８】
１００〜１０３、１１０〜１１３  レンダリングバッファイメージ
２０１  プリントデータ受信記憶部
２０２  ＰＤＬ解析部
２０３  ディスプレイリスト作成部
２０４  ページレンダリング部
３０１〜３０３  イメージ
４０１〜４０４  ディスプレイリスト
Ｘ  画像処理装置
【図２】
0005424546.tif 000002
【図１】
0005424546.tif 000003
【図３】
0005424546.tif 000004
【図４】
0005424546.tif 000005
【図５】
0005424546.tif 000006
【図６】
0005424546.tif 000007
【図７】
0005424546.tif 000008
【図８】
0005424546.tif 000009
【図９】
0005424546.tif 000010
【図１０】
0005424546.tif 000011
【図１１】
0005424546.tif 000012