(57)【要約】【課題】非アルファ・チャネル認識アプリケーションがアルファ・チャネル認識環境に合う画像をレンダリングするのを可能にすること。【解決手段】非アルファ・チャネル認識アプリケーションによって書き込みが行われるピクセル・データ・ファイルを、各ピクセルのアルファ値を１に設定することによって初期化する。次いで、非アルファ・チャネル認識アプリケーションが初期化済みのピクセル・データ・ファイルに書き込み、いくつかまたはすべてのピクセル・データを変更する。次いで、各ピクセルのアルファ値を１（ｍｏｄｕｌｏ２５６）だけデクリメントして、変更されたピクセルが不透明になるようにし、変更されないピクセルが透明になるようにする。【選択図】　　　　図５
2004038957.tif 000002
【特許請求の範囲】
【請求項１】
（ｉ）非アルファ・チャネル認識アプリケーションが、ピクセル・データ値を、ピクセル・データ値からなる既存のピクセル・データ・ファイルに書き込み、（ｉｉ）各ピクセル・データ値は、ｎビットのアルファ値を含み、ピクセル位置に対応し、（ｉｉｉ）前記ピクセル・データ・ファイルにピクセル・データ値を書き込んだ各ピクセルについて、前記非アルファ・チャネル認識アプリケーションは、前記ピクセル・データ値の前記アルファ値を０に設定し、（ｉｖ）アルファ・チャネル認識環境は、前記ピクセル・データ・ファイルの画像が他の画像データの前景に表示されるときに、対応するピクセルの透明度を設定するのにアルファ値が使用され、完全な透明度に対応してゼロの値のアルファ値を、増大する不透明度のレベルに応じて増加するアルファ値を使用するグラフィック環境であり、この場合において、非アルファ・チャネル認識アプリケーションによってレンダリングされるピクセル・データ・ファイルの画像をアルファ・チャネル認識環境で使用する方法であって、
（ａ）前記ピクセル・データ・ファイルの各ピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を１に初期化することと、
（ｂ）前記非アルファ・チャネル認識アプリケーションを前記ピクセル・データ・ファイルに対して実行することと、
（ｃ）前記ピクセル・データ・ファイル中でアルファ値１を有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値を０に変更し、アルファ値０を有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値を完全な不透明のアルファ値に変更することにより、各ピクセル・データ値の前記アルファ値を変更することと、
（ｄ）前記ピクセル・データ・ファイルを前記アルファ・チャネル認識環境で表示することと
を備えることを特徴とする方法。
【請求項２】
前記ピクセル・データ値の前記アルファ値について前記変更することは、前記ピクセル・データ・ファイルの各ピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を、１，ｍｏｄｕｌｏ２ｎだけデクリメントすることを備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記ｎは１と８からなるグループから選択されることを特徴とする請求項２に記載の方法。
【請求項４】
請求項１に記載の方法を実施するための、オペレーティング・システム、複数のコンピュータ実行可能命令を記憶したコンピュータ可読媒体、コ・プロセッシング・デバイス、コンピューティング・デバイス、コンピュータ実行可能命令を搬送する変調されたデータ信号、のうちの少なくとも１つ。
【請求項５】
（ｉ）非アルファ・チャネル認識アプリケーションが、ピクセル・データ値を、ピクセル・データ値からなる既存のピクセル・データ・ファイルに書き込み、（ｉｉ）各ピクセル・データ値は、ｎビットのアルファ値を含み、ピクセル位置に対応し、（ｉｉｉ）前記ピクセル・データ・ファイルにピクセル・データ値を書き込んだ各ピクセルについて、前記非アルファ・チャネル認識アプリケーションは、前記ピクセル・データ値の前記アルファ値をｍに設定し、（ｉｖ）アルファ・チャネル認識環境は、前記ピクセル・データ・ファイルの前記画像が他の画像データの前景に表示されるときに、対応するピクセルの透明度を設定するのにアルファ値が使用され、完全な透明度に対応してゼロの値のアルファ値を、増大する不透明度のレベルに応じて増加するアルファ値を使用するグラフィック環境であり、この場合において、非アルファ・チャネル認識アプリケーションによってレンダリングされるピクセル・データ・ファイルの画像をアルファ・チャネル認識環境で使用する方法であって、
（ａ）前記ピクセル・データ・ファイルの各ピクセル・データ値について、前記ピクセル・データ値の前記アルファ値をｍ＋１に初期化することと、
（ｂ）前記非アルファ・チャネル認識アプリケーションを前記ピクセル・データ・ファイルに対して実行することと、
（ｃ）前記ピクセル・データ・ファイル中でアルファ値ｍ＋１を有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データの前記アルファ値を０に変更し、アルファ値ｍを有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値を完全な不透明のアルファ値に変更することにより、各ピクセル・データ値の前記アルファ値を変更することと、
（ｄ）前記ピクセル・データ・ファイルを前記アルファ・チャネル認識環境で表示することと
を備えることを特徴とする方法。
【請求項６】
各ピクセル・データ値の前記アルファ値について前記変更することは、前記ピクセル・データ・ファイルの各ピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を、ｍ＋１，Ｍｏｄｕｌｏ２ｎだけデクリメントすることを備えることを特徴とする請求項５に記載の方法。
【請求項７】
請求項５に記載の方法を実施するための、オペレーティング・システム、複数のコンピュータ実行可能命令を記憶したコンピュータ可読媒体、コ・プロセッシング・デバイス、コンピューティング・デバイス、コンピュータ実行可能命令を搬送する変調されたデータ信号、のうちの少なくとも１つ。
【請求項８】
（ｉ）非アルファ・チャネル認識アプリケーションが、ピクセル・データ値を、ピクセル・データ値からなる既存のピクセル・データ・ファイルに書き込み、（ｉｉ）各ピクセル・データ値はｎビットのアルファ値を含み、ピクセル位置に対応し、（ｉｉｉ）前記ピクセル・データ・ファイルにピクセル・データ値を書き込んだ各ピクセルについて、前記非アルファ・チャネル認識アプリケーションは、前記ピクセル・データ値の前記アルファ値をｍに設定し、（ｉｖ）アルファ・チャネル認識環境は、前記ピクセル・データ・ファイルｎｏ画像が他の画像データの前景に表示されるときに、対応するピクセルの透明度を設定するのにアルファ値が使用され、完全な透明度に対応してゼロの値のアルファ値を、増大する不透明度のレベルに応じて増加するアルファ値を使用するグラフィック環境であり、（ｖ）前記非アルファ・チャネル認識アプリケーションによって書き込まれるピクセルについての所望の不透明度のアルファ値はｐであり、この場合において、非アルファ・チャネル認識アプリケーションをアルファ・チャネル認識環境で使用する方法であって、
（ａ）前記ピクセル・データ・ファイルのすべてのピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を２ｎ−ｐ＋ｍに初期化することと、
（ｂ）前記非アルファ・チャネル認識アプリケーションを前記ピクセル・データ・ファイルに対して実行することと、
（ｃ）前記ピクセル・データ・ファイル中でアルファ値２ｎ−ｐ＋ｍを有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値をｍに変更し、アルファ値ｍを有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値をｐに変更することにより、各ピクセル・データ値の前記アルファ値を変更することと、
（ｄ）前記ピクセル・データ・ファイルを前記アルファ・チャネル認識環境で表示することと
を備えることを特徴とする方法。
【請求項９】
前記ピクセル・データ値の前記アルファ値を変更するステップは、前記ピクセル・データ・ファイルのすべてのピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を、ｐ−ｍ，Ｍｏｄｕｌｏ２ｎだけインクリメントすることを備えることを特徴とする請求項８に記載の方法。
【請求項１０】
前記ピクセル・データ値の前記アルファ値を変更するステップは、前記ピクセル・データ・ファイルのすべてのピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を、ｍ−ｐ，Ｍｄｕｌｏ２ｎだけデクリメントするステップを含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記ｐとｍのうちの少なくとも一方が０であることを特徴とする請求項８に記載の方法。
【請求項１２】
請求項８に記載の方法を実施するための、オペレーティング・システム、複数のコンピュータ実行可能命令を記憶したコンピュータ可読媒体、コ・プロセッシング・デバイス、コンピューティング・デバイス、コンピュータ実行可能命令を搬送する変調されたデータ信号、のうちの少なくとも１つ。
【請求項１３】
（ｉ）非アルファ・チャネル認識アプリケーションが、ピクセル・データ値を、ピクセル・データ値からなる既存ピクセル・データ・ファイルに書き込み、（ｉｉ）各ピクセル・データ値は、ｎビットのアルファ値を含み、ピクセル位置に対応し、（ｉｉｉ）前記ピクセル・データ・ファイルにピクセル・データ値を書き込んだ各ピクセルについて、前記非アルファ・チャネル認識アプリケーションは、前記ピクセル・データ値の前記アルファ値を０に設定し、（ｉｖ）アルファ・チャネル認識環境は、前記ピクセル・データ・ファイルの画像が他の画像データの前景に表示されるときに、対応するピクセルの透明度を設定するのにアルファ値が使用され、完全な透明度に対応してゼロの値のアルファ値を、増大する不透明度のレベルに応じて増加するアルファ値を使用するグラフィック環境であり、この場合において、非アルファ・チャネル認識アプリケーションによってレンダリングされるピクセル・データ・ファイルの画像をアルファ・チャネル認識環境で使用するためのコンピュータ実行可能モジュールを備えるコンピュータ・グラフィックス・システムであって、前記コンピュータ・モジュールは、
（ａ）前記ピクセル・データ・ファイルの各ピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を１に初期化する手段と、
（ｂ）前記非アルファ・チャネル認識アプリケーションを前記ピクセル・データ・ファイルに対して実行する手段と、
（ｃ）前記ピクセル・データ・ファイル中でアルファ値１を有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値を０に変更し、アルファ値０を有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値を完全な不透明のアルファ値に変更することにより、各ピクセル・データ値の前記アルファ値を変更する手段と、
（ｄ）前記ピクセル・データ・ファイルを前記アルファ・チャネル認識環境で表示する手段とを備えることを特徴とするコンピュータ・グラフィックス・システム。
【請求項１４】
前記ピクセル・データ値の前記アルファ値を変更する手段は、前記ピクセル・データ・ファイルの各ピクセル・データについて、前記ピクセル・データ値の前記アルファ値を、１，Ｍｏｄｕｌｏ２ｎだけデクリメントする手段を備えることを特徴とする請求項１３に記載のコンピュータ・グラフィックス・システム。
【請求項１５】
前記ｎは１と８からなるグループから選択されることを特徴とする請求項１３に記載のコンピュータ・グラフィックス・システム。
【請求項１６】
（ｉ）非アルファ・チャネル認識アプリケーションが、ピクセル・データ値を、ピクセル・データ値からなる既存ピクセル・データ・ファイルに書き込み、（ｉｉ）各ピクセル・データ値は、ｎビットのアルファ値を含み、ピクセル位置に対応し、（ｉｉｉ）前記ピクセル・データ・ファイルにピクセル・データ値を書き込んだ各ピクセルについて、前記非アルファ・チャネル認識アプリケーションは、前記ピクセル・データ値の前記アルファ値をｍに設定し、（ｉｖ）アルファ・チャネル認識環境は、前記ピクセル・データ・ファイルの画像が他の画像データの前景に表示されるときに、対応するピクセルの透明度を設定するのにアルファ値が使用され、完全な透明度に対応してゼロの値のアルファ値を、増大する不透明度のレベルに応じて増加するアルファ値を使用するグラフィック環境であり、アルファ値０は完全な透明に対応し、アルファ値の増加は不透明度レベルの上昇に対応し、（ｖ）前記非アルファ・チャネル認識アプリケーションによって書き込まれるピクセルについての所望の不透明度のアルファ値はｐであり、この場合において、非アルファ・チャネル認識アプリケーションをアルファ・チャネル認識環境で使用するためのコンピュータ実行可能モジュールを備えるコンピュータ・グラフィックス・システムであって、前記コンピュータ実行可能モジュールは、
（ａ）前記ピクセル・データ・ファイルのすべてのピクセル・データ値について、前記ピクセル・データ値の前記アルファ値を２ｎ−ｐ＋ｍに初期化する手段と、
（ｂ）前記非アルファ・チャネル認識アプリケーションを前記ピクセル・データ・ファイルに対して実行する手段と、
（ｃ）前記ピクセル・データ・ファイル中でアルファ値２ｎ−ｐ＋ｍを有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値をｍに変更し、アルファ値ｍを有する各ピクセル・データ値について、前記ピクセル・データ・ファイルの前記ピクセル・データ値の前記アルファ値をｐに変更することにより、各ピクセル・データ値の前記アルファ値を変更する手段と、
（ｄ）前記ピクセル・データ・ファイルを前記アルファ・チャネル認識環境で表示する手段と
を備えることを特徴とするコンピュータ・グラフィックス・システム。
【請求項１７】
前記ピクセル・データの前記アルファ値を変更する手段は、前記ピクセル・データ・ファイルのすべてのピクセル・データ値について、前記ピクセル・データの前記アルファ値を、ｐ−ｍ，Ｍｏｄｕｌｏ２ｎだけインクリメントする手段を含むことを特徴とする請求項１６に記載のコンピュータ・グラフィックス・システム。
【請求項１８】
前記ピクセル・データの前記アルファ値を変更する手段は、前記ピクセル・データ・ファイルのすべてのピクセル・データ値について、前記ピクセル・データの前記アルファ値を、ｍ−ｐ，Ｍｏｄｕｌｏ２ｎだけデクリメントする手段を含むことを特徴とする請求項１６に記載のコンピュータ・グラフィックス・システム。
【請求項１９】
前記ｐとｍのうちの少なくとも一方が０であることを特徴とする請求項１６に記載のコンピュータ・グラフィックス・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータグラフィックスの分野に関し、より詳細には、アルファ・チャネル認識環境（ａｌｐｈａ−ｃｈａｎｎｅｌ−ａｗａｒｅ　ｅｎｖｉｒｏｎｍｅｎｔ）で非アルファ・チャネル認識画像（ｎｏｎ−ａｌｐｈａ−ｃｈａｎｎｅｌ−ａｗａｒｅ　ｉｍａｇｅ）を利用するためのシステムおよび方法に関する。
【０００２】
【従来の技術】
コンピュータ表示装置上に画像（ｉｍａｇｅ）を表示するには、表示装置のピクセルがどのように作用して画像を生成するかに関する情報を含むピクセル・データを生成しなければならない。通常はアプリケーションが、表示すべき画像を、提供されたピクセル・グリッドにレンダリングする。グリッドのサイズは、レンダリングする画像のサイズに基づく。ピクセル・グリッドは、画像をコンピュータ表示装置上に表示するのに必要な情報を格納するピクセル・データ・ファイルに対応する。この情報は、画像に含まれる各ピクセルのピクセル・データ値を含む。ピクセル・データ値は、表示装置上のピクセルがどのように機能すべきかを決定するのに使用され、画像を表示するとき、表示装置の同じ領域上に並ぶ他の画像からのピクセル・データ値に加えて、ピクセル・データ・ファイルのピクセル・グリッドを表示装置の実際の領域上にマッピングする。
【０００３】
通常、１つのピクセルのピクセル・データ値は４バイトに収容される。最初の３バイトは、そのピクセルについての赤、緑、青を指定する。より古いグラフィックス環境では、第４バイトは無視される。この第４バイトは、ほとんどのプロセッサ設計が３バイトのインクリメントよりも４バイトのインクリメントの方が効果的にメモリを扱うことができるという理由で含められていたものであり、したがって、ピクセル表示情報を格納するということに関して、その記憶コストは効率的に処理することによって埋め合わされていた。
【０００４】
アプリケーションが、表示すべき画像を既存のピクセル・データ・ファイルにレンダリングするとき、画像をレンダリングするこのアプリケーションは、ピクセル・データ・ファイルのいくらかまたはすべてのデータを上書きする。次いで、得られたファイルは、その画像を表示する表示装置上でピクセルについて機能付けを記述するのに、単独でまたは組み合わせて使用される。
【０００５】
アルファ・ブレンディング（ａｌｐｈａ−ｂｒｅｎｄｉｎｇ）
前述のように、より古いグラフィックス環境では、ピクセル・データ値の第４バイトは使用されない。しかし、より新しいグラフィックス環境では、アルファ値（アルファ・チャネルとも呼ばれる）を格納するのに、第４バイトが使用され、このアルファ値は、アルファ・ブレンディングと呼ばれる技法で使用される。
【０００６】
アルファ・ブレンディングは、表示が画像の重なり合う層で構成されているときに透明度をシミュレートする方法である。アルファ・ブレンディングでは、各ピクセルのアルファ値が、そのピクセルの不透明度レベルを指定する。具体的には、アルファ値０はピクセルが完全に透明であることを示し、アルファ値２５５はピクセルが完全に不透明である（透明でない）ことを示す。中間アルファ値（０と２５５の間の値）は、中間レベルの不透明度を示す。前景にある画像のピクセルのアルファ値は、背景画像中に並んで位置する任意のピクセルからの任意の情報がどの程度表示されることになるかを決定する。
【０００７】
アルファ・ブレンディングの使用例として、背景パターンの上にアイコンが表示されたコンピュータ表示を考えてみる。アルファ・ブレンディングを使用してこのような表示を生み出すためには、どのようにアイコンを描くべきかに関する情報を記憶したピクセル・データ・ファイルを使用する。アイコン用のこのピクセル・データ・ファイル内では、いくつかのピクセルに関しては、格納されたアルファ値は０よりも大きい。これらのピクセルは不透明であり、これらの不透明なピクセルがアイコンの画像を構成する。記憶されたピクセル・データ・グリッドの他のピクセルはすべて、アルファ値０を有する。これらのピクセルは透明であり、アイコンの画像の一部をなさない。アイコンに対応するピクセル・データ・ファイルからのピクセル・データが、背景パターンに対応する背景パターン画像の上に表示される際、アイコンが表示され、アイコンについてのピクセル・データ・ファイルによってピクセルが透明であることが示された領域では背景パターン画像が透過して見える。さらに、アイコン画像のいずれかのピクセルが２５５（完全に不透明）未満の値を有する場合は、背景画像からの情報のいくらかをアイコン画像を通して見ることができる。
【０００８】
一般にアルファ・ブレンディングが使用されるときは、０でないアルファ値を有する前景画像のピクセルは、背景画像のピクセルと組み合わされて表示されるか、あるいは前景画像が完全に不透明である場合には背景画像のピクセルに代わって表示される。アイコン画像のピクセルがアルファ値０を有する場所では、背景画像は明瞭に透過して見える。このようにして、アルファ・ブレンディングを実装するグラフィックス環境（アルファチャネル認識環境）は、アルファ・チャネル値を使用して、重なり合う画像の組合せを表示することができる。
【０００９】
非アルファ・チャネル認識アプリケーション
アルファ・ブレンディング、およびアルファ値の使用は、ピクセル・データ・ファイルを生成する多くの古いアプリケーション（非アルファ・チャネル認識アプリケーション）によって見分けられない。通常の場合、非アルファ・チャネル認識アプリケーションは、書き込まれるべきピクセル・データ・ファイルを入力時に獲得し、このピクセル・データ・ファイル中に、任意の数のピクセルのピクセル・データ値を上書きする。このようにして、新しい画像がピクセル・データ・ファイルに書き込まれる。入力画像データ・ファイル中に前から存在した画像情報は、非アルファ・チャネル認識アプリケーションによって、すでに書かれている各ピクセルに対して上書きされる。非アルファ・チャネル認識アプリケーションの出力は、部分的にまたは完全に書き換えられたピクセル・データ・ファイルである。
【００１０】
重要なことに、新しいピクセル情報をピクセル・データ・ファイルに書き込むとき、多くの非アルファ・チャネル認識アプリケーションは、上書きする各ピクセルについてピクセル・データ値の最終バイトを０にセットする。このバイトは、アルファ・チャネル認識アプリケーションではアルファ値として使用されるバイトである。
【００１１】
非アルファ・チャネル認識アプリケーションをアルファ・チャネル認識環境で使用する
非アルファ・チャネル認識アプリケーションが、アルファ・チャネル認識環境で使用するためのピクセル・データ・ファイルを生成するとき、非アルファ・チャネル認識アプリケーションによって描かれる画像の各ピクセルのアルファ値が０に設定されるという問題が生じる。非アルファ・チャネル認識アプリケーションによって生み出されたのではないピクセル・データは、非アルファ・チャネル認識アプリケーションによって変更されず、したがってこのようなピクセル・データの元のアルファ値（０よりも大きい場合がある）は維持される。このピクセル・データ・ファイルをアルファ・チャネル認識環境で使用した場合、これらのピクセルは表示することができる。しかし、非アルファ・チャネル認識アプリケーションによって生み出されたピクセル・データはアルファ値０を有するので、非アルファ・チャネル認識アプリケーションによってそのピクセル・データ値がピクセル・データ・ファイルに書き込まれたあらゆるピクセルは、透明である。これらのピクセルは、このピクセル・データ・ファイルをアルファ・チャネル認識環境で使用したときには表示されないことになる。
【００１２】
したがって、非アルファ・チャネル認識アプリケーションの出力をアルファ・チャネル認識コンテキストで使用するには、ピクセル・データのアルファ値を修正する何らかの方法を用いなければならない。すべてのピクセルの不透明度を０でない値に変更すれば、画像のピクセルすべてが、非アルファ・チャネル認識アプリケーションによって書かれたかどうかに拘らず、および目的の画像の一部をなさないピクセルでさえも、いくらか不透明になってしまう。
【００１３】
このような状況を認識して、従来技術では、ある手順が確立された。この手順によれば、アプリケーションに割り当てられることになるピクセル・データ・ファイルを初期化するとき、あらゆるピクセルのピクセル・データ値をセンチネル値または色に設定する。次いで、アプリケーションがピクセル・データ・ファイルに画像を書きこんだ後、あらゆるピクセルのピクセル・データ値を調べる。特定のピクセル・データ値がまだセンチネル値または色を有する場合は、このピクセルのアルファ値を０に設定する。特定のピクセル・データ値がセンチネル値を含まない場合は、このピクセルのアルファ値を所望の不透明度に設定する。
【００１４】
重要なことに、このような手順（ｍｅｃｈａｎｉｓｍ）には２つの欠点がある。第１に、あらゆるピクセルを読み取ってセンチネル値と比較し、おそらく書き換えなければならないという点で、この手順は計算処理的に不経済である。第２に、非アルファ・チャネル認識アプリケーションがたまたまピクセルをセンチネル値と一致する値になるように書き込んだ場合、書き込まれたこのようなピクセルは誤って透明にレンダリングされる。
【００１５】
【発明が解決しようとする課題】
したがって、非アルファ・チャネル認識アプリケーションがアルファ・チャネル認識環境に対し画像をレンダリングできるようにするための方法および手順が必要とされている。より具体的には、計算処理的にコストが低く、誤って透明になるピクセルを生じることのないような方法および手順が必要とされている。
【００１６】
【課題を解決するための手段】
本発明によれば、非アルファ・チャネル認識アプリケーションがピクセル・データをピクセル・データ・ファイルに書き込めるようにするためのシステムおよび方法が提供される。非アルファ・チャネル認識アプリケーションによって変更された各ピクセルは、従来技術の方法よりも処理時間およびエラー可能性が減少した態様で、事前指定の不透明度レベルに設定され、非アルファ・チャネル認識アプリケーションによって変更されない各ピクセルは、透明にレンダリングされる。
【００１７】
本発明の一実施形態によれば、ピクセル・データ・ファイルの各ピクセルを、アルファ値１を有するように初期化する。非アルファ・チャネル認識プロセスがピクセル・データ・ファイルへの書込みを完了した後、各ピクセルのアルファ値が１だけデクリメントする１つのパスが、その画像の前面にわたって実行される。非アルファ・チャネル認識プロセスによって書き込まれたピクセルは、このプロセスによってアルファ値０に設定されていたが、このパスの結果、新しいアルファ値２５５を有することになる（これはバイト内の減算がＭｏｄｕｌｏ２５６として行われるからである（１バイト中に８ビットがあり、２８＝２５６なので））。非アルファ・チャネル認識アプリケーションによって書き込まれなかった各ピクセルは、それぞれのピクセルのアルファ値が１に初期化されてから１だけデクリメントされるので、このようなピクセルのアルファ値は０であるため、透明にレンダリングされる。
【００１８】
本発明の別の実施形態によれば、所望の不透明度がアルファ値ｐで表され、アルファ値が、アルファ値２ｎ−１で最も不透明度が高く、アルファ値０で最も不透明度が低い場合を示すｎビットで表され、かつ、非アルファ・チャネル認識アプリケーションが、そこに書き込む各ピクセル・データ値のアルファ値をｍに設定する場合、ピクセル・データ・ファイルの各ピクセルを、アルファ値２ｎ−ｐ＋ｍを有するように初期化する。非アルファ・チャネル認識プロセスがそのピクセル・データ・ファイルへの書込みを完了した後、各ピクセルのアルファ値をｍ−ｐ（Ｍｏｄｕｌｏ２ｎ）だけデクリメントする１つのパスがその画像前面にわたって実行される。このパスの結果、非アルファ・チャネル認識プロセスによって書き込まれたピクセルはアルファ値ｐを有し、非アルファ・チャネル認識プロセスによって書き込まれなかったピクセルはアルファ値０を有することになる。
【００１９】
本発明の他の態様については後述する。
【００２０】
前述の概要、ならびに現時点で好ましい実施形態に関する以下の詳細な説明は、添付の図面と共に読めばよりよく理解される。本発明を例示するために、本発明の例示的な構造を図面に示す。ただし本発明は、開示する特定の方法および手段に限定するものではない。
【００２１】
【発明の実施の形態】
概観
本発明では、非アルファ・チャネル認識アプリケーションが、アルファ・チャネル認識環境で利用される画像をレンダリングする際、このアプリケーションによってピクセル・データ・ファイルに書き込まれた各ピクセルのアルファ値は、ピクセルが不透明になるように設定され、このアプリケーションによってピクセル・データ・ファイルに書き込まれなかった各ピクセルは、ピクセルが透明になるように設定される。
【００２２】
例示的なコンピューティング環境
図１に、本発明を実装できる、適切なコンピューティング・システム環境１００の例を示している。コンピューティング・システム環境１００は、適したコンピューティング環境の一例にすぎず、本発明の使用範囲または機能範囲についてどんな制限を意味するものでもない。またコンピューティング環境１００は、この例示的な動作環境１００に示すコンポーネントのいずれか１つまたは組合せに関して、どのような依存関係も、またも要件も有するものと解釈されるべきではない。
【００２３】
本発明は、その他多くの汎用または専用コンピューティング・システム環境または構成でも動作する。本発明で使用するのに適する周知のコンピューティング・システム、環境、および／または構成の例には、限定しないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド・デバイスまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータや、これらのシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００２４】
本発明は、コンピュータによって実行されるプログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般にプログラム・モジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は分散コンピューティング環境で実施することもでき、その場合、タスクは通信ネットワークまたはその他のデータ伝送媒体を介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラム・モジュールおよびその他のデータは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体に位置することができる。
【００２５】
図１を参照すると、本発明を実施するための例示的なシステムは、コンピュータ・システム１００の形をとる汎用コンピューティング・デバイスを含む。コンピュータ１１０のコンポーネントには、限定しないが、処理ユニット１２０と、システム・メモリ１３０と、システム・メモリを含めた様々なシステム・コンポーネントを処理ユニット１２０に結合するシステム・バス１２１とを含めることができる。システム・バス１２１は、様々なバス・アーキテクチャのいずれかを用いた、メモリ・バスまたはメモリ・コントローラ、周辺バス、ローカル・バスを含めて、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ　ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、およびＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（メザニン・バスとも呼ばれる）が含まれる。
【００２６】
コンピュータ１１０は通常、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる任意の利用可能な媒体とすることができ、揮発性と不揮発性、取外し可能と取外し不可能の両方の媒体が含まれる。限定ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、他のデータなどの情報を記憶するための任意の方法または技術で実現される、揮発性と不揮発性、取外し可能と取外し不可能の両方の媒体が含まれる。コンピュータ記憶媒体には、限定しないがＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイスが含まれ、あるいは、所望の情報を記憶するのに使用できコンピュータ１１０からアクセスできる他の任意の媒体が含まれる。通信媒体は通常、搬送波や他のトランスポート機構など変調されたデータ信号中に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを組み入れたものであり、任意の情報送達媒体が含まれる。「変調されたデータ信号」という語は、信号中の情報が符号化される形で１つまたは複数の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体には、配線式ネットワークや直接配線式接続などの配線式媒体と、音響、無線周波、赤外線、その他の無線媒体などの無線媒体とが含まれる。以上の任意の組合せもコンピュータ可読媒体の範囲に含めるべきである。
【００２７】
システム・メモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。ＲＯＭ１３１には通常、起動中などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ　ｉｎｐｕｔ／ｏｕｔｐｕｔ　ｓｙｓｔｅｍ）１３３が記憶されている。ＲＡＭ１３２は通常、処理ユニット１２０がすぐにアクセス可能な、かつ／または処理ユニット１２０が現在作用している、データおよび／またはプログラム・モジュールを含む。限定ではなく例として、図１には、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラムデータ１３７を示す。
【００２８】
コンピュータ１１０は、その他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体を備えることもできる。例にすぎないが図１には、取外し不可能かつ不揮発性の磁気媒体に対して読み書きするハードディスク・ドライブ１４１と、取外し可能かつ不揮発性の磁気ディスク１５２に対して読み書きする磁気ディスク・ドライブ１５１と、ＣＤ　ＲＯＭや他の光媒体など取外し可能かつ不揮発性の光ディスク１５６に対して読み書きする光ディスク・ドライブ１５５を示す。この例示的な動作環境で使用できる他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体には、限定しないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ディジタル多用途ディスク、ディジタル・ビデオ・テープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。ハードディスク・ドライブ１４１は通常、インターフェース１４０などの不揮発性メモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は通常、インターフェース１５０などの取外し可能メモリ・インターフェースでシステム・バス１２１に接続される。
【００２９】
以上に論じ、図１に示した各ドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、およびその他のデータの記憶域をコンピュータ１１０に提供する。例えば図１には、ハードディスク・ドライブ１４１がオペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７を記憶しているのが示されている。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じものとすることもでき、異なるものとすることもできることに留意されたい。ここでは、オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７が少なくとも異なるコピーであることを示すために、異なる番号を付してある。ユーザは、キーボード１６２や、マウス、トラックボール、タッチパッドと一般に呼ばれるポインティング・デバイス１６１などの入力デバイスを介して、コンピュータ１１０にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどを含めることができる。これらおよび他の入力デバイスは、システム・バスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレル・ポート、ゲーム・ポート、ユニバーサル・シリアル・バス（「ＵＳＢ」）など、他のインターフェースおよびバス構造で接続されてもよい。モニタ１９１または他のタイプの表示デバイスもまた、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続される。モニタに加えて、コンピュータは通常、スピーカ１９７やプリンタ１９６など他の周辺出力デバイスも備えることができ、これらは出力周辺インターフェース１９５を介して接続することができる。
【００３０】
コンピュータ１１０は、リモート・コンピュータ１８０など１つまたは複数のリモート・コンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、これは、図１にはメモリ記憶デバイス１８１しか示していないが、通常はコンピュータ１１０に関して上述した要素の多くまたはすべてを備える。図１に示す論理接続は、ローカルエリア・ネットワーク（ＬＡＮ）１７１およびワイドエリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータ・ネットワーク、イントラネット、およびインターネットでよくみられるものである。
【００３１】
コンピュータ１１０は、ＬＡＮネットワーキング環境で使用されるときは、ネットワーク・インターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるときは通常、モデム１７２を備えるか、インターネットなどのＷＡＮ１７３を介した通信を確立するための他の手段を備える。モデム１７２は内蔵でも外付けでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク化環境では、コンピュータ１１０に関して示したプログラム・モジュールまたはその一部をリモートのメモリ記憶デバイスに記憶することができる。限定ではなく例として、図１には、リモート・アプリケーション・プログラム１８５がメモリ・デバイス１８１上にあるものとして示す。図示のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することもできることは理解されるであろう。
【００３２】
非アルファ・チャネル認識アプリケーションの出力を変換する
本発明の一実施形態によれば、ある方法により、非アルファ・チャネル認識アプリケーションからの出力をアルファ・チャネル認識コンテキストで使用することができる。こうするためには、非アルファ・チャネル認識アプリケーションによって０に変更されたピクセル・データ・ファイルの各ピクセルのアルファ値を所望の不透明度レベルに変更し、非アルファ・チャネル認識アプリケーションによって変更されないピクセル・データ・ファイルの各ピクセルのアルファ値を０に設定する方法がなければならない。
【００３３】
図２、３、４では、各ピクセルを、括弧内の４つの数字を備えた小さな正方形として表してあり、これらの数字は、各ピクセルについてピクセル・データ・ファイル１９９に記憶された４バイトの情報（ピクセル・データ値）に対応する。最後のバイトがアルファ値である。
【００３４】
本発明の一実施形態によれば、図示のように、ピクセル・データ・ファイル１９９は、生成される画像を格納するために使用される。非アルファ・チャネル認識アプリケーションによってそこに書き込まれることになるデータ以外のピクセル・データ・ファイル１９９からのデータが最終的な画像中に表示されるということはありえず、したがって、使用されるピクセル・データ・ファイルは、意味のあるデータがその中に記憶されているピクセル・データ・ファイルとすべきではない。
【００３５】
図２でわかるように、ピクセル・データ・ファイル１９９の各ピクセル２００のアルファ値（最後のバイト）は、値１に初期化されている。各ピクセル２００の最初の３バイトの値（赤、緑、青の値）は本発明の目的とは関係ないが、例として、各ピクセル２００でこれらのバイト値は２５５に等しい。初期化は、図５のフローチャートの第１ステップ５１０に示すように、ピクセル・データ・ファイル１９９が非アルファ・チャネル認識アプリケーションから作用を受ける前に行われる。
【００３６】
初期化後、図５の第２ステップ５２０に示すように、次いで図２のピクセル・データ・ファイル１９９は非アルファ・チャネル認識アプリケーションによって使用される。非アルファ・チャネル認識アプリケーションは、ピクセル２００のいくつかまたはすべてについてのピクセル・データ値を変更することにより、ピクセル・データ１９９に画像を書き込む。その結果得られるピクセル・データ・ファイル１９９を図３に示す。
【００３７】
図３に示すように、ピクセル・データ・ファイル１９９が非アルファ・チャネル認識アプリケーションから作用を受けた後では、変更されたピクセル３０５が非アルファ・チャネル認識アプリケーションによって書き込まれている。他のピクセルすなわち変更されないピクセル３１０は、アルファ・チャネル・アプリケーションによって書き込まれておらず、非アルファ・チャネル認識アプリケーションが実行される前と同じ値を収容している。
【００３８】
変更された各ピクセル３０５のアルファ値は０に設定されており、多くの場合、他のバイトの値も変更されている。ただし、変更されたピクセル３０５のうちの１つでは、ピクセル・データ値が（２５５，２５５，２５５，０）であることに留意されたい。このピクセルでも、赤、緑、青の値は２５５のままだがアルファ値は０である。ピクセル・データの最初の３バイトを調べることではわからないが、これは、このピクセルが非アルファ・チャネル認識アプリケーションによって書き込まれたことを示す。
【００３９】
図５の第３ステップ５３０に示すように、すべてのピクセル（変更されたピクセル３０５と変更されないピクセル３１０の両方）の各アルファ値を１だけデクリメントする。その結果得られるピクセル・データ・ファイルを図４に示す。このデクリメントは、バイトに対して行うときは、ｍｏｄｕｌｏ２５６として行う。したがって、アルファ値が０であった（図３の変更されたピクセル３０５）各ピクセル４０５では、新しいアルファ値は２５５になり、これらのピクセルは、ピクセル・データ・ファイル１９９がアルファ・チャネル認識アプリケーション中で使用されるときには不透明にレンダリングされる。アルファ値が１であった（図３の変更されないピクセル３１０）各ピクセル４１０では、そのアルファ値は０になり、これらのピクセルは、ピクセル・データ・ファイル１９９がアルファ・チャネル認識アプリケーション中で使用されるときには透明にレンダリングされる。このようにすれば、各ピクセルに対して１つの算術演算を行うだけで、比較を行うことなく、非アルファ・チャネル認識アプリケーションによって変更されたピクセル３０５は不透明になり、変更されないピクセル３１０は透明になる。次いで、図５の第４ステップ５４０に示すように、画像を有するピクセル・データ・ファイル１９９をアルファ・チャネル認識環境で使用することができる。
【００４０】
本発明の他の実施形態も可能である。グラフィックス・システムによっては、ピクセル・データが４バイトではなく２バイトに収容されることがある。これらのシステムでは、赤、緑、青の値それぞれに５ビットを使用し、最後のビットをアルファ・ビットに使用する（透明は０、不透明は１）。この場合、非アルファ・チャネル認識アプリケーションの実行前にアルファ値を含む値を１に設定し、アプリケーションの実行後にアルファ・ビットを変更することになる（１から０に、０から１に）。これは、インクリメント、デクリメント、またはこの変更を所望の効率で行う他の任意の論理演算子手段によって行うことができる。
【００４１】
不透明がアルファ値２ｎ−１で示され（言い換えればアルファ値がｎビット長であり）、透明がアルファ値０で示されるピクセル情報を記憶するシステムであれば他のどんなシステムでも、アルファ値を１に設定して１　ｍｏｄｕｌｏ２ｎの減算（２ｎを法として１の減算）を行うことにより、本発明のこの方法を利用することができる。
【００４２】
変更されたピクセルのアルファ値を０でない値ｍに設定する非アルファ・チャネル認識アプリケーションもあり得る。この場合は、アプリケーションの実行前にアルファ・チャネルを値ｍ＋１に初期化し、次いでアルファ・チャネルの値をｍ＋１　ｍｏｄｕｌｏ２ｎだけデクリメントすることにより、本発明の方法を利用することができる（ｎはアルファ値のビット数）。
【００４３】
非アルファ・チャネル認識アプリケーションによって生成される画像が、ある程度だけ不透明になるように意図される場合もある。このような場合で、かつアルファ値がｎビット長であり、完全な不透明がアルファ値２ｎ−１で表され、得られる画像が不透明度ｐを有することが望まれる場合は、本発明の方法により、各アルファ値を値２ｎ−ｐに初期化し、アプリケーションの実行後にｐ（ｍｏｄｕｌｏ２ｎ）を各アルファ値に加える。この方法は、非アルファ・チャネル認識アプリケーションがアルファ・チャネルの値を０に設定する場合に用いられる。
【００４４】
これらのケースは組み合わせることができる。すなわち、アルファ・チャネルがｎビット長であり、非アルファ・チャネル認識アプリケーションがアルファ・チャネルの値をｍに設定し、所望の不透明度がｐである場合は、各ピクセルのアルファ値を２ｎ−ｐ＋ｍに初期化し、次いで、非アルファ・チャネル認識アプリケーションの実行後にｐ−ｍを加え（またはｍ−ｐを引き）、ｍｏｄｕｌｏ２ｎを実行する（２ｎで還元する）ことになる。
【００４５】
この方法は、この方法を実施するためのグラフィックス・システム、オペレーティング・システム、複数のコンピュータ実行可能命令を記憶したコンピュータ可読媒体、コ・プロセッシング・デバイス、コンピューティング・デバイス、または、コンピュータ実行可能命令を搬送する変調されたデータ信号において実現することができる。
【００４６】
結び
本発明の構造と、本発明に関連して実施されるプロセスとを実現するのに必要なプログラミングは、比較的単純であり、関係するプログラミング界には明らかなはずである。したがって、このようなプログラミングは本明細書に添付しない。この場合、任意の特定のプログラミングを採用して、本発明の趣旨および範囲を逸脱することなく本発明を実施することができる。
【００４７】
以上の記述で、非アルファ・チャネル認識アプリケーションがアルファ・チャネル認識環境に向けて画像をレンダリングすることを可能にする新規かつ有用な機構を本発明が含むことがわかる。本発明の発明的概念を逸脱することなく、前述の実施形態に変更を加えることもできることを理解されたい。したがって本発明は、開示した特定の実施形態に限定するものではなく、特許請求の範囲で定義する本発明の趣旨および範囲に含まれる修正を包含することを理解されたい。
【図面の簡単な説明】
【図１】本発明の態様を実施することのできる例示的なコンピューティング環境のブロック図である。
【図２】非アルファ・チャネル認識プロセスがピクセル・データ・ファイルに書き込む前の、ピクセル・データ・ファイルの事前初期化済みピクセル・グループのブロック図である。
【図３】本発明の方法による、非アルファ・チャネル認識プロセスがピクセル・データ・ファイルに書き込んだ後の、ただしアルファ値を変換する前の、ピクセル・データ・ファイルのピクセル・グループのブロック図である。
【図４】本発明の方法による、アルファ値を変換した後のピクセル・データ・ファイルのピクセル・グループのブロック図である。
【図５】本発明の方法のフローチャートである。
【符号の説明】
１００　コンピューティング・システム環境
１１０　コンピュータ
１２０　処理ユニット
１２１　システム・バス
１３０　システム・メモリ
１３１　ＲＯＭ
１３２　ＲＡＭ
１３３　ＢＩＯＳ
１３４　オペレーティング・システム
１３５　アプリケーション・プログラム
１３６　その他のプログラム・モジュール
１３７　プログラム・データ
１４０　取外し不可能かつ不揮発性メモリ・インターフェース
１４１　ハードディスク・ドライブ
１４４　オペレーティング・システム
１４５　アプリケーション・プログラム
１４６　その他のプログラム・モジュール
１４７　プログラム・データ
１５０　取外し可能かつ不揮発性メモリ・インターフェース
１５１　磁気ディスク・ドライブ
１５２　磁気ディスク
１５５　光ディスク・ドライブ
１５６　光ディスク
１６０　ユーザ入力インターフェース
１６１　ポインティング・デバイス
１６２　キーボード
１７０　ネットワーク・インターフェース
１７１　ローカルエリア・ネットワーク
１７２　モデム
１７３　ワイドエリア・ネットワーク
１８１　メモリ記憶デバイス
１８０　リモート・コンピュータ
１８５　リモート・アプリケーション・プログラム
１９０　ビデオ・インターフェース
１９１　モニタ
１９５　出力周辺インターフェース
１９６　プリンタ
１９７　スピーカ
１９９　ピクセル・データ・ファイル
２００　ピクセル
３０５　変更されたピクセル
３１０　変更されないピクセル
４０５　変更されたピクセル
４１０　変更されないピクセル
【図１】
2004038957.tif 000003
【図２】
2004038957.tif 000004
【図３】
2004038957.tif 000005
【図４】
2004038957.tif 000006
【図５】
2004038957.tif 000007