インターフェースキット目次       インターフェースキット索引

BScreen

継承:なし

宣言箇所: be/interface/Screen.h

ライブラリ: libbe.so

アロケーション:コンストラクタまたはスタック上

概要

BScreenはコンピューターに接続されているひとつのディスプレイ画面を代表するオブジェクトである。BScreenオブジェクトで出来ることは・・・

BScreenオブジェクトをコピーすることは出来ない—コピーコンストラクタとイコール演算子はprivateに宣言されている。


マルチスクリーン

BeOSは現在、シングルスクリーンのみをサポートしている。将来、マルチスクリーンとユーザーを接続するだろう。スクリーンのうちのひとつmain screen(メインスクリーン)は左上の画面座標系を持っている。他の画面は同様の座標系で、別のところに位置する。ひとつの画面しかなかったらそれがメインスクリーンだ。

BScreenオブジェクトはひとつの画面を代表する。アプリケーションは同じ画面を参照するためにひとつ以上のオブジェクトを生成できる。

マルチスクリーンがサポートされたら、 screen_id識別子がそれぞれに割り当てられる。現在はB_MAIN_SCREEN_IDが唯一の識別子だ。


コンストラクタとデストラクタ


BScreen()

                                                         
  

BScreen(BWindow *window)
BScreen(screen_id id = B_MAIN_SCREEN_ID)

BScreenオブジェクトを初期化して、表示されている、あるいは windowidによって示されているスクリーンを代表するようにする。もしwindowNULL あるいは、隠されていたりidが無効でなかったらBScreenはメインスクリーンを代表する。

マルチモニタは現在はサポートされていません。メインスクリーンとは別のスクリーンの識別子に対するAPIはありません。

オブジェクトが正常に生成されたか確認するためにはIsValid()を呼び出してください。


~BScreen()

                                                         
  

~BScreen()

スクリーンのロックをはずして、BScreenオブジェクトを無効にする。


メンバ関数


ColorForIndex()はColorMap()

参照


ColorMap() , IndexForColor() , ColorForIndex()

                                                         
  

const color_map *ColorMap(void)
inline uint8 IndexForColor(rgb_color color)
uint8 IndexForColor(uint8 red, uint8 green, uint8 blue, uint8 alpha = 255)
rgb_color ColorForIndex(const uint8 index)
uint8 InvertIndex(uint8 index)

これらの関数は、この画面の 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_BITB_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への変換の賢いやり方は構造体によってサポートされるものではない。


ColorSpace()

                                                         
  

color_space ColorSpace(void)

スクリーンが表示しているカラースペースを返す。典型的にはB_CMAP8B_RGB15B_RGB32であり、BScreenオブジェクトが有効でないときはB_NO_COLOR_SPACEである。

カラースペースはScreen設定アプリケーションによってユーザーが設定できる。プログラム的に設定したい場合はSetMode()関数を使う。


DesktopColor() see SetDesktopColor()


Frame()

                                                         
  

BRect Frame(void)

スクリーン座標系に割り当てられている矩形を返す。例えば1024×768メインスクリーンはこのようになる。

   BRect(0.0, 0.0, 1023.0, 767.0)

もしBScreenが無効だったら矩形のすべての点は0.0にセットされる。

スクリーンフレームの矩形は Screen設定アプリケーションによって設定される。プログラム的に行いたいときはSetMode()関数を使う。


GetBitmap()はReadBitmap()

を参照


GetDeviceInfo

                                                         
  

status_t GetDeviceInfo(accelerant_device_info *info)

グラフィックカードの情報を返す。


GetMode()はGetModeList()を参照


GetModeList() , SetMode() , GetMode()

                                                         
  

status_t GetModeList(display_mode **mode_list, uint32 *count)
status_t SetMode(display_mode *mode, bool makeDefault = false)
status_t GetMode(display_mode *mode)

これらの関数はスクリーンのdisplay modeを取得または設定する。それぞれのdisplay_modeの構造体(add-ons/graphics/Accelerant.hで宣言されている)は別のスクリーンサイズ、ピクセルの深度、ディスプレイタイミングの組み合わせである。

GetModeList()mode_listにグラフィックスカードがサポートしているdisplay_mode構造体を割り当てて返す。countdisplay_mode要素の数である。mode_listを解放するのは呼び出し側の責任である。

GetModeList()関数によって得られたモードをモニターがサポートしている保証はない。

SetMode()関数はスクリーンを与えられたmodeにする。もしmakeDefaultがtrueだったらモードは現在のワークスペースに対してデフォルトになる。

GetMode()関数は現在のdisplay_modemodeにセットする。

参考:ProposeMode()


GetPixelClockLimits()

                                                         
  

status_t GetPixelClockLimits(display_mode *mode,
      uint32 *low,
      uint32 *high)

この関数は lowhighに与えられたモードで可能な最小と最大の「ピクセルクロック」レート(一秒あたりの何千ものピクセル)を返す。与えられたピクセルクロックとディスプレイモードによってピクセルクロックを「リアル」なスクリーンの大きさで割ることによりリフレッシュレートが得られる。このようにする。

   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;


ID()

                                                         
  

screen_id ID(void)

スクリーンを示す識別子を返す。メインスクリーンは B_MAIN_SCREEN_IDと識別される。

IDは永続的ではない。再起動されたりモニターが切断されたり、再接続されたりしたら変わる可能性がある。

現在ではこの関数はBScreenオブジェクトが無効であってもB_MAIN_SCREEN_IDを返す。


