Unravel Engine C++ Reference
Loading...
Searching...
No Matches
text_component_bindings.cpp
Go to the documentation of this file.
2#include "script_bindings.h"
3
4#include "../script_interop.h"
5
8
9namespace unravel
10{
11namespace
12{
13
14//------------------------------
15auto internal_m2n_text_get_text(entt::entity id) -> const std::string&
16{
17 if(auto comp = safe_get_component<text_component>(id))
18 {
19 return comp->get_text();
20 }
21
22 static const std::string empty;
23 return empty;
24}
25
26void internal_m2n_text_set_text(entt::entity id, const std::string& text)
27{
28 if(auto comp = safe_get_component<text_component>(id))
29 {
30 comp->set_text(text);
31 }
32}
33
34auto internal_m2n_text_get_buffer_type(entt::entity id) -> text_component::buffer_type
35{
36 if(auto comp = safe_get_component<text_component>(id))
37 {
38 return comp->get_buffer_type();
39 }
40
42}
43
44void internal_m2n_text_set_buffer_type(entt::entity id, text_component::buffer_type type)
45{
46 if(auto comp = safe_get_component<text_component>(id))
47 {
48 comp->set_buffer_type(type);
49 }
50}
51
52auto internal_m2n_text_get_overflow_type(entt::entity id) -> text_component::overflow_type
53{
54 if(auto comp = safe_get_component<text_component>(id))
55 {
56 return comp->get_overflow_type();
57 }
58
60}
61
62void internal_m2n_text_set_overflow_type(entt::entity id, text_component::overflow_type type)
63{
64 if(auto comp = safe_get_component<text_component>(id))
65 {
66 comp->set_overflow_type(type);
67 }
68}
69
70auto internal_m2n_text_get_font(entt::entity id) -> hpp::uuid
71{
72 if(auto comp = safe_get_component<text_component>(id))
73 {
74 return comp->get_font().uid();
75 }
76
77 return hpp::uuid{};
78}
79
80void internal_m2n_text_set_font(entt::entity id, hpp::uuid uid)
81{
82 if(auto comp = safe_get_component<text_component>(id))
83 {
84 auto& ctx = engine::context();
85 auto& am = ctx.get_cached<asset_manager>();
86
87 auto asset = am.get_asset<font>(uid);
88 comp->set_font(asset);
89 }
90}
91
92auto internal_m2n_text_get_font_size(entt::entity id) -> uint32_t
93{
94 if(auto comp = safe_get_component<text_component>(id))
95 {
96 return comp->get_font_size();
97 }
98
99 return 0;
100}
101
102void internal_m2n_text_set_font_size(entt::entity id, uint32_t font_size)
103{
104 if(auto comp = safe_get_component<text_component>(id))
105 {
106 comp->set_font_size(font_size);
107 }
108}
109
110auto internal_m2n_text_get_render_font_size(entt::entity id) -> uint32_t
111{
112 if(auto comp = safe_get_component<text_component>(id))
113 {
114 return comp->get_render_font_size();
115 }
116
117 return 0;
118}
119
120auto internal_m2n_text_get_auto_size(entt::entity id) -> bool
121{
122 if(auto comp = safe_get_component<text_component>(id))
123 {
124 return comp->get_auto_size();
125 }
126
127 return false;
128}
129
130void internal_m2n_text_set_auto_size(entt::entity id, bool auto_size)
131{
132 if(auto comp = safe_get_component<text_component>(id))
133 {
134 comp->set_auto_size(auto_size);
135 }
136}
137auto internal_m2n_text_get_auto_size_range(entt::entity id) -> urange32_t
138{
139 if(auto comp = safe_get_component<text_component>(id))
140 {
141 return comp->get_auto_size_range();
142 }
143
144 return {};
145}
146
147void internal_m2n_text_set_auto_size_range(entt::entity id, urange32_t range)
148{
149 if(auto comp = safe_get_component<text_component>(id))
150 {
151 comp->set_auto_size_range(range);
152 }
153}
154
155auto internal_m2n_text_get_area(entt::entity id) -> math::vec2
156{
157 if(auto comp = safe_get_component<text_component>(id))
158 {
159 auto area = comp->get_area();
160 return {area.width, area.height};
161 }
162
163 return {};
164}
165
166void internal_m2n_text_set_area(entt::entity id, math::vec2 area)
167{
168 if(auto comp = safe_get_component<text_component>(id))
169 {
170 comp->set_area({area.x, area.y});
171 }
172}
173
174auto internal_m2n_text_get_render_area(entt::entity id) -> math::vec2
175{
176 if(auto comp = safe_get_component<text_component>(id))
177 {
178 auto area = comp->get_render_area();
179 return {area.width, area.height};
180 }
181
182 return {};
183}
184
185auto internal_m2n_text_get_is_rich_text(entt::entity id) -> bool
186{
187 if(auto comp = safe_get_component<text_component>(id))
188 {
189 return comp->get_is_rich_text();
190 }
191
192 return false;
193}
194
195void internal_m2n_text_set_is_rich_text(entt::entity id, bool rich)
196{
197 if(auto comp = safe_get_component<text_component>(id))
198 {
199 comp->set_is_rich_text(rich);
200 }
201}
202
203auto internal_m2n_text_get_alignment(entt::entity id) -> uint32_t
204{
205 if(auto comp = safe_get_component<text_component>(id))
206 {
207 return comp->get_alignment().flags;
208 }
209
210 return alignment{}.flags;
211}
212
213void internal_m2n_text_set_alignment(entt::entity id, uint32_t alignment_flags)
214{
215 if(auto comp = safe_get_component<text_component>(id))
216 {
217 comp->set_alignment({alignment_flags});
218 }
219}
220
221auto internal_m2n_text_get_bounds(entt::entity id) -> math::bbox
222{
223 if(auto comp = safe_get_component<text_component>(id))
224 {
225 return comp->get_bounds();
226 }
227
228 return math::bbox::empty;
229}
230
231auto internal_m2n_text_get_render_bounds(entt::entity id) -> math::bbox
232{
233 if(auto comp = safe_get_component<text_component>(id))
234 {
235 return comp->get_render_bounds();
236 }
237
238 return math::bbox::empty;
239}
240
241// ==== Text Style Functions ====
242
243void internal_m2n_text_set_opacity(entt::entity id, float opacity)
244{
245 if(auto comp = safe_get_component<text_component>(id))
246 {
247 auto style = comp->get_style();
248 style.set_opacity(opacity);
249 comp->set_style(style);
250 }
251}
252
253auto internal_m2n_text_get_opacity(entt::entity id) -> float
254{
255 if(auto comp = safe_get_component<text_component>(id))
256 {
257 return comp->get_style().get_opacity();
258 }
259 return 1.0f;
260}
261
262void internal_m2n_text_set_text_color(entt::entity id, math::color color)
263{
264 if(auto comp = safe_get_component<text_component>(id))
265 {
266 auto style = comp->get_style();
267 style.set_text_color(color);
268 comp->set_style(style);
269 }
270}
271
272auto internal_m2n_text_get_text_color(entt::entity id) -> math::color
273{
274 if(auto comp = safe_get_component<text_component>(id))
275 {
276 return comp->get_style().get_text_color();
277 }
278 return math::color::white();
279}
280
281void internal_m2n_text_set_background_color(entt::entity id, math::color color)
282{
283 if(auto comp = safe_get_component<text_component>(id))
284 {
285 auto style = comp->get_style();
286 style.set_background_color(color);
287 comp->set_style(style);
288 }
289}
290
291auto internal_m2n_text_get_background_color(entt::entity id) -> math::color
292{
293 if(auto comp = safe_get_component<text_component>(id))
294 {
295 return comp->get_style().get_background_color();
296 }
298}
299
300void internal_m2n_text_set_foreground_color(entt::entity id, math::color color)
301{
302 if(auto comp = safe_get_component<text_component>(id))
303 {
304 auto style = comp->get_style();
305 style.set_foreground_color(color);
306 comp->set_style(style);
307 }
308}
309
310auto internal_m2n_text_get_foreground_color(entt::entity id) -> math::color
311{
312 if(auto comp = safe_get_component<text_component>(id))
313 {
314 return comp->get_style().get_foreground_color();
315 }
317}
318
319void internal_m2n_text_set_overline_color(entt::entity id, math::color color)
320{
321 if(auto comp = safe_get_component<text_component>(id))
322 {
323 auto style = comp->get_style();
324 style.set_overline_color(color);
325 comp->set_style(style);
326 }
327}
328
329auto internal_m2n_text_get_overline_color(entt::entity id) -> math::color
330{
331 if(auto comp = safe_get_component<text_component>(id))
332 {
333 return comp->get_style().get_overline_color();
334 }
335 return math::color::white();
336}
337
338void internal_m2n_text_set_underline_color(entt::entity id, math::color color)
339{
340 if(auto comp = safe_get_component<text_component>(id))
341 {
342 auto style = comp->get_style();
343 style.set_underline_color(color);
344 comp->set_style(style);
345 }
346}
347
348auto internal_m2n_text_get_underline_color(entt::entity id) -> math::color
349{
350 if(auto comp = safe_get_component<text_component>(id))
351 {
352 return comp->get_style().get_underline_color();
353 }
354 return math::color::white();
355}
356
357void internal_m2n_text_set_strike_color(entt::entity id, math::color color)
358{
359 if(auto comp = safe_get_component<text_component>(id))
360 {
361 auto style = comp->get_style();
362 style.set_strike_color(color);
363 comp->set_style(style);
364 }
365}
366
367auto internal_m2n_text_get_strike_color(entt::entity id) -> math::color
368{
369 if(auto comp = safe_get_component<text_component>(id))
370 {
371 return comp->get_style().get_strike_color();
372 }
373 return math::color::white();
374}
375
376void internal_m2n_text_set_outline_color(entt::entity id, math::color color)
377{
378 if(auto comp = safe_get_component<text_component>(id))
379 {
380 auto style = comp->get_style();
381 style.set_outline_color(color);
382 comp->set_style(style);
383 }
384}
385
386auto internal_m2n_text_get_outline_color(entt::entity id) -> math::color
387{
388 if(auto comp = safe_get_component<text_component>(id))
389 {
390 return comp->get_style().get_outline_color();
391 }
392 return math::color::black();
393}
394
395void internal_m2n_text_set_outline_width(entt::entity id, float width)
396{
397 if(auto comp = safe_get_component<text_component>(id))
398 {
399 auto style = comp->get_style();
400 style.outline_width = width;
401 comp->set_style(style);
402 }
403}
404
405auto internal_m2n_text_get_outline_width(entt::entity id) -> float
406{
407 if(auto comp = safe_get_component<text_component>(id))
408 {
409 return comp->get_style().outline_width;
410 }
411 return 0.0f;
412}
413
414void internal_m2n_text_set_shadow_offsets(entt::entity id, math::vec2 offsets)
415{
416 if(auto comp = safe_get_component<text_component>(id))
417 {
418 auto style = comp->get_style();
419 style.shadow_offsets = offsets;
420 comp->set_style(style);
421 }
422}
423
424auto internal_m2n_text_get_shadow_offsets(entt::entity id) -> math::vec2
425{
426 if(auto comp = safe_get_component<text_component>(id))
427 {
428 return comp->get_style().shadow_offsets;
429 }
430 return {0.0f, 0.0f};
431}
432
433void internal_m2n_text_set_shadow_color(entt::entity id, math::color color)
434{
435 if(auto comp = safe_get_component<text_component>(id))
436 {
437 auto style = comp->get_style();
438 style.set_shadow_color(color);
439 comp->set_style(style);
440 }
441}
442
443auto internal_m2n_text_get_shadow_color(entt::entity id) -> math::color
444{
445 if(auto comp = safe_get_component<text_component>(id))
446 {
447 return comp->get_style().get_shadow_color();
448 }
449 return math::color::black();
450}
451
452void internal_m2n_text_set_shadow_softener(entt::entity id, float softener)
453{
454 if(auto comp = safe_get_component<text_component>(id))
455 {
456 auto style = comp->get_style();
457 style.shadow_softener = softener;
458 comp->set_style(style);
459 }
460}
461
462auto internal_m2n_text_get_shadow_softener(entt::entity id) -> float
463{
464 if(auto comp = safe_get_component<text_component>(id))
465 {
466 return comp->get_style().shadow_softener;
467 }
468 return 1.0f;
469}
470
471void internal_m2n_text_set_style_flags(entt::entity id, uint32_t flags)
472{
473 if(auto comp = safe_get_component<text_component>(id))
474 {
475 auto style = comp->get_style();
476 style.set_style_flags({flags});
477 comp->set_style(style);
478 }
479}
480
481auto internal_m2n_text_get_style_flags(entt::entity id) -> uint32_t
482{
483 if(auto comp = safe_get_component<text_component>(id))
484 {
485 return comp->get_style().get_style_flags().flags;
486 }
487 return gfx::style_normal;
488}
489
490} // namespace
491
493{
494 APPLOG_TRACE("{}", __func__);
495
496 auto reg = dotnet::internal_call_registry("Unravel.Core.TextComponent");
497 reg.add_internal_call("internal_m2n_text_get_text", dotnet_internal_call(internal_m2n_text_get_text));
498 reg.add_internal_call("internal_m2n_text_set_text", dotnet_internal_call(internal_m2n_text_set_text));
499 reg.add_internal_call("internal_m2n_text_get_buffer_type", dotnet_internal_call(internal_m2n_text_get_buffer_type));
500 reg.add_internal_call("internal_m2n_text_set_buffer_type", dotnet_internal_call(internal_m2n_text_set_buffer_type));
501 reg.add_internal_call("internal_m2n_text_get_overflow_type",
502 dotnet_internal_call(internal_m2n_text_get_overflow_type));
503 reg.add_internal_call("internal_m2n_text_set_overflow_type",
504 dotnet_internal_call(internal_m2n_text_set_overflow_type));
505 reg.add_internal_call("internal_m2n_text_get_font", dotnet_internal_call(internal_m2n_text_get_font));
506 reg.add_internal_call("internal_m2n_text_set_font", dotnet_internal_call(internal_m2n_text_set_font));
507
508 reg.add_internal_call("internal_m2n_text_get_font_size", dotnet_internal_call(internal_m2n_text_get_font_size));
509 reg.add_internal_call("internal_m2n_text_set_font_size", dotnet_internal_call(internal_m2n_text_set_font_size));
510 reg.add_internal_call("internal_m2n_text_get_render_font_size",
511 dotnet_internal_call(internal_m2n_text_get_render_font_size));
512
513 reg.add_internal_call("internal_m2n_text_get_auto_size", dotnet_internal_call(internal_m2n_text_get_auto_size));
514 reg.add_internal_call("internal_m2n_text_set_auto_size", dotnet_internal_call(internal_m2n_text_set_auto_size));
515
516 reg.add_internal_call("internal_m2n_text_get_auto_size_range",
517 dotnet_internal_call(internal_m2n_text_get_auto_size_range));
518 reg.add_internal_call("internal_m2n_text_set_auto_size_range",
519 dotnet_internal_call(internal_m2n_text_set_auto_size_range));
520
521 reg.add_internal_call("internal_m2n_text_get_area", dotnet_internal_call(internal_m2n_text_get_area));
522 reg.add_internal_call("internal_m2n_text_set_area", dotnet_internal_call(internal_m2n_text_set_area));
523 reg.add_internal_call("internal_m2n_text_get_render_area", dotnet_internal_call(internal_m2n_text_get_render_area));
524
525 reg.add_internal_call("internal_m2n_text_get_is_rich_text", dotnet_internal_call(internal_m2n_text_get_is_rich_text));
526 reg.add_internal_call("internal_m2n_text_set_is_rich_text", dotnet_internal_call(internal_m2n_text_set_is_rich_text));
527
528 reg.add_internal_call("internal_m2n_text_get_alignment", dotnet_internal_call(internal_m2n_text_get_alignment));
529 reg.add_internal_call("internal_m2n_text_set_alignment", dotnet_internal_call(internal_m2n_text_set_alignment));
530
531 reg.add_internal_call("internal_m2n_text_get_bounds", dotnet_internal_call(internal_m2n_text_get_bounds));
532 reg.add_internal_call("internal_m2n_text_get_render_bounds", dotnet_internal_call(internal_m2n_text_get_render_bounds));
533
534 // Text Style Functions
535 reg.add_internal_call("internal_m2n_text_set_opacity", dotnet_internal_call(internal_m2n_text_set_opacity));
536 reg.add_internal_call("internal_m2n_text_get_opacity", dotnet_internal_call(internal_m2n_text_get_opacity));
537 reg.add_internal_call("internal_m2n_text_set_text_color", dotnet_internal_call(internal_m2n_text_set_text_color));
538 reg.add_internal_call("internal_m2n_text_get_text_color", dotnet_internal_call(internal_m2n_text_get_text_color));
539 reg.add_internal_call("internal_m2n_text_set_background_color", dotnet_internal_call(internal_m2n_text_set_background_color));
540 reg.add_internal_call("internal_m2n_text_get_background_color", dotnet_internal_call(internal_m2n_text_get_background_color));
541 reg.add_internal_call("internal_m2n_text_set_foreground_color", dotnet_internal_call(internal_m2n_text_set_foreground_color));
542 reg.add_internal_call("internal_m2n_text_get_foreground_color", dotnet_internal_call(internal_m2n_text_get_foreground_color));
543 reg.add_internal_call("internal_m2n_text_set_overline_color", dotnet_internal_call(internal_m2n_text_set_overline_color));
544 reg.add_internal_call("internal_m2n_text_get_overline_color", dotnet_internal_call(internal_m2n_text_get_overline_color));
545 reg.add_internal_call("internal_m2n_text_set_underline_color", dotnet_internal_call(internal_m2n_text_set_underline_color));
546 reg.add_internal_call("internal_m2n_text_get_underline_color", dotnet_internal_call(internal_m2n_text_get_underline_color));
547 reg.add_internal_call("internal_m2n_text_set_strike_color", dotnet_internal_call(internal_m2n_text_set_strike_color));
548 reg.add_internal_call("internal_m2n_text_get_strike_color", dotnet_internal_call(internal_m2n_text_get_strike_color));
549 reg.add_internal_call("internal_m2n_text_set_outline_color", dotnet_internal_call(internal_m2n_text_set_outline_color));
550 reg.add_internal_call("internal_m2n_text_get_outline_color", dotnet_internal_call(internal_m2n_text_get_outline_color));
551 reg.add_internal_call("internal_m2n_text_set_outline_width", dotnet_internal_call(internal_m2n_text_set_outline_width));
552 reg.add_internal_call("internal_m2n_text_get_outline_width", dotnet_internal_call(internal_m2n_text_get_outline_width));
553 reg.add_internal_call("internal_m2n_text_set_shadow_offsets", dotnet_internal_call(internal_m2n_text_set_shadow_offsets));
554 reg.add_internal_call("internal_m2n_text_get_shadow_offsets", dotnet_internal_call(internal_m2n_text_get_shadow_offsets));
555 reg.add_internal_call("internal_m2n_text_set_shadow_color", dotnet_internal_call(internal_m2n_text_set_shadow_color));
556 reg.add_internal_call("internal_m2n_text_get_shadow_color", dotnet_internal_call(internal_m2n_text_get_shadow_color));
557 reg.add_internal_call("internal_m2n_text_set_shadow_softener", dotnet_internal_call(internal_m2n_text_set_shadow_softener));
558 reg.add_internal_call("internal_m2n_text_get_shadow_softener", dotnet_internal_call(internal_m2n_text_get_shadow_softener));
559 reg.add_internal_call("internal_m2n_text_set_style_flags", dotnet_internal_call(internal_m2n_text_set_style_flags));
560 reg.add_internal_call("internal_m2n_text_get_style_flags", dotnet_internal_call(internal_m2n_text_get_style_flags));
561}
562
563} // namespace unravel
uint32_t width
ImGui::Font::Enum font
Definition hub.cpp:30
#define APPLOG_TRACE(...)
Definition logging.h:17
texture_job_type type
void register_text_component_script_bindings()
auto safe_get_component(entt::entity id) -> T *
std::vector< math::color > color
const text_vector< size_t > * offsets
Storage for box vector values and wraps up common functionality.
Definition bbox.h:21
static bbox empty
An empty bounding box.
Definition bbox.h:316
static color white()
Definition color.h:13
static color black()
Definition color.h:18
static color transparent()
Definition color.h:23
static auto context() -> rtti::context &
Definition engine.cpp:111