(57)【特許請求の範囲】
【請求項１】
第１のパスおよび第１のフィルを含む第１のオブジェクトと、第２のパスおよび第２のフィルを含む第２のオブジェクトとを取得する取得手段と、
１つのビットマップにおける前記第１のフィルに対応する領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルに対応する領域に前記第２のフィルを書き込む書込手段と、
前記第１のパスおよび前記第２のパスのそれぞれを前記書き込みが行われた前記１つのビットマップと関連付ける関連付け手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記書込手段は、前記１つのビットマップにおける前記第１のフィルに対応する領域および前記１つのビットマップにおける前記第２のフィルに対応する領域どうしが互いに重複せずに所定の距離内にある場合に、前記書き込みを行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記書込手段は、前記１つのビットマップにおける前記第１のフィルが配置される領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルが配置される領域に前記第２のフィルを書き込むことで、前記書き込みを行うことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記第１のフィルは、ビットマップであり、前記第２のフィルは、前記第１のフィルとは異なるビットマップであることを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記関連付けが行われた１つのビットマップから、前記第１のパスおよび前記第２のパスのそれぞれを用いて、前記第１のオブジェクトおよび前記第２のオブジェクトに対する画像がくりぬかれることを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
第１のパスおよび第１のフィルを含む第１のオブジェクトと、第２のパスおよび第２のフィルを含む第２のオブジェクトとを取得する取得手段と、
１つのビットマップにおける前記第１のフィルに対応する領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルに対応する領域に前記第２のフィルを書き込む書込手段と、
前記第１のパスおよび前記第２のパスのそれぞれを前記書き込みが行われた前記１つのビットマップと関連付ける関連付け手段と、
前記関連付けが行われた１つのビットマップから、前記第１のパスおよび前記第２のパスのそれぞれを用いて、前記第１のオブジェクトおよび前記第２のオブジェクトに対する画像をくりぬく手段と、
を有することを特徴とする画像処理システム。
【請求項７】
前記書込手段は、前記１つのビットマップにおける前記第１のフィルに対応する領域および前記１つのビットマップにおける前記第２のフィルに対応する領域どうしが互いに重複せずに所定の距離内にある場合に、前記書き込みを行うことを特徴とする請求項６に記載の画像処理システム。
【請求項８】
前記書込手段は、前記１つのビットマップにおける前記第１のフィルが配置される領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルが配置される領域に前記第２のフィルを書き込むことで、前記書き込みを行うことを特徴とする請求項６または７に記載の画像処理システム。
【請求項９】
前記第１のフィルは、ビットマップであり、前記第２のフィルは、前記第１のフィルとは異なるビットマップであることを特徴とする請求項６乃至８の何れか１項に記載の画像処理システム。
【請求項１０】
画像処理装置が実行する画像処理方法であって、
前記画像処理装置の取得手段が、第１のパスおよび第１のフィルを含む第１のオブジェクトと、第２のパスおよび第２のフィルを含む第２のオブジェクトとを取得する取得工程と、
前記画像処理装置の書込手段が、１つのビットマップにおける前記第１のフィルに対応する領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルに対応する領域に前記第２のフィルを書き込む書込工程と、
前記画像処理装置の関連付け手段が、前記第１のパスおよび前記第２のパスのそれぞれを前記書き込みが行われた前記１つのビットマップと関連付ける関連付け工程と、
を有することを特徴とする画像処理方法。
【請求項１１】
前記１つのビットマップにおける前記第１のフィルに対応する領域および前記１つのビットマップにおける前記第２のフィルに対応する領域どうしが互いに重複せずに所定の距離内にある場合に、前記書込手段による前記書込工程が行われることを特徴とする請求項１０に記載の画像処理方法。
【請求項１２】
前記１つのビットマップにおける前記第１のフィルが配置される領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルが配置される領域に前記第２のフィルを書き込むことで、前記書込手段による前記書込工程が行われることを特徴とする請求項１０または１１に記載の画像処理方法。
【請求項１３】
前記第１のフィルは、ビットマップであり、前記第２のフィルは、前記第１のフィルとは異なるビットマップであることを特徴とする請求項１０乃至１２の何れか１項に記載の画像処理方法。
【請求項１４】
前記関連付けが行われた１つのビットマップから、前記第１のパスおよび前記第２のパスのそれぞれを用いて、前記第１のオブジェクトおよび前記第２のオブジェクトに対する画像がくりぬかれることを特徴とする請求項１０乃至１３の何れか１項に記載の画像処理方法。
【請求項１５】
請求項１乃至５の何れか１項に記載の画像処理装置の各手段としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に画像処理に関し、特に、複雑なディスプレイリストのメモリ使用量を減少する方法及び装置に関する。更に本発明は、中間フィルを複数のオブジェクトと関連付けるコンピュータプログラムを記録している媒体に関する。
【背景技術】
【０００２】
１つ以上のページから構成されてもよく、且つ、プリンタ上に印刷される印刷ジョブは、一般にＰｏｓｔＳｃｒｉｐｔ（登録商標）又はＡｄｏｂｅ（登録商標）のＰＤＦ、或いはＨＰ（登録商標）のＰＣＬ等のページ記述言語（ＰＤＬ）を利用する形式でプリンタに送出される。一般的なページ記述言語プリンタにおいて、ページ記述入力は、ハイレベルなグラフィックスオブジェクトに変換される。一般に各グラフィックスオブジェクトは、多数のグラフィックス要素からなり、各グラフィック要素は、通常オブジェクトがページ上でアクティブな場所を示すパスデータ、オブジェクトの色を示すフィルデータ及びオブジェクトが以下のあらゆるオブジェクトと対話する方法を示す合成データを含む。グラフィックス要素は、ディスプレイリストとして既知である中間形式で格納される。その後、完成したディスプレイリストは、プリンタエンジン宛ての画素データのページにレンダリングするレンダラに送出される。
【０００３】
一般的な種類のフィルは、単一色、ビットマップ、並びに線形シェーディング及びラジアルシェーディングである。ビットマップフィルは、一般に、ソース座標系で規定されるソースビットマップデータ及びソース座標系と出力ページ座標系との間でマッピングするアフィン変換から構成される。
【０００４】
ジョブは、各々がパス及び個々のビットマップフィルを参照する非常に多数のグラフィックスオブジェクトを潜在的に含んでもよい。この場合、ディスプレイリストを格納するのに必要とされるメモリは、全ジョブメモリのかなりの部分を占める。メモリが多大なコストを示すため、レンダリングされたページの品質を大幅に低下することなく、ディスプレイリストにより使用されるメモリを減少することが望ましい。
【０００５】
ディスプレイリストメモリを減少する１つの既知の方法は、ディスプレイリストをフィルマップとして既知である中間形式に変換する方法である。フィルマップは、非オーバラッピング領域から構成される。各領域は、所定の領域においてアクティブなオブジェクトから導出される１つ以上のフィルのシーケンスを参照する。領域がフィルの同一のシーケンスを参照する場合、隣接領域は組み合わされる。一般に、中間形式を格納する必要があるメモリは、領域の数に関係する。しかし、多数の個々のフィルを含む多数のディスプレイリストオブジェクトがある場合、中間形式で多数の領域が存在する可能性が高い。ディスプレイリストをフィルマップ中間形式に変換することにより、オブジェクト毎にパスデータを格納する必要があるメモリは解放される。しかし、フィルデータを格納する必要があるメモリは依然として高いままである。
【０００６】
多数の画像と関連付けられたビットマップフィルに対して必要なメモリを減少する方法は、フィルを統合画像にレンダリングすることによりフィルを組み合わせる方法である。画像をレンダリングすることは、実行される動作を合成することを含む。透明であるか、或いは下地オブジェクトで合成されるオブジェクトをレンダリングするために、下地オブジェクトもレンダリングされる必要がある。これは、最悪の場合、ディスプレイリスト全体がレンダリングされる必要があり、この処理が計算的にもメモリ使用量においてもコストがかかることを意味する。
【０００７】
従って、中間形式により使用されるメモリの量を減らす必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、既存の構成の１つ以上の欠点を実質的に克服するか、或いは少なくとも改善することである。
【課題を解決するための手段】
【０００９】
本発明の一態様によると、第１のパスおよび第１のフィルを含む第１のオブジェクトと、第２のパスおよび第２のフィルを含む第２のオブジェクトとを取得する取得手段と、１つのビットマップにおける前記第１のフィルに対応する領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルに対応する領域に前記第２のフィルを書き込む書込手段と、前記第１のパスおよび前記第２のパスのそれぞれを前記書き込みが行われた前記１つのビットマップと関連付ける関連付け手段と、を有する画像処理装置が提供される。
【００１０】
本発明の別の態様によると、第１のパスおよび第１のフィルを含む第１のオブジェクトと、第２のパスおよび第２のフィルを含む第２のオブジェクトとを取得する取得手段と、１つのビットマップにおける前記第１のフィルに対応する領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルに対応する領域に前記第２のフィルを書き込む書込手段と、前記第１のパスおよび前記第２のパスのそれぞれを前記書き込みが行われた前記１つのビットマップと関連付ける関連付け手段と、前記関連付けが行われた１つのビットマップから、前記第１のパスおよび前記第２のパスのそれぞれを用いて、前記第１のオブジェクトおよび前記第２のオブジェクトに対する画像をくりぬく手段と、を有する画像処理システムが提供される。
【００１１】
本発明の更に別の態様によると、画像処理装置が実行する画像処理方法であって、前記画像処理装置の取得手段が、第１のパスおよび第１のフィルを含む第１のオブジェクトと、第２のパスおよび第２のフィルを含む第２のオブジェクトとを取得する取得工程と、前記画像処理装置の書込手段が、１つのビットマップにおける前記第１のフィルに対応する領域に前記第１のフィルを書き込み、前記１つのビットマップにおける前記第２のフィルに対応する領域に前記第２のフィルを書き込む書込工程と、前記画像処理装置の関連付け手段が、前記第１のパスおよび前記第２のパスのそれぞれを前記書き込みが行われた前記１つのビットマップと関連付ける関連付け工程と、を有する画像処理方法が提供される。
【発明の効果】
【００１９】
本発明によれば、中間形式により使用されるメモリの量を減らすことができる。
【図面の簡単な説明】
【００２０】
【図１Ａ】説明する構成が実施される画素レンダリングシステムを総合的に示す概略ブロック図である。
【図１Ｂ】プロセッサ及びメモリを示す詳細な概略ブロック図である。
【図１Ｃ】ネットワークを介してプリンタに接続されたコンピュータモジュールを示す図である。
【図２】中間ページ表現を生成する方法を概略的に示すフローチャートである。
【図３】例示的なページを示す図である。
【図４】図３の例示的なページに対するディスプレイリスト中間ページ表現を示す図である。
【図５】ページ記述言語（ＰＤＬ）ページのディスプレイリスト中間ページ表現を生成する方法を概略的に示すフローチャートである。
【図６】図５の方法で実行されたように、ステッチングを候補フィルに適用する方法を概略的に示すフローチャートである。
【図７】候補フィルと組み合わせるのに適したステッチャオブジェクトを判定する方法を概略的に示すフローチャートである。
【図８】図３の方法で実行されたように、候補フィルをステッチャオブジェクトと組み合わせる方法を概略的に示すフローチャートである。
【図９】図３に示されたページに対するタイル型のフィルマップ中間表現を示す図である。
【図１０】図９に示されたタイル型のフィルマップ中間表現に対するフィル合成シーケンス及び対応するレベル情報を示す表である。
【図１１】ＰＤＬページの一例を示す図である。
【図１２】図１１に示されたページに対するタイル型のフィルマップ中間表現を示す図である。
【図１３】図１２に示されたタイル型のフィルマップ中間表現に対するフィル合成シーケンス及び対応するレベル情報を示す表である。
【図１４Ａ】図５の方法に従って図１１のページの処理中のステッチャオブジェクトの状態を示す図である。
【図１４Ｂ】図１１に示されたページの処理中のステッチャオブジェクトの更新された状態を示す図である。
【図１５】図１１に示されたページに対するディスプレイリスト中間ページ表現を示す図である。
【図１６】図１１に示されたページに対する別のタイル型のフィルマップ中間表現を示す図である。
【図１７】図１６に示されたタイル型のフィルマップ中間表現に対するフィル合成シーケンス及び対応するレベル情報を示す図である。
【図１８】各々がフィルと関連付けられる複数のオブジェクトと中間フィルとを関連付ける方法を示すフローチャートである。
【図１９Ａ】ステッチャオブジェクトのバウンディングボックスと候補フィルのバウンディングボックスとがオーバラップしない一例を示す図である。
【図１９Ｂ】ステッチャオブジェクトのバウンディングボックスと候補フィルのバウンディングボックスとがオーバラップしない一例を示す図である。
【発明を実施するための形態】
【００２１】
添付の図面のうちの何れか１つ以上において、同一の図中符号を有するステップ及び／又は特徴を参照する。逆の意図が示されない限り、これらのステップ及び／又は特徴は、本明細書のために同一の機能又は動作を有する。
【００２２】
図１Ａ〜図１Ｃは、説明する種々の構成が実施される画素レンダリングシステム１００を総合的に示す概略ブロック図である。
【００２３】
図１Ａに示されるように、システム１００は、コンピュータモジュール１０１、キーボード１０２、マウスポインタデバイス１０３、スキャナ１２６、カメラ１２７及びマイク１７０等の入力デバイス、並びにプリンタ１１５、表示装置１１４及びスピーカ１１７を含む出力デバイスにより形成される。外部変復調器（モデム）送受信機デバイス１１６は、接続１２１を介して通信ネットワーク１２０と通信するためにコンピュータモジュール１０１により使用されてもよい。ネットワーク１２０は、インターネット又は専用ワイドエリアネットワーク（ＷＡＮ）等のＷＡＮであってもよい。接続１２１が電話線である場合、モデム１１６は従来の「ダイヤルアップ」モデムであってもよい。或いは、接続１２１が大容量（例えば、ケーブル）接続である場合、モデム１１６はブロードバンドモデムであってもよい。無線モデムは、ネットワーク１２０に無線接続するために更に使用されてもよい。
【００２４】
コンピュータモジュール１０１は、一般に、少なくとも１つのプロセッサユニット１０５、並びに例えば半導体ランダムアクセスメモリ（ＲＡＭ）及び半導体読み出し専用メモリ（ＲＯＭ）から形成されたメモリユニット１０６を含む。モジュール１０１は、ビデオディスプレイ１１４に結合するオーディオ／ビデオインタフェース１０７、スピーカ１１７及びマイク１７０を含む多数の入出力（Ｉ／Ｏ）インタフェース、キーボード１０２、マウス１０３、スキャナ１２６、カメラ１２７及びオプションとしてジョイスティック（不図示）用のＩ／Ｏインタフェース１１３、並びに外部モデム１１６用のインタフェース１０８を更に含む。いくつかの実現例において、モデム１１６は、インタフェース１０８等のコンピュータモジュール１０１内に組み込まれてもよい。コンピュータモジュール１０１は、接続１２３を介して画素レンダリングシステム１００がローカルエリアネットワーク（ＬＡＮ）として既知であるローカルコンピュータネットワーク１２２に接続できるようにするローカルネットワークインタフェース１１１を更に有する。更に示されるように、ローカルネットワーク１２２は、一般にいわゆる「ファイアウォール」デバイス又は同様の機能性を備えたデバイスを含むワイドネットワーク１２０に接続１２４を介して更に結合してもよい。インタフェース１１１は、Ｅｔｈｅｒｎｅｔ（登録商標）回路カード、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線構成又はＩＥＥＥ８０２．１１無線構成により形成されてもよい。
【００２５】
インタフェース１０８及び１１３は、直列接続性及び並列接続性の何れか一方又は双方を提供してもよい。一般に直列接続性は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）規格に従って実現され、対応するＵＳＢコネクタ（不図示）を有する。記憶装置１０９が提供され、一般に記憶装置１０９は、ハードディスクドライブ（ＨＤＤ）１１０を含む。フレキシブルディスクドライブ及び磁気テープドライブ（不図示）等の他の記憶装置が更に使用されてもよい。オプションのディスクドライブ１１２は、一般に、データの不揮発性ソースとして動作するように提供される。例えば、光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ）、ＵＳＢ−ＲＡＭ及びフレキシブルディスク等のポータブルメモリ装置は、システム１００に対する適当なデータのソースとして使用されてもよい。
【００２６】
コンピュータモジュール１０１の構成要素１０５〜１１３は、一般に、相互接続バス１０４を介して通信する。説明する構成が実施されるコンピュータの例には、ＩＢＭ−ＰＣ’ｓ及び互換性のあるもの、Ｓｕｎ  Ｓｐａｒｃｓｔａｔｉｏｎｓ、Ａｐｐｌｅ  Ｍａｃ（登録商標）又はそれから進化した同様のコンピュータシステムが含まれる。
【００２７】
以下に説明する方法は、システム１００を使用して実現されてもよい。方法において説明される図２〜図１６Ｂの処理は、システム１００内で実行可能な１つ以上のソフトウェアアプリケーションプログラム１３３及び／又は制御プログラム１９０（図１Ｃを参照）として実現されてもよい。特に、説明される方法のステップは、システム１００内で実行されるソフトウェアで命令１３１により実施される。ソフトウェア命令１３１は、各々が１つ以上の特定のタスクを実行する１つ以上のソフトウェアコードモジュールとして形成されてもよい。ソフトウェアは２つの別個の部分に更に分割されてもよく、第１の部分及び対応するソフトウェアコードモジュールは説明する方法を実行し、第２の部分及び対応するソフトウェアコードモジュールは、第１の部分とユーザとの間のユーザインタフェースを管理する。
【００２８】
例えばソフトウェアは、以下に説明する記憶装置を含むコンピュータ読み取り可能な媒体に格納されてもよい。ソフトウェアは、コンピュータ読み取り可能な媒体からシステム１００にロードされ、システム１００により実行される。そのようなソフトウェアを有するコンピュータ読み取り可能な媒体又はコンピュータ読み取り可能な媒体上に記録されたコンピュータプログラムは、コンピュータプログラム製品である。システム１００においてコンピュータプログラムを使用することにより、説明する方法を実現する有利な装置を実施するのが好ましい。
【００２９】
ソフトウェア１３３は、一般にＨＤＤ１１０又はメモリ１０６に格納される。ソフトウェア１３３は、コンピュータ読み取り可能な媒体からシステム１００にロードされ、その後システム１００により実行される。従って、例えばソフトウェアは、光ディスクドライブ１１２により読み出される光学的に読み出し可能なＣＤ−ＲＯＭ媒体１２５上に格納されてもよい。そのようなソフトウェアを有するコンピュータ読み取り可能な媒体又はコンピュータ読み取り可能な媒体上に記録されたコンピュータプログラムは、コンピュータプログラム製品である。コンピュータシステム１００においてコンピュータプログラムを使用することにより、説明する方法を実現する有利な装置を実施するのが好ましい。
【００３０】
いくつかの例において、アプリケーションプログラム１３３は、１つ以上のＣＤ−ＲＯＭ１２５上で符号化されてユーザに供給され、対応するドライブ１１２を介して読み出されてもよく、或いはユーザによりネットワーク１２０又は１２２から読み出されてもよい。更にソフトウェアは、他のコンピュータ読み取り可能な媒体からシステム１００にロードされてもよい。コンピュータ読み取り可能な記憶媒体は、実行及び／又は処理するためにシステム１００に命令及び／又はデータを提供することに関係するあらゆる記憶媒体を示す。そのような記憶媒体の例には、フレキシブルディスク、磁気テープ、ＣＤ−ＲＯＭ、ハードディスクドライブ、ＲＯＭ又は集積回路、ＵＳＢメモリ、光磁気ディスク、或いは例えばＰＣＭＣＩＡカード等のコンピュータ読み取り可能なカードが含まれ、そのようなデバイスは、コンピュータモジュール１０１の内部又は外部にある。ソフトウェア、アプリケーションプログラム、命令及び／又はデータをコンピュータモジュール１０１に提供することに更に関係してもよいコンピュータ読み取り可能な伝送媒体の例には、無線送信チャネル又は赤外線送信チャネル及び別のコンピュータ又はネットワーク化されたデバイスへのネットワーク接続、並びに電子メール送信及びウェブサイト上等に記録された情報を含むインターネット又はイントラネットが含まれる。
【００３１】
上述したアプリケーションプログラム１３３の第２の部分及び対応するコードモジュールは、ディスプレイ１１４上にレンダリングされるか、或いは表される１つ以上のグラフィカルユーザインタフェース（ＧＵＩ）を実現するように実行されてもよい。一般にキーボード１０２及びマウス１０３を操作することにより、システム１００及びアプリケーションのユーザは、ＧＵＩと関連付けられたアプリケーションに制御コマンド及び／又は入力を提供するように機能的に適応可能な方法でインタフェースを操作してもよい。他の形式の機能的に適応可能なユーザインタフェース、例えばスピーカ１１７を介して出力された音声プロンプト及びマイク１７０を介して入力されたユーザ音声コマンドを利用するオーディオインタフェースが更に実現されてもよい。
【００３２】
図１Ｂは、プロセッサ１０５及び「メモリ」１３４を示す詳細な概略ブロック図である。メモリ１３４は、図１Ａのコンピュータモジュール１０１によりアクセスされる全てのメモリモジュール（ＨＤＤ１１０及び半導体メモリ１０６を含む）の論理的な集約を示す。
【００３３】
コンピュータモジュール１０１が最初に電源を投入される場合、自己診断（ＰＯＳＴ）プログラム１５０が実行する。一般にＰＯＳＴプログラム１５０は、半導体メモリ１０６のＲＯＭ１４９に格納される。ＲＯＭ１４９等のハードウェアデバイスは、ファームウェアと呼ばれる場合もある。ＰＯＳＴプログラム１５０は、コンピュータモジュール１０１内のハードウェアを検査して適切に機能することを保証し、一般に、正しく動作するためにＲＯＭ１４９に更に格納されたプロセッサ１０５、メモリ（１０９、１０６）及び基本入出力システム（ＢＩＯＳ）ソフトウェアモジュール１５１をチェックする。ＰＯＳＴプログラム１５０が正常に実行したら、ＢＩＯＳ１５１はハードディスクドライブ１１０を起動する。ハードディスクドライブ１１０を起動することにより、ハードディスクドライブ１１０上に常駐するブートストラップローダプログラム１５２がプロセッサ１０５を介して実行する。これにより、オペレーティングシステム１５３は、ＲＡＭメモリ１０６にロードされると動作を開始する。オペレーティングシステム１５３は、プロセッサ１０５により実行可能なシステムレベルのアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインタフェース及び汎用ユーザインタフェースを含む種々のハイレベルな機能を遂行する。
【００３４】
オペレーティングシステム１５３は、メモリ（１０９、１０６）を管理し、コンピュータモジュール１０１上で実行する処理又はアプリケーションの各々が別の処理に割り当てられたメモリと衝突することなく実行する十分なメモリを有することを保証する。また、システム１００で使用可能な種々のメモリは、各処理が効率的に実行するように適切に使用される必要がある。従って、集約メモリ１３４は、メモリの特定の部分が割り当てられる方法を示すことを意図せず（明示的に記載されない限り）、システム１００によりアクセス可能なメモリの概略図及びそのようなメモリが使用される方法を提供する。
【００３５】
プロセッサ１０５は、制御ユニット１３９、演算論理装置（ＡＬＵ）１４０及びキャッシュメモリと呼ばれることもあるローカルメモリ又は内部メモリ１４８を含む多数の機能モジュールを含む。一般にキャッシュメモリ１４８は、レジスタ部に複数の記憶レジスタ１４４〜１４６を含む。１つ以上の内部バス１４１は、これらの機能モジュールを機能的に相互接続する。一般にプロセッサ１０５は、接続１１８を使用してシステムバス１０４を介して外部デバイスと通信する１つ以上のインタフェース１４２を更に有する。
【００３６】
アプリケーションプログラム１３３は、条件付き分岐命令及びループ命令を含んでもよい一連の命令１３１を含む。プログラム１３３は、プログラム１３３を実行するのに使用されるデータ１３２を更に含んでもよい。命令１３１及びデータ１３２は、それぞれ、記憶場所１２８〜１３０及び１３５〜１３７に格納される。命令１３１及び記憶場所１２８〜１３０の相対的な大きさに依存して、特定の命令は、記憶場所１３０に示された命令により描かれたように単一の記憶場所に格納されてもよい。或いは、命令は、記憶場所１２８及び１２９に示された命令部分により描かれたように、各々が別個の記憶場所に格納される多数の部分に分割されてもよい。
【００３７】
一般にプロセッサ１０５は、そこで実行される命令の集合を与えられる。次にプロセッサ１０５は、命令の別の集合を実行することにより自身が反応する後続の入力を待つ。各入力は、入力デバイス１０２、１０３の１つ以上により生成されたデータ、ネットワーク１２０、１２２のうちの一方を介して外部ソースから受信したデータ、記憶装置１０６、１０９のうちの一方から検索したデータ又は対応する読み取り装置１１２に挿入された記憶媒体１２５から検索したデータを含む多数のソースのうちの１つ以上から提供されてもよい。いくつかの例において、命令の集合を実行した結果、データが出力されてもよい。実行することは、データ又は変数をメモリ１３４に格納することを更に含んでもよい。
【００３８】
説明する方法は、対応する記憶場所１５５〜１５８においてメモリ１３４に格納される入力変数１５４を使用する。説明する方法は、対応する記憶場所１６２〜１６５においてメモリ１３４に格納される出力変数１６１を生成する。中間変数は、記憶場所１５９、１６０、１６６及び１６７に格納されてもよい。
【００３９】
プロセッサ１０５のレジスタ部１４４〜１４６、演算論理装置（ＡＬＵ）１４０及び制御ユニット１３９は、プログラム１３３を構成する命令集合において命令毎に「取り込み、復号化及び実行」サイクルを実行するのに必要なマイクロ動作のシーケンスを実行するように共に動作する。取り込み、復号化及び実行サイクルの各々は、
（ａ）記憶場所１２８からの命令１３１を取り込むか或いは読み取る取り込み動作、
（ｂ）制御ユニット１３９が取り込まれた命令を判定する復号化動作、並びに
（ｃ）制御ユニット１３９及び／又はＡＬＵ１４０が命令を実行する命令動作を含む。
【００４０】
その後、次の命令に対する更なる取り込み、復号化及び実行サイクルが実行されてもよい。同様に、制御ユニット１３９が値を記憶場所１３２に格納するか或いは書き込むことにより、格納サイクルが実行されてもよい。
【００４１】
図４〜図６の処理におけるステップ又はサブ処理の各々は、プログラム１３３の１つ以上の部分と関連付けられ、プログラム１３３の示された部分に対して命令集合において命令毎に取り込み、復号化及び実行サイクルを実行するようにプロセッサ１０５のレジスタ部１４４〜１４７、ＡＬＵ１４０及び制御ユニット１３９が共に動作することにより実行される。
【００４２】
或いは、説明される方法は、方法の機能又はサブ機能を実行する１つ以上の集積回路等の専用ハードウェアで実現されてもよい。そのような専用ハードウェアは、グラフィックプロセッサ、デジタル信号プロセッサ又は１つ以上のマイクロプロセッサ及び関連付けられたメモリを含んでもよい。
【００４３】
図１Ｃは、ネットワーク１２２を介してプリンタ１１５に接続されたコンピュータモジュール１０１を示す図である。
【００４４】
プリンタ１１５は、ソフトウェアアプリケーション１３３と同様に、メモリ１８０に常駐する制御プログラム１９０を実行するコントローラプロセッサ１８５を備える。プリンタ１１５は、画素レンダリング装置１９６及びプリンタエンジン１９５を更に備える。構成要素１８０、１８５、１９５及び１９６は、通信バス１７８を介して結合される。
【００４５】
画素レンダリング装置１９６は、バス１７８を介してプロセッサ１８５及びプリンタエンジン１９５に結合されたＡＳＩＣの形式であってもよい。しかし、画素レンダリング装置１９６は、プロセッサ１８５により実行されたソフトウェアで更に実現されてもよい。画素レンダリングシステム１００において、ソフトウェアアプリケーション１３３は、プロセッサ１０５の実行中、各ページがテキスト、線、フィル領域及び画像データ等のオブジェクトを含むページベースの文書を作成する。ソフトウェアアプリケーション１３３は、ネットワーク１２２を介して、ハイレベルなページの記述（例えば、ページ記述言語（ＰＤＬ）ファイルとして）をプリンタ１１５のコントローラプロセッサ１８５により実行される制御プログラム１９０に送出する。
【００４６】
制御プログラム１９０は、ソフトウェアアプリケーション１３３からページの記述を受信し、記述をメモリ１８０に格納してもよい。ページ記述におけるオブジェクトは、メモリ１８０内に構成された以下に更に詳細に説明されるディスプレイリストと呼ばれた第１の中間形式ページ表現に配置される。ディスプレイリストの各オブジェクトは、フィルデータ、パスデータ及び合成命令を参照する。制御プログラム１９０は、何れかのフィルが中間フィルに組み合わされるかを判定するようにページ記述オブジェクトを処理する。制御プログラム１９０は、あらゆる必要な中間フィル又は少なくとも２つのオブジェクトにより共用される共用フィルを作成する。
【００４７】
以下に更に詳細に説明されるように、ディスプレイリストは、フィルマップ及びフィル合成シーケンスの表を含む第２の中間形式ページ表現を生成するために、制御プログラム１９０により使用される。この場合も、フィルマップ及びフィル合成シーケンスの表を含む第２の中間形式ページ表現は、メモリ１８０に格納される。
【００４８】
次に制御プログラム１９０は、フィル合成シーケンスの表を生成するようにフィル合成シーケンスの表を処理し、フィル合成シーケンスの表を単純なレンダリング動作のみを必要とするメモリ１８０に格納する。コントローラプロセッサ１８５上で実行されるプログラム１９０は、画素レンダリング装置１９６にメモリ１８０を提供すること、画素レンダリング装置１９６を初期化すること及びページのレンダリングを開始するように画素レンダリング装置１９６に命令することに更に対処する。
【００４９】
その後、画素レンダリング装置１９６は、ページを画素にレンダリングするために、フィルマップ及びフィル合成シーケンスの表を使用する。画素レンダリング装置１９６の出力は画素データである。画素データは、ページを印刷するためにプリンタエンジン１９５により使用されてもよい。
【００５０】
図２は、中間ページ表現を生成する方法２００を概略的に示すフローチャートである。方法２００は、メモリ１８０に常駐し、実行中にプロセッサ１８５により制御される制御プログラム１９０の１つ以上のコードモジュールとして実現されてもよい。方法２００は、ソフトウェアアプリケーション１３３により提供されたページ記述からフィルマップ及びフィル合成シーケンスの表を生成する。
【００５１】
方法２００はステップ２０１において開始し、制御プログラム１９０が、プロセッサ１８５の実行中にディスプレイリストを生成する。図２に示されるように、制御プログラム１９０は、ページ記述２４０を受信し、ディスプレイリストの形式で第１の中間形式ページ表現２５０を生成する。ディスプレイリスト中間ページ表現２５０は、メモリ１８０に格納されてもよい。図５を参照して、ステップ２０１において実行されたようにディスプレイリスト中間ページ表現を生成する方法５００を以下に詳細に説明する。
【００５２】
方法２００は次のステップ２０３において継続し、制御プログラム１９０が、プロセッサ１０５の実行中に、ディスプレイリスト中間ページ表現２５０を処理し、フィルマップ及びフィル合成シーケンスの表の形式で第２の中間形式ページ表現２６０を生成する。この場合も、フィルマップ及びフィル合成シーケンス表現２６０の表は、メモリ１８０に格納されてもよい。
【００５３】
フィルマップ及びフィル合成シーケンス表現２６０の表は、画素をレンダリングする画素レンダリング装置１９６により使用されてもよい。第２の中間形式ページ表現２６０のメモリ使用量を最小化するために、フィルの組合せがディスプレイリストの生成中に実行されてもよい。フィル組合せの目的は、各々がソース座標系からページ座標系への別個のアフィン変換を有する複数のフィルをソース座標系からページ座標系への単一のアフィン変換マッピングを有する単一のフィルで置換することである。
【００５４】
図３に、不透明なひし形の形式の下層オブジェクト３２０、不透明なビットマップの形式の第２の下層オブジェクト３３０及び半透明の平坦な長方形３４０の形式の上層オブジェクト３４０を含む例示的なページ３１０を示す。
【００５５】
図４に、例示的なページ３１０に対するディスプレイリスト４００を示す。ディスプレイリスト４００の各エントリ（例えば、４０５）は、パス情報、フィル情報及び合成情報を参照する。フィル情報は、パスの内側の色及び不透明度を特定するパス情報と関連付けられたデータである。一方、パス情報と関連付けられた合成情報は、パス情報により生成されたオブジェクトの色及び不透明度を背景オブジェクトの色及び不透明度と組み合わせるために使用された動作の表示である。図４に示されるように、ディスプレイリストオブジェクトエントリ「１」４０５は、不透明なひし形オブジェクト３２０に対応し、ひし形形状のパス４１０、線形ブレンドフィル４１５及びＡＴＯＰ合成オペレータ４２０を参照する。ディスプレイリストオブジェクトエントリ「２」４２５は、ビットマップオブジェクト３３０に対応し、正方形のパス４３０、ビットマップフィル４３５及びＯＶＥＲ合成オペレータ４４０を参照する。ディスプレイリストオブジェクトエントリ「３」４４５は、半透明の平坦な長方形３４０に対応し、長方形のパス４５０、半透明の平坦な色フィル４５５及びＯＶＥＲ合成オペレータ４６０を参照する。
【００５６】
図５を参照して、ステップ２０１において実行されたようにディスプレイリスト中間ページ表現を生成する方法５００を以下に更に詳細に説明する。方法５００は、メモリ１８０に常駐し、実行中にプロセッサ１８５により制御される制御プログラム１９０の１つ以上のソフトウェアコードモジュールとして実現されてもよい。中間ページ表現は、ページ３１０等の１つ以上のオブジェクトを含むページ記述言語（ＰＤＬ）ページから生成される。ＰＤＬページはメモリ１８０に格納されてもよい。
【００５７】
方法５００は初期化ステップ５１５において開始し、制御プログラム１９０が、プロセッサ１８５の実行中にメモリ１８０内に格納されたステッチングパラメータを初期化する。方法５００において使用されるステッチングパラメータは、「アクティブなステッチャオブジェクトのリスト」、「フィル組合せアクティブフラグ」、「起動カウント」及び「停止カウント」である。
【００５８】
起動カウントは、処理されており、ステッチングに適したオブジェクトの数をカウントする。起動カウントは、起動閾値に到達したかを判定するために使用される。起動閾値に到達した場合、フィル組合せを起動する。
【００５９】
停止カウントは、フィル組合せが適切なフィルを組み合わせるのに失敗した回数を記録する。停止カウントは、停止閾値に到達したかを判定するために使用される。停止閾値に到達した場合、フィル組合せを停止する。
【００６０】
一実現例において、プロセッサ１８５は、初期化ステップ５１５において、フィル組合せアクティブフラグをＴＲＵＥに設定し、アクティブステッチャオブジェクトのリストをｎｏｎｅ／ｅｍｐｔｙに設定し、起動カウント及び停止カウントをゼロ（０）に設定する。
【００６１】
判定ステップ５２０において、処理され、ディスプレイリストに追加される必要のある残りのオブジェクトがＰＤＬページにあることを制御プログラム１９０が判定する場合、方法５００はステップ５３０に進む。処理すべき更なるＰＤＬオブジェクトがない場合、方法５００は終了する。
【００６２】
取り込みステップ５３０において、処理されるＰＤＬオブジェクトがメモリ１８０から取得される。次に方法５００はディスプレイリストエントリステップ５３５に進み、新しいディスプレイリストエントリが、メモリ１８０内に構成されたディスプレイリストに割り当てられ、追加される。次に処理はパスデータステップ５４０に進み、制御プログラム１９０がＰＤＬオブジェクトからパスデータを判定する。パスデータは、メモリ１８０内に構成されたディスプレイリストの新しいディスプレイエントリに追加される。
【００６３】
次に方法５００は合成オペレータステップ５４５に進み、合成オペレータが、制御プログラム１９０によりＰＤＬオブジェクトから判定され、ディスプレイリスト内の新しいディスプレイエントリに追加される。ＰＤＬオブジェクトのフィル情報は、以下においてＰＤＬオブジェクトのフィルと呼ばれる。次に方法５００はステップ５５０に進み、ＰＤＬオブジェクトのフィルが、メモリ１８０内で「候補フィル」と呼ばれる一時フィルとして取得され、格納される。次に、処理は候補フィルステッチングステップ５５５に進む。ステッチングステップ５５５において、制御プログラム１９０は、プロセッサ１８５の実行中に、ステッチングを候補フィルに適用し、現在処理されているＰＤＬオブジェクトに対応する新しいディスプレイリストエントリのフィル特性を設定する。次に、図６を参照して、ステップ５５５において実行されたようにステッチングを候補フィルに適用する方法６００を説明する。
【００６４】
方法６００は、メモリ１８０に常駐し、実行中にプロセッサ１８５により制御される制御プログラム１９０の１つ以上のソフトウェアコードモジュールとして実現されてもよい。
【００６５】
方法６００は判定ステップ６１０において開始し、プロセッサ１８５の実行中に、基準の集合に基づいて候補フィルがステッチングに適していることを制御プログラム１９０が判定する場合、方法６００は増分ステップ６２５に進む。さもなければ、方法６００は設定ステップ６１５に進む。基準の集合は予め判定されていてもよい。一実現例において、基準の集合は、フィルがビットマップフィルである場合、ソースビットマップの寸法が第１の所定の大きさより小さい場合及び変換されたソースビットマップの寸法が第２の所定の大きさより小さい場合にフィルがステッチングに適していることを含んでもよい。
【００６６】
設定ステップ６１５において、現在処理されているオブジェクトに対するフィルが候補フィルに設定され、方法６００は終了する。
【００６７】
増分ステップ６２５において、メモリ１８０内に構成されたステッチング起動カウントパラメータは、制御プログラム１９０により増分される。チェックステップ６３０において、フィル組合せアクティブフラブが設定されたことを制御プログラム１９０が判定する場合、方法６００は互換性のあるステッチャオブジェクトステップ６４５に進む。さもなければ、方法６００は判定ステップ６３５に進む。
【００６８】
ステップ６４５において、制御プログラム１９０は、候補フィルと組み合わせるのに適したアクティブステッチャオブジェクトのリストにおいてステッチャオブジェクトを判定するように試みる。図７を参照して、アクティブステッチャオブジェクトのリストにおいて候補フィルと組み合わせるのに適したステッチャオブジェクトを判定する方法７００を以下に更に詳細に説明する。
【００６９】
判定ステップ６３５において、所定の起動閾値を超えた場合、方法６００はステップ６４０に進む。さもなければ、方法６００はステップ６１５に進む。起動閾値は、例えば起動カウントが所定の値を上回る単純な閾値であってもよい。或いは、起動閾値は、例えば起動カウントと処理されたオブジェクトの総数との比が所定の値を上回るより複雑な閾値であってもよい。
【００７０】
起動ステップ６４０において、制御プログラム１９０は、プロセッサ１８５の実行中に、メモリ１８０内に構成されたフィル組合せアクティブフラグを設定してもよい。
【００７１】
判定ステップ６５０において、適切な既存のステッチャオブジェクトがステップ６４５において判定されたことを制御プログラム１９０が判定する場合、方法６００は組合せステップ６５５に進む。さもなければ、方法６００は増分ステップ６６５に進む。
【００７２】
一実現例において、Ｆｏｕｎｄ＿Ｓｔｉｔｃｈｅｒ変数はメモリ１８０内に構成されてもよい。この場合、制御プログラム１９０は、Ｆｏｕｎｄ＿Ｓｔｉｔｃｈｅｒ変数が「Ｎｏｎｅ」ではない場合に適切なステッチャオブジェクトが発見されたことを判定してもよい。
【００７３】
組合せステップ６５５において、候補フィルは、ステップ６４５において適していると判定されたステッチャオブジェクトと組み合わされる。図８を参照して、候補フィルをステッチャオブジェクトと組み合わせる方法８００を以下に更に詳細に説明する。候補フィルがステッチャオブジェクトと組み合わされると、方法６００は終了する。
【００７４】
アクティブステッチャオブジェクトのリストにおいて候補フィルと組み合わせるのに適した既存のステッチャオブジェクトがないことをステップ６５０において制御プログラム１９０が判定する場合、処理はステップ６５０から増分ステップ６６５に進む。ステップ６６５において、制御プログラム１９０は、プロセッサ１８５の実行中に、メモリ１８０内に構成された停止カウントパラメータを増分する。次に処理はステップ６６５からステップ６７０に進み、プロセッサ１８５の実行中に、停止閾値を超えたことを制御プログラム１９０が判定する場合、処理６００は停止ステップ６７５に進む。さもなければ、方法６００は作成ステップ６８０に進む。一実現例において、停止カウントパラメータの値とメモリ１８０において構成された起動カウントパラメータの値との比が所定の値を上回る場合、停止閾値を超えたと判定される。
【００７５】
ステップ６７５において、フィル組合せを停止する。特に、ステップ６７５において、メモリ１８０内に構成されたフィル組合せアクティブフラグは、制御プログラム１９０により作成される。また、起動カウントパラメータ及び停止カウントパラメータはゼロ（０）に設定される。上述したように、次に処理はステップ６１５に進む。
【００７６】
或いは、上述したように、停止閾値を超えなかった場合、処理はステップ６７０から作成ステップ６８０に進み、制御プログラム１９０が新しいステッチャオブジェクトを作成する。ステッチャオブジェクトは、ビットマップフィル、どの画素が書き込まれたかを示すデータ及びステッチャオブジェクトのアクティブエリアを示すバウンディングボックスを参照する。ステッチャオブジェクトが作成される場合、一実現例において、バウンディングボックスは所定のｘ寸法及びｙ寸法で作成され、ビットマップは透明な白の画素に初期化され、全ての画素は「ＮＯＴ  ＷＲＩＴＴＥＭ」とマーク付けされる。新しいステッチャオブジェクトが作成されると、方法６００は組合せステップ６５５に進む。組合せステップ６５５において、候補フィルは、ステッチャオブジェクトと組み合わされ、その後設定ステップ６６０に進む。設定ステップ６６０において、現在処理されているオブジェクトに対するフィルがステッチャオブジェクトにより参照されたビットマップフィルに設定され、方法６００は終了する。
【００７７】
次に、図７を参照して、アクティブステッチャオブジェクトのリストにおいて候補フィルと組み合わせるのに適したステッチャオブジェクトを判定する方法７００を詳細に説明する。方法７００は、メモリ１８０に常駐し、実行中にプロセッサ１８５により制御される制御プログラム１９０の１つ以上のソフトウェアコードモジュールとして実現されてもよい。
【００７８】
方法７００はステップ７１０において開始し、制御プログラム１９０が、プロセッサ１８５の実行中に、メモリ１８０内に構成されたＦｏｕｎｄ＿Ｓｔｉｔｃｈｅｒ変数をＮｏｎｅに設定する。
【００７９】
チェックステップ７１５において、制御プログラム１９０は、メモリ１８０内に構成されたアクティブステッチャオブジェクトのリストを検査し、まだ処理されていないオブジェクトがあるかを判定する。アクティブステッチャオブジェクトのリストにおける全てのオブジェクトが処理された場合、方法７００は終了する。
【００８０】
或いは、アクティブステッチャオブジェクトのリストにおいて未処理のステッチャオブジェクトがあることをステップ７１５において制御プログラム１９０が判定する場合、方法７００は取り込みステップ７２５に進む。ステップ７２５において、制御プログラム１９０は、メモリ１８０内に構成されたアクティブステッチャオブジェクトのリストにおいて次の未処理のステッチャオブジェクトを取り込む。
【００８１】
次に互換性チェックステップ７３０において、予め判定された基準の集合に基づいて、ステップ７２５において取り込まれたステッチャオブジェクトのビットマップフィルが候補フィルと互換性のあることを制御プログラム１９０が判定する場合、方法７００は近接性判定ステップ７３５に進む。例えば、フィルは、同一の色空間において規定され、同一のビット深度を有する場合に互換性がある。上述したように、ステッチャオブジェクトのビットマップフィルが候補フィルと互換性のない場合、方法７００はステップ７１５に戻る。
【００８２】
近接性判定ステップ７３５において、制御プログラム１９０は、ステッチャオブジェクト及び候補フィルの近接性を判定する。一実現例において、候補フィルに対するステッチャオブジェクトの近接性は、候補フィルのバウンディングボックスとステッチャオブジェクトのバウンディングボックスとの間の距離を判定することにより測定される。ＰＤＬオブジェクトがバウンディングボックスを含む場合、候補フィルに対するバウンディングボックスは、現在処理されているＰＤＬオブジェクトから判定されてもよい。或いは、候補フィルに対するバウンディングボックスは、候補フィルの寸法をページ空間に変換するために候補フィルのアフィン変換を使用して判定されてもよく、変形されたポイントのバウンディングボックスを取得してもよい。一実現例において、候補フィルのバウンディングボックスがステッチャオブジェクトのバウンディングボックス内に完全に含まれる場合、ステッチャオブジェクト及び候補フィルは近接していると考えられる。さもなければ、ステッチャオブジェクト及び候補フィルは近接していないと考えられる。近接しているフィルは、組み合わせるために近接していないフィルより少ないメモリを必要とする。例えば、各々がページの隅にある４つの小さな画像が組み合わされた場合、組み合わされた画像における画素数はページ上の画素数と等しくなり、数は４つの画像における画素数よりもはるかに大きい。これは、画像が組み合わされる場合にメモリ使用量が増加することを意味する。
【００８３】
一実現例において、候補フィルのバウンディングボックスの大きさは、ページの特徴に従って適応可能に変化する。オブジェクトが取得ステップ５３０において取得される際、バウンディング領域の大きさをそのように適応可能に実行中に変更してもよい。ページの種々の特徴は、バウンディングボックスの大きさに影響を及ぼす。例えば、ページ上の特定のエリアにおいてオブジェクトの数が増加することにより特定のエリアの複雑性が増すため、バウンディング領域は、同数のページ上の他の候補フィルの他のバウンディングボックスとオーバラップしないように僅かに減少する。オブジェクト及びオブジェクトと関連付けられたフィルの複雑性は、バウンディングボックスの大きさにも影響を及ぼす。フィルの複雑性は、合成スタックに含まれた種々の色の数及びオペレータの種類により判定される。従って、例えば、フィルにおける色の数が固定数に予め決められた閾値を超える場合、フィルは複雑であると言える。例えば、ページ上の特定のエリアにおけるオブジェクトの数、エリアに含まれたフィルの数、各フィルにおける色の数及びフィルに含まれたオペレータを考慮する複雑性測度が更に算出される。その後、フィルのバウンディング領域は、オブジェクトが受信される際のそのような複雑性測度に基づいて判定される。特に、バウンディング領域の大きさは、複雑性測度の影響を受けるだろう。複雑性測度に基づいてバウンディング領域を判定することにより、組合せ処理６５５の複雑性が減る。
【００８４】
上述したように、ステッチャオブジェクト及び候補フィルが近接していないことをステップ７３５において制御プログラム１９０が判定する場合、方法７００はステップ７１５に戻る。ステッチャオブジェクト及び候補フィルが近接している場合、方法７００はオーバラップ判定ステップ７４０に進む。
【００８５】
上述したように、ステップ７４０において、ステッチャオブジェクトと候補フィルとがオーバラップすることを制御プログラム１９０が判定する場合、方法７００はステップ７１５に戻る。さもなければ、方法７００は終了する。一実現例において、ステップ７４０において、制御プログラム１９０は、先のステッチング動作中に何れかのデータが、候補フィルのバウンディングボックスがステッチャオブジェクトのバウンディングボックスにオーバラップするステッチャオブジェクトのエリアに書き込まれるかを判定する。情報がオーバラッピングエリアに先に書き込まれなかったことを制御プログラム１９０が判定する場合、ステッチャオブジェクト及び候補フィルはオーバラップしていないと考えられる。しかし、情報がオーバラッピングエリアに先に書き込まれている場合、ステッチャオブジェクト及び候補フィルはオーバラップしていると考えられる。
【００８６】
ステップ７４５において、メモリ１８０内に構成されたＦｏｕｎｄ＿Ｓｔｉｔｃｈｅｒ変数がステッチャオブジェクトに設定され、方法７００は終了する。
【００８７】
図８を参照して、ステップ６５５において実行されたように候補フィルをステッチャオブジェクトと組み合わせる方法８００を以下に詳細に説明する。方法８００は判定ステップ８２０において開始し、制御プログラム１９０が、ステッチャオブジェクトと候補フィルとの間のオーバラップのエリアにおいてステッチャオブジェクト画素の集合を判定する。オーバラップのエリアにおける全ての画素は、「未処理」である。
【００８８】
チェックステップ８３０において、ステップ８２０において判定された画素の集合に未処理の画素が残っていることを制御プログラム１９０が判定する場合、方法８００はステップ８５０に進む。ステップ８２０において判定された画素の集合の全ての画素が処理されている場合、方法８００は終了する。
【００８９】
取り込みステップ８５０において、制御プログラム１９０は、プロセッサ１８５の実行中に次の未処理の画素取り込む。次に、判定ステップ８６０において、制御プログラム１９０は、取り込まれた画素の場所に対応する候補フィルの画素色値を判定する。ビットマップフィルの場合、ステップ８６０において、制御プログラム１９０は、未処理の画素と候補フィルのソースビットマップ空間との間でアフィン変換を実行し、ソース場所を取得する。その後、そのソース場所におけるソースビットマップの色値が判定されてもよい。
【００９０】
コピーステップ８７０において、ステップ８６０において判定された色値は、未処理の画素場所においてステッチャオブジェクトのビットマップフィルにコピーされる。次に方法８００はマーク付けステップ８８０に進み、制御プログラム１９０が、取り込まれた画素を「ＷＲＩＴＴＥＮ」とマーク付けし、画素をメモリ１８０に格納する。上述したように、処理は次にステップ８３０に進む。
【００９１】
再度図２を参照すると、ディスプレイリスト（すなわち、第１の中間形式ページ表現２５０）が作成されると、ディスプレイリストは、タイル型のフィルマップ表現２６０に変換されてもよい（２０３）。図９は、図３の例示的なページ３１０のタイル型のフィルマップ表現９１０を示す。図９の例において、フィルマップタイル９２０は、（列、行）の形式で表された位置（１、２）にある。図９の右側に拡張したフィルマップタイル９２０のコンテンツが示される。フィルマップタイル９２０における４つの領域９３０、９４０、９５０及び９６０は、それぞれ、１、２、３、及び４の指標を含むフィル合成シーケンスを参照する。
【００９２】
図１０は、タイル型のフィルマップ９１０に対するフィル合成シーケンス１０１０の表、並びに対応するレベル情報１０２０、１０３０及び１０４０を示す。レベル情報＃１  １０２０は、図３の不透明なひし形オブジェクト３２０に対応するレンダリング情報を含む。レベル情報＃１  １０２０は、線形ブレンドフィル４１５及び合成オペレータＡＴＯＰ４２０を参照する。レベル情報＃２  １０３０は、不透明な低解像度のソースビットマップオブジェクト３３０に対応するレンダリング情報を含む。レベル情報＃２  １０３０は、低解像度のビットマップソースフィル４３５を参照し、合成オペレータＯＶＥＲ４４０を有する。レベル情報＃３  １０４０は、半透明の平坦なオブジェクト３４０に対応するレンダリング情報を含む。レベル情報＃３  １０４０は、平坦な灰色のソースフィル４５５を参照し、合成オペレータＯＶＥＲ４６０を有する。
【００９３】
２つのオブジェクトが同一フィル及び同一の合成オペレータを参照する場合、２つのフィルは同一のレベル情報を参照できる。フィルが同一の合成情報を有する場合、同一のステッチャフィルを参照する２つのオブジェクトは、同一の同一レベル情報を参照する。他のオブジェクトにオーバラップすることなく２つのそのようなオブジェクトのみにより生成されるタイル型のフィルマップ情報のあらゆる領域は、同一のフィル合成シーケンスを参照する。
【００９４】
次に、図１１〜図１５を参照して、上述した方法を例として更に説明する。図１１は、例示的なＰＤＬページ１１１０を示す。ページ１１１０は、３つのＰＤＬオブジェクトを含む。すなわち、ページ１１１０は、不透明なビットマップであり、ソースビットマップが顔の画像である１番下のオブジェクト１１２０を含む。ページ１１１０は、不透明なビットマップであり、ソースビットマップが三角形の画像である第２のオブジェクト１１３０を更に含む。ページ１１１０は、不透明なビットマップであり、ソースビットマップが円の画像である第３のオブジェクト１１４０を更に含む。
【００９５】
フィルを組み合わせずに処理された場合の例示的なページ１１１０のタイル型のフィルマップ表現１２１０を図１２に示す。フィルマップタイル１２２０は、（列、行）の形式で表された位置（２、２）にある。図１２の右側に拡張したフィルマップタイル１２２０のコンテンツを示す。図１２に示されるように、フィルマップタイル１２２０における４つの領域１２３０、１２４０、１２５０及び１２６０は、それぞれ、１、２、３及び４の指標を含むフィル合成シーケンスを参照する。
【００９６】
図１３に、タイル型のフィルマップ１２１０に対するフィル合成シーケンスの表１３１０、並びに対応するレベル情報１３２０、１３３０及び１３４０を示す。レベル情報＃１  １３２０は、顔のビットマップ１１２０を参照するオブジェクトに対応するレンダリング情報を含む。レベル情報＃２  １３３０は、三角形のビットマップ１１３０を参照するオブジェクトに対応するレンダリング情報を含む。レベル情報＃３  １３４０は、円のビットマップ１１４０を参照するオブジェクトに対応するレンダリング情報を含む。
【００９７】
例示的なフィル組合せ処理が図１１の例示的なページ上で実行される場合、起動閾値はゼロ（０）であると考えられ、各ソースビットマップの寸法はステッチングに対する最大許容度を下回る。図１１の全てのビットマップは、同一の色空間及びビット深度を有する。ページ１１１０は、図１５に示されるようなディスプレイリスト１５００の形式で中間ページ表現を生成するために、方法５００に従って処理されてもよい。方法５００は、ステップ５１５を参照して上述したように、ステッチングパラメータを初期化することにより開始する。メモリ１８０内に構成されたアクティブステッチャオブジェクトのリストはＮｏｎｅに設定され、フィル組合せアクティブフラグはクリアされ、起動カウント及び停止カウントはゼロ（０）に設定される。
【００９８】
顔のビットマップ１１２０を参照するＰＤＬオブジェクトは、方法５００に従って最初に処理され、顔のビットマップがステッチングに適しているかを判定するために検査される（方法６００のステップ６１０と同様）。オブジェクト１１２０に対応する顔のビットマップの寸法がステッチングに対する最大許容度を下回るため、オブジェクト１１２０はステッチングに適していると考えられる。起動カウントパラメータは、増分され（ステップ６２５と同様）、ゼロ（０）より大きいため、メモリ１８０内に構成されたフィル組合せ起動フラグが設定される（ステップ６４０と同様）。アクティブステッチャオブジェクトのリストが空であるため、適切なステッチャオブジェクトは判定されない（方法６００のステップ６４５と同様）。オブジェクト１１２０の処理は継続し、停止カウントは増分される（ステップ６６５と同様）。しかし、停止閾値を超えない（ステップ６７０と同様）ために、新しいステッチャオブジェクトが作成され（ステップ６８０と同様）、メモリ１８０内に構成されたアクティブステッチャオブジェクトのリストに追加される。ステッチャオブジェクトは、以下において「ステッチャオブジェクトＸ」と称される。
【００９９】
ビットマップフィル色空間及びステッチャオブジェクトＸのビット深度は、オブジェクト１１２０に対応する顔のビットマップの色空間及びビット深度に設定される。次に、顔のビットマップは、ステッチャオブジェクトＸのビットマップフィルと組み合わされる（方法６００のステップ６５５と同様）。図１４Ａに、ステッチャオブジェクトＸに対するビットマップデータ１４１０及びステッチャオブジェクトＸにおいて「ＷＲＩＴＴＥＮ」とマーク付けされた画素１４２０を示す。
【０１００】
例によると、処理される次のオブジェクトは、三角形のビットマップを参照するＰＤＬオブジェクト１１３０である。三角形のビットマップの寸法がステッチングに対する最大許容度を下回るため、三角形のビットマップはステッチングに適していると考えられる（方法６００のステップ６１０に従う）。フィル起動フラグが設定されると、処理は、メモリ１８０内に構成されたアクティブステッチャオブジェクトのリストから適切なステッチャオブジェクトを判定するように直接進む。
【０１０１】
三角形のビットマップオブジェクト１１３０は、ステッチャオブジェクトＸと互換性があることがわかる（ステップ７３０と同様）。三角形のビットマップオブジェクト１１３０が、ステップ７４０において判定されたように、ステッチャオブジェクトＸにおいて不正であるとマーク付けされた画素に全くオーバラップしないため、三角形のビットマップは、ステップ７３５において判定されてもよいステッチャオブジェクトＸのバウンディングボックス内に完全に含まれる。従って、ステッチャオブジェクトＸは、組合せに使用するためのステッチャオブジェクトとして選択される。
【０１０２】
次に、三角形のビットマップオブジェクト１１３０は、ステップ６５５と同様にビットマップフィルステッチャオブジェクトＸと組み合わされる。図１４Ｂに、ステッチャオブジェクトＸに対するビットマップデータ１４３０の状態を示す。図１４Ｂに、ステッチャオブジェクトＸにおいて、三角形のビットマップオブジェクト１１３０を参照するオブジェクトを処理した後に不正であるとマーク付けされた画素１１４０を更に示す。
【０１０３】
処理される次のオブジェクトは、円のビットマップを参照するオブジェクト１１４０である。円のビットマップオブジェクト１１４０の寸法がステッチングに対する最大許容度を下回るため、オブジェクト１１４０はステッチングに適していると考えられる（方法６００のステップ６１０と同様）。フィルアクティブフラグが設定されると、処理は、アクティブステッチャオブジェクトのリストから適切なステッチャオブジェクトを判定するように直接進む（ステップ６５０と同様）。円のビットマップオブジェクト１１４０は、ステッチャオブジェクトＸのバウンディングボックス内に完全に含まれるため（ステップ７３５における判定と同様）、ステッチャオブジェクトＸと互換性があると判定される（ステップ７３０と同様）。しかし、円のビットマップオブジェクト１１４０は、不正であるとマーク付けされたステッチャオブジェクトＸにおいて画素にオーバラップする（ステップ７４０における判定と同様）。従って、ステッチャオブジェクトＸは選択されず、互換性のあるステッチャオブジェクトは判定されない。メモリ１８０内に構成された停止カウントパラメータは増分され（ステップ６６５と同様）、停止閾値パラメータを越えたと判定される（ステップ６７０と同様）。従って、メモリ１８０内に構成されたフィル組合せアクティブフラグはクリアされ、起動カウント及び停止カウントは、ステップ６７５と同様にゼロ（０）に設定される。
【０１０４】
図１５に、方法５００に従って図１１のページ１１１０を処理した結果として得られるディスプレイリスト１５００を示す。ディスプレイリストオブジェクトエントリ１  １５０５は、第１のオブジェクト１１２０に対応し、正方形型のパス１５１０、ステッチャオブジェクトＸからのビットマップフィル１５１５及び合成オペレータＯＶＥＲ１５２０を参照する。
【０１０５】
ディスプレイリストオブジェクトエントリ２  １５２５は、第２のオブジェクト１１３０に対応し、正方形のパス１５３０、ステッチャオブジェクトＸからのビットマップフィル１５１５及び合成オペレータＯＶＥＲ１５３５を参照する。
【０１０６】
ディスプレイリストオブジェクトエントリ３  １５４０は、第３のオブジェクト１１４０に対応し、正方形のパス１５４５、第３のオブジェクト１１４０からの円のビットマップフィル１５５０及び合成オペレータＯＶＥＲ１５５５を参照する。図１５に示されるように、ディスプレイリストオブジェクト１（１５０５）及び２（１５２５）の双方は、同一のフィル情報１５１５を参照する。
【０１０７】
例示的なページ１１１０のタイル型のフィルマップ表現１６１０を図１６に示す。フィルマップタイル１６２０は、（列、行）の形式で表された位置（２、２）にある。図１６の右側に拡張したフィルマップタイル１６２０のコンテンツが示される。図１６に示されるように、フィルマップタイル１６２０における４つの領域１６３０、１６４０、１６５０及び１６６０は、それぞれ、１、２、１及び３の指標を含むフィル合成シーケンスを参照する。
【０１０８】
図１７に、タイル型のフィルマップ１６１０に対するフィル合成シーケンスの表１７１０及び対応するレベル情報１７２０、１７３０を示す。レベル情報＃１  １７２０は、顔のビットマップ１１２０を参照するオブジェクト及び三角形のビットマップ１１３０を参照するオブジェクトの双方に対応するレンダリング情報を含む。レベル情報＃１  １７２０は、ステッチャオブジェクトＸに対するビットマップフィル１５１５及び合成オペレータＯＶＥＲ１５２０を参照する。レベル情報＃２  １７３０は、円のビットマップを参照するオブジェクト１１４０に対応するレンダリング情報を含む。レベル情報＃２  １７３０は、円のビットマップ１５５０を参照し、合成オペレータＯＶＥＲ１５５５を有する。
【０１０９】
フィル合成シーケンスの表１３１０をフィル合成シーケンスの表１７１０と比較すると、例示的なページ１１１０に対してフィル組合せ方法を実行することによりフィル合成シーケンスの数が４から３に減少したことが分かる。レベル情報データの総数が３（１３２０、１３３０、１３４０）から２（１７２０、１７３０）に減少したことが更に分かる。これは、中間タイル型のフィルマップにより必要とされたメモリ使用量の合計が減少したことを意味する。
【０１１０】
図１８は、各々がフィルと関連付けられる複数のオブジェクトと共用中間フィルとを関連付ける方法１８００を示すフローチャートである。方法１８００は、メモリ１８０に常駐し、実行中にプロセッサ１８５により制御される制御プログラム１９０の１つ以上のソフトウェアコードモジュールとして実現されてもよい。上述したように、各オブジェクトは、ページ３１０等のページのページ記述言語（ＰＤＬ）オブジェクトであってもよい。この例において、制御プログラム１９０は、ソフトウェアアプリケーション１３３からページ３１０の記述を受信し、記述をメモリ１８０に格納してもよい。ページ記述におけるオブジェクトは、メモリ１８０内に構成された上述したようなディスプレイリストの形式で第１の共用中間形式ページ表現に配置される。ディスプレイリストの各オブジェクトは、フィルデータ、パスデータ及び合成命令を参照する。更に上述したように、一実現例において、制御プログラム１９０は、何れかのフィルが共用中間フィルに組み合わされるかを判定するようにページ記述言語オブジェクトを処理してもよい。そのような中間フィルは、隣接するフィルと共に複数のオブジェクトにより共用されるフィルである。換言すると、オブジェクトのフィルが互いに近接している場合、中間フィルは、いくつかのオブジェクトのフィルを置換するように作成され、個々のフィルを処理するのと比較して必要とされるリソースを減少する。
【０１１１】
方法１８００はステップ１８０１において開始し、制御プログラム１９０が、第１の複数のオブジェクトのフィルに基づいて共用中間フィルのバウンディング領域（すなわち、バウンディングボックス）を判定するステップを実行する。上述したように、オブジェクトがバウンディングボックスを含む場合、フィルに対するバウンディングボックスは、現在処理されているオブジェクトから判定されてもよい。或いは、フィルに対するバウンディングボックスは、フィルの寸法をページ空間に変換するためにフィルのアフィン変換を使用して判定されてもよく、変形されたポイントのバウンディングボックスを取得してもよい。
【０１１２】
次のステップ１８０３において、制御プログラム１９０は、第１のオブジェクトを共用中間フィルと関連付けるステップを実行する。一実現例において、制御プログラムは、現在処理されているＰＤＬオブジェクトに対応するディスプレイリストエントリのフィル特性を設定することにより、第１のオブジェクトを中間フィルと関連付けてもよい。その後、次のステップ１８０５において、制御プログラムは、第２のオブジェクトを取得するステップを実行する。上述したように、第２のオブジェクトは、「ステッチャオブジェクト」と呼ばれてもよい。
【０１１３】
方法１８００は次のステップ１８０７に継続し、（ａ）第２のオブジェクトのフィルがバウンディング領域内に含まれ、（ｂ）第２のオブジェクトのフィルが第１のオブジェクトのフィルとオーバラップしていない場合に制御プログラム１９０が、第２のオブジェクトのフィルに基づいて共用中間フィルを更新するステップを実行する。最後に、ステップ１８０９において、制御プログラム１９０は、第２のオブジェクトを更新された共用中間フィルと関連付けるステップを実行する。図７及び図８を参照して上述したように、制御プログラム１９０は、方法７００及び方法８００に従って、ステップ１８０７において共用中間フィルを更新してもよく、第２のオブジェクトを共用中間フィルと関連付けてもよい。
【０１１４】
上述した方法の別の実現例において、ステッチャオブジェクトのバウンディングボックスは、ステッチャオブジェクトと組み合わされた第１のビットマップフィルのバウンディングボックスに最初に設定されてもよい。候補フィルのバウンディングボックスとステッチャオブジェクトのバウンディングボックスとの間の距離が所定の最短距離より短い場合、候補フィル及びステッチャオブジェクトは近接していると判定される。候補フィルがステッチャオブジェクトと組み合わされる場合、ステッチャオブジェクトのバウンディングボックスは、ステッチャオブジェクトの元のバウンディングボックス及び候補フィルのバウンディングボックスの双方を含むように拡大される。
【０１１５】
一例として、図１９Ａ及び図１９Ｂに、ステッチャオブジェクトのバウンディングボックス１９１０と候補フィルのバウンディングボックス１９２０とがオーバラップしないことを示す。矢印１９３０により示されたようなステッチャオブジェクトのバウンディングボックス１９１０と候補フィルのバウンディングボックス１９２０との間の距離は、所定の最短距離より短い。この場合、候補フィルはステッチャオブジェクトと組み合わされ、ステッチャオブジェクトのバウンディングボックスは、元のステッチャオブジェクトのバウンディングボックス１９１０及び候補フィルのバウンディングボックス１９２０の双方を含む新しいバウンディングボックス１９４０に更新される。
【０１１６】
或いは、別の実現例において、ステッチングは、平坦なフィルを組み合わせるために使用されてもよい。この場合、平坦なフィルのバウンディングボックスは、ＰＤＬオブジェクトのバウンディングボックスから判定されてもよい。その後、平坦なフィルは、ステッチャオブジェクトに対して平坦なフィル色をビットマップフィルにコピーされたステッチャオブジェクトにコピーすることにより、ステッチャオブジェクトと組み合わされてもよい。
【産業上の利用可能性】
【０１１７】
説明された構成は、コンピュータ及びデータ処理業界、並びに特に画像処理に適用可能である。
【０１１８】
上記の記述は本発明のいくつかの実施形態のみを説明し、本発明の範囲及び趣旨から逸脱せずに、変形及び／又は変更がいくつかの実施形態に対して行なわれてもよい。実施形態は、限定するものではなく例示するものである。
【０１１９】
本明細書に関して、「備える」という言葉は、「主に含むが、単独で必要ではない」、或いは「有する」又は「含む」ことを意味し、「のみから構成される」ことではない。「備える」の語形変化は、それに対応して意味の変化を示す。
【図１Ａ】
0005374567.tif 000002
【図１Ｂ】
0005374567.tif 000003
【図１Ｃ】
0005374567.tif 000004
【図２】
0005374567.tif 000005
【図３】
0005374567.tif 000006
【図４】
0005374567.tif 000007
【図５】
0005374567.tif 000008
【図６】
0005374567.tif 000009
【図７】
0005374567.tif 000010
【図８】
0005374567.tif 000011
【図９】
0005374567.tif 000012
【図１０】
0005374567.tif 000013
【図１１】
0005374567.tif 000014
【図１２】
0005374567.tif 000015
【図１３】
0005374567.tif 000016
【図１４Ａ】
0005374567.tif 000017
【図１４Ｂ】
0005374567.tif 000018
【図１５】
0005374567.tif 000019
【図１６】
0005374567.tif 000020
【図１７】
0005374567.tif 000021
【図１８】
0005374567.tif 000022
【図１９Ａ】
0005374567.tif 000023
【図１９Ｂ】
0005374567.tif 000024