18 "title":
"UI Theme: Toggle, Rounded",
29 "VuoHorizontalAlignment",
30 "VuoVerticalAlignment",
49 VuoColor labelColorToggledAndHovered;
56 VuoColor checkmarkBorderColorHovered;
57 VuoColor checkmarkBorderColorPressed;
60 VuoColor checkboxBackgroundColorHovered;
61 VuoColor checkboxBackgroundColorPressed;
62 VuoColor checkboxBackgroundColorToggled;
63 VuoColor checkboxBackgroundColorToggledAndHovered;
69 VuoColor checkboxBorderColorToggledAndHovered;
71 VuoReal checkboxBorderThickness;
72 VuoReal checkboxCornerRoundness;
73 VuoReal marginBetweenCheckboxAndLabel;
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}),
125 VuoColor _labelColorToggledAndHovered,
132 VuoColor _checkmarkBorderColorHovered,
133 VuoColor _checkmarkBorderColorPressed,
136 VuoColor _checkboxBackgroundColorHovered,
137 VuoColor _checkboxBackgroundColorPressed,
138 VuoColor _checkboxBackgroundColorToggled,
139 VuoColor _checkboxBackgroundColorToggledAndHovered,
142 VuoColor _checkboxBorderColorHovered,
143 VuoColor _checkboxBorderColorPressed,
144 VuoColor _checkboxBorderColorToggled,
145 VuoColor _checkboxBorderColorToggledAndHovered,
147 VuoReal _checkboxBorderThickness,
148 VuoReal _checkboxCornerRoundness,
149 VuoReal _marginBetweenCheckboxAndLabel)
151 labelFont = _labelFont;
154 labelColor = _labelColor;
155 labelColorHovered = _labelColorHovered;
156 labelColorPressed = _labelColorPressed;
157 labelColorToggled = _labelColorToggled;
158 labelColorToggledAndHovered = _labelColorToggledAndHovered;
160 checkmarkColor = _checkmarkColor;
161 checkmarkColorHovered = _checkmarkColorHovered;
162 checkmarkColorPressed = _checkmarkColorPressed;
164 checkmarkBorderColor = _checkmarkBorderColor;
165 checkmarkBorderColorHovered = _checkmarkBorderColorHovered;
166 checkmarkBorderColorPressed = _checkmarkBorderColorPressed;
168 checkboxBackgroundColor = _checkboxBackgroundColor;
169 checkboxBackgroundColorHovered = _checkboxBackgroundColorHovered;
170 checkboxBackgroundColorPressed = _checkboxBackgroundColorPressed;
171 checkboxBackgroundColorToggled = _checkboxBackgroundColorToggled;
172 checkboxBackgroundColorToggledAndHovered = _checkboxBackgroundColorToggledAndHovered;
174 checkboxBorderColor = _checkboxBorderColor;
175 checkboxBorderColorHovered = _checkboxBorderColorHovered;
176 checkboxBorderColorPressed = _checkboxBorderColorPressed;
177 checkboxBorderColorToggled = _checkboxBorderColorToggled;
178 checkboxBorderColorToggledAndHovered = _checkboxBorderColorToggledAndHovered;
180 checkboxBorderThickness = _checkboxBorderThickness;
181 checkboxCornerRoundness = _checkboxCornerRoundness;
182 marginBetweenCheckboxAndLabel = _marginBetweenCheckboxAndLabel;
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));
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));
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));
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));
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));
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));
235 return strdup(
"Toggle Button Theme (Rounded)");
250 &&
VuoColor_areEqual(labelColorToggledAndHovered, thatSpecialized->labelColorToggledAndHovered)
253 &&
VuoColor_areEqual(checkmarkColorHovered, thatSpecialized->checkmarkColorHovered)
254 &&
VuoColor_areEqual(checkmarkColorPressed, thatSpecialized->checkmarkColorPressed)
256 &&
VuoColor_areEqual(checkmarkBorderColor, thatSpecialized->checkmarkBorderColor)
257 &&
VuoColor_areEqual(checkmarkBorderColorHovered, thatSpecialized->checkmarkBorderColorHovered)
258 &&
VuoColor_areEqual(checkmarkBorderColorPressed, thatSpecialized->checkmarkBorderColorPressed)
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)
267 &&
VuoColor_areEqual(checkboxBorderColorHovered, thatSpecialized->checkboxBorderColorHovered)
268 &&
VuoColor_areEqual(checkboxBorderColorPressed, thatSpecialized->checkboxBorderColorPressed)
269 &&
VuoColor_areEqual(checkboxBorderColorToggled, thatSpecialized->checkboxBorderColorToggled)
270 &&
VuoColor_areEqual(checkboxBorderColorToggledAndHovered, thatSpecialized->checkboxBorderColorToggledAndHovered)
272 &&
VuoReal_areEqual(checkboxBorderThickness, thatSpecialized->checkboxBorderThickness)
273 &&
VuoReal_areEqual(checkboxCornerRoundness, thatSpecialized->checkboxCornerRoundness)
274 &&
VuoReal_areEqual(marginBetweenCheckboxAndLabel, thatSpecialized->marginBetweenCheckboxAndLabel);
332 float checkboxWidth = lineHeight * .6;
333 float checkboxHeight = checkboxWidth;
335 checkboxWidth += checkboxBorderThickness * 2;
336 checkboxHeight += checkboxBorderThickness * 2;
338 float innerCornerRoundness = (checkboxHeight - checkboxBorderThickness * 2 - (checkboxHeight * (1 - checkboxCornerRoundness))) / (checkboxHeight - checkboxBorderThickness * 2);
341 isPressed ? checkboxBackgroundColorPressed :
342 (isToggled && isHovered ? checkboxBackgroundColorToggledAndHovered :
343 (isToggled ? checkboxBackgroundColorToggled :
344 (isHovered ? checkboxBackgroundColorHovered :
345 checkboxBackgroundColor))),
348 checkboxWidth - checkboxBorderThickness * 2,
349 checkboxHeight - checkboxBorderThickness * 2,
351 innerCornerRoundness);
354 VuoPoint2d checkmarkPosition{ (float)checkboxWidth * .15f, (
float)checkboxHeight * .15f};
355 VuoReal checkmarkWidth = checkboxWidth * 1.15;
361 VuoPoint2d_add(checkmarkPosition, (VuoPoint2d){ (float)marginBetweenCheckboxAndLabel / 2, 0 }),
363 checkmarkWidth + marginBetweenCheckboxAndLabel,
370 isPressed ? checkmarkColorPressed :
371 (isHovered ? checkmarkColorHovered :
374 isPressed ? checkmarkBorderColorPressed :
375 (isHovered ? checkmarkBorderColorHovered :
376 checkmarkBorderColor),
385 isPressed ? checkboxBorderColorPressed :
386 (isToggled && isHovered ? checkboxBorderColorToggledAndHovered :
387 (isToggled ? checkboxBorderColorToggled :
388 (isHovered ? checkboxBorderColorHovered :
389 checkboxBorderColor))),
395 checkboxCornerRoundness);
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 };
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 };
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 };
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 };
436 textLayer.
sceneObject.transform =
VuoTransform_makeEuler((VuoPoint3d){ (float)checkboxWidth/2 + (
float)marginBetweenCheckboxAndLabel, -.0001f * (float)f.pointSize, 0 },
437 (VuoPoint3d){ 0, 0, 0 },
438 (VuoPoint3d){ 1, 1, 1 });
447 group.
sceneObject.transform.translation.x += checkboxWidth/2 - (checkboxWidth + marginBetweenCheckboxAndLabel + textSize.x)/2;
470 VuoColor labelColorToggledAndHovered,
477 VuoColor checkmarkBorderColorHovered,
478 VuoColor checkmarkBorderColorPressed,
481 VuoColor checkboxBackgroundColorHovered,
482 VuoColor checkboxBackgroundColorPressed,
483 VuoColor checkboxBackgroundColorToggled,
484 VuoColor checkboxBackgroundColorToggledAndHovered,
487 VuoColor checkboxBorderColorHovered,
488 VuoColor checkboxBorderColorPressed,
489 VuoColor checkboxBorderColorToggled,
490 VuoColor checkboxBorderColorToggledAndHovered,
492 VuoReal checkboxBorderThickness,
493 VuoReal checkboxCornerRoundness,
494 VuoReal marginBetweenCheckboxAndLabel)
502 labelColorToggledAndHovered,
505 checkmarkColorHovered,
506 checkmarkColorPressed,
508 checkmarkBorderColor,
509 checkmarkBorderColorHovered,
510 checkmarkBorderColorPressed,
512 checkboxBackgroundColor,
513 checkboxBackgroundColorHovered,
514 checkboxBackgroundColorPressed,
515 checkboxBackgroundColorToggled,
516 checkboxBackgroundColorToggledAndHovered,
519 checkboxBorderColorHovered,
520 checkboxBorderColorPressed,
521 checkboxBorderColorToggled,
522 checkboxBorderColorToggledAndHovered,
524 checkboxBorderThickness,
525 checkboxCornerRoundness,
526 marginBetweenCheckboxAndLabel));