Microsoft DirectX 8.0 |
CImageDisplay クラスはディスプレイ フォーマットを使用してそれ自体を初期化し、ほかのオブジェクトがディスプレイ タイプを問い合わせたり、リセットできるようにする。また、ディスプレイ フォーマットをチェックしたり、GDI の呼び出しを使用して効率的にレンダリングできるビデオ フォーマットだけを受け入れるためのメンバ関数も提供する。
プロテクト データ メンバ
m_Display 現在のデバイス ディスプレイ タイプに対応する VIDEOINFO 構造体。
メンバ関数
CheckBitFields VIDEOINFO 構造体のビット フィールドが正しいことをチェックする。 CheckHeaderValidity BITMAPINFOHEADER 構造体が有効であるかどうかを判断する。 CheckMediaType フィルタが出力ピンによって指定されたメディア タイプをサポートできるかどうかを判断する。 CheckPaletteHeader VIDEOINFO 構造体のパレットが正しいかどうかを判断する。 CheckVideoType ビデオ タイプを比較し、現在のディスプレイ モードと互換性があるかどうかを判断する。 CImageDisplay CImageDisplay オブジェクトを作成する。 CountPrefixBits プレフィックス ビットの数をカウントする。 CountSetBits フィールド内で設定されたビットの合計数をカウントする。 GetBitMasks VIDEOINFO 構造体で提供されたカラー要素のビットマスクのセットを取得する。 GetColourMask 個々のカラー要素のマスクのセットを取得する。 GetDisplayDepth 現在のディスプレイ モードのビット深度を取得する。 GetDisplayFormat 現在のディスプレイ モードを表す VIDEOINFO 構造体を取得する。 IsPalettized ディスプレイがパレットを使用するかどうかを判断する。 RefreshDisplayType 現在のディスプレイ タイプを使用して CImageDisplay オブジェクトを更新する。 UpdateFormat VIDEOINFO 構造体を更新して暗黙の仮定を削除する。
VIDEOINFO 構造体のビット フィールドが正しいことをチェックする。
構文
BOOL CheckBitFields( const VIDEOINFO *pInput );
パラメータ
- pInput
- チェックする VIDEOINFO 構造体へのポインタ。
戻り値
次のいずれかの値を返す。
TRUE ビット フィールドは正しい。 FALSE ビット フィールドにエラーが含まれている。
注意
オブジェクト全体で、カラー コンポーネントを格納するために使用できるビットマスクは最大 8 ビットであると仮定されている。このメンバ関数は、このビット カウントの仮定が実施されていることをチェックし、すべてのビット セットが連続していることも確認する。
これはプロテクト メンバ関数である。
BITMAPINFOHEADER 構造体が有効であるかどうかを判断する。
構文
BOOL CheckHeaderValidity( const VIDEOINFO *pInput );
パラメータ
- pInput
- ビットマップの詳細を格納する VIDEOINFO 構造体へのポインタ。
戻り値
次のいずれかの値を返す。
TRUE フォーマットは有効である。 FALSE フォーマットにエラーが含まれている。
注意
BITMAPINFOHEADER 構造体は、多くの理由で拒否される場合がある。たとえば、プレーン数のエントリが 1 よりも大きいか小さい、この構造体のサイズが BITMAPINFOHEADER のサイズと等しくない、または YUV フォーマットを確認するよう指示された (このメンバ関数は RGB フォーマットのみ確認する。YUV タイプについては常に FALSE を返す) などの理由である。
フィルタが出力ピンによって指定されたメディア タイプをサポートできるかどうかを判断する。
構文
HRESULT CheckMediaType( const CMediaType *pmtIn );
パラメータ
- pmtIn
- チェックするメディア タイプへのポインタ。
戻り値
HRESULT 値を返す。
注意
このヘルパー関数を使用して、ビデオのメディア タイプを確認できる。このヘルパー関数は、メジャー タイプおよびサブタイプの GUID を調べ、フォーマット GUID が VIDEOINFO 構造体を定義していることを確認する。
VIDEOINFO 構造体のパレットが正しいかどうかを判断する。
構文
BOOL CheckPaletteHeader( const VIDEOINFO *pInput );
パラメータ
- pInput
- 確認する VIDEOINFO 構造体へのポインタ。
戻り値
次のいずれかの値を返す。
TRUE パレットは正しい。 FALSE 有効なパレットがない。
注意
フォーマットがパレットを使用しないことを指定している場合 (トゥルーカラー フォーマットなどの場合)、このメンバ関数は FALSE を返す。また、使用される (または重要である) パレット カラーの数がビデオ フォーマットで指定されている数を超えている場合も、FALSE を返す。
ビデオ タイプを比較し、現在のディスプレイ モードと互換性があるかどうかを判断する。
構文
HRESULT CheckVideoType( const VIDEOINFO *pInput );
パラメータ
- pInput
- 確認する VIDEOINFO 構造体へのポインタ。
戻り値
成功した場合は NOERROR を返す。それ以外の場合は E_INVALIDARG を返す。
注意
多くのビデオ レンダリング フィルタは、指定されたフォーマットが使用できるかどうかを判断する関数を必要とする。このメンバ関数は、メディア タイプとして渡された VIDEOINFO 構造体をチェックし、メディア タイプが有効である場合は NOERROR を返す。それ以外の場合は E_INVALIDARG434 を返す。ただし、現在のディスプレイ デバイスで容易に表示できるフォーマットのみ使用できる。たとえば、16 ビット デバイスで 24 ビット イメージは使用できない。多くのディスプレイは 8 ビットのパレット化されたイメージを効率的に表示できるので、ディスプレイが 16 色 VGA でない限り、このフォーマットは常に使用できる。
CImageDisplay オブジェクトを作成する。
構文
CImageDisplay(void);
戻り値
戻り値なし。
注意
CImageDisplay クラスは、現在のディスプレイ モードのフォーマットを判断する必要があるレンダラを補助する。このメンバ関数は、ディスプレイ モードを取得し、そのフォーマットを表す VIDEOINFO 構造体を作成する。このクラスは、IsPalettized および GetDisplayFormat などのメンバ関数によって、そのフォーマットをクライアントに提供する。クライアントはディスプレイ フォーマットが変更されたことを検出した (クライアントが WM_DISPLAYCHANGED メッセージを受信する) 場合、RefreshDisplayType を呼び出す必要がある。
プレフィックス ビットの数をカウントする。
構文
DWORD CountPrefixBits( const DWORD Field );
パラメータ
- Field
- 入力ビットマスク フィールド。
戻り値
戻り値なし。
注意
ビットマスクを指定すると、このヘルパー関数は、最下位に設定されているビットまで、0 のビットの数をカウントする。したがって、2 進値 00000100 の場合、このメンバ関数は 2 (10 進値) を返す。ただし、このメンバ関数は DWORD 値に対して機能するので、最下位ビットから DWORD を通って、最終ビット (0x80000000) までカウントする。ビットが見つからない場合、このメンバ関数は不可能な値 32 (10 進値) を返す。
これはプロテクト メンバ関数である。
フィールド内で設定されたビットの合計数をカウントする。
構文
DWORD CountSetBits( const DWORD Field );
パラメータ
- Field
- ビット セットをカウントするフィールド。
戻り値
ビット セットの数を返す。
注意
これはプロテクト メンバ関数である。
VIDEOINFO 構造体で提供されたカラー要素のビットマスクのセットを取得する。
構文
const DWORD *GetBitMasks( const VIDEOINFO *pVideoInfo );
パラメータ
- pVideoInfo
- 入力 VIDEOINFO 構造体フォーマットへのポインタ。
戻り値
戻り値なし。
注意
このメンバ関数は、RGB フォーマットについてのみ呼び出す必要がある。RGB フォーマットのピクセルあたりのビット深度は 16/32 ビットであり、赤、緑、青の個々のカラー要素のビットマスク (RGB565 の場合は 0xF800、0x07E0、および 0x001F など) を返す。RGB24 の場合、このメンバ関数は 0xFF0000、0xFF00、および 0xFF を返す。パレット化されたフォーマットの場合、このメンバ関数はすべて 0 を返す。
個々のカラー要素のマスクのセットを取得する。
構文
BOOL GetColourMask( DWORD *pMaskRed, DWORD *pMaskGreen, DWORD *pMaskBlue );
パラメータ
- pMaskRed
- 赤のマスクへのポインタ。
- pMaskGreen
- 緑のマスクへのポインタ。
- pMaskBlue
- 青のマスクへのポインタ。
戻り値
次のいずれかの値を返す。
TRUE マスクが正しく格納された。 FALSE ディスプレイで使用できるマスクがなかった。
注意
VIDEOINFO 構造体によって表されるビデオ フォーマットを指定すると、このメンバ関数はこのタイプの使用可能なカラーの範囲を取得するために使用されるマスクを返す。たとえば、24 ビット トゥルーカラー フォーマットのマスクはすべての場合で 0xFF である。16 ビット 5:6:5 ディスプレイ フォーマットは、0xF8、0xFC、および 0xF8 を使用する。したがって、RGB トリプレットを指定すると、このメンバ関数は、ビットごとの AND 演算を使用して、ディスプレイ フォーマットと互換性のあるフォーマットを検索できる。
現在のディスプレイ モードのビット深度を取得する。
構文
WORD GetDisplayDepth(void);
戻り値
ディスプレイ上で使用されるピクセルあたりのビット数を返す。
現在のディスプレイ モードを表す VIDEOINFO 構造体を取得する。
構文
const VIDEOINFO *GetDisplayFormat(void);
戻り値
ディスプレイ フォーマットを表す VIDEOINFO 構造体を返す。
ディスプレイがパレットを使用するかどうかを判断する。
構文
BOOL IsPalettized(void);
戻り値
ディスプレイがパレットを使用する場合は TRUE を返す。それ以外の場合は FALSE を返す。
現在のディスプレイ タイプを使用して CImageDisplay オブジェクトを更新する。
構文
HRESULT RefreshDisplayType( LPSTR szDeviceName );
パラメータ
- szDeviceName
- 更新するデバイスの名前。省略した場合、このパラメータのデフォルトはメイン デバイスになる。
戻り値
成功した場合は NOERROR を返す。それ以外の場合は E_FAIL を返す。
注意
このメンバ関数は、WM_DISPLAYCHANGED メッセージを受信したときに呼び出す必要がある。
VIDEOINFO 構造体を更新して暗黙の仮定を削除する。
構文
HRESULT UpdateFormat( VIDEOINFO *pVideoInfo );
パラメータ
- pVideoInfo
- 更新する VIDEOINFO 構造体へのポインタ。
戻り値
HRESULT 値を返す。現在の実装では NOERROR を返す。
注意
このメンバ関数は、特定のフィルタでの使用にのみ適している。BITMAPINFO 構造体には、明確に指定されていない特定のフィールドが含まれている。具体的には、パレットについて指定されるカラーの数を 0 にすることができ、この場合、そのフォーマット タイプの最大値として定義される。このメンバ関数はこれらのフィールドを更新し、その内容が明示的になるようにする。