GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
ui.hh
Go to the documentation of this file.
1//#include "data.hh"
2
3#include <string>
4#include <vector>
5#include <utility>
6#include <map>
7#include <iostream>
8#include <sstream>
9
10// DLL ENTRY POINTS
11class Widget;
12class Item
13{
14public:
15 virtual std::string Name() const=0;
16 virtual int ParamCount() const=0;
17 virtual std::string ParamName(int p) const=0;
18 virtual std::string ParamType(int p) const=0;
19 virtual std::string ParamDefault(int p) const=0;
20 virtual std::string ReturnType() const=0;
21 virtual std::string Symbols() const=0;
22 virtual int Execute(std::vector<std::string> params)=0;
23 virtual std::pair<std::string, std::string> CodeGen(std::vector<std::string> params, std::vector<std::string> param_names)=0;
24};
25
26std::string api_name();
27std::vector<Item*> functions();
28std::string type_symbol();
29int num_displays();
30void display(int i, int disp);
31int add(void *w);
32void *find(int i);
33// END OF DLL ENTRY POINTS
34
35struct W {
36 int id;
37};
38
39W empty();
40W gameapi_animation(std::string num, int sx, int sy);
41W list_y(std::vector<W> v, int gap_y);
42W list_x(std::vector<W> v, int gap_x);
43W grid_y(std::vector<W> v, int sx, int gap_x, int gap_y);
44W layer(std::vector<W> v);
45// TODO RESPONSIVE DESIGN
46W percentage_xx(W w1, W w2, float val, float val2);
47W percentage_margin(W w, float val, float val2, float val3);
48W height_y(W w1, int height);
49W max_width(W w1, int width);
50W flex_image_keep_aspect_x(W w1, float percentage_width);
51W flex_image_keep_aspect_y(W w1, float percentage_height);
52W flex_grid(std::vector<W> w, int max_width);
53// END TODO
54W hide(W widget);
55W show_button(W button_content, W hidden_element);
56W hide_button(W button_content, W hidden_element);
57W image(std::string url, int size_x, int size_y);
58W image_placeholder(int size_x, int size_y);
59W gradient(int id, int size_x, int size_y);
60W child_size(W w);
61W margin(W item, int left, int top, int right, int bottom);
62W right_align(W item, int sx);
63W center_align(W item, int sx);
64W center_y(W item, int sy);
65W form(W w, bool is_get, std::string script_url);
66W submit_button(std::string label, int size_x, int size_y);
67W list_item1(W image, std::string label);
68W list_item2(W image, std::string label);
69W editor(std::string name, std::string value, std::string placeholder, int size_x, int size_y, int font_size, unsigned int font_colour, int align);
70W label(std::string l, int size_x, int size_y, int font_size, unsigned int font_colour, int align);
71W link(std::string url, std::string l, int size_x, int size_y, int font_size, unsigned int font_colour, int align);
72W margin(W orig, int l, int t, int r, int b);
73W password_editor(std::string name, std::string value, std::string placeholder, int size_x, int size_y, int font_size, unsigned int font_colour, int align);
74W passwd_dialog(int size_x, int size_y);
75W passwd_setup_dialog(int size_x, int size_y);
76
77std::string gen_html_page(W w);
78
79
80// app specific stuff
81//W client_list_item(Record r);
82//W product_list_item(Product p);
83
84std::string unique_id_apiitem();
85const int E = -16384;
86
87class Widget
88{
89public:
90 Widget() { }
91 virtual void make_unique(std::string path) {
92 if (ids.find(path)==ids.end())
93 {
94 ids[path]=unique_id_apiitem();
95 }
96 }
97 virtual void SetPos(std::string path, int pos_x2, int pos_y2) {
98 //std::cout << "Widget:SetPos: " << pos_x2 << " " << pos_y2 << std::endl;
99 pos_x[path] = pos_x2; pos_y[path]=pos_y2;
100 }
101 virtual void SetSize(std::string path, int size_x2, int size_y2) {
102 //std::cout << "Widget:SetSize: " << size_x2 << " " << size_y2 << std::endl;
103 size_x[path] = size_x2; size_y[path] = size_y2;
104 }
105 virtual int preferred_width(std::string path) { return 0; }
106 virtual int preferred_height(std::string path) { return 0; }
107 virtual std::string Page(std::string path)
108 {
109 std::cout << "Widget Page:" << path << std::endl;
110
111 std::string s = std::string("<div id=\"") + ids[path] + "\">\n";
112 s+="</div>\n";
113 return s;
114 }
115 void AddScript(std::string path, std::string s)
116 {
117 script[path]+=s;
118 }
119 virtual std::string Script(std::string path)
120 {
121 return script[path];
122 }
123 virtual std::string Css(std::string path)
124 {
125 std::string s = std::string("#") + ids[path] + "{\n";
126 std::stringstream ss;
127 ss << size_x[path];
128 s+=std::string("width:") + ss.str() + "px;\n";
129 std::stringstream ss2;
130 ss2 << size_y[path];
131 s+=std::string("height:") + ss2.str() + "px;\n";
132 s+=std::string("position:absolute;\n");
133 std::stringstream ss3;
134 ss3 << pos_x[path];
135 std::stringstream ss4;
136 ss4 << pos_y[path];
137 s+=std::string("left:") + ss3.str() + "px;\n";
138 s+=std::string("top:") + ss4.str() + "px;\n";
139 s+=CssProp(path);
140 s+="}\n";
141 return s;
142 }
143 void SetCssProp(std::string path, std::string s) { cssprop[path] = s; }
144 virtual std::string CssProp(std::string path)
145 {
146 return cssprop[path];
147 }
148protected:
149 std::map<std::string, std::string> script;
150 std::map<std::string, std::string> cssprop;
151 std::string id;
152 std::map<std::string, int> pos_x;
153 std::map<std::string, int> pos_y;
154 std::map<std::string, int> size_x;
155 std::map<std::string, int> size_y;
156 std::map<std::string, std::string> ids;
157 std::string last_path;
158};
159
160class WidgetForward : public Widget
161{
162public:
163 WidgetForward(int pref_size_x, int pref_size_y) {
164 p_x = pref_size_x;
165 p_y = pref_size_y;
166 }
167 virtual void make_unique(std::string path) {
169 int s = vec.size();
170 for(int ii=0;ii<s;ii++)
171 {
172 Widget *w = vec[ii];
173 std::string next = next_path(path,ii);
174 w->make_unique(next);
175 }
176 }
177 std::string next_path(std::string path, int i)
178 {
179 std::string s = path;
180
181 s+='a' + i;
182 return s;
183 }
184 virtual int preferred_width(std::string path) { return p_x; }
185 virtual int preferred_height(std::string path) { return p_y; }
186
187 void push_back(Widget *w, int x, int y, int sx, int sy, int r, int b)
188 {
189 vec.push_back(w);
190 child_x.push_back(x);
191 child_y.push_back(y);
192 child_sx.push_back(sx);
193 child_sy.push_back(sy);
194 child_r.push_back(r);
195 child_b.push_back(b);
196 empty_x.push_back(0);
197 empty_y.push_back(0);
198 }
199 virtual void SetPos(std::string path, int pos_x2, int pos_y2)
200 {
201 Widget::SetPos(path, pos_x2, pos_y2);
202 int s = vec.size();
203 for(int i=0;i<s;i++)
204 {
205 Widget *w = vec[i];
206 int x = child_x[i];
207 int y = child_y[i];
208 if (x==E) { x=size_x[path] - child_r[i]-child_sx[i]; }
209 if (y==E) { y=size_y[path] - child_b[i]-child_sy[i]; }
210 //std::cout << "Child: " << pos_x << " " << pos_y << " " << x << " " << y << std::endl;
211 std::string next = next_path(path, i);
212 w->SetPos(next, x,
213 y);
214 }
215 }
216 virtual void SetSize(std::string path, int size_x2, int size_y2)
217 {
218 Widget::SetSize(path, size_x2, size_y2);
219 int s = vec.size();
220 for(int i=0;i<s;i++)
221 {
222 Widget *w = vec[i];
223 if (child_x[i]==E) { empty_x[i]=size_x[path] - child_sx[i]-child_r[i]; }
224 if (child_y[i]==E) { empty_y[i]=size_y[path] - child_sy[i]-child_b[i]; }
225 if (child_sx[i]==E) { empty_x[i]=size_x[path]-child_x[i]-child_r[i]; }
226 if (child_sy[i]==E) { empty_y[i]=size_y[path]-child_y[i]-child_b[i]; }
227 if (child_r[i]==E) { empty_x[i]=size_x[path]-child_x[i]-child_sx[i]; }
228 if (child_b[i]==E) { empty_y[i]=size_y[path]-child_y[i]-child_sx[i]; }
229
230 int x,y,sx,sy;
231 x = child_x[i];
232 y = child_y[i];
233 sx = child_sx[i];
234 sy = child_sy[i];
235
236 if (x==E) { x = empty_x[i]; }
237 if (y==E) { y = empty_y[i]; }
238 if (sx==E) { sx = empty_x[i]; }
239 if (sy==E) { sy = empty_y[i]; }
240
241 std::string next = next_path(path, i);
242 w->SetPos(next, x, y);
243 w->SetSize(next, sx,sy);
244 }
245 }
246 virtual std::string Page(std::string path) {
247 std::cout << "WidgetForward Page:" << path << std::endl;
248 std::string s = std::string("<div id=\"") + ids[path] + "\">\n";
249 int ss = vec.size();
250 for(int i=0;i<ss;i++)
251 {
252 Widget *w = vec[i];
253 std::string next = next_path(path, i);
254 s+=w->Page(next);
255 }
256 s+="</div>\n";
257 return s;
258 }
259 virtual std::string Script(std::string path)
260 {
261 std::string s = Widget::Script(path);
262 int ss = vec.size();
263 for(int i=0;i<ss;i++)
264 {
265 Widget *w = vec[i];
266 std::string next = next_path(path, i);
267 s+=w->Script(next);
268 }
269 return s;
270 }
271 virtual std::string Css(std::string path)
272 {
273 std::string s = Widget::Css(path);
274 int ss = vec.size();
275 for(int i=0;i<ss;i++)
276 {
277 Widget *w = vec[i];
278 std::string next = next_path(path, i);
279 s+=w->Css(next);
280 }
281 return s;
282 }
283protected:
284 int p_x, p_y;
285 std::vector<int> child_x;
286 std::vector<int> child_y;
287 std::vector<int> child_sx;
288 std::vector<int> child_sy;
289 std::vector<int> child_r;
290 std::vector<int> child_b;
291 std::vector<int> empty_x;
292 std::vector<int> empty_y;
293 std::vector<Widget*> vec;
294};
std::string unique_id_apiitem()
Definition accel.cc:42
Definition accel.hh:14
virtual std::pair< std::string, std::string > CodeGen(std::vector< std::string > params, std::vector< std::string > param_names)=0
virtual std::string ParamName(int p) const =0
virtual int ParamCount() const =0
virtual int Execute(std::vector< std::string > params)=0
virtual std::string ReturnType() const =0
virtual std::string ParamDefault(int p) const =0
virtual std::string ParamType(int p) const =0
virtual std::string Name() const =0
virtual std::string Symbols() const =0
std::vector< int > child_r
Definition ui.hh:289
WidgetForward(int pref_size_x, int pref_size_y)
Definition ui.hh:163
int p_x
Definition ui.hh:284
virtual void SetPos(std::string path, int pos_x2, int pos_y2)
Definition ui.hh:199
virtual int preferred_height(std::string path)
Definition ui.hh:185
virtual void make_unique(std::string path)
Definition ui.hh:167
virtual std::string Css(std::string path)
Definition ui.hh:271
std::vector< int > child_b
Definition ui.hh:290
virtual void SetSize(std::string path, int size_x2, int size_y2)
Definition ui.hh:216
int p_y
Definition ui.hh:284
virtual int preferred_width(std::string path)
Definition ui.hh:184
std::vector< int > empty_x
Definition ui.hh:291
std::vector< int > child_sy
Definition ui.hh:288
virtual std::string Page(std::string path)
Definition ui.hh:246
std::vector< Widget * > vec
Definition ui.hh:293
std::vector< int > child_x
Definition ui.hh:285
std::vector< int > child_sx
Definition ui.hh:287
void push_back(Widget *w, int x, int y, int sx, int sy, int r, int b)
Definition ui.hh:187
virtual std::string Script(std::string path)
Definition ui.hh:259
std::string next_path(std::string path, int i)
Definition ui.hh:177
std::vector< int > child_y
Definition ui.hh:286
std::vector< int > empty_y
Definition ui.hh:292
Definition ui.hh:88
std::map< std::string, int > size_y
Definition ui.hh:155
virtual int preferred_height(std::string path)
Definition ui.hh:106
virtual void SetPos(std::string path, int pos_x2, int pos_y2)
Definition ui.hh:97
void AddScript(std::string path, std::string s)
Definition ui.hh:115
void SetCssProp(std::string path, std::string s)
Definition ui.hh:143
std::map< std::string, int > pos_y
Definition ui.hh:153
virtual std::string Css(std::string path)
Definition ui.hh:123
virtual std::string Script(std::string path)
Definition ui.hh:119
std::map< std::string, std::string > cssprop
Definition ui.hh:150
virtual std::string CssProp(std::string path)
Definition ui.hh:144
virtual std::string Page(std::string path)
Definition ui.hh:107
std::string last_path
Definition ui.hh:157
Widget()
Definition ui.hh:90
std::map< std::string, int > pos_x
Definition ui.hh:152
std::map< std::string, std::string > script
Definition ui.hh:149
std::map< std::string, std::string > ids
Definition ui.hh:156
virtual void make_unique(std::string path)
Definition ui.hh:91
std::map< std::string, int > size_x
Definition ui.hh:154
virtual void SetSize(std::string path, int size_x2, int size_y2)
Definition ui.hh:101
virtual int preferred_width(std::string path)
Definition ui.hh:105
std::string id
Definition ui.hh:151
left margin
Definition mesh_preview.php:76
co style display
Definition meshpage.php:3898
iVBORw0KGgoAAAANSUhEUgAAANcAAAB5CAMAAACdtUQZAAAA51BMVEX</div ></div >< div style="padding: 0px 0px; width: 1324px;">< div style="height: 400px; width: 1324px;"></div >< div itemscope itemtype="https: </div><div itemscope itemtype="https:</div >< div itemscope itemtype="https: </div></div><p><div style="padding:0px 0px;width:1324px;"><div></div><div itemscope itemtype="https:< ul >< li >< b > Application name
8AkrcAgqgAs9wqQ0ey2tkAo8gAuuQfeI4hPUH09fXHy8z4+fng4uNKXF/Lz9BzfoAcgpkQMTUAKjAbOT4Qr9AXhJ8Rl7ktMCwTosA...
Definition meshpage.php:1610
line height
Definition meshpage.php:3536
url
Definition meshpage.php:1781
background image
Definition meshpage_bootstrap.php:1723
Definition GameApi.h:43
Definition GameApi.h:89
int id
Definition GameApi.h:89
W gradient(int id, int size_x, int size_y)
Definition ui.cc:819
std::vector< Item * > functions()
Definition accel.cc:335
int num_displays()
Definition accel.cc:319
W list_item1(W image, std::string label)
W percentage_margin(W w, float val, float val2, float val3)
W passwd_dialog(int size_x, int size_y)
W passwd_setup_dialog(int size_x, int size_y)
W grid_y(std::vector< W > v, int sx, int gap_x, int gap_y)
Definition ui.cc:842
std::string gen_html_page(W w)
Definition ui.cc:761
W password_editor(std::string name, std::string value, std::string placeholder, int size_x, int size_y, int font_size, unsigned int font_colour, int align)
Definition ui.cc:1199
W empty()
Definition ui.cc:634
W label(std::string l, int size_x, int size_y, int font_size, unsigned int font_colour, int align)
Definition ui.cc:726
W center_y(W item, int sy)
Definition ui.cc:947
W show_button(W button_content, W hidden_element)
W max_width(W w1, int width)
W flex_image_keep_aspect_x(W w1, float percentage_width)
W editor(std::string name, std::string value, std::string placeholder, int size_x, int size_y, int font_size, unsigned int font_colour, int align)
Definition ui.cc:1148
std::string api_name()
Definition accel.cc:318
W image_placeholder(int size_x, int size_y)
Definition ui.cc:1009
W list_y(std::vector< W > v, int gap_y)
Definition ui.cc:673
W layer(std::vector< W > v)
Definition ui.cc:737
W list_x(std::vector< W > v, int gap_x)
Definition ui.cc:700
W percentage_xx(W w1, W w2, float val, float val2)
W flex_image_keep_aspect_y(W w1, float percentage_height)
W gameapi_animation(std::string num, int sx, int sy)
Definition ui.cc:669
W right_align(W item, int sx)
Definition ui.cc:935
W link(std::string url, std::string l, int size_x, int size_y, int font_size, unsigned int font_colour, int align)
Definition ui.cc:731
W hide_button(W button_content, W hidden_element)
int add(void *w)
Definition ui.cc:341
W form(W w, bool is_get, std::string script_url)
Definition ui.cc:1076
W height_y(W w1, int height)
W child_size(W w)
Definition ui.cc:1034
const int E
Definition ui.hh:85
W center_align(W item, int sx)
Definition ui.cc:941
std::string unique_id_apiitem()
Definition accel.cc:42
W submit_button(std::string label, int size_x, int size_y)
Definition ui.cc:1098
void * find(int i)
Definition ui.cc:347
W hide(W widget)
Definition ui.cc:954
W list_item2(W image, std::string label)
std::string type_symbol()
Definition accel.cc:320
W flex_grid(std::vector< W > w, int max_width)
num
Definition view.php:2821