Vuo 2.4.4
Loading...
Searching...
No Matches
VuoUiThemeToggleRounded.cc
Go to the documentation of this file.
1
10#include "VuoUiThemeBase.hh"
11
12#include "VuoSceneText.h"
13
15#ifdef VUO_COMPILER
17 "title": "UI Theme: Toggle, Rounded",
18 "dependencies": [
19 "VuoBoolean",
20 "VuoColor",
21 "VuoFont",
22 "VuoImage",
23 "VuoImageText",
24 "VuoLayer",
25 "VuoPoint2d",
26 "VuoReal",
27 "VuoAnchor",
28 "VuoHorizontalAlignment",
29 "VuoVerticalAlignment",
30 "VuoSceneText"
31 ],
32 });
33#endif
35
40{
41private:
42 VuoFont labelFont;
43
44 VuoColor labelColor;
45 VuoColor labelColorHovered;
46 VuoColor labelColorPressed;
47 VuoColor labelColorToggled;
48 VuoColor labelColorToggledAndHovered;
49
50 VuoColor checkmarkColor;
51 VuoColor checkmarkColorHovered;
52 VuoColor checkmarkColorPressed;
53
54 VuoColor checkmarkBorderColor;
55 VuoColor checkmarkBorderColorHovered;
56 VuoColor checkmarkBorderColorPressed;
57
58 VuoColor checkboxBackgroundColor;
59 VuoColor checkboxBackgroundColorHovered;
60 VuoColor checkboxBackgroundColorPressed;
61 VuoColor checkboxBackgroundColorToggled;
62 VuoColor checkboxBackgroundColorToggledAndHovered;
63
64 VuoColor checkboxBorderColor;
65 VuoColor checkboxBorderColorHovered;
66 VuoColor checkboxBorderColorPressed;
67 VuoColor checkboxBorderColorToggled;
68 VuoColor checkboxBorderColorToggledAndHovered;
69
70 VuoReal checkboxBorderThickness;
71 VuoReal checkboxCornerRoundness;
72 VuoReal marginBetweenCheckboxAndLabel;
73
74public:
75 static std::string type;
76
80 static VuoSerializable *makeFromJson(json_object *js)
81 {
82 return new VuoUiThemeToggleRounded(VuoJson_getObjectValue(VuoFont, js, "labelFont", (VuoFont){VuoText_make("Avenir-Medium"), 24, false, (VuoColor){1,1,1,1}, VuoHorizontalAlignment_Center, 1, 1}),
83
84 VuoJson_getObjectValue(VuoColor, js, "labelColor", (VuoColor){.7,.7,.7,.7}),
85 VuoJson_getObjectValue(VuoColor, js, "labelColorHovered", (VuoColor){.7,.7,.7,.8}),
86 VuoJson_getObjectValue(VuoColor, js, "labelColorPressed", (VuoColor){.7,.7,.7,.9}),
87 VuoJson_getObjectValue(VuoColor, js, "labelColorToggled", (VuoColor){.7,.7,.7,.8}),
88 VuoJson_getObjectValue(VuoColor, js, "labelColorToggledAndHovered", (VuoColor){.7,.7,.7,.9}),
89
90 VuoJson_getObjectValue(VuoColor, js, "checkmarkColor", (VuoColor){1,1,1,.9}),
91 VuoJson_getObjectValue(VuoColor, js, "checkmarkColorHovered", (VuoColor){1,1,1,1 }),
92 VuoJson_getObjectValue(VuoColor, js, "checkmarkColorPressed", (VuoColor){1,1,1,.9}),
93
94 VuoJson_getObjectValue(VuoColor, js, "checkmarkBorderColor", (VuoColor){0,0,0,.5}),
95 VuoJson_getObjectValue(VuoColor, js, "checkmarkBorderColorHovered", (VuoColor){0,0,0,.5}),
96 VuoJson_getObjectValue(VuoColor, js, "checkmarkBorderColorPressed", (VuoColor){0,0,0,1}),
97
98 VuoJson_getObjectValue(VuoColor, js, "checkboxBackgroundColor", (VuoColor){.4,.4, .4, 1}),
99 VuoJson_getObjectValue(VuoColor, js, "checkboxBackgroundColorHovered", (VuoColor){.43,.43,.43,1}),
100 VuoJson_getObjectValue(VuoColor, js, "checkboxBackgroundColorPressed", (VuoColor){.4,.5, .6, 1}),
101 VuoJson_getObjectValue(VuoColor, js, "checkboxBackgroundColorToggled", (VuoColor){.4,.6, .8, 1}),
102 VuoJson_getObjectValue(VuoColor, js, "checkboxBackgroundColorToggledAndHovered", (VuoColor){.4,.62,.84,1}),
103
104 VuoJson_getObjectValue(VuoColor, js, "checkboxBorderColor", (VuoColor){.46,.46,.46,1}),
105 VuoJson_getObjectValue(VuoColor, js, "checkboxBorderColorHovered", (VuoColor){.46,.48,.49,1}),
106 VuoJson_getObjectValue(VuoColor, js, "checkboxBorderColorPressed", (VuoColor){.46,.55,.64,1}),
107 VuoJson_getObjectValue(VuoColor, js, "checkboxBorderColorToggled", (VuoColor){.46,.64,.82,1}),
108 VuoJson_getObjectValue(VuoColor, js, "checkboxBorderColorToggledAndHovered", (VuoColor){.46,.66,.86,1}),
109
110 VuoJson_getObjectValue(VuoReal, js, "checkboxBorderThickness", 0.005),
111 VuoJson_getObjectValue(VuoReal, js, "checkboxCornerRoundness", 0.5),
112 VuoJson_getObjectValue(VuoReal, js, "marginBetweenCheckboxAndLabel", 0.025));
113 }
114
119
120 VuoColor _labelColor,
121 VuoColor _labelColorHovered,
122 VuoColor _labelColorPressed,
123 VuoColor _labelColorToggled,
124 VuoColor _labelColorToggledAndHovered,
125
126 VuoColor _checkmarkColor,
127 VuoColor _checkmarkColorHovered,
128 VuoColor _checkmarkColorPressed,
129
130 VuoColor _checkmarkBorderColor,
131 VuoColor _checkmarkBorderColorHovered,
132 VuoColor _checkmarkBorderColorPressed,
133
134 VuoColor _checkboxBackgroundColor,
135 VuoColor _checkboxBackgroundColorHovered,
136 VuoColor _checkboxBackgroundColorPressed,
137 VuoColor _checkboxBackgroundColorToggled,
138 VuoColor _checkboxBackgroundColorToggledAndHovered,
139
140 VuoColor _checkboxBorderColor,
141 VuoColor _checkboxBorderColorHovered,
142 VuoColor _checkboxBorderColorPressed,
143 VuoColor _checkboxBorderColorToggled,
144 VuoColor _checkboxBorderColorToggledAndHovered,
145
146 VuoReal _checkboxBorderThickness,
147 VuoReal _checkboxCornerRoundness,
148 VuoReal _marginBetweenCheckboxAndLabel)
149 {
150 labelFont = _labelFont;
151 VuoFont_retain(labelFont);
152
153 labelColor = _labelColor;
154 labelColorHovered = _labelColorHovered;
155 labelColorPressed = _labelColorPressed;
156 labelColorToggled = _labelColorToggled;
157 labelColorToggledAndHovered = _labelColorToggledAndHovered;
158
159 checkmarkColor = _checkmarkColor;
160 checkmarkColorHovered = _checkmarkColorHovered;
161 checkmarkColorPressed = _checkmarkColorPressed;
162
163 checkmarkBorderColor = _checkmarkBorderColor;
164 checkmarkBorderColorHovered = _checkmarkBorderColorHovered;
165 checkmarkBorderColorPressed = _checkmarkBorderColorPressed;
166
167 checkboxBackgroundColor = _checkboxBackgroundColor;
168 checkboxBackgroundColorHovered = _checkboxBackgroundColorHovered;
169 checkboxBackgroundColorPressed = _checkboxBackgroundColorPressed;
170 checkboxBackgroundColorToggled = _checkboxBackgroundColorToggled;
171 checkboxBackgroundColorToggledAndHovered = _checkboxBackgroundColorToggledAndHovered;
172
173 checkboxBorderColor = _checkboxBorderColor;
174 checkboxBorderColorHovered = _checkboxBorderColorHovered;
175 checkboxBorderColorPressed = _checkboxBorderColorPressed;
176 checkboxBorderColorToggled = _checkboxBorderColorToggled;
177 checkboxBorderColorToggledAndHovered = _checkboxBorderColorToggledAndHovered;
178
179 checkboxBorderThickness = _checkboxBorderThickness;
180 checkboxCornerRoundness = _checkboxCornerRoundness;
181 marginBetweenCheckboxAndLabel = _marginBetweenCheckboxAndLabel;
182 }
184 {
185 VuoFont_release(labelFont);
186 }
187
191 json_object *getJson()
192 {
193 json_object *json = VuoSerializable::getJson();
194
195 json_object_object_add(json, "labelFont", VuoFont_getJson(labelFont));
196
197 json_object_object_add(json, "labelColor", VuoColor_getJson(labelColor));
198 json_object_object_add(json, "labelColorHovered", VuoColor_getJson(labelColorHovered));
199 json_object_object_add(json, "labelColorPressed", VuoColor_getJson(labelColorPressed));
200 json_object_object_add(json, "labelColorToggled", VuoColor_getJson(labelColorToggled));
201 json_object_object_add(json, "labelColorToggledAndHovered", VuoColor_getJson(labelColorToggledAndHovered));
202
203 json_object_object_add(json, "checkmarkColor", VuoColor_getJson(checkmarkColor));
204 json_object_object_add(json, "checkmarkColorHovered", VuoColor_getJson(checkmarkColorHovered));
205 json_object_object_add(json, "checkmarkColorPressed", VuoColor_getJson(checkmarkColorPressed));
206
207 json_object_object_add(json, "checkmarkBorderColor", VuoColor_getJson(checkmarkBorderColor));
208 json_object_object_add(json, "checkmarkBorderColorHovered", VuoColor_getJson(checkmarkBorderColorHovered));
209 json_object_object_add(json, "checkmarkBorderColorPressed", VuoColor_getJson(checkmarkBorderColorPressed));
210
211 json_object_object_add(json, "checkboxBackgroundColor", VuoColor_getJson(checkboxBackgroundColor));
212 json_object_object_add(json, "checkboxBackgroundColorHovered", VuoColor_getJson(checkboxBackgroundColorHovered));
213 json_object_object_add(json, "checkboxBackgroundColorPressed", VuoColor_getJson(checkboxBackgroundColorPressed));
214 json_object_object_add(json, "checkboxBackgroundColorToggled", VuoColor_getJson(checkboxBackgroundColorToggled));
215 json_object_object_add(json, "checkboxBackgroundColorToggledAndHovered", VuoColor_getJson(checkboxBackgroundColorToggledAndHovered));
216
217 json_object_object_add(json, "checkboxBorderColor", VuoColor_getJson(checkboxBorderColor));
218 json_object_object_add(json, "checkboxBorderColorHovered", VuoColor_getJson(checkboxBorderColorHovered));
219 json_object_object_add(json, "checkboxBorderColorPressed", VuoColor_getJson(checkboxBorderColorPressed));
220 json_object_object_add(json, "checkboxBorderColorToggled", VuoColor_getJson(checkboxBorderColorToggled));
221 json_object_object_add(json, "checkboxBorderColorToggledAndHovered", VuoColor_getJson(checkboxBorderColorToggledAndHovered));
222
223 json_object_object_add(json, "checkboxBorderThickness", VuoReal_getJson(checkboxBorderThickness));
224 json_object_object_add(json, "checkboxCornerRoundness", VuoReal_getJson(checkboxCornerRoundness));
225 json_object_object_add(json, "marginBetweenCheckboxAndLabel", VuoReal_getJson(marginBetweenCheckboxAndLabel));
226 return json;
227 }
228
233 {
234 return strdup("Toggle Button Theme (Rounded)");
235 }
236
240 bool operator==(const VuoSerializable &that)
241 {
243 return VuoFont_areEqual(labelFont, thatSpecialized->labelFont)
244
245 && VuoColor_areEqual(labelColor, thatSpecialized->labelColor)
246 && VuoColor_areEqual(labelColorHovered, thatSpecialized->labelColorHovered)
247 && VuoColor_areEqual(labelColorPressed, thatSpecialized->labelColorPressed)
248 && VuoColor_areEqual(labelColorToggled, thatSpecialized->labelColorToggled)
249 && VuoColor_areEqual(labelColorToggledAndHovered, thatSpecialized->labelColorToggledAndHovered)
250
251 && VuoColor_areEqual(checkmarkColor, thatSpecialized->checkmarkColor)
252 && VuoColor_areEqual(checkmarkColorHovered, thatSpecialized->checkmarkColorHovered)
253 && VuoColor_areEqual(checkmarkColorPressed, thatSpecialized->checkmarkColorPressed)
254
255 && VuoColor_areEqual(checkmarkBorderColor, thatSpecialized->checkmarkBorderColor)
256 && VuoColor_areEqual(checkmarkBorderColorHovered, thatSpecialized->checkmarkBorderColorHovered)
257 && VuoColor_areEqual(checkmarkBorderColorPressed, thatSpecialized->checkmarkBorderColorPressed)
258
259 && VuoColor_areEqual(checkboxBackgroundColor, thatSpecialized->checkboxBackgroundColor)
260 && VuoColor_areEqual(checkboxBackgroundColorHovered, thatSpecialized->checkboxBackgroundColorHovered)
261 && VuoColor_areEqual(checkboxBackgroundColorPressed, thatSpecialized->checkboxBackgroundColorPressed)
262 && VuoColor_areEqual(checkboxBackgroundColorToggled, thatSpecialized->checkboxBackgroundColorToggled)
263 && VuoColor_areEqual(checkboxBackgroundColorToggledAndHovered, thatSpecialized->checkboxBackgroundColorToggledAndHovered)
264
265 && VuoColor_areEqual(checkboxBorderColor, thatSpecialized->checkboxBorderColor)
266 && VuoColor_areEqual(checkboxBorderColorHovered, thatSpecialized->checkboxBorderColorHovered)
267 && VuoColor_areEqual(checkboxBorderColorPressed, thatSpecialized->checkboxBorderColorPressed)
268 && VuoColor_areEqual(checkboxBorderColorToggled, thatSpecialized->checkboxBorderColorToggled)
269 && VuoColor_areEqual(checkboxBorderColorToggledAndHovered, thatSpecialized->checkboxBorderColorToggledAndHovered)
270
271 && VuoReal_areEqual(checkboxBorderThickness, thatSpecialized->checkboxBorderThickness)
272 && VuoReal_areEqual(checkboxCornerRoundness, thatSpecialized->checkboxCornerRoundness)
273 && VuoReal_areEqual(marginBetweenCheckboxAndLabel, thatSpecialized->marginBetweenCheckboxAndLabel);
274 }
275
279 bool operator<(const VuoSerializable &that)
280 {
282
283 VuoType_returnInequality(VuoFont, labelFont, thatSpecialized->labelFont);
284
285 VuoType_returnInequality(VuoColor, labelColor, thatSpecialized->labelColor);
286 VuoType_returnInequality(VuoColor, labelColorHovered, thatSpecialized->labelColorHovered);
287 VuoType_returnInequality(VuoColor, labelColorPressed, thatSpecialized->labelColorPressed);
288 VuoType_returnInequality(VuoColor, labelColorToggled, thatSpecialized->labelColorToggled);
289 VuoType_returnInequality(VuoColor, labelColorToggledAndHovered, thatSpecialized->labelColorToggledAndHovered);
290
291 VuoType_returnInequality(VuoColor, checkmarkColor, thatSpecialized->checkmarkColor);
292 VuoType_returnInequality(VuoColor, checkmarkColorHovered, thatSpecialized->checkmarkColorHovered);
293 VuoType_returnInequality(VuoColor, checkmarkColorPressed, thatSpecialized->checkmarkColorPressed);
294
295 VuoType_returnInequality(VuoColor, checkmarkBorderColor, thatSpecialized->checkmarkBorderColor);
296 VuoType_returnInequality(VuoColor, checkmarkBorderColorHovered, thatSpecialized->checkmarkBorderColorHovered);
297 VuoType_returnInequality(VuoColor, checkmarkBorderColorPressed, thatSpecialized->checkmarkBorderColorPressed);
298
299 VuoType_returnInequality(VuoColor, checkboxBackgroundColor, thatSpecialized->checkboxBackgroundColor);
300 VuoType_returnInequality(VuoColor, checkboxBackgroundColorHovered, thatSpecialized->checkboxBackgroundColorHovered);
301 VuoType_returnInequality(VuoColor, checkboxBackgroundColorPressed, thatSpecialized->checkboxBackgroundColorPressed);
302 VuoType_returnInequality(VuoColor, checkboxBackgroundColorToggled, thatSpecialized->checkboxBackgroundColorToggled);
303 VuoType_returnInequality(VuoColor, checkboxBackgroundColorToggledAndHovered, thatSpecialized->checkboxBackgroundColorToggledAndHovered);
304
305 VuoType_returnInequality(VuoColor, checkboxBorderColor, thatSpecialized->checkboxBorderColor);
306 VuoType_returnInequality(VuoColor, checkboxBorderColorHovered, thatSpecialized->checkboxBorderColorHovered);
307 VuoType_returnInequality(VuoColor, checkboxBorderColorPressed, thatSpecialized->checkboxBorderColorPressed);
308 VuoType_returnInequality(VuoColor, checkboxBorderColorToggled, thatSpecialized->checkboxBorderColorToggled);
309 VuoType_returnInequality(VuoColor, checkboxBorderColorToggledAndHovered, thatSpecialized->checkboxBorderColorToggledAndHovered);
310
311 VuoType_returnInequality(VuoReal, checkboxBorderThickness, thatSpecialized->checkboxBorderThickness);
312 VuoType_returnInequality(VuoReal, checkboxCornerRoundness, thatSpecialized->checkboxCornerRoundness);
313 VuoType_returnInequality(VuoReal, marginBetweenCheckboxAndLabel, thatSpecialized->marginBetweenCheckboxAndLabel);
314
315 return false;
316 }
317
326 VuoLayer render(VuoRenderedLayers renderedLayers, VuoText label, VuoPoint2d position, VuoAnchor anchor, bool isHovered, bool isPressed, bool isToggled)
327 {
328 bool hasText = VuoText_length(label) > 0;
329
331 float checkboxWidth = lineHeight * .6;
332 float checkboxHeight = checkboxWidth;
333
334 checkboxWidth += checkboxBorderThickness * 2;
335 checkboxHeight += checkboxBorderThickness * 2;
336
337 float innerCornerRoundness = (checkboxHeight - checkboxBorderThickness * 2 - (checkboxHeight * (1 - checkboxCornerRoundness))) / (checkboxHeight - checkboxBorderThickness * 2);
338
339 VuoLayer backgroundLayer = VuoLayer_makeRoundedRectangle(VuoText_make("Checkbox Background"),
340 isPressed ? checkboxBackgroundColorPressed :
341 (isToggled && isHovered ? checkboxBackgroundColorToggledAndHovered :
342 (isToggled ? checkboxBackgroundColorToggled :
343 (isHovered ? checkboxBackgroundColorHovered :
344 checkboxBackgroundColor))),
345 VuoPoint2d_make(0, 0),
346 0,
347 checkboxWidth - checkboxBorderThickness * 2,
348 checkboxHeight - checkboxBorderThickness * 2,
349 1,
350 innerCornerRoundness);
351
352
353 VuoPoint2d checkmarkPosition{ (float)checkboxWidth * .15f, (float)checkboxHeight * .15f};
354 VuoReal checkmarkWidth = checkboxWidth * 1.15;
355
356 // Ensures the layer bounds don't change when the checkmark appears or disappears.
357 // Also covers the gap between the checkbox and the label.
358 VuoLayer spacerLayer = VuoLayer_makeColor(VuoText_make("Spacer"),
359 (VuoColor){ 0, 0, 0, 0 },
360 VuoPoint2d_add(checkmarkPosition, (VuoPoint2d){ (float)marginBetweenCheckboxAndLabel / 2, 0 }),
361 0,
362 checkmarkWidth + marginBetweenCheckboxAndLabel,
363 checkmarkWidth);
364
365 VuoLayer toggleLayer = nullptr;
366 if (isToggled)
367 toggleLayer = VuoLayer_makeCheckmark(VuoText_make("Checkmark"),
368
369 isPressed ? checkmarkColorPressed :
370 (isHovered ? checkmarkColorHovered :
371 checkmarkColor),
372
373 isPressed ? checkmarkBorderColorPressed :
374 (isHovered ? checkmarkBorderColorHovered :
375 checkmarkBorderColor),
376
377 .01,
378 checkmarkPosition,
379 0,
380 checkmarkWidth,
381 checkmarkWidth);
382
383 VuoLayer borderLayer = VuoLayer_makeRoundedRectangle(VuoText_make("Checkbox Border"),
384 isPressed ? checkboxBorderColorPressed :
385 (isToggled && isHovered ? checkboxBorderColorToggledAndHovered :
386 (isToggled ? checkboxBorderColorToggled :
387 (isHovered ? checkboxBorderColorHovered :
388 checkboxBorderColor))),
389 VuoPoint2d_make(0, 0),
390 0,
391 checkboxWidth,
392 checkboxHeight,
393 1,
394 checkboxCornerRoundness);
395
397 VuoLocal(layers);
398
399 VuoListAppendValue_VuoLayer(layers, spacerLayer);
400 VuoListAppendValue_VuoLayer(layers, borderLayer);
401 VuoListAppendValue_VuoLayer(layers, backgroundLayer);
402 if(VuoLayer_isPopulated(toggleLayer)) VuoListAppendValue_VuoLayer(layers, toggleLayer);
403
404 if (hasText)
405 {
406 VuoFont f = labelFont;
407 if (isPressed)
408 f.color = (VuoColor){ f.color.r * labelColorPressed.r,
409 f.color.g * labelColorPressed.g,
410 f.color.b * labelColorPressed.b,
411 f.color.a * labelColorPressed.a };
412 else if (isToggled && isHovered)
413 f.color = (VuoColor){ f.color.r * labelColorToggledAndHovered.r,
414 f.color.g * labelColorToggledAndHovered.g,
415 f.color.b * labelColorToggledAndHovered.b,
416 f.color.a * labelColorToggledAndHovered.a };
417 else if (isHovered)
418 f.color = (VuoColor){ f.color.r * labelColorHovered.r,
419 f.color.g * labelColorHovered.g,
420 f.color.b * labelColorHovered.b,
421 f.color.a * labelColorHovered.a };
422 else if (isToggled)
423 f.color = (VuoColor){ f.color.r * labelColorToggled.r,
424 f.color.g * labelColorToggled.g,
425 f.color.b * labelColorToggled.b,
426 f.color.a * labelColorToggled.a };
427 else
428 f.color = (VuoColor){ f.color.r * labelColor.r,
429 f.color.g * labelColor.g,
430 f.color.b * labelColor.b,
431 f.color.a * labelColor.a };
432
433 VuoSceneObject textLayer = VuoSceneText_make(label, f, true, INFINITY, VuoAnchor_make(VuoHorizontalAlignment_Left, VuoVerticalAlignment_Center));
434 VuoSceneObject_setTransform(textLayer, VuoTransform_makeEuler((VuoPoint3d){ (float)checkboxWidth/2 + (float)marginBetweenCheckboxAndLabel, -.0001f * (float)f.pointSize, 0 },
435 (VuoPoint3d){ 0, 0, 0 },
436 (VuoPoint3d){ 1, 1, 1 }));
437 VuoListAppendValue_VuoLayer(layers, (VuoLayer)textLayer);
438 }
439
440
441 VuoLayer group = VuoLayer_makeGroup(layers, VuoTransform2d_make(position, 0, VuoPoint2d_make(1, 1)));
442
443 // Center horizontally.
444 VuoPoint2d textSize = VuoRenderedLayers_getTextSize(renderedLayers, label, labelFont, true, 1, 0, INFINITY, true);
445 VuoSceneObject_translate((VuoSceneObject)group, (VuoPoint3d){checkboxWidth/2 - (checkboxWidth + (float)marginBetweenCheckboxAndLabel + textSize.x)/2, 0, 0});
446
447 unsigned long int pixelsWide, pixelsHigh;
448 float backingScaleFactor;
449 if (!VuoRenderedLayers_getRenderingDimensions(renderedLayers, &pixelsWide, &pixelsHigh, &backingScaleFactor))
450 {
451 VuoRetain(group);
452 VuoRelease(group);
453 return nullptr;
454 }
455
456 // Wrap it in an extra group, so the above centering and the anchor aren't disturbed by e.g. `Arrange Layers in Column`.
458 VuoRetain(l);
459 VuoListAppendValue_VuoLayer(l, VuoLayer_setAnchor(group, anchor, pixelsWide, pixelsHigh, backingScaleFactor));
461 VuoRelease(l);
462 return lg;
463 }
464};
465
467
472
473 VuoColor labelColor,
474 VuoColor labelColorHovered,
475 VuoColor labelColorPressed,
476 VuoColor labelColorToggled,
477 VuoColor labelColorToggledAndHovered,
478
479 VuoColor checkmarkColor,
480 VuoColor checkmarkColorHovered,
481 VuoColor checkmarkColorPressed,
482
483 VuoColor checkmarkBorderColor,
484 VuoColor checkmarkBorderColorHovered,
485 VuoColor checkmarkBorderColorPressed,
486
487 VuoColor checkboxBackgroundColor,
488 VuoColor checkboxBackgroundColorHovered,
489 VuoColor checkboxBackgroundColorPressed,
490 VuoColor checkboxBackgroundColorToggled,
491 VuoColor checkboxBackgroundColorToggledAndHovered,
492
493 VuoColor checkboxBorderColor,
494 VuoColor checkboxBorderColorHovered,
495 VuoColor checkboxBorderColorPressed,
496 VuoColor checkboxBorderColorToggled,
497 VuoColor checkboxBorderColorToggledAndHovered,
498
499 VuoReal checkboxBorderThickness,
500 VuoReal checkboxCornerRoundness,
501 VuoReal marginBetweenCheckboxAndLabel)
502{
503 return reinterpret_cast<VuoUiTheme>(new VuoUiThemeToggleRounded(labelFont,
504
505 labelColor,
506 labelColorHovered,
507 labelColorPressed,
508 labelColorToggled,
509 labelColorToggledAndHovered,
510
511 checkmarkColor,
512 checkmarkColorHovered,
513 checkmarkColorPressed,
514
515 checkmarkBorderColor,
516 checkmarkBorderColorHovered,
517 checkmarkBorderColorPressed,
518
519 checkboxBackgroundColor,
520 checkboxBackgroundColorHovered,
521 checkboxBackgroundColorPressed,
522 checkboxBackgroundColorToggled,
523 checkboxBackgroundColorToggledAndHovered,
524
525 checkboxBorderColor,
526 checkboxBorderColorHovered,
527 checkboxBorderColorPressed,
528 checkboxBorderColorToggled,
529 checkboxBorderColorToggledAndHovered,
530
531 checkboxBorderThickness,
532 checkboxCornerRoundness,
533 marginBetweenCheckboxAndLabel));
534}