[Renderers/SDL3] Add borders and rounded borders functionality. (#220)

This commit is contained in:
arnauNau 2025-01-26 02:39:34 +01:00 committed by GitHub
parent c3fcf6ce12
commit c0dac38c87
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 138 additions and 26 deletions

View file

@ -33,12 +33,12 @@ static inline Clay_Dimensions SDL_MeasureText(Clay_StringSlice text, Clay_TextEl
return (Clay_Dimensions) { (float) width, (float) height };
}
static void Label(const Clay_String text)
static void Label(const Clay_String text, const int cornerRadius)
{
CLAY(CLAY_LAYOUT({ .padding = {8, 8} }),
CLAY_RECTANGLE({
.color = Clay_Hovered() ? COLOR_BLUE : COLOR_ORANGE,
.cornerRadius = (Clay_CornerRadius){ 8, 8, 8, 8 },
.cornerRadius = cornerRadius,
})) {
CLAY_TEXT(text, CLAY_TEXT_CONFIG({
.textColor = { 255, 255, 255, 255 },
@ -48,6 +48,24 @@ static void Label(const Clay_String text)
}
}
static void LabelBorder(const Clay_String text, const int cornerRadius, const int thickness)
{
CLAY(
CLAY_LAYOUT({
.padding = {16, 16, 8, 8 } }),
CLAY_BORDER_OUTSIDE_RADIUS(
thickness,
COLOR_BLUE,
cornerRadius)
){
CLAY_TEXT(text, CLAY_TEXT_CONFIG({
.textColor = { 255, 255, 255, 255 },
.fontId = FONT_ID,
.fontSize = 24,
}));
}
}
static Clay_RenderCommandArray Clay_CreateLayout()
{
Clay_BeginLayout();
@ -65,13 +83,21 @@ static Clay_RenderCommandArray Clay_CreateLayout()
.padding = { 10, 10 },
.layoutDirection = CLAY_TOP_TO_BOTTOM,
}),
CLAY_BORDER({
.left = { 20, COLOR_BLUE },
.right = { 20, COLOR_BLUE },
.bottom = { 20, COLOR_BLUE }
}),
CLAY_RECTANGLE({
.color = COLOR_LIGHT,
})
) {
Label(CLAY_STRING("Button 1"));
Label(CLAY_STRING("Button 2"));
Label(CLAY_STRING("Button 3"));
Label(CLAY_STRING("Rounded - Button 1"), 10);
Label(CLAY_STRING("Straight - Button 2") , 0);
Label(CLAY_STRING("Rounded+ - Button 3") , 20);
LabelBorder(CLAY_STRING("Border - Button 4"), 0, 5);
LabelBorder(CLAY_STRING("RoundedBorder - Button 5"), 10, 5);
LabelBorder(CLAY_STRING("RoundedBorder - Button 6"), 40, 15);
}
return Clay_EndLayout();
}