SetMode()はGetModeList()を参照


IndexForColor()はColorMap()を参照


InvertIndex()はColorMap()を参照


IsValid()

                                                         
  

bool IsValid(void)

BScreenオブジェクトが有効だったら trueを返す(もし、実際の画面がコンピューターと接続されているなら)。そして、違ったらfalseを返す。


ProposeDisplayMode() , ProposeMode()

これら二つの関数は同じである。ProposeDisplayMode()関数の名前は後のリリースで反対される。

                                                         
  

status_t ProposeMode(display_mode *candidate,
      const display_mode *low,
      const display_mode *high)

ProposeMode()関数はcandidateをサポートするモードに調節するのに便利な関数である(GetModeList()関数によってリストされる)。これは、調整されているかもしれないcandidatelowhighで宣言されている制限とを比較し、その比較の結果を返す。この関数はdoesn'tcandidateを必然的にlowhighの間にあるように、調整したりはしない

正確には ProposeMode()関数がどのように働くかは個々のグラフィックドライバにかかっている。この関数はカラースペース定数を保持している間はcandidateのスクリーンサイズを調整することを期待されている。(訳注:将来のリリースでは、display_modeを調整するように変更するよという意味だと思われます)

返値

B_OK. (返値のように) candidateはサポートされていて、制限内にある。

B_BAD_VALUE. (返値のように) candidateはサポートされているが、制限内に無い。

B_ERROR. candidateはサポートされてない。

参照: GetModeList()


ReadBitmap() , GetBitmap()

                                                         
  

status_t ReadBitmap(BBitmap *buffer,
      bool draw_cursor = true,
      BRect *bounds = NULL)
status_t GetBitmap(BBitmap **buffer,
      bool draw_cursor = true,
      BRect *bounds = NULL)

これらの関数は、スクリーンの内容を最初の引数のBBitmapにコピーすることによって、スクリーンへの読み取り専用のアクセスを提供する。これらの違いはReadBitmap()BBitmapが渡される前にプログラマーによって割り当てられられる必要があり、GetBitmap()は新しいBBitmapを割り当ててくれる。GetBitmap()によって割り当てられたBBitmapの解放は呼び出し側の責任である。

draw_cursor引数はスクリーンショットにカーソルを書くかどうかを決める。boundsはコピーしたいスクリーン座標での領域を特定する。もしboundsNULLを渡したら、画面全体がコピーされる。この関数はboundsの矩形がまったくスクリーンフレームに入っていなかったら失敗する。

この関数は成功したらB_OKを返し失敗したらB_ERRORを返す。


SetDesktopColor() , DesktopColor()

                                                         
  

void SetDesktopColor(rgb_color color, bool makeDefault = true)
rgb_color DesktopColor(void)

これらの関数はデスクトップのカラーを返す。—窓が表示されている画面の背景である。SetDesktopColor()は画面に表示されているデスクトップのカラーを即座に変更する。DesktopColor()関数は現在表示されているカラーを返す。

もしmakeDefaulttrueであったら、カラーはスクリーンに対してデフォルトカラーになる。そのカラーは次にマシンが起動したときに表示されるカラーとなる。もしそのフラグがfalseであったら、カラーは現在のセッションだけセットされる。

"Background Images"セクションはデスクトップにビットマップイメージを表示する方法を教えてくれる。

基本的にはユーザーはデスクトップカラーをScreen設定アプリケーションで設定する。


WaitForRetrace()

                                                         
  

status_t WaitForRetrace(void)
status_t WaitForRetrace(bigtime_t timeout)

モニターの現在の垂直リトレースを待ってからB_OKを返す。次のリトレースが始まるまでに数ミリ秒使用できる。この間にフレームバッファに変化を描画すれば画面に「フリッカー」は起こらない。

いくつかのグラフィックカードドライバでは垂直同期を待つ。ほかには、より数ミリ秒余裕のある垂直ブランクを待つものもある。

timeout引数は、タイムアウトをマイクロ秒で指定する。—もしスクリーンがその期限までにリトレースしなかったら、B_ERRORを返す


インターフェースキット目次       インターフェースキット索引

訳者 big56

eir@mb.kcom.ne.jp

給料前でお金がない・・ 低金利でお得なローン探し 海外旅行保険の加入はコチラ!
[PR] | ヒーリング会社案内 作成se 転職川口栃木荻窪池袋中国SEO対策消費者金融車 買取テンプレート沖縄旅行免許合宿二輪引越しプレゼントゴルフ会員権留学レーシックマッサージFXアフィリエイトFXホームページ制作デイトレードハワイ旅行タイバンコクハワイ レンタカーベスト ハワイ ホテル レーツバリ島Hawaii hotelsHawaii Activitiesbhhrハワイホテルテキスト広告
【運営会社「パラダイムシフト」サービス】 ハワイ現地オプショナルツアーリラックマ) - ビジネスクラス航空券 - 格安航空券(1) - 格安航空券(2) - 海外ホテル - 韓国旅行 - タイムシェア - ホテル 予約
無料ホームページ - 携帯ホームページ - 無料ホームページ作成 - レンタルサーバー - ブログ - ヴィラ - ハワイ コンドミニアム - バリ島 ホテル - プーケット ホテル - 旅行 口コミ - 旅行情報 - 国際電話 - ホノルルマラソン - 掲示板監視 - 風評被害 - ホテル比較 - ノースウェスト航空 - ファイナルチェッカー