GUIサーバ高速化/05.部分描画実装(libbaygui)/実装


Top / GUIサーバ高速化 / 05.部分描画実装(libbaygui) / 実装

これは何か

実装

Graphicsに対する描画の際にRectangleを自動的に記録するというのは止めました。

プログラマが明示的に repaint(x, y , w, h)を呼べるように libbayguiを変更中です。

具体的にプログラマは以下のように repaint(x, y, w, h)を呼ぶことで明示的に部分描画を行えます。

 #include <baygui.h>
  
 class Canvas : public Component
 {
 public:
     Canvas();
     virtual ~Canvas() {};
     virtual void paint(Graphics* g);
     virtual void drawSomething();
  
 private:
     int count;
 };
  
 Canvas::Canvas() : count(0)
 {
 }
  
 void Canvas::paint(Graphics* g)
 {
     g->setColor(Color::black);
     g->drawRect(0, 0, getWidth(), getHeight());
     g->setColor(Color::white);
     g->fillRect(10, 10, 30, 30);
     g->setColor(Color::green);
     g->drawString("start", 15, 15);
 }
  
 void Canvas::drawSomething()
 {
     count++;
     Graphics* g = getGraphics();
     g->setColor(Color::white);
     g->fillRect(10, 10, 30, 30);
     g->setColor(Color::green);
     char buf[32];
     sprintf(buf, "%d", count);
     g->drawString(buf, 15, 15);
     repaint(10, 10, 30, 30);
 }
  
 class GTest : public Frame
 {
 private:
     Canvas* canvas;
  
 public:
     GTest()
     {
         setBounds(200, 200, 400, 300);
         setTitle("Repaint Test");
         canvas = new Canvas();
         canvas->setBounds(100, 100, 100, 100);
         add(canvas);
     }
  
     ~GTest()
     {
         delete canvas;
     }
  
     void paint(Graphics* g)
     {
     }
  
     void processEvent(Event *event)
     {
         if(event->getType() == KeyEvent::KEY_PRESSED)
         {
             canvas->drawSomething();
         }
     }
 };
  
 int MonaMain(List<char*>* pekoe)
 {
     GTest *test = new GTest();
     test->run();
     delete(test);
     return 0;
 }

このアプリケーションではキー押下によって部分再描画し数字がカウントアップされます。

以前のBayGUIであれば、全体描画を伴いもっさりとした描画となっていましたが、部分描画により素早くカウントアップされます。

http://f.hatena.ne.jp/images/fotolife/h/higepon/20060910/20060910165339.png

課題は、初期表示がうまくいかないこと。

いろいろいじっていて思ったのですがTinoさんが指摘されていた通り、ライブラリ中で絶対・相対座標がごっちゃになる事があるので、仮引数名などを工夫して分かりやすくすれば良いかもしれません。

初期化の問題

コメント

コメントはありません。 コメント/GUIサーバ高速化/05.部分描画実装(libbaygui)/実装?

お名前:

MENU

now: 1

リンク


最新の20件
2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 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: 2342, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:54 (3831d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.033 sec.