• R/O
  • SSH
  • HTTPS

qrobosdk: コミット


コミットメタ情報

リビジョン9 (tree)
日時2008-05-10 04:58:25
作者satofumi

ログメッセージ

revert

変更サマリ

差分

--- trunk/libs/gui/ScreenControl.cpp (revision 8)
+++ trunk/libs/gui/ScreenControl.cpp (nonexistent)
@@ -1,172 +0,0 @@
1-/*!
2- \file
3- \brief 画面管理
4-
5- \author Satofumi KAMIMURA
6-
7- $Id$
8-*/
9-
10-#include <string>
11-#include "ScreenCtrl.h"
12-#include "SdlVideoInit.h"
13-
14-using namespace qrk;
15-
16-
17-struct ScreenCtrl::pImpl {
18- SdlVideoInit sdl_video_;
19- std::string error_message_;
20- SDL_Surface* scr_;
21- Uint32 pre_flags_;
22- int next_width_;
23- int next_height_;
24- int next_bpp_;
25- bool is_fullscreen_;
26- bool toggle_fullscreen_;
27-
28- std::string caption_;
29- std::string icon_caption_;
30- const SDL_Surface* icon_surface_;
31- const Uint8* icon_mask_;
32-
33- pImpl(void)
34- : error_message_(SDL_GetError()), scr_(NULL), pre_flags_(0),
35- next_width_(640), next_height_(480), next_bpp_(0),
36- is_fullscreen_(false), toggle_fullscreen_(false),
37- icon_surface_(NULL), icon_mask_(NULL) {
38- }
39-
40- static pImpl* getObject(void) {
41- static pImpl singleton;
42- return &singleton;
43- }
44-
45- void show(Uint32 flags) {
46-
47- if ((! scr_) && icon_surface_) {
48- // アイコンの初期化は、SDL_SetVideoMode() を呼び出す前のみ有効
49- SDL_WM_SetIcon(const_cast<SDL_Surface*>(icon_surface_),
50- const_cast<Uint8*>(icon_mask_));
51- }
52-
53- sdl_video_.init();
54- scr_ = SDL_SetVideoMode(next_width_, next_height_, next_bpp_, flags);
55- if (scr_) {
56- pre_flags_ = flags;
57-
58- // キャプションは、画面の生成後に設定
59- SDL_WM_SetCaption(caption_.c_str(), icon_caption_.c_str());
60-
61- if (flags & SDL_FULLSCREEN) {
62- // 実際にフルスクリーンかどうか、の厳密な保証はできない
63- is_fullscreen_ = true;
64- }
65- }
66- toggle_fullscreen_ = false;
67- next_bpp_ = 0;
68- error_message_ = SDL_GetError();
69- }
70-
71- void hide(void) {
72- sdl_video_.quit();
73- }
74-};
75-
76-
77-ScreenCtrl::ScreenCtrl(void) : pimpl(pImpl::getObject()) {
78-}
79-
80-
81-ScreenCtrl::~ScreenCtrl(void) {
82-}
83-
84-
85-const char* ScreenCtrl::what(void) {
86- return pimpl->error_message_.c_str();
87-}
88-
89-
90-SDL_Surface* ScreenCtrl::show(Uint32 flags) {
91-
92- // 画面設定が変わっていたら、show() のときに画面を作り直す
93- if ((! pimpl->scr_) ||
94- pimpl->toggle_fullscreen_ ||
95- (pimpl->next_bpp_ != 0) ||
96- (pimpl->next_width_ != pimpl->scr_->w) ||
97- (pimpl->next_height_ != pimpl->scr_->h)) {
98- hide();
99- pimpl->show(flags);
100- }
101- return pimpl->scr_;
102-}
103-
104-
105-void ScreenCtrl::hide(void) {
106- pimpl->hide();
107-}
108-
109-
110-void ScreenCtrl::setWindowSize(size_t width, size_t height) {
111- pimpl->next_width_ = width;
112- pimpl->next_height_ = height;
113-}
114-
115-
116-size_t ScreenCtrl::width(void) {
117-
118- if (! pimpl->scr_) {
119- // ウィンドウ非表示
120- return 0;
121- }
122- return pimpl->scr_->w;
123-}
124-
125-
126-size_t ScreenCtrl::height(void) {
127-
128- if (! pimpl->scr_) {
129- // ウィンドウ非表示
130- return 0;
131- }
132- return pimpl->scr_->h;
133-}
134-
135-
136-void ScreenCtrl::setWindowBpp(size_t bpp) {
137- pimpl->next_bpp_ = bpp;
138-}
139-
140-
141-void ScreenCtrl::setFullscreen(bool on) {
142-
143- if (on != pimpl->is_fullscreen_) {
144- Uint32 next_flags = pimpl->pre_flags_;
145- if (on) {
146- next_flags |= SDL_FULLSCREEN;
147- } else {
148- next_flags &= ~SDL_FULLSCREEN;
149- }
150-
151- // 画面の再生成を強制する
152- pimpl->toggle_fullscreen_ = true;
153- show(pimpl->pre_flags_);
154- }
155-}
156-
157-
158-bool ScreenCtrl::isFullscreen(void) {
159- return pimpl->is_fullscreen_;
160-}
161-
162-
163-void ScreenCtrl::setCaption(const char* caption, const char* icon_caption) {
164- pimpl->caption_ = caption;
165- pimpl->icon_caption_ = icon_caption;
166-}
167-
168-
169-void ScreenCtrl::setIcon(const SDL_Surface* icon, const Uint8* mask) {
170- pimpl->icon_surface_ = icon;
171- pimpl->icon_mask_ = mask;
172-}
--- trunk/libs/gui/ScreenControl.h (revision 8)
+++ trunk/libs/gui/ScreenControl.h (nonexistent)
@@ -1,127 +0,0 @@
1-#ifndef SCREEN_CTRL_H
2-#define SCREEN_CTRL_H
3-
4-/*!
5- \file
6- \brief 画面管理
7-
8- \author Satofumi KAMIMURA
9-
10- $Id$
11-
12- \attention show() は複数のスレッド以外から呼び出されてはならない (SDL-1.2 の仕様)
13-*/
14-
15-#include <SDL.h>
16-
17-
18-namespace qrk {
19-
20- /*!
21- \brief 画面制御
22- */
23- class ScreenCtrl {
24- ScreenCtrl(const ScreenCtrl& rhs);
25- ScreenCtrl& operator = (const ScreenCtrl& rhs);
26-
27- struct pImpl;
28- pImpl* pimpl;
29-
30- public:
31- ScreenCtrl(void);
32- ~ScreenCtrl(void);
33-
34- /*!
35- \brief エラー状態を返す
36-
37- \return エラー状態を示す文字列
38- */
39- const char* what(void);
40-
41- /*!
42- \brief 画面の表示
43-
44- \param flags SDL_SetVideoMode に渡すモード引数
45-
46- \return SDL の返すスクリーン資源
47- */
48- SDL_Surface* show(Uint32 flags = 0);
49-
50- /*!
51- \brief 画面の非表示
52- */
53- void hide(void);
54-
55- /*!
56- \brief 画面サイズの変更
57-
58- \param width [i] 幅
59- \param height [i] 高さ
60-
61- \attention 変更は、次の show() から有効になる
62- */
63- void setWindowSize(size_t width, size_t height);
64-
65- /*!
66- \brief 現在の画面幅
67-
68- \return 画面幅
69- */
70- size_t width(void);
71-
72- /*!
73- \brief 現在の画面高さ
74-
75- \return 画面高さ
76- */
77- size_t height(void);
78-
79- /*!
80- \brief 画面解像度の設定
81-
82- \param bpp [i] 画面の解像度 [bit]
83- */
84- void setWindowBpp(size_t bpp);
85-
86- /*!
87- \brief 画面モード
88-
89- \param on [i] フルスクリーン指定のとき true / 通常スクリーンのとき false
90-
91- \attention 変更は、次の show() から有効になる
92- */
93- void setFullscreen(bool on = true);
94-
95- /*!
96- \brief フルスクリーンかを返す
97-
98- \retval true フルスクリーン
99- \retval false 通常スクリーン
100- */
101- bool isFullscreen(void);
102-
103- /*!
104- \brief タイトル文字列の設定
105-
106- \param caption [i] タイトル文字列
107- \param icon_caption [i] アイコン時のタイトル文字列
108-
109- \attention 最初に show() が呼ばれる前に呼び出されなければならない
110- \attention 詳しくは、SDL_WM_SetCaption() を参照のこと
111- */
112- void setCaption(const char* caption, const char* icon_caption);
113-
114- /*!
115- \brief タイトルアイコンの設定
116-
117- \param icon [i] タイトルアイコン
118- \param mask [i] マスク領域
119-
120- \attention 最初に show() が呼ばれる前に呼び出されなければならない
121- \attention 詳しくは、SDL_WM_SetIcon() を参照のこと
122- */
123- void setIcon(const SDL_Surface* icon, const Uint8* mask = NULL);
124- };
125-};
126-
127-#endif /* !SCREEN_CTRL_H */
--- trunk/libs/gui/ScreenCtrl.cpp (nonexistent)
+++ trunk/libs/gui/ScreenCtrl.cpp (revision 9)
@@ -0,0 +1,172 @@
1+/*!
2+ \file
3+ \brief 画面管理
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include <string>
11+#include "ScreenCtrl.h"
12+#include "SdlVideoInit.h"
13+
14+using namespace qrk;
15+
16+
17+struct ScreenCtrl::pImpl {
18+ SdlVideoInit sdl_video_;
19+ std::string error_message_;
20+ SDL_Surface* scr_;
21+ Uint32 pre_flags_;
22+ int next_width_;
23+ int next_height_;
24+ int next_bpp_;
25+ bool is_fullscreen_;
26+ bool toggle_fullscreen_;
27+
28+ std::string caption_;
29+ std::string icon_caption_;
30+ const SDL_Surface* icon_surface_;
31+ const Uint8* icon_mask_;
32+
33+ pImpl(void)
34+ : error_message_(SDL_GetError()), scr_(NULL), pre_flags_(0),
35+ next_width_(640), next_height_(480), next_bpp_(0),
36+ is_fullscreen_(false), toggle_fullscreen_(false),
37+ icon_surface_(NULL), icon_mask_(NULL) {
38+ }
39+
40+ static pImpl* getObject(void) {
41+ static pImpl singleton;
42+ return &singleton;
43+ }
44+
45+ void show(Uint32 flags) {
46+
47+ if ((! scr_) && icon_surface_) {
48+ // アイコンの初期化は、SDL_SetVideoMode() を呼び出す前のみ有効
49+ SDL_WM_SetIcon(const_cast<SDL_Surface*>(icon_surface_),
50+ const_cast<Uint8*>(icon_mask_));
51+ }
52+
53+ sdl_video_.init();
54+ scr_ = SDL_SetVideoMode(next_width_, next_height_, next_bpp_, flags);
55+ if (scr_) {
56+ pre_flags_ = flags;
57+
58+ // キャプションは、画面の生成後に設定
59+ SDL_WM_SetCaption(caption_.c_str(), icon_caption_.c_str());
60+
61+ if (flags & SDL_FULLSCREEN) {
62+ // 実際にフルスクリーンかどうか、の厳密な保証はできない
63+ is_fullscreen_ = true;
64+ }
65+ }
66+ toggle_fullscreen_ = false;
67+ next_bpp_ = 0;
68+ error_message_ = SDL_GetError();
69+ }
70+
71+ void hide(void) {
72+ sdl_video_.quit();
73+ }
74+};
75+
76+
77+ScreenCtrl::ScreenCtrl(void) : pimpl(pImpl::getObject()) {
78+}
79+
80+
81+ScreenCtrl::~ScreenCtrl(void) {
82+}
83+
84+
85+const char* ScreenCtrl::what(void) {
86+ return pimpl->error_message_.c_str();
87+}
88+
89+
90+SDL_Surface* ScreenCtrl::show(Uint32 flags) {
91+
92+ // 画面設定が変わっていたら、show() のときに画面を作り直す
93+ if ((! pimpl->scr_) ||
94+ pimpl->toggle_fullscreen_ ||
95+ (pimpl->next_bpp_ != 0) ||
96+ (pimpl->next_width_ != pimpl->scr_->w) ||
97+ (pimpl->next_height_ != pimpl->scr_->h)) {
98+ hide();
99+ pimpl->show(flags);
100+ }
101+ return pimpl->scr_;
102+}
103+
104+
105+void ScreenCtrl::hide(void) {
106+ pimpl->hide();
107+}
108+
109+
110+void ScreenCtrl::setWindowSize(size_t width, size_t height) {
111+ pimpl->next_width_ = width;
112+ pimpl->next_height_ = height;
113+}
114+
115+
116+size_t ScreenCtrl::width(void) {
117+
118+ if (! pimpl->scr_) {
119+ // ウィンドウ非表示
120+ return 0;
121+ }
122+ return pimpl->scr_->w;
123+}
124+
125+
126+size_t ScreenCtrl::height(void) {
127+
128+ if (! pimpl->scr_) {
129+ // ウィンドウ非表示
130+ return 0;
131+ }
132+ return pimpl->scr_->h;
133+}
134+
135+
136+void ScreenCtrl::setWindowBpp(size_t bpp) {
137+ pimpl->next_bpp_ = bpp;
138+}
139+
140+
141+void ScreenCtrl::setFullscreen(bool on) {
142+
143+ if (on != pimpl->is_fullscreen_) {
144+ Uint32 next_flags = pimpl->pre_flags_;
145+ if (on) {
146+ next_flags |= SDL_FULLSCREEN;
147+ } else {
148+ next_flags &= ~SDL_FULLSCREEN;
149+ }
150+
151+ // 画面の再生成を強制する
152+ pimpl->toggle_fullscreen_ = true;
153+ show(pimpl->pre_flags_);
154+ }
155+}
156+
157+
158+bool ScreenCtrl::isFullscreen(void) {
159+ return pimpl->is_fullscreen_;
160+}
161+
162+
163+void ScreenCtrl::setCaption(const char* caption, const char* icon_caption) {
164+ pimpl->caption_ = caption;
165+ pimpl->icon_caption_ = icon_caption;
166+}
167+
168+
169+void ScreenCtrl::setIcon(const SDL_Surface* icon, const Uint8* mask) {
170+ pimpl->icon_surface_ = icon;
171+ pimpl->icon_mask_ = mask;
172+}
--- trunk/libs/gui/ScreenCtrl.h (nonexistent)
+++ trunk/libs/gui/ScreenCtrl.h (revision 9)
@@ -0,0 +1,127 @@
1+#ifndef SCREEN_CTRL_H
2+#define SCREEN_CTRL_H
3+
4+/*!
5+ \file
6+ \brief 画面管理
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+
12+ \attention show() は複数のスレッド以外から呼び出されてはならない (SDL-1.2 の仕様)
13+*/
14+
15+#include <SDL.h>
16+
17+
18+namespace qrk {
19+
20+ /*!
21+ \brief 画面制御
22+ */
23+ class ScreenCtrl {
24+ ScreenCtrl(const ScreenCtrl& rhs);
25+ ScreenCtrl& operator = (const ScreenCtrl& rhs);
26+
27+ struct pImpl;
28+ pImpl* pimpl;
29+
30+ public:
31+ ScreenCtrl(void);
32+ ~ScreenCtrl(void);
33+
34+ /*!
35+ \brief エラー状態を返す
36+
37+ \return エラー状態を示す文字列
38+ */
39+ const char* what(void);
40+
41+ /*!
42+ \brief 画面の表示
43+
44+ \param flags SDL_SetVideoMode に渡すモード引数
45+
46+ \return SDL の返すスクリーン資源
47+ */
48+ SDL_Surface* show(Uint32 flags = 0);
49+
50+ /*!
51+ \brief 画面の非表示
52+ */
53+ void hide(void);
54+
55+ /*!
56+ \brief 画面サイズの変更
57+
58+ \param width [i] 幅
59+ \param height [i] 高さ
60+
61+ \attention 変更は、次の show() から有効になる
62+ */
63+ void setWindowSize(size_t width, size_t height);
64+
65+ /*!
66+ \brief 現在の画面幅
67+
68+ \return 画面幅
69+ */
70+ size_t width(void);
71+
72+ /*!
73+ \brief 現在の画面高さ
74+
75+ \return 画面高さ
76+ */
77+ size_t height(void);
78+
79+ /*!
80+ \brief 画面解像度の設定
81+
82+ \param bpp [i] 画面の解像度 [bit]
83+ */
84+ void setWindowBpp(size_t bpp);
85+
86+ /*!
87+ \brief 画面モード
88+
89+ \param on [i] フルスクリーン指定のとき true / 通常スクリーンのとき false
90+
91+ \attention 変更は、次の show() から有効になる
92+ */
93+ void setFullscreen(bool on = true);
94+
95+ /*!
96+ \brief フルスクリーンかを返す
97+
98+ \retval true フルスクリーン
99+ \retval false 通常スクリーン
100+ */
101+ bool isFullscreen(void);
102+
103+ /*!
104+ \brief タイトル文字列の設定
105+
106+ \param caption [i] タイトル文字列
107+ \param icon_caption [i] アイコン時のタイトル文字列
108+
109+ \attention 最初に show() が呼ばれる前に呼び出されなければならない
110+ \attention 詳しくは、SDL_WM_SetCaption() を参照のこと
111+ */
112+ void setCaption(const char* caption, const char* icon_caption);
113+
114+ /*!
115+ \brief タイトルアイコンの設定
116+
117+ \param icon [i] タイトルアイコン
118+ \param mask [i] マスク領域
119+
120+ \attention 最初に show() が呼ばれる前に呼び出されなければならない
121+ \attention 詳しくは、SDL_WM_SetIcon() を参照のこと
122+ */
123+ void setIcon(const SDL_Surface* icon, const Uint8* mask = NULL);
124+ };
125+};
126+
127+#endif /* !SCREEN_CTRL_H */
旧リポジトリブラウザで表示