• R/O
  • SSH
  • HTTPS

qrobosdk: コミット


コミットメタ情報

リビジョン1815 (tree)
日時2010-05-07 02:34:19
作者satofumi

ログメッセージ

add doxygen comment

変更サマリ

差分

--- trunk/libs/lua/luabindGui.cpp (revision 1814)
+++ trunk/libs/lua/luabindGui.cpp (revision 1815)
@@ -143,6 +143,7 @@
143143
144144 class_<ImageSurface, Surface>("ImageSurface")
145145 .def(constructor<const char*, bool>())
146+ .def("isValid", &ImageSurface::isValid)
146147 .def("rect", &ImageSurface::rect)
147148 .def("setAlpha", &ImageSurface::setAlpha)
148149 .def("draw", &ImageSurface::draw),
--- trunk/libs/lua/luabindInit.h (revision 1814)
+++ trunk/libs/lua/luabindInit.h (revision 1815)
@@ -13,6 +13,7 @@
1313 #include <lua.hpp>
1414
1515
16+//! Quick Robot Development Kit
1617 namespace qrk
1718 {
1819 /*!
--- trunk/libs/lua/Scheduler.lua (revision 1814)
+++ trunk/libs/lua/Scheduler.lua (revision 1815)
@@ -2,7 +2,7 @@
22 -- Satofumi KAMIMURA
33 -- $Id$
44
5-Scheduler = {}
5+_G.Scheduler = {}
66
77
88 function Scheduler:new()
@@ -27,43 +27,66 @@
2727 local index = self.size_ + 1
2828 local id = self.serial_id_
2929
30- if self.size_ >= #self.coroutines_ then
31- -- コルーチンの新規作成
32- self.coroutines_[index] = {
33- func_ = func,
34- arg_ = arg,
35- co_ = nil,
36- id_ = id,
37- wakeup_ticks_ = false
38- }
30+ -- コルーチンの新規作成
31+ self.coroutines_[index] = {
32+ func_ = func,
33+ arg_ = arg,
34+ id_ = id,
35+ wakeup_ticks_ = false,
36+ co_ = nil
37+ }
3938
40- -- テーブルが伸張している可能性があるので
41- -- self_function は、ここで宣言する
42- local self_function = self.coroutines_[index]
43- self_function.co_ =
44- coroutine.create(function()
45- while true do
46- self_function.func_(self_function.arg_)
47- coroutine.yield(nil)
48- end
39+ -- テーブルが伸張している可能性があるので
40+ -- self_function は、ここで宣言する
41+ local self_function = self.coroutines_[index]
42+ self_function.co_ =
43+ coroutine.create(function()
44+ while true do
45+ self_function.func_(self_function.arg_)
46+ coroutine.yield(nil)
4947 end
50- )
51- else
52- -- コルーチンの再利用
53- local self_function = self.coroutines_[index]
54- self_function.func_ = func
55- self_function.arg_ = arg
56- self_function.id_ = id
57- self_function.wakeup_ticks_ = false
58- end
48+ end
49+ )
5950
6051 self.id_table_[id] = index
6152 self.serial_id_ = self.serial_id_ + 1
6253 self.size_ = index
54+
6355 return id
6456 end
6557
6658
59+-- 登録した関数を取り除く
60+function Scheduler:remove(id)
61+ if not self:isActive(id) then
62+ return
63+ end
64+
65+ local remove_index = self.id_table_[id]
66+ local from = self.coroutines_[self.size_]
67+ local to = self.coroutines_[remove_index]
68+ to.func_ = from.func_
69+ to.arg_ = from.arg_
70+ to.id_ = from.id_
71+ to.wakeup_ticks_ = from.wakeup_ticks_
72+ to.co_ = from.co_
73+
74+ -- self.size_ 位置を示す id を探索して変更する
75+ self.id_table_[from.id_] = remove_index
76+
77+ from.func_ = nil
78+ from.arg_ = nil
79+ from.id_ = nil
80+ from.wakeup_ticks_ = nil
81+ from.co_ = nil
82+ from = nil
83+
84+ self.size_ = self.size_ - 1
85+
86+ self.id_table_[id] = nil
87+end
88+
89+
6790 -- コルーチン実行を待機させる
6891 function Scheduler:wait(msec)
6992
@@ -93,8 +116,9 @@
93116 self_function.wakeup_ticks_ = false
94117
95118 -- 登録されている関数の実行
96- local ret, alive = coroutine.resume(self_function.co_,
97- self_function.arg_)
119+ local ret, alive =
120+ coroutine.resume(self_function.co_, self_function.arg_)
121+
98122 if ret == false then
99123 -- エラーメッセージの出力
100124 -- !!! ファイル、行番号なども表示させる
@@ -102,11 +126,8 @@
102126 end
103127
104128 if alive == nil then
105- self.id_table_[self_function.id_] = nil
106- self_function.id_ = -1
107-
108129 -- 終了したコルーチンの index を記録しておき、最後に削除する
109- table.insert(terminated_id, i)
130+ table.insert(terminated_id, self.coroutines_[i].id_)
110131
111132 elseif type(alive) == 'number' then
112133 -- 次の起床時間を登録
@@ -116,11 +137,9 @@
116137 end
117138 end
118139
119- -- 終了したコルーチンを末尾のコルーチンと入れ替え
120- for key, value in pairs(terminated_id) do
121- self.coroutines_[value], self.coroutines_[self.size_] =
122- self.coroutines_[self.size_], self.coroutines_[value]
123- self.size_ = self.size_ - 1
140+ -- 終了したコルーチンを末尾のコルーチンと入れ替える
141+ for key, id in pairs(terminated_id) do
142+ self:remove(id)
124143 end
125144
126145 return self.size_
@@ -130,7 +149,7 @@
130149 -- 指定した ID のコルーチンが有効かを返す
131150 function Scheduler:isActive(id)
132151
133- if self.id_table_[id] == nil then
152+ if id == nil or self.id_table_[id] == nil then
134153 return false
135154 else
136155 return true
--- trunk/libs/system/fileExist.h (revision 1814)
+++ trunk/libs/system/fileExist.h (revision 1815)
@@ -13,6 +13,7 @@
1313 */
1414
1515
16+//! Quick Robot Development Kit
1617 namespace qrk
1718 {
1819 /*!
--- trunk/libs/system/delay.h (revision 1814)
+++ trunk/libs/system/delay.h (revision 1815)
@@ -10,6 +10,8 @@
1010 $Id$
1111 */
1212
13+
14+//! Quick Robot Development Kit
1315 namespace qrk
1416 {
1517 /*!
--- trunk/libs/gui/Font.cpp (revision 1814)
+++ trunk/libs/gui/Font.cpp (revision 1815)
@@ -39,6 +39,7 @@
3939 {
4040 if (! ttf_font_) {
4141 error_message_ = TTF_GetError();
42+ log_printf("%s\n", error_message_.c_str());
4243 }
4344 }
4445
--- trunk/libs/gui/Canvas.cpp (nonexistent)
+++ trunk/libs/gui/Canvas.cpp (revision 1815)
@@ -0,0 +1,227 @@
1+/*!
2+ \file
3+ \brief 描画コンポーネント
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include "Canvas.h"
11+#define GL_GLEXT_PROTOTYPES
12+#include <SDL_opengl.h>
13+#include <vector>
14+
15+using namespace qrk;
16+using namespace std;
17+
18+
19+struct Canvas::pImpl
20+{
21+ // !!! 使わない要素は削除する
22+ typedef struct {
23+ GLenum mode;
24+ GLuint start;
25+ GLuint end;
26+ GLsizei count;
27+ GLenum type;
28+ } primitive_t;
29+
30+
31+ Rect<long> rect_;
32+ float alpha_;
33+ Color clear_color_;
34+ Color draw_color_;
35+ vector<GLuint> buffers_;
36+ vector<primitive_t> primitives_;
37+
38+
39+ pImpl(const Rect<long>& rect)
40+ : rect_(rect), alpha_(1.0),
41+ clear_color_(Color(0.0, 0.0, 0.0, 1.0)),
42+ draw_color_(Color(1.0, 1.0, 1.0, 1.0))
43+ {
44+ clearBuffers();
45+ }
46+
47+
48+ GLuint addBuffer(void)
49+ {
50+ GLuint id;
51+ glGenBuffers(1, &id);
52+
53+ return id;
54+ }
55+
56+
57+ void clearBuffers(void)
58+ {
59+ // buffers_ を順に削除する
60+ glDeleteBuffers(buffers_.size(), &buffers_[0]);
61+ buffers_.clear();
62+
63+ // 塗りつぶし用の矩形を描画する
64+ // !!!
65+ }
66+
67+
68+ void draw(const Rect<long>* src, const Rect<long>* dest)
69+ {
70+ (void)src;
71+ (void)dest;
72+
73+ glEnableClientState(GL_VERTEX_ARRAY);
74+
75+ GLfloat vertices[2 * 2];
76+ vertices[0] = 0.0f;
77+ vertices[1] = 0.0f;
78+ vertices[2] = 100.0f;
79+ vertices[3] = 100.0f;
80+
81+ //GLuint id = addBuffer();
82+ //glBindBuffer(GL_ARRAY_BUFFER, id);
83+ glVertexPointer(2, GL_FLOAT, 0, vertices);
84+ GLubyte indices[] = { 0, 1 };
85+ glDrawElements(GL_LINES, 2, GL_UNSIGNED_BYTE, indices);
86+
87+ glDisableClientState(GL_VERTEX_ARRAY);
88+#if 0
89+ // !!! 効率が気になるならば foreach, bind を用いる
90+ GLubyte indices[] = { 0, 1 };
91+ size_t index = 0;
92+ for (vector<GLuint>::iterator it = buffers_.begin();
93+ it != buffers_.end(); ++it, ++index) {
94+
95+ //glBindBuffer(GL_ARRAY_BUFFER, *it);
96+ //glVertexPointer(2, GL_FLOAT, 0, 0);
97+ //glDrawElements(GL_LINES, 3 * 3, GL_UNSIGNED_INT, BUFFER_OFFSET(0));
98+ //glDrawRangeElement(GL_LINES, 0, 4,
99+
100+ glDrawElements(GL_LINES, 2, GL_UNSIGNED_BYTE, &indices);
101+ // !!!
102+ }
103+
104+ glDisableClientState(GL_VERTEX_ARRAY);
105+#endif
106+ }
107+};
108+
109+
110+Canvas::Canvas(const qrk::Rect<long>& rect) : pimpl(new pImpl(rect))
111+{
112+}
113+
114+
115+Canvas::~Canvas(void)
116+{
117+}
118+
119+
120+bool Canvas::isValid(void) const
121+{
122+ return true;
123+}
124+
125+
126+Rect<long> Canvas::rect(void) const
127+{
128+ return pimpl->rect_;
129+}
130+
131+
132+void Canvas::setAlpha(float alpha)
133+{
134+ pimpl->alpha_ = alpha;
135+}
136+
137+
138+float Canvas::alpha(void) const
139+{
140+ return pimpl->alpha_;
141+}
142+
143+
144+void Canvas::setRotateAngle(const Angle& angle)
145+{
146+ (void)angle;
147+ // !!!
148+}
149+
150+
151+void Canvas::draw(const Rect<long>* src, const Rect<long>* dest)
152+{
153+ pimpl->draw(src, dest);
154+}
155+
156+
157+void Canvas::setClearColor(const qrk::Color& color)
158+{
159+ pimpl->clear_color_ = color;
160+}
161+
162+
163+void Canvas::clear(void)
164+{
165+ pimpl->clearBuffers();
166+}
167+
168+
169+void Canvas::setColor(const qrk::Color& color)
170+{
171+ pimpl->draw_color_ = color;
172+}
173+
174+
175+void Canvas::setLineWidth(float width)
176+{
177+ (void)width;
178+ // !!!
179+}
180+
181+
182+void Canvas::drawLine(const qrk::Point<long>& p0, const qrk::Point<long>& p1)
183+{
184+ (void)p0;
185+ (void)p1;
186+
187+#if 0
188+ GLfloat vertices[2 * 2];
189+ vertices[0] = p0.x;
190+ vertices[1] = p0.y;
191+ vertices[2] = p1.x;
192+ vertices[3] = p1.y;
193+
194+ GLuint id = pimpl->addBuffer();
195+ glBindBuffer(GL_ARRAY_BUFFER, id);
196+ glVertexPointer(2, GL_FLOAT, 0, vertices);
197+ //glBufferData(GL_ARRAY_BUFFER,
198+ //2 * 2 * sizeof(GLfloat), vertices, GL_STATIC_DRAW);
199+
200+ pimpl->buffers_.push_back(id);
201+ // !!! GL_LINES
202+ //pimpl->primitives_.push_back();
203+#endif
204+}
205+
206+
207+void Canvas::drawCircle(const qrk::Point<long>& center, float radius)
208+{
209+ (void)center;
210+ (void)radius;
211+ // !!!
212+}
213+
214+
215+void Canvas::drawQuads(const qrk::Point<long>& p0,
216+ const qrk::Point<long>& p1,
217+ const qrk::Point<long>& p2,
218+ const qrk::Point<long>& p3)
219+{
220+ (void)p0;
221+ (void)p1;
222+ (void)p2;
223+ (void)p3;
224+ // !!!
225+
226+ // !!! GL_QUADS
227+}
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
--- trunk/libs/gui/AlignUtils.h (revision 1814)
+++ trunk/libs/gui/AlignUtils.h (revision 1815)
@@ -16,20 +16,94 @@
1616 class Surface;
1717
1818
19+ /*!
20+ \brief 左揃えの位置を返す
21+
22+ 左揃えの場合、x の位置をそのまま返す
23+
24+ \param[in] component コンポーネント
25+ \param[in] x コンポーネントの位置
26+
27+ \return コンポーネントを左揃えで配置するときの位置
28+ */
1929 extern long left(const Component& component, long x);
30+
31+
32+ /*!
33+ \brief 中央揃えの位置を返す
34+
35+ \param[in] component コンポーネント
36+ \param[in] x コンポーネントを配置する中央の位置
37+
38+ \return コンポーネントを中央揃えで配置するときの位置
39+ */
2040 extern long center(const Component& component, long x);
41+
42+
43+ /*!
44+ \brief 右揃えの位置を返す
45+
46+ 右揃えの場合、x の位置をそのまま返す
47+
48+ \param[in] component コンポーネント
49+ \param[in] x コンポーネントの位置
50+
51+ \return コンポーネントを右揃えで配置するときの位置
52+ */
2153 extern long right(const Component& component, long x);
2254
55+
56+ /*!
57+ \brief 上段揃えの位置を返す
58+
59+ 上段揃えの場合、y の位置をそのまま返す
60+
61+ \param[in] component コンポーネント
62+ \param[in] y コンポーネントの位置
63+
64+ \return コンポーネントを上段揃えで配置するときの位置
65+ */
2366 extern long top(const Component& component, long y);
67+
68+
69+ /*!
70+ \brief 中段揃えの位置を返す
71+
72+ \param[in] component コンポーネント
73+ \param[in] y コンポーネントの位置
74+
75+ \return コンポーネントを中段揃えで配置するときの位置
76+ */
2477 extern long middle(const Component& component, long y);
78+
79+
80+ /*!
81+ \brief 下段揃えの位置を返す
82+
83+ \param[in] component コンポーネント
84+ \param[in] y コンポーネントの位置
85+
86+ \return コンポーネントを下段揃えで配置するときの位置
87+ */
2588 extern long bottom(const Component& component, long y);
2689
90+
91+ //! \overload
2792 extern long left(const Surface& component, long x);
93+
94+ //! \overload
2895 extern long center(const Surface& component, long x);
96+
97+ //! \overload
2998 extern long right(const Surface& component, long x);
3099
100+ //! \overload
31101 extern long top(const Surface& component, long y);
102+
103+ //! \overload
32104 extern long middle(const Surface& component, long y);
105+
106+ //! \overload
33107 extern long bottom(const Surface& component, long y);
34108 };
35109
--- trunk/libs/gui/SDL_GL_Texture.cpp (revision 1814)
+++ trunk/libs/gui/SDL_GL_Texture.cpp (revision 1815)
@@ -63,7 +63,7 @@
6363 alpha_(1.0), base_w_(0), base_h_(0), transparent_(transparent)
6464 {
6565 if (! surface_) {
66- log_printf("SDL_GL_Texture(NULL)\n");
66+ //log_printf("SDL_GL_Texture(NULL)\n");
6767 return;
6868 }
6969
@@ -212,10 +212,10 @@
212212 GLfloat texMaxY = pimpl->basecoord_[3];
213213
214214 if (area) {
215- texMinX = static_cast<GLfloat>(texMaxX *
216- (1.0 * area->x / pimpl->base_w_));
217- texMinY = static_cast<GLfloat>(texMaxY *
218- (1.0 * area->y / pimpl->base_h_));
215+ texMinX =
216+ static_cast<GLfloat>(texMaxX * (1.0 * area->x / pimpl->base_w_));
217+ texMinY =
218+ static_cast<GLfloat>(texMaxY * (1.0 * area->y / pimpl->base_h_));
219219 }
220220
221221 int x = dest->x;
--- trunk/libs/gui/Makefile (revision 1814)
+++ trunk/libs/gui/Makefile (revision 1815)
@@ -4,7 +4,7 @@
44 # Compile options
55 CC = $(CXX)
66 CXXFLAGS = -g -O0 -Wall -W -Werror $(INCLUDES) `sdl-config --cflags`
7-INCLUDES = -I../geometry -I../system/sdl -I../system -I../common -I../math -I../input
7+INCLUDES = -I../geometry -I../system/sdl -I../system -I../common -I../math -I../input -I/usr/X11/include
88
99 # Target
1010 GUI_LIB = gui.a
@@ -45,11 +45,13 @@
4545 $(GUI_LIB)(Menu.o) \
4646 $(GUI_LIB)(ChatMessage.o) \
4747 $(GUI_LIB)(AlignUtils.o) \
48+ $(GUI_LIB)(Canvas.o) \
4849
4950 # DO NOT DELETE
5051
5152 Button.o: Component.h ../geometry/Rect.h ../geometry/Point.h
5253 CallbackEvent.o: Event.h ../geometry/Point.h ../geometry/Rect.h
54+Canvas.o: Surface.h ../geometry/Rect.h ../geometry/Point.h ../common/Color.h
5355 ChatMessage.o: Component.h ../geometry/Rect.h ../geometry/Point.h
5456 ColorSurface.o: Surface.h ../geometry/Rect.h
5557 Component.o: ../geometry/Rect.h ../geometry/Point.h
@@ -77,6 +79,8 @@
7779 Button.o: LayerInterface.h ../geometry/RectUtils.h
7880 CallbackEvent.o: CallbackEvent.h Event.h ../geometry/Point.h
7981 CallbackEvent.o: ../geometry/Rect.h ../geometry/RectUtils.h
82+Canvas.o: Canvas.h Surface.h ../geometry/Rect.h ../geometry/Point.h
83+Canvas.o: ../common/Color.h
8084 ChatMessage.o: ChatMessage.h Component.h ../geometry/Rect.h
8185 ChatMessage.o: ../geometry/Point.h Font.h ../common/Color.h TextSurface.h
8286 ChatMessage.o: Surface.h ../system/StopWatch.h
@@ -100,9 +104,9 @@
100104 MultiSurface.o: MultiSurface.h Surface.h ../geometry/Rect.h
101105 MultiSurface.o: ../geometry/Point.h
102106 SDL_GL_Texture.o: SDL_GL_Texture.h ../geometry/Rect.h
103-SDL_GL_Texture.o: ../system/sdl/SdlUtils.h ../geometry/Point.h
104-SDL_GL_Texture.o: ../geometry/Rotate.h ../geometry/Position.h
105-SDL_GL_Texture.o: ../geometry/Angle.h ../math/MathUtils.h
107+SDL_GL_Texture.o: ../system/sdl/SdlUtils.h ../geometry/Rotate.h
108+SDL_GL_Texture.o: ../geometry/Position.h ../geometry/Angle.h
109+SDL_GL_Texture.o: ../geometry/Point.h ../math/MathUtils.h
106110 SDL_GL_Texture.o: ../system/DetectOS.h ../system/log_printf.h
107111 Screen.o: Screen.h ../geometry/Rect.h SdlVideoInit.h ../common/Color.h
108112 SdlTtfInit.o: ../system/sdl/SdlInit.h SdlTtfInit.h
--- trunk/libs/gui/Surface.h (revision 1814)
+++ trunk/libs/gui/Surface.h (revision 1815)
@@ -26,10 +26,14 @@
2626 {
2727 }
2828
29+
2930 /*!
30- \brief 不明
31+ \brief サーフェスが有効かを返す
3132
32- \todo このメソッドが何のためにあるのかを記述する
33+ リソース等の理由で、サーフェスを生成できない場合に false になる。
34+
35+ \retval true サーフェスは有効
36+ \retval false サーフェスが無効
3337 */
3438 virtual bool isValid(void) const = 0;
3539
--- trunk/libs/gui/Button.h (revision 1814)
+++ trunk/libs/gui/Button.h (revision 1815)
@@ -27,6 +27,7 @@
2727 class Button : public Component
2828 {
2929 public:
30+ //! ボタンの状態
3031 typedef enum {
3132 Normal = 0,
3233 Focused,
--- trunk/libs/gui/Canvas.h (nonexistent)
+++ trunk/libs/gui/Canvas.h (revision 1815)
@@ -0,0 +1,56 @@
1+#ifndef QRK_CANVAS_H
2+#define QRK_CANVAS_H
3+
4+/*!
5+ \file
6+ \brief 描画サーフェス
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+#include "Surface.h"
14+#include "Rect.h"
15+#include "Point.h"
16+#include "Color.h"
17+#include <memory>
18+
19+
20+namespace qrk
21+{
22+ class Canvas : public Surface
23+ {
24+ public:
25+ Canvas(const qrk::Rect<long>& rect);
26+ ~Canvas(void);
27+
28+ bool isValid(void) const;
29+ Rect<long> rect(void) const;
30+ void setAlpha(float alpha);
31+ float alpha(void) const;
32+ void setRotateAngle(const Angle& angle);
33+ void draw(const Rect<long>* src, const Rect<long>* dest);
34+
35+ void setClearColor(const qrk::Color& color);
36+ void clear(void);
37+ void setColor(const qrk::Color& color);
38+ void setLineWidth(float width);
39+
40+ void drawLine(const qrk::Point<long>& p0, const qrk::Point<long>& p1);
41+ void drawCircle(const qrk::Point<long>& center, float radius);
42+ void drawQuads(const qrk::Point<long>& p0,
43+ const qrk::Point<long>& p1,
44+ const qrk::Point<long>& p2,
45+ const qrk::Point<long>& p3);
46+
47+ private:
48+ Canvas(const Canvas& rhs);
49+ Canvas& operator = (Canvas& rhs);
50+
51+ struct pImpl;
52+ std::auto_ptr<pImpl> pimpl;
53+ };
54+}
55+
56+#endif /* !QRK_CANVAS_H */
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
--- trunk/libs/gui/samples/canvasDraw.cpp (nonexistent)
+++ trunk/libs/gui/samples/canvasDraw.cpp (revision 1815)
@@ -0,0 +1,39 @@
1+/*!
2+ \example canvasSample.cpp
3+
4+ オブジェクトの描画
5+
6+ \author Satofumi KAMIMURA
7+
8+ $Id$
9+*/
10+
11+#include "Screen.h"
12+#include "Canvas.h"
13+#include "Label.h"
14+
15+using namespace qrk;
16+
17+
18+int main(int argc, char *argv[])
19+{
20+ static_cast<void>(argc);
21+ static_cast<void>(argv);
22+
23+ Screen screen;
24+ screen.show(SDL_OPENGL);
25+
26+ Canvas canvas(Rect<long>(0, 0, 100, 100));
27+
28+ screen.clear();
29+ Rect<long> dest_rect = canvas.rect();
30+
31+ canvas.drawLine(Point<long>(0, 0), Point<long>(100, 100));
32+
33+ canvas.draw(NULL, &dest_rect);
34+
35+ SDL_GL_SwapBuffers();
36+ SDL_Delay(1000);
37+
38+ return 0;
39+}
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
--- trunk/libs/gui/samples/Makefile (revision 1814)
+++ trunk/libs/gui/samples/Makefile (revision 1815)
@@ -12,6 +12,7 @@
1212
1313 # Target
1414 TARGET = \
15+ canvasDraw \
1516 fadeText \
1617 simpleScreen \
1718 glScreen \
@@ -42,7 +43,7 @@
4243 $(REQUIRE_LIBS) :
4344 cd $(@D)/ && $(MAKE) $(@F)
4445
45-PROGRAMS = drawText handleEvent inputDraw chatMessageSample rectMove buttonSample menuSample drawColorSurface fadeText
46+PROGRAMS = drawText handleEvent inputDraw chatMessageSample rectMove buttonSample menuSample drawColorSurface fadeText canvasDraw
4647 $(PROGRAMS) : $(REQUIRE_LIBS)
4748
4849 # DO NOT DELETE
@@ -52,6 +53,9 @@
5253 buttonSample.o: ../LayerInterface.h ../Layer.h ../Font.h ../../common/Color.h
5354 buttonSample.o: ../TextSurface.h ../Surface.h ../CallbackEvent.h ../Event.h
5455 buttonSample.o: ../EventUtils.h ../../system/delay.h
56+canvasDraw.o: ../Screen.h ../../geometry/Rect.h ../Canvas.h ../Surface.h
57+canvasDraw.o: ../../geometry/Point.h ../../common/Color.h ../Label.h
58+canvasDraw.o: ../Component.h
5559 chatMessageSample.o: ../ChatMessage.h ../Component.h ../../geometry/Rect.h
5660 chatMessageSample.o: ../../geometry/Point.h ../Screen.h ../LayerManager.h
5761 chatMessageSample.o: ../LayerInterface.h ../Layer.h ../Font.h
--- trunk/libs/gui/ImageSurface.cpp (revision 1814)
+++ trunk/libs/gui/ImageSurface.cpp (revision 1815)
@@ -9,6 +9,7 @@
99
1010 #include "ImageSurface.h"
1111 #include "SDL_GL_Texture.h"
12+#include "log_printf.h"
1213 #include <SDL_image.h>
1314
1415 using namespace qrk;
@@ -25,6 +26,9 @@
2526 rect_(0, 0, static_cast<long>(texture_.w),
2627 static_cast<long>(texture_.h))
2728 {
29+ if (! texture_.isValid()) {
30+ log_printf("%s is not found.\n", file);
31+ }
2832 }
2933 };
3034
--- trunk/libs/gui/TextSurface.cpp (revision 1814)
+++ trunk/libs/gui/TextSurface.cpp (revision 1815)
@@ -60,10 +60,13 @@
6060
6161
6262 pImpl(const Font& font, const char* text)
63- : font_(font), texture_(createTextTexture(font, text)),
64- rect_(0, 0,
65- static_cast<long>(texture_->w), static_cast<long>(texture_->h))
63+ : font_(font), texture_(createTextTexture(font, text))
6664 {
65+ if (texture_) {
66+ rect_ = Rect<long>(0, 0,
67+ static_cast<long>(texture_->w),
68+ static_cast<long>(texture_->h));
69+ }
6770 }
6871
6972
@@ -87,7 +90,7 @@
8790
8891 bool TextSurface::isValid(void) const
8992 {
90- return pimpl->texture_->isValid();
93+ return (pimpl->texture_) ? pimpl->texture_->isValid() : false;
9194 }
9295
9396
@@ -99,12 +102,17 @@
99102
100103 void TextSurface::setAlpha(float alpha)
101104 {
102- pimpl->texture_->setAlpha(alpha);
105+ if (isValid()) {
106+ pimpl->texture_->setAlpha(alpha);
107+ }
103108 }
104109
105110
106111 float TextSurface::alpha(void) const
107112 {
113+ if (! isValid()) {
114+ return 0.0;
115+ }
108116 return pimpl->texture_->alpha();
109117 }
110118
--- trunk/libs/math/MathUtils.h (revision 1814)
+++ trunk/libs/math/MathUtils.h (revision 1815)
@@ -18,8 +18,8 @@
1818
1919
2020 #ifndef M_PI
21-// Visual C++ 6.0 用
22-#define M_PI 3.14159265358979323846 //!< 円周率
21+//! 円周率 (Visual C++ 6.0 用)
22+#define M_PI 3.14159265358979323846
2323 #endif
2424
2525 #if defined(MSC)
--- trunk/libs/input/utf8_string.h (revision 1814)
+++ trunk/libs/input/utf8_string.h (revision 1815)
@@ -13,6 +13,7 @@
1313 #include <stddef.h>
1414
1515
16+//! Quick Robot Development Kit
1617 namespace qrk
1718 {
1819 class Utf8;
--- trunk/libs/input/Utf8.h (revision 1814)
+++ trunk/libs/input/Utf8.h (revision 1815)
@@ -25,7 +25,13 @@
2525 std::auto_ptr<pImpl> pimpl;
2626
2727 public:
28+ /*!
29+ \brief コンストラクタ
30+
31+ \param[in] utf8_text UTF-8 として格納する文字列
32+ */
2833 Utf8(const std::string& utf8_text);
34+
2935 Utf8(const Utf8& rhs);
3036 Utf8& operator = (const Utf8& rhs);
3137 ~Utf8(void);
旧リポジトリブラウザで表示