| インターフェースキット目次 | インターフェースキット索引 |
継承:なし
宣言箇所: be/interface/Screen.h
ライブラリ: libbe.so
アロケーション:コンストラクタまたはスタック上
BScreenはコンピューターに接続されているひとつのディスプレイ画面を代表するオブジェクトである。BScreenオブジェクトで出来ることは・・・
BScreenオブジェクトをコピーすることは出来ない—コピーコンストラクタとイコール演算子はprivateに宣言されている。
BeOSは現在、シングルスクリーンのみをサポートしている。将来、マルチスクリーンとユーザーを接続するだろう。スクリーンのうちのひとつmain screen(メインスクリーン)は左上の画面座標系を持っている。他の画面は同様の座標系で、別のところに位置する。ひとつの画面しかなかったらそれがメインスクリーンだ。
BScreenオブジェクトはひとつの画面を代表する。アプリケーションは同じ画面を参照するためにひとつ以上のオブジェクトを生成できる。
マルチスクリーンがサポートされたら、 screen_id識別子がそれぞれに割り当てられる。現在はB_MAIN_SCREEN_IDが唯一の識別子だ。
|
BScreenオブジェクトを初期化して、表示されている、あるいは windowidによって示されているスクリーンを代表するようにする。もしwindowがNULL あるいは、隠されていたりidが無効でなかったらBScreenはメインスクリーンを代表する。
![]() |
マルチモニタは現在はサポートされていません。メインスクリーンとは別のスクリーンの識別子に対するAPIはありません。
|
オブジェクトが正常に生成されたか確認するためにはIsValid()を呼び出してください。
|
スクリーンのロックをはずして、BScreenオブジェクトを無効にする。
|
これらの関数は、この画面の color_map構造体の情報を返す。 color_map構造体はB_CMAP8カラースペースで表示できる256色カラーのセットを定義する。唯一のcolor_mapは同じ画面で表示されているすべてのアプリケーションで共有される。color_mapも参照してください(訳注:本来はここにリンクがあります)
ColorMap()関数はcolor_map自身のポインタを返す。この構造体はBScreenオブジェクトが所有している。それを更新したり解放したりは出来ない。(system_colors() 関数がメインスクリーンのためにBScreenオブジェクトの参照なしにcolor_map構造体を受け取ることが無いことに注意してください。)
IndexForColor()関数は与えられた32ビットカラーへもっとも合う8ビットカラーへの「インデックス」を返す。このインデックスを8ビットカラーをセットするためBBitmap::SetBits()のような関数にセットできる。Note that IndexForColor()関数はB_TRANSPARENT_32_BITをB_TRANSPARENT_8_BITへ変換できることに注意してください。
ColorForIndex()はindexで与えられた8ビットカラーから32ビットカラーを示す値を返す。この関数はB_TRANSPARENT_8_BITからB_TRANSPARENT_32_BITには変換できない
InvertIndex()は8ビットのindexを取り、反転色を返す。反転色はハイライトなどによく使われる。
![]() |
IndexForColor()やColorForIndex()やInvertIndex()によって得た情報は color_map構造体によって効率的に得られる。もし、何回もこの関数を呼び出すようだったら、代わりにcolor_map構造体にアクセスすることを考えるべきだ。しかし、B_TRANSPARENT_32_BITからB_TRANSPARENT_8_BITへの変換の賢いやり方は構造体によってサポートされるものではない。
|
|
スクリーンが表示しているカラースペースを返す。典型的にはB_CMAP8か B_RGB15かB_RGB32であり、BScreenオブジェクトが有効でないときはB_NO_COLOR_SPACEである。
カラースペースはScreen設定アプリケーションによってユーザーが設定できる。プログラム的に設定したい場合はSetMode()関数を使う。
|
スクリーン座標系に割り当てられている矩形を返す。例えば1024×768メインスクリーンはこのようになる。
BRect(0.0, 0.0, 1023.0, 767.0)
もしBScreenが無効だったら矩形のすべての点は0.0にセットされる。
スクリーンフレームの矩形は Screen設定アプリケーションによって設定される。プログラム的に行いたいときはSetMode()関数を使う。
|
グラフィックカードの情報を返す。
|
これらの関数はスクリーンのdisplay modeを取得または設定する。それぞれのdisplay_modeの構造体(add-ons/graphics/Accelerant.hで宣言されている)は別のスクリーンサイズ、ピクセルの深度、ディスプレイタイミングの組み合わせである。
GetModeList()はmode_listにグラフィックスカードがサポートしているdisplay_mode構造体を割り当てて返す。countはdisplay_mode要素の数である。mode_listを解放するのは呼び出し側の責任である。
![]() |
GetModeList()関数によって得られたモードをモニターがサポートしている保証はない。
|
SetMode()関数はスクリーンを与えられたmodeにする。もしmakeDefaultがtrueだったらモードは現在のワークスペースに対してデフォルトになる。
GetMode()関数は現在のdisplay_modeをmodeにセットする。
参考:ProposeMode()
|
この関数は lowとhighに与えられたモードで可能な最小と最大の「ピクセルクロック」レート(一秒あたりの何千ものピクセル)を返す。与えられたピクセルクロックとディスプレイモードによってピクセルクロックを「リアル」なスクリーンの大きさで割ることによりリフレッシュレートが得られる。このようにする。
uint32 hi_clock, lo_clock; float hi_refresh, lo_refresh; float real_size; display_mode mode; GetMode(&mode); GetPixelClockLimits(&mode, &lo_clock, &hi_clock); /* The real screen dimensions (i.e. the dimensions for the purposes * of the gun) are given by the 'timing.h_total' and * 'timing.v_total' fields. */ total_size = mode.timing.h_total * mode.timing.v_total /* Get the refresh rate by dividing the pixel clock by the total * screen size. Remember -- the pixel clock values are given in * kHz; we multiply by 1000.0 to retrieve refresh rates in Hz. */ hi_refresh = ((float)hi_clock*1000.0)/(float)total_size; lo_refresh = ((float)lo_clock*1000.0)/(float)total_size;
|
スクリーンを示す識別子を返す。メインスクリーンは B_MAIN_SCREEN_IDと識別される。
IDは永続的ではない。再起動されたりモニターが切断されたり、再接続されたりしたら変わる可能性がある。
![]() |
現在ではこの関数はBScreenオブジェクトが無効であってもB_MAIN_SCREEN_IDを返す。
|
|
BScreenオブジェクトが有効だったら trueを返す(もし、実際の画面がコンピューターと接続されているなら)。そして、違ったらfalseを返す。
![]() |
これら二つの関数は同じである。ProposeDisplayMode()関数の名前は後のリリースで反対される。
|
|
ProposeMode()関数はcandidateをサポートするモードに調節するのに便利な関数である(GetModeList()関数によってリストされる)。これは、調整されているかもしれないcandidateとlowとhighで宣言されている制限とを比較し、その比較の結果を返す。この関数はdoesn'tcandidateを必然的にlowとhighの間にあるように、調整したりはしない
正確には ProposeMode()関数がどのように働くかは個々のグラフィックドライバにかかっている。この関数はカラースペース定数を保持している間はcandidateのスクリーンサイズを調整することを期待されている。(訳注:将来のリリースでは、display_modeを調整するように変更するよという意味だと思われます)
返値
B_OK. (返値のように) candidateはサポートされていて、制限内にある。
B_BAD_VALUE. (返値のように) candidateはサポートされているが、制限内に無い。
B_ERROR. candidateはサポートされてない。
参照: GetModeList()
|
これらの関数は、スクリーンの内容を最初の引数のBBitmapにコピーすることによって、スクリーンへの読み取り専用のアクセスを提供する。これらの違いはReadBitmap()はBBitmapが渡される前にプログラマーによって割り当てられられる必要があり、GetBitmap()は新しいBBitmapを割り当ててくれる。GetBitmap()によって割り当てられたBBitmapの解放は呼び出し側の責任である。
draw_cursor引数はスクリーンショットにカーソルを書くかどうかを決める。boundsはコピーしたいスクリーン座標での領域を特定する。もしboundsにNULLを渡したら、画面全体がコピーされる。この関数はboundsの矩形がまったくスクリーンフレームに入っていなかったら失敗する。
この関数は成功したらB_OKを返し失敗したらB_ERRORを返す。
|
これらの関数はデスクトップのカラーを返す。—窓が表示されている画面の背景である。SetDesktopColor()は画面に表示されているデスクトップのカラーを即座に変更する。DesktopColor()関数は現在表示されているカラーを返す。
もしmakeDefaultがtrueであったら、カラーはスクリーンに対してデフォルトカラーになる。そのカラーは次にマシンが起動したときに表示されるカラーとなる。もしそのフラグがfalseであったら、カラーは現在のセッションだけセットされる。
![]() |
"Background Images"セクションはデスクトップにビットマップイメージを表示する方法を教えてくれる。
|
基本的にはユーザーはデスクトップカラーをScreen設定アプリケーションで設定する。
|
モニターの現在の垂直リトレースを待ってからB_OKを返す。次のリトレースが始まるまでに数ミリ秒使用できる。この間にフレームバッファに変化を描画すれば画面に「フリッカー」は起こらない。
いくつかのグラフィックカードドライバでは垂直同期を待つ。ほかには、より数ミリ秒余裕のある垂直ブランクを待つものもある。
timeout引数は、タイムアウトをマイクロ秒で指定する。—もしスクリーンがその期限までにリトレースしなかったら、B_ERRORを返す
| インターフェースキット目次 | インターフェースキット索引 |
訳者 big56
|
|||
|
|