(57)【特許請求の範囲】
【請求項１】
表示するイメージを定義するグラフィックス言語コマンドを受け取り、グラフィックス言語コマンドから、表示するイメージを表す１組のグラフィックス・オーダを作成する、表示のためのグラフィックス情報を含むイメージを作成する装置において、
表示させる対象物についての透明性情報オーダを含むグラフィックス・オーダからビットマップ・イメージを生成するイメージ生成手段を有し、そのイメージ生成手段が、ソース内とパターン内と宛先内の複数ビット画素を処理するラスタ演算モデルと、前記ソース内と前記パターン内と前記宛先内の複数ビット画素を処理するフィルタ演算モデルとを備え、かつ前記ラスタ演算モデルと前記フィルタ演算モデルとが協調動作して前記宛先を所定の方式で修正することを特徴とする表示のためのグラフィックス情報を含むイメージを作成する装置。
【請求項２】
前記ラスタ演算モデルが、ａ）パターン入力値とソース入力値と宛先入力値とに対して実行されてラスタ演算結果を生成する論理演算を定義する所定のラスタ演算を１つの入力値として受け取るラスタ演算論理ユニットを備え、
前記フィルタ演算モデルが、ｂ）フィルタ・パターン入力値とフィルタ・ソース入力値とに対して実行されてフィルタ演算結果を生成する論理演算を定義する所定のフィルタ演算を１つの入力値として受け取るフィルタ演算論理ユニットを備え、
前記装置が、ｃ）前記ラスタ演算論理ユニットと前記フィルタ演算論理ユニットとに結合され、前記フィルタ演算結果に基づいて前記ラスタ演算結果と前記ラスタ演算論理ユニットへの前記宛先入力値とのうちの一方を選択する選択ユニット手段を備えることを特徴とする請求項１に記載の装置。
【請求項３】
前記ラスタ演算モデルが、
ａ）第１のパターン入力値と第１のソース入力値と第１の宛先入力値とに対して実行されてラスタ演算結果を生成する論理演算を定義する所定のラスタ演算を１つの入力値として受け取る第１のラスタ演算論理ユニットと、
ｂ）フィルタ・パターン入力値とフィルタ・ソース入力値とフィルタ宛先入力値とに実行されてラスタ演算結果を生成する論理演算を定義する前記所定のラスタ演算を１つの入力値として受け取る第２のラスタ演算論理ユニットとを備え、
前記フィルタ演算モデルが、ｃ）前記フィルタ・パターン入力値と前記フィルタ・ソース入力値と前記フィルタ宛先入力値とに対して実行されてフィルタ演算結果を生成する論理演算を定義する所定のフィルタ演算を１つの入力値として受け取るフィルタ演算論理ユニットを備え、
前記装置が、
ｄ）前記第１のラスタ演算論理ユニットと前記フィルタ演算論理ユニットとに結合され、前記フィルタ演算結果に基づいて前記ラスタ演算結果と前記第１のラスタ演算論理ユニットへの前記宛先入力とのうちから一方を選択する第１の選択ユニット手段と、
ｅ）前記第２のラスタ演算論理ユニットと前記フィルタ演算論理ユニットとに結合されて、前記フィルタ演算結果に基づいて前記第２のラスタ演算結果と前記第２のラスタ演算論理ユニットへの前記フィルタ宛先入力とのうちから一方を選択する第２の選択ユニット手段と
を備える請求項１に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、表示技術の分野に関し、具体的には、複雑なグラフィックス操作を処理する新規な機構を使用してカラーまたはグレイ・スケール・モニタまたはカラー・レーザ・プリンタあるいは他の連続ラスタ走査装置に送られるカラーおよびグレイ・スケール・データを扱う。
【０００２】
【発明が解決しようとする課題】
本発明は、本発明の技法を使用しない場合に比べて少ないメモリで複雑なグラフィックス・イメージの印刷と表示ができるようにするソフトウェアおよびハードウェア・グラフィックスとメモリ削減技術との継続的発展の一部である。
本発明は、フィルタ演算と呼ぶ新しい演算を使用した連続トーン・データに適用される複雑な論理を扱う。
【０００３】
【課題を解決するための手段】
グラフィックス環境におけるラスタ操作と同時に透明性操作を処理する新規な手法を開示する。これは、フィルタ演算を導入して透明性の効果を得ることによって実現される。フィルタ演算は、グレイスケールおよび連続トーン・カラー・ラスタ演算と協調して機能する。フィルタ演算の導入とそのラスタ演算との協調によって、この、普通なら計算上複雑になる問題を単一のハードウェア回路で処理することが可能にある。この手法の効率性は、モノクロームおよびカラーのレーザ印刷などのリアルタイム応用分野に非常に役立つ。この解決策は、ビデオ表示装置での複雑なグラフィックスの表示にも適用可能である。
【０００４】
【発明の実施の形態】
以下の説明では、まずラスタ演算と透明性について紹介する。次に、この２つの機構を結合する問題を解決する従来技術の手法の難点について説明する。透明性をフィルタ処理として扱うことによって、この問題を異なる観点から見ることができるようになる。この解決策はソフトウエアで効率的であるが、ハードウェアの並列性にも十分に役立ち、したがって従来技術の手法で必要な段階的または順次計算プロセスがなくなる。この解決策について説明し、並列計算を使用して協調結果が得られることを示す高水準回路図を図示する。
【０００５】
図１は、本発明を使用することができる環境を示すシステムのブロック図である。米国特許第５２０４８０４号では、連続同期ラスタ出力装置上に表示するグラフィックス情報を生成する方法および装置が開示されている。そのシステムは、米国特許第５２０４８０４号の図４に図示されており、モノクローム出力装置での印刷用である。本発明は、カラー・イメージとモノクローム・イメージを処理するための、米国特許第５２０４８０４号に記載されているシステムの改良を対象としている。米国特許第５２０４８０４号に記載の基本グラフィックス・オーダを強化してカラーをサポートし、後述するようにフィルタおよびその他の演算のための追加のオーダを定める。ちなみに、米国特許第５２０４８０４号で詳述されているように、コンピュータ・プログラムによって生成されるイメージは、表示または印刷のために処理されるとき、表示または印刷されるイメージに対応する画素を描画する生成コマンドによって表される。米国特許第５２０４８０４号に記載されている発明では、従来の技術とは異なり、これらのコマンドは直接ビットマップに変換されるのではなくグラフィックス・オーダに変換される。グラフィックス・オーダは、対応するビットマップよりも占有メモリがはるかに少ないが、印刷エンジンに対応するのに十分に速い速度でレーザ・プリンタなどの連続同期ラスタ出力装置に送られるビットマップに変換することができる。本明細書の図１は、米国特許第５２０４８０４号の図４と類似している。しかし、本明細書の図１には、その図４に図示されている機能ブロックのすべてが図示されているわけではない。これは、そのようなブロックは、図１のリアルタイム・イメージ生成機構２１として示されている上記図４のリアルタイム・ブリット・プロセッサ３７の改良に主に関係する本発明を理解するためには必要ではないためである。
【０００６】
機能的には、米国特許第５２０４８０４号に記載されている基本オーダに加えられる強化と、本発明の動作に必要なフィルタおよびその他の演算のために定義される追加のオーダは、米国特許第５２０４８０４ではグラフィックス実行ユニット（ＧＥＵ）とも呼ばれているリアルタイム・ブリット・プロセッサ３７に透明性情報を供給する。これには、以下の情報が含まれる。すなわち、（１）２オペランド・フィルタ関数Ｆ（ＰF，ＳF）、または任意選択で３オペランド・フィルタ関数Ｆ（ＰF，ＳF，ＤF）と、（２）ソース・フィルタ・ビットマップＳFと、（３）パターン・フィルタ・ビットマップＰF と、（４）３オペランド・フィルタ関数を使用した場合は宛先ビットマップＤF である。米国特許第５５０２８０４号では、「パターン」の代わりに「ハーフトーン」という用語が使用されており、パターン・フィルタ・ビットマップの代わりにハーフトーン・マスクが使用されている。
【０００７】
具体的には、本発明の動作に必要なフィルタおよびその他の操作のために定義された追加のオーダは、以下の機能を実行する。
0004063918.tif 000002
【０００８】
これらのオーダまたはコマンドに関する詳細は、後で表４に示す正しい計算例に関連して、本発明による協調フィルタ演算およびラスタ演算を実行するために使用可能なハードウェア・コマンド／演算について説明するときに述べる。
【０００９】
図１の各機能ブロック要素は、米国特許第５５０２８０４号（特開平６−１１９１３１）の図４の対応する番号が付された機能ブロック要素と同じ機能を実行する。上記特開平６−１１９１３１の図４を本願の図６として添付し、その説明を最後に以下の通りに追加する。図１のホスト・アプリケーション１１は図４のＰＤＬインタプリタ２１に対応し、前に指摘したように、図１のリアルタイム・イメージ生成機構２１は上記米国特許の図４の実時間ブリット・プロセッサ３７に対応する。本発明を理解するために必要なリアルタイム・イメージ生成機構への追加点については以下で説明する。
【００１０】
以下は、本明細書で使用する様々な用語の定義／説明である。なお、ページ記述言語（ＰＤＬ）は、ビットマップと、半階調の映像と、ポイントのサイズ・向き・陰影及びキャラクタフォントの全ての属性とを完全かつ精密に制御できる指令を定める言語である。
【００１１】
ラスタ・グラフィックス・データ
ラスタ・グラフィックス・データとは、各グリッド要素が画素と呼ばれる矩形グリッドである。一例を図２に示す。グリッドの大きさは幅と高さで表される。画素は、各矩形グリッド内でその＜ｘ，ｙ＞座標（ただし、１≦ｘ≦幅および１≦ｙ≦高さ）で固有に識別することができる。矩形グリッドをＧとすると、画素はＧ内でＧ＜ｘ，ｙ＞として示される。
【００１２】
１つの画素は成分と深さに分解することができる。画素成分は画素に対する原色の影響を表す。モノクローム・プリンタまたは白黒ビデオ表示装置では、各画素は１つの成分しか持たず、その成分は黒色インク（プリンタ）または白色光（表示装置）の量を表す。カラー環境では、画素は通常３個または４個の成分を有する。カラー・ビデオ表示装置は一般に、赤、緑、および青の３成分を有する。このような色成分を有する画素をＲＧＢ画素と呼ぶ。プリンタは通常、シアン、マゼンタ、黄色、および任意選択による黒色の３つまたは４つの成分を有する。このような成分を有する画素をＣＭＹ画素またはＣＭＹＫ画素と呼ぶ。これらのカラー・モデルに加えて、ハイファイ・カラーなどの新しいモデルが登場している。さらに、ＣＩＥ−ＸＹＺ装置独立カラー・スペースの多くの変形などの視覚的でない色を表すその他のモデルもある。本発明は、これらのすべてのモデルに利用することができる。
【００１３】
画素の深さによって、各画素成分が持つことができる識別可能値の数が決まる。典型的な深さは、１、２、４、または８である。画素の深さの値ｄを仮定すると、各成分は２d個の識別可能値を持つ。たとえば、深さが８の画素では各成分は２５６個の識別可能値を持つことができる。これらには、０から２d−１まで順次に番号付けすることができる。
【００１４】
デジタル装置上では、各画素成分は（１ビットが「１」または「０」である）ｄビットを要する２進値として表される。たとえば、値が２０１で深さが８の画素成分は、２進値「１１００１００１」を使用して表される。
【００１５】
論理演算
論理演算は、真理値を１つの真理値にマッピングすることである。真値は真または偽の２つの値のうちの１つをとり、真は「１」で示され、偽は「０」で示される。
【００１６】
ＡＮＤ、ＯＲ、およびＮＯＴという名称の３種類の論理演算がある。本明細書の説明では、それぞれ＆、｜、および〜を使用してこれらの演算子を表す。
【００１７】
複合論理演算は論理演算の任意の組合せである。たとえば、Ｐ、Ｑ、およびＲが真理値である場合、「（（〜Ｐ）＆Ｑ）｜Ｒ）」が複合演算であり、その結果は以下のように求められる。
１．  Ｔ１＝「〜Ｐ」とする
２．  Ｔ２＝「Ｔ１＆Ｑ」とする
３．  Ｔ３＝「Ｔ２｜Ｒ」とする
４．「（（〜Ｐ）＆Ｑ）｜Ｒ）」の最終結果はＴ３である
【００１８】
画素演算
画素演算は、１つまたは複数の等しいサイズの画素の対応するビットに適用される複合論理演算Ｒである。たとえば、それぞれ値「１１００」および「１０１０」を持つ２つの画素Ｐ１およびＰ２を仮定すると、
〜Ｐ１は００１１となり、Ｐ１＆Ｐ２は１０００となり、Ｐ１｜Ｐ２は１１１０となる。
【００１９】
ラスタ演算
ラスタ演算は、１つまたは複数の等しいサイズのラスタ・グラフィック・データ・オペランドの対応する画素の各セットに適用される任意の画素演算Ｒである。マイクロソフト・ウィンドウズ環境ではラスタ演算はＲＯＰと呼ばれ、ヒューレット・パッカードのＰＣＬ５言語の様々な方言では論理演算、インテルｉ９６１ＫＤプロセッサまたはモトローラ６８３２２プロセッサではブール演算と呼ばれる。コンピュータ・グラフィックス処理の範囲内では、オペランドの数は通常、パターン（Ｐ）、ソース（Ｓ）、および宛先（Ｄ）の３つであり、ラスタ演算の結果によってＤが置き換えられる。実際の実施態様では、Ｐは一般にＳより小さく、ＳはＤより小さい。しかし、ＰはＳの上に「タイル」するために使用され、Ｄの有効面積はＳのサイズまでに制限され、したがってオペランドのサイズが等しいとすれば、どのような汎用性も失うことはない。本明細書では、ラスタ演算についてこの３つの従来のコンピュータ・グラフィックス・オペランドを中心に説明する。しかし、一般に、ラスタ演算は任意の数のオペランドに適用可能である。
【００２０】
画素演算ＲとそのオペランドがＤに与える効果を「Ｄ←Ｒ（Ｐ，Ｓ，Ｄ）」で示す。この計算は表１に示すアルゴリズム１によるが、具体的な実施態様は異なってもよい。
【表１】
0004063918.tif 000003
【００２１】
グラフィックス環境ではラスタ演算のシーケンスを使用して複雑なイメージを作成する。ビジネス文書のページには、多くのテキストと１つか２つの図が入っていることがある。あるいは、１つのプレゼンテーションには、陰影付き背景と境界線とクリップアートとテキストが入っていることがある。これらのタイプのページ・イメージは、ラスタ演算のシーケンスを使用してそれぞれのアプリケーションによって作成される。たとえば、まず、背景をペインティングする。その次に、数行のテキストを入れる。次にいくつかのクリップアートを挿入する。これらのステップのそれぞれで異なるラスタ演算を使用して、特定の効果を得ることができる。
【００２２】
宛先は作成するイメージの入れ物であり、一般にはページまたはビデオ表示である。ソースは、宛先に配置する必要があるグラフィカル・オブジェクトである。たとえば、文字、線、多角形、または写真がソースの典型的な例である。パターンは、ソースに適用する効果である。たとえば、矩形ソースに交互に色付けされたボックスを持つパターンを加えることによってチェッカーボードを作成することができる。
【００２３】
モノクローム・ラスタ演算の例
ラスタ演算は深さが１の場合に単純化される。これを２階調モノクロームと呼び、従来のモノクローム・レーザ・プリンタの典型である。ページ上に「Ｏ」などのグレイの文字を配置したいとする。「Ｏ」は周囲の環を示す「１」と内部を示す「０」（ゼロ）で数値的に表される。ページにグレイの「Ｏ」を配置する場合、「Ｏ」がラスタ演算のソースとなる。所望のグレイはパターンとして表されることになる。パターンは、所望のグレイの陰影を生じさせる比率の「１」と「０」の組合せを含む。ページ上に「Ｏ」を配置する場合、「Ｏ」は、たとえば多角形など、前に描画されたオブジェクトの上に配置される。「Ｏ」は、環によって多角形内の対応する画素が置き換えられるが、「Ｏ」の内部に対応する画素の多角形は保持されるようにして配置されることが望ましい。これは通常、次のラスタ演算を使用して実現される。
Ｄ←（Ｓ＆Ｐ）｜（〜Ｓ＆Ｄ）                            ［１］
【００２４】
これによって、ソース（Ｓ）内の「１」がパターン（Ｐ）のグレイを獲得すると同時に、Ｓ内の「０」（ゼロ）は対応する宛先画素を保持することになる。本明細書では、「ビットマップ」という用語を使用して、深さが１で成分が１の特定の場合のラスタ・グラフィックス・データを示すが、ラスタ・グラフィックス・データとはどのような深さまたは成分数の場合にも使用される一般名である。また、深さが１のモノクローム装置上のグレイ値はパターンとして表される。パターンは、「１」の割合がグレイの陰影を表すビットマップである。
【００２５】
ラスタ演算の決定
ラスタ演算には３つのオペランドがあるため、２５６の可能なラスタ演算がある（ｎ個のブール変数間のラスタ演算の数は２**（２**ｎ）または２**８であり、この例ではｎ＝３であるためである）。
【００２６】
どのラスタ演算が適切かを判断するには、３つのオペランドの可能な組合せを書き出して、所与の演算にとって適切なそれらの組合せを選定する必要がある。次に、この選定から複合論理演算を作成することができ、その演算がラスタ演算となる。
【００２７】
表２に、３個のオペランドと８個のデータ値の可能なすべての組合せを示す。これを使用して上記の目的を達成することができる。以下ではグレイの文字の例を使用して実証する。
【表２】
0004063918.tif 000004
【００２８】
まず、３つのオペランドの論理形式を書き出す。論理形式は、「１」が色を有することを意味し、「０」が色がないことを意味するようになっている。前の例では、Ｓが色を持たない場合にＤを保持し、Ｓが色を持つ場合にはＳとＰを適用したいということである。所望の結果を求めるために、表のデータ値部分の８列のそれぞれを調べて、Ｐ、Ｓ、およびＤのどの組合せが望ましいかを選定する。この場合、所望の結果は、Ｓが「１」の場合に常にＳにＰの効果が適用され、それ以外の場合にはＤを保持することである。上記の表を仮定すると、所望の結果は、
１１１０００１０
となる。
【００２９】
この結果内の各「１」について複合論理演算を作成し、「｜」演算を使用してそれらの演算を組み合わせて、組合せ複合論理演算を作成し、次にそれを簡単化する。
この例では、１１１０００１０は
（Ｐ＆Ｓ＆Ｄ）｜（Ｐ＆Ｓ＆〜Ｄ）｜（Ｐ＆〜Ｓ＆Ｄ）｜（〜Ｐ＆〜Ｓ＆Ｄ）
と表すことができ、これは
（（Ｐ＆Ｓ）＆（Ｄ｜〜Ｄ））｜（（Ｐ｜〜Ｐ）＆（〜Ｓ＆Ｄ））
と簡単化することができる。
最後に、（Ｄ｜〜Ｄ）＆（Ｐ｜〜Ｐ）は常に真であるためこの２つを取り除き、  （Ｐ＆Ｓ）｜（Ｄ＆〜Ｓ）
が得られる。
したがって、ラスタ演算は
Ｄ←（Ｐ＆Ｓ）｜（Ｄ＆〜Ｓ）
となり、これは式［１］と同じである。
【００３０】
透明性
宛先はラスタ演算のシーケンスによって作成されるため、所与のラスタ演算は１つまたは複数のオブジェクトがすでに配置されている宛先領域に影響を及ぼす可能性がある。したがって、新しいソース・オブジェクトは宛先内にすでにあるオブジェクトと交わることがある。交差点に沿って宛先オブジェクトをソースが被うようにしたい場合もあれば、上記の例のように、ソースの色を有する部分が宛先を被い、ソースの色のない部分は宛先に影響を与えないようにしたい場合もある。あるいは、ソースのうち、既存の宛先オブジェクトと交わらない部分のみが宛先に配置されるようにしたい場合がある。その他にも多くの場合が考えられる。
【００３１】
これらの効果を実現する仕組みを透明性と呼ぶ。これは、パターンとソースのうちの宛先に適用される部分をさらに決定する、ラスタ演算に適用される二次属性である。これによって、オペランドにおいて色のない画素を適用する方法を表す。透明性の反対語として、不透明性という語がしばしば使用される。
【００３２】
従来のイメージ処理モデルでは、透明性はソースおよびパターン・オブジェクトに付随する属性である。これによって、既存の宛先オブジェクトを優先する効果を実現することが困難になる。この定義を汎化して、宛先の属性として透明性を組み込み、それによってこの制約をなくすことができる。これによって、既存の宛先オブジェクトが被われず、その結果、既存の宛先オブジェクトと交わらないソースの部分だけが宛先に配置されるようにする操作が可能になる。
【００３３】
透明性モデルは、各画素に真理値を割り当て、それによってそれらの真理値に「１」または「０」を使用してそれぞれ「色つき」または「無色」を示す。透明性は真理値に基づく関係であるため、論理演算を適用することができる。
【００３４】
従来のモデル
汎化された定義を紹介する前に、ヒューレット・パッカードのＰＣＬによって提案された従来のモデルについて説明する。このモデルは、４つの透明性モードを定義する。それらは以下の通りである。
１．不透明ソース、不透明パターン（ＯＯ）
２．不透明ソース、透明パターン（ＯＴ）
３．透明ソース、不透明パターン（ＴＯ）
４．透明ソース、透明パターン（ＴＴ）
【００３５】
ソースの透明性によって、宛先に適用したときのソース内の無色画素の効果が決まる。カラー・データで表すと、無色値はＣＭＹまたはＣＭＹＫモデルにおける白、またはＲＧＢモデルにおける黒と同じ値とすることができる。透明の場合、対応する宛先画素はラスタ演算の結果として変化しない。透明でない場合、宛先画素はラスタ演算に従って変化する。同様に、パターンの透明性によってパターン内の無色画素の効果が決まるが、それはソースの色つき画素を使用して適用されたときのみである。ソース内の色つき画素だけがパターン画素によって影響される。影響されたソース画素は、パターンの透明性に応じて透明になる。透明パターンにおける無色画素によって、ソース内の対応する色つき画素が透明になり、それによって宛先が影響を受けなくなる。無色ソース画素はパターンの透明性によって影響されず、ソースの透明性だけが適用される。
【００３６】
前記の例のように、ある形状（たとえば「Ｏ」の環など）の色つき画素だけが宛先に影響を及ぼすようにしたい場合がしばしばある。たとえば、宛先がすでに薄いグレイから成っており、所望の効果は、文字の無色画素（すなわち「Ｏ」の内部）を通して背景が見えるようにして薄いグレイの背景の上に濃いグレイの文字を置くことである場合がある。これが透明性の目的である。
【００３７】
透明性およびラスタ演算
前記の例で実現される効果は、「ＴＯ」の透明性モードとラスタ演算「Ｄ←Ｓ＆Ｐ」を使用して実現することもできる。この透明性モードは、Ｓ内の色のない画素だけがＤに影響を与えることを示す。したがって、文字「Ｏ」の場合、文字の内部は無色であり、その結果、対応する宛先画素が保持される。文字の輪郭部分だけが宛先に影響を与え、これは所望のパターンに従って行われることになる。
【００３８】
深さおよび成分数が１である
画素の深さが１で１画素の成分数が１の場合、ラスタ演算を透明性と組み合わせて新しいラスタ演算を形成することができる。これは、モノクローム・イメージでは、画素の値が「１」または「０」のいずれかであるためである。したがって、透明性は直接、ソースおよびパターンのラスタ・グラフィックス・データ・オペランドに応じて表すことができる。これを行うには、まず、透明性モードを論理表現で指定しなければならない。透明な画素は透明モードに従って以下のように論理的に表現することができる。
１．ＯＯ：「偽」、すなわち、どの画素も透明ではない
２．ＯＴ：「Ｓ＆〜Ｐ」、すなわち、透明画素はＳでは色つきで、Ｐでは無色の画素である
３．ＴＯ：「〜Ｓ」、すなわち、透明画素はＳにおける無色画素である
４．ＴＴ：「〜（Ｓ＆Ｐ）」、すなわち、透明画素はＳまたはＰにおいて無色の画素である
【００３９】
透明性の論理表現を与えた場合、ラスタ演算を透明性と組み合わせる単一の表現を作成することができる。ラスタ演算がＲで透明性表現がＴであるとすると、Ｄに対する効果は２項から成る式で表すことができる。１項は、ＳおよびＰの非透明（または不透明）画素のためにＤに適用されるＲを表す。第２の項は、透明画素に対応するＤの画素を保持する。これは論理的に以下のように書くことができる。
Ｄ←（Ｒ＆〜Ｔ）｜（Ｄ＆Ｔ）                                 ［２］
透明モード「ＴＯ」を使用した前記の「Ｄ←Ｓ＆Ｐ」の例を仮定すると、式［２］を適用して
Ｄ←（Ｓ＆Ｐ＆〜〜Ｓ）｜（Ｄ＆〜Ｓ）が得られる。
これは
Ｄ←（Ｐ＆Ｓ）｜（Ｄ＆〜Ｓ）
に簡単化され、これは最初の例の式［１］と等しい。
【００４０】
４つの透明モードの論理表現と式１を使用して、論理演算と透明性を組み合わせて以下の４つの式にすることができる。
ＯＯ：Ｄ←（Ｒ＆〜偽）｜（Ｄ＆偽）
ＯＴ：Ｄ←（Ｒ＆〜（Ｓ＆〜Ｐ））｜（Ｄ＆（Ｓ＆〜Ｐ））
ＴＯ：Ｄ←（Ｒ＆〜〜Ｓ）｜（Ｄ＆〜Ｓ）
ＴＴ：Ｄ←（Ｒ＆〜〜（Ｓ＆Ｐ））｜（Ｄ＆〜（Ｓ＆Ｐ））
これらは以下のように簡単化することができる。
ＯＯ：Ｄ←Ｒ                                                    ［３］
ＯＴ：Ｄ←（Ｒ＆（〜Ｓ｜Ｐ））｜（Ｄ＆（Ｓ＆〜Ｐ））            ［４］
ＴＯ：Ｄ←（Ｒ＆Ｓ）｜（Ｄ＆〜Ｓ）                              ［５］
ＴＴ：Ｄ←（Ｒ＆（Ｓ＆Ｐ））｜（Ｄ＆〜（Ｓ＆Ｐ））              ［６］
【００４１】
深さまたは成分数が１より大きい場合
前記の結果は論理および論理演算子の周知の代数的関係に基づいていた。しかし、論理は当然ながら２つの真理値の間の式である。上記では、深さを１、１画素の成分を１と仮定していたため、従来の論理を適用して従来のモノクローム出力装置用のモデルが完全であるようにすることができる。
【００４２】
深さまたは成分数が１を超える場合、問題ははるかに複雑になる。この範疇の画素データを複数ビットと呼ぶ。この複雑さは、色を表す値が複数個あるために画素を真理値として表すことができなくなるためである。したがって、ラスタ・グラフィックス・データ・オペランドＰ、Ｓ、およびＤを使用して透明性自体を表すことができなくなる。これは、画素が「１」または「０」であるモノクロームの例とは異なる。
【００４３】
複数ビット画素の問題は、ラスタ演算の概念から透明性の概念を分離し、それぞれについて相互に協調的なモデルを作成することによって独自の方式で解決される。これは、複雑なアルゴリズムを使用してこの２つの概念を結合する従来技術の解決策とは異なる。たとえば、「ＰＣＬ  ５  Ｃｏｌｏｒ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ」（ヒューレット・パッカード、第１版、１９９４年９月、資料番号５９６１−０６３５、５〜１２ページ）を参照されたい。具体的には、従来技術の手法は、各透明モードに固有のアルゴリズムを指定する。これによって、追加の透明性モードを導入したい場合に複雑さが増す。本発明を使用したモデルは、すべての透明性モードに適合する１つのアルゴリズムと、ＯＯ、ＯＴ、ＴＯ、およびＴＴの４つのモードを超える透明性を完全に汎化したモードを有する。
【００４４】
誤った計算の例
この計算モードについて考察する前に、前記で行ったように透明性とラスタ演算を組み合わせて複数ビット画素データのための新しいラスタ演算を作成することができない理由を、一例を挙げて示す。この例を表３に示す。
【００４５】
この例では、ＴＯという透明性モードがある。これは、透明ソースと不透明パターンを意味する。この例の場合、ＣＭＹ画素を使用して、３つの成分すべての値がゼロであるものとして白または無色が定義されるようにすることができる。各成分の深さは４である。ソースは１００％シアンと１００％マゼンタと白（または無色）の４つの画素を有する。１００％とは最大量の色を意味し、これは深さ４では１５である。２進形式では１５は「１１１１」と書く。
【００４６】
透明性モードがＴＯであるため、Ｓだけを使用して透明画素を決定する。Ｓ内では、３番目の画素だけが無色である。したがって、正しい結果は、Ｄの最初の２つの画素にラスタ演算を適用し、３番目の画素ではＤを保持しなければならない。最初の画素にラスタ演算「Ｄ←Ｓ＆Ｐ」を適用することによって＜１１１１，００００，００００＞が得られ、２番目の画素への適用によって＜００００，００００，００００＞が得られる。３番目の画素は保持しなければならないので、３番面の画素のＤの値は＜００００，００００，１１１１＞のままでなければならない。
【００４７】
しかし、その結果として最初の２つの画素が誤りとなる。最初の２つの画素は緑と黄色になる。最後の画素だけが正しい。
【００４８】
これは、組合せ演算の両辺によって誤った画素の内容が求められるために起こる。（Ｓ＆Ｐ）の辺は、非透明画素のためのラスタ演算の効果を表すことを意図したものであるのに対して、（Ｄ＆〜Ｓ）の辺はＳ内の透明画素のためにＤ内の画素を保持することを意図している。したがって、この両方の項が結果に寄与することは決してあってはならない。しかし、この２つの誤った画素の場合、いくつかの画素が透明でなかった場合であってもＤの各画素の黄色が結果で保持された。
【表３】
0004063918.tif 000005
【００４９】
正しい計算の例
論理演算は真理値、すなわち「１」または「０」である値に作用するため、上記の誤った例では画素の概念は捉えられない。したがって、複数ビット画素の場合は色つきと無色という認識が失われる。これは、成分の数に関係なく言える。最初の２つの画素ではＳは色付きであるということによって、それらの画素の結果に「Ｄ＆〜Ｓ」が組み込まれないように抑止しなければならない。逆に、Ｓの３番目の画素は無色であるため、その画素の計算では「Ｓ＆Ｐ」の影響が除外されなければならない。ラスタ演算を透明性モードと組み合わせて３つのオペランド間の１つの演算とすると、この区別が失われる。
【００５０】
Ｓにおける画素のこの分類と、Ｄの結果をどのようにして導き出すべきかを考えて、どのようにして正しい結果を得るかを表４の計算で示す。最初の２つの画素はＳでは色付きであり、したがってＳとＰにラスタ演算を適用してＤを導き出す。Ｓの３番目の画素は無色であるため、Ｄの画素を保持する。
【表４】
0004063918.tif 000006
【００５１】
その他の問題
以上の各例では、Ｓの色付き画素と無色の画素の検出は、ラスタ演算が適用される同じデータから導き出される。しかし、実際の印刷および表示の用途では、ラスタ演算を計算する前にデータにいくつかの画像変形を施される場合がある。これらの画像変形によって、入力値上で透明性演算およびラスタ演算を表すときに複雑化の要因がさらに追加される。
【００５２】
これらの画像変形は次のように大別することができる。
・  調整
・  変換
・  ディザリング
【００５３】
「調整」とは、入力データに特殊効果を加えることである。たとえば、コントラストまたは輝度を追加することである。「変換」は、多くの入力形式のうちの１つの形式の色を取り出して、そのデータを送り先装置が使用する形式にマップする。たとえば、写真はＲＧＢラスタ・グラフィック・データを有する可能性が高いが、プリンタはＣＭＹまたはＣＭＹＫのインクまたはトナーを有する可能性が高い。最後に、「ディザリング」は深さを減らしたり、送り先装置の望ましくない特性（たとえばレーザ・プリンタのハイ・ピッチ・バンディング）を補正したりする処理である。たとえば典型的な写真の深さは８であるのに対して、プリンタは１、２、４、または８の深さを有することがある。ディザリング処理を使用し、ハーフトーン化と呼ばれる処理によって深さを適切に減らす。ディザリングは、色を再編成して、現在のプリンタが持ち込む可能性のある妨害的人為作用を補正するためにも使用することができる。
【００５４】
これらの画像変形はそれぞれ、ラスタ・グラフィックス・データを変更する。その際、それぞれが元々なかった色を画素にもたらしたり、元々は無色ではなかったいくつかの画素を無色にしたりすることがある。
【００５５】
透明性は入力値上で表され、画像変形とは独立して所与のシステムが適用してそれを再生することができる。したがって、色付き画素と無色画素の認識を入力レベルで行わなければならない。
【００５６】
しかし、ラスタ演算は同種データを使用しなければならず、宛先をオペランドとしてだけでなく結果の入れ物としても扱わなければならないため、ラスタ演算は変形されたラスタ・グラフィックス・データに対して行わなければならない。したがって、ＳおよびＰについて表された透明性を使用してラスタ演算を実現するには５個のオペランドが必要である。これらのオペランドは、３個の変形ラスタ・グラフィックス・オペランドＰ、Ｓ、およびＤと、透明性ラスタ・グラフィックス・オペランドである。この透明性オペランドをそれぞれＰTおよびＳTと呼ぶ。これらのオペランドはＰおよびＳの入力形式の色付き画素および無色画素を表す。
【００５７】
ここで、従来のモデルは透明性に関してＰとＳだけを考慮することに留意されたい。これによって「すべての無色の宛先画素をパターン化ソース・カラーで埋める」などという操作が不可能になる。本発明で使用するモデルは、透明性のオペランドとしてＤを導入すると共に、透明性の可能なバリエーションを完全に汎化することによって、この限界を克服する。しかし、これについての論じる前に、従来、ＰTおよびＳTをどのように使用しているかを以下に示す。
【００５８】
以下は、本発明により協調したフィルタ演算およびラスタ演算を行うために使用可能な「オーダ」またはハードウェア・コマンド／命令の説明である。
【００５９】
協調フィルタ演算およびラスタ演算のハードウェア実施態様には、ソフトウェアが１つまたは複数の透明性フィルタと、フィルタとソースまたはパターンとの間にフィルタおよびブール演算とをセットアップするインタフェースが必要である。このソフトウェア・インタフェースは、メモリ内に、イメージを作成する命令またはコマンド（オーダ）も含んでいなければならない。以下ではこの必要なコマンドについて説明した後、所望のイメージを作成するために使用可能なコマンドの使用法を示す例を示す。
【表５】
0004063918.tif 000007
【００６０】
表５で、演算コードｓｅｔ＿ｂｂｍａｐ、ｓｅｔ＿ｂｏｏｌ＿ｄ、ｓｅｔ＿ｂｏｏｌ＿ｈｄ、ｓｅｔ＿ｂｏｏｌ＿ｓｄ、ｓｅｔ＿ｂｏｏｌ＿ｓｈｄ、ｓｅｔ＿ｈｔｂｍａｐ，ｓｅｔ＿ｓｂｍａｐ、およびｂｌｔ２ｂｂ＿ｓｈｄは、米国特許第５２０４８０４号に記載されているコマンドの演算コードである。演算コードｓｅｔ＿ｂｏｏｌ＿ｈｓ、ｓｅｔ＿ｓｍａｓｋ＿ｓａ、およびｓｅｔ＿ｐｍａｓｋ＿ｓａは、本発明を実施するために実施する必要がある新しい操作の演算コードである。これらの新しい演算コード（すなわちこれらの演算コードまたは同様の演算コードによって実行される操作）の実施の詳細は、本明細書の説明に基づけば当業者ならわかるであろう。
【００６１】
必要な基本ラスタ演算は２つある。１つは、ソースと宛先だけを含み、１つはソースとパターンと宛先を含む。ソースを複数の方法で表現することができる場合、各ソース表現について２つの演算を定義することができる。たとえば、ソースはラン・レングス・コード化オブジェクトとして表現される場合がある。２つの別個の演算コードを定義することが望ましい場合もある。どちらの場合も、「ソース、パターン、および宛先を使用してラスタ演算を実行」コマンドは、ソース、宛先、および操作パターンの記憶場所を示すために必要な引数を含む。宛先の高さと幅は必要な引数である。宛先の記憶場所はオフセットまたはｘ、ｙ位置として表すことができるため、コマンドには宛先の起点または「バンド・バッファ」指定が含まれていなければならない。パターンの調整ができるようにするその他のパラメータも含めることができる。
【００６２】
上記の命令を使用して、メモリのフレーム・バッファまたはバンド・バッファ内のオブジェクトを後で出力するためにレンダリングする「オーダ」またはコマンドのリストを作成することができる。表４の例は、以下のコマンドのシーケンスを使用してレンダリングすることができる。かっこ内の項目はコマンドで使用される引数である。
0004063918.tif 000008
【００６３】
ソース・フィルタ・ブール値は、表４に示す例では「００００１０１０」である。
0004063918.tif 000009
【００６４】
ソース・フィルタのアドレスは、表４の例では「０００００１１０」である。ソース・フィルタにはソースの各画素の１ビットが含まれるものとみなす。
0004063918.tif 000010
【００６５】
ラスタ演算で使用するブール値は、この例では「１１０００００」である。
0004063918.tif 000011
【００６６】
剰余パラメータは、パターン（ハーフトーン）の配置を扱う。
【００６７】
透明性はソースが透明でパターンが不透明であることを意味するＴＯであるため、表５に示すコマンドｓｅｔ＿ｐｍａｓｋ＿ｓａは、前記の例では使用しない。しかし、使用するとすればｓｅｔ＿ｐｍａｓｋ＿ｓａコマンドの引数は以下のようになる。
0004063918.tif 000012
【００６８】
パターン・フィルタには、パターンの各画素の１ビットが含まれるものとみなす。
【００６９】
上記の各コマンドのパラメータのほとんどは容易にわかるであろう。機能またはタイプが容易にわからないと思われる引数について以下に説明する。
【００７０】
１．バンド番号およびバンド・バッファ番号：バンドという用語は、イメージ全体より小さいビットマップ・イメージの矩形区画を指す。イメージは多数の小さなバンドにレンダリングされることが多い。レンダリングするすべてのバンドのために単一の表示リスト（オーダ・リスト）を作成する場合、リスト内のラスタ演算コマンドはコマンドを適用する特殊のバンドを指示しなければならない。この特定のバンドをバンド番号と呼ぶ。各バンドに別々の表示リストを作成する場合は、この引数は不要になる。バンド・バッファ番号は、バンド情報を格納するために使用される対応するバッファである。
【００７１】
２．パターン（ハーフトーン）ｘ剰余、ｙ剰余
パターンはオブジェクトに繰り返し適用されてオブジェクトを埋めるかまたはペイントする。これによって、小さなパターンでより大きなオブジェクトの塗りつぶしまたはペイントを行うことができる。オブジェクトの境界線内にパターンを繰り返し適用することをしばしば「タイリング」と呼ぶ。ラスタ演算コマンドの引数で指示しない限り、どのパターンもページ・イメージの左最上部に起点があるものとみなされる。パターンｘ剰余引数およびパターンｙ剰余引数は、宛先と組み合わせた場合にソース・オブジェクトを基準にしたパターンの起点およびタイリングの調整を可能にする。通常の場合、ｘおよびｙ剰余引数はパターンの幅と高さに設定される。この場合、パターンの起点または固定点はページ・イメージの左上隅である。これは、そのパターンがパターンの幅と高さを法としてオブジェクトに適用されることを意味する。ｘ剰余およびｙ剰余に他の値を選定すうことによって、ｂｌｔ２ｂｂ＿ｓｈｄコマンドのユーザは、パターンがパターン内の特定のビット位置から始まるオブジェクトに適用されるように、パターンの起点または固定点を有効に変更することができる。
【００７２】
従来の計算
正しい計算結果を得るために、従来の方法は、各透明性モードに１つずつ順次アルゴリズムまたは複雑な式を定義する。その一例は「ＰＣＬ  ５  ＣｏｌｏｒＴｅｃｈｎｉｃａｌ  Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ」(ヒューレット・パッカード、第１版、１９９４年９月、資料番号５９６１−０６３５）の５〜１２ページに記載されている。
ＯＯ：Ｄ  ←  Ｒ                                                ［７］
ＯＴ：Ｄ  ←  （Ｒ＆（〜ＳT｜ＰT））｜（Ｄ＆〜ＰT＆ＳT））      ［８］
ＴＯ：Ｄ  ←  （Ｒ＆ＳT）｜（Ｄ＆〜ＳT）                        ［９］
ＴＴ：Ｄ  ←  （Ｒ＆（ＳT＆ＰT）｜（Ｄ＆〜（ＳT＆ＰT））      ［１０］
これらは式［３］、［４］、［５］、［６］と類似していることに留意されたい。
【００７３】
この例では、色付き画素が最大値（２d−１）を有し、無色の値が０になるように透明性オペランドＰTおよびＳTをＰ、Ｓ、Ｄの深さまで拡張しなければならない。
【００７４】
従来の手法の問題
従来の計算モデルにはいくつかの基本的問題がある。第１に、透明性モードが４モードに制限されている。したがって、新しい透明性モードを追加するには、そのモードのために新しいアルゴリズムが必要である。確かにソフトウェアのみのシステムではこれはそれほどの作業ではない。しかし、ハードウェアに新しいアルゴリズムを追加するためには、新しいハードウェアを作成する必要がある。したがって、このモデルはハードウェア・アーキテクチャに容易に拡張することはできない。
【００７５】
第２に、このモデルは計算が複雑である。したがって、ハードウェア実施態様とソフトウェア実施態様の両方に過大な処理負担がかかることになる。カラー・レーザ・プリンタで、最大１２８ＭＢ、６００ドット／インチ、４成分および深さ８のレター・サイズのページで、おそらく毎分３〜６ページのリアルタイム要件でページを生成するのに必要な大量のデータを考えた場合、過大な計算によって能力が制限されたり、きわめて高価なプロセッサが必要となると考えられる。
【００７６】
次に、この解決策は低メモリのリアルタイム環境に負担をかける。これは、透明性オペランドがＰ、Ｓ、およびＤと同じ深さでなければならないためである。これには、これらのオペランドを圧縮しなければならないことを意味し、さらにこれはリアルタイム圧縮解除要件に負担をかける。
【００７７】
最後に、この方法は透明性オペランドとして宛先を含まない。ソースのうちの既存のオブジェクトと交わる部分だけが宛先に配置されるように、既存の宛先オブジェクトが被われないようにする操作は、きわめて困難になる。この問題は、宛先の透明性を可能にすることによって解消される。
【００７８】
フィルタ
本発明の解決策は、従来の解決策に伴う問題をすべて克服する。この解決策の基礎は、透明性をフィルタ演算とラスタ演算に分けることである。透明性オペランドとして宛先を含む透明性のモデルを定義する。このモデルは、フィルタおよびフィルタ演算に基づく。ラスタ演算モデルは完全であり、変更されない。最後に、モデルが協調的に機能することができるようにする機構を定義する。
【００７９】
「フィルタ」とは、各画素が１成分を持ち、深さ１を持ち、その値が色付き（「１」）または無色（「０」）を表しているラスタ・グラフィックス・データである。ＰおよびＳの入力形式の色付き画素および無色の画素を表すためにそれぞれＰFおよびＳFで示されたフィルタを使用する。この２つのフィルタを使用して、ＳTおよびＰTの目的にかなう透明性の効果を実現する。
【００８０】
ソースまたはパターンのフィルタは、入力ソースまたはパターンの（すなわち変形が加えられる前の）色付きまたは無色の画素を表す。各フィルタは表６に示すアルゴリズム２によって作成することができる。
0004063918.tif 000013
表６：アルゴリズム２  −  ラスタ・グラフィックス・データ・オペランドのフィルタを決定する
【００８１】
フィルタはＤについても維持され、これをＤF で示す。しかし、ＤがＰ、Ｓ、およびＤに適用されるラスタ演算によって作成されるのとほとんど同様に、このフィルタはＳFおよびＰFから作成される。このようにして、入力パターンおよびソースに関する一連のラスタ演算により、ＤF はＤにおける色付きおよび無色の画素を表す。
【００８２】
フィルタ演算
「フィルタ演算」は、１つまたは複数の等しいサイズのフィルタ内の対応する画素に繰り返し適用される複合論理演算Ｆである。この定義は一般に制限がないが、コンピュータ・グラフィックス処理における適用について、ラスタ演算に関して行ったのとほとんど同じようにして説明する。そのために、３つの等しいサイズのフィルタＰF、ＳF、およびＤF を使用する。
【００８３】
Ｆをその３つのオペランドに適用することを次のように示す。
Ｆ（ＰF，ＳF，ＤF）
【００８４】
フィルタ演算を使用してラスタ演算のどの出力値を宛先に適用させるかを決定する。フィルタ演算によって「１」が得られた場合、それに対応するラスタ演算出力値が対応する宛先画素に適用される。それ以外の場合は、宛先画素は変化しない。「協調フィルタ演算およびラスタ演算」という言い方を使用するのはこの方式による。
【００８５】
フィルタ演算の決定
ラスタ演算の場合と同様に、フィルタ演算には３つのオペランドがあるため、可能なフィルタ演算は２５６ある。フィルタ演算はラスタ演算とほとんど同様にして決定することができる。これを表７を使用して行う。
【００８６】
まず、３つのオペランドの間の論理形式のすべての組み合わせを書き出す。フィルタ演算を決定するには、表のデータ値部の８列をそれぞれ調べて、ＰF、ＳF、およびＤFのどの組み合わせが望ましいかを選定する。
【表７】
0004063918.tif 000014
【００８７】
Ｓ内のすべての色付き画素、またはＰ内の無色の画素に対応するＳ内のすべての色付き画素を表すフィルタを作成したいとする。１１１、１１０、１０１、１００、００１、および０００の組み合わせによってこの結果を得る。これは、論理形式で次のように書くことができる。
（ＰF ＆  ＳF ＆  ＤF）｜（ＰF ＆  ＳF ＆  〜ＤF）｜（ＰF ＆  〜ＳF 
＆  ＤF）｜（ＰF ＆  〜ＳF＆〜ＤF）｜（〜ＰF ＆  〜ＳF ＆  
ＤF）｜（〜ＰF ＆  〜ＳF ＆  〜ＤF）
【００８８】
論理代数これを次のようなフィルタ演算に簡単化することができる。
（〜ＳF｜ＰF）
【００８９】
ＯＴの透明性の式は（Ｓ  ＆  〜Ｐ）であり、上記のフィルタ演算はこの式の反対、すなわち〜（Ｓ  ＆  〜Ｐ）＝（〜Ｓ｜Ｐ）である。
【００９０】
協調フィルタ演算およびラスタ演算
フィルタ演算を使用して、３つのラスタ演算オペランドの色付きおよび無色の画素を求める。ラスタ演算は前述の通りである。このようにして、フィルタ演算はＤの変化に関してふるいの役割を果たす。フィルタ演算によって色付き画素の結果が得られた場合、対応する宛先画素にラスタ演算が適用される。それ以外の場合は、宛先画素は変化しない。
【００９１】
フローチャート
このモデルには、３つのフィルタ・オペランドＰF、ＳF、ＤF と３つのラスタ・オペランドＰ、Ｓ、およびＤの、６つのオペランドがある。この６つのオペランドとフィルタ演算Ｆとラスタ演算Ｒとが与えられたと仮定すると、図３のフローチャートに示すアルゴリズム３は計算モデルを示す。具体的には、フィルタ演算６１ａおよび６１ｂで、Ｄ中のどの画素が変更されたかが決定され、ラスタ演算６３ａおよび６３ｂでＤに対する変更を記述する。図３においては、ＤF をラスタ演算に従って色付きおよび無色の入力ラスタ・グラフィックス・データから汎化しなければならないため、ＤF を更新するためにもラスタ演算を使用する。このモデルでは、ＤFとＤだけが初期値を必要とする。ＤFは無色に初期化され、Ｄは０に初期化される。
【００９２】
例
このアルゴリズムを実証するため、誤った例と同じデータを使用する。表３を想起すると、（Ｃ，Ｍ，０）というソースＳと、（ＣＭＹ，０，ＣＭＹ）というパターンＰと、（Ｙ，Ｙ，Ｙ）という宛先Ｄがある。これから、ＳFを「１１０」、ＰFを「１０１」、ＤFを「１１１」と書くことができる。
【００９３】
透明性モードがＴ０であるため、Ｆを「ＳF」とする。すなわち、Ｆは、ソース自体ではなくフィルタを入力とした透明ソースと不透明パターンを表す論理演算「〜Ｓ」の反対である。
【００９４】
ＦがＳF であるため、フィルタ演算による色付き画素は最初の２画素である。
ラスタ演算
「Ｄ  ←（Ｓ  ＆  Ｐ）」
を最初の２画素に適用し、３番目の画素のＤを保持すると、所望通りの（Ｃ，０，Ｙ）が得られる。また、ＤF の最初の２画素を更新しなければならず、その結果、「１０１」という新しいＤF 値になることにも留意されたい。
【００９５】
従来技術の透明性モードと組み合わせた使用
アルゴリズム３（図３参照）では、フィルタを使用して透明性の効果を生じさせると同時に、ラスタ演算によって非透明操作の効果を記述している。この機構は、フィルタ演算６５をアルゴリズムへの入力として使用する。したがって、１つのアルゴリズムがすべての透明性モードに使用される。難点はフィルタの作成とフィルタ演算の決定である。フィルタ作成の方法は、アルゴリズム２で明示的に示した。論理表を使用してフィルタ演算を作成する方法についても示した。従来の４つの透明性モードに適したフィルタ演算を以下に示す。
ＯＯ：１（または常に色付き）
ＯＴ：〜ＳF｜ＰF
ＴＯ：ＳF
ＴＴ：ＳF  ＆  ＰF
【００９６】
これらのフィルタ演算をアルゴリズム３と共に使用すると、式［７］、［８］、「９］、および［１０］と同じ結果が得られる。
【００９７】
従来技術ではない透明性モードと組み合わせた使用
ラスタ演算を使用してＤのうちの色のない部分を埋めたいとする。これは、〜ＤF のフィルタ演算とアルゴリズム３を使用して実現することができる。これは、従来のモデルでは行うことができない。
【００９８】
これを実現するために、ＤF をＤと共に作成しなければならない。これは、３つのフィルタオペランドにラスタ演算を適用して宛先フィルタを作ることによって行う。宛先フィルタは、パターン、ソース、および宛先と同じ透明性効果を受ける。
【００９９】
ハードウェア実施態様
ソフトウェアの場合、協調フィルタ演算およびラスタ演算計算モデルは、従来の解決策と比べるとはるかに効率的である。さらに、この計算モデルはハードウェア実施態様の場合にも大きな利点がある。この利点は、カラーおよびモノクロームのレーザ・プリンタなどのリアルタイム制約を持つ装置の場合にはさらに大きくなる。これらの利点について述べる前に、３オペランド・モデル用の回路について概説する。
【０１００】
汎用ハードウェア回路
汎用形式の３オペランド・ハードウェア回路図について、図４を参照しながら説明する。この図はアルゴリズム３の実施態様である。ハードウェア回路では、３つの論理演算のすべてを並列して実行することができる。これらの演算は、２つのラスタ演算論理ユニット７１および７３とフィルタ演算論理ユニット７５に含まれる。これらの各ユニットは、実行する複合論理演算を決定する２５６の別個の演算コードを認識する。演算コードによって、３つの入力オペランドの８つの２進組み合わせの結果がどのようになるかを３つのユニットに知らせる。この３つのユニットの出力は１画素単位で同期される。
【０１０１】
第１のラスタ演算ユニットは、パターン、ソース、および宛先のラスタ・グラフィックス・データに適用されたラスタ演算の結果を計算する。第２のラスタ演算ユニットは、パターン、ソース、および宛先のフィルタに適用されたラスタ演算の結果を計算する。
【０１０２】
フィルタ演算ユニットは、フィルタ演算に従って画素の結果が色付きの場合には「１」を出力し、色付きでない場合は「０」を出力する。
【０１０３】
３つの演算論理ユニットの出力値は、選択ユニットと呼ぶマルチプレクサ８１および８３に入力される。選択はフィルタ演算論理ユニット７５の出力値に基づいて行われる。選択ユニット１はラスタ演算論理ユニット１の結果とオペランドＤのうちの一方を選択する。選択ユニット２はラスタ演算論理ユニット２の結果とオペランドＤFのうちの一方を選択する。選択ユニットの出力値が、宛先（Ｄ'）と宛先フィルタ（ＤF' ）の新しい値である。選択回路のこれらの出力値によって、宛先ラスタ・グラフィックス・データと宛先フィルタのそれぞれの画素が置き換えられる。
【０１０４】
従来のモデルに対する利点
表８に、従来のモデルと比較した協調フィルタ演算およびラスタ演算モデルの主な利点を示す。
【表８】
0004063918.tif 000015
【０１０５】
好ましいハードウェア回路
以上、３つのオペランドに対してフィルタを使用することによって透明性の概念を汎化するモデルについて説明したことに留意されたい。ラスタ演算と同様、このモデルは自明の方式で引数を任意の数に拡大可能である。好ましい回路が稼働する装置は典型的には印刷装置および表示装置であるため、好ましい実施形態では、２個を選定する。これらの装置に入力されるデータを生成するために使用されるアプリケーションは通常、パターンとソースに対してのみ透明性を使用するため、好ましい実施形態はパターンとソースのみを含む。これを図５に示す。
【０１０６】
好ましい実施形態は宛先フィルタを含まないため、すなわちフィルタ演算は２つのオペランドしか受け付けないため、好ましい実施形態では宛先フィルタの維持は不要である。したがって、ラスタ演算論理ユニット８７はあるが、第２のラスタ演算論理ユニットはなく、その結果、フィルタ演算論理ユニット７５に付随する入出力がなくなり、その結果、フィルタ演算論理ユニット９１になる。選択ユニット９３は、図４の選択ユニット１または選択ユニット２（要素８１および８３）のようなマルチプレクサである。
【０１０７】
このモデルは１６のフィルタ演算を行う。フィルタ演算を決定するために、表９に示すような２つのオペランドの可能な組み合わせを示す表を作成する。この表は、表７の３つのオペランドの表とほぼ同じである。表９には、２つのパターンおよびソースの画素の４つの可能な組み合わせを表す４列が示されている。
【表９】
0004063918.tif 000016
【０１０８】
たとえば、所望のフィルタは「色付きソース画素に対応する画素にのみラスタ演算を適用する」であるものとする。これは、表の左から１番目と３番目の列、すなわち「１１」と「０１」を使用する。これらを次のように書くことができる。
「（ＰF  ＆  ＳF）｜（〜ＰF  ＆  ＳF）」
【０１０９】
これは、透明性モードＴＯにとって十分なフィルタ演算である「Ｓ」と等価である。
【０１１０】
結論
本発明は、グラフィックス環境におけるラスタ演算と共に透明性操作を同時に処理する新規な手法を提供する。これは、フィルタとフィルタ演算を導入することによって実現される。これらを使用して、ラスタ演算の計算とは別に透明性の効果を決定する。これは、この２つの論理形式を組み合わせて１つの演算にしようとする従来技術の手法とは大きく異なる。
【０１１１】
フィルタ演算とラスタ演算の協調計算モデルであるアルゴリズム３を定義する。これらの演算は互いに独立して計算することができる。協調は、両方の演算の結果を一緒に使用して最終結果を求めることにある。実際には、フィルタ演算の結果によってどのような値が出力されるかが決まるのに対し、ラスタ演算は出力可能な値のうちの１つを出す。
【０１１２】
本発明のモデルは、フィルタ演算を使用して、宛先に作用することができる任意の数のオペランドに汎化する。これは、透明性因子としてオペランドのサブセットしか考慮しない従来のモデルとは異なる。さらに、本発明のモデルは１つのアルゴリズムですべての場合を処理するようになっている。これは、透明性またはフィルタ演算がアルゴリズムへの論理演算入力であるためである。これは、透明性モードごとにアルゴリズムをカスタマイズする従来の手法と大きく異なる。
【０１１３】
本発明の結果として、一定の入力値のセットと、ラスタとフィルタの２つの宛先出力値が与えられば、どのようなフィルタ演算とラスタ演算の対でも扱うことができる汎用回路を規定することが可能である。この図は図３の３つの入力に図示されている。好ましい実施形態は、現在の表示装置およびプリンタの環境であるためと、それらの装置に入力値を供給するアプリケーションが一般にはソースとパターンの透明性しか使用しないために、図４には３つのラスタ・グラフィックス・オペランドと２つのフィルタが使用可能な好ましい実施形態が図示されている。本明細書に記載のように将来、汎化透明性の適用環境になった場合、本発明の手法はその汎化をサポートするのにも十分かつ独自な仕方で適合する。
【０１１４】
以下の説明は、参考のために本願に取り込んだ特開平６−１１９１３１の図４、すなわち本願に添付した図６の説明である。
図形インターフェイスサブシステム２３
図形サービスのための１組の標準的なインターフェイスルーチンである図形インターフェイスサブシステム２３をＰＤＬインタープリータ２１が呼び出す。この図形インターフェイスサブシステムは、宛先がユーザーメモリ２４かバンドバッファ４１であるか否かを基にして直接ブリットを実行できるか否かを判定する。直接ブリットを行うことができないとすると、図形インターフェイスサブシステムはオーダー構成機能３１を呼び出して、記憶されるオーダー３５を作成する。
直接ブリットが行われた後、またはオーダーが作成された後で、図形インターフェイスサブシステムはＰＤＬインタープリータ２１へ戻る。
【０１１５】
直接ブリットプロセッサ２９
この機能は要求によりユーザーメモリ２４内に画素を描き、戻る。この機能は従来技術で知られており、画素を描く指令がユーザーメモリ宛先に作用を及ぼす時に常に実行される。
【０１１６】
オーダー構成３１
オーダー構成処理３１はオーダー３５を生ずる。それらのオーダーは、実時間ブリットプロセッサ３７により行われる実時間ブリット処理中に後で用いるためにメモリに記憶される。以後のオーダーを既知のオーダーに組み合わせることが可能であるようなある種のオーダーに対しては、オーダーに従うためにオーダー短縮機能を呼び出す。好適な実施例においては、少なくとも走査線ビットオーダーが短縮される。他の種類のオーダーを本発明に従って短縮できる。
【０１１７】
オーダー短縮３３
この機能は、１組のオーダーを包まなければならないオーダー構成処理機能により知らされるまで、圧縮できるオーダーの記録を保持する。それから、この機能はそれの内部情報を初期化して、次のセットについての情報の収集を開始する。多くの小さい走査線ブリットオーダーがページ映像の小さい領域に対して動作する場合にこの機能は非常に重要である。その短縮は、場合によってはブリットが重なり合うためにメモリの量を大きく減少する。
【０１１８】
記憶されているオーダー３５
記憶されているオーダー３５は、アプリケーションが要求する映像を作成する指令の内部表現である。
【０１１９】
実時間ブリットプロセッサ３７
ページに対する全ての要求をＰＤＬインタープリータが終わったことを知らせるためにＰＤＬインタープリータが呼び出しを行うと、図形インターフェイスサブシステム２３は実時間処理フェーズを開始する。図形インターフェイスサブシステムは記憶されているオーダー３５を、出力すべき各バンドに対して１回横切る。バンドに作用する全てのオーダーが処理されると、ＤＭＡまたはＦＩＦＯバッファ出力ハードウェアを利用できるならば、出力またはスタートのためにバンドを待ち行列にするために出力インターフェイス４７を呼び出す。別のバンドバッファ４１ａ，４１ｂまたは４１ｃを利用できるものとすると、それは次のバンドを構成する。それ以上のバッファを利用できないとすると、ＰＤＬインタープリータ２１へ戻る図形インターフェイスサブシステム２３へそれは戻る。ＰＤＬインタープリータは入力の解釈と、次のページにおける動作とを続けることができる。この点から、実時間ブリットプロセッサ３７は出力ハードウェア５３により開始される割り込みにより駆動される。
【０１２０】
実時間ブリットプロセッサ３７は、バンドバッファ４１ａ，４１ｂまたは４１ｃに記憶される、プリントすべきページのバンドすなわち部分に対応するビットマップ映像へ記憶されているオーダーを変換する。
【０１２１】
とくに、バンドがプリンタへ供給された時に、割り込みハンドラ４９が出力ハードウェア５３により通知される。そうすると、実時間ブリットプロセッサ３７はそれの処理を続けるために「拡張された割り込みスレッド」として呼ばれる。
【０１２２】
バンドバッファ４１ａ，４１ｂ，４１ｃ
バンドバッファ４１ａ，４１ｂ，４１ｃは、ビッドマップされたページ映像を保持するために用いられるランダムアクセスメモリである。バンド区分が用いられないと、完全なページを保持するために１つのバンドバッファが用いられる。他の場合には、完全なページよりはるかに小さいサイズのバンドバッファが２つまたは３つある。
【０１２３】
メモリマネージャー４３
メモリマネージャー４３は、図形インターフェイスサブシステム２３と、オーダー構成３１と、オーダー短縮３３または実時間ブリットプロセッサ３７からの呼び出しに応じてメモリのブロックを割り当て、割り当てを解除する。メモリマネージャー４３は、記憶されているオーダーとバンドバッファを含んでいるメモリを、他のソフトウェアコンポーネントがメモリのブロックを獲得または放すことが必要な時に採用する必要がある周知のメモリ管理技術に従って管理するソフトウェア機能である。プリントすべき実際のビットマップ映像はハンドバッファ４１からＤＭＡハードウェアまたはＦＩＦＯバッファ５３へ転送されて、出力インターフェイス４７と、出力割り込みハンドラ４９と、実時間ブリット処理３７と、メモリマネージャー４３との動作によりプリンタへ転送する。これに関連して、図６には３つのバンドバッファが示されているが、実際には２つ、３つまたはより多くのバンドバッファを設けることができる。もっとも、ほとんどの場合には２つまたは３つのバンドバッファで十分である。
【０１２４】
出力インターフェイス４７
出力インターフェイス４７は完成されたバンドを実時間ブリットプロセッサから受け、それらのバンドを出力ハードウェア５３へ送り、または、出力ハードウェアがもはや使用中でない時は、出力割り込みハンドラ４９を出力ハードウェアへ送るためにそれらのバンドを待ち行列にする。出力割り込みハンドラ４９の助けにより、出力インターフェイス４７はプリンタ装置からの同期信号をモニタして、バンドを出力へいつ供給できるかを決定する。プリンタ装置は「フレーム同期」信号を送ってページの１番上を示す。「フレーム同期」信号が真になるまで出力インターフェイスはデータを供給できない。
【０１２５】
ＦＩＦＯバッファが出力ハードウェアとして用いられると、ソフトウェアはデータをバンドバッファからＦＩＦＯへ、１度１本の走査線だけ、動かす。ＤＭＡ制御器を同様にして使用できる。黒を書く出力装置へ０を供給することにより、または白を書く出力装置へ１を供給することにより、上余白と左余白がとられる。
【０１２６】
出力割り込みハンドラ４９
プリンタ装置のビデオインターフェイスへのバンドの供給を出力ハードウェアが終わると、その出力ハードウェアは割り込みを生ずる。出力割り込みハンドラは次のバンドをそれの待ち行列から得て、それを出力ハードウェアへ送る。それから、出力割り込みハンドラは以前に終わったバンドバッファを戻すから、実時間ブリットプロセッサはそれを再使用できる。
【０１２７】
出力割り込みハンドラが戻ると、実時間ブリットプロセッサ３７は、図形インターフェイスサブシステムがＰＤＬインタープリータへ戻る前に、別のバンドを描くまで再び動作する。この「拡張された割り込みスレッド」は、種々のＣＰＵのアーキテクチャに応じてそれらのＣＰＵに対して異なったやり方で実現される。「拡張された割り込みスレッド」は、ＣＰＵに割り込むことができるように、優先度の低いＣＰＵの別々のスタックで動作する。
【０１２８】
出力ハードウェア５３
本発明のバンド区分がソフトウェアで実現される時は、プリンタ装置へのビデオ出力を取り扱うためにＦＩＦＯまたはＤＭＡ制御器が用いられる。バンド区分がハードウェアで行われる時は、ＦＩＦＯまたはＤＭＡ制御器出力ハードウェアを含むことができる。
【０１２９】
好適な実施例においては、図６に示す機能素子はハードウェアで実現されるが、１つまたは複数の機能素子がソフトウェアで実現されるとすると、そのような各素子により実行される機能は、メモリ内の命令セットを実行するマイクロプロセッサが、実行される機能に適切な制御信号を発生するように、そのマイクロプロセッサの動作により実際に実行される。これに関連して、本発明の実施のために特定のハードウェア実現の詳細は当業者にとっては不要であるのと全く同様に、本発明をソフトウェアで実現するために必要なマイクロプロセッサと、メモリと、データと、アドレスバスと、クロック等との詳細は、ここで行う説明を基にして当業者には明らかである。
【図面の簡単な説明】
【図１】  本発明を使用することができる環境を示すシステムのブロック図である。
【図２】  矩形グリッドを形成する画素の表現を示す図である。
【図３】  協調計算アルゴリズムを示すフローチャートである。
【図４】  オペランドが３つの場合の図３に示す協調計算アルゴリズムの好ましい実施形態を実施する回路を示すブロック図である。
【図５】  オペランドが２つの場合の協調計算アルゴリズムの好ましい実施形態を実施する回路を示すブロック図である。
【図６】  従来技術のシステムのブロック図である。
【符号の説明】
２１  リアルタイム・イメージ生成機構
２３  グラフィックス・インタフェース・サブシステム
３１  オーダ構成
４３  メモリ管理機構
４１  バンド・バッファ
５３  ラスタ出力インタフェース
７１  ラスタ演算論理ユニット
７３  ラスタ演算論理ユニット
７５  フィルタ演算論理ユニット
８１  選択ユニット
８３  選択ユニット
８７  ラスタ演算論理ユニット
９１  フィルタ演算論理ユニット
９３  選択ユニット
【図１】
0004063918.tif 000017
【図２】
0004063918.tif 000018
【図３】
0004063918.tif 000019
【図４】
0004063918.tif 000020
【図５】
0004063918.tif 000021
【図６】
0004063918.tif 000022