(57)【要約】　　　（修正有）【課題】１つ以上のリニアブレンドを生成する。【解決手段】既に受信された１つ以上のフィルパスのリストと、新たに受信されたフィルパスとをを有しており、フィルパスはそれぞれ単一の着色平行四辺形から構成されている。新たなフィルパスとリスト中の最後のフィルパスとの色の差が各カラーチャネルにおいて所定の閾値にリスト中の最後のフィルパスと最後から２番目のフィルパスとの色の差を乗算した値以下である場合、新たなフィルパスをリストの最後のフィルパスにすべくリストに追加する。所定の閾値は、新たなフィルパスが視覚的にリニアブレンドの一部を形成しない場合には新たなフィルパスがリストに追加されないような値に予め設定される。上記の条件が満たされなくなるまでこのステップを繰り返す。次に、リスト中の第１のフィルパスからリスト中の最後のフィルパスまでの１つ以上のリニアブレンドを生成する（１０４０）。【選択図】図１０
2004145856.tif 000002
【特許請求の範囲】
【請求項１】
フィルパスがそれぞれ単色の平行四辺形から構成されている場合に、現在リニアブレンドを定義する１つ以上のフィルパスから成るリストと、少なくとも１つの新たなフィルパスから１つ以上のリニアブレンドを生成する方法であって、
（ａ）　少なくとも１つの条件を含み、前記１つの条件は新たなフィルパス及び前記リスト中の最後のフィルパスの色と、閾値とに基づいており、前記閾値は、新たなフィルパスが視覚的に現在リニアブレンドの一部を形成しない場合には新たなフィルパスが前記リストに追加されないような値に予め設定されているような条件の集合の各々の条件が満たされる場合、１つの前記新たなフィルパスを前記リスト中の最後のフィルパスにすべく前記リストに追加し、そうでない場合には工程（ｃ）へ進み、
（ｂ）　残る前記新たなフィルパスごとに前記工程（ａ）を繰り返し、
（ｃ）　前記リスト中の第１のフィルパスから前記リスト中の最後のフィルパスまでの１つ以上のリニアブレンドを生成する
ことを特徴とする方法。
【請求項２】
前記１つの条件は、前記新たなフィルパスと前記リスト中の最後のフィルパスとの色の差が各カラーチャネルにおいて閾値以下であることから成ることを特徴とする請求項１に記載の方法。
【請求項３】
前記閾値は前記リスト中の最後のフィルパスと最後から２番目のフィルパスとの色の差の２倍であることを特徴とする請求項２に記載の方法。
【請求項４】
前記条件の集合は、
新たなフィルパスがリスト中の最後のフィルパスと物理的に連続している又は重なり合っているという（第２の）条件を更に含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記条件の集合は、
前記リストのフィルパスの物理的位置により判定される方向でフィルパスの高さを測定するとき、前記新たなフィルパスの高さは最近前記リストに追加されたフィルパスの高さの２倍以下であるという（第３の）条件を更に含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記条件の集合は、
現在リニアブレンドにおけるフィルパスの数は１より大きいという（第４の）条件を更に含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記条件の集合は、
前記リニアブレンドにおけるフィルパスの累積高さと、前記新たなフィルパスの方形高さとの和は事前定義済み最大値より小さいという（第５の）条件を更に含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記事前定義済み最大値は、フィルが出力媒体の境界を越えて延出しないように設定されていることを特徴とする請求項７に記載の方法。
【請求項９】
前記条件の集合は、
現時点で受信されたフィルパスのラスタ操作が行き先を使用せず、且つ現在リニアブレンドのラスタ操作と同じであるという（第６の）条件を更に含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記条件の集合は、
現時点で受信されたフィルパスは現在リニアブレンドと同じクリップを有するという（第７の）条件を更に含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記リストはフィルパス［１］．．．［ｎ］から成るオリジナルリストであり、且つ前記生成する工程（ｃ）は、
（ｃａ）リストのフィルパス［１］とフィルパス［ｎ］との色勾配が所定の誤差許容差の中でリストのフィルパス［１］とフィルパス［ｎ／２］との色勾配と等しいか否かを判定し、
（ｃａａ）等しい場合、前記リスト中の第１のフィルパスの色及び位置から前記リスト中の最後のフィルパスの色及び位置までの、フィルパス［１］．．．［ｎ］のリストのリニアブレンドを出力し、
（ｃａｂ）等しくない場合には、フィルパス［１］．．．［ｎ］のリストを少なくともほぼ等しい数のフィルパスをそれぞれ含む２つのリストに分割し、
（ｃｂ）フィルパス［１］．．．［ｎ］から成るオリジナルリストの全てのフィルパスが処理され終わるまで、分割されたリストごとに工程（ｃａ）を繰り返すことを特徴とする請求項１に記載の方法。
【請求項１２】
工程（ｃａｂ）は、前記リストをリストの第１の半分（フィルパス［１］．．．フィルパス［ｎ／２］）に対応するリストと、リストの第２の半分（フィルパス［ｎ／２］．．．フィルパス［ｎ］）に対応するリストという２つのリストに分割することから成ることを特徴とする請求項１１に記載の方法。
【請求項１３】
工程（ｃａｂ）は、前記リストをリストの第１の半分（フィルパス［１］．．．フィルパス［ｎ／２］）に対応するリストと、リストの第２の半分（フィルパス［（ｎ／２）＋１］．．．フィルパス［ｎ］）に対応するリストという２つのリストに分割することから成ることを特徴とする請求項１１に記載の方法。
【請求項１４】
第２の分割されたリストのフィルパスに対応する第２のリニアブレンドは、第１の分割されたリストのフィルパスに対応する第１のリニアブレンドに隣接して出力され、第２のリニアブレンドの初期色は第１のリニアブレンドの最終色に設定されることを特徴とする請求項１１に記載の方法。
【請求項１５】
前記現在リニアブレンドを定義する前記リストは１つ以上の既に受信されたフィルパスに関連し且つ前記少なくとも１つの新たなフィルパスは前記方法の実現を可能にするために新たに受信されることを特徴とする請求項１に記載の方法。
【請求項１６】
前記フィルパスの連続性は少なくともその整列を比較することにより判定されることを特徴とする請求項４に記載の方法。
【請求項１７】
フィルパスがそれぞれ単色の平行四辺形から構成されている場合、現在リニアブレンドを定義する１つ以上のフィルパスから成るリストと、少なくとも１つの新たなフィルパスから１つ以上のリニアブレンドを生成する手続きをコンピュータに実行させるためのコンピュータプログラムコード手段を具備するコンピュータプログラム要素であって、プログラムコード手段は、
少なくとも１つの条件を含み、前記１つの条件は新たなフィルパス及び前記リスト中の最後のフィルパスの色と、閾値とに基づいており、前記閾値は、新たなフィルパスが視覚的に現在リニアブレンドの一部を形成しない場合には新たなフィルパスが前記リストに追加されないような値に予め設定されているような条件の集合の各々の条件が満たされる場合、１つの前記新たなフィルパスを前記リスト中の最後のフィルパスにすべく前記リストに追加し、そうでない場合には生成コード手段を実行する追加コード手段と、
残る前記新たなフィルパスごとに前記追加コード手段を呼び出すコード手段と、
前記リスト中の第１のフィルパスから前記リスト中の最後のフィルパスまでの１つ以上のリニアブレンドを生成する生成コード手段と
を備えることを特徴とするコンピュータプログラム要素。
【請求項１８】
前記１つの条件は、前記新たなフィルパスと前記リスト中の最後のフィルパスとの色の差が各カラーチャネルにおいて閾値以下であることから成ることを特徴とする請求項１７に記載のコンピュータプログラム要素。
【請求項１９】
前記閾値は前記リスト中の最後のフィルパスと最後から２番目のフィルパスとの色の差の２倍であることを特徴とする請求項１８に記載のコンピュータプログラム要素。
【請求項２０】
前記条件の集合は、
新たなフィルパスがリスト中の最後のフィルパスと物理的に連続している又は重なり合っているという（第２の）条件と、
前記リストのフィルパスの物理的位置により判定される方向でフィルパスの高さを測定するとき、前記新たなフィルパスの高さは最近前記リストに追加されたフィルパスの高さの２倍以下であるという（第３の）条件と、
現在リニアブレンドにおけるフィルパスの数は１より大きいという（第４の）条件と、
前記リニアブレンドにおけるフィルパスの累積高さと、前記新たなフィルパスの方形高さとの和は事前定義済み最大値より小さいという（第５の）条件と、
現時点で受信されたフィルパスのラスタ操作が行き先を使用せず、且つ現在リニアブレンドのラスタ操作と同じであるという（第６の）条件と、
現時点で受信されたフィルパスは現在リニアブレンドと同じクリップを有するという（第７の）条件とから成る条件群から選択される条件を更に含むことを特徴とする請求項１７に記載のコンピュータプログラム要素。
【請求項２１】
前記第５の条件の前記事前定義済み最大値は、フィルが出力媒体の境界を越えて延出しないように設定されていることを特徴とする請求項２０に記載のコンピュータプログラム要素。
【請求項２２】
前記リストはフィルパス［１］．．．［ｎ］から成るオリジナルリストであり、且つ前記生成コード手段は、
リストのフィルパス［１］とフィルパス［ｎ］との色勾配が所定の誤差許容差の中でリストのフィルパス［１］とフィルパス［ｎ／２］との色勾配と等しいか否かを判定するコード手段と、
等しい場合、前記リスト中の第１のフィルパスの色及び位置から前記リスト中の最後のフィルパスの色及び位置までの、フィルパス［１］．．．［ｎ］のリストのリニアブレンドを出力するコード手段と、
等しくない場合には、フィルパス［１］．．．［ｎ］のリストを少なくともほぼ等しい数のフィルパスをそれぞれ含む２つのリストに分割するコード手段と、
フィルパス［１］．．．［ｎ］から成るオリジナルリストの全てのフィルパスが処理され終わるまで、分割されたリストごとに前記判定するコード手段を呼び出すコード手段と
を備えることを特徴とする請求項１７に記載のコンピュータプログラム要素。
【請求項２３】
前記分割するコード手段は、前記リストをリストの第１の半分（フィルパス［１］．．．フィルパス［ｎ／２］）に対応するリストと、リストの第２の半分（フィルパス［ｎ／２］．．．フィルパス［ｎ］）に対応するリストという２つのリストに分割することから成ることを特徴とする請求項２２に記載のコンピュータプログラム要素。
【請求項２４】
前記分割するコード手段は、前記リストをリストの第１の半分（フィルパス［１］．．．フィルパス［ｎ／２］）に対応するリストと、リストの第２の半分（フィルパス［（ｎ／２）＋１］．．．フィルパス［ｎ］）に対応するリストという２つのリストに分割することから成ることを特徴とする請求項２２に記載のコンピュータプログラム要素。
【請求項２５】
第２の分割されたリストのフィルパスに対応する第２のリニアブレンドは、第１の分割されたリストのフィルパスに対応する第１のリニアブレンドに隣接して出力され、前記第２のリニアブレンドの初期色は第１のリニアブレンドの最終色に設定されることを特徴とする請求項２２に記載のコンピュータプログラム要素。
【請求項２６】
前記現在リニアブレンドを定義する前記リストは１つ以上の既に受信されたフィルパスに関連し且つ前記少なくとも１つの新たなフィルパスはプログラム要素の実行を可能にするために新たに受信されることを特徴とする請求項１７に記載のコンピュータプログラム要素。
【請求項２７】
前記要素はグラフィカルデバイスインタフェースの一部を構成することを特徴とする請求項１７に記載のコンピュータプログラム要素。
【請求項２８】
前記フィルパスの連続性は少なくともその整列を比較することにより判定されることを特徴とする請求項２０に記載のコンピュータプログラム要素。
【請求項２９】
フィルパスがそれぞれ単色の着色平行四辺形から構成されている場合、現在リニアブレンドを定義する１つ以上のフィルパスから成るリストと、少なくとも１つの新たなフィルパスから１つ以上のリニアブレンドを生成する装置であって、
少なくとも１つの条件を含み、前記１つの条件は新たなフィルパス及び前記リスト中の最後のフィルパスの色と、閾値とに基づいており、前記閾値は、新たなフィルパスが視覚的に現在リニアブレンドの一部を形成しない場合には新たなフィルパスが前記リストに追加されないような値に予め設定されているような条件の集合の各々の条件が満たされる場合、１つの前記新たなフィルパスを前記リスト中の最後のフィルパスにすべく前記リストに追加し、そうでない場合には生成する手段をイネーブルする手段と、
残る前記新たなフィルパスごとに前記追加する手段の動作を繰り返す手段とを備え、
前記生成する手段は、前記リスト中の第１のフィルパスから前記リスト中の最後のフィルパスまでの１つ以上のリニアブレンドを生成するように動作可能である
ことを特徴とする装置。
【請求項３０】
請求項１７記載のコンピュータプログラム要素を具備するコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子画像生成及び制御に関し、特に１つ以上のリニアブレンドを生成することに関する。
【背景技術】
【０００２】
従来より、ワードプロセッサなどのソフトウェアアプリケーションは、各ページがテキスト、線、フィル領域及び画像データなどの図形オブジェクトを含むようなページベース文書を作成している。文書データを表示装置又は印刷装置で表現する場合、そのようなソフトウェアアプリケーションは、通常、ソフトウェアアプリケーションが動作するネーティブオペレーティングシステムのグラフィックスインタフェースサービスに関して定義された指令を送信する。ネーティブオペレーティングシステムのグラフィックスインタフェースサービスは、通常、グラフィックスデバイスインタフェース（ＧＤＩ）レイヤとして知られている。ＧＤＩレイヤは、一般に、全てのアプリケーションに豊富な図形特徴のセットを提供するアプリケーションプログラミングインタフェース（ＡＰＩ）である。通常、グラフィックスレンダリングシステムはＧＤＩレイヤから受信した図形オブジェクトをレンダリングして、画素を生成し、それらの画素は、その後、出力装置へ送信される。レンダリングは、ＧＤＩレイヤから受信された図形オブジェクトがグラフィックスレンダリングシステムにより画素に変換されるプロセスであり、画素は格納、表示又は印刷のために出力装置へ送信される。
【０００３】
図１を参照すると、従来の技術のソフトウェアアプリケーション１１０、グラフィックスデバイスインタフェースレイヤ１２０、グラフィックスレンダリングシステム１３０及び出力装置１４０の従来の関係が示されている。アプリケーション１１０は文書の各ページを、そのページの図形オブジェクトを記述するグラフィックスインタフェースサービスに関して定義された一連の指令として供給する。ＧＤＩレイヤ１２０は、グラフィックスレンダリングシステム１３０が画像データの方形ブロックを描くこと及び単純な領域をフラットカラーで塗りつぶすことなどの機能性のはるかに小さなセットを支援することを可能にするように、アプリケーションプログラム１１０と出力装置１４０との間を仲介する。また、ＧＤＩレイヤ１２０は、グラフィックスレンダリングシステム１３０が最も効率良く、出力装置１４０の分解能で処理するであろうということをＧＤＩレイヤ１２０が判定するフォーマットで図形オブジェクトをグラフィックスレンダリングシステム１３０に提供する。そこで、グラフィックスレンダリングシステム１３０はＧＤＩレイヤ１２０から受信した図形オブジェクトをレンダリングして、画素を生成し、それらの画素は、その後、出力装置１４０へ送信される。
【０００４】
周知のいくつかのグラフィックスレンダリングシステムにおいては、レンダリングは２段階のプロセスである。そのようなレンダリングシステムでは、レンダリングプロセスが開始される前に、まず、図形オブジェクトは中間言語に変換される。そのようなシステムの１つにおいては、プロセスの第１の段階はＧＤＩレイヤから受信した各図形オブジェクトを何らかの中間エッジベースオブジェクトグラフィックスフォーマットに変換する。この場合、全てのエッジはｙが大きくなる順に並び替えられ、次にｘが大きくなる順に並び替えられ、それらはラスタ化表示装置における走査線及びそれらの走査線における画素にそれぞれ対応している。この段階からの出力は、通常、エッジのディスプレイリスト及びそれらに関連する塗りつぶし優先順位（ｚ順）であり、その他に辺がクリッピングエッジであるか又は塗りつぶしエッジであるかなどの情報を含む。これをジョブと呼ぶこともある。ジョブは、第２の段階でページをレンダリングするために必要とされるあらゆる情報を含む。プロセスの第２の段階は、ジョブをパージングし、出力装置に対して走査線毎に画素をページ下方向に生成するレンダリングモジュールを含む。
【０００５】
ＧＤＩレイヤの中には、滑らかな色のブレンドによって塗りつぶされた図形オブジェクトがＧＤＩレイヤにより一連の互いに隣接する単色平行四辺形として表現されるものがあり、それぞれの平行四辺形の色は先行する平行四辺形と何らかのわずかなオフセット分だけ異なっており、図形オブジェクトの領域上にクリッピングされている。平行四辺形は左から右へ続いていても良いし、上から下へ続いていても良いし、あるいは斜めにページを横断していても良い。
【０００６】
アプリケーションによっては、この種のフィルをグレーディエントフィル（Ｍｉｃｒｏｓｏｆｔ　Ｗｏｒｄ）又はファウンテンフィル（Ｃｏｒｅｌ　Ｄｒａｗ）と呼ぶ。明瞭にするため、本明細書においては、便宜上、この種のフィルをグレーディエントフィルと呼ぶ。典型的な従来の技術のアプリケーションにより生成されるような、斜め方向グレーディエントフィルによって塗りつぶされた図形オブジェクト２１０の一例を図２Ａに示す。オブジェクトをグレーディエントフィルによって塗りつぶす方法はアプリケーションによって決まる。しかし、最も単純な形態では、この方法は通常は塗りつぶされるべき図形オブジェクトのバウンディングボックスの端部ごとに開始色と、終了色を指定することから成る。図２Ａ、図２Ｂ及び図２Ｃは、斜め方向グレーディエントフィルが通常はアプリケーションによりＧＤＩレイヤからグラフィックレンダリングシステムへどのようにして渡されて行くかを示す。
【０００７】
いくつかのグラフィックスレンダリングシステムは、通常、リニアランプ又はリニアブレンドと呼ばれる単純な形態のグレーディエントフィル効果を支援する。これは、ページ上の、関連する開始色を伴う開始基準点により表現されることが可能であり、これに、ブレンドの勾配と平行な線上の、画素ごと、カラーチャネルごとの一定の勾配変化が付随している。
【０００８】
しかし、アプリケーションは一般に真に線形のグレーディエントフィル効果から成るブレンドを出力することに限定されない。実際、いくつかのアプリケーションにより生成されるグレーディエントフィル効果における色の変化は放物線形、更には正弦状である場合もある。従来の技術のアプリケーションにより生成された正弦グレーディエントフィルを有するオブジェクト３００の一例を図３に示す。
【０００９】
通常、ＧＤＩレイヤがグレーディエントフィルをここではフィルパスと呼ばれる単色平行四辺形の集合に変換し、それにクリッピングオブジェクトが付随している。例えば、図２Ｂは、典型的な従来の技術のＧＤＩレイヤによりグラフィックスレンダリングシステムへ渡されるフィルパス及びクリッピングオブジェクトを示す。これらは、図２Ａに示すような例のグレーディエントフィルから生成されたものである。ＧＤＩレイヤはグレーディエントフィルを単色フィルパスの集合２５０とクリッピングオブジェクト２２０とに変換する。明瞭にするため、図２Ｂは２つのフィルパス２５０のみを誇張して示している。フィルパス２５０の集合全体は方形の領域２６０を覆っており、それぞれのフィルパス２５０は隣接するフィルパスと平行であり且つそれに連続している。これらのフィルパス２５０の辺の長さはレンダリングの分解能によって決まる。例えば、６００ｄｐｉの場合、各フィルパス２５０の高さは通常は１００画素を超えないが、各フィルパスの幅は数画素ずつ異なることが可能である。また、各フィルパス２５０は先行するフィルパス２５０とはわずかに異なる内部色を有する。これにより、オブジェクトがレンダリングされるときにグレーディエントフィルと関連する滑らかな色のブレンドが生成される。次に図２Ｃを参照すると、典型的な従来の技術のグラフィックスレンダリングシステムによる図２Ｂに示す例のレンダリングの結果が示されている。図２Ｃの場合、レンダリングシステムはフィルパス２５０から成るバウンディングボックス２６０をクリッピングオブジェクト２２０によりクリッピングしており、その結果、オブジェクト２１０が生成されている。図２Ｃでは、レンダリング後の結果は図２Ａと同じである。
【００１０】
このようなグレーディエントフィル効果の表現をレンダリングするための従来の方法はいくつかある。
【００１１】
従来の方法の１つは単純に各々のフィルパスをレンダリングする。多くのグラフィックスレンダリングシステムは、各オブジェクトが到着するごとにフレームバッファに描示されるＰａｉｎｔｅｒｓアルゴリズムスタイルのレンダリングを使用する。まず、全ての入力オブジェクトをページの何らかの中間フォーマットに変換し、次に各走査線をレンダリングする２段階オブジェクトグラフィックスレンダリングシステムは、各々のフィルパスをレンダリングするには不都合である。図２Ａに示すグレーディエントフィルの場合、ＧＤＩレイヤは６００ｄｐｉで１２８のフィルパスを生成する。上から下又は下から上へ進むブレンドの場合、どの走査線上においても唯１つのフィルパスがアクティブであることがわかる。しかし、左から右又は右から左へ進むブレンドの最悪の場合には、１本の走査線上で１２８のフィルパスの全てが活動中となり、これは走査線ごとに２５６のエッジが存在するのに等しい。従って、オブジェクトベースレンダリングシステムでは、このようなレンダリングの方法はかなり効率が悪い。また、中間オブジェクトグラフィックスフォーマットで各々のフラットフィルを蓄積しなければならず、走査線ごと、フィルパスごとにそれをアクセスしなければならない。この方法は大量のメモリアクセスから成り、更に、フィルパスの数が数千にのぼる場合には大量のフィル資源をも消費する可能性がある。この事態は、Ａ３より大きいページに高分解能で印刷する場合に頻繁に起こる。
【００１２】
美的レベルで言えば、単純に各フィルパスをレンダリングする方法のもう１つの欠点は、所期の効果は明らかに滑らかなブレンドであるにもかかわらず、Ｍａｃｈ　Ｂａｎｄｉｎｇと呼ばれるアーティファクトが起こりうることである。目の感度は滑らかな色の変化に対するよりも、エッジに対するときのほうが高いので、グレーディエントフィル効果をこの方法でレンダリングした場合、方形の境界線が目に見えてしまうことが多い。色域のある部分では境界線は更に明確になる。また、画像全体を拡大すると、各フィルパスも拡大され、Ｍａｃｈ　Ｂａｎｄｉｎｇが極めて目立つようになる。
【００１３】
アプリケーションレベルでは、グレーディエントフィル効果を処理する別の従来の方法はフィル効果をビットマップに単純にレンダリングし、それをＧＤＩレイヤへ送信する。この方法はフィル領域が小さい場合には有効であるが、描示の速度が遅く、画像の画素ごとにグラフィックスレンダリングシステムにより処理しなければならないためにレンダリングが煩雑になるという欠点を有する。更に、この方法は、オブジェクトを拡大（画素の複製）又は縮小（画素の損失）するときに十分なスケーリングを実行できない。
【００１４】
更に別の従来の方法は、入力する各フィルパスの線形性を試験し、次のフィルパスが何らかの誤差の中で線形ではない場合には、このフィルパスまで等価のリニアブレンドを作成する。その後、この次のフィルパスから線形性の追跡を再開する。この方法はレンダリングしなければならない図形オブジェクトの数を劇的に減少させることができる。最良の場合には、単一のリニアブレンドで図形オブジェクト全体を記述することが可能である。図２Ａに示す斜め方向グレーディエントフィルの場合、複数のフィルパスによって描示した場合と比較して、走査線ごとのエッジの数は１２８分の１に減少することになるであろう。
【００１５】
しかし、この方法は欠点を有する。先に説明した通り、アプリケーションは単純なリニアブレンドより進んでグレーディエントフィル効果を提供する。そのような効果は塗りつぶされるべきオブジェクト全体にわたるいくつかの色変化から構成される（例えば、図３のような正弦状）、又は図４Ａ又は図４Ｂのような何らかの非線形曲線に従うであろう。同様に、連続するフィルパスの辺の長さは必ずしも一定ではない。いずれの場合にも、望まれている全体的な効果は図形オブジェクト全体にわたる滑らかな色のブレンドであるにもかかわらず、結果として得られるオブジェクトを記述するフィルパスの集合はフィルパスごとの一定の色の変化から構成されているとは限らない。
【００１６】
この方法においては、一連のフィルパスの中で次のフィルパスの線形性を判定するために誤差係数が適用される。次のフィルパスが前のフィルパスと一定の差に何らかの誤差を加算した値又は一定の差から何らかの誤差を減算した値だけ異なっている場合、次のフィルパスは追跡されるべきリニアブレンドにマージされる。この誤差係数が小さすぎる場合、数多くのリニアブレンドが起こる結果となり、この方法の目的が無効になってしまう。この誤差係数が大きすぎると、出力が入力を正確に表現しないカラーシフティングを招く結果となる。例えば、図４Ａを参照すると、左上角の黒色から右下角の白色まで変化する非線形ブレンドが示されており、黒色と白色の中間点の色は左上角と右下角の距離の２５％の位置にある。また、図４Ｂも同様の非線形ブレンドを示すが、この場合、中間点の色は左上角と右下角の距離の７５％の位置にある。図４Ａ又は図４Ｂに示す非線形フィルパスを十分に大きな誤差係数を使用して追跡したならば、図４Ｃに示すように、左上角の黒色から右下角の白色まで真に線形のブレンドが得られるであろう。この結果は明らかにアプリケーションのユーザが意図した結果ではない。
【００１７】
また、フィルパスを複数のリニアブレンドとして組み合わせた場合には、隣接するリニアブレンドの間にＭａｃｈ　Ｂａｎｄｉｎｇが顕著に見られる傾向がある。このバンディングが極めて目立つのは、リニアブレンドがその最大誤差で分割されるために、個別のフィルパスをレンダリングした場合と比較して隣接するリニアブレンドが際立ってしまうからである。
【考案の開示】
【発明が解決しようとする課題】
【００１８】
本発明の目的は、既存の構成の１つ以上の欠点をほぼ克服すること又は少なくとも改善することである。
【課題を解決するための手段】
【００１９】
本発明の開示の第１の様態によれば、１つ以上のリニアブレンドを生成する方法が提供され、方法は、フィルパスがそれぞれ単色の平行四辺形から構成されている場合、先ず、現在リニアブレンドを定義する１つ以上の既に受信済みのフィルパスから成るリストと、少なくとも１つの新たに受信したフィルパスとを具備しており、方法は、（ａ）条件の１つが新たなフィルパス及び前記リスト中の最後のフィルパスの色と、閾値とに基づいており、閾値は、新たなフィルパスが視覚的に現在リニアブレンドの一部を形成しない場合には新たなフィルパスが前記リストに追加されないような値に予め設定されているような条件の集合が満たされる場合、新たなフィルパスをリスト中の最後のフィルパスにすべくリストに追加し、そうでない場合には工程（ｃ）へ進み、（ｂ）受信される新たなフィルパスごとに工程（ａ）を繰り返し、（ｃ）リスト中の第１のフィルパスからリスト中の最後のフィルパスまでの１つ以上のリニアブレンドを生成する。
【００２０】
本発明の開示の第２の様態によれば、フィルパスがそれぞれ単色の平行四辺形から構成されている場合、現在リニアブレンドを定義する１つ以上のフィルパスから成るリストと、少なくとも１つの新たなフィルパスから１つ以上のリニアブレンドを生成する方法であって、
（ａ）少なくとも１つの条件を含み、前記１つの条件は新たなフィルパス及び前記リスト中の最後のフィルパスの色と、閾値とに基づいており、前記閾値は、新たなフィルパスが視覚的に現在リニアブレンドの一部を形成しない場合には新たなフィルパスが前記リストに追加されないような値に予め設定されているような条件の集合の各々の条件が満たされる場合、１つの前記新たなフィルパスを前記リスト中の最後のフィルパスにすべく前記リストに追加し、そうでない場合には工程（ｃ）へ進み、
（ｂ）残る前記新たなフィルパスごとに前記工程（ａ）を繰り返し、
（ｃ）前記リスト中の第１のフィルパスから前記リスト中の最後のフィルパスまでの１つ以上のリニアブレンドを生成する方法が提供される。
【００２１】
条件の集合は、
新たなフィルパスがリスト中の最後のフィルパスと物理的に連続している又は重なり合っているという（第２の）条件と、
リストのフィルパスの物理的位置により判定される方向でフィルパスの高さを測定するとき、新たなフィルパスの高さは最近リストに追加されたフィルパスの高さの２倍以下であるという（第３の）条件と、
現在リニアブレンドにおけるフィルパスの数は１より大きいという（第４の）条件と、
リニアブレンドにおけるフィルパスの累積高さと、新たなフィルパスの方形高さとの和は事前定義済み最大値より小さいという（第５の）条件と、
現時点で受信されたフィルパスのラスタ操作が行き先を使用せず、且つ現在リニアブレンドのラスタ操作と同じであるという（第６の）条件と、
現時点で受信されたフィルパスは現在リニアブレンドと同じクリップを有するという（第７の）条件とから成る条件群から選択される条件を更に含むのが好ましい。
【００２２】
方法を実行するように構成された装置、コンピュータプログラム及びコンピュータ媒体を含む本発明のその他の様態も開示される。
【発明を実施するための最良の形態】
【００２３】
添付の図面の中の１つ以上の図を参照する場合、本明細書においては、便宜上、同じ図中符号により指示されるステップ及び／又は特徴は、特に指示のない限り、同じ機能又は動作を有する。
【００２４】
リニアブレンドを生成する方法は、汎用コンピュータのプロセッサで実行されるソフトウェアモジュールとして実現されるのが好ましい。そのようなソフトウェアモジュールを実行するための典型的な汎用コンピュータについては、以下に図１７を参照して説明する。ソフトウェアモジュールは、グラフィックスデバイスインタフェース（ＧＤＩ）レイヤにインタフェースし且つ１つのページの図形オブジェクトを受信して、各図形オブジェクトを中間エッジベースフォーマットに変換するグラフィックスレンダリングシステムの第１の段階の一部であるのが好ましい。グラフィックスレンダリングシステムの第２の段階では、ジョブがレンダリングされ、その結果生成された画素はプリンタ又はグラフィックスカードなどの下流側装置へ出力される。グラフィックスレンダリングシステムの２つの段階はグラフィックスソフトウェアアプリケーションにおいてモジュールとして実現されるのが好ましい。あるいは、第１の段階はソフトウェアアプリケーションとして実現され、プロセッサで動作している第１の段階と通信するためのバスに結合されたハードウェア装置として実現される第２の段階とインタフェースする。
【００２５】
ＧＤＩレイヤはアプリケーションプログラミングインタフェース（ＡＰＩ）であるのが好ましく、グラフィックスレンダリングシステムに一連のフィルパスとしてグレーディエントフィルを提供する。
【００２６】
以下に示す方法は非直交グレーディエントフィル効果の場合、特に、フィルパスが縦方向の辺で左上から右下の順序で到来するような場合を説明するが、フィルパスがどのような直交方向又は非直交方向に進んでも、それを処理するために本発明の方法を容易に変形することができる。
【００２７】
詳細な説明に進む前に、用語の意味を簡単に説明する。
【００２８】
１．０　定義
フィルパスは単色（又はフラットカラー）の平行四辺形として定義されている。平行四辺形という用語は方形又は正方形をも含むと理解される。グレーディエントフィルが厳密に横方向又は縦方向に進む場合、フィルパスの形状はほぼ方形である。グレーディエントフィルがページに沿って斜めの方向に進む場合には、フィルパスは平行四辺形である。
【００２９】
非直交グレーディエントフィルが進行する方向は８つの方向のうちのいずれか１つである。それらの方向は横方向フィルパスを使用するグレーディエントフィルと、縦方向フィルパスを使用するグレーディエントフィルとに区分され、次のように定義される。
【００３０】
横方向グレーディエントフィル：
横方向左下、ＨＤＯＷＮＬＥＦＴ
横方向左上、ＨＵＰＬＥＦＴ
横方向右下、ＨＤＯＷＮＲＩＧＨＴ
横方向右上、ＨＵＰＲＩＧＨＴ
横方向左、ＬＥＦＴ
横方向右、ＲＩＧＨＴ
縦方向グレーディエントフィル：
縦方向左下、ＶＤＯＷＮＬＥＦＴ
縦方向左上、ＶＵＰＬＥＦＴ
縦方向右下、ＶＤＯＷＮＲＩＧＨＴ
縦方向右上、ＶＵＰＲＩＧＨＴ
縦方向下、ＤＯＷＮ
縦方向上、ＵＰ
図５Ａから図５Ｄ及び図６Ａから図６Ｄは、斜め方向グレーディエントフィルが進行する方向の上述の定義を示す。図５Ａから図５Ｄは縦方向グレーディエントフィルを示し、図６Ａから図６Ｄは横方向グレーディエントフィルを示す。
【００３１】
図５Ａは、バナーの形態をとるクリッピングオブジェクト６００と、バウンディングボックス６２０と、フィルパス６１０とを示す。複数のフィルパス６１０はバウンディングボックス６２０の左上角から右下角に向かって縦方向に進み、縦方向右下と定義される。縦方向フィルパス６３０も示されており、これらは縦方向下と定義される。
【００３２】
図５Ｂは同じクリッピングオブジェクト６００及びバウンディングボックス６２０と、フィルパス６４０とを示す。フィルパス６４０はバウンディングボックス６２０の右上角から左下角に向かって縦方向に進み、縦方向左下と定義される。縦方向フィルパス６３０も示されており、これらは縦方向下と定義される。
【００３３】
図５Ｃは同じクリッピングオブジェクト６００及びバウンディングボックス６２０を示す。フィルパス６６０はバウンディングボックス６２０の右下角から左上角に向かって縦方向に進み、縦方向左上と定義される。縦方向フィルパス６５０も示されており、これらは縦方向上と定義される。
【００３４】
図５Ｄは同じクリッピングオブジェクト６００及びバウンディングボックス６２０を示す。フィルパス６７０はバウンディングボックス６２０の左下角から右上角に向かって縦方向に進み、縦方向右上と定義される。縦方向フィルパス６５０も示されており、これらは縦方向上と定義される。
【００３５】
図６Ａはクリッピングオブジェクト６００と、そのバウンディングボックス６０５と、フィルパス６２５とを示す。フィルパス６２５はバウンディングボックス６２０の左上角から右下角に向かって横方向に進み、横方向右下と定義される。横方向フィルパス６１５も示されており、これらは横方向右と定義される。
【００３６】
これに対し、図６Ｂのフィルパス６３５はバウンディングボックスの左下から右上へ横方向に進み、横方向右上と定義される。横方向フィルパス６１５も示されており、これらは横方向右と定義される。
【００３７】
図６Ｃはクリッピングオブジェクト６００及びそのバウンディングボックス６０５と、フィルパス６５５とを示す。フィルパス６５５はバウンディングボックス６０５の右下角から左上角に向かって横方向に進み、横方向左上と定義される。横方向フィルパス６４５も示されており、これらは横方向左と定義される。
【００３８】
これに対し、図６Ｄのフィルパス６６５はボックスの右上から左下へ横方向に進み、横方向左下と定義される。横方向フィルパス６４５も示されており、これらは横方向左と定義される。
【００３９】
しかし、フィルパスが隣接するフィルパスと整列されていないと考えられる場合には、方向は割り当てられない（すなわち、ＮＵＬＬ）。方向がないということは、グレーディエントフィルが作成されないか、又は新たなフィルパスが現在フィルの一部として受け入れられないことを意味している。
【００４０】
本明細書の説明において言及される高さには、方形高さと総高さという２つの種類がある。現在蓄積グレーディエントフィルがどのような向きにあるかに応じて、高さの定義は異なる。図７Ａ及び図７Ｂは、これら２種類の異なる高さの定義及びグレーディエントフィルの向きに応じて高さの定義がどのように異なるかを示す。図７Ａは、縦方向に進む複数の平行四辺形の形態をとるフィルパス７００と、クリッピングオブジェクト（図示せず）のバウンディングボックス７０５とを示す。縦方向フィルパス（例えば、図７Ａ）の場合、フィルパスの方形高さはそのフィルパスを構成している平行四辺形のｙ座標方向の辺の長さとして定義される。縦方向フィルパス（例えば、図７Ａ）の場合、ｎ番目のフィルパスの総高さはｙ座標方向のｎ個のフィルパスの方形高さの和として定義される。横方向フィルパス（例えば、図７Ｂ）の場合にも同様の定義が適用されるが、長さはｘ座標方向で測定される。また、方形高さがフィルパスごとに異なる場合もあることは明白であろう。
【００４１】
個々のフィルパスからリニアグレーディエントフィルを定義する場合、中間エッジフォーマットはグレーディエントフィルを定義するためにブレンドの勾配と平行な線上の２つの基準点の色値及び位置を受け入れる。図８Ａ及び図８Ｂは、グレーディエントフィルを定義するときに使用される第２の基準点（Ｑ，Ｐ）を発見するために使用される式を示す。第１の基準点は既にわかっている。
【００４２】
図２２は、別の方法における２つの基準点である点１及び点２（Ｑ，Ｐ）と、それら２つの基準点の計算で使用される線を示す。第１の点である点１は単にフィルの方向に記述された第１の点である。第２の点（Ｑ，Ｐ）は線Ｂと線Ｃの交点から判定される。線Ｃは、グレーディエントフィルの最後のフィルパスの末端の長さと一致して走る線である。線Ｂはグレーディエントフィルの点１を通って走る線Ａに対して９０°を成す線である。
【００４３】
グレーディエントフィルが進行する方向は４つの方向のうちのいずれか１つにより記述できる。それらの方向は、グレーディエントフィル中のフィルパスを構成する点の整列に従って名付けられる。それら４つの方向は次のように定義される。
【００４４】
ＤＩＲ＿０１（又はＤＩＲ＿３２）
ＤＩＲ＿１０（又はＤＩＲ＿２３）
ＤＩＲ＿１２（又はＤＩＲ＿０３）
ＤＩＲ＿２１（又はＤＩＲ＿３０）
図２３Ａから図２３Ｄは、斜め方向グレーディエントフィルが進行する方向の上述の定義をそれぞれ示す。各々の方向は別名を有し、それらを互換性をもって使用することができる。フィルパスが隣接するフィルパスと整列されていないと考えられる場合、方向は割り当てられない（すなわち、ＮＵＬＬ）。方向がないということはグレーディエントフィルが作成されないか、又は新たなフィルパスが現在グレーディエントフィルの一部として受け入れられないことを意味している。
【００４５】
本明細書の説明において言及される高さには方形高さ（すなわち、フィルパスの高さ）と総高さという２種類がある。総高さは、現在蓄積されているフィルパスのリストにおける各々のフィルパスの個々の方形高さの和として定義される。グレーディエントフィルの方形高さを定義するフィルパスの辺は、そのグレーディエントフィルがどの方向に進行しているかによって決まる。図２４Ａから図２４Ｄは、ＤＩＲ＿０１の方向の場合、方形高さはフィルパスの点０と点１の間の線の長さとして定義されることを示している。ＤＩＲ＿１０の場合には、方形高さは点１と点０の間の線の長さとして定義される。ＤＩＲ＿１２の場合には、方形高さは点１と点２の間の線の長さとして定義される。ＤＩＲ＿２１の場合には、方形高さは点２と点１の間の線の長さとして定義される。また、フィルパスの高さはフィルパスごとに異なることが明白であろう。図２４Ａから図２４Ｄには、各々のフィルパスの幅も示されている。
【００４６】
「蓄積された色勾配」という用語は現在蓄積グレーディエントフィルの最も近い時点で追加されたフィルパスと、２番目に近い時点で追加されたフィルパスとの間の色勾配として定義される。新たなフィルパスの色勾配が蓄積された色勾配の妥当な限界の中に入っていることを確認するために新たなフィルパスをチェックできるように、この色勾配の値は格納される。
【００４７】
現在蓄積グレーディエントフィルはフィルパスのダイナミックリストである。現在蓄積グレーディエントフィルにフィルパスが追加されるたびに、以下のような方法により次のように３つの配列が定義される。
【００４８】
１．色配列はフィルパスの各々の色の値を保持する。ｃｏｌｏｒ［ｎ］＝フィルパス（ｎ）の色；
２．高さ配列はフィルパスの累積高さの値を保持する。ｈｅｉｇｈｔｓ［ｎ］＝フィルパス（１）からフィルパス（ｎ）までの方形高さの値の和。これはフィルパス（ｎ）における総高さの現在値でもある；
３．点配列は個々のフィルパスの点の値を保持する。ｐｏｉｎｔｓ［ｎ］＝フィルパス（ｎ）の境界を規定する平行四辺形のｘ、ｙ座標による４つの点。
【００４９】
「蓄積グレーディエントフィル」という語句は、現時点で追跡されるべきグレーディエントフィルを記述するために必要な変数を表す。これは上述の色配列、点配列及び高さ配列、グレーディエントフィルにおけるフィルの数、グレーディエントフィルの方向、並びにグレーディエントフィルにおける初めの２つの色の間の色勾配を含む。
【００５０】
２．０　概要
その方法はＧＤＩレイヤから順々にフィルパスを受け取り、いくつかの基準に適合しているかに応じてそれらのフィルパスを現在蓄積グレーディエントフィルに追加する。まず、その方法は、新たに受け取ったフィルパスと現在蓄積グレーディエントフィルに最近追加されたフィルパスとの色の差が妥当な大きさの誤差係数より大きいか否かをチェックする。この誤差係数は、現在蓄積グレーディエントフィルの最も近い時点で追加された２つのフィルパスの色の差の２倍であるのが好ましい。具体的には、その方法は、生成されるべき画像の夫々のカラーチャネル（例えば、ＲＧＢ）ごとに、新たに受け取ったフィルパスのカラーチャネル値Ｃｎが下記の公式の一方を満たしているか否かをチェックする。
【００５１】
０　＜　Ｃｎ−Ｃｎ−１　≦　２（Ｃｎ−１−Ｃｎ−２）　　　Ｃｎ＞Ｃｎ−１であれば
−２（Ｃｎ−１−Ｃｎ−２）　≦　Ｃｎ−Ｃｎ−１　≦　０　　　Ｃｎ≦Ｃｎ−１であれば　　　式（１）
式中、Ｃｎ―１及びＣｎ−２は現在蓄積グレーディエントフィルの最も近い時点で追加された２つのフィルパスの対応するカラーチャネル値である。
【００５２】
チェックが各カラーチャネルについて真を戻した場合、その方法は新たに受け取ったフィルパスを現在蓄積グレーディエントフィルに追加し、次に受け取られるフィルパスに対してこれらの動作を繰り返す。これに対し、チェックがカラーチャネルのいずれか１つについて偽を戻した場合には、その方法は現在蓄積グレーディエントフィルの第１のフィルパスの色及び位置から現在蓄積グレーディエントフィルの最も近い時点で追加されたフィルパスの色及び位置へ１つ以上のリニアブレンドを生成するように機能する。言い換えれば、その方法は、上述の基準をもはや満たさないフィルパスに到達するまで、現在蓄積グレーディエントフィルにフィルパスを追加し続けるのである。基準を満たさない事態は、次のフィルパスのカラーチャネルの１つが現在カラーチャネルの勾配の方向に著しく大きな変化を引き起こしたときに起こる。例えば、この事態は色勾配の方向が符号を変えたときに起こる。
【００５３】
先に述べた通り、チェックが偽を戻した場合、その方法は現在蓄積グレーディエントフィルに既に追加されているフィルパスから１つ以上のリニアブレンドを生成するように機能する。具体的には、その方法は現在蓄積グレーディエントフィルのフィルパスの集合に適合する最適のリニアブレンドの集合を判定する。その方法はこれを次のようにして実現する。
【００５４】
まず、説明の便宜上、現在蓄積グレーディエントフィルがフィルパス［１］．．．フィルパス［ｎ］として表されるｎ個のフィルパスを含むと仮定する。尚、フィルパス［１］は現在蓄積グレーディエントフィルに最初に追加されたフィルパスであり、フィルパス［ｎ］は現在蓄積グレーディエントフィルに最後に追加されたフィルパスである。
【００５５】
その方法は、まず最初に、フィルパス［１］とフィルパス［ｎ］との間の色勾配がフィルパス［１］と中間点フィルパス［ｎ／２］との間の対応する色勾配と（何らかの許容しうる範囲の誤差の中で）等しくないかをチェックすることにより、現在蓄積グレーディエントフィルのフィルパスに適合するリニアブレンドの集合を生成する。チェックが真を戻した場合、すなわち、それらが等しくない場合、方法はフィルパスの集合をフィルパスの第１の半分（フィルパス［１］．．．フィルパス［ｎ／２］）に対応する集合と、フィルパスの第２の半分（フィルパス［ｎ／２］．．．フィルパス［ｎ］）に対応する集合の２つの集合に分割し、新たなフィルパスの集合の各々について上記チェックを繰り返す。これに対し、チェックが偽を戻した場合、すなわち、フィルパス［１］とフィルパス［ｎ］との間の色勾配がフィルパスの何らかの集合［１．．．ｎ］についてフィルパス［１］とフィルパス［ｎ／２］との間の対応する色勾配と（何らかの許容しうる誤差の範囲内で）等しい場合には、その方法は、リニアランプの開始色及び終了色を定義するための色配列と、塗りつぶす領域を定義するための点配列とを使用して、このフィルパスの集合［１．．．ｎ］についてグラフィックスレンダリングシステムへリニアランプ呼び出しを出力する。このステップは、次のように再帰的に定義できるソフトウェアモジュールとして実現することが可能である。
【００５６】
Ｆｕｎｃｔｉｏｎ　ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓ（Ｃ［１．．．ｎ］，　Ｈ［１．．．ｎ］，　Ｐ［１．．．ｎ］）
１．　いずれか１つのカラーチャネルについて、｜（Ｇｎ−Ｇｎ／２）／Ｇｎ｜＞Ｅ０　　式（２）である場合、
式中、
Ｇｎ／２＝（Ｃｎ／２−Ｃ１）／（Ｈｎ／２−Ｈ１）
Ｇｎ＝（Ｃｎ−Ｃ１）／（Ｈｎ−Ｈ１）
Ｈｎ、Ｈｎ／２は、それぞれ、フィルパス１からｎ及びフィルパス１からｎ／２の累積方形高さの値であり、
Ｃｎはｎ番目のフィルパスのカラーチャネルの値であり、
Ｅ０は好ましくは０．１である閾値定数であり、
Ｃ１及びＨ１は、それぞれ、関数に渡される集合［１．．．ｎ］における第１のフィルパスのカラーチャネルと方形高さの値である。
【００５７】
２．Ｃａｌｌ　ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓ（Ｃ［１．．．ｎ／２］，　Ｈ［１．．．ｎ／２］，　Ｐ［１．．．ｎ／２］）
３．Ｃａｌｌ　ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓ（Ｃ［ｎ／２．．．ｎ］，　Ｈ［ｎ／２．．．ｎ］，　Ｐ［ｎ／２．．．ｎ］）
４．Ｅｎｄｌｆ
５．Ｐｕｔ　ＬｉｎｅａｒＲａｍｐ　ｆｒｏｍ　Ｃ１　ｔｏ　Ｃｎ
ＥｎｄＦｕｎｃｔｉｏｎ
見てわかる通り、フィルパスの集合を分割するとき、その方法は中間点にあるフィルパスを第１のランプの終了点と第２のランプの開始点の双方として使用するのが好ましい。これにより、隣接するリニアランプの間の滑らかなブレンドが確保されると共に、以前の実現形態と比較してＭａｃｈ　Ｂａｎｄｉｎｇが排除される。あるいは、（ｎ／２）及び（ｎ／２＋１）に基づく従来通りの分割を使用しても良い。
【００５８】
次に図９Ａから図９Ｃを参照すると、１つ以上のリニアブレンドを生成する方法を例示する目的で、現在蓄積グレーディエントフィルに追加されたフィルパスの集合の一例のカラーチャネルの値が示されている。図９Ａから図９Ｃはフィルパス１．．．１１のｙ座標方向の色値を示し、それらはｘ座標方向に表されている。記号Ｃはフィルパスのカラーチャネルの値を表し、記号Ｈは蓄積されている全てのフィルパスの累積高さ、例えば、総高さの値を表す。簡単にするため、カラーチャネルは１つだけであると仮定している。フィルパス１１がＧＤＩレイヤから受け取られるまで、フィルパス１．．．１０は現在蓄積グレーディエントフィルに順次追加されることが明白であろう。図からわかるように、このフィルパス１１は式（１）で提示した基準に適合せず、現在蓄積グレーディエントフィルには追加されない。そこで、その方法は現在蓄積グレーディエントフィルに既に蓄積されたフィルパス１．．．１０から次のようにして１つ以上のリニアブレンドを生成する。
【００５９】
好ましい方法はフィルパス１．．．１０の間の色勾配を式（２）に従ってフィルパス１．．．５の間の色勾配と比較する。この比較は、ｎが事前定義済み値より小さくないということも保証する。簡単にするため、この例ではこれを無視する。この比較は図９Ａに示されている。この比較の出力は、この場合、閾値定数Ｅ０＝０．１より大きくなるので、その方法はフィルパス［１．．．１０］をフィルパス［１．．．５］と、フィルパス［５．．．１０］の２つの集合に分割する。
【００６０】
次に、その方法はフィルパス１．．．５の間の色勾配を式（２）に従ってフィルパス１．．．３の間の色勾配と比較する。尚、ｎが奇数である場合、値ｎ／２は最も近い次に大きい整数、この場合には３に増分される。この比較は図９Ｂに示されている。この比較の出力は、この場合、閾値定数Ｅ０＝０．１より小さいので、フィルパス１．．．５についてリニアブレンドが出力される。
【００６１】
次に、方法はフィルパス５．．．１０の間の色勾配を式（２）に従ってフィルパス５．．．７の間の色勾配と比較する。尚、この特定の例においては、集合中の第１のフィルパスはフィルパス５であり、勾配はこのフィルパスから測定される。この比較は図９Ｃに示されている。この比較の出力は、この場合、閾値定数Ｅ０＝０．１より大きいので、その方法はフィルパス［５．．．１０］の集合をフィルパス［５．．．７］と、フィルパス［７．．．１０］の２つの集合に分割する。
【００６２】
次に、その方法はフィルパス５．．．７の間の色勾配を式（２）に従ってフィルパス５．．．６の間の色勾配と比較する。この比較は図９Ｃに示されている。この比較の出力は、この場合、閾値定数Ｅ０＝０．１より小さいので、フィルパス５．．．７についてリニアブレンドが出力される。同様にして、その方法は、フィルパス７．．．８の間の色勾配がフィルパス７．．．１０の間の色勾配に類似していると判定し、フィルパス７．．．１０についてリニアブレンドが出力される。ここでその方法は終了する。
【００６３】
以上の説明からわかるように、その方法は蓄積グレーディエントフィル全体をそれまでに処理された部分に従って単純に分割するのではなく、グレーディエントフィル全体の線形性に従って複数の部分に分割する。これにより、最適のリニアブレンドの集合を判定するときにグレーディエントフィルの全体が考慮されるため、最小限の数のリニアランプによって元のグレーディエントフィルに対して可能な限り最良の整合が成立することが保証される。この方法は１つのグレーディエントフィルの中のより大きな一定の傾きを識別し、それに従ってそれらを出力する。このようにして、その方法はレンダリングしなければならない図形オブジェクトの数を減少させることができる。更に、分割の中間点を第１のランプの終了点と第２のランプの開始点の双方として設定することにより、Ｍａｃｈ　Ｂａｎｄｉｎｇが回避される。
【００６４】
先に述べた通り、その方法はＧＤＩレイヤからフィルパスを順次受け取り、新たに受け取られたフィルパスが式（１）で提示した基準に適合するか否かに応じてそれらのフィルパスを現在蓄積グレーディエントフィルに追加する。この基準に適合しない場合には、新たに受け取られたフィルパスは現在蓄積グレーディエントフィルには蓄積されず、その方法は現在蓄積グレーディエントフィルの既存のフィルパスを処理して、１つ以上のリニアブレンドを生成する。新たに受け取られたフィルパスは、現在蓄積グレーディエントフィルに追加される前に、式（１）で指定した基準に加えていくつかの他の基準にも適合しているのが好ましい。例えば、新たに受け取られたフィルパスを現在蓄積グレーディエントフィルに追加するためには、新たに受け取られたフィルパスの方形高さは現在蓄積グレーディエントフィルのうちの第１のフィルパスの方形高さの２倍以下でなければならない。この基準に適合しないと、新たに受け取られたフィルパスを現在蓄積グレーディエントフィルに追加した場合、ブレンドの不連続が目に見える形で現れる。その他の基準については以下に更に詳細に説明する。
【００６５】
３．０　第１の方法
次に図１０を参照すると、１つ以上のリニアブレンドを生成する方法１００５のフローチャートが示されている。先に述べた通り、方法１００５は汎用コンピュータのプロセッサで実行されるべきソフトウェアモジュールとして実現される。好ましい方法を実現するのに適する汎用コンピュータについては、以下に図１７を参照して説明する。ソフトウェアモジュールは、グラフィックスデバイスインタフェース（ＧＤＩ）レイヤにインタフェースし、１つのページに対応する図形オブジェクトを受信して、各図形オブジェクトを中間エッジベースフォーマットに変換するグラフィックスレンダリングシステムの第１の段階の一部であるのが好ましい。グラフィックスレンダリングシステムの第２の段階では、ジョブがレンダリングされ、その結果として生成された画素はプリンタ又はグラフィックスカードなどの下流側装置へ出力される。グラフィックスレンダリングシステムの２つの段階はコンピュータのプロセッサで実行されるべきグラフィックスレンダリングソフトウェアアプリケーションとして実現されるのが好ましい。方法１００５を実現するソフトウェアモジュールとインタフェースするための適切な変形を加えた上で、どのような周知のグラフィックスレンダリングソフトウェアアプリケーションの使用も適切であろう。
【００６６】
方法１００５は、グラフィックスレンダリングシステムの第１の段階により呼び出されたときにステップ１０００で動作を開始する。方法１００５は、グラフィックスレンダリングシステムがＧＤＩレイヤから新たな図形オブジェクトを受信したときに呼び出される。このステップ１０００の後、方法１００５はステップ１０１０でグラフィックスレンダリングシステムへ現在提供されるべき図形オブジェクトを入力する。また、このステップ１０１０の間に、方法１００５は現在受信された図形オブジェクトがフィルパスであるか否かをチェックする。このステップ１０１０で、現在受信された図形オブジェクトがフィルパスではないと判定された場合、方法１００５はステップ１０４０へ進み、そこでｆｌｕｓｈ＿ｒａｍｐ１５０５と名付けられたサブプロセスが呼び出される。サブプロセスｆｌｕｓｈ＿ｒａｍｐ１５０５は現在蓄積グレーディエントフィルに既に蓄積されたフィルパスを処理して、１つ以上のリニアブレンドを生成する。それらのリニアブレンドは、この後、グラフィックスレンダリングシステムに提供される。リニアブレンドの生成後、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は蓄積されたグレーディエントフィルを空にする。このサブプロセスｆｌｕｓｈ＿ｒａｍｐ１５０５については、以下に図１５を参照して更に詳細に説明する。
【００６７】
ステップ１０４０の完了後、方法１００５は終了し（１０１１０）、現在受信されたオブジェクトが有効なフィルパスではないことを告げるメッセージＳＫＩＰをグラフィックスレンダリングシステムの第１の段階に戻す。そこで、グラフィックスレンダリングシステムの第１の段階は、可能であれば、このフィルパスをエッジベースフォーマットに変換しようとし、そうでなければこのオブジェクトを飛び越して、システムは次のオブジェクトへ進む。以上の説明から明白であろうが、現在受信された図形オブジェクトが有効なフィルパスではない場合、中間エッジベースフォーマットに変換する前に、これを方法１００５により事前処理する必要はない。
【００６８】
これに対し、ステップ１０１０で、現在受信された図形オブジェクトがフィルパスであると判定された場合には、方法１００５はステップ１０２０へ進む。ステップ１０２０で、方法１００５は現在受信フィルパスがグレーディエントフィルを形成するために必要とされる基本特性を有しているか否かをチェックする。具体的には、ステップ１０２０は現在受信フィルパスが少なくとも事前に定義された構成可能最大サイズより小さい１つの辺を有しているか、フラットカラーで塗りつぶされているか、平行四辺形を規定する４つの点を含むか、及び行き先を要求するラスタ動作を使用しないかを試験する。現在受信フィルパスがこれらの基準に適合すれば、方法１００５はステップ１０３０へ進む。これに対し、フィルパスが基準に適合しない場合には、方法１００５はステップ１０４０へ進み、ｆｌｕｓｈ＿ｒａｍｐ１５０５と名付けられたサブプロセスが呼び出される。
【００６９】
次に、方法１００５は、ステップ１０３０で、現在蓄積グレーディエントフィルのフィルパスの数がその時点で０であるか否かをチェックする。方法１００５が現在蓄積グレーディエントフィルは０のフィルパスを含むと判定した場合、方法１００５はステップ１０８０へ進む。ステップ１０８０の間、方法１００５は、現在受信フィルパスを現在空である蓄積グレーディエントフィルに追加することにより新たなグレーディエントフィルを初期化する。まだ方向が判定されていないため、フィルパスの高さはまだわからない。方向は第２のフィルパスが受信されたときに規定される。すなわち、第１のフィルパスの高さは、第２のフィルパスが第１のフィルパスと共にグレーディエントフィルの一部であると判定されたときに初めて追加可能になるのである。ステップ１０９０で呼び出されるａｄｄ＿ｒｅｃｔサブプロセス１１０５の間に、第１のフィルパスの高さは蓄積グレーディエントフィルに追加される。これに対し、現在蓄積グレーディエントフィルのフィルパスの数が０より大きい場合には、方法１００５はステップ１０５０へ進む。
【００７０】
方法１００５は、ステップ１０５０で、現在受信フィルパスを現在蓄積グレーディエントフィルに追加すべきか否かを判定するためにｃｈｅｃｋ＿ｆｉｌｌ１２０５と名付けられたサブプロセスを呼び出す。ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、フィルパスを現在蓄積グレーディエントフィルに追加すべきである場合は真を戻し、追加すべきでない場合には偽を戻す。このｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５については、図１２を参照して以下に詳細に説明する。
【００７１】
ステップ１０５０の完了後、方法１００５はステップ１０６０へ進み、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５により真又は偽のいずれが戻されたかを判定する。ステップ１０６０で真が戻されたと判定された場合、方法１００５はステップ１０９０へ進み、現在受信フィルパスが現在蓄積グレーディエントフィルに追加される。ステップ１０９０の間に、現在受信フィルパスを現在蓄積グレーディエントフィルに追加するために、方法１００５はａｄｄ＿ｒｅｃｔ１１０５と名付けられたサブプロセスを呼び出す。このサブプロセスａｄｄ＿ｒｅｃｔ１１０５については、図１１を参照して以下に更に詳細に説明する。これに対し、偽が戻されていた場合には、方法１００５はステップ１０７０へ進む。
【００７２】
ステップ１０７０の間、方法１００５は現在蓄積グレーディエントフィルを処理するために前述のサブプロセスｆｌｕｓｈ＿ｒａｍｐ１５０５を呼び出す。ステップ１０７０の完了後、方法１００５はステップ１０８０へ進み、現在受信フィルパスを現在空である蓄積グレーディエントフィルに追加することにより、新たなグレーディエントフィルを初期設定する。
【００７３】
ステップ１０８０又は１０９０の完了後、方法１００５は終了する（１０１００）。終了すると、方法１００５は、フィルパスを変換して、グラフィックスレンダリングシステムの第２の段階へ送り出す必要がないことを告げるパラメータＯＫをグラフィックスレンダリングシステムの第１の段階に戻す。
【００７４】
３．１　ａｄｄ＿ｒｅｃｔサブプロセス
次に図１１を参照すると、図１０の方法１００５により呼び出されるａｄｄ＿ｒｅｃｔサブプロセス１１０５のフローチャートが示されている。このａｄｄ＿ｒｅｃｔサブプロセス１１０５は、既に１つ以上のフィルパスを含んでいる現在蓄積グレーディエントフィルに新たなフィルパスを追加する。ａｄｄ＿ｒｅｃｔサブプロセス１１０５は、方法１００５のステップ１０９０（図１０）により呼び出されたときにステップ１１００で始まる。ステップ１０９０は、更に、現在蓄積グレーディエントフィルに追加されるべき現在受信フィルパスをこのａｄｄ＿ｒｅｃｔサブプロセス１１０５に提供する。
【００７５】
ステップ１１００の後、ａｄｄ＿ｒｅｃｔサブプロセス１１０５はステップ１１１０へ進み、現在蓄積グレーディエントフィルのフィルパスの数をチェックする。このステップ１１１０で現在蓄積グレーディエントフィルにはフィルパスが１つしか存在しないことが明示されると、ａｄｄ＿ｒｅｃｔサブプロセス１１０５はステップ１１２０へ進み、現在受信フィルパスのフィルの方向（例えば、ＶＤＯＷＮＲＩＧＨＴ）が判定される。これは、ｇｅｔ＿ａｌｉｇｎｍｅｎｔと名付けられたサブプロセス１４９５を呼び出すことにより実現される。このｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５については、図１４を参照して以下に更に詳細に説明する。これに対し、現在蓄積グレーディエントフィルに２つ以上のフィルパスが存在する場合には、ａｄｄ＿ｒｅｃｔサブプロセス１１０５は直接にステップ１１６０へ進む。
【００７６】
ステップ１１２０でフィルの方向が判定された後、ａｄｄ＿ｒｅｃｔサブプロセス１１０５はステップ１１３０へ進む。ステップ１１３０では、スイッチステートメントを使用して方向を横方向（ＨＤＯＷＮＲＩＧＨＴ、ＨＵＰＲＩＧＨＴ、ＨＤＯＷＮＬＥＦＴ又はＨＵＰＬＥＦＴ）ランプと、縦方向（ＶＤＯＷＮＲＩＧＨＴ、ＶＵＰＲＩＧＨＴ、ＶＤＯＷＮＬＥＦＴ又はＶＵＰＬＥＦＴ）ランプに分割する。ランプが横方向ランプであれば、現在蓄積グレーディエントフィルの第１のフィルパス及び受信されたフィルパスの方形高さをｘ平面で規定する（図７Ｂを参照）ステップ１１４０が実行される。第１のフィルパスの高さは現在蓄積グレーディエントフィルに蓄積される。これに対し、ランプが縦方向である場合には、現在蓄積グレーディエントフィルの第１のフィルパス及び現在受信フィルパスの方形高さをｙ平面で規定する（図７Ａを参照）ステップ１１５０が実行される。第１のフィルパスの高さは現在蓄積グレーディエントフィルに蓄積される。
【００７７】
ステップ１１４０又は１１５０の完了後、ａｄｄ＿ｒｅｃｔサブプロセス１１０５はステップ１１６０へ進み、このフィルパス及び先行する全てのフィルパス（存在していれば）の累積高さを高さ配列に蓄積する。現在受信フィルパスの色は色配列に追加され、フィルの数も増分される。現在受信フィルパスの点を保持するために、点配列も更新される。ステップ１１６０の完了後、ａｄｄ＿ｒｅｃｔサブプロセス１１０５は終了し、方法１００５のステップ１０１００に戻る。
【００７８】
３．２　ｃｈｅｃｋ＿ｆｉｌｌサブプロセス
次に図１２を参照すると、図１０の方法１００５のステップ１０５０により呼び出されるｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５のフローチャートが示されている。このｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、現在受信フィルパスが現在蓄積グレーディエントフィルに追加するのに適しているか否かをチェックする。ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、方法１００５のステップ１０５０（図１０）により呼び出されたときにステップ１２００で始まる。ステップ１０５０は、更に、現在受信フィルパスをこのｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５に提供する。
【００７９】
ステップ１２００の後、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はステップ１２１０へ進む。ステップ１２１０で、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はＲＧＢＡ／ＣＭＹＫ（使用される色空間に依存する）色値の各々について現在受信フィルパスの色と、現在蓄積グレーディエントフィルの最近追加されたフィルパスの色との差（すなわち、Ｃｎ−Ｃｎ−１）を計算する。蓄積グレーディエントフィルの最近追加されたフィルパスの色は色配列の最後の位置に蓄積されている色である。ステップ１２１０の完了後、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はステップ１２２０へ進む。
【００８０】
ステップ１２２０の間、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、まず、現在グレーディエントフィルに蓄積されているフィルパスが１つだけであるか否かを試験する。第２に、現在受信フィルパスが現在蓄積グレーディエントフィルと整列されているかを試験する。第３に、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌと名付けられたサブプロセス１３０５を呼び出すことにより、現在蓄積グレーディエントフィルのフィルパスが現在受信フィルパスと共に正しく見えるか否かを試験する。第４及び最後に、新たなフィルパスが現在蓄積グレーディエントフィルにおける以前に追加されたフィルパスと同じクリッピング領域及び同じラスタ操作を有するかを試験する。このｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５については、図１３を参照して以下に更に詳細に説明する。これらの試験全ての応答が肯定であれば、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はステップ１２４０へ進む。これに対し、これらの試験のいずれか１つが肯定でない場合には、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はステップ１２３０へ進む。尚、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は試験の各々を順次評価し、ある試験に対する応答が肯定でない場合には、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は後続する試験を評価せずに直ちにステップ１２３０へ進む。例えば、現在蓄積グレーディエントフィルにフィルパスは１つしか存在せず且つフィルが整列されている場合、第１の試験及び第２の試験に適合しているので、第３の試験はｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５を呼び出す。これに対し、例えば、現在蓄積グレーディエントフィルに２つ以上のフィルパスが存在する場合には、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は後続の試験を評価せずに直ちにステップ１２３０へ進む。従って、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は、現在受信フィルパスが適正に整列されており且つ蓄積グレーディエントフィルが唯１つのフィルパスを含む場合に限り呼び出される。
【００８１】
ステップ１２４０の間、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、初めの２つのフィルパスの高さが類似しているか否かをチェックする。ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、現在受信フィルパスの方形高さが現在蓄積グレーディエントフィルのフィルパスの方形高さの２倍を超えないかを試験することによりこの類似性をチェックするのが好ましい。尚、ステップ１２４０の間、現在蓄積グレーディエントフィルにはフィルパスは１つしか存在していない。チェックで高さが類似していることが明示されれば、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はステップ１２５０へ進む。これに対し、チェックで２つの高さが類似していないことが明示された場合には、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は終了し（１２６０）、現在受信フィルパスを現在蓄積グレーディエントフィルに追加すべきでないことを指示するＦＡＬＳＥを方法１００５のステップ１０５０に戻す。
【００８２】
ステップ１２５０の間、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、ステップ１２１０の間に計算された２つのフィルパスの色勾配を蓄積する。ステップ１２５０の後、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は終了し（１２６０）、方法１００５のステップ１０５０にＴＲＵＥを戻す。そこで、方法１００５は新たなフィルパスを蓄積グレーディエントフィル（この時点では唯１つのフィルパスを含んでいるだけである）に追加する。
【００８３】
これに対し、ステップ１２２０で必要条件のうちのいずれか１つに適合しない場合には、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はステップ１２３０へ進む。ステップ１２３０で、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は、現在受信フィルパスが現在蓄積グレーディエントフィルに追加されるのに適する候補であるか否かをチェックする。ステップ１２３０はこれを、
１．現在蓄積グレーディエントフィルにおけるフィルの数が２以上であること。
【００８４】
２．現在蓄積グレーディエントフィルの累積高さと、現在受信フィルパスの方形高さとの和が、フィルがページを超えないような値に設定することができる事前定義済み最大値未満であること。
【００８５】
３．現在受信フィルパスと、現在蓄積グレーディエントフィルパスにおける最近追加されたフィルパスとの間の色勾配が蓄積されている勾配と同じ符号を有し且つ類似していること。勾配は使用される色空間内の色指標の各々についてチェックされる（例えば、色空間がＲＧＢＡである場合、指標Ｒ、Ｇ、及びＢの各々が一貫性に関してチェックされる）。現在受信フィルパスの、カラーチャネルごとのカラーチャネル値Ｃｎが先に挙げた式（１）の関係のうちの１つを満たすことを保証するためにチェックするのが好ましい。
【００８６】
４．現在受信フィルパスが現在蓄積グレーディエントフィルのフィルパスと正しく整列されていること。
【００８７】
５．現在受信フィルパスが現在蓄積グレーディエントフィルの最も近い時点で追加されたフィルパスと類似する高さ（方形高さ）であること。現在受信フィルパスの方形高さが現在蓄積グレーディエントフィルの第１のフィルパスの方形高さの２倍を超えないか否かを試験することにより、この類似性をチェックするのが好ましい。
【００８８】
６．現在受信フィルパスに対するラスタ操作が蓄積グレーディエントフィルに対するラスタ操作と同じであること。
【００８９】
７．現在受信フィルパスが蓄積グレーディエントフィルと同じクリップを有すること。
を保証するためにチェックすることにより実行する。
【００９０】
ステップ１２３０で、現在受信フィルパスが上記のチェック１〜７の全てに合格すると判定された場合、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５は終了し（１２６０）、方法１００５のステップ１０５０にＴＲＵＥを戻す。そこで、方法１００５は新たなフィルパスを現在蓄積グレーディエントフィルに追加する（１０９０）。これに対し、チェック１〜７のうちのいずれか１つに不合格である場合には、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５はステップ１２６０で終了し、方法１００５のステップ１０５０にＦＡＬＳＥを戻す。そこで、方法１００５は現在受信フィルパスを現在蓄積グレーディエントフィルに追加しない。
【００９１】
３．３　ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス
次に図１３を参照すると、図１２のｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５のステップ１２２０により呼び出されるｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５のフローチャートが示されている。このｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は、現在蓄積グレーディエントフィルの唯１つのフィルパスと現在受信フィルパスがグレーディエントフィルを作成するのに適していることを判定する。ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５のステップ１２２０（図１２）により呼び出されたときにステップ１３００で始まる。更に、ステップ１２２０は、ステップ１３００の間に、現在受信フィルパスをこのｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５に提供する。
【００９２】
ステップ１３００の後、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３１０へ進む。ステップ１３１０の間、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は、まず、カラーチャネル（例えば、赤、緑、青及びアルファ）の各々について現在受信フィルパスの色と現在蓄積グレーディエントフィルの唯１つのフィルパスとの色差の絶対値を計算する。ステップ１３１０の間に、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は、次に、計算された色差の絶対値の中で最も高い値を有する絶対値（これを最大色勾配と呼ぶ）を判定し、格納する。ステップ１３１０の完了後、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３３０へ進む。
【００９３】
ステップ１３３０の間、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は最大色勾配（ステップ１３１０の間に計算された）が事前定義済み最大値未満であるか否かをチェックする。事前定義済み最大値は６であるのが好ましい。チェック１３３０で最大色勾配が事前定義済み最大値未満であることが明示されれば、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は終了し（１３１００）、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５（図１２）のステップ１２２０にＴＲＵＥを戻す。これは、グレーディエントフィルを作成すべきであることをｃｈｅｃｋ＿ｆｉｌｌプロセス１２０５（図１２）に通知する。これに対し、チェック１３３０で最大色勾配が事前定義済み最大値以上であることが明示された場合には、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３４０へ進む。この場合、グレーディエントフィルを作成すべきであるという可能性は依然として残っている。すなわち、個々のフィルパスの高さが非常に小さい場合には可能であり、これはステップ１３４０〜１３９０の間に判定される。
【００９４】
ステップ１３４０で、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は、フィルパスの整列を判定するためにｇｅｔ＿ａｌｉｇｎｍｅｎｔと名付けられたサブプロセス１４９５を呼び出す。このｇｅｔ＿ａｌｉｇｎｅｍｎｔサブプロセス１４９５は現在受信フィルパスと、現在蓄積グレーディエントフィルの唯１つのフィルパスとの整列状態（例えば、ＶＤＯＷＮＬＥＦＴ）をｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５に戻す。ステップ１３４０で呼び出されたｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５の終了後、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３５０へ進む。
【００９５】
ステップ１３５０で、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３４０により戻された整列状態をチェックする。チェック１３５０で方向が全く規定されていないことが明示された場合、すなわち、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５がＮＯＮＥを戻した場合、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は終了し（１３１００）、グレーディエントフィルを作成すべきでないことを指示するＦＡＬＳＥをｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５のステップ１２２０に戻す。チェック１３５０で方向が横方向であることが明示された場合、すなわち、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５がＨＤＯＷＮＬＥＦＴ、ＨＵＰＬＥＦＴ、ＨＤＯＷＮＲＩＧＨＴ又はＨＵＰＲＩＧＨＴを戻した場合には、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３６０へ進む。これに対し、チェック１３５０で方向が縦方向であることが明示された場合、すなわち、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５がＶＤＯＷＮＬＥＦＴ、ＶＵＰＬＥＦＴ、ＶＤＯＷＮＲＩＧＨＴ又はＶＵＰＲＩＧＨＴを戻した場合には、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３９０へ進む。
【００９６】
ステップ１３６０の間、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は現在受信フィルパスの方形高さをｘ座標方向に進む平行四辺形の辺の長さに設定する（図７Ｂを参照）。これに対し、ステップ１３９０では、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は現在受信フィルパスの方形高さをｙ座標方向に進む平行四辺形の辺の長さに設定する（図７Ａを参照）。ステップ１３６０又は１３９０の完了後、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５はステップ１３８０へ進む。
【００９７】
ステップ１３８０で、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は、ステップ１３６０又は１３９０で計算された方形高さが何らかの事前定義済み最大高さより小さく且つ０より大きいか否かを知るために方形高さをチェックする。チェック１３８０でこの条件を満たさないことが明示されれば、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は終了し（１３１００）、このサブプロセスを呼び出したｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５のステップ１２２０にＦＡＬＳＥを戻す。これはグレーディエントフィルを作成すべきでないことを指示している。これに対し、チェック１３８０で方形高さが事前定義済み最大高さより小さく且つ０より大きいことが明示された場合には、ｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５は終了し（１３１００）、このサブプロセスを呼び出したｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５のステップ１２２０にＴＲＵＥを戻す。これは、２つのフィルパス、すなわち、現在受信フィルパスと現在蓄積グレーディエントフィルの唯１つのフィルパスがグレーディエントフィルを作成するのに適する可能性があることを指示している。
３．４　ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス
次に図１４Ａから図１４Ｃを参照すると、図１１、図１２及び図１３のａｄｄ＿ｒｅｃｔサブプロセス１１０５、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５及びｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５によりそれぞれ呼び出されるｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５のフローチャートが示されている。このｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルの唯１つのフィルパス及び現在受信フィルパスから現在構成されている勾配の方向を判定する。ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス１２０５のステップ１２２０（図１２）、ａｄｄ＿ｒｅｃｔサブプロセス１１０５のステップ１１２０（図１１）又はｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセス１３０５のステップ１３４０（図１３）のいずれかにより呼び出されたときにステップ１４００で始まる。これらのステップ１２２０、１１２０及び１３４０はステップ１４００の間に現在受信フィルパスをこのｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５に提供する。
【００９８】
ステップ１４００の完了後、ｇｅｔ＿ａｓｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４０１へ進み、現在受信フィルパスが方形であるか否かをチェックする。チェック１４０１で現在受信フィルパスが方形であることが明示されれば、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４０２へ進む。ステップ１４０２で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在受信フィルパスと現在蓄積グレーディエントフィルの唯１つのフィルパスがｘ平面において整列されているか否かをチェックする。チェック１４０２でそれらがｘ平面で整列されていることが明示されれば、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４０４へ進む。これに対し、チェック１４０２でそれらのフィルパスがｘ平面で整列されていないことが明示された場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４０３へ進む。
【００９９】
ステップ１４０３で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在受信フィルパスが現在蓄積グレーディエントフィルの唯１つのフィルパスの上の辺に連接しているか否かをチェックする。チェック１４０３がＴＲＵＥ（ｙｅｓ）を戻すと、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したサブプロセスに方向ＵＰを戻す。これに対し、チェック１４０３がＦＡＬＳＥ（ｎｏ）を戻した場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４０６へ進む。
【０１００】
ステップ１４０６で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在受信フィルパスが現在蓄積グレーディエントフィルの唯１つのフィルパスの下の辺に連接しているか否かをチェックする。チェック１４０６がＴＲＵＥ（ｙｅｓ）を戻すと、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したサブプロセスに方向ＤＯＷＮを戻す。これに対し、チェック１４０６がＦＡＬＳＥ（ｎｏ）を戻した場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したサブプロセスに方向ＮＯＮＥを戻す。この場合、フィルパスは連接しておらず、ブレンドが存在しないことを指示していることが明白であろう。
【０１０１】
ステップ１４０４では、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在受信フィルパスが現在蓄積グレーディエントフィルの唯１つのフィルパスの左の辺に連接しているか否かをチェックする。チェック１４０４がＴＲＵＥ（ｙｅｓ）を戻すと、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したサブプロセスに方向ＬＥＦＴを戻す。これに対し、チェック１４０４がＦＡＬＳＥ（否定）を戻した場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４０５へ進む。
【０１０２】
ステップ１４０５で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在受信フィルパスが現在蓄積グレーディエントフィルの唯１つのフィルパスの右の辺に連接しているか否かをチェックする。チェック１４０５がＴＲＵＥ（ｙｅｓ）を戻すと、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したサブプロセスに方向ＲＩＧＨＴを戻す。これに対し、チェック１４０５がＦＡＬＳＥ（ｎｏ）を戻した場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したサブプロセスに方向ＮＯＮＥを戻す。この場合、フィルパスは連接しておらず、ブレンドが存在しないことを指示していることが明白であろう。
【０１０３】
これに対し、チェック１４０１で現在受信フィルパスが方形でないことが明示された場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４１０へ進む。ステップ１４１０で、現在受信フィルパスと現在蓄積グレーディエントフィルの唯１つのフィルパスの点１．ｙが整列しているか否かを知るためにそれらのフィルパスをチェックする。整列していれば、グレーディエントフィルは横方向型のフィル（図６Ａから図６Ｄ）であり、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４２０へ進む。そうでない場合には、グレーディエントフィルは縦方向型のフィル（図５Ａから図５Ｄ）であり、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４８０へ進む。
【０１０４】
ステップ１４２０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルの点１．ｘがｘ平面において点４．ｘより小さいか否かを知るためにこのフィルパスをチェックする。小さければ、フィルはＨＤＯＷＮＲＩＧＨＴ、ＨＵＰＲＩＧＨＴ又はＮＯＮＥ（図６Ａ又は図６Ｂ）であり、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４５０へ進む。ステップ１４５０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は現在蓄積グレーディエントフィルのフィルパスの点１がバウンディング方形の上の境界の付近に位置しているか否かをチェックする。位置していれば、フィルはＨＤＯＷＮＲＩＧＨＴフィル（図６Ａを参照）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップにＨＤＯＷＮＲＩＧＨＴを戻す。そうでない場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４６０へ進む。ステップ１４６０では、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は現在蓄積グレーディエントフィルのフィルパスの点１がバウンディング方形の下の境界の付近に位置しているか否かをチェックする。位置していれば、フィルはＨＵＰＲＩＧＨＴフィル（図６Ｂを参照）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップにＨＵＰＲＩＧＨＴを戻す。そうでない場合には、フィルは方向を持たない、すなわち、ＮＯＮＥであると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し、このサブプロセスを呼び出したステップに値ＮＯＮＥを戻す。
【０１０５】
これに対し、ステップ１４２０でｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５が現在蓄積グレーディエントフィルの唯１つのフィルパスの点１．ｘはｘ平面において点４．ｘ以上であると判定した場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４３０へ進む。ステップ１４３０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は現在蓄積グレーディエントフィルの唯１つのフィルパスの点１がｘ平面におけるその点４より大きいか否かをチェックする。そうでない場合には、フィルは方向を持たない（すなわち、ＮＯＮＥ）と考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＮＯＮＥを戻す。大きい場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４４０へ進む。
【０１０６】
ステップ１４４０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は現在蓄積グレーディエントフィルの唯１つのフィルパスの点１．ｙがｙ平面においてバウンディング方形の上の境界の付近に位置しているか否かをチェックする。位置していない場合には、このフィルはＨＵＰＬＥＦＴ（図６Ｄ）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＨＵＰＬＥＦＴを戻す。位置している場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４７０へ進む。ステップ１４７０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は現在蓄積グレーディエントフィルの唯１つのフィルパスの点１．ｙがｙ平面においてバウンディング方形の下の境界の付近に位置しているか否かを検査する。位置していれば、フィルはＨＤＯＷＮＬＥＦＴフィル（図６Ｃを参照）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＨＤＯＷＮＬＥＦＴを戻す。そうでない場合には、フィルは方向を持たない（ＮＯＮＥ）と考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＮＯＮＥを戻す。
【０１０７】
ステップ１４８０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在受信フィルパスと現在蓄積グレーディエントフィルの蓄積フィルパスが点１について同じｘ値を有するか否かをチェックする。これが真でない場合、これらのフィルパスは整列されておらず、グレーディエントフィルを形成しないので、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し、このサブプロセスを呼び出したステップに値ＮＯＮＥを戻す。真である場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４９０へ進む。
【０１０８】
ステップ１４９０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルの蓄積フィルパスの点１がｙ平面において同じフィルパスの点４より小さいか否かを試験する。これが真である場合、フィルはＶＤＯＷＮＬＥＦＴ又はＶＤＯＷＮＲＩＧＨＴ（図５Ａ及び図５Ｂを参照）のいずれかであり、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４１２０へ進む。
【０１０９】
ステップ１４１２０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルの蓄積フィルパスの点１がバウンディング方形の右の辺の付近に位置しているか否かを検査する。これが真であれば、フィルはＶＤＯＷＮＬＥＦＴ（図５Ｂを参照）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＶＤＯＷＮＬＥＦＴを戻す。そうでない場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４１３０へ進む。
【０１１０】
ステップ１４１３０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルの蓄積フィルパスの点１がバウンディングボックスの左の辺の付近に位置しているか否かをチェックする。これが真であれば、フィルはＶＤＯＷＮＲＩＧＨＴ（図５Ａを参照）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＶＤＯＷＮＲＩＧＨＴを戻す。そうでない場合には、フィルパスは整列しているとは考えられず、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＮＯＮＥを戻す。
【０１１１】
これに対し、ステップ１４９０が偽（Ｎｏ）を戻した場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４１００へ進む。ステップ１４１００で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルの蓄積フィルパスの点１が同じフィルパスの（ｙ平面における）点４より大きいか否かをチェックする。大きくないならば、フィルパスは整列されていないと考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＮＯＮＥを戻す。大きい場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４１１０へ進む。
【０１１２】
ステップ１４１００で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルに蓄積された唯１つのフィルパスの点１がバウンディング方形の右の辺の付近に位置しているか否かを知るためにこの点をチェックする。これが真であれば、フィルはＶＵＰＬＥＦＴ（図５Ｃを参照）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＶＵＰＬＥＦＴを戻す。真ではない場合には、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５はステップ１４１４０へ進む。
【０１１３】
ステップ１４１４０で、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は、現在蓄積グレーディエントフィルのフィルパスの点１がバウンディングボックスの左の辺の付近に位置しているか否かを知るためにこの点をチェックする。これが真であれば、フィルはＶＵＰＲＩＧＨＴ（図５Ｄを参照）であると考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＶＵＰＲＩＧＨＴを戻す。真ではない場合には、フィルパスは整列されていないと考えられ、ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス１４９５は終了し（１４１５０）、このサブプロセスを呼び出したステップに値ＮＯＮＥを戻す。
【０１１４】
以上の説明からわかるように、整列又は不整列が判定されたどの段階においても、整列状態は単純に呼び出し側サブプロセスに戻される。
【０１１５】
３．５　ｆｌｕｓｈ＿ｒａｍｐサブプロセス
次に図１５を参照すると、方法１００５のステップ１０４０及び１０７０により呼び出されるｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５のフローチャートが示されている。このｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は主に現在蓄積グレーディエントフィルをフラッシングする。ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は、方法１００５のステップ１０４０及び１０７０（図１０）により呼び出されたときにステップ１５００で始まる。開始ステップ１５００の後、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５はステップ１５１０へ進む。
【０１１６】
ステップ１５１０で、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は現在蓄積グレーディエントフィルのフィルパスの数をチェックする。チェック１５１０でフィルパスが存在しないことが明示されると、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は終了し（１５６０）、このサブプロセスを呼び出したステップ１０４０又は１０７０にグレーディエントフィルが既にフラッシングされていることを戻す。これに対し、チェック１５１０で現在蓄積グレーディエントフィルに１つ以上のフィルパスが存在することが明示された場合には、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５はステップ１５２０へ進む。
【０１１７】
ステップ１５２０で、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は現在蓄積グレーディエントフィルのフィルの数を再びチェックする。この時点で、チェック１５２０によりフィルの数が１であることが明示されると、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５はステップ１５３０へ進む。ステップ１５３０では、唯１つのフィルパスをエッジベースフォーマットに変換するためにグラフィックスレンダリングシステムの第１の段階で外部関数ｄｒａｗ＿ｆｌａｔに対する呼び出しを実行する。ステップ１５３０の完了後、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５はステップ１５５０へ進む。これに対し、チェック１５２０で現在蓄積グレーディエントフィルのフィルパスの数が２以上であることが明示された場合には、ステップ１５４０でｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓ関数１６０５が呼び出される。ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓ関数１６０５は現在蓄積グレーディエントフィルをいくつかの最適リニアブレンドに分割し、それらをエッジベースフォーマットに変換するためにグラフィックスレンダリングシステムの第１の段階へ出力する。ｆｉｎｄ＿ａｎｄ＿ｉｎｐｕｔ＿ｒａｍｐｓ関数１６０５については、以下に図１６を参照して更に詳細に説明する。ステップ１５４０でｆｉｎｄ＿ａｎｄ＿ｉｎｐｕｔ＿ｒａｍｐｓ関数１６０５が完了した後、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５はステップ１５５０へ進む。
【０１１８】
ステップ１５５０で、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は現在蓄積グレーディエントフィルの全てのフィルパスをフラッシングし、変数ｎｕｍｆｉｌｌｓを０にリセットする。ステップ１５５０の完了後、ｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５は終了し、このサブプロセスを呼び出した方法１００５のステップ１０４０又は１０７０（図１０）に戻る。
【０１１９】
３．６　ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス
次に図１６を参照すると、図１５のｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５のステップ１５４０により最初に呼び出されるｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５のフローチャートが示されている。ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓ関数１６０５は現在蓄積グレーディエントフィルをいくつかの最適リニアブレンドに分割し、それらをエッジベースフォーマットに変換するためにグラフィックスレンダリングシステムの第１の段階へ出力する。以下の説明から明白になるであろうが、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５は再帰的サブプロセスである。ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はステップ１６００で始まり、現在蓄積グレーディエントフィルパスのフィルパスの集合の色配列、点配列及び高さ配列を入力として受け取る。ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５がｆｌｕｓｈ＿ｒａｍｐプロセス１５０５のステップ１５４０（図１５）により最初に呼び出されたとき、現在蓄積グレーディエントフィルのフィルパスの集合全ての色配列、点配列及び高さ配列はｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５に提供される。説明の便宜上、フィルパスの集合全体をフィルパス［１．．．ｎ］と表し、色配列、点配列及び高さ配列をそれぞれＣ［１．．．ｎ］、ｐｏｉｎｔｓ［１．．．ｎ］及びＨ［１．．．ｎ］と表す。
【０１２０】
開始ステップ１６００の後、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はステップ１６１０へ進む。ステップ１６１０で、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５は、フィルパスの集合［１．．．ｎ］の第１の半分の色勾配が先に挙げた式（２）に従ってフィルパス［１．．．ｎ］の集合全体の色勾配（例えば、ＲＧＢＡフラットカラーの場合には赤色チャネル、緑色チャネル、青色チャネル及びアルファチャネル）に類似していないかをチェックする。また、ステップ１６１０はｎが５又はそれに類似する大きさの数に設定されているのが好ましい事前定義済み最小値以上であるか否かもチェックする。チェック１６１０で色勾配が類似していない、すなわち、式（２）の必要条件に適合しないこと及びｎが何らかの事前定義済み最小値以上であることが明示されると、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はステップ１６３０へ進む。そうでない場合には、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はステップ１６２０へ進む。
【０１２１】
ステップ１６３０で、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はフィルパス［１．．．ｎ］の点配列、色配列及び高さ配列を２組の点配列、色配列及び高さ配列（Ｃ［１．．ｎ／２］、Ｈ［１．．ｎ／２］、Ｐ［１．．ｎ／２］）及び（Ｃ［ｎ／２．．ｎ］、Ｈ［ｎ／２．．ｎ］、Ｐ［ｎ／２．．ｎ］）に分割する。尚、ｎは配列の大きさであり、ｎが奇数である場合、ｎ／２を次に大きい整数まで増加させる。ステップ１６３０の完了後、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はステップ１６４０へ進む。
【０１２２】
ステップ１６４０で、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５は新たな２組の配列（Ｃ［１．．ｎ／２］、Ｈ［１．．ｎ／２］、Ｐ［１．．ｎ／２］）及び（Ｃ［ｎ／２．．ｎ］、Ｈ［ｎ／２．．ｎ］、Ｐ［ｎ／２．．ｎ］）の各々に対してｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５を順次呼び出す。ステップ１６４０の完了後、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５は終了し（１６６０）、方法１００５はｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５のステップ１５５０（図１５）に戻る。
【０１２３】
ステップ１６２０では、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はフィルの方向に従って総高さを計算し、グレーディエントフィルを適用すべき点を規定するために必要な２つの点を計算する。これら２つの点は、グレーディエントフィルを正しい方向に適用できるように計算されなければならない（図８Ａから図８Ｃを参照）。第１の点は常に蓄積されているフィルパス点の点１として定義されている。第２の点（Ｑ，Ｐ）は、グレーディエントフィルが横方向型であるか又は縦方向型であるかに応じて、総高さ及び図１４Ａから図１４Ｃに示す公式を使用することにより求められる。
【０１２４】
ステップ１６２０の完了後、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５はステップ１６５０へ進む。ステップ１６５０の間、ステップ１６２０で判定された２つの点、開始色及び画素ごと、カラーチャネルごとの色勾配を使用してリニアブレンドを生成し、それをグラフィックスレンダリングシステムへ出力する外部関数ｄｒａｗ＿ｂｌｅｎｄに対する呼び出しを実行する。リニアブレンドを生成するには、周知のどのような関数でも適切であろう。ステップ１６５０の完了後、ｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５は終了し、このサブプロセスを呼び出したステップ１６４０又は１５４０に戻る。
【０１２５】
以上説明した方法１００５及びサブプロセスは特定の制御フローを構成する。方法１００５には、本発明の趣旨から逸脱することなく異なる制御フローを使用する他の変形例も存在している。更に、方法１００５の１つ以上のステップは順次実行されるのではなく、並行して実行されても良い。
【０１２６】
４．０　別の方法
リニアブレンドを生成する別の方法は、先に説明した方法１００５を図１８に示すように変形することにより実行されても良い。この代替方法は主にｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセスを相当に簡略化することから始まり、更に、その結果としてその他のサブプロセスのうちのいくつかを変形している。以下の説明中、先に説明したステップ及びプロセスと共通する方法のステップ及びプロセスは同じ図中符号を使用して指示される。
【０１２７】
図１８に示すように、代替方法１８０５は、先に説明したようにそれぞれ動作するステップ１０１０、１０２０、１０３０及び１０４０へ移行する開始ポイント１８００を有する。ステップ１０３０で「ＮＯ」の結果が出されると、グレーディエントフィルをチェックするためのステップ１８５０が呼び出される。ステップ１８５０は図２０に示すｍｏｄｉｆｉｅｄ＿ｃｈｅｃｋ＿ｆｉｌｌサブプロセス２００５を呼び出す。サブプロセス２００５は、先に説明したように動作するステップ１２１０へ進み、決定ステップ２００２へ移行する開始ポイント２０００を有する。
【０１２８】
決定ステップ２００２の間に、ｍｏｄｉｆｉｅｄ＿ｃｈｅｃｋ＿ｆｉｌｌサブプロセス２００５は、まず、現在グレーディエントフィルに蓄積されているのが唯１つのフィルパスであるか否かをチェックする。第２に、図２１を参照して以下に説明するａｌｔｅｒｎａｔｅ＿ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス２１０５を呼び出すことにより、現在受信フィルパスが現在蓄積グレーディエントフィルと整列されていることをチェックする。第３に、図１３のｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌのフローチャートを変形したサブプロセスを呼び出すことにより、現在蓄積グレーディエントフィルのフィルパスが現在受信フィルパスと共に正しく見えるか否かをチェックする。この変形は特に示されていないが、以下の説明及び図１３から明白であろう。変形サブプロセスにおいては、図１３のチェック１３３０で最大色勾配が事前定義済み最大値以上であること（すなわち、ＮＯ）が明示された場合、この変形のｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセスは１３１００ですぐ終了し、ｍｏｄｉｆｉｅｄ＿ｃｈｅｃｋ＿ｆｉｌｌサブプロセス２００５のステップ２００２（図２０）にＦＡＬＳＥを戻す。この変形された実現形態では、図１３のステップ１３４０、１３５０、１３６０、１３８０及び１３９０は全く省略されている。これは、ｍｏｄｉｆｉｅｄ＿ｃｈｅｃｋ＿ｆｉｌｌプロセス２００５（図２０）にグレーディエントフィルを作成すべきではないことを通知する。決定ステップ２００２は、最後に、現在受信フィルパスのクリップ及びラスタ操作（ＲＯＰ）が現在蓄積グレーディエントフィルに蓄積されているフィルパスと同じであるか否かをチェックする。クリップオブジェクトは、一貫したクリップをチェックするために使用できる固有の識別子を含む。この固有の識別子はＧＤＩレイヤにより設定される。フィルパス自体と同じエリアを使用するクリッピング領域はＮＵＬＬクリップとして扱われる。
【０１２９】
図２０のｍｏｄｉｆｉｅｄ＿ｃｈｅｃｋ＿ｆｉｌｌサブプロセス２００５のその他のステップは図１２に関して先に説明したステップに対応しているので、ここで繰り返して説明する必要はない
ａｌｔｅｒｎａｔｅ＿ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセス２１０５が呼び出されると、プロセスは図２１に示す開始ポイント２１００へ移行する。
【０１３０】
ステップ２１１０では、ある辺を「ｃｈｏｓｅｎ＿ｓｉｄｅ（選択辺）」とすべく取り上げる。選択辺は、フィルパスを構成する点に基づいている。新たなフィルパスと蓄積フィルパスは共にある１つの時点で同じ選択辺を有する。この点に関して、選択辺はある１つのフィルパスの点０と点１との間に位置する辺として定義されても良い。方向はまだ判定されていないため、幅は選択辺の長さであり、高さは選択辺に隣接する辺の長さであると仮定される。ステップ２１１０においてこのサブプロセスの中でｃｈｏｓｅｎ＿ｓｉｄｅが既に割り当てられていた場合、次の辺がｃｈｏｓｅｎ＿ｓｉｄｅとして割り当てられる。サブプロセス２１０５が１度呼び出されるたびに、ｃｈｏｓｅｎ＿ｓｉｄｅに辺が２度以上割り当てられることはない。
【０１３１】
次に、ステップ２１２０は新たに受信されたフィルパスの幅が蓄積フィルパスの幅と同じであるか否か及びそれらの幅の傾きが類似していることをチェックする。２つの隣接するフィルパスが厳密には同じでないことが判明する場合はしばしばある。アルゴリズムの中には、第１のフィルパスと比較される新たなフィルパスの幅及び長さのわずかな相違を許容するための定義自在の許容誤差（ｄｅｆｉｎａｂｌｅ　ｔｏｌｅｒａｎｃｅ）がある。ある特定のフィルパスの幅と高さは、フィルパスを構成する点の個別のｘ成分及びｙ成分を使用して計算される。それらの計算で使用される許容誤差は個々のｘ成分及びｙ成分に対して±１画素であるのが好ましいが、システムの条件に応じて容易に変更される。この許容差は傾きの類似性をチェックするときにも使用される。ステップ２１２０は、次に、新たなフィルパスの高さが蓄積されている第１のフィルパスの高さの２倍以上であることをチェックする。高さが十分に類似していれば、ステップ２１２０はステップ２１３０へ進み、そうでない場合にはステップ２１４０へ進む。
【０１３２】
次に、ステップ２１３０は、新たに受信されたフィルパスの選択辺とは反対側の辺が蓄積フィルパスの選択辺と一致する又は重なり合うか否かをチェックする。正当な重なり合いとなるためには、新たなフィルパスと蓄積フィルパス双方の全幅が重なり合っていなければならない。そのような重なり合いを判定するときに使用される構成自在の許容誤差（ｃｏｎｆｉｇｕｒａｂｌｅ　ｔｏｌｅｒａｎｃｅ）があり、これはｘ方向及びｙ方向に±１画素の大きさであるのが好ましい。また、重なり合いは、その高さが現在蓄積グレーディエントフィルの最後のフィルパスの高さの１／２未満である場合に限り有効である。互いに触れあわない別個のフィルパスは、それらが上記の許容差レベルの範囲内にあっても一致している又は重なり合っているとは考えられない。辺が一致しているか、又は重なり合っている場合、方向を規定することができ、ステップ２１５０へ進む。これに対し、辺が一致しないか、又は重なり合わない場合には、方向判定できず、ステップ２１３０はステップ２１４０へ進む。
【０１３３】
ステップ２１５０で、現在蓄積リニアランプに方向を割り当てる。方向は現在選択辺に基づいている。選択辺が０１であれば、方向はＤＩＲ＿２１であり、選択辺が１２であれば、方向はＤＩＲ＿０１であり、選択辺が２３であれば、方向はＤＩＲ＿１２であり、選択辺が３０であれば、方向はＤＩＲ＿１０である。その後、サブプロセスは終了し（２１６０）、このサブプロセスを呼び出したステップ２００２に適切な方向を戻す。
【０１３４】
ステップ２１４０で、４つの辺全てが選択辺として取り上げられていれば、可能な全ての整列状態が使用されたことになり、フィルパスに方向を割り当てることができないので、このサブプロセスを呼び出したステップ２００２にＤＩＲ＿ＮＯＮＥを戻す（２１７０）。４つの辺がまだ全て使用されているのではない場合には、アルゴリズムはステップ２１１０へ進む。
【０１３５】
ステップ１８５０の後、代替方法１８０５は、ステップ１８６０で、ｍｏｄｉｆｉｅｄ＿ｃｈｅｃｋ＿ｆｉｌｌサブプロセス２００５がＴＲＵＥを戻したか否かをチェックする。戻していなければ、先に説明したようにステップ１０７０及び１０８０が動作する。戻していた場合には、次にステップ１８９０が実行され、図１９のｍｏｄｉｆｉｅｄ＿ａｄｄ＿ｒｅｃｔサブプロセス１９０５を使用してフィルパスが追加される。このサブプロセス１９０５は方法１００５又は１８０５のいずれかに使用できる。サブプロセス１９０５は開始ポイント１９００を有し、先に説明したように動作するステップ１１１０へ進む。フィルの数が１である（すなわち、Ｙｅｓ）場合、ステップ１９３０へ進み、図２３Ａから図２３Ｄに示すように、フィルの方向から直接にフィルの高さを判定する。これで、先にステップ１１２０、１１３０、１１４０及び１１５０（図１１を参照）において実行されていたプロセスは相当に簡略化される。
【０１３６】
ステップ１９３０の後、ステップ１９５０へ進み、第１のフィルパスの高さを判定し、高さ配列に蓄積する。否定である場合には、ステップ１９５０の後と同様にステップ１１６０へ進む。その後、ｍｏｄｉｆｉｅｄ＿ａｄｄ＿ｒｅｃｔサブプロセス１９０５はステップ１９７０で図１８の主方法に戻り、グラフィックスレンダリングシステムの第１の段階に、フィルパスを変換して、グラフィックスレンダリングシステムの第２の段階に提供する必要がないことを示すパラメータＯＫを戻す。
【０１３７】
図１８の代替方法１８０５の動作中、先と同様に、ステップ１０４０及び１０７０はｆｌｕｓｈ＿ｒａｍｐサブプロセス１５０５を呼び出し、このサブプロセスはｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセス１６０５を呼び出す。先に述べた通り、サブプロセス１６０５のステップ１６２０は２つの点を使用してブレンドの方向を規定するように動作する。代替方法１８０５では、図２２に示すように、グレーディエントフィルを正しい方向に適用できるようにそれら２つの点を計算する必要がある。選択される第１の点は、グレーディエントフィルが進行している方向によって決まる。もし、そのフィルがＤＩＲ＿０１の方向を有する場合、選択される第１の点は蓄積グレーディエントフィルの第１のフィルパスの点０である。フィルがＤＩＲ＿１０の方向を有する場合、選択される第１の点は蓄積グレーディエントフィルの第１のフィルパスの点１である。フィルがＤＩＲ＿１２の方向を有する場合、選択される第１の点は蓄積グレーディエントフィルの第１のフィルパスの点１である。フィルがＤＩＲ＿２１の方向を有する場合、選択される第１の点は蓄積グレーディエントフィルの第１のフィルパスの点２である。選択される第２の点は、図８には点２（Ｑ，Ｐ）として示される、線Ｂと線Ｃの交点を発見することにより決定される。線Ｂは、グレーディエントフィルの第１の点を通る線Ａに対して垂直な線である。線Ａはグレーディエントフィルの第１の点を通り、蓄積グレーディエントフィルの第１のフィルパスの幅と平行に走る線である。線Ｃは、蓄積フィルパスの幅と平行に走り、グレーディエントフィルの方向に記述される第２の点を通る線である（例えば、ＤＩＲ＿０１グレーディエントフィルの場合、線Ｃは最後のフィルパスの点１を通るであろう）。横方向又は縦方向に進むグレーディエントフィルの場合、グレーディエントフィルの第２の点は単に蓄積グレーディエントフィルの最後のフィルパスのフィルの方向に記述される第２の点である。例えば、ＤＩＲ＿１２の方向の場合、グレーディエントフィルの第２の点は蓄積グレーディエントフィルの最後のフィルパスの点２である。
【０１３８】
５．０　好ましい装置
１つ以上のリニアブレンドを生成する方法は、図１０又は図１８に示す方法のように汎用コンピュータシステム１７００を使用して実施されるのが好ましい。プロセスはコンピュータシステム１７００内部で実行されるアプリケーションプログラムのようなソフトウェアとして実現されても良い。具体的には、１つ以上のリニアブレンドを生成する方法のステップは、コンピュータにより実行されるソフトウェアの命令により実現される。命令は、それぞれが１つ以上の特定のタスクを実行するための１つ以上のコードモジュールとして形成されても良い。また、ソフトウェアはいくつかの別個の部分に分割されても良く、その１つの部分は１つ以上のリニアブレンドを生成する方法を実行し、別の部分は第１の部分とユーザとの間のユーザインタフェースを管理する。ソフトウェアは、例えば、以下に説明する記憶装置を含むコンピュータ読み取り可能な媒体に格納されても良い。ソフトウェアはコンピュータ読み取り可能な媒体からコンピュータにロードされた後、コンピュータにより実行される。そのようなソフトウェア又はコンピュータプログラムが記録されているコンピュータ読み取り可能な媒体はコンピュータプログラム製品である。コンピュータにおいてコンピュータプログラム製品を使用することは、１つ以上のリニアブレンドを生成するための好都合な装置を実現するのが好ましい。
【０１３９】
コンピュータシステム１７００はコンピュータモジュール１７０１と、キーボード１７０２及びマウス１７０３などの入力装置と、プリンタ１７１５、表示装置１７１４及びラウドスピーカ１７１７を含む出力装置により形成されている。変復調器（モデム）トランシーバ装置１７１６はコンピュータモジュール１７０１により、例えば、電話回線１７２１又はその他の機能媒体を介して接続可能である通信ネットワーク１７２０との間で通信を実行するために使用される。モデム１７１６はインターネット、及びローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）などの他のネットワークシステムへのアクセスを獲得するために使用でき、いくつかの実現形態においてはコンピュータモジュール１７０１に組み込まれていても良い。
【０１４０】
コンピュータモジュール１７０１は、通常、少なくとも１つのプロセッサユニット１７０５と、例えば、半導体ランダムアクセスメモリ（ＲＡＭ）及び読み取り専用メモリ（ＲＯＭ）から形成されるメモリユニット１７０６とを含む。モジュール１７０１は、ビデオ表示装置１７１４及びラウドスピーカ１７１７に結合する音声映像インタフェース１７０７、キーボード１７０２、マウス１７０３及びオプションであるジョイスティック（図示せず）に対応するＩ／Ｏインタフェース１７１３、及びモデム１７１６及びプリンタ１７１５に対応するインタフェース１７０８を含む複数の入出力（Ｉ／Ｏ）インタフェースを更に含む。実現形態によっては、モデム１７１６はコンピュータモジュール１７０１内部、例えば、インタフェース１７０８に組み込まれていても良い。記憶装置１７０９が設けられており、これは通常はハードディスクドライブ１７１０と、フロッピーディスクドライブ１７１１とを含む。磁気テープドライブ（図示せず）を使用しても良い。通常、不揮発性データ源としてＣＤ−ＲＯＭドライブ１７１２が設けられている。コンピュータモジュール１７０１の構成要素１７０５〜１７１３は通常、相互接続バス１７０４を介して、当業者には知られているコンピュータシステム１７００の従来の動作モードが得られるように通信する。ここで説明する構成を実施できるコンピュータの例としてはＩＢＭ−ＰＣ及びその互換機、Ｓｕｎ　Ｓｐａｒｃｓｔａｔｉｏｎｓ又はそれらから派生した類似のコンピュータシステムがある。
【０１４１】
通常、アプリケーションプログラムはハードディスクドライブ１７１０に常駐しており、プロセッサ１７０５により呼び出され且つその実行を制御される。ネットワーク１７２０から取り出されるプログラム及びデータの中間記憶は、可能であればハードディスクドライブ１７１０と協調して、半導体メモリ１７０６を使用して実現される。場合によっては、アプリケーションプログラムをＣＤ−ＲＯＭ又はフロッピーディスクに符号化した状態でユーザに供給し、対応する装置１７１２又は１７１１により読み取っても良いし、あるいはユーザがモデム装置１７１６を介してネットワーク１７２０からアプリケーションプログラムを読み取っても良い。更に、他のコンピュータ読み取り可能な媒体からコンピュータシステム１７００にソフトウェアをロードすることも可能である。ここで使用される用語「コンピュータ読み取り可能な媒体」は、実行及び／又は処理のために命令及び／又はデータをコンピュータシステム１７００に提供することに関与する何らかの記憶媒体又は送信媒体を表す。記憶媒体の例としては、コンピュータモジュール１７０１の内部にあるか又は外部にあるかに関わらず、フロッピーディスク、磁気テープ、ＣＤ−ＲＯＭ、ハードディスクドライブ、ＲＯＭ又は集積回路、磁気光ディスク、あるいはＰＣＭＣＩＡカードなどのコンピュータ読み取り可能なカードがある。送信媒体の例としては、無線送信チャネル及び赤外線送信チャネル、並びに別のコンピュータ装置及びネットワーク化装置へのネットワーク接続、及びＥメール送信、ウェブサイトなどに記録される情報を含めたインターネット又はイントラネットなどがある。
【０１４２】
あるいは、１つ以上のリニアブレンドを生成する方法は、１つ以上のリニアブレンドを生成する機能又は部分機能を実行する１つ以上の集積回路などの専用ハードウェアで実現されても良い。そのような専用ハードウェアはグラフィックスレンダリングシステムの一部を形成していても良い。
【産業上の利用可能性】
【０１４３】
以上の説明から、説明した構成はコンピュータグラフィックス及び印刷の分野に適用可能であることが明白である。
【０１４４】
以上、本発明のいくつかの実施例のみを説明したが、それらの実施例は単なる例であって、本発明を限定するものではなく、本発明の趣旨から逸脱せずに変形及び／又は変更を実施することは可能である。
【図面の簡単な説明】
【０１４５】
【図１】従来の技術のアプリケーション、グラフィックスデバイスインタフェースレイヤ、グラフィックスレンダリングシステム及び出力装置の関係を示す図である。
【図２Ａ】典型的な従来の技術のアプリケーションにより生成されるような斜め方向グレーディエントフィルによって塗りつぶされた図形オブジェクト２１０の一例を示す図である。
【図２Ｂ】図２Ａに示すような例のグレーディエントフィルの、典型的な従来の技術のＧＤＩレイヤにより典型的な従来の技術のグラフィックレンダリングシステムへ送信されたフィルパス及びクリッピングオブジェクトを示す図である。
【図２Ｃ】典型的な従来の技術のグラフィックスレンダリングシステムによる図２Ｂに示す例のレンダリングの結果を示す図である。
【図３】従来の技術のアプリケーションにより生成された正弦グレーディエントフィル効果の一例を示す図である。
【図４Ａ】黒色と白色の中間点が従来の技術のアプリケーションにより生成されたブレンドの長さの２５％であるような黒色から白色への斜め方向非線形グレーディエントフィル効果を示す図である。
【図４Ｂ】黒色と白色の中間点が従来の技術のアプリケーションにより生成されたブレンドの長さの７５％であるような黒色から白色への斜め方向非線形グレーディエントフィル効果を示す図である。
【図４Ｃ】黒色と白色の中間点が従来の技術のグラフィックスレンダリングシステムにより図４Ａ又は図４Ｂに示すグレーディエントフィル効果から生成されたブレンドの長さの５０％であるような黒色から白色への斜め方向グレーディエントフィル効果を示す図である。
【図５Ａ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図５Ｂ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図５Ｃ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図５Ｄ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図６Ａ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図６Ｂ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図６Ｃ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図６Ｄ】斜め方向グレーディエントフィルが進行するであろう方向の様々に異なる定義を示す図である。
【図７Ａ】グレーディエントフィルの方向によって決まる総高さ及び方形高さの定義を示す図である。
【図７Ｂ】グレーディエントフィルの方向によって決まる総高さ及び方形高さの定義を示す図である。
【図８Ａ】グレーディエントフィルの第２の点（Ｑ，Ｐ）の判定で使用される線を示す図である。
【図８Ｂ】グレーディエントフィルの第２の点（Ｑ，Ｐ）の判定で使用される線を示す図である。
【図９Ａ】１つ以上のリニアブレンドを生成する方法を示す目的でフィルパスのセットの一例のカラーチャネルの値を示す図である。
【図９Ｂ】１つ以上のリニアブレンドを生成する方法を示す目的でフィルパスのセットの一例のカラーチャネルの値を示す図である。
【図９Ｃ】１つ以上のリニアブレンドを生成する方法を示す目的でフィルパスのセットの一例のカラーチャネルの値を示す図である。
【図１０】１つ以上のリニアブレンドを生成する第１の方法のフローチャートである。
【図１１】図１０の方法により呼び出されるａｄｄ＿ｒｅｃｔサブプロセスのフローチャートである。
【図１２】図１０の方法により呼び出されるｃｈｅｃｋ＿ｆｉｌｌサブプロセスのフローチャートである。
【図１３】図１２のｃｈｅｃｋ＿ｆｉｌｌサブプロセスにより呼び出されるｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセスのフローチャートである。
【図１４Ａ】図１１、図１２及び図１３のａｄｄ＿ｒｅｃｔサブプロセス、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス及びｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセスによりそれぞれ呼び出されるｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセスのフローチャートである。
【図１４Ｂ】図１１、図１２及び図１３のａｄｄ＿ｒｅｃｔサブプロセス、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス及びｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセスによりそれぞれ呼び出されるｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセスのフローチャートである。
【図１４Ｃ】図１１、図１２及び図１３のａｄｄ＿ｒｅｃｔサブプロセス、ｃｈｅｃｋ＿ｆｉｌｌサブプロセス及びｃｈｅｃｋ＿ｏｕｔｐｕｔ＿ｆｉｌｌサブプロセスによりそれぞれ呼び出されるｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセスのフローチャートである。
【図１５】図１０の方法により呼び出されるｆｌｕｓｈ＿ｒａｍｐサブプロセスのフローチャートである。
【図１６】図１５のｆｌｕｓｈ＿ｒａｍｐサブプロセスにより最初に呼び出されるｆｉｎｄ＿ａｎｄ＿ｐｕｔ＿ｒａｍｐｓサブプロセスのフローチャートである。
【図１７】説明する構成を実施することができる汎用コンピュータの概略ブロック図である。
【図１８】１つ以上のリニアブレンドを生成する別の方法のフローチャートである。
【図１９】図１０の第１の方法又は図１８の代替方法のいずれか一方に適用できるｍｏｄｉｆｉｅｄ＿ａｄｄ＿ｒｅｃｔサブプロセスのフローチャートである。
【図２０】図１８の代替方法で有用であるｍｏｄｉｆｉｅｄ＿ｃｈｅｃｋ＿ｆｉｌｌサブプロセスのフローチャートである。
【図２１】図１８の代替方法で有用であるａｌｔｅｒｎａｔｅ＿ｇｅｔ＿ａｌｉｇｎｍｅｎｔサブプロセスのフローチャートである。
【図２２】図８Ａ及び図８Ｂに類似しているが、図１８の代替方法に適用可能であることを示す図である。
【図２３Ａ】図５Ａから図５Ｄ及び図６Ａから図６Ｄに類似しているが、図１８の代替方法に適用可能であるブレンドの方向を定義する方法を示す図である。
【図２３Ｂ】図５Ａから図５Ｄ及び図６Ａから図６Ｄに類似しているが、図１８の代替方法に適用可能であるブレンドの方向を定義する方法を示す図である。
【図２３Ｃ】図５Ａから図５Ｄ及び図６Ａから図６Ｄに類似しているが、図１８の代替方法に適用可能であるブレンドの方向を定義する方法を示す図である。
【図２３Ｄ】図５Ａから図５Ｄ及び図６Ａから図６Ｄに類似しているが、図１８の代替方法に適用可能であるブレンドの方向を定義する方法を示す図である。
【図１】
2004145856.tif 000003
【図２Ａ】
2004145856.tif 000004
【図２Ｂ】
2004145856.tif 000005
【図２Ｃ】
2004145856.tif 000006
【図３】
2004145856.tif 000007
【図４Ａ】
2004145856.tif 000008
【図４Ｂ】
2004145856.tif 000009
【図４Ｃ】
2004145856.tif 000010
【図５Ａ】
2004145856.tif 000011
【図５Ｂ】
2004145856.tif 000012
【図５Ｃ】
2004145856.tif 000013
【図５Ｄ】
2004145856.tif 000014
【図６Ａ】
2004145856.tif 000015
【図６Ｂ】
2004145856.tif 000016
【図６Ｃ】
2004145856.tif 000017
【図６Ｄ】
2004145856.tif 000018
【図７Ａ】
2004145856.tif 000019
【図７Ｂ】
2004145856.tif 000020
【図８Ａ】
2004145856.tif 000021
【図８Ｂ】
2004145856.tif 000022
【図９Ａ】
2004145856.tif 000023
【図９Ｂ】
2004145856.tif 000024
【図９Ｃ】
2004145856.tif 000025
【図１０】
2004145856.tif 000026
【図１１】
2004145856.tif 000027
【図１２】
2004145856.tif 000028
【図１３】
2004145856.tif 000029
【図１４Ａ】
2004145856.tif 000030
【図１４Ｂ】
2004145856.tif 000031
【図１４Ｃ】
2004145856.tif 000032
【図１５】
2004145856.tif 000033
【図１６】
2004145856.tif 000034
【図１７】
2004145856.tif 000035
【図１８】
2004145856.tif 000036
【図１９】
2004145856.tif 000037
【図２０】
2004145856.tif 000038
【図２１】
2004145856.tif 000039
【図２２】
2004145856.tif 000040
【図２３Ａ】
2004145856.tif 000041
【図２３Ｂ】
2004145856.tif 000042
【図２３Ｃ】
2004145856.tif 000043
【図２３Ｄ】
2004145856.tif 000044
【外国語明細書】
2004145856.tif 000045
2004145856.tif 000046
2004145856.tif 000047
2004145856.tif 000048
2004145856.tif 000049
2004145856.tif 000050
2004145856.tif 000051
2004145856.tif 000052
2004145856.tif 000053
2004145856.tif 000054
2004145856.tif 000055
2004145856.tif 000056
2004145856.tif 000057
2004145856.tif 000058
2004145856.tif 000059
2004145856.tif 000060
2004145856.tif 000061
2004145856.tif 000062
2004145856.tif 000063
2004145856.tif 000064
2004145856.tif 000065
2004145856.tif 000066
2004145856.tif 000067
2004145856.tif 000068
2004145856.tif 000069
2004145856.tif 000070
2004145856.tif 000071
2004145856.tif 000072
2004145856.tif 000073
2004145856.tif 000074
2004145856.tif 000075
2004145856.tif 000076
2004145856.tif 000077
2004145856.tif 000078
2004145856.tif 000079
2004145856.tif 000080
2004145856.tif 000081
2004145856.tif 000082
2004145856.tif 000083
2004145856.tif 000084
2004145856.tif 000085
2004145856.tif 000086
2004145856.tif 000087
2004145856.tif 000088
2004145856.tif 000089
2004145856.tif 000090
2004145856.tif 000091
2004145856.tif 000092
2004145856.tif 000093
2004145856.tif 000094
2004145856.tif 000095
2004145856.tif 000096
2004145856.tif 000097
2004145856.tif 000098
2004145856.tif 000099
2004145856.tif 000100
2004145856.tif 000101
2004145856.tif 000102
2004145856.tif 000103
2004145856.tif 000104
2004145856.tif 000105
2004145856.tif 000106
2004145856.tif 000107
2004145856.tif 000108
2004145856.tif 000109
2004145856.tif 000110
2004145856.tif 000111
2004145856.tif 000112
2004145856.tif 000113
2004145856.tif 000114
2004145856.tif 000115
2004145856.tif 000116
2004145856.tif 000117
2004145856.tif 000118
2004145856.tif 000119
2004145856.tif 000120
2004145856.tif 000121
2004145856.tif 000122
2004145856.tif 000123
2004145856.tif 000124
2004145856.tif 000125
2004145856.tif 000126
2004145856.tif 000127
2004145856.tif 000128
2004145856.tif 000129
2004145856.tif 000130
2004145856.tif 000131
2004145856.tif 000132
2004145856.tif 000133
2004145856.tif 000134
2004145856.tif 000135
2004145856.tif 000136
2004145856.tif 000137
2004145856.tif 000138
2004145856.tif 000139
2004145856.tif 000140
2004145856.tif 000141
2004145856.tif 000142
2004145856.tif 000143
2004145856.tif 000144
2004145856.tif 000145
2004145856.tif 000146
2004145856.tif 000147
2004145856.tif 000148
2004145856.tif 000149
2004145856.tif 000150
2004145856.tif 000151
2004145856.tif 000152
2004145856.tif 000153
2004145856.tif 000154