(57)【特許請求の範囲】
【請求項１】
描画属性を有する複数の描画オブジェクトを処理する画像処理装置であって、
描画論理が排他的論理和である第１の描画オブジェクトと、前記第１の描画オブジェクトの描画領域内に描画され且つ描画論理が上書きである第２の描画オブジェクトと、前記第１の描画オブジェクトと形状、色情報、描画位置が同じであり且つ描画論理が排他的論理和である第３の描画オブジェクトとを検出する検出手段と、
前記第１の描画オブジェクトに対して、前記第２の描画オブジェクトと前記第３の描画オブジェクトとを当該順序で重ねて描画することにより、前記第１の描画オブジェクトと前記第２の描画オブジェクトと前記第３の描画オブジェクトとが合成された第４の描画オブジェクトを生成する生成手段と、を備え、
前記第４の描画オブジェクトは、前記描画領域内で前記第２の描画オブジェクトに対応する領域以外の領域が、前記第１の描画オブジェクトの描画領域と前記第３の描画オブジェクトの描画領域との排他的論理和により排他されている、
ことを特徴とする画像処理装置。
【請求項２】
前記第４の描画オブジェクトの描画属性を、前記第１の描画オブジェクトの描画属性もしくは前記第３の描画オブジェクトの描画属性に変更する属性変更手段、をさらに備えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記属性変更手段により描画属性が変更された前記第４の描画オブジェクトを記憶するオブジェクト記憶手段、をさらに備えることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記属性変更手段により描画属性が変更された前記第４の描画オブジェクトを画像上に描画する描画手段、をさらに備えることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
前記画像上での描画位置に対応付けて各描画オブジェクトの描画属性を記憶する属性記憶手段、をさらに備え、
前記属性記憶手段は、前記描画手段により前記画像上に描画された前記第４の描画オブジェクトの描画属性を記憶する、ことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
描画属性を有する複数の描画オブジェクトを処理する画像処理装置において実行される画像処理方法であって、
前記画像処理装置の検出手段が、描画論理が排他的論理和である第１の描画オブジェクトと、前記第１の描画オブジェクトの描画領域内に描画され且つ描画論理が上書きである第２の描画オブジェクトと、前記第１の描画オブジェクトと形状、色情報、描画位置が同じであり且つ描画論理が排他的論理和である第３の描画オブジェクトとを検出する検出工程と、
前記画像処理装置の生成手段が、前記第１の描画オブジェクトに対して、前記第２の描画オブジェクトと前記第３の描画オブジェクトとを当該順序で重ねて描画することにより、前記第１の描画オブジェクトと前記第２の描画オブジェクトと前記第３の描画オブジェクトとが合成された第４の描画オブジェクトを生成する生成工程と、を有し、
前記第４の描画オブジェクトは、前記描画領域内で前記第２の描画オブジェクトに対応する領域以外の領域が、前記第１の描画オブジェクトの描画領域と前記第３の描画オブジェクトの描画領域との排他的論理和により排他されている、
ことを特徴とする画像処理方法。
【請求項７】
請求項１乃至５のいずれか１項に記載の画像処理装置の各手段としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力された描画オブジェクトをビットマップへ展開する際に、該描画オブジェクトに対応する属性情報を作成する画像処理方法及び画像処理装置に関する。
【背景技術】
【０００２】
一般に、高画質出力を可能とする、プリンタ等の画像出力デバイスにおいては、ホストコンピュータ側からドライバ経由で描画命令を受けて、ＲＧＢ計２４ビットの多値ビットマップを、該デバイス内部にある多値ビットマップ領域へ展開する。全ての描画命令の処理が終了した時点で、該多値ビットマップ領域全体に対して色処理（色補正、色変換、ｎ値化等）を施すことによって、デバイスに依存した色空間上のビットマップへの変換を行っていた。
【０００３】
しかしながら、展開された多値ビットマップは、特にその属性情報を保持するものではなかった。そのため、任意のピクセルについて、それがどのような描画オブジェクト（例えば、グラフィック、文字、イメージ等）として描画されたかを判別することができず、ピクセルに最適な色処理を施すことは困難であった。
【０００４】
そこで、任意のピクセル毎に最適な色処理を可能とする方法として、全てのピクセルに対して属性情報を持たせる方法が知られている。例えば、最も単純な方法としては、ＲＧＢ計２４ビットから構成される１ピクセルに対して、更に属性情報（Attribute）用に８ビットを確保することによって、１ピクセルあたりＲＧＢ＋Ａの計３２ビットとして処理する方法がある。また、１ピクセルはＲＧＢ２４ビットのままとし、別領域に属性情報用メモリ（以下、属性情報格納領域）を確保する方法がある。このような、属性情報格納領域を用いた色処理の概念を図３に示す。
【０００５】
図３によれば、ＰＤＬデータを解析して描画オブジェクトを作成し、これを描画する際に、ＲＧＢのラスタイメージデータと属性情報を作成し、ピクセルごとの色変換処理を行う際に、該ピクセルに対応する属性情報を参照して、適切な処理を振り分ける。例えば、属性がグラフィックであればグラフィックに適した色変換処理を行い、属性がイメージであればイメージに適した色変換処理を行うように制御する。これにより、全てのピクセルに対して適切な色変換処理を施すことが可能となる。この方法によれば、多値ビットマップ領域内のピクセルが更新されるたびに、該ピクセルに対応する属性情報を格納する属性情報格納領域も更新される。
【０００６】
このような、属性情報格納領域を確保して属性情報を決定する方法として、特にオブジェクトの重なりを考慮した方法が知られている。該方法によれば、描画前にオブジェクトの重なり方から最前面に来るオブジェクトを判断して、該最前面のオブジェクトがもつ描画属性を前記属性情報格納領域へ書き込むことを、ピクセル単位で行う（例えば、特許文献１参照）。
【特許文献１】特開２００２−２９７１２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したように最前面のオブジェクトを考慮する方法によれば、描画アルゴリズムがスキャンラインモデルに基づくレンダラのように、描画前にピクセル単位で最前面にくる描画オブジェクトを判別する場合であれば、最適な処理を行うことができる。
【０００８】
しかしながら、描画アルゴリズムがペインターズモデルに基づいているレンダラであれば、レンダラに送られてきた描画オブジェクトをその送られてきた順番に従って描画していくことになる。つまり、ペインターズモデルに基づくレンダラにおいては、スキャンラインモデルに基づくレンダラのように、描画前にピクセル単位で最前面にくる描画オブジェクトを判別して描画を実行する、ということは行わない。従ってこの場合、属性情報格納領域についても、レンダラに送られてきた順番に従って、描画オブジェクト単位で上書き更新されることになる。そのため、複数の描画オブジェクトと下地との間で指定されされる透過処理が行われた場合に、以下に示すような不具合が生じてしまうことがあった。
【０００９】
例えば図４に示すように、オブジェクトの描画属性がそれぞれ、特になし、イメージ、グラフィックである領域を下地（デスティネーション）に重ねる場合を考える。この場合、ペインターズモデルに基づいて実際に作成された属性情報格納領域４０１の内容が、理想的に更新された属性情報格納領域４０２の内容とは異なることがある。同図においては、特に４０３の領域について相違が発生し、すなわち、領域４０３について属性情報格納領域の内容が正しく更新できていないことになる。
【００１０】
このように、ペインターズモデルによる描画オブジェクトの重ね合わせを行う際に、オブジェクトの属性情報が理想的に更新されないことにより、それぞれの属性に対して適切な色処理が行えないという問題が発生する。
【００１１】
このような問題が発生する要因について、図５を用いてさらに詳細に説明する。
【００１２】
図５は、下地５０１に対し、排他的論理和の論理描画をもつ描画オブジェクト５０２、上書き（あるいは透過）の論理描画をもつ黒単色の描画オブジェクト５０３、排他的論理和の論理描画をもつ描画オブジェクト５０４、を順次重ね描画する様子を示している。なお、５０２と５０４は全く同一の描画オブジェクトである。以下、説明の簡便のために、描画オブジェクト５０２，５０３，５０４を順次、第１，第２，第３の描画オブジェクトと称する。
【００１３】
図５においてはまず、同図最上段に示されるように、描画属性が全てイメージである下地５０１に対しては第１の描画オブジェクト５０２が排他的論理和として重ねられる。このとき、属性情報格納領域に対しては第１の描画オブジェクト５０２の描画属性（グラフィック）が上書きされる。これにより、同図中段に示されるように、下地５０１および属性情報格納領域に対し、第１の描画オブジェクト５０２に対応する領域が更新される。
【００１４】
そして次に、黒単色の第２の描画オブジェクト５０３が上書きとして重ねられることによって、同図下段に示されるように、下地５０１および属性情報格納領域に対し、第２の描画オブジェクト５０３に対応する領域が上書き更新される。
【００１５】
そして最後に、第３の描画オブジェクト５０４が排他的論理和として重ねられ、これにより、第１〜第３の描画オブジェクト５０２〜５０４を順番に描画したことになる。これにより、最終的な描画結果として、下地５０１に対し、第１の描画オブジェクト５０２（あるいは第３の描画オブジェクト５０４）を第２の描画オブジェクト５０３の形状に透過する処理と同等の描画結果を得ることができる。しかしながら属性情報格納領域については、第２の描画オブジェクト５０３の形状に対して、最後に第３の描画オブジェクト５０４の描画領域が上書きされるため、属性情報が正しく更新されない。
【００１６】
更に、第１〜第３の描画オブジェクト５０２〜５０４のそれぞれから上記のような透過処理を行うことを描画前に判断することはできないため、特許文献１に示したような方法を透過処理に対して適用することはできない。
【００１７】
本発明は、上述した問題を解決するためになされたものであり、以下の機能を実現する画像処理方法および画像処理装置を提供することを目的とする。すなわち、複数の描画オブジェクトで透過処理を表現する複数の描画オブジェクトを順次展開してビットマップデータを更新する際に、該ビットマップデータの画素ごとの属性情報の適切な更新を可能とする。
【課題を解決するための手段】
【００１８】
本発明に係る画像処理装置は、描画属性を有する複数の描画オブジェクトを処理する画像処理装置であって、描画論理が排他的論理和である第１の描画オブジェクトと、前記第１の描画オブジェクトの描画領域内に描画され且つ描画論理が上書きである第２の描画オブジェクトと、前記第１の描画オブジェクトと形状、色情報、描画位置が同じであり且つ描画論理が排他的論理和である第３の描画オブジェクトとを検出する検出手段と、前記第１の描画オブジェクトに対して、前記第２の描画オブジェクトと前記第３の描画オブジェクトとを当該順序で重ねて描画することにより、前記第１の描画オブジェクトと前記第２の描画オブジェクトと前記第３の描画オブジェクトとが合成された第４の描画オブジェクトを生成する生成手段と、を備え、前記第４の描画オブジェクトは、前記描画領域内で前記第２の描画オブジェクトに対応する領域以外の領域が、前記第１の描画オブジェクトの描画領域と前記第３の描画オブジェクトの描画領域との排他的論理和により排他されている、ことを特徴とする。
【発明の効果】
【００２１】
上記構成からなる本発明によれば、複数の描画オブジェクトで透過処理を表現する複数の描画オブジェクトを順次展開してビットマップデータを更新する際に、該ビットマップデータの画素ごとの属性情報を適切に更新することが可能となる。
【発明を実施するための最良の形態】
【００２２】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００２３】
＜第１実施形態＞
●装置構成
図１は、本実施形態における印刷装置としてのプリンタの構成を示すブロック図である。同図に示すように本実施形態のプリンタ１００は、プリンタコントローラ部１０３と、プリンタエンジン部１０５と、パネル部１０４とを備える。
【００２４】
プリンタコントローラ部１０３は、ホストコンピュータなどの外部機器１０１からコードデータ（ＥＳＣコードや各種ページ記述言語（ＰＤＬ）等）が入力され、そのコードデータを解析することによってイメージデータ（ページ情報）を生成する。生成されたイメージデータは、不図示のインタフェースを介してプリンタエンジン部１０５に送信される。
【００２５】
プリンタエンジン部１０５では、電子写真プロセスにより、プリンタコントローラ部１０３によって生成されたイメージデータが示す画像を、用紙上に形成する。プリンタエンジン部１０５には、画像形成に機械的に関わる各機構と、それら各機構による各印字プロセス処理（例えば給紙処理等）に関する制御を行うエンジン制御部と、が含まれている。またパネル部１０４は、ユーザとのインタフェーイスを司り、ユーザがプリンタ１０２に対する所望の動作を指示するための入力操作を行う操作部を構成する。
【００２６】
次に、プリンタコントローラ部１０３の構成について、図２を用いて説明する。プリンタコントローラ部１０３は、プリンタコントローラ部１０３全体を制御するためのＣＰＵ２０７と外部機器１０１との間でやり取りされる信号の入出力部を構成する。またプリンタコントローラ部１０３は、外部機器１０１との間の通信制御を行うホストＩ／Ｆ部２０２を有している。ホストＩ／Ｆ部２０２には、外部機器１０１から送出された印刷データを入力する入力バッファ、及び外部機器１０１へ送出する信号を一時的に保持する出力バッファが設けられている。
【００２７】
ホストＩ／Ｆ部２０２を介して入力されたコードデータは、画像データ発生部２０３に与えられる。画像データ発生部２０３は、入力されたコードデータに基づき、プリンタエンジン部１０５が処理可能なビットマップデータ（イメージデータ）の作成を行う。ここで作成されたビットマップデータは画像メモリ２０４に格納される。
【００２８】
ＣＰＵ２０７は、ＲＯＭ２１９に格納されている制御コードに従って、描画オブジェクト作成部２０９で描画オブジェクトを作成するとともに、描画論理判別部２１０で特定の描画論理の判別を行う。そして、ＲＡＭ２２０内のオブジェクト格納部２１４に描画オブジェクトを登録する。ＣＰＵ２０７はまた、オブジェクト格納部２１４に登録した描画オブジェクトを描画処理部２１１で描画してラスタ画像を生成するとともに、属性情報格納領域更新部２１３で属性情報格納領域部２１５の情報を更新する。そしてＣＰＵ２０７は、ＲＯＭ２１９に格納されている制御コードに従って、生成したラスタ画像の表示色を、色変換処理部２１２において属性情報格納領域部２１５の情報に基づき、ＲＧＢからＣＭＹＫへ展開する。
【００２９】
上述したように、描画オブジェクト作成部２０９で作成された描画オブジェクトは、ＲＡＭ２２０に設けられたオブジェクト格納部２１４に格納される。ＲＡＭ２２０にはまた、属性情報格納領域部２１５、オブジェクトＩＤ２１６、ラスタメモリ２１７、作業領域部２１８が設けられている。
【００３０】
属性情報格納領域部２１５には、上述した色処理を最適に行うために必要となる、画素ごとの属性情報が格納される。オブジェクトＩＤ２１６には、描画するオブジェクトのＩＤ（識別情報）が格納される。ラスタメモリ２１７には、オブジェクト格納部２１４に格納されたオブジェクトを展開するために必要な領域が格納されている。作業領域部２１８には、ＣＰＵ２０７がその他の作業で使用する領域が格納されている。
【００３１】
画像メモリ２０４に格納されているビットマップデータは、ＤＭＡ制御部２０６によって読み出しが制御されるが、このＤＭＡ制御部２０６による制御は、ＣＰＵ２０７からの指示に基づいて行われる。
【００３２】
画像メモリ２０４から読み出されたビットマップデータは、エンジンＩ／Ｆ部２０５を介してビデオ信号としてプリンタエンジン部１０５に転送される。エンジンＩ／Ｆ部２０５には、プリンタエンジン部１０５へ転送するビデオ信号を一時的に保持する出力バッファと、プリンタエンジン部１０５から送出された信号を一時的に保持する入力バッファ（不図示）が設けられている。すなわちエンジンＩ／Ｆ部２０５は、プリンタエンジン部１０５とプリンタコントローラ部１０３との間でやり取りされる信号の入出力部を構成するとともに、プリンタエンジン部１０５との間の通信制御を行う。
【００３３】
パネル部１０４からの操作入力に基づくモード設定に関する指示などは、パネルＩ／Ｆ部２０１を介して入力される。パネルＩ／Ｆ部２０１は、パネル部１０４とＣＰＵ２０７との間のインタフェースを構成する。
【００３４】
ＣＰＵ２０７は、パネル部１０４から指示されたモードに応じて、上述した各ブロックに対する制御を行う。この制御は、ＲＯＭ２１９に格納されている制御プログラムに基づいて実行される。なお、ここで制御プログラムとしては、描画オブジェクト作成部２０９、描画論理判別部２１０、描画処理部２１１、色変換処理部２１２、属性情報格納領域更新部２１３、を含む。これらＲＯＭ２１９に格納されている制御プログラムは、システムクロックによってタスクと称されるロードモジュール単位に時分割制御を行うためのＯＳと、このＯＳによって機能単位に実行制御される複数のロードモジュールとから構成される。このロードモジュールを含む制御プログラムは、必要に応じてＥＥＰＲＯＭ（不揮発性メモリ）２０８に格納される。
【００３５】
上述したＣＰＵ２０７を含む各ブロックはシステムバス２２１に接続され、ＣＰＵ２０７から各ブロックへのアクセスを可能としている。システムバス２２１は、アドレスバスとシステムバスとから構成される。
【００３６】
描画処理部２１１では、ペインターズモデルに基づいた構成により描画を行っている。ここで、図１３を用いてペインターズモデルについて説明する。
【００３７】
まず、オブジェクト格納部２１４には、ＰＤＬ解析を終え、描画オブジェクト作成部２０９で作成された描画オブジェクトが順次登録される。図１３に示すように、全ての描画オブジェクトの登録が終了した時点で、オブジェクト格納部２１４には、描画オブジェクト１３０２、１３０３、１３０４が順番に登録されているとする。この場合、ペインターズモデルでは、以下のように描画処理を行う。下地１３０１に対して、まず描画オブジェクト１３０２を描画して下地１３０５を作成する。次に、描画オブジェクト１３０３を下地１３０５へ描画して下地１３０６を作成する。そして最後に、描画オブジェクト１３０４を下地１３０６へ描画して下地１３０７を作成する。
【００３８】
このようにペインターズモデルによれば、オブジェクト格納部２１４に登録された順番に従って、描画オブジェクトの上書き描画が行われる。すなわちペインターズモデルによれば、描画前にピクセル単位で、どのオブジェクトが最前面に来るかを判断することは行わない。
【００３９】
●オブジェクト格納処理
以下、本実施形態のプリンタコントローラ部１０３内のオブジェクト格納部２１４に対するオブジェクト格納処理について、図７〜図１０のフローチャートを用いて説明する。本実施形態では、図７〜図９の処理によって、複数の描画論理からなる透過処理を判別し、さらに図１０の処理によって、透過処理を構成する描画オブジェクトについて、それぞれの描画属性を更新してオブジェクト格納部２１４に格納する。
【００４０】
まず図７〜図９のフローチャートに示す処理によって、排他的論理和、上書き、排他的論理和の３種類の描画オブジェクトからなる透過処理（透過オブジェクト群）が抽出される。
【００４１】
まず図７を用いて、１番目の描画オブジェクトが排他的論理和の描画論理を持っているか否かを判別する第１の判別処理について説明する。まずステップＳ７０１では、外部機器１０１からデータを受信し、該データの解析（例えばＰＤＬ解析）を行う。ここで、データを解析した結果、データが終了したことが分かれば、ステップＳ７０２の分岐から本判別処理を終了させる。ステップＳ７０１でデータが終了していなければ、ステップＳ７０２からステップＳ７０３へと処理を進める。ステップＳ７０３では、ステップＳ７０１での解析結果に基づいて、受信データを描画オブジェクト（描画処理部２１１が扱える中間データ）に変換する。このとき、該描画オブジェクトは、その描画属性を含んでいる。
【００４２】
そしてステップＳ７０４では、描画論理判別部２１０が、該描画オブジェクトが排他的論理和の描画論理を持っているか否かを判断する。該描画オブジェクトが排他的論理和の描画論理を持っていないと判断された場合は、ステップＳ７０６で該描画オブジェクトはオブジェクト格納部２１４に登録され、処理はステップＳ７０１へ戻る。一方、該描画オブジェクトが排他的論理和の描画論理を持っている場合には、ステップＳ７０５で該描画オブジェクトを第１の描画オブジェクトとして作業変数Ｗ1にセットし、処理を図８のステップＳ８０１へ進める。
【００４３】
次に図８を用いて、２番目の描画オブジェクトが上書きの描画論理をもっているか否かを判別する第２の判別処理について説明する。まずステップＳ８０１では、外部機器１０１からデータを受信し、該データの解析を行う。ここで、データを解析した結果、データが終了したことが分かれば、ステップＳ８０２の分岐からステップＳ８０８へ処理を進め、作業変数Ｗ1をオブジェクト格納部２１４に登録して、本判別処理を終了させる。ステップＳ８０１でデータが終了していなければ、ステップＳ８０２からステップＳ８０３へと処理を進める。ステップＳ８０３では、ステップＳ８０１での解析結果に基づいて、受信データを描画オブジェクトへデータに変換する。このとき、該描画オブジェクトは、その描画属性の情報を含んでいる。
【００４４】
そしてステップＳ８０４では、描画論理判別部２１０が、該描画オブジェクトが上書きの描画論理を持っている否かを判断する。ここで、該描画オブジェクトが上書きの描画論理を持っていないと判別された場合には、ステップＳ８０７で作業変数Ｗ1と該描画オブジェクトをオブジェクト格納部２１４に登録して、ステップＳ７０１へ処理を進める。一方、該描画オブジェクトが上書きの描画論理を持っている場合には、ステップＳ８０５へと処理を進める。
【００４５】
ステップＳ８０５では描画論理判別部２１０において、該描画オブジェクトの描画される領域が作業変数Ｗ1の描画領域内に含まれるか否かを判別する。ここで含まれていないと判別された場合、やはりステップＳ８０７に進んで作業変数Ｗ1と該描画オブジェクトをオブジェクト格納部２１４に登録して、ステップＳ７０１へ処理を進める。一方、該描画オブジェクトが描画される領域が作業変数Ｗ1の描画領域内に含まれていると判別された場合、ステップＳ８０６へ処理を進める。ステップＳ８０６では、該描画オブジェクトを第２の描画オブジェクトとして作業変数Ｗ2にセットし、処理を図９のステップＳ９０１へ進める。
【００４６】
次に図９を用いて、３番目の描画オブジェクトが排他的論理和の描画論理を持っているか否かを判別する第３の判別処理について説明する。まずステップＳ９０１では、外部機器１０１からデータを受信し、該データの解析を行う。ここで、データを解析した結果、データが終了したことが分かれば、ステップＳ９０２の分岐からステップＳ９０９へ処理を進め、作業変数Ｗ1、Ｗ2をオブジェクト格納部２１４に登録して、本判別処理を終了させる。ステップＳ９０１でデータが終了していなければ、ステップＳ９０２からステップＳ９０３へと処理を進める。ステップＳ９０３では、ステップＳ９０１での解析結果に基づいて、受信データを描画オブジェクトに変換する。このとき、該描画オブジェクトは、その描画属性の情報を含んでいる。
【００４７】
そしてステップＳ９０４では、描画論理判別部２１０が、該描画オブジェクトが排他的論理和の描画論理を持っているか否かを判断する。ここで、該描画オブジェクトが排他的論理和の描画論理を持っていないと判断された場合は、ステップＳ９０７で作業変数Ｗ1、Ｗ2と、該描画オブジェクトをオブジェクト格納部２１４に登録し、処理はステップＳ７０１へ戻る。一方、該描画オブジェクトが排他的論理和の描画論理を持っている場合には、ステップＳ９０５へ処理を進める。
【００４８】
ステップＳ９０５では、描画論理判別部２１０が、該描画オブジェクトが作業変数Ｗ１と同じ描画オブジェクトであるか否か、すなわち、第１の描画オブジェクトと形状、色情報、描画位置が同じであるか否かを判別する。ここで同じではないと判別された場合にはステップＳ９０７へ進み、作業変数Ｗ1、Ｗ2と該描画オブジェクトをオブジェクト格納部２１４に登録し、ステップＳ７０１へ戻る。一方、該オブジェクトが作業変数Ｗ1と同じ描画オブジェクトであると判別された場合には、ステップＳ９０６へ処理を進める。
【００４９】
ステップＳ９０６では、該オブジェクトの描画される領域が作業変数Ｗ1の描画領域と一致しているか否か、すなわち、第１の描画オブジェクトと描画位置が一致しているか否かを判別する。ここで一致していないと判別された場合には、ステップＳ９０７で作業変数Ｗ1、Ｗ2と該描画オブジェクトをオブジェクト格納部２１４に登録し、ステップＳ７０１へ戻る。一方、該オブジェクトが描画される領域が作業変数Ｗ1の描画領域と一致していると判別された場合、ステップＳ９０８へ処理を進める。Ｓ９０８では、該描画オブジェクトを第３の描画オブジェクトとして作業変数Ｗ3にセットし、処理を図１０のステップＳ１００１へ進める。
【００５０】
以上の図７〜図９に示した第１〜第３の判別処理によって、排他的論理和、上書き、排他的論理和の３種類の描画オブジェクト（第１〜第３の描画オブジェクト）からなる透過処理（透過オブジェクト群）が抽出され、図１０のステップＳ１００１に進む。なお、この透過処理以外のオブジェクトについては、順次オブジェクト格納部２１４に格納される。
【００５１】
以下、図１０を用いて、図７〜図９の処理によって判別された、排他的論理和、上書き、排他的論理和の３種類の描画オブジェクトからなる透過オブジェクト群に対して、各オブジェクトの描画属性を更新する処理について説明する。この更新により、属性情報格納領域部２１５を適切に更新させることができる。
【００５２】
ここでは、透過処理を構成する排他的論理和、上書き、排他的論理和の３種類の描画オブジェクト（第１〜第３の描画オブジェクト）がそれぞれ、作業変数Ｗ1、Ｗ2、Ｗ3に格納されている。まずステップＳ１００１では、作業変数Ｗ1あるいはＷ3のオブジェクト内に記録されている描画属性を、Ｗ2の描画属性にコピーする。これは、排他的論理和−上書き−排他的論理和からなる透過処理においては、描画される領域は真ん中の描画オブジェクトに従うが、描画されるオブジェクトは最初または最後の描画オブジェクトであるためである。すなわち、描画属性としては最初または最後の属性を反映させる必要があるためである。
【００５３】
次にステップＳ１００２において、作業変数Ｗ1及びＷ3の描画属性を、「属性情報を格納領域に書き込まない」属性とする。そしてステップＳ１００３で、作業変数Ｗ1、Ｗ2、Ｗ3をオブジェクト格納部２１４に登録した後、図７のステップＳ７０１へ戻る。
【００５４】
以上の処理によって、透過処理を構成する３種類の描画オブジェクトが、それぞれの描画属性を更新した後、オブジェクト格納部２１４に格納される。
【００５５】
●属性情報格納領域更新処理
本実施形態では、上述した図７〜図１０を用いて説明した処理によってオブジェクト格納部２１４に登録された複数の描画オブジェクトを描画処理部２１１で描画する際に、ラスタメモリ２１７および属性情報格納領域部２１５が適宜更新される。
【００５６】
図１１は、本実施形態における属性情報格納領域部２１５の更新処理を示すフローチャートである。まずステップＳ１１０１において、描画オブジェクトのもつ描画属性が「属性情報を格納領域に書き込まない」属性であるか否かを判別する。このような属性は、透過処理を構成する描画オブジェクトの１枚目および３枚目に対し、上述した図１０のステップＳ１００２においてセットされたものである。描画オブジェクトの描画属性が「属性情報格納領域に書き込まない」である場合には、属性情報格納領域部２１５を更新することなく、そのまま処理を終了する。しかしながらそうでない場合には、属性情報格納領域更新部２１３が、属性情報格納領域部２１５の属性領域格納領域に該描画オブジェクトの描画属性を上書きする。
【００５７】
このように「属性情報を格納領域に書き込まない」属性を判別することにより、属性情報格納領域部２１５の内容が、透過処理を適切に実現するように更新される。
【００５８】
本実施形態において属性情報格納領域部２１５が適切に更新される例を図６に示す。図６においては、上述した図５との比較を容易とするために、同じ参照番号を付す。すなわち、下地５０１に対し、排他的論理和の論理描画をもつ描画オブジェクト５０２、上書き（あるいは透過）の論理描画をもつ黒単色の描画オブジェクト５０３、排他的論理和の論理描画をもつ描画オブジェクト５０４、を順次重ね描画する様子を示している。なお、５０２と５０４は全く同一の描画オブジェクトである。以下、説明の簡便のために、描画オブジェクト５０２，５０３，５０４を順次、第１，第２，第３の描画オブジェクトと称する。
【００５９】
図６においてはまず、同図最上段に示されるように、描画属性が全てイメージである下地５０１に対しては第１の描画オブジェクト５０２が排他的論理和として重ねられ、ラスタメモリ２１７に格納される。しかしながら属性情報格納領域部２１５に対しては、第１の描画オブジェクト５０２の描画属性が「属性情報を格納領域に書き込まない」であるため、上書きがなされない。これにより、同図中段に示されるように、下地５０１は更新されるものの、属性情報格納領域部２１５は更新されない。
【００６０】
そして次に、黒単色の第２の描画オブジェクト５０３が上書きとして重ねられることによって、同図下段に示されるように、下地５０１および属性情報格納領域部２１５に対し、第２の描画オブジェクト５０３に対応する領域が上書き更新される。このとき、第２の描画オブジェクト５０３の描画属性は、予め描画オブジェクト５０２または５０３が有していた描画属性（グラフィック）がコピーされている。
【００６１】
そして最後に、第３の描画オブジェクト５０４が排他的論理和として重ねられることにより、第１〜第３の描画オブジェクト５０２〜５０４を順番に描画したことになる。これにより、最終的な描画結果として、ラスタメモリ２１７では下地５０１に対し、第１の描画オブジェクト５０２（あるいは第３の描画オブジェクト５０４）を第２の描画オブジェクト５０３の形状に透過する処理と同等の描画結果を得ることができる。このとき、属性情報格納領域部２１５については、第２の描画オブジェクト５０３の形状に対して、最後に第３の描画オブジェクト５０４の描画領域の上書きがなされない。したがって属性情報格納領域部２１５には、ラスタメモリ２１７において透過処理として重ねられた描画オブジェクトに応じた形状で、適切な属性情報が格納される。
【００６２】
以上説明したように本実施形態によれば、それぞれが描画属性を有する複数の描画オブジェクトを順次展開して、ビットマップデータおよび該ビットマップデータの画素ごとの属性情報を順次更新する画像処理方法において、以下のような特徴的な機能を有する。すなわち、複数の描画オブジェクトで透過処理を表現する透過オブジェクト群を検出し、該検出された透過オブジェクト群において、予め定められた描画オブジェクトの描画属性を前記属性情報の更新を行わない旨を示す属性に更新することを特徴とする。
【００６３】
したがって、複数の描画論理からなる透過処理を行うような場合であっても、図６に示した例のように描画処理が行われ、属性情報格納領域部２１５を適切な属性情報で更新することができる。従って、描画アルゴリズムがペインターズモデルに基づくレンダラであっても、最適な出力結果を得ることが可能となる。
【００６４】
なお、本実施形態においては、特定の描画オブジェクトの描画属性を「属性情報を格納領域に書き込まない」属性に変更する例を示したが、属性情報格納領域部２１５を更新すべきでない描画オブジェクトについては該更新を禁止するように制御できれば良い。例えば、属性情報格納領域部２１５を更新すべきでない描画オブジェクトについては、属性情報更新禁止のフラグを立てるようにし、実際の描画時に、該フラグに基づく更新制御を行うことも可能である。
【００６５】
＜第２実施形態＞
以下、本発明に係る第２実施形態について説明する。第２実施形態における装置構成は、上述した第１実施形態と同様であるため、説明を省略する。
【００６６】
第２実施形態においても、上述した第１実施形態と同様に、複数の描画論理からなる透過処理を判別し、該透過処理を構成する描画オブジェクトにおける描画属性を更新することによって、属性情報格納領域部２１５の適切な更新を可能とする。第２実施形態においては、この透過処理を構成する描画オブジェクトの描画属性の更新方法が、第１実施形態とは異なる。
【００６７】
●オブジェクト格納処理
以下、第２実施形態のプリンタコントローラ部１０３内のオブジェクト格納部２１４に対するオブジェクト格納処理について、説明する。第２実施形態でも、上述した第１実施形態と同様に図７〜図９のフローチャートに示す処理によって、排他的論理和、上書き、排他的論理和の３種類の描画オブジェクトからなる透過オブジェクト群が抽出される。この処理については説明を省略する。
【００６８】
そしてさらに図１２のフローチャートに示す処理によって、透過オブジェクト群のそれぞれの描画オブジェクトについて、それぞれの属性情報を更新してオブジェクト格納部２１４に格納する。
【００６９】
まずステップＳ１２０１において、作業変数Ｗ1と作業変数Ｗ2の間で、作業変数Ｗ2のもつ描画論理の演算（ここでは上書き）を行い、作成された描画オブジェクトを第４の描画オブジェクトとして作業変数Ｗ4にセットする。そしてステップＳ１２０２では、作業変数Ｗ3と作業変数Ｗ4の間で、作業変数Ｗ3のもつ描画論理の演算（ここでは排他的論理和）を行い、作成された描画オブジェクトを第５の描画オブジェクトとして作業変数Ｗ5にセットする。ここで作業変数Ｗ5にセットされた第５の描画オブジェクトにおいては、結果として作業変数Ｗ2の描画オブジェクトの形状が、透過されずに残っている。
【００７０】
次にステップＳ１２０３では、作業変数Ｗ5において、該透過されていない領域（Ｗ2に対応）をクリップ処理で切り抜き、該切り抜いた領域を第６の描画オブジェクトとして、作業変数Ｗ6にセットする。そしてステップＳ１２０４で、作業変数Ｗ6にセットされた第６の描画オブジェクトについて、その描画属性をＷ1あるいはＷ3の描画属性としてオブジェクト格納部２１４に登録した後、図７のステップＳ７０１へ戻る。
【００７１】
以上の処理によって、透過オブジェクト群を構成する３種類の描画オブジェクトを合成した１つの描画オブジェクトが、その描画属性も適切に更新され、合成オブジェクトとしてオブジェクト格納部２１４に格納される。
【００７２】
なお、第２実施形態における属性情報格納領域部２１５の更新処理は、オブジェクト格納部２１４に最終的に格納された１つの合成オブジェクトを描画すれば良いため、なんら特別な処理を行うものではない。
【００７３】
以上説明したように第２実施形態によれば、複数の描画論理からなる透過処理を行うような場合であっても、該複数の描画オブジェクトを合成した合成オブジェクトを作成しておく。これにより、実際に描画されるオブジェクトの属性と、属性情報格納領域に格納された属性が異なってしまうことがなく、描画アルゴリズムがペインターズモデル基づくレンダラであっても、最適な出力結果をことが可能となる。
【００７４】
なお、本実施形態においては、下地に対する描画論理が排他的論理和−上書き−排他的論理和の組み合わせによる透過処理を検出する例について示したが、本発明で検出される描画パターンはこの例に限定されない。例えば、排他的論理和−論理積−排他的論理和や、論理積−論理和として実現される透過処理等であっても、本発明は同様に適用可能である。
【００７５】
＜他の実施形態＞
本発明は例えば、システム、装置、方法、プログラム若しくは記憶媒体(記録媒体)等としての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、撮影装置、webアプリケーション等）から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００７６】
本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。なお、この場合のプログラムとは、実施形態において図に示したフローチャートに対応したコンピュータ可読のプログラムである。
【００７７】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００７８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
【００７９】
プログラムを供給するための記録媒体としては、以下に示す媒体がある。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD-ROM，DVD-R)などである。
【００８０】
プログラムの供給方法としては、以下に示す方法も可能である。すなわち、クライアントコンピュータのブラウザからインターネットのホームページに接続し、そこから本発明のコンピュータプログラムそのもの(又は圧縮され自動インストール機能を含むファイル)をハードディスク等の記録媒体にダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【００８１】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることも可能である。すなわち該ユーザは、その鍵情報を使用することによって暗号化されたプログラムを実行し、コンピュータにインストールさせることができる。
【００８２】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００８３】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、実行されることによっても、前述した実施形態の機能が実現される。すなわち、該プログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行うことが可能である。
【図面の簡単な説明】
【００８４】
【図１】本発明に係る一実施形態におけるプリンタの構成を示すブロック図である。
【図２】本実施形態におけるプリンタに搭載されているプリンタコントローラの構成を示すブロック図である。
【図３】属性情報格納領域を用いた色処理の概念を示す図である。
【図４】属性情報格納領域に格納される情報が不適切となる例を示す図である。
【図５】属性情報格納領域に格納される情報が不適切となる例を示す図である。
【図６】本実施形態において属性情報格納領域に格納される情報が適切となる例を示す図である。
【図７】本実施形態において透過処理を構成する第１の描画オブジェクトの描画論理判別処理を示すフローチャートである。
【図８】本実施形態において透過処理を構成する第２の描画オブジェクトの描画論理判別処理を示すフローチャートである。
【図９】本実施形態において透過処理を構成する第３の描画オブジェクトの描画論理判別処理を示すフローチャートである。
【図１０】本実施形態において透過処理を構成する第１〜第３の描画オブジェクトの描画論理変更処理を示すフローチャートである。
【図１１】本実施形態の描画時において描画オブジェクトの描画属性による属性情報格納領域の更新処理を示すフローチャートである。
【図１２】第２実施形態において透過処理を構成する第１〜第３の描画オブジェクトの合成処理を示すフローチャートである。
【図１３】一般的なペインターズモデルに基づく描画処理の概念を示す図である。
【図１】
0004944761.tif 000002
【図２】
0004944761.tif 000003
【図３】
0004944761.tif 000004
【図４】
0004944761.tif 000005
【図５】
0004944761.tif 000006
【図６】
0004944761.tif 000007
【図７】
0004944761.tif 000008
【図８】
0004944761.tif 000009
【図９】
0004944761.tif 000010
【図１０】
0004944761.tif 000011
【図１１】
0004944761.tif 000012
【図１２】
0004944761.tif 000013
【図１３】
0004944761.tif 000014