ディスプレイに関する情報の取得
Quartz Display Services は、ディスプレイ状態とディスプレイモードに関する情報を取得するための多くの関数を提供しています。この記事では、これらの関数のいくつかについて簡単に説明します。完全なリストについては、Quartz Display Services Reference を参照してください。
ディスプレイ状態情報の取得(OS X v10.6 以降)
Quartz Display Services には、現在のディスプレイモードでも見られるプロパティである、ディスプレイハードウェアの現在のプロパティをレポートするアクセサ関数が含まれています。これらの関数には現在のディスプレイモードからの情報に依存しないため、ディスプレイに関する最も正確な情報を提供します(ディスプレイモードのプロパティはデバイスドライバによって変更される可能性があります)。以下に挙げるこれらの関数は使いやすいです:
関数 | 説明 |
---|---|
CGDisplayPixelsWide | ディスプレイの描画可能な幅をピクセル単位で返します。 |
CGDisplayPixelsHigh | ディスプレイの描画可能な高さをピクセル単位で返します。 |
API には、ディスプレイの現在の構成と状態に関する追加情報を報告するその他のアクセサー関数が含まれています。次の表に、これらの関数の代表的な例を示します。
関数 | 説明 |
---|---|
CGDisplayIsActive | ディスプレイがアクティブか描画可能かを示すブール値を返します。 |
CGDisplayIsBuiltin | ポータブルシステムの内部ディスプレイなどの、ディスプレイが組み込まれているかどうかを示すブール値を返します。 |
CGDisplayIsMain | ディスプレイがメインディスプレイかどうかを示すブール値を返します。 |
CGDisplayScreenSize | ディスプレイの幅と高さをミリメートル単位で返します。 |
CGDisplayUsesOpenGLAcceleration | Quartz が OpenGL ベースのウィンドウアクセラレーション(Quartz Extreme) を使用してディスプレイにレンダリングするかどうかを示すブール値を返します。 |
ディスプレイ状態情報の取得(OS X v10.5)
Quartz Display Services には、ディスプレイハードウェアの現在のプロパティ、現在のディスプレイモード辞書にも存在するプロパティをレポートするいくつかのアクセサ関数が含まれています。これらの関数は現在のディスプレイモードからの情報に依存しないため、ディスプレイに関する最も正確な情報を提供します(ディスプレイモードのプロパティはデバイスドライバによって変更される可能性があります)。以下に挙げるこれらの関数は使いやすいです:
関数 | 説明 |
---|---|
CGDisplayPixelsWide | ディスプレイの描画可能な幅をピクセル単位で返します。 |
CGDisplayPixelsHigh | ディスプレイの描画可能な高さをピクセル単位で返します。 |
CGDisplayBitsPerPixel | フレームバッファ内のピクセルを表すために使用されるビット数を返します。 |
CGDisplayBitsPerSample | フレームバッファ内のピクセルコンポーネントを表すために使用されるビット数を返します。 |
CGDisplaySamplesPerPixel | フレームバッファ内のピクセルを表すために使用されるコンポーネントの数を返します。 |
CGDisplayBytesPerRow | フレームバッファ内の 1 行あたりのバイト数を返します。 |
API には、ディスプレイの現在の構成と状態に関する追加情報を報告するその他のアクセサー関数が含まれています。次の表に、これらの関数の代表的な例を示します。
関数 | 説明 |
---|---|
CGDisplayIsActive | ディスプレイがアクティブか、描画可能かを示すブール値を返します。 |
CGDisplayIsBuiltin | ポータブルシステムでの内部ディスプレイなど、ディスプレイが組み込まれているかどうかを示すブール値を返します。 |
CGDisplayIsMain | ディスプレイがメインディスプレイであるかどうかを示すブール値を返します。 |
CGDisplayScreenSize | ディスプレイの幅と高さをミリメートル単位で返します。 |
CGDisplayUsesOpenGLAcceleration | Quartz が OpenGL ベースのウィンドウアクセラレーション(Quartz Extreme) を使用してディスプレイ内にレンダリングするかどうかを示すブール値を返します。 |
ディスプレイモード情報の取得(OS X v10.6 以降)
各オンラインディスプレイには、現在の表示モードと一連の利用可能なディスプレイモードとがあります。デバイスドライバは、現在のディスプレイモード内の情報を使用してディスプレイを構成します。
適切な CGDisplayMode 関数を使用して、ディスプレイモード内のプロパティの値を取得できます。リスト 1 は、いくつかのモード・プロパティーを検索する方法を示しています。
リスト 1 OS X v10.6 以降でディスプレイモードのプロパティを取得する
bool gui; double refresh; uint32_t ioflags; CGDisplayModeRef currentMode = CGDisplayCopyDisplayMode(kCGDirectMainDisplay); refresh = CGDisplayModeGetRefreshRate(currentMode); gui = CGDisplayModeIsUsableForDesktopGUI(currentMode); ioflags = CGDisplayModeGetIOFlags(currentMode); CGDisplayModeRelease(currentMode);
ディスプレイモード情報の取得(OS X v10.5)
各オンラインディスプレイには、現在のディスプレイモードと一連の利用可能なディスプレイモードとがあります。デバイスドライバは、現在のディスプレイモードの情報を使用してディスプレイを構成します。
ディスプレイモード辞書内のプロパティの値は、CFDictionaryGetValue 関数を使用して取得できます。次に、戻り値を適切なデータ型にキャストする必要があります。リスト 1 は、いくつかのモードプロパティーを取得し、それらを基本データ型にキャストする方法を示しています。
リスト 2 OS X v10.5 でディスプレイモードプロパティを取得する
CFNumberRef number; CFBoolean booleanValue; Boolean gui; long mode, refresh, ioflags; CFDictionaryRef currentMode = CGDisplayCurrentMode (kCGDirectMainDisplay); number = CFDictionaryGetValue (currentMode, kCGDisplayMode); CFNumberGetValue (number, kCFNumberLongType, &mode); number = CFDictionaryGetValue (currentMode, kCGDisplayRefreshRate); CFNumberGetValue (number, kCFNumberLongType, &refresh); booleanValue = CFDictionaryGetValue (currentMode, kCGDisplayModeUsableForDesktopGUI); gui = CFBooleanGetValue (booleanValue); number = CFDictionaryGetValue (currentMode, kCGDisplayIOFlags); CFNumberGetValue (number, kCFNumberLongType, &ioflags);
前の章 次の章