Improved rounded rectangles

This commit is contained in:
2026-03-25 23:26:19 +01:00
parent b81a4dda98
commit 53dfa37b64
2 changed files with 8 additions and 5 deletions
@@ -32,7 +32,9 @@ public interface RenderScope {
default void drawRoundedRectangle(int x, int y, int width, int height, int radius, int color) { default void drawRoundedRectangle(int x, int y, int width, int height, int radius, int color) {
if (color == 0) if (color == 0)
return; return;
radius = Math.min(radius, Math.min(width, height));
radius = Math.min(radius, width / 2);
radius = Math.min(radius, height / 2);
String svg = String.format( String svg = String.format(
"<svg xmlns='http://www.w3.org/2000/svg' width='%d' height='%d'>" + "<svg xmlns='http://www.w3.org/2000/svg' width='%d' height='%d'>" +
@@ -45,8 +47,9 @@ public interface RenderScope {
InputStream svgStream = new ByteArrayInputStream(svg.getBytes(StandardCharsets.UTF_8)); InputStream svgStream = new ByteArrayInputStream(svg.getBytes(StandardCharsets.UTF_8));
drawTexture(SvgTexture.getSvg(svgStream, drawTexture(SvgTexture.getSvg(svgStream,
IdentifierRef.ofSaturn("textures/gui/tmp_rect/rounded_" + width + "_" + height + "_" + radius), IdentifierRef.ofSaturn(
width * 3, height * 3), x, y, 0, 0, width, height, color); "textures/gui/tmp_rect/rounded_" + width + "_" + height + "_" + radius),
width * 4, height * 4), x, y, 0, 0, width, height, color);
} }
void drawBorder(int x, int y, int width, int height, int color); void drawBorder(int x, int y, int width, int height, int color);
@@ -17,9 +17,9 @@ public class Toggle extends Element {
@Override @Override
public void render(RenderScope renderScope, ElementContext ctx) { public void render(RenderScope renderScope, ElementContext ctx) {
renderScope.drawRoundedRectangle(0, 0, width, height, height, renderScope.drawRoundedRectangle(0, 0, 60, 30, Theme.WIDGET_RADIUS.value,
Theme.withAlpha(0.5f, prop.value ? Theme.ACCENT.value : Theme.PRIMARY.value)); Theme.withAlpha(0.5f, prop.value ? Theme.ACCENT.value : Theme.PRIMARY.value));
renderScope.drawRoundedRectangle(prop.value ? 30 : 0, 0, 30, 30, 30, renderScope.drawRoundedRectangle(prop.value ? 30 : 0, 0, 30, 30, Theme.WIDGET_RADIUS.value,
prop.value ? Theme.ACCENT.value : Theme.PRIMARY.value); prop.value ? Theme.ACCENT.value : Theme.PRIMARY.value);
} }