本明細書においては、従来よりも効率的に実行することが可能な上塗りコーティング処理機構が開示される。以下の記述においては、本発明の説明を目的として、本発明の包括的な理解を可能とするための数多くの具体的詳細内容が記述される。しかしながら、当該技術分野における当業者にとっては、上述した具体的詳細内容の一部を省略した形でも本発明を実施することが可能であることが自明であろう。本発明を実施するためのその他の事例においては、本発明の基盤となる技術思想が不明確となるのを避けるために、一般に周知の構造や装置がブロック図の形で示される。
本明細書中における「一実施例」または「一つの実施例」との表記は、実施例と関連して説明されている特定の技術的特徴、構造または特性が、本発明に係る少なくとも一つの実施例に含まれているということを意味するために使用される。本明細書中の様々な個所に現れる「一実施例において」という表記は、これら全ての表記が必ずしも同一の実施例を指して言っているとは限らない。
図1は、圧縮処理されたビットマップ画像データを生成するためのシステム100を図示するブロック図である。データ・オブジェクト供給源120は、紙面全体を表示する画像を表現している一連のデータ・オブジェクトから成る系列を供給する。データ・オブジェクト処理回路102は、当該一連のデータ・オブジェクトから成る系列を処理することによって、紙面全体を表示する画像を、ビットマップ・メモリ106内および/または複数のメタデータ構造108を格納するテーブル内において表現している画像を生成する。当該紙面全体を表示する画像の各々を生成するために、ビットマップ圧縮回路104の動作によって、圧縮されたページ・ビットマップ画像データ112を生成する処理が引き起こされる。
上記のような圧縮されたページ・ビットマップ画像データ112の連続から成る系列は、プレゼンテーション装置130に送信するためにシステム内に格納されている文書データや処理実行ジョブを表現することが可能である。プレゼンテーション装置130は、例えば、プリンタ装置等とすることが可能であり、その場合、圧縮されたページ・ビットマップ画像データ112の連続から成る系列は、印刷ジョブやプリンタ装置により印刷されるのを待っている文書データなどを表現することが可能である。
データ・オブジェクト処理回路102は、紙面全体を表示する画像の上に視覚的に提示されるべき情報を表現しているデータ・オブジェクトを処理する。データ・オブジェクト処理回路102が受信した複数のデータ・オブジェクトは、一般に周知となっている標準化された幾つかの情報符号化方式(例えば、ページ記述言語や電子文書を記述するためのその他の標準化方式など)の何れかによって符号化されている場合がある。データ・オブジェクトは、例えば、電子文書の紙面全体を表示する画像内において所望の位置に配置されるべきテキスト情報やグラフィック情報を表現することが可能である。従って、一般的には、データ・オブジェクト処理回路102は、ビットマップ・メモリ106内に格納されたデータ・オブジェクト、および/またはメタデータ構造108と関連付けられて格納されているデータ・オブジェクトから導き出された情報を格納することによって、データ・オブジェクトを処理するように構成されている。
本発明に係る一実施例においては、データ・オブジェクト処理回路102は、複数のメタデータ構造を格納するテーブル108を利用することにより、各データ・オブジェクト毎にビットマップ・メモリ106への書き込みを行う必要性を減少させており、その結果として、データ・オブジェクト処理回路102とビットマップ・メモリ106との間における通信帯域幅の使用量を減少させることが可能となる。上記のようにビットマップ・メモリ106との間で通信帯域幅の使用量を減少させることにより、圧縮処理がされる前の紙面全体の画像を生成する処理動作を高速化することが可能となり、それにより、圧縮処理によって得られる対応するビットマップ画像データの生成効率を向上させることが可能となる。
具体的には、データ・オブジェクト処理回路102は、ビットマップ・メモリ106内の所定の部分と関係する情報を、メタデータ構造の格納テーブル108内の該当するエントリに格納する。数多くのデータ・オブジェクトを処理しながら、その結果をビットマップ・メモリ106内の該当する部分に反映させるようにするには、多くの場合、メタデータ構造の格納テーブル108内の該当するエントリに含まれている情報を単に更新するだけで充分である。上記以外のその他のデータ・オブジェクトや後続するデータ・オブジェクトの処理においては、当該データ・オブジェクトによって表現されているデータ内容に従ってビットマップ・メモリ106に書き込みを実行する必要が生じる場合がある。
従って、データ・オブジェクト処理回路102は、紙面全体を表示する画像に関連する各データ・オブジェクトを一つずつ処理する毎に、データ・オブジェクトの各部分がビットマップ・メモリ106内の該当する部分に書き込まれなくてはならないのか、それとも、ビットマップ・メモリ106内の各部分に書き込みを実行する必要無しに、メタデータ構造の格納テーブル108内において対応するメタデータ構造によりコンパクトな表現形式で表現可能であるのかを判断する。
本発明に係る一実施例においては、相当に数多くのデータ・オブジェクトがテーブル108内のメタデータ構造に基づくコンパクトな表現形式により表現可能であるので、データ・オブジェクト処理回路102は、ビットマップ・メモリ106内に情報をいちいち画素単位で書き込まなくてはならない必要性を回避することが可能である。ベタ一色の無地を表現しているデータ・オブジェクト(例えば、描画内容がクリアされたビットマップ画像やビットマップ画像内の同一色でベタ塗りした領域など)のような幾つかの単純なデータ・オブジェクトは、ビットマップ・メモリ106内にデータを一切書き込む必要無しに、テーブル108に格納されているメタデータ構造中において非常にコンパクトな表現形式で表現することが可能である。背景が透明色のマスク・パターンや不透明な画像部分のようなもっと複雑なデータ・オブジェクトであっても、テーブル108に格納されているメタデータ構造中においてコンパクトな表現形式によるデータ表現がやはり可能である。
データ・オブジェクト処理回路102は、受信した複数のデータ・オブジェクトをメモリ110内に保存する。そして、上述したメタデータ構造によってコンパクトな表現形式で表現された上でメモリ110内に保存されているデータ・オブジェクトは、当該メタデータ構造から参照ポインタを介して間接的に参照されている。上記説明の繰り返しになるが、メタデータ構造において上記のようなコンパクトな表現形式を使用することにより、データ・オブジェクト処理回路102は、複数のデータ・オブジェクトを生成するのに必要とされるメモリ・アクセス帯域幅の使用量を減らすことが可能となる。
また、圧縮処理されたビットマップ画像データを生成するためのシステム100は、ビットマップ圧縮処理回路104をさらに含んでおり、ビットマップ圧縮処理回路104は、データ・オブジェクト処理回路102による紙面全体の表示画像の生成処理が完了したのに続いて、圧縮済みページ・ビットマップ画像データ112を表している圧縮済みデータを生成する。紙面全体を表示する特定の画像を表現するための一連のデータ・オブジェクトに対してデータ・オブジェクト処理回路102が処理を完了した時点で、ビットマップ圧縮処理回路104は、メタデータ構造の各々を取り出した上で、当該メタデータ構造中に格納されている情報に基づいて、圧縮済みページ・ビットマップ画像データ112内の圧縮されたデータを生成するために動作可能となる。
ビットマップ画像データの該当部分を表す圧縮処理後の表現を生成するのに充分な情報をメタデータ構造が提供可能である場合には、圧縮済みページ・ビットマップ画像データ112の一部分を生成するために、ビットマップ圧縮処理回路104は、ビットマップ・メモリ106を読み出す必要が無い。ビットマップ画像データの該当部分が圧縮処理の対象となるデータを含んでいることを当該メタデータ構造が示している場合には、ビットマップ圧縮処理回路104は、ビットマップ・メモリ106内において、当該メタデータ構造が示している部分を読み出して、圧縮済みページ・ビットマップ画像データ112の対応する部分を生成する。
図2は、メタデータ構造を含むテーブル108内における複数のメタデータ構造とビットマップ・メモリ106内の複数の構成部分(「タイル」とも呼ばれる)との間の関係付けの一実施例を図示するブロック図である。図2に示すとおり、ビットマップ・メモリ106は論理的に分割され、全て均一な大きさとすることが可能な複数の構成部分(「タイル」とも呼ばれる)に分けられる。
本発明に係る一実施例においては、ビットマップ・メモリ106は、同一サイズの複数の長方形部分200乃至211(以下、「部分A」乃至「部分L」と表記する)を含んでいる。これらの長方形部分の各々は、メタデータ構造を格納するテーブル108内において対応するエントリ220乃至231を有している。具体的には、メタデータ構造のテーブル108内におけるエントリ220(以下、「*部分A」と表記する)は、ビットマップ・メモリ106内において対応する「部分A」として示される長方形部分200に関する情報を含んでいる。以下同様にして、メタデータ構造のテーブル108内におけるエントリ221(以下、「*部分B」と表記する)は、ビットマップ・メモリ106内において対応する「部分B」として示される長方形部分201に関する情報を含んでおり、以下同様である。
本実施例における技術的特徴と技術的側面に従って、ビットマップ・メモリ106内に含まれる構成部分の個数を任意の適切な個数とすることが可能である。従って、ビットマップ・メモリ106内に含まれる構成部分(例えば、長方形部分200乃至211など)の個数とテーブル108内においてこれらの構成部分に対応するメタデータ構造エントリ(例えば、エントリ221乃至231など)の個数、および上述した構成部分の各々と関連する情報のサイズは、本実施例に係るシステム内において事前に定義され、静的に固定された個数やサイズとすることが可能である。
本発明に係る一実施例においては、メタデータ構造エントリ(例えば、エントリ221乃至231など)の各々は、データ・タイプ情報フィールド240とデータ指示情報フィールド242を含んでいる。データ・タイプ情報フィールド240は、ビットマップ・メモリ106内において対応している構成部分(例えば、長方形部分200乃至211など)と現在関連付けられているデータ・タイプを表すフィールドである。データ指示情報フィールド242は、ビットマップ・メモリ106内において当該メタデータ構造と対応している構成部分と現在関連付けられた形でメモリ110中に保存されているデータ・オブジェクトを参照ポインタで(間接的に)指し示しているフィールドである。本発明に係るさらなる実施例においては、ビットマップ・メモリ106内において当該メタデータ構造と対応している構成部分と現在関連付けられているデータ・オブジェクトの情報内容自体が、データ指示情報フィールド242内において直に符号化されている。
図1に示されたデータ・オブジェクト処理回路102の処理動作の説明に戻ると、データ・オブジェクトから導き出されたデータがビットマップ・メモリ106内に書き込まれるならば、当該データは、ビットマップ・メモリ106内において一つ以上の構成部分に展開されて記憶される。データ・オブジェクト処理回路102によるデータ・オブジェクトの処理は、ビットマップ・メモリ106内においてデータ・オブジェクトの書き込みにより影響を受ける一つ一つの構成部分毎に実行されるので、データ・オブジェクト処理回路102は、テーブル108内において対応しているメタデータ構造を更新することによって、ビットマップ・メモリ106内の対応する構成部分において当該データ・オブジェクトが受けた影響に関する情報を記録する。
例えば、「部分A」として示される長方形部分200と「部分B」として示される長方形部分201とが一つのデータ・オブジェクトによる影響を受けるとした場合、データ・オブジェクト処理回路102は、「*部分A」として示されるメタデータ構造エントリ220と「*部分B」として示されるメタデータ構造エントリ221とを更新する。ビットマップ・メモリ106内の構成部分と対応するメタデータ構造によってコンパクトな表現形式で表現されている現在のデータ内容と新たに書き込まれる特定のデータ・オブジェクトによっては、当該新たに書き込まれたデータ・オブジェクトを表現するために、単にメタデータ構造220と221を更新するだけで充分である場合があり、この場合には、ビットマップ・メモリ106内の2つの構成部分200と201にデータを書き込む必要は無い。
本発明に係る一実施例においては、メタデータ構造エントリ内に含まれるデータ・タイプ情報フィールド240は、ビットマップ・メモリ106内の該当する構成部分が「コンパクト型」のデータ(すなわち、「コンパクト表現形式」で表現されたデータ)であるか、それとも「非コンパクト型」のデータ(「コンパクト表現形式」とは異なる表現形式のデータ)であるかを示すフィールドとすることが可能である。このとき、データ指示情報フィールド242の内容は、ビットマップ・メモリ106内の該当する構成部分のデータをコンパクトな表現形式で表現している。
最も一般的な場合として、本来であればビットマップ・メモリ106内の一つの構成部分に含まれるべきデータがメタデータ構造内でコンパクト表現形式で表現されていることにより、ビットマップ・メモリ106内の該当する構成部分への当該データの書き込みを不要とすることが可能な場合、データ・オブジェクトの書き込みにより影響を受けるメタデータ構造についてのデータ・タイプは、「コンパクト型」であり、データ指示情報フィールドの内容は、ビットマップ・メモリ106内の該当する構成部分に関する新しいデータを表現している。
ビットマップ・メモリ106内の一つの構成部分に含まれるべきデータをメタデータ構造内においてコンパクト表現形式で表現することが出来ないならば、データ・オブジェクトの書き込みにより影響を受けるメタデータ構造についてのデータ・タイプは、「非コンパクト型」であり、その場合、データ・オブジェクトは、単にビットマップ・メモリ106内の該当する構成部分に書き込まれるだけである。当該技術分野における当業者であれば、本明細書においては、「コンパクト型」と「非コンパクト型」を表すこれらの具体的なデータ・タイプ値を、単なる具体例として説明することを意図していることが理解できるであろう。
より具体的には、「コンパクト型」のデータは、ビットマップ・メモリ106内の該当する構成部分に含まれる当該データがメタデータ構造内の情報によってコンパクト表現形式で表現されており、その結果、当該データがビットマップ・メモリ106内の該当する構成部分に書き込まれないことを表している。例えば、紙面全体の表示画像についての一連の処理の開始時におけるビットマップ・メモリ106の内容は、論理的にはクリアされている(例えば、ビットマップ・メモリ内の全てのビットがクリアされ、ゼロ値として表現されている状態は、白一色でベタ塗りした背景画像として表示される)。以下の説明では、説明の便宜上、ビットマップ・メモリ内に含まれる上記のような複数の構成部分の各々を指して「ビットマップ構成部分」と呼び、ビットマップ・メモリ内において特定のメタデータ構造と対応する関係にあるビットマップ構成部分を「該当ビットマップ構成部分」と呼ぶ場合がある。
データ・オブジェクトは、紙面全体の表示画像に関して処理されるので、ビットマップ・メモリ内の各部分とこれに対応するメタデータ構造は、処理がされたデータ・オブジェクトによる影響を受ける。従って、当該ビットマップ・メモリ内において上記のように影響を受ける部分と対応するメタデータ構造に含まれる「コンパクト型」のデータは、データ指示情報フィールドによって以下の2つの事を表している。一つ目は、当該ビットマップ・メモリ内において上記のような影響を与えた何らかのデータ・オブジェクトが処理されたことであり、二つ目は、当該ビットマップ・メモリ内における該当する部分が受けた影響は、当該メタデータ構造内においてコンパクト表現形式で表現されていることである。
例えば、データ指示情報フィールドは、データ・オブジェクト保存用のメモリ内に保存されたデータ・オブジェクトを参照ポインタを介して間接的に指し示すようにすることが可能である。さらに別の具体例においては、データ指示情報フィールドは、データ・オブジェクト自体を符号化されたフィールド値(例えば、ビットマップ・メモリ内の該当する構成部分に影響を与えるデータ・オブジェクトが表す長方形部分の色の値)として直接的に表現することが可能である。従って、「コンパクト型」のデータ・タイプを有しているメタデータ構造と対応しているビットマップ構成部分については、当該構成部分の中に書き込まれるべき関連する情報が無く、その結果、データ・オブジェクトをビットマップ・メモリ内に書き込むためにビットマップ・メモリとの間で必要となる通信帯域幅の使用量を減らすことが可能となる。
他方、「非コンパクト型」のデータ・タイプは、様々な理由の中の何れかにより、ビットマップ・メモリ内の対応する構成部分に含まれるべきデータを、メタデータ構造の中だけでコンパクト表現形式により表現することが不可能である(すなわち、当該データをデータ指示情報フィールド内において適切な表現形式で表現することが出来ない)ことを示している。その場合、当該ビットマップ・メモリ内の該当する構成部分に上記のような影響を与えるデータ・オブジェクトは、単に当該ビットマップ・メモリ106に書き込まれるだけである。
ビットマップ・メモリ内の各構成部分について、上記のような「コンパクト型」データ・タイプに特有のデータ表現方法を使用不可能にしてしまう様々な状態が生じ得る。このような状態以外にも、本発明を実施する際に考慮すべき設計的事項として、ビットマップ・メモリ内の一部分が、これと対応するメタデータ構造内において、「コンパクト型」のデータとしても「非コンパクト型」のデータとしても表現可能となるような状態が生じ得る。本発明を応用すべき特定の用途によっては、費用対効果を考慮して設計された実装の詳細内容に基づいて、「コンパクト型」のデータ表現方法は望ましくないと判断される場合もあり得る。
例えば、ビットマップ・メモリ内の一部分において表示内容が互いに重なり合う複数のデータ・オブジェクトが存在する場合、互いに重なり合って表示される特定のデータをコンパクト表現形式により表現することが可能であったとしても、これら複数のデータ・オブジェクトの組み合わせをコンパクト表現形式により表現するために増加してしまう計算処理の複雑度は、あまりにも多すぎる。さらに別の具体例を挙げるなら、本発明を応用すべき特定の用途によっては、表示すべき画像オブジェクトがほんの僅かしか存在せず、そのような場合にまで画像のデータ・オブジェクトをメタデータ構造内においてコンパクト型データ・タイプに特有のデータ表現形式で表現してもあまりメリットが無い。
さらに別の具体例として、ビットマップ・メモリ内に画像オブジェクトが頻繁に現れ、かつ、ビットマップ・メモリ内の一部分においてこれらのオブジェクトの表示内容がしばしば互いに重なり合うような状況(例えば、モンタージュ写真画像など)を考える。このような状況において、上記のように表示内容が互いに重なり合う画像オブジェクトを含む部分が可能な限りコンパクト表現形式で表現されるよう保証するならば、大幅な改善効果が達成される可能性がある。何故なら、そうすることにより、後続する画像データ・オブジェクトにより上書きされてしまう可能性が高い画像データ・オブジェクトをビットマップ・メモリ内にわざわざ書き込むために、ビットマップ・メモリとの間の通信帯域幅を無駄に浪費するのを避けることが可能となるからである。上述した経験則に加え、その他の経験則や本発明を実施する際に考慮すべき様々な設計事項は、本実施例における技術的特徴と技術的側面を機能拡張するための機能拡張手段として直ちに明らかとなり、その結果、本発明を応用すべき特定用途のために実施されるシステムや方法を最適化することが可能となるだろう。
本発明に係る一実施例に従うならば、複数のデータ・オブジェクトから成る特定のオブジェクト群に関して、ビットマップ・メモリ内の該当部分の個数とサイズがどの程度効率的であるかを解析するために、システム100内において任意付加的な最適化要素114を動作可能としても良い。上記のような解析処理に基づいて、最適化要素114は、ビットマップ・メモリ内における上述した該当部分の個数とサイズを調節し、さらにこれに対応させる形で、テーブル108内のメタデータ構造の個数を調節することが可能である。ある種の文書データや処理実行ジョブに関しては、ビットマップ・メモリ内における上述した部分の個数をより少なくし、各部分のサイズをより大きくすることにより、紙面全体の表示画像に関する処理において最適な結果を得ることが可能となる。
さらに別の種類の文書データや処理実行ジョブにおいては、上述したビットマップ構成部分の個数をより多くし、各構成部分のサイズをより小さくすることにより、紙面全体の表示画像に関する処理において最適な結果を得ることが可能となる。ビットマップ・メモリ内における全ての構成部分が同じ形状と同じ大きさを持つならば、メタデータ構造220乃至231とビットマップメモリ内において対応している構成部分200乃至211との間の関係付けは、テーブル108内における各メタデータ構造のインデックス位置を使用して各メタデータ構造を対応するビットマップ構成部分と関係付けるための単純なインデックス付け計算によって決定することが可能となる。ビットマップ・メモリ内における全ての構成部分が多種多様な形状と大きさを持つならば、メタデータ構造220乃至231の各々は、ビットマップ・メモリ内に含まれる構成部分200乃至211の中においてそれぞれ対応する構成部分のメモリ・アドレスを識別している適切なアドレス識別情報を含むことが可能である。
図3は、メタデータ構造を利用して紙面全体を表示する画像を表現している複数のデータ・オブジェクトを処理するために実行される処理フローの一実施例を示すフローチャートである。図3のフローチャートにおいて、処理の実行はまず処理ステップ300に進み、一つのメタデータ構造を、複数のビットマップ構成部分の中の対応する構成部分と関係付ける。既に説明したとおり、上述したビットマップ構成部分の個数、すなわち、これら構成部分とそれぞれ対応するメタデータ構造の個数は、事前に静的に固定することも可能であるし、紙面全体の表示画像に関する処理を最適化するための解析処理の結果に応じて動的に決定されることも可能である。従って、図3のフローチャートにおける処理ステップ300は、処理開始時点における上述した構成部分の個数およびこれら構成部分にそれぞれ対応するメタデータ構造の初期化内容を決定するための任意の適切な決定処理動作を表している。
任意のデータ・オブジェクトを処理するのに先立って、処理ステップ304においては、全てのメタデータ構造について、データ・タイプ情報フィールドの値が「コンパクト型」に設定され、データ指示情報フィールドの値がゼロに設定され(この値は、データ指示情報フィールドの内容を初期化時点においてクリアするための値であり、ゼロ以外の値を採用することも可能である)、これにより、紙面全体の表示画像を生成する処理の実行開始時点においてビットマップ・メモリ全体の記憶内容がクリアされた状態(例えば、紙面全体の表示画像が「白一色」や「黒一色」で塗りつぶされた状態または事前に設定された所定の背景色により紙面全体の表示画像がクリアされた状態)であることが表現される。
続いて、紙面全体の表示画像に関する処理の実行は、処理ステップ306に進み、処理ステップ306においては、データ・オブジェクト処理回路は、紙面全体の表示画像に対応する複数のデータ・オブジェクトを処理するように動作可能である。各データ・オブジェクトに対して実行される処理内容は、データ・オブジェクトから導き出されたデータがビットマップ・メモリ内に書き込まれた場合に影響を受けることになるビットマップ構成部分と対応しているメタデータ構造を更新する処理を含んでいる。これに伴って、ビットマップ・メモリ内において上述した影響を受ける構成部分と対応しているメタデータ構造中のデータ・タイプ情報フィールドの値も、当該影響を受けるビットマップ構成部分が現時点で関連しているデータ・タイプに更新される。
さらに、上記のような影響を受けるビットマップ構成部分と対応しているメタデータ構造中のデータ指示情報フィールドの値も、当該影響を受けるビットマップ構成部分と対応する形で新たに書き込まれたデータ・オブジェクトを表現可能となるように更新される。処理ステップ306において、データ・オブジェクトが処理されることによって、ビットマップ・メモリ内のどの構成部分が影響を受けるかを判定する処理と、この処理に関連して、対応するメタデータ構造を更新する処理を実行するための詳細な処理内容の具体例については、本明細書中の以下の記述においてさらに詳しく後述する。一般的な場合においては、上記のような影響を受ける対応するビットマップ構成部分が「コンパクト型」のデータから「非コンパクト型」のデータへと変更されたことを示すようにデータ・タイプ情報フィールドの値が更新される。
紙面全体の表示画像に関するデータ・オブジェクトの処理が処理ステップ306において実行完了したのに続いて、図3のフローチャートの実行は処理ステップ308に進み、処理ステップ308は、システム100内のビットマップ圧縮処理回路によって、紙面全体の画像を表現するための圧縮処理されたビットマップ・データを生成する処理を表している。当該ビットマップ圧縮処理回路は、圧縮処理されるデータが、メタデータ構造内の情報だけから生成される(例えば、「コンパクト型」のデータ・タイプの場合)べきなのか、それとも、対応するビットマップ構成部分に記憶されているデータを読み出すことにより生成されなければならない(例えば、「非コンパクト型」のデータ・タイプの場合)のかを、各メタデータ構造を使用して、データ・タイプ情報フィールドの値から判断する。以上より、処理ステップ308において当該ビットマップ圧縮処理回路が実行する処理によって、「非コンパクト型」ではないデータを含む構成部分をビットマップ・メモリから読み出す必要性が回避されるので、ビットマップ・メモリにアクセスするための通信帯域幅の使用量を減らすことが可能となる。
上記のような「コンパクト型」のデータ・タイプによるデータ表現とは別に、ビットマップ・メモリ内の対応する構成部分を表現する圧縮対象データをビットマップ圧縮処理回路が生成するのに充分な情報をメタデータ構造が単独で提供することが可能である。処理ステップ304から処理ステップ308までの一連の処理の実行を完了することにより、ビットマップ・メモリをアクセスするのに要する通信帯域幅の使用量を従来よりも少なくしながら、圧縮処理されたビットマップの形式で紙面全体の表示画像を表現した画像データが生成される。
図4は、紙面全体を表示する画像に関する複数のデータ・オブジェクトを処理するために実行される処理フローの一実施例を示すフローチャートである。処理ステップ400においては、紙面全体の表示画像を生成するために処理される次の(図4のフローチャートの開始時点においては最初の)データ・オブジェクトを一つ取得する。続いて、処理ステップ402においては、当該データ・オブジェクトが標準的なビットマップ処理技術を使用してビットマップ・メモリ内に書き込まれるならば、当該ビットマップ・メモリ内のどの構成部分が当該データ・オブジェクトの書き込みによって影響を受けることとなるかを判定する。上記のような影響を受けることとなるビットマップ構成部分は、当該データ・オブジェクトの幾何学的パラメータ(例えば、境界ボックスの寸法やビットマップ・メモリ内のオブジェクト表示位置)を様々なビットマップ構成部分が表す表示オブジェクトの寸法と比較することによって判定することが可能である。データ・オブジェクトの書き込みによって上記のような影響を受ける全てのビットマップ構成部分の各々について、以下の処理ステップ404から処理ステップ414までの一連の処理が繰り返し実行される。
処理ステップ404においては、上記のような影響を受ける全てのビットマップ構成部分とそれぞれ対応する複数のメタデータ構造の中から次の(処理ステップ404の最初の実行時点においては最初の)メタデータ構造を一つ取得する。続いて、処理ステップ406においては、特定のデータ・オブジェクトが処理されたことに伴って、当該メタデータ構造内のデータ・タイプ情報フィールドに対する何らかの変更内容を表すために、当該メタデータ構造内のデータ・タイプ情報フィールドの値を更新する。加えて、現在処理中のデータ・オブジェクトがメタデータ構造内においてコンパクト表現形式で表現されるべきであるならば、それに応じて、現在処理中のデータ・オブジェクトを表現するために当該メタデータ構造内のデータ指示情報フィールドを更新する。
処理ステップ406において実行される処理のさらに詳細な内容の具体例については、本明細書中の以下の記述において後述する。一般的な場合においては、データ・オブジェクトの書き込みにより対応するビットマップ構成部分が受けた影響が、メタデータ構造内のフィールド(またはメタデータ構造内のフィールドとデータ指示情報フィールドによって表現されメモリ中に保存されているデータ・オブジェクトとの組み合わせ)によってコンパクト表現形式で表現されるならば、「コンパクト型」のデータを示すようにデータ・タイプ情報フィールドの値が更新される。
データ・オブジェクトの書き込みにより対応するビットマップ構成部分が受けた影響をコンパクト表現形式により表現することが出来ない場合には、データ・タイプ情報フィールドの値が、「非コンパクト型」のデータ・タイプを示す値に更新され、データ・オブジェクトの書き込みによる当該影響は、そのままの形で対応するビットマップ構成部分に書き込まれる(以下の処理ステップ412を参照されたい)。例えば、あるデータ・オブジェクトの表示内容と別のデータ・オブジェクトの表示内容とが互いに重なり合っている状態は、(幾つかの場合においては)コンパクト表現形式で表現することが出来ない可能性があり、従って、そのような場合には、ビットマップ・メモリへのデータ・オブジェクトの書き込みによって影響を受ける該当ビットマップ構成部分に対して、当該データ・オブジェクトが単に書き込まれるだけである。しかしながら、当該データ・オブジェクトが、上記のような影響を受ける該当ビットマップ構成部分に書き込まれる前に、その該当ビットマップ構成部分内に以前に書き込まれたデータ・オブジェクトであって、依然として可視的な状態のままであるオブジェクトが存在する場合には、コンパクト表現形式のデータをまず先にその該当ビットマップ構成部分に書き込むことによって、以前に書き込まれたオブジェクトを記憶するメモリ部分を初期化する。
代替的に、本発明を実施する際に考慮すべき設計事項として、本発明を応用すべき具体的な応用分野を考慮して本発明の実施態様を最適化するために、一つ以上の特定のオブジェクト又は複数のオブジェクトを組み合わせた特定の組み合わせが、ビットマップ・メモリ内に書き込まれる。本発明に係るその他の実施例においては、データ・オブジェクトの一部分や境界部分は、対応するビットマップ構成部分が表示する領域のごく一部しかカバーしていない場合もあり得る。繰り返し述べるが、本発明を実施する際に考慮すべき設計事項として、上記のように、対応するビットマップ構成部分が表示する領域のごく一部だけをデータ・オブジェクトの一部分がカバーしている状態は、対応するメタデータ構造によって表現できる場合も表現できない場合もある。
上記のような影響を受けるビットマップ構成部分が如何なる状態となることが可能であり、その結果として、メタデータ構造内においてコンパクト表現形式で表現可能となるか否かを判定するために、上述した経験則に加えて、その他の経験則に基づく判定動作を処理ステップ406が実行する処理において採用することが出来る。従って、処理ステップ406においては、上記のような影響を受けるビットマップ構成部分に関してコンパクト表現形式によるデータ表現が可能であるか否かについての判断がなされ、かつ、本発明を応用すべき個々の応用目的において上述したコンパクト表現形式によるデータ表現が望ましい結果をもたらすか否かについての判断がなされる。
処理ステップ410においては、メタデータ構造内のデータ・タイプ情報フィールドの値が「非コンパクト型」のデータ・タイプを表す値に更新されているか否かを判定する。「非コンパクト型」のデータ・タイプを表す値に更新されているならば、図4のフローチャートの実行は処理ステップ412に進み、当該データ・オブジェクトから導き出されたラスタ化データを対応するビットマップ構成部分に書き込む。処理ステップ410における判定結果がいずれの場合であっても、図4のフローチャートの実行は処理ステップ414に進み、オブジェクトの書き込みによる影響を受けることにより続いて処理されるのを待っている別の構成部分がビットマップ・メモリ内にまだ残っているか否かが判定される。
処理ステップ414において、続いて処理されるのを待っている別の構成部分がビットマップ・メモリ内にまだ残っていると判定された場合には、図4のフローチャートの実行は、処理ステップ414から処理ステップ404へと戻る反復実行ループに沿って再び処理ステップ404に戻り、該当するメタデータ構造を処理する。このとき、上述した該当するメタデータ構造とは、ビットマップ・メモリ内に書き込まれた当該データ・オブジェクト及びその書き込みによる影響を受ける別の構成部分の両者に対応しているメタデータ構造である。他方、処理ステップ414において、続いて処理されるのを待っている別の構成部分がビットマップ・メモリ内にもう存在しないと判定された場合には、図4のフローチャートの実行は、処理ステップ416に進み、この紙面全体の表示画像の生成のために続いて処理されるのを待っている別のデータ・オブジェクトがまだ残っているか否かが判定される。続いて処理されるのを待っている別のデータ・オブジェクトがまだ残っていると判定された場合には、図4のフローチャートの実行は、処理ステップ416から処理ステップ400へと戻る反復実行ループに沿って再び処理ステップ400に戻り、この紙面全体の表示画像の生成のために処理される次のデータ・オブジェクトを取り出して処理する。続いて処理されるのを待っている別のデータ・オブジェクトがもう存在しないと判定された場合には、図4のフローチャートの実行は終了する。
本発明に係る一実施例においては、処理ステップ406の説明において上述した方法によりメタデータ構造の内容を更新する処理動作は、上記のような影響を受けるビットマップ構成部分が、これと対応するメタデータ構造によってコンパクト表現形式で表現可能であるか否かを判定する処理動作を具備している。上述したとおり、この判定動作は、上記のような影響を受けるビットマップ構成部分がコンパクト表現形式で表現可能であるか否かを判定する処理動作だけでなく、本明細書中で説明される技術的特徴と技術的側面を実施する際に考慮すべき設計事項に基づいて、コンパクト表現形式によるデータ表現が望ましい結果をもたらすか否かを判定する動作をさらに伴うことが可能である。
例えば、データ・オブジェクトの書き込みによりビットマップ・メモリ内のごく一部の構成部分だけしか影響を受けていない場合であっても、ビットマップ内の構成部分をコンパクト表現形式で表現するようにすることができる。加えて、上記のような影響を受けるビットマップ構成部分において複数のオブジェクトの表示内容が特定の態様で互いに重なり合っている状態であっても、ビットマップ内の構成部分をコンパクト表現形式で表現するようにすることができる。
もしも、新たに書き込まれたデータ・オブジェクトがメタデータ構造によってコンパクト表現形式で表現することが出来ない場合、先行して処理された一つ以上のオブジェクトが当該メタデータ構造と対応する構成部分に対して既に書き込まれている状態(メタデータ構造内のデータ・タイプが「非コンパクト型」であることが既に示されている状態)であることを当該メタデータ構造が現時点において示しているか否かを続いて判定する。上述した状態であることを当該メタデータ構造が示しているならば、処理の実行を終了する。上述した状態であることを当該メタデータ構造が示していないならば、データ・タイプ情報フィールドの値は、「非コンパクト型」を示す値に変更され、上記のような影響を受けるビットマップ構成部分に関して決定されたデータ表現形式で既に表現がされている全てのデータ・オブジェクトは、ビットマップ・メモリ内に書き込まれる。
具体的には、現在のメタデータ構造により表現されているデータが、ビットマップ構成部分に書き込まれる。言い換えるならば、当該メタデータ構造内において「コンパクト型」として現在表現されている状態のデータ・オブジェクトが対応するビットマップ構成部分に書き込まれる。
先行して処理されたこれらのオブジェクトは、ビットマップ・メモリ内にまだ書き込まれてはいないので、新たに書き込まれるべきデータ・オブジェクトから導き出されたデータが、上記のような影響を受けるビットマップ構成部分に書き込まれるよりも先に、先行して処理されたこれらのオブジェクトを当該影響を受ける構成部分に書き込まなくてはならない。続いて、このメタデータ構造及び当該新しいデータ・オブジェクトの書き込みにより影響を受ける対応するビットマップ構成部分の処理の実行を完了するために、データ・タイプ情報フィールドの値は、「非コンパクト型」を示す値に設定される。
新たに書き込まれるべきデータ・オブジェクトが現在のメタデータ構造によってコンパクト表現形式で表現可能であること(および、コンパクト表現形式で表現することが本発明を実施する際に考慮すべき設計事項に鑑みて望ましいこと)を現在のメタデータ構造が示していると判定された場合、当該新たに書き込まれるべきデータ・オブジェクトが当該書き込みによって影響を受けるビットマップ構成部分の内容を変更するような影響を生じるか否かが続いて判定される。例えば、オブジェクトの表示内容が同一色のベタ塗りを表していることにより、当該メタデータ構造が「コンパクト型」のデータ・タイプを表している場合、および、当該新たに書き込まれるべきデータ・オブジェクトが当該ベタ塗りされる色を変更しない場合(例えば、新たに書き込まれるオブジェクトの表示色も同じ色であったり、透明色であったりする場合)、当該新たに書き込まれるオブジェクトはそのビットマップ構成部分を変更しないので、処理の実行を終了する。
当該データ・オブジェクトの書き込みにより、対応するビットマップ構成部分のメタデータ構造中でのデータ表現形式が変更されたと判定した場合には、データ・タイプ情報フィールドの値が「コンパクト型」のデータ・タイプを示す値に更新され、データ指示情報フィールドの値が、新たに書き込まれるべきデータ・オブジェクト自体を表現する情報内容に設定される(例えば、データ指示情報フィールドのフィールド値をメモリ中に保存されたデータ・オブジェクトのアドレスを間接的に指し示している参照ポインタ値に設定する、さもなければ、フィールド内にデータ・オブジェクト本体を符号化した情報を格納する)。これにより、上記のような影響を受けるビットマップ構成部分に対応するメタデータ構造に対する処理の実行は完了する。
本発明に係る一実施例においては、他のオブジェクトに対して表示内容の重ね合わせを行うデータ・オブジェクトの書き込みが、当該重ね合わせを受ける既存の一つ以上のビットマップ構成部分に対して与える具体的な影響は、データ・オブジェクトの具体的なセマンティクスに依存して決まる。本発明の技術的特徴と技術的側面を実施するための設計事項に応じて、多種多様な種類のデータ・オブジェクトの何れもが、ビットマップに書き込まれる対象として偶然に現れ得る。一般的に、全ての種類のデータ・オブジェクトは、画素の集合体と考えることが可能であり、各画素は、色彩と透明性を表すための何らかの値を持っている。
一般的に、全ての種類のデータ・オブジェクトは、上記のような画素の値が2次元的に並んだ2次元配列構造として表現される(例えば、長方形の境界線の中の多数の画素値から成るボックス領域)。一つの画素の値は様々な方法で符号化することが可能である。例えば、フルカラー表示されるデータ・オブジェクトは、3原色の各々と黒色に対応する4つの色彩プレーン上の画素毎の輝度値によって表示内容を定義することが可能である。さらに別の具体例を挙げるならば、各画素の値は、事前に定義された複数の色彩値を格納している色彩テーブル(例えば、パレット)の中に含まれる何れかの色彩値を参照しているインデックス値を単に符号化した値であっても良い。加えて、各画素値は、画素が透明色である(すなわち、ビットマップ上に何の視覚的効果も現さない)度合いを表す透明度の値またはある程度の半透明性を持った色彩値(すなわち、上述した値によって指定される色彩値)をさらに符号化したものであっても良い。
本発明に係る技術的特徴と技術的側面は、データ・オブジェクトの符号化と形状に関して上述した全ての方式の中の何れを使用して実施されても良い。本発明に係る一実施例においては、データ・オブジェクトは以下に列挙する4種類の汎用カテゴリの何れか一つに分類することが可能である。これらは、(1)長方形オブジェクト、(2)透明色のマスク・パターン、(3)パレット、および(4)表示可能な透明度および/または光透過性を有する画像オブジェクトの4つのカテゴリである。
「長方形オブジェクト」は、長方形の領域を表現する何らかのデータ・オブジェクトであり、当該長方形領域内の各画素の値は、特定の不透明な色彩値を表している。従って、長方形オブジェクトは、典型的には、自身が表示する長方形領域の幾何学的な寸法と単一の色彩値によって定義される。従って、「長方形オブジェクト」は、ビットマップ構成部分内において、これと対応するメタデータ構造によって、「コンパクト型」のデータとしてコンパクト表現形式で表現することが可能であり、この際、データ指示情報フィールドは、メモリ中に保存されたデータ・オブジェクトを参照ポインタにより参照しているか、または表示される長方形の幾何学的寸法と色彩値を符号化した情報を格納するかのいずれかである。
「透明色のマスク・パターン」は、マスク・パターンを形成する各画素の値が、「透明色を表すビット値」または「透明ではない具体的な色彩を表すビット値」の何れか一方である何らかのデータ・オブジェクト(典型的な場合においては、その輪郭形状はやはり長方形であるが、必ずしもそうであるとは限らない)である。この種のデータ・オブジェクトは、2層構造の画像と呼ばれる場合もある。文字列から成るテキスト表示オブジェクトは、しばしば、このような「透明色のパターン」によって表現される。「透明色のマスク・パターン」において、文字コードによって表される文字またはそのような文字から成る文字列は、境界ボックス線によって囲まれ透明色のビット値で埋められた背景領域の上に一連の不透明な画素(その全てが同一色である)によって描かれる不透明なパターンとして表現され、上述した透明な背景領域は、ビットマップ・メモリ内の既存の内容に対して全く影響を与えない。上記のような「透明色のマスク・パターン」がビットマップ・メモリに書き込まれる際には、不透明な画素によって描かれる不透明なパターンだけがビットマップ・メモリ内に書き込まれ、他方、透明な背景部分の画素は、ビットマップ・メモリ内の既存の内容に対して何の効果も及ぼさないので、その結果、ビットマップ・メモリ内の該当する画素位置に以前から記憶されていた内容は変更されないままとなる。典型的には、「透明色のマスク・パターン」は、透明色の背景領域とその領域内で不透明な画素によって描かれる不透明なパターンを有する長方形領域として定義される。従って、「透明色のマスク・パターン」であるデータ・オブジェクトは、ビットマップ構成部分内において、これと対応するメタデータ構造によって、「コンパクト型」のデータとしてコンパクト表現形式で表現することが可能であり、この際、データ指示情報フィールドは、メモリ中に保存されたデータ・オブジェクトを参照ポインタにより参照している。
「パレット」は、一つ以上の色彩で塗りつぶされた何らかの輪郭形状を定義する任意のデータ・オブジェクトであり、当該一つ以上の色彩は、有限個の色彩から成る色彩群(パレット)の中から選択された色彩である。従って、「パレット」オブジェクトにおいては、各色彩は、比較的狭い数値範囲にわたるパレット値の中の一つを示すインデックス値によって指定される。そのような「パレット」オブジェクトの一実施例においては、パレット色彩値を示すインデックス値の中に一つは、透明色の画素を表す値として予約しておかなくてはならず、それ以外のパレット色彩値を示すその他の全てのインデックス値は、パレット・テーブル内においてそれぞれ対応している透明色以外の色彩値を示している。従って、「パレット」であるデータ・オブジェクトは、ビットマップ構成部分内において、これと対応するメタデータ構造によって、「コンパクト型」のデータとしてコンパクト表現形式で表現することが可能であり、この際、データ指示情報フィールドは、メモリ中に保存されたデータ・オブジェクトを参照ポインタにより参照している。
「画像オブジェクト」は、各画素が色彩スペクトル内の一つの画素値を有している何らかのデータ・オブジェクトである。写真画像は、そのような「画像オブジェクト」の一例である。典型的には、「画像オブジェクト」は、上記のような画素値から成る長方形の領域として定義される。従って、「画像オブジェクト」であるデータ・オブジェクトは、ビットマップ構成部分内において、これと対応するメタデータ構造によって、「コンパクト型」のデータとしてコンパクト表現形式で表現することが可能であり、この際、データ指示情報フィールドは、メモリ中に保存されたデータ・オブジェクトを参照ポインタにより参照している。加えて、画像オブジェクト内の画素データは、(例えば、LZWやJPEGなどのように)標準化され一般に周知となっている様々な画像符号化技術を使用して圧縮処理し、符号化処理することが可能である。
上記において例示した4種類のカテゴリに属する複数のデータ・オブジェクトが、紙面上の所望の位置に各データ・オブジェクトを配置する手段によって、所望のビットマップ構成部分と関係付けられる際には、当該データ・オブジェクトは、一連の構成部分から成る系列によって表現することが可能であり、それらの構成部分は、土台となる紙面全体の表示領域の中のそれぞれの部分領域に整然と配置されている。各データ・オブジェクトが紙面全体の表示領域内のどこに位置するかに応じて、オブジェクトの書き込みによって影響を受けるビットマップ構成部分の幾つかにはデータが全体を埋め尽くすように書き込まれ、当該影響を受けるビットマップ構成部分の残りの幾つかには、データが部分的にしか書き込まれない。例えば、「長方形オブジェクト」であるデータ・オブジェクトは、長方形領域の境界付近の部分であって、オブジェクトの書き込みによる影響を部分的にしか受けない構成部分(すなわち、長方形のエッジ部分)とオブジェクトの表示色によって塗りつぶされる構成部分(すなわち、長方形の中央部分であって、長方形オブジェクトの書き込みによって完全に埋め尽くされる構成部分)を含むことが可能である。同様に、長方形オブジェクト以外の様々なカテゴリのデータ・オブジェクト(画像オブジェクト、透明色のマスク・パターン、パレット型オブジェクトなど)は、カテゴリ毎にそれぞれ異なる態様でビットマップ構成部分に影響を及ぼし、その場合、オブジェクトの書き込みで完全に埋め尽くされるビットマップ構成部分がある反面、データ・オブジェクトの境界エッジ部分のデータが書き込まれることによって、部分的にしか影響を受けないビットマップ構成部分もある。上述したように、データ・オブジェクトの処理によって部分的にしか影響を受けないビットマップ構成部分は、それにもかかわらず、当該ビットマップ構成部分と対応するメタデータ構造によってコンパクト表現形式で表現されることが可能である。
データ・オブジェクトが処理されることにより、上記のような影響を受けるビットマップ構成部分と対応しているメタデータ構造が更新されてゆくのに伴って、上述したカテゴリに属する複数のデータ・オブジェクトから成る組み合わせを、オブジェクトの書き込みによる影響を受ける単一のビットマップ構成部分の中において処理することが可能となる場合がある(例えば、一連のデータ・オブジェクトの各々が、互いの間で共通のビットマップ構成部分に対してそれぞれ上書きや何らかの方法による画素データの追加を実行するような場合がある)。
本発明に係る一実施例においては、データ・オブジェクトの処理により一つのビットマップ構成部分が受ける影響の具体的内容は、現時点において関連しているデータ・タイプに部分的に依存しており、当該データ・タイプは、対応するメタデータ構造内において示されている。一般的に、当該影響を受けるビットマップ構成部分が、これと対応するメタデータ構造内において「コンパクト型」のデータ・タイプであると現在示されている場合には、続いて処理されることにより当該ビットマップ構成部分を書き込みデータで埋め尽くすことになる後続のデータ・オブジェクトは、典型的には、「コンパクト型」のデータ・タイプをそのまま維持するが、新たに書き込まれるデータ・オブジェクトを表現するために、データ指示情報フィールドを更新する。
対応するメタデータ構造によってコンパクト表現形式で現在表現されているビットマップ構成部分を、当該新たに書き込まれるデータ・オブジェクトが部分的にしかカバーしない場合には、データ・タイプを「非コンパクト型」に変更することが可能であり、それにより、先行して処理されたデータ・オブジェクトによる影響と当該新たに書き込まれるデータ・オブジェクトによる部分的な影響とが混ざり合った混合的な影響が表現される。
「透明色のマスク・パターン」であるデータ・オブジェクトが処理される場合、対応するメタデータ構造によって「コンパクト型」のデータ・タイプとして現在表現されているビットマップ構成部分に対して当該データ・オブジェクトが及ぼす影響は、先行して処理され書き込まれたデータ・オブジェクトが何であったかに依存する場合がある。上述した幾つかの具体例から分かるとおり、多種多様なデータ・オブジェクトとそれらの組み合わせは、上記のような影響を受けるビットマップ構成部分と対応しているメタデータ構造においてコンパクト表現形式で表現可能である一方で、一つのビットマップ構成部分に影響を及ぼすデータ・オブジェクトのさらに別の組み合わせは、ビットマップ・メモリ内の該当する構成部分への書き込みを要する「非コンパクト型」のデータ表現を必要とする場合がある。
上述したとおり、ビットマップ圧縮処理回路104は、メタデータ構造を使用して紙面全体の表示画像を圧縮処理することにより得られる圧縮画像データ表現を生成する。そのような実施例においては、当該圧縮画像データ表現は、ビットマップ・メモリ全体を横切る水平方向ライン(例えば、走査ラインの各々)を一本ずつ走査しながら走査ラインの各々が横切るビットマップ内領域に対応するメタデータ構造から圧縮処理された画像データ部分を順次生成してゆくことによって生成することが可能である。
さらなる実施例においては、当該圧縮画像データ表現は、ビットマップ画像データをランレングス符号によって符号化するためのPackbits圧縮方式に従って生成される。Packbits圧縮方式においては、同じ8ビット値が繰り返し現れるバイト列を検索することによってビットマップ画像データ内の各行のデータを圧縮処理する。同じ値を反復するデータであるか、走査されるデータであるかを表すために制御バイトが使用され、この制御バイトは、同じ値を反復するデータについてはマイナスの値をとり、走査されるデータについてはプラスの値をとる。上述した制御バイトの絶対値は、同じ値を反復する8ビット値または走査される8ビット値が連続して現れる個数に等しく、この絶対値は一つずつデクリメントされてゆく。
例えば、制御バイトが0から127までの間の何れかの値をとるならば、それは、制御バイトの後に続いて、1個から128個までの走査される8ビット値が連続して現れることを表しており、制御バイトが−1から−127までの間の何れかの値をとるならば、それは、制御バイトの後に続いて、同一の値が、全部で2回から128回までの間の回数にわたって反復して現れることを表している。−128は未定義の制御バイト値であり、Packbits圧縮方式として標準化されていない他の用途のために使用することが可能である。本発明に係る一実施例においては、3個以上の連続する同一の8ビット・データ値は、反復データ列として符号化される(例えば、符号化される前の表現が「0、0、0」となる8ビット・データ列は、「−2、0」と符号化される)。さらに、互いに異なるデータ値が連続するデータ列は、走査されるデータから成るデータ列(すなわち、「リテラル・バイト列」)として符号化される(例えば、符号化される前の表現が「21、22、23、24」となる8ビット・データ列は、「3、21、22、23、24」と符号化される)。
紙面全体の表示画像が圧縮処理された後に、紙面全体の表示画像を印刷するために、ビットマップ画像データに対して後続の処理が実行される。具体的には、印刷すべきデータが取り出され、逆圧縮処理され、印刷のために処理される。例えば、印刷のための処理には、ビットマップ画像データを印刷時のビットマップ寸法と同じサイズに変換する処理などが含まれ、さらに、プリンタ装置の印刷プロパティにより「N−up」が指定された場合の印刷用イメージ、紙面内にヘッダ/フッタを追加した印刷用イメージ、または紙面上に透かし画像を重ね合わせ表示するための印刷用イメージなどを表すビットマップ画像データを追加的に生成したり重ね合わせ処理したりする処理も必要となる場合がある。
従来の印刷処理実行過程においては、印刷すべきデータに対して逆圧縮処理と再圧縮処理を実行するために、上述したPackbits圧縮符号化方式により符号化された表現形式のデータをまず画像データに変換し、続いて、Packbits方式により符号化された表現形式に戻す処理を実行する必要があった。そのような処理実行過程は、メモリが無駄に使用されるという観点、およびPackbits方式に対応した逆圧縮処理と再圧縮処理を実行するために無駄に時間が費やされるという観点から非効率である。
本発明に係る一実施例においては、Packbits方式による圧縮符号化データは、取り出された後に、他のデータ表現形式に変換されずにPackbits形式のまま、紙面全体の表示画像を生成するための後続の処理において使用されるので、逆圧縮処理と再圧縮処理を実行するために費やされる時間を省くことが可能となる。そのような実施例においては、新たに取り出されたデータ・オブジェクトをカテゴリ毎に分類する処理として、上述した4つのカテゴリ「長方形オブジェクト」、「透明色のマスク・パターン」、「パレット」および「画像オブジェクト」に新たなカテゴリとして「Packbits型オブジェクト」が加わることにより拡大された5つの分類カテゴリに分類する処理が実行されるようになる。
さらなる実施例においては、紙面上で「Packbits型オブジェクト」が配置されている領域は、長方形データとしてメモリ中に保存されており、背景パターンは同一色で塗りつぶされ、「Packbits型オブジェクト」の色彩属性とは、Packbits形式データにおいて定義されているものと同様のオフセットを指して言っている。さらには、複数の表示オブジェクトが融合して見えたり裏側の表示オブジェクトが透けて見えたりする視覚的効果を実現可能とするために、「Packbits型オブジェクト」のデータと共に、透明性(及び場合によっては光透過性)に関する属性データを格納することが可能であり、この場合、透明色の表示領域においては、その裏側にある同一色で塗りつぶされた背景パターンだけが見えている。同一色で塗りつぶされていない背景パターン(例えば、上記のタイル状態)は、透明色表示が有効化されている場合には、一般に「非コンパクト型」のタイルが生成される結果となり、タイルの全領域が透明色の領域によって完全に上書きされる場合には、何の影響も受けない。
さらに、「Packbits型オブジェクト」を有するタイルが上述した仕組みによって処理される結果、Packbits型の表示アイテムは、メタデータ構造内のデータ指示情報フィールド242に格納されている参照ポインタを辿ることによって見出され、Packbits型の表示アイテムは、色彩を生成する非コンパクト型のビットマップ構成部分に対応するオブジェクトとは異なる種類の他のオブジェクトと合成される。従って、「Packbits型オブジェクト」と対応するタイルの処理は、図4を参照しながら上述したように、メタデータ構造内において示される「コンパクト型」と「非コンパクト型」の区別に従って実行制御される。
例えば、紙面全体の表示画像の生成のために「Packbits型オブジェクト」が取り出される場合、ビットマップ・メモリ内のどの構成部分が「Packbits型オブジェクト」の書き込みによる影響を受けるかについての判定動作が実行され、次に影響を受けることとなるビットマップ構成部分と対応するメタデータ構造が取り出され、当該メタデータ構造内のデータ・タイプ情報フィールドの値に対する変更内容を反映させるために、当該データ・タイプ情報フィールドの値が更新され、その結果、現在処理中のデータ・オブジェクトが当該メタデータ構造内において「コンパクト表現形式」で表現可能であるか否かに応じて、当該データ・オブジェクトが表現される。従って、「Packbits型オブジェクト」が処理されることによって生じる効果として、印刷のための再圧縮処理に先立ってビットマップ画像データに対して実行される後続の処理の実行期間中において、「Packbits型オブジェクト」に対応するタイルに遭遇した際に、参照されている「Packbits型オブジェクト」からデータが抽出される。
続いて、図3を参照しながら上述した処理ステップ308の動作に従って、紙面全体の表示画像が圧縮処理される。しかしながら、紙面全体の表示画像に対する圧縮処理の実行中において、「Packbits型オブジェクト」からのデータは、圧縮処理されること無しに、単に再配置され、対応するビットマップ領域内に挿入されるだけである。何故なら、「Packbits型オブジェクト」のデータ表現形式は、既に圧縮処理されたデータ形式だからである。例えば、「Packbits型オブジェクト」だけを含んでいるタイルは、逆圧縮処理や後続の圧縮処理を実行されることなく、紙面を表示するビットマップ内の該当する領域部分に挿入され、他方、「Packbits型オブジェクト」とそれ以外のオブジェクトが混在しているタイルに関しては、逆圧縮処理や後続の圧縮処理が追加的に必要となる。
<上塗りコーティング処理>
上述したとおり、上塗りコーティング用プレーン(OC(OverCoat)プレーン)に対する処理の実行により、ページ面上に供給すべき上塗りコーティング用のインク(OCインク)の適量を判定することが可能である。本発明に係る一実施例に従うならば、上述のように圧縮処理されたCMYK画像形式の出力データから導き出された値を使用することにより、上塗りコーティング処理のための数多くの計算処理を省くことが可能となる。そのような実施例においては、データを逆圧縮処理したり、逆圧縮処理される別個の上塗りコーティング用プレーンを処理したりする必要無しに、CMYK画像形式の上塗りコーティング用プレーンの各々を決定するために、Packbits方式に基づく画素値のラン(run)走査が実装される。
本発明に係る一実施例においては、各画像プレーン内の圧縮処理されたデータは、同一の画素データが連続するラン(run)、または個々の画素値を含んでいる。従って、4枚の画像プレーンを画面表示するのと並行して、同一の色彩値が連続するラン(run)(例えば、各画像プレーン毎に同一色彩値が連続して成るラン(run))または個々のCMYK形式の色彩値を記述するためのメタデータ・マッピング情報が生成される。ラン(run)の走査経路に沿った上塗りコーティングの値を見出すために、単一の計算処理のみが使用される。従って、圧縮処理されたビットマップ画像データをそのまま直接使用することにより、Packbits符号化形式の上塗りコーティング処理用ビットマップ画像データを導き出すことが可能となる。
本発明に係る一実施例においては、ビットマップ圧縮処理回路が初期化される時点において、上塗りコーティング(OC(OverCoat))処理の設定内容が紙面全体の構造に関する情報から読み出され、要求されたOC解像度とその他のパラメータ値に従って、現在設定されている様々な変数の値が初期化される。そのような実施例においては、個々のOC関数とそのパラメータ値との間の対応関係を格納している検索テーブルがアクセスされる。
さらなる実施例においては、OCプレーンは、タイル毎に分割されたメタ画像と見做すことが可能である(例えば、全てのタイルは同じ大きさ(または縮小されたサイズ)であり、CMYK画像プレーンとして表現されており、画像プレーン内のタイルは、行単位で画像プレーン内を上から下に向かって順次処理されてゆく)。タイルが行方向に並んだ各行は、行毎にそれぞれ対応する本数のOC走査ラインを有することが可能であり、最後の行に近づくほど当該走査ラインの本数は少なくなる。さらには、そのような行に沿った全ての走査は、互いに構造が同一である(例えば、一部は特定のOC値を有していることが分かっているが、それ以外の部分においてはOC値を動的に計算する必要がある)。
本発明に係る一実施例に従うならば、OCプレーン内のタイル(OCタイル)の種別は「ソリッド型」または「非コンパクト型」の何れか一方の種別であると想定する。「ソリッド型」のタイルと対応している表示領域内に含まれる全てのOC画素は、全て同一の既知の値を有しており、「非コンパクト型」のタイルと対応している表示領域内に含まれる全てのOC画素の値は、対応するCMYK画像プレーン内の対応する表示領域に含まれる画素値から算出される。OCプレーン内において「ソリッド型」であるタイルは、C、M、YおよびKの4枚の画像プレーン内においてそれぞれ「ソリッド型」であるタイルの4つ組と対応しており、OCプレーン内において「非コンパクト型」であるタイルは、C、M、YおよびKの4枚の画像プレーン内におけるタイルを組み合わせた他の全ての組み合わせと対応している。従って、OC圧縮処理の第1段階においては、OCプレーン内において「非コンパクト型」であるタイルと対応しているCMYKプレーン内の全ての画素を画像プレーン単位でラスタ化する処理が実行される。
本発明に係る一実施例においては、OCプレーン内のタイル(OCタイル)から成る一つの行は、反復実行ループ処理が一回実行される毎に処理される。各行毎に行内のOCタイルは、対応するCMYKプレーン内のタイルから決定され、これらOCタイルの種別と左右のトラクター・マージンに基づいて、OCプレーン上での走査ライン(OC走査ライン)の構造が決定される。本発明に係る一実施例においては、セグメント・バッファが使用され、その際、各セグメントは32ビット幅を持つ2個の整数値によって記述され、第1のセグメントは、OC画素のセグメント長とその種別(例えば、事前に計算済みか、それとも特定のOC種別を使用して計算するのか)を指定し、第2のセグメントは、事前に計算済みのOC値またはOC走査ラインの開始点を基準とした相対的なオフセットの何れか一方を指定する。続いて、現在の行と対応しているOC走査線の各々について、セグメントのリストが処理される。
図5は、上塗りコーティング処理を実行するための処理フローの一実施例を示すフローチャートである。処理ステップ510においては、上述したセグメント・リスト内の一つのセグメントが解析される。処理ステップ520は判断ブロックであり、当該セグメントが「ソリッド型」のセグメントであるか否かが判定される。「ソリッド型」のセグメントである場合、セグメント長とOC値は既知であるので、図5のフローチャートの実行は処理ステップ530に進み、当該セグメントに関して圧縮処理されたデータが直接的に生成される。
続いて、処理ステップ540においては、続けて処理されるのを待っている別のセグメントがまだ残っているか否かが判定される。処理されるのを待っている別のセグメントがまだ残っているならば、図5のフローチャートの実行は処理ステップ510に戻り、処理されるのを待っていた次のセグメントが処理され、そうでなければ、フローチャートの実行を終了する。処理ステップ520の判断ブロックにおいて、セグメントの種別が「ソリッド型」であると判定されたならば、図5のフローチャートの実行は処理ステップ550に進み、当該セグメントに関して逆圧縮処理されたOC値が計算される。
本発明に係る一実施例においては、当該セグメントに関するOC値は、C、M、YおよびKの4つの画像プレーンにそれぞれ含まれる4つの対応するセグメントを使用して計算される。さらなる実施例においては、C、M、YおよびKの4つの画像プレーンにおいて出力OC画素値とそれぞれ対応している入力画素値を平均した値を計算する処理は、OC計算のために実行される。続いて、当該平均値に関するOC値を得るために、事前に計算された検索テーブルの検索処理が実行される。
処理ブロック560においては、OC値(上塗りコーティング値)が圧縮処理される。本発明に係る一実施例に従うならば、追加的に必要となるメモリ量が最小限となるようにOC画素値をCMYK色彩プレーンから動的に推定するために、OC値はメタデータ構造からの情報を使用して圧縮処理される。加えて、CMYK画像プレーンから入力された同一の入力が複数の異なるOC出力にマッピングされるようにするために、複数のOC関数タイプを実装することが可能である。さらに、出力画像を垂直方向に分割した複数の区画に対して複数の異なるOC関数を使用する(例えば、マージン/トラクター区画においてはユーザ区画とは異なるOC関数が使用可能である)ことが可能であり、OC出力は、入力されたCMYK画像プレーンと同じ解像度またはそれより低い解像度(雇えば、縦軸と横軸の両方向に1/2ずつ低下させた解像度)で生成することが可能である。
本発明に係る一実施例においては、これらのOC関数種別は、CMYK値に応じてOC値(上書きコーティング値)を取得するための複数の異なる方法を示している。例えば、比較的単純な事例には、CMYKプレーン内の画素値とは無関係に、30%または50%のOC値(上書きコーティング値)を生成する定数関数が含まれ得る。さらに別の例としては、平均のインク量に比例するOC値を選択するのに先立って、平均のインク量を決定するために、CMYKプレーン内の画素値を実際に使用するOC関数がある。さらに別の例としては、ページ内のトラクター区画(設定可能な幅を有するサイドマップの左と右の部分)とそれ以外の区画とを区別するために使用されるOC関数がある。
上記のように計算されたOC値が一旦圧縮処理されたならば、フローチャートの実行は処理ステップ540に戻り、続けて処理されるのを待っている別のセグメントがまだ残っているか否かについての判定動作が再度実行される。処理されるのを待っている別のセグメントがまだ残っているならば、図5のフローチャートの実行は処理ステップ510に戻り、処理されるのを待っていた次のセグメントが処理され、そうでなければ、フローチャートの実行を終了する。
上塗りコーティング処理に関する上述した仕組みは、画像データの圧縮符号化形式がPackbits形式であるとして説明してきたが、当該技術分野における当業者であれば、他の圧縮符号化形式を使用して上述した仕組みを実現することも可能であることが理解できるはずである。
図6は、圧縮処理されたビットマップ画像データを生成するためのシステム100および/または逆圧縮処理回路125を実装する基盤となり得るコンピュータ・システム600を例示する図である。コンピュータ・システム600は、情報を通信するために使用されるシステム・バス620、および情報を処理するためにバス620と接続されたプロセッサ610を含んでいる。
コンピュータ・システム600は、ランダム・アクセス・メモリ(RAM)またはその他のダイナミック記憶装置である記憶装置625(以下、「主記憶装置」と呼ぶ)をさらに具備しており、記憶装置625は、プロセッサ610によって実行される命令コードと情報を記憶するためにバス620と接続されている。プロセッサ610により命令コードが実行されている期間中に、主記憶装置625は、一時的な変数やその他の中間結果を表す情報を記憶するためにさらに使用することが可能である。コンピュータ・システム600は、読み出し専用メモリ(ROM)やその他の静的な記憶装置などの記憶装置626をさらに具備することが可能であり、記憶装置626は、プロセッサ610によって使用される命令コードと静的な情報を記憶するためにバス620と接続されている。
磁気ディスクや光学ディスクおよびこれらに対応するドライブ装置などであるデータ記憶装置625もまた、情報と命令コードを記憶するためにコンピュータ・システム600に接続することが可能である。コンピュータ・システム600はさらに、I/Oインターフェース630を介して第2のバスであるI/Oバス650と接続されることが可能である。I/Oバス650には複数のI/Oデバイスを接続することが可能であり、当該複数のI/Oデバイスには、ディスプレイ装置624や入力デバイス類(英数字入力デバイス623やカーソル操作型デバイス622など)などが含まれる。通信用デバイス621は、別のコンピュータ装置(他のサーバ装置やクライアント端末など)にアクセスするためのデバイスである。通信用デバイス621は、モデム装置、ネットワーク・インターフェース・カードまたは他の一般に周知なインターフェース・デバイス(例えば、Ethernet(登録商標)、トークン・リングまたはその他の種類の有線/無線のネットワークに接続するために使用するインターフェース・デバイス)を具備することが可能である。
本発明に係る複数の実施例は、上述したような多種多様な処理ブロックを含むことが可能であり、それらの処理ブロックは、計算機械により実行可能な命令コードとして具現化することが可能である。それらの命令コードは、汎用プロセッサや特定用途プロセッサに上述した処理ブロックの幾つかを実行させるために使用される。代替的に、ハードウェア回路内においてこれらの処理ブロックを実行するために配線ロジックを実装している専用のハードウェア部品によって、これらの処理ブロックを実行するようにしても良いし、上記ロジックがソフトウェアとしてプログラミングされているコンピュータ部品と専用ハードウェア部品との組み合わせによって、これらの処理ブロックを実行するようにしても良い。
本発明を構成する構成要素は、計算機械により実行可能な命令コードを格納するための機械読み出し可能な記憶媒体の形で提供することも可能である。これらの機械読み出し可能な記憶媒体は、フロッピー(登録商標)ディスク、光学ディスク、CD−ROM、光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気式や光学式のカード、伝送媒体、または電子的命令コードを記憶するのに適したその他の種類の媒体や機械読み取り可能媒体などを含むがこれらだけに限定はされない。例えば、本発明は、ユーザによりダウンロードされることによって、遠隔のコンピュータ(例えば、サーバ)から要求を発したコンピュータ(例えば、クライアント)へと転送されるコンピュータ・プログラムとして実施可能であり、上記コンピュータ・プログラムの転送は、通信回線(モデム装置やネットワーク接続によるもの)を介して伝送される搬送波や他の伝送媒体として具現化されるデータ信号の伝送として実現される。
本明細書の全体にわたる記述を通して、本発明を説明することを目的として、本発明の包括的な理解を可能とするための数多くの具体的詳細内容が記述される。しかしながら、当該技術分野における当業者にとっては、上述した具体的詳細内容の一部を省略した形でも本発明を実施することが可能であることが自明であろう。従って、本発明の技術的範囲と技術思想は、本明細書に添付した請求項の記載によって認定されるべきである。
いくつかの態様を記載しておく。
〔態様1〕
コンピュータにより実施される方法であって:
圧縮処理がされた後の紙面全体の表示画像を構成する色彩プレーンを解析するステップと、
前記色彩プレーンに基づいて、上塗りコーティング用のプレーンを生成するステップ、
を具備する方法。
〔態様2〕
前記色彩プレーンを解析するステップは、セグメント・リストを解析する動作を具備することを特徴とする、態様1記載の方法。
〔態様3〕
前記セグメント・リストを解析する動作は、前記セグメント・リスト内の第1のセグメントがソリッド型のセグメントであるか否かを判定する動作を具備することを特徴とする、態様2記載の方法。
〔態様4〕
前記第1のセグメントがソリッド型のセグメントではないならば、圧縮処理がされる前の上塗りコーティング値を計算するステップと、
前記上塗りコーティング値を圧縮処理するステップ、
をさらに具備する態様3記載の方法。
〔態様5〕
C、M、YおよびKの4つの画像プレーン内において出力画素値とそれぞれ対応する複数の入力画素値を平均して得られる平均値を算出する動作と、
前記平均値を使用して検索テーブルを検索することにより、前記検索テーブルから値を取り出す動作、とによって前記上塗りコーティング値を計算することを特徴とする、態様4記載の方法。
〔態様6〕
前記セグメントがソリッド型であるならば、前記セグメントに関して圧縮処理されたデータを生成するステップをさらに具備する、態様4記載の方法。
〔態様7〕
前記セグメント・リスト内に解析されるべき後続のセグメントが存在するか否かを判定するステップをさらに具備する態様6記載の方法。
〔態様8〕
圧縮処理がされた後の紙面全体の表示画像を構成する色彩プレーンを解析し、前記色彩プレーンに基づいて、上塗りコーティング用のプレーンを生成するように構成されたプロセッサを具備するシステム。
〔態様9〕
前記色彩プレーンを解析する動作は、セグメント・リストを解析する動作を具備することを特徴とする、態様8記載のシステム。
〔態様10〕
前記セグメント・リストを解析する動作は、前記セグメント・リスト内の第1のセグメントがソリッド型のセグメントであるか否かを判定する動作を具備することを特徴とする、態様9記載のシステム。
〔態様11〕
前記第1のセグメントがソリッド型のセグメントではないならば、前記プロセッサが、圧縮処理がされる前の上塗りコーティング値を計算し、前記上塗りコーティング値を圧縮処理するように構成されていることを特徴とする、態様10記載のシステム。
〔態様12〕
C、M、YおよびKの4つの画像プレーン内において出力画素値とそれぞれ対応する複数の入力画素値を平均して得られる平均値を前記プロセッサが算出する動作と、
前記プロセッサが、前記平均値を使用して検索テーブルを検索することにより、前記検索テーブルから値を取り出す動作と、
によって前記上塗りコーティング値を計算することを特徴とする、態様11記載のシステム。
〔態様13〕
前記セグメントがソリッド型であるならば、前記プロセッサは、前記セグメントに関して圧縮処理されたデータを生成するようにさらに構成されていることを特徴とする、態様11記載のシステム。
〔態様14〕
前記プロセッサは、前記セグメント・リスト内に解析されるべき後続のセグメントが存在するか否かを判定するようにさらに構成されていることを特徴とする、態様13記載のシステム。
〔態様15〕
プロセッサにより実行された際に、
圧縮処理がされた後の紙面全体の表示画像を構成する色彩プレーンを解析する動作と、
前記色彩プレーンに基づいて、上塗りコーティング用のプレーンを生成する動作と、
を実行するための命令コードを含んでいるコンピュータ読み出し可能記録媒体。
〔態様16〕
前記色彩プレーンを解析する動作は、セグメント・リストを解析する動作を具備することを特徴とする、態様15記載のコンピュータ読み出し可能記録媒体。
〔態様17〕
前記セグメント・リストを解析する動作は、前記セグメント・リスト内の第1のセグメントがソリッド型のセグメントであるか否かを判定する動作を具備することを特徴とする、態様16記載のコンピュータ読み出し可能記録媒体。
〔態様18〕
前記第1のセグメントがソリッド型のセグメントではないならば、圧縮処理がされる前の上塗りコーティング値を計算し、前記上塗りコーティング値を圧縮処理する動作を前記命令コードがさらに具備する、態様17記載のコンピュータ読み出し可能記録媒体。
〔態様19〕
C、M、YおよびKの4つの画像プレーン内において出力画素値とそれぞれ対応する複数の入力画素値を平均して得られる平均値を算出する動作と、
前記平均値を使用して検索テーブルを検索することにより、前記検索テーブルから値を取り出す動作と、
によって前記上塗りコーティング値を計算することを特徴とする、態様18記載のコンピュータ読み出し可能記録媒体。
〔態様20〕
前記セグメントがソリッド型であるならば、前記プロセッサは、前記セグメントに関して圧縮処理されたデータを生成する動作を前記命令コードがさらに具備する、態様18記載のコンピュータ読み出し可能記録媒体。