(57)【要約】【課題】  透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置において、メモリ容量の利用を効率化し、高速に描画処理を行うこと。【解決手段】  本発明の画像処理装置では、キャンバス毎の透明度属性を監視する透明度設定監視部がキャンバスの透明度属性が不透明であるかどうかを判断し、ひとつでも不透明でないキャンバスが存在する場合にはアルファブレンド演算のためのメモリを確保してアルファブレンド演算を行い、全てのキャンバスが不透明ならアルファブレンド演算のためのメモリを確保せずに直接ページ描画メモリに対して描画を行う方法により課題を解決した。【選択図】図８
2010086240.tif 000002
【特許請求の範囲】
【請求項１】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、
前記キャンバスの透明度属性を判断する透明度設定監視部と、
前記透明度設定監視部により透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行う描画部とを有する
ことを特徴とする画像処理装置。
【請求項２】
請求項１の画像処理装置であって、
前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものである
ことを特徴とする画像処理装置。
【請求項３】
透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、
前記キャンバスの透明度属性を判断し、
前記透明度属性が透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行う
ことを特徴とする画像処理方法。
【請求項４】
コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、
前記キャンバスの透明度属性を判断する透明度設定監視機能と、
前記透明度設定監視機能により透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行う描画機能とを
コンピュータに実現させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
透明度属性を有する描画オブジェクトと、該描画オブジェクトを描画する土台であり透明度属性を有するキャンバスとを表記可能であるページ記述言語をビットマップ変換する際に、該ビットマップ変換処理を高速に処理可能とし、かつメモリの利用効率を高める技術に関するものである。
【背景技術】
【０００２】
XPS等のXML拡張形式で記述されたページ記述言語においては、透明度属性を有した描画オブジェクト（パスやフォントやイメージ等）及び前記描画オブジェクトの描画の土台となる透明度属性を有したキャンバスが複数層重なって存在させることが可能であり、これらが複数層重なった描画オブジェクト及びキャンバスの透明度属性の合成処理（アルファブレンド演算処理）を行う際には、該キャンバスの層毎に前記アルファブレンド演算処理のためのメモリの確保と、該アルファブレンド演算処理が必要となる。しかし、前記キャンバスによっては、透明度属性が不透明である場合もあり、その場合には該不透明のキャンバスの色値でその下層のキャンバスや描画オブジェクトが覆われてしまうので、アルファブレンド演算処理を行う必要は無く、また、そのためのメモリをキャンバスの層毎に保持する必要も無い。
【０００３】
従来技術として、アルファブレンド演算処理の前にデバイスの色域に圧縮するか、デバイスの色域に圧縮してからアルファブレンド処理を行うかによって、レンダリング結果が異なるため、カラーマッチング手段によりどちらが適正化を判断して、より適切な方法を選択する方法があった（特許文献１参照）。
【０００４】
しかし、この方法でも前記した全てのキャンバスの透明度属性が不透明な場合に、メモリの効率化と処理の高速化を実現することはできなかった。
【特許文献１】特開２００６−３４５１９７号公報
【非特許文献１】XML Paper Specification, XPS Specification and Reference Guide Version 1.0
【発明の開示】
【発明が解決しようとする課題】
【０００５】
解決しようとする問題点は、ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性を有するキャンバスの全てが不透明な場合に、ビットマップ変換処理を高速にかつメモリの利用効率を高めて行うことができなかった点である。
【課題を解決するための手段】
【０００６】
本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記キャンバスの透明度属性を判断する透明度設定監視部と、前記透明度設定監視部により透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行う描画部とを有することを特徴とする。
【０００７】
ここで、キャンバスとは、ＸＭＬ拡張形式のページ記述言語に記載される描画オブジェクト（パスやフォントやイメージ）を描画する土台となるオブジェクトのことで、透明度を示す透明度値、さらに透明度分布を表す透明度マスク等の透明度属性を有する。また、透明とは、透明度値が０であり、不透明とは透明度値が１．０であり、半透明とは透明度値が０から１．０の間にあることをいう。
【０００８】
また、本発明の画像処理装置は、前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものであることを特徴とするとしてもよい。
【０００９】
本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記キャンバスの透明度属性を判断し、前記透明度属性が透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行うことを特徴とする。
【００１０】
本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記キャンバスの透明度属性を判断する透明度設定監視機能と、前記透明度設定監視機能により透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行う描画機能とをコンピュータに実現させることを特徴とする。
【発明の効果】
【００１１】
本発明の画像処理装置は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理装置であって、前記キャンバスの透明度属性を判断する透明度設定監視部と、前記透明度設定監視部により透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行う描画部とを有することを特徴とする。
【００１２】
このため、透明度属性の合成のためのアルファブレンド演算を行う際に、全てのキャンバスが不透明の場合には、アルファブレンド演算を行わず又そのための記憶容量の保持もせずに直接描画メモリに描画するので、ページ記述言語の画像への変換処理を高速にかつメモリの利用効率を高めて行うことが可能となった。
【００１３】
また、本発明の画像処理装置は、前記ページ記述言語がＸＭＬ（Extended Markup Language）拡張形式により記述されたものであることを特徴とするとしてもよい。
【００１４】
このため、ＸＰＳ（XML Paper Specification）等のＸＭＬ拡張形式によって記載されているページ記述言語のビットマップ等への画像変換処理を高速にかつメモリの利用効率を高めて処理可能となった。
【００１５】
本発明の画像処理方法は、透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する画像処理方法であって、前記キャンバスの透明度属性を判断し、前記透明度属性が透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行うことを特徴とする。
【００１６】
このため、透明度属性の合成のためのアルファブレンド演算を行う際に、全てのキャンバスが不透明の場合には、アルファブレンド演算を行わず又そのための記憶容量の保持もせずに直接描画メモリに描画するので、ページ記述言語の画像への変換処理を高速にかつメモリの利用効率を高めて行うことが可能となった。
【００１７】
本発明の画像処理プログラムは、コンピュータに透明度属性を有する描画オブジェクトと、前記描画オブジェクトを描画する土台となる透明度属性を有するキャンバスとを含むページ記述言語を画像に変換処理する機能を実現させる画像処理プログラムであって、前記キャンバスの透明度属性を判断する透明度設定監視機能と、前記透明度設定監視機能により透明または半透明なキャンバスが１つでも存在する場合には、透明度属性の合成であるアルファブレンド演算のための記憶容量を確保して前記アルファブレンド演算を行い、全てのキャンバスが不透明と判断された場合には、前記アルファブレンド演算のための記憶容量を確保せずに直接ページ描画メモリに対して描画を行う描画機能とをコンピュータに実現させることを特徴とする。
【００１８】
このため、透明度属性の合成のためのアルファブレンド演算を行う際に、全てのキャンバスが不透明の場合には、アルファブレンド演算を行わず又そのための記憶容量の保持もせずに直接描画メモリに描画するので、ページ記述言語の画像への変換処理を高速にかつメモリの利用効率を高めて行うことが可能となった。
【発明を実施するための最良の形態】
【００１９】
ページ記述言語を中間言語に変換する画像処理を行う画像処理装置、画像処理方法及び画像処理プログラムにおいて、透明度属性を有するキャンバスのアルファブレンド演算を行う際に、全てのキャンバスの透明度属性が不透明な場合には、透明度及び透明度マスクの属性を保持するメモリ容量を確保することなく、又アルファブレンド演算を省略して直接ページ描画メモリに描画処理することにより、ページ記述言語のビットマップへの変換処理を高速にかつメモリの利用効率を高めて行うことを可能とした。
【実施例】
【００２０】
本発明の実施例に係る画像処理装置について以下に説明する。
【００２１】
［透明度属性の合成；アルファブレンドについて］
アルファブレンドとは、２つのそれぞれに色値を有する画像をある係数により半透明合成することである。この係数をアルファ値といい0.0〜1.0の値をとる。0.0が完全に透明、1.0が完全に不透明な重ね合わせであることを表している。その間の値が半透明な重ね合わせである。PDF（Portable Document Format）、およびXPS（XML Paper Specification）ドキュメント形式ではパスによる図形や、フォント、イメージ等のオブジェクトに対してアルファ値が設定でき、描画の際に、下地の色とのアルファブレンド（透明度と色値との合成）が可能になっている。
【００２２】
以下にアルファブレンドの透明度の合成処理がどのように行われるかについて、XPSドキュメント形式のデータを例に用いて説明する。
【００２３】
図１にXPSで表記された透明度属性を持つPathのデータを示し、XPS仕様書1.0（非特許文献１参照）の11.4 Opacity Computationsに記載されているアルファブレンドを厳密に行う場合のステップを以下に示す。
（１）：ソース側のアルファ値を求める。ソースのアルファ値にOpacityアトリビュートの値とOpacityMaskの値をかける。
【００２４】
As1 = As * Oe * Om
As  ：ソースエレメントのアルファ値（図１参照）
Oe  ：ソースエレメントのOpacity値（図１参照）
Om  ：描画するピクセル位置のソースエレメントのOpacityMask値（図１参照）
（２）：（１）で求まったアルファ値（As1）をソースの色値にかける。この処理をPre-multiply source alphaという。下記に示す式のCsはRGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
【００２５】
Cs_tmp = Cs * As1
Cs  ：ソースの色値（図１参照）
Cs_tmp  ：ソース側カラー値のテンポラリ値
（３）：デスティネーション側のアルファをデスティネーションの色値にかける。この処理をPre-multiply destination alphaという。下記に示す式のデスティネーションのピクセル色値Cdはソース側と同様に、RGBや、Gray、CMYK等のカレントカラースペースにおけるプレーン毎の値である。
【００２６】
Cd_tmp = Cd * Ad
Ad  ：デスティネーションのアルファ値
Cd  ：デスティネーションの描画ピクセル位置の色値
Cd_tmp  ：デスティネーション側カラー値のテンポラリ
（４）：ブレンド処理を行う。
【００２７】
A_tmp ＝ ( 1 - As1 ) * Ad  +   As1
C_tmp = ( 1 - As1 ) * Cd_tmp  +   Cs_tmp
A_tmp  ：（５）のチェック用テンポラリ
C_tmp  ：（５）のチェック用テンポラリ
（５）：デスティネーション結果に書き込む値を求める。この処理をReverse pre-multiplicationという。
【００２８】
If A_tmp = 0
{
Anew = Cnew = 0
}
Else
{
Anew = A_tmp
Cnew = min(C_tmp / A_tmp, 1)
}
（１）、（２）で現れるパラメータが図１のXPSドキュメント中に現れる（より詳細については非特許文献１を参照）。
【００２９】
［ページへの描画処理のケース］
ブレンド処理ステップ（３）において、ページへの描画処理では下地は不透明、すなわちAd＝1.0ととることができる。この場合は、下記のようにソースの色値とアルファ値、および既にページに書かれているデスティネーションの色値のみでアルファブレンド処理ができる（図２（Ａ）参照）。
【００３０】
As1 = As * Oe *  Om
Anew = 1.0          （不透明で変化なし）
Cnew =  ( 1 - As1 ) Cd + As1 * Cs      （単純なアルファブレンドの式として知られている）
［キャンバスに透明度属性がない場合］
ブレンド処理のステップ（３）において、キャンバスへの描画処理では、初期状態において下地は完全な透明、Ad=0.0で色なし、Cd=0.0（RGBなら黒）ととらえることができる。これはガラス板のイメージになる。
【００３１】
As1 = As * Oe * Om
Anew = As1      （アルファの値が累積）
Cnew = Cs      （ソースの色値はそのまま）
キャンバス上にまだ何も描画されていない状態で、ブレンド処理ステップに従うと、上記のように、キャンバス上のオブジェクトに透明度が含まれている場合、キャンバス上には、色値、アルファ値がそのまま累積することとなる。これは、キャンバスをページ等の一段下のレイヤーに描画するときに、累積している値がソースアルファ値として影響することを示す。
【００３２】
しかしながら、キャンバス自体に透明度が設定されていない場合は、出来上がったキャンバスをページ上に描いた結果は、オブジェクトを直接ページに書いた場合と同じとなる（図２（Ｂ）参照）。
この場合、図２（Ｂ）のようにページとは別のバッファに描画を実行する必要はなく、キャンバスが定義されていないときと同様の処理を行えばよい。
【００３３】
［キャンバスに透明度属性がある場合］
上述のように、オブジェクトが描画された領域には色値とアルファ値が累積していくが、その他の領域は0.0の完全に透明のまま残る。
【００３４】
キャンバス自体に透明度が設定されている場合の描画方法について、XPS仕様書中に提示される実装方法では、キャンバス上のオブジェクトの描画が終了し、下のレイヤーに書き込む時に、キャンバスエレメントの属性のOpacityとOpacityMaskの値を累積しているアルファ値に適用（結合）する。これはブレンドステップ（１）にあたり、キャンバス自体のOeとOmを累積したアルファ値にかけることを意味する。
【００３５】
また、キャンバス中でオブジェクトが描かれていない領域はOpacity、OpacityMaskが適用されてもアルファ値は0.0で完全に透明な何もかかれない状態で残る。そのため、描画されたオブジェクトの部分にのみ、透明度処理の効果がでる（図３（Ｃ）参照）。
【００３６】
概念的には上記したステップを経るが、同一キャンバス上にこのとおりの処理をしようとすると、オブジェクトが重なった場合などは、デスティネーションのアルファ値を考慮した図２（Ａ）の厳密なブレンド処理を行うことになる（図３（Ｄ））。
【００３７】
［構成］
図４は、本発明の実施例に係る画像処理装置の機能ブロック図である。
【００３８】
画像処理装置は、通信インタフェース１．１、データ受信部１．２、データ解析部１．３、描画データ処理部１．４（中間言語変換部）、透明度設定監視部１．４．１、描画部１．５、出力部１．６、システム制御部１．７、エラー制御部１．８、メモリ管理部１．９の各機能部を有する。以下に各機能部について説明する。
【００３９】
通信インタフェース１．１は、ホストコンピュータ等との通信を行う機能部である。
【００４０】
データ受信部１．２は、通信インタフェース１．１を介してデータ（ページ記述言語で記載してある印刷データ）を受信する機能部である。
【００４１】
データ解析部１．３は、送られてきたページ記述言語で記述された印刷データの解析を行なう機能部である。
【００４２】
描画データ処理部１．４（中間言語変換部）は、前記データ解析部１．４からの指示に従い、ページ記述言語を中間言語（ここでは、具体的にはディスプレイリスト）に変換する。
【００４３】
XPS等のXML拡張形式で記述されたページ記述言語中には、描画オブジェクトである、パス、グリフス（フォント）、イメージ等のエレメントがあり、これら描画オブジェクトを表示するための土台となるキャンバスがある。これらエレメントやキャンバスは、それぞれに透明度属性を有している。又、キャンバスは、入れ子構造（ネスト構造）をとって、その中に含むキャンバスやエレメントをひとつのグループとして扱うことが可能となる。
【００４４】
描画データ処理部１．４は、前記した入れ子構造をとるキャンバスデータを中間言語に変換する際に、その入れ子構造を保ったままの構成とする。ひとつのキャンバスオブジェクトがディスプレイリストに変換された際のデータ構造を図５に示す。
【００４５】
キャンバスのオブジェクトは、その開始を示す「Start」マークに続き、キャンバス上に存在する描画オブジェクト又はキャンバスオブジェクトのディスプレイリスト、キャンバスの終了を示す「End」マーク、その後にキャンバスの透明度情報が続き、キャンバスの下層への描画を示す「Write」コマンドで終了する。
【００４６】
キャンバスが入れ子構造となっている場合には、前記した「Start」マークと「End」マークとの間に入れ子となるキャンバスオブジェクトへのポインターが入る。
【００４７】
透明度設定監視部１．４．１は、描画データ処理部１．４に入ってくる描画データの中に透明度設定があった場合にこれをページ単位で覚えておく。透明度設定にはキャンバスの透明度や描画オブジェクトの色の透明度、OpacityMask等が含まれる。また、透明度設定監視部１．４．１は、描画データ処理部１．４から問い合わせがあった時に、その時点で透明度設定があるかどうかの情報を返す。
【００４８】
描画部１．５は、描画データ処理部１．４で作成されたディスプレイリスト（中間言語）からVRAMにビットマップデータを作成する機能部である。アルファブレンドの演算処理はここ描画部１．５において行われる。
【００４９】
出力部１．６は、上記の各機能部で画像処理が行われて得られたビットマップデータを出力する機能部である。前記出力とは、用紙などの記録媒体に印刷することであってもよいし、ディスプレイデバイスに表示出力を行う方法でもよい。
【００５０】
システム制御部１．７は、画像処理装置システムの共通情報を管理し、システムの制御を行なう機能部である。
【００５１】
エラー制御部１．８は、画像処理装置のエラーが発生した場合の処理を制御する機能部である。
【００５２】
メモリ管理部１．９は、画像処理装置のシステムのメモリを管理する機能部である。
【００５３】
［アルファブレンド演算アルゴリズム］
図５で示した入れ子構造を有するディスプレイリスト（中間言語）のアルファブレンドの演算は以下に示す再帰アルゴリズムにより効率よく計算される。
【００５４】
一つのキャンバスの透過の計算Compositeを考えると、計算は次のようになる。
【００５５】
***_nのnをキャンバスに含まれるオブジェクト数とし、計算過程の値を表す。
［擬似コードによるアルゴリズム表記］
C = Composite（C_0，O_0）
入力    C_0        ：キャンバスの描画先の現在の色
O_0        ：キャンバスに含まれるオブジェクト全体
出力    C          ：キャンバスの色値
｛
S_0  = C_0                                                （式1）
全てのオブジェクト（i を1からnまで）で以下の処理を繰り返す。
【００５６】
{
Obj_i がキャンバスの場合は再帰呼び出し {
C_i = Composite(SC_(i-1)，Obj_i)              （式2）
}  そうでない場合  {
C_i = Obj_i_Color                            （式3）
}
S_i = (1-Obj_i_Alpha) *SC_(i-1) + Obj_i_Alpha * C_i    （式4）
}
C = S_i
}  ［アルゴリズム終了］
すなわち、キャンバス開始時にそれまでに描かれている色をコピーした領域を作成し（式1）、キャンバス終了時に、キャンバス自体のα値をもって、下地とブレンド処理（式4）すればよいこととなる。ページの開始時点は初期値S_0が白となっていれば良い。
【００５７】
［処理内容の具体例］
前記した再帰アルゴリズムの処理内容の具体例について図６、図７を用いて以下に説明する。
【００５８】
前記アルゴリズムは、キャンバスの開始とともに、一時的に色を保持するバッファを確保し、そのバッファ内で描画処理を行う。キャンバスの終了時点でバッファをイメージとして、一つ下のレイヤーにブレンド処理を行いながら描画していく方法である。キャンバス描画中にさらにネストしている場合は、再帰呼出を行って、それに応じて色を保持するバッファを確保し、一段上のキャンバスとして処理する。
【００５９】
この処理を行う場合の一例として、半透明キャンバスがネスト化（入れ子構造）し、さらにそのキャンバス上で、半透明のオブジェクトが重なっているケースを考える。
【００６０】
図６（Ｅ）は、XPSで表記した一段目のOpacity=0.5を有するCanvas1上に、描画オブジェクトである矩形のObject1が存在し、さらにOpacity=0.5を有する二段目のCanvas2がネストされており、二段目のCanvas2上に三角形のObject2とObject3が存在している。
【００６１】
図６（Ｆ）に、上記XPSの全オブジェクトを透明度（Opacity）が無いと仮定した場合の描画を示し、図６（Ｇ）に上記XPSに表記どおりの透明度（Opacity）のアルファブレンド演算を行った場合の描画を示す。ただし、カラー表記ができないため、グレースケールに変換して描画してある。
【００６２】
このデータに対する描画部１．５による処理手順を図７に示し、前記した再帰アルゴリズムの式と対比させて説明を行う。
【００６３】
［ページバッファの確保］；図７（Ｈ）
最初に描画するための最終のページであるページバッファを確保する。
【００６４】
［Canvas1の開始］；図７（Ｉ）
これまでページバッファに描かれている結果をCanvas1にコピーする（式1）。さらに、Canvas1上のObject1を描画する。（式3〜4）。また、Canvas1の透明度情報を何らかの形（例えば、再帰呼出しルーチンのローカル変数等）で保持しておく。
【００６５】
［Canvas2の開始］；図７（Ｊ）
Canvas1に描かれている結果をCanvas2にコピーする（式2による再帰呼出しと式1）。
【００６６】
次に、Canvas2上のオブジェクト（Object2, Object3）を描画する。このとき、Canvas2上でアルファブレンド演算処理を行う（式3〜4）。
【００６７】
また、前記と同様にCanvas2の透明度情報を何らかの形（例えば、再帰呼出しルーチンのローカル変数等）で保持しておく。
【００６８】
［Canvas2の終了］；図７（Ｋ）
Canvas2自体の透明度情報（エレメントのOpacity値、OpacityMask値）をもって、Canvas2をイメージとして一段下のCanvas1に描画する（式4）。
【００６９】
Canvas2のバッファを開放。
【００７０】
［Canvas1の終了］；図７（Ｌ）
Canvas1自体の透明度属性情報（エレメントのOpacity値、OpacityMask値）をもって、Canvas1をイメージとしてページに描画（式4）。
【００７１】
Canvas1のバッファを開放。
【００７２】
以上の一連の動作により、再帰アルゴリズムによってアルファブレンド演算処理が可能となった。
【００７３】
［フローチャート］
図８は本発明実施例の画像処理装置動作のフローチャートである。
【００７４】
Ｓ３０１：ＰＣ等から印刷命令を送信すると通信インタフェース１．１を介してデータ受信部１．２で受信される。
【００７５】
Ｓ３０２：データ受信部１．２で受信されたデータはデータ解析部１．３で解析される。データ解析部１．３は描画データ処理部１．４を利用して描画処理を行なう。
【００７６】
Ｓ３０３：データ解析部１．３で解析した命令がページ出力命令かどうか判定する。
【００７７】
Ｓ３０４：データ解析部１．３で解析した命令がページ出力命令でない場合は、描画データ処理部１．４は命令通りの処理を行う。描画データ処理部１．４はデータ解析部１．３から与えられた情報を基にディスプレイリスト（中間言語の描画命令）を生成する。この時、透明度設定の命令があった場合は、描画データ処理部１．４はその命令の内容を透明度設定監視部１．４．１に伝える。透明度設定監視部１．４．１は、キャンバスの透明度の値から、キャンバスが不透明かどうかを判断して、その結果をフラグに記録する。
【００７８】
Ｓ３０５：データ解析部１．３はデータ受信部１．２で受信されたデータを全て処理し終えたかどうかを判定する。まだ処理するデータがある場合はＳ３０２の処理に戻って解析を行う。
【００７９】
Ｓ３０６：データ受信部１．２で受信されたデータを全て処理し終えた場合は、終了の処理を行う。描画処理に使用していたメモリで不要になったメモリを解放したり、エンジンに描画処理が終わったことを伝えたりする。
【００８０】
Ｓ３０７：描画データ処理部１．４は透明度設定監視部１．４．１に現在処理中のページの中に半透明の透明度が設定された描画オブジェクトがあるかどうかを問い合わせる。そしてその情報を描画部１．５に伝える。
【００８１】
Ｓ３０８：描画データ処理部１．４は描画部１．５にページ出力命令を送信する。
【００８２】
Ｓ３０９：描画部１．５はＳ３０７，Ｓ３０８の情報を基にディスプレイリストをビットマップ化する処理を最適に行う。Ｓ３０４で透明度設定監視部１．４．１が記録したフラグの値を調べて、不透明でないキャンバスがひとつでもあれば、アルファブレンド演算のためのメモリを確保して、透明度の演算であるアルファブレンド演算を行う。全てのキャンバスが不透明なら、アルファブレンド演算処理は必要なく、全ての描画をVRAM（ページ描画メモリ）に対して直接行う。
【００８３】
Ｓ３１０：描画部１．５は出来あがった１ページ分のビットマップを出力部１．６へ送ることで印刷が行なわれる。
【００８４】
［実施例の効果］
本発明実施例の画像処理装置により、以下のことが可能となった。
【００８５】
XPS等のXML拡張形式等のページ記述言語によって記述された入れ子構造を有する描画オブジェクト、キャンバスの透明度属性の合成（アルファブレンド演算）を効率よく行うため、ページ記述言語を中間言語に変換する際に前記入れ子構造を保持した形で変換を行った。さらに、前記入れ子構造を有する中間言語データのアルファブレンド演算を再帰アルゴリズムにより実現した。
【００８６】
上記の方法により、入れ子構造をまたいだアルファブレンド演算を効率よく行うことが可能となった。
【００８７】
上記の構造を有する中間言語により、アルファブレンド演算処理を行い、その後のビットマップデータへの変換を行ってプリンタでの印刷処理が可能となった。
【００８８】
本画像処理装置では、印刷データ内の透明度設定を分析してディスプレイリスト（中間言語）のビットマップ化処理を行うことで、透明度設定が無い場合等の特定の場合にメモリ効率良く、高速に描画処理が可能となった。
【００８９】
［その他］
色値は、実施例中ではＲＧＢの三原色に基づくものを示したが、ＣＭＹＫの色値であってもよく、同様にアルファブレンド演算が可能である。
【図面の簡単な説明】
【００９０】
【図１】XPSによるアルファ値、カラー値、透明度、透明マスクの表記例である。
【図２】キャンバスへの描画時のアルファブレンド（透明度設定なし）の概念図である。
【図３】キャンバスへの描画時のアルファブレンド（透明度設定あり）の概念図である。
【図４】本発明実施例の画像処理装置の機能ブロック図である。
【図５】本発明実施例のディスプレイリストのデータ構造例である。
【図６】ネスト化されたキャンバスのXPSでの表記例（Ｅ）とその対応図面（透明度設定あり（Ｆ）及びなし（Ｇ））である。
【図７】図６（Ｅ）に記載のXPSデータの描画の処理手順を示す図である。
【図８】本発明実施例の画像処理装置の動作のフローチャートである。
【符号の説明】
【００９１】
１．１  通信インタフェース
１．２  データ受信部
１．３  データ解析部
１．４  描画データ処理部（中間言語変換部）
１．４．１  透明度設定監視部
１．５  描画部
１．６  出力部
１．７  システム制御部
１．８  エラー制御部
１．９  メモリ管理部
【図１】
2010086240.tif 000003
【図２】
2010086240.tif 000004
【図３】
2010086240.tif 000005
【図４】
2010086240.tif 000006
【図５】
2010086240.tif 000007
【図６】
2010086240.tif 000008
【図７】
2010086240.tif 000009
【図８】
2010086240.tif 000010