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