GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
Widgets.hh
Go to the documentation of this file.
1//
2// Copyright (C) 2009 Tero Pulkkinen
3// Released under LGPL License.
4//
5// This file is part of Polygon.
6//
7// Polygon is free software: you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11//
12// Polygon is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU Library General Public License
18// along with Polygon. If not, see <http://www.gnu.org/licenses/>.
19//
20
21
22
23#ifndef WIDGETS_HH
24#define WIDGETS_HH
25
26#include "Effect.hh"
27#include "Graph.hh"
28#include <cassert>
29
30
32{
33public:
34 virtual void HandleKey(int key)=0;
35 virtual void HandlePointer(int button)=0;
36 virtual void HandlePointerMove(Point2d p)=0;
37 virtual void HandleKeyDown(int key) { }
38 virtual void HandleKeyUp(int key) { }
39 virtual void HandleFrame(float time) { }
40};
42{
43public:
44 void HandleKey(int key) {std::cout << "Key: " << key << std::endl; }
45 void HandlePointer(int button) { std::cout << "Pointer: " << button << std::endl; }
46 void HandlePointerMove(Point2d p) { std::cout << "Move: " << p.x << "," << p.y << std::endl; }
47};
48
50{
52};
53
55{
56public:
57 MovePointEventSurface(Position2d &p, Point2d tl, Point2d br, const float &speed) :p(p), tl(tl), br(br), speed(speed), moveleft(false), moveright(false), moveup(false), movedown(false)
58 {
59 p.p.x = (tl.x+br.x)/2;
60 p.p.y = (tl.x+br.x)/2;
61 }
62 void HandleKeyDown(int key)
63 {
64 switch(key)
65 {
66 case 273: moveup = true; break;
67 case 274: movedown = true; break;
68 case 275: moveright = true; break;
69 case 276: moveleft = true; break;
70 }
71 //std::cout << key << " DOWN" << std::endl;
72 }
73 void HandleKeyUp(int key)
74 {
75 switch(key)
76 {
77 case 273: moveup = false; break;
78 case 274: movedown = false; break;
79 case 275: moveright = false; break;
80 case 276: moveleft = false; break;
81 }
82 //std::cout << key << " Up" << std::endl;
83 }
84 void HandlePointer(int button) { }
86 void HandleKey(int key) { }
87 void HandleFrame(float /*time*/)
88 {
89 float speed2 = speed;
90 if (moveup && moveleft) { speed2 /= sqrt(2); }
91 else if (moveup && moveright) { speed2 /= sqrt(2); }
92 else if (movedown && moveleft) { speed2 /= sqrt(2); }
93 else if (movedown && moveright) { speed2 /= sqrt(2); }
94 if (moveup) { p.p.y -= speed2; }
95 if (movedown) { p.p.y += speed2; }
96 if (moveleft) { p.p.x -= speed2; }
97 if (moveright) { p.p.x += speed2; }
98 if (p.p.y < tl.y) p.p.y = tl.y;
99 if (p.p.y > br.y) p.p.y = br.y;
100 if (p.p.x < tl.x) p.p.x = tl.x;
101 if (p.p.x > br.x) p.p.x = br.x;
102 //std::cout << "FramePos: " << p.p.x << " " << p.p.y << std::endl;
103 }
104private:
105 Position2d &p;
106 Point2d tl,br;
107 const float &speed;
108 bool moveleft;
109 bool moveright;
110 bool moveup;
111 bool movedown;
112};
113
114class EventSurface;
115void Execute2(FrameAnim &f);
116void Execute2(FrameAnim &f, EventSurface &surf);
117
119{
120public:
121
122};
123
124
125//template<class T, class D>
126//class Tree
127//{
128//public:
129//};
130
131template<class T, class D, class DC, class DR>
132class Grid
133{
134public:
135};
136
137class DataType
138{
139public:
140 virtual float XCount() const=0;
141 virtual float YCount() const=0;
142 virtual bool get_val(float x, float y) const=0;
143 virtual void set_val(float x, float y, bool b)=0;
144 virtual const Region &InvalidRects() const=0;
145 virtual void ClearInvalidRects()=0;
146};
147template<class T>
149{
150public:
151 ArrayDataType(VectorArray<T> &arr, Range<T> &r) : arr(arr),r(r), convert(rects)
152 {
153 Rect rr;
154 rr.tl.x = 0;
155 rr.br.x = arr.Size();
156 rr.tl.y = float(r.start);
157 rr.tl.y = float(r.end);
158 rects.push_back(rr);
159 }
160 float XCount() const { return arr.Size(); }
161 float YCount() const { return float(r.end) - float(r.start); }
163 {
164 rects.clear();
165 }
166 const Region &InvalidRects() const
167 {
168 return convert;
169 }
170 bool get_val(float x, float y) const
171 {
172 assert(x>=0.0);
173 assert(x<arr.Size());
174 assert(y>=0.0);
175 assert(y<float(r.end)-float(r.start));
176 y+=r.start;
177 bool b = arr.Index(x) < T(y);
178 //std::cout << "get_val "<< x << "," << y << ":" << b << std::endl;
179 return b;
180 }
181 void set_val(float x, float y, bool b)
182 {
183 if (b)
184 {
185 if (x >= 0.0 && x < arr.Size())
186 {
187 arr[x] = r.start + T(y);
188 float old_val = r.start;
189 float new_val = r.end;
190 float old_x = x;
191 float new_x = x+1;
192 Rect r;
193 r.tl.x = old_x;
194 r.br.x = new_x;
195 r.tl.y = old_val;
196 r.br.y = new_val;
197 //std::cout << "SetVal: " << old_x << " " << new_x << " " << old_val << " " << new_val << std::endl;
198 rects.push_back(r);
199 }
200 else
201 std::cout << "ArrayDataType: Error, array index! " << std::endl;
202 }
203 }
204private:
205 VectorArray<T> &arr;
206 Range<T> &r;
207 VectorArray<Rect> rects;
209};
210
212{
213public:
214 Point2dArrayDataType(VectorArray<Point2d> &arr, Rect r) : arr(arr), r(r), convert(rects)
215 {
216 rects.push_back(r);
217 }
218 float XCount() const { return r.br.x - r.tl.x; }
219 float YCount() const { return r.br.y - r.tl.y; }
220 virtual const Region &InvalidRects() const { return convert; }
221 virtual void ClearInvalidRects() { rects.clear(); }
222 bool get_val(float x, float y) const
223 {
224 x += r.tl.x;
225 y += r.tl.y;
226 for(int i=0;i<arr.Size();i++)
227 {
228 Point2d p = arr.Index(i);
229 float dx = x - p.x;
230 float dy = y - p.y;
231 float dist = sqrt(dx*dx + dy*dy);
232 if (dist<(r.br.x-r.tl.x)/140.0) return true;
233 }
234 return false;
235 }
236 void set_val(float x, float y, bool b)
237 {
238 x += r.tl.x;
239 y += r.tl.y;
240 if (b)
241 {
242 Point2d t;
243 t.x = x;
244 t.y = y;
245 arr.push_back(t);
246 Rect rr;
247 rr.tl.x = x-(r.br.x-r.tl.x)/140.0;
248 rr.tl.y = r.tl.y;
249 rr.br.x = x+(r.br.x-r.tl.x)/140.0;
250 rr.br.y = r.br.y;
251 rects.push_back(rr);
252 }
253 else
254 {
255 // TODO, remove point from array
256 }
257 }
258private:
260 Rect r;
261 VectorArray<Rect> rects;
263};
264
265
266class DataTypeContainer : public Array<int, DataType*>
267{
268};
269
271{
272public:
273 RectFrameAnim(Rect r, FrameAnim &obj, Rect screen, Render *rr) : FrameAnim(rr), r(r), obj(obj), screenx(screen.br.x), screeny(screen.br.y) { }
274 void Init() { obj.Init(); }
275 void Cleanup() { obj.Cleanup(); }
276 void PreFrame(float time) { obj.PreFrame(time); }
277 bool Frame(float time);
278 void PostFrame() { obj.PostFrame(); }
279private:
280 Rect r;
281 FrameAnim &obj;
282 float screenx, screeny;
283};
285{
286public:
287 RotateFrameAnim(FrameAnim &next, Render *r) : FrameAnim(r), next(next) { }
288 void Init()
289 {
290 next.Init();
291 }
292 void Cleanup()
293 {
294 next.Cleanup();
295 }
296 void PreFrame(float time)
297 {
298 next.PreFrame(time);
299 }
300 bool Frame(float time);
301 void PostFrame()
302 {
303 next.PostFrame();
304 }
305private:
306 FrameAnim &next;
307};
308
310{
311public:
312 template<class It>
313 VectorFrameAnim(It beg, It end) : vec(beg, end) { }
314 typedef std::vector<FrameAnim*>::iterator iterator;
315 void Init()
316 {
317 for(iterator i = vec.begin();i!=vec.end();i++)
318 {
319 (*i)->Init();
320 }
321 }
322 void Cleanup()
323 {
324 for(iterator i = vec.begin();i!=vec.end();i++)
325 {
326 (*i)->Cleanup();
327 }
328 }
329 void PreFrame(float time)
330 {
331 for(iterator i = vec.begin();i!=vec.end();i++)
332 {
333 (*i)->PreFrame(time);
334 }
335 }
336 bool Frame(float time)
337 {
338 for(iterator i = vec.begin();i!=vec.end();i++)
339 {
340 (*i)->Frame(time);
341 }
342 return false;
343 }
344 void PostFrame()
345 {
346 for(iterator i = vec.begin();i!=vec.end();i++)
347 {
348 (*i)->PostFrame();
349 }
350 }
351
352private:
353 std::vector<FrameAnim*> vec;
354};
355
356class DataTypeArray : public Array<std::pair<float, float>, bool>
357{
358public:
359 DataTypeArray(DataType &dt) : dt(dt) { }
360 std::pair<float,float> Size() const
361 {
362 //std::cout << "DataTypeArray: " << dt.XCount() << " " << dt.YCount() << std::endl;
363 return std::make_pair(dt.XCount(), dt.YCount()); }
364 bool Index(std::pair<float, float> p) const
365 {
366 return dt.get_val(p.first, p.second);
367 }
368private:
369 DataType &dt;
370};
371class SamplePairArray : public Array<std::pair<int,int>, bool>
372{
373public:
374 SamplePairArray(Array<std::pair<float,float>, bool> &func, int x, int y) : func(func), x(x), y(y) { }
375 std::pair<int,int> Size() const { return std::make_pair(x,y); }
376 bool Index(std::pair<int, int> p) const
377 {
378 std::pair<float,float> pp = func.Size();
379 float xs = pp.first;
380 float ys = pp.second;
381 float xx = Sample(p.first, x, xs);
382 float yy = Sample(p.second, y, ys);
383 //std::cout << "SamplePairFunction: " << p.second << " " << y << " " << ys << std::endl;
384 return func.Index(std::make_pair(xx,yy));
385 }
386 static float Sample(int x2, int intsize, float size)
387 {
388 return float(x2)/float(intsize)*size;
389 }
390private:
392 int x,y;
393};
394
395
397{
398public:
399 DataTypeBitmap(DataType &dt, int x, int y) : func(dt), func2(func, x,y), bitmap(func2) { }
400 void Generate(Rect r) { return bitmap.Generate(r); }
401 BufferRef Ref() const { return bitmap.Ref(); }
402private:
405 FunctionBitmap bitmap;
406};
407
408class Widget : public EventSurface, public FrameAnim
409{
410public:
412};
413
414class PlaneRayIntersection : public Element<std::pair<Point2d, float> >
415{
416public:
417 PlaneRayIntersection(Point p, Vector v, Plane pl) : p(p), v(v), pl(pl) { }
418 std::pair<Point2d, float> Elem() const
419 {
420 Point l1 = p;
421 Point l2 = p + v;
422 Point p1 = pl.u_p;
423 Point p2 = pl.u_p + pl.u_x;
424 Point p3 = pl.u_p + pl.u_y;
426 Point2d pp;
427 pp.x = i.tuv.dy;
428 pp.y = i.tuv.dz;
429 return std::make_pair(pp, i.tuv.dx);
430 }
431private:
432 Point p;
433 Vector v;
434 Plane pl;
435};
436class Texture
437{
438public:
439 virtual BufferRef Bitmap() const=0;
440 virtual void SetChanged(bool b)=0;
441};
442
444{
445public:
446 virtual void Pos(Point2d p)=0; // moved pointer to coordinates in the texture
447 virtual void HandleKey(int key)=0;
448 virtual void HandlePointer(int button) =0;
449 virtual void HandleTextureChange(Texture &tex)=0;
450};
451
453{
454public:
455 DataTypeTextureEvents(DataType &dt, int x, int y) : dt(dt), dtbitmap(dt, x,y), x(x), y(y)
456 {
457 pos.x = 0.0;
458 pos.y = 0.0;
459 }
460 void Pos(Point2d p)
461 {
462 pos = p;
463 dt.set_val(pos.x/x*dt.XCount(), pos.y/y*dt.YCount(), true);
464 changed = true;
465
466 }
467 void HandleKey(int key) { }
468 void HandlePointer(int button)
469 {
470 if (button == 0)
471 {
472 dt.set_val(pos.x/x*dt.XCount(), pos.y/y*dt.YCount(), true);
473 changed = true;
474 }
475 if (button == 1)
476 {
477 dt.set_val(pos.x/x*dt.XCount(), pos.y/y*dt.YCount(), false);
478 changed = true;
479 }
480 }
482 {
483 if (changed)
484 {
485 const Region &r = dt.InvalidRects();
486 int size = r.Size();
487 for(int i=0;i<size;i++)
488 {
489 Rect rr = r.Index(i);
490 rr.tl.x *= x/dt.XCount();
491 rr.tl.y *= 2.0*y/dt.YCount();
492 rr.br.x *= x/dt.XCount();
493 rr.br.y *= 2.0*y/dt.YCount();
494 dtbitmap.Generate(rr);
495 BufferRef source = dtbitmap.Ref();
496 BufferRef target = tex.Bitmap();
497 BufferRef::CopyBuffer(source, target, 0,0, rr.tl.x, rr.tl.y, rr.br.x, rr.br.y);
498 }
499 dt.ClearInvalidRects();
500 }
501 tex.SetChanged(changed);
502 changed = false;
503 }
504private:
505 Point2d pos;
506 DataType &dt;
507 DataTypeBitmap dtbitmap;
508 bool changed;
509 int x,y;
510};
511
512class TextureWidget : public Widget, private Texture
513{
514public:
515 TextureWidget(BufferRef buffer, TextureEvents &events, int screensizex, int screensizey, Render *r) : Widget(r), buffer(buffer), events(events), rectangle(screensizex, screensizey), quads_to_planes(rectangle), sx(screensizex), sy(screensizey), rectangle2(rectangle, Matrix::Translate(0.0,0.0,0.1)), outline(rectangle2) { }
516 float XRot() const { return 1.0; }
517 float YRot() const { return 1.0; }
518 float ZRot() const { return 0.0; }
519 void HandleKey(int key)
520 {
521 events.HandleKey(key);
522 changed = true;
523 }
524 void HandlePointer(int button)
525 {
526 events.HandlePointer(button);
527 changed = true;
528 }
531 {
532 return buffer;
533 }
534 void SetChanged(bool b)
535 {
536 changed2 = b;
537 }
538 bool Frame(float time);
539private:
541 TextureEvents &events;
543 QuadsToPlanes quads_to_planes;
544
545 //TexturePlugin texture;
546 bool changed, changed2;
547 float sx,sy;
548 MatrixElem rectangle2;
549 OutlineFaces outline;
550};
551#if 0
552template<class T>
553class EditArray : public Array<int, T>, public Widget
554{
555public:
556 EditArray(Array<int, T> &initial_val, Range<T> &r, int x, int y, Rect rect) : copy_array(initial_val), dt(copy_array, r), bitmap(dt, x,y), rect(rect)
557 {
558 copy_array.Generate();
559 bitmap.Generate();
560 }
561 void HandleKey(int key) { }
562 void HandlePointer(int button)
563 {
564 if (button == 0 && rect.InsideRect(mouse))
565 {
566 Point2d p = rect.RectInternalCoordinates(mouse);
567 p.x /= rect.br.x - rect.tl.x;
568 p.y /= rect.br.y - rect.tl.y;
569 p.x *= dt.XCount();
570 p.y *= dt.YCount();
571 dt.set_val(p.x, p.y, true);
572 // TODO DRAW.
573 copy_array.Generate();
574 bitmap.Generate();
575 }
576 }
577 void HandlePointerMove(Point2d p) { mouse = p; }
578 bool Frame(float time)
579 {
580 return false;
581 }
582private:
583 CopyArray<T> copy_array;
584 ArrayDataType<T> dt;
585 DataTypeBitmap bitmap;
586 Point2d mouse;
587 Rect rect;
588};
589#endif
590#endif
P func(int c, EveryApi &ev)
Definition test.cpp:59
void rectangle(Matrix m, float x, float y, FaceStore &s)
Definition Functions.cc:66
size dy
Definition GameApi_gui.cc:1727
ArrayConvert< Region, int, Rect > RegionConvert
Definition Graph.hh:100
LinePlaneIntersection LinePlaneIntersectionFunc(Point line_p1, Point line_p2, Point plane_p1, Point plane_p2, Point plane_p3)
Definition Intersect.cc:44
void Execute2(FrameAnim &f)
Definition Main.cc:1480
void ClearInvalidRects()
Definition Widgets.hh:162
bool get_val(float x, float y) const
Definition Widgets.hh:170
float YCount() const
Definition Widgets.hh:161
ArrayDataType(VectorArray< T > &arr, Range< T > &r)
Definition Widgets.hh:151
float XCount() const
Definition Widgets.hh:160
void set_val(float x, float y, bool b)
Definition Widgets.hh:181
const Region & InvalidRects() const
Definition Widgets.hh:166
Definition EffectI.hh:22
virtual I Size() const =0
Definition Widgets.hh:357
std::pair< float, float > Size() const
Definition Widgets.hh:360
bool Index(std::pair< float, float > p) const
Definition Widgets.hh:364
DataTypeArray(DataType &dt)
Definition Widgets.hh:359
Definition Widgets.hh:397
BufferRef Ref() const
Definition Widgets.hh:401
void Generate(Rect r)
Definition Widgets.hh:400
DataTypeBitmap(DataType &dt, int x, int y)
Definition Widgets.hh:399
Definition Widgets.hh:267
void HandlePointer(int button)
Definition Widgets.hh:468
void HandleTextureChange(Texture &tex)
Definition Widgets.hh:481
DataTypeTextureEvents(DataType &dt, int x, int y)
Definition Widgets.hh:455
void HandleKey(int key)
Definition Widgets.hh:467
void Pos(Point2d p)
Definition Widgets.hh:460
Definition Database.hh:27
virtual bool get_val(float x, float y) const =0
virtual float XCount() const =0
virtual float YCount() const =0
virtual void ClearInvalidRects()=0
virtual const Region & InvalidRects() const =0
virtual void set_val(float x, float y, bool b)=0
Definition Widgets.hh:119
Definition Effect.hh:571
Definition Widgets.hh:42
void HandlePointer(int button)
Definition Widgets.hh:45
void HandleKey(int key)
Definition Widgets.hh:44
void HandlePointerMove(Point2d p)
Definition Widgets.hh:46
Definition Widgets.hh:32
virtual void HandlePointer(int button)=0
virtual void HandlePointerMove(Point2d p)=0
virtual void HandleKeyDown(int key)
Definition Widgets.hh:37
virtual void HandleKey(int key)=0
virtual void HandleFrame(float time)
Definition Widgets.hh:39
virtual void HandleKeyUp(int key)
Definition Widgets.hh:38
Definition Effect.hh:108
virtual bool Frame(float time)=0
FrameAnim(Render *render)
Definition Effect.hh:110
Definition Graph.hh:4746
virtual B Index(A a) const =0
Definition Widgets.hh:133
Definition Effect.hh:8076
Definition VectorTools.hh:279
void HandleFrame(float)
Definition Widgets.hh:87
MovePointEventSurface(Position2d &p, Point2d tl, Point2d br, const float &speed)
Definition Widgets.hh:57
void HandlePointer(int button)
Definition Widgets.hh:84
void HandleKeyDown(int key)
Definition Widgets.hh:62
void HandleKey(int key)
Definition Widgets.hh:86
void HandleKeyUp(int key)
Definition Widgets.hh:73
void HandlePointerMove(Point2d p)
Definition Widgets.hh:85
Definition Effect.hh:4715
PlaneRayIntersection(Point p, Vector v, Plane pl)
Definition Widgets.hh:417
std::pair< Point2d, float > Elem() const
Definition Widgets.hh:418
Definition VectorTools.hh:350
float YCount() const
Definition Widgets.hh:219
virtual void ClearInvalidRects()
Definition Widgets.hh:221
virtual const Region & InvalidRects() const
Definition Widgets.hh:220
bool get_val(float x, float y) const
Definition Widgets.hh:222
Point2dArrayDataType(VectorArray< Point2d > &arr, Rect r)
Definition Widgets.hh:214
float XCount() const
Definition Widgets.hh:218
void set_val(float x, float y, bool b)
Definition Widgets.hh:236
Definition Effect.hh:4371
Definition Effect.hh:1305
RectFrameAnim(Rect r, FrameAnim &obj, Rect screen, Render *rr)
Definition Widgets.hh:273
void PostFrame()
Definition Widgets.hh:278
bool Frame(float time)
Definition Widgets.cc:30
void Init()
Definition Widgets.hh:274
void Cleanup()
Definition Widgets.hh:275
void PreFrame(float time)
Definition Widgets.hh:276
Definition Graph.hh:63
Point2d br
Definition Graph.hh:95
Point2d RectInternalCoordinates(Point2d p)
Definition Graph.hh:87
bool InsideRect(Point2d p)
Definition Graph.hh:79
Point2d tl
Definition Graph.hh:94
Definition Effect.hh:9104
Definition Graph.hh:98
Definition Effect.hh:9514
RotateFrameAnim(FrameAnim &next, Render *r)
Definition Widgets.hh:287
void Cleanup()
Definition Widgets.hh:292
void Init()
Definition Widgets.hh:288
void PreFrame(float time)
Definition Widgets.hh:296
bool Frame(float time)
Definition Widgets.cc:52
void PostFrame()
Definition Widgets.hh:301
Definition Widgets.hh:372
std::pair< int, int > Size() const
Definition Widgets.hh:375
SamplePairArray(Array< std::pair< float, float >, bool > &func, int x, int y)
Definition Widgets.hh:374
bool Index(std::pair< int, int > p) const
Definition Widgets.hh:376
static float Sample(int x2, int intsize, float size)
Definition Widgets.hh:386
Definition Widgets.hh:444
virtual void HandleKey(int key)=0
virtual void HandleTextureChange(Texture &tex)=0
virtual void Pos(Point2d p)=0
virtual void HandlePointer(int button)=0
TextureWidget(BufferRef buffer, TextureEvents &events, int screensizex, int screensizey, Render *r)
Definition Widgets.hh:515
void SetChanged(bool b)
Definition Widgets.hh:534
float YRot() const
Definition Widgets.hh:517
BufferRef Bitmap() const
Definition Widgets.hh:530
float ZRot() const
Definition Widgets.hh:518
void HandlePointer(int button)
Definition Widgets.hh:524
void HandleKey(int key)
Definition Widgets.hh:519
bool Frame(float time)
Definition Widgets.cc:104
void HandlePointerMove(Point2d p)
Definition Widgets.cc:65
float XRot() const
Definition Widgets.hh:516
Definition Effect.hh:1122
void Cleanup()
Definition Widgets.hh:322
void Init()
Definition Widgets.hh:315
void PostFrame()
Definition Widgets.hh:344
std::vector< FrameAnim * >::iterator iterator
Definition Widgets.hh:314
VectorFrameAnim(It beg, It end)
Definition Widgets.hh:313
void PreFrame(float time)
Definition Widgets.hh:329
bool Frame(float time)
Definition Widgets.hh:336
Definition VectorTools.hh:125
float dy
Definition VectorTools.hh:268
float dz
Definition VectorTools.hh:268
float dx
Definition VectorTools.hh:268
Definition ui.hh:88
Widget(Render *r)
Definition Widgets.hh:411
Widget()
Definition ui.hh:90
PT func2(int face, int point, EveryApi &ev)
Definition test.cpp:27
convert($d)
Definition mesh_api.php:35
n< br > font size
Definition meshpage.php:3536
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
Definition Buffer.hh:32
static void CopyBuffer(BufferRef source, BufferRef target, int x, int y, int rx, int ry, int rex, int rey)
Definition Buffer.cc:66
Definition Intersect.hh:30
Vector tuv
Definition Intersect.hh:31
Definition VectorTools.hh:910
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
Definition Parser.cc:60
Definition Widgets.hh:50
Point2d p
Definition Widgets.hh:51
Definition GameApi.h:42
Definition State.hh:121
virtual BufferRef Bitmap() const =0
BufferRef buffer
Definition State.hh:122
virtual void SetChanged(bool b)=0