IreGUI †
- shadow/IreGUI
- IreGUI Systemとは、Mona上で動くWindow Systemもどきである。
- 入れ食い:釣りで、釣り針を水中に入れるとすぐに魚がかかること。
- とりあえず、メモ書き。
- 特にコメント欄とか設けないので、適当に書き込みしてください。
IreGUIサーバの基本設計 †
- VRAMを占有し、描画を行う。
- キーボードサーバ/マウスサーバを独占し、キー入力/マウス入力を取得。
- IreGUIシステム上でアクティブのプロセスに入力情報を転送。
- IreGUIシステムを使用するプロセスは、IreGUIサーバと通信をしてサービスを受ける。
- GUIオブジェクトの登録要求
- GUIオブジェクトの更新要求
- GUIオブジェクトの破棄要求
GUIオブジェクト情報の管理方法 †
- IreGUIサーバは、GUIオブジェクトツリーを一つ持つ。
- GUIオブジェクト
- ID
- 親ID
- 子IDリスト
- オブジェクトタイプ
- オブジェクトの位置
- 色情報(背景等)
- フラグ
- 対応プロセス情報
- 子オブジェクトは、親オブジェクト内に描画される。
- 子オブジェクトは、優先度を持ち、重なった場合は優先度の高い方を描画する。
- GUIオブジェクトツリーは、ルートウィンドウオブジェクトである。
ルートウィンドウオブジェクト †
- デフォルトでタスクバーとマウスポインタを子オブジェクトとして持つ。
- ユーザプロセスに対応するウィンドウもルートウィンドウオブジェクトの子オブジェクトとなる。
ウィンドウオブジェクト †
- デフォルトでタイトルバーを持つ。
- ユーザプロセスは、まずウィンドウオブジェクトを作る必要がある。
描画 †
- IreGUIサーバは、描画用に以下のバッファを持つ
- ルートウィンドウバッファ
- ルートウィンドウオブジェクトのバッファ。ほぼ、壁紙だと思えばよい。
- アクティブウィンドウバッファ
- アクティブウィンドウオブジェクトのバッファ。子オブジェクトも全て描画された状態。
- 非アクティブウィンドウバッファ
- アクティブでないウィンドウオブジェクト(と、それらの持つ子オブジェクト)全てとルートウィンドウオブジェクトを描画したもの。
- 通常時は、マウスポインタの消去と描画を繰り返し行う。
- ウィンドウ移動時は、アクティブオブジェクトバッファと非アクティブオブジェクトバッファを使って描画する。
- 別のウィンドウオブジェクトがアクティブになったときに、アクティブオブジェクトバッファと非アクティブオブジェクトバッファを更新する。
- 問題点
- 画像の表示はどうやるか。
- メッセージベースだと難しい。データを添付して送れば可能。
- アニメーション等の頻繁に描画を更新する処理に不向き(画像表示問題も含む)
- メッセージベースではなくて、プロセス自体に描画をさせる機能が必要かも。
- ひげぽん書き込み 8/31
- 懸念されている通り、プロセス自体が描画するまたは、プロセス自体が描画しているように見える機構は必要だと思います。アプリのcube, fireなどのようにVRAMを意識したアプリは、仮想でも良いのでVRAMを見せてあげた方がいいかなぁと。
- そのあたりは共有メモリの仕組みを使えば解決するかなぁと。IreGUIサーバが共有メモリを確保して、その場所をユーザーアプリプロセスに教える。そこに書き込んでもらえばあとはサーバが実際の描画をやってくれますみたいな。
キーボード入力/マウス入力情報 †
- まず、IreGUIサーバで必要により処理される。
- IreGUIシステムにおけるショートカットキー処理(ウィンドウ切り替え等)
- マウスポインタ描画処理
- クリックによるアクティブウィンドウ変更処理
- IreGUIサーバによる処理が終わると、アクティブウィンドウに対応するプロセスに情報を送信する。
- マウス情報は、非アクティブウィンドウに対応するプロセスにも送ったほうが良いかも?
問題点 †
- オブジェクトツリーが、大きくなりすぎるかも。
- オブジェクトの探索コストが大きくなる。
- オブジェクト削除が面倒かもしれない。
- 描画処理が複雑?
- 現設計では、単純なオブジェクトを組み合わせる方式。
- 単体オブジェクトを高機能化して、一気に描画できる方式がいいかも。
now: 7
リンク
最新の20件
2018-10-07
2018-09-20
2018-09-03
2018-05-09
2017-09-29
2017-01-10
2016-12-11
2016-10-04
2016-08-14
2016-05-29
2015-12-28
2013-02-25
2013-02-21
2013-02-20
2013-02-12
2013-02-11
2013-02-10
最新の20件
2010-02-01
2010-01-31
2010-01-30
2010-01-29
2010-01-16
Counter: 2831,
today: 1,
yesterday: 1
HTML convert time to 0.068 sec.
Copyright(C)2003-2007 MonaProjectTeam, all rights reserved. powered by www.be-interactive.org