diff libmlk-ui/mlk/ui/frame.c @ 616:dae4cdc6a984

ui: simplify frame
author David Demelier <markand@malikania.fr>
date Mon, 21 Aug 2023 20:15:53 +0200
parents d97674d33764
children
line wrap: on
line diff
--- a/libmlk-ui/mlk/ui/frame.c	Mon Aug 21 07:43:18 2023 +0200
+++ b/libmlk-ui/mlk/ui/frame.c	Mon Aug 21 20:15:53 2023 +0200
@@ -21,68 +21,51 @@
 #include <mlk/core/painter.h>
 
 #include "frame.h"
-#include "style.h"
+#include "ui_p.h"
 
 static void
-draw(struct mlk_frame_delegate *self, const struct mlk_frame *frame)
+draw(struct mlk_frame_style *self, struct mlk_frame *frame)
 {
-	(void)self;
-
-	const struct mlk_style_attr *attr = &frame->style->normal;
-
-	mlk_painter_set_color(attr->color.border);
+	mlk_painter_set_color(self->border);
 	mlk_painter_draw_rectangle(frame->x, frame->y, frame->w, frame->h);
-	mlk_painter_set_color(attr->color.bg);
+	mlk_painter_set_color(self->background);
 	mlk_painter_draw_rectangle(
-		frame->x + attr->geo.border,
-		frame->y + attr->geo.border,
-		frame->w - (attr->geo.border * 2),
-		frame->h - (attr->geo.border * 2)
+		frame->x + self->border_size,
+		frame->y + self->border_size,
+		frame->w - (self->border_size * 2),
+		frame->h - (self->border_size * 2)
 	);
 }
 
-struct mlk_frame_delegate mlk_frame_delegate = {
+
+struct mlk_frame_style mlk_frame_style_dark = {
+	.background = 0x222323ff,
+	.border = 0x141414ff,
+	.border_size = 2,
 	.draw = draw
 };
 
-void
-mlk_frame_init(struct mlk_frame *frame,
-               struct mlk_style *st,
-               struct mlk_frame_delegate *dt)
-{
-	assert(frame);
+struct mlk_frame_style mlk_frame_style_light = {
+	.background = 0xf5f7faff,
+	.border = 0xcdd2daff,
+	.border_size = 2,
+	.draw = draw
+};
 
-	frame->x = 0;
-	frame->y = 0;
-	frame->w = 0;
-	frame->h = 0;
-	frame->style = st ? st : &mlk_style;
-	frame->delegate = dt ? dt : &mlk_frame_delegate;
-}
+struct mlk_frame_style *mlk_frame_style = &mlk_frame_style_light;
 
 void
 mlk_frame_update(struct mlk_frame *frame, unsigned int ticks)
 {
 	assert(frame);
 
-	if (frame->delegate->update)
-		frame->delegate->update(frame->delegate, frame, ticks);
+	MLK__STYLE_CALL(frame->style, mlk_frame_style, update, frame, ticks);
 }
 
 void
-mlk_frame_draw(const struct mlk_frame *frame)
+mlk_frame_draw(struct mlk_frame *frame)
 {
 	assert(frame);
 
-	if (frame->delegate->draw)
-		frame->delegate->draw(frame->delegate, frame);
+	MLK__STYLE_CALL(frame->style, mlk_frame_style, draw, frame);
 }
-
-void
-mlk_frame_finish(struct mlk_frame *frame)
-{
-	assert(frame);
-
-	if (frame->delegate->finish)
-		frame->delegate->finish(frame->delegate, frame);
-}