Files
game/ui/view.sx
2026-02-24 19:22:05 +02:00

31 lines
775 B
Plaintext

#import "ui/types.sx";
#import "ui/render.sx";
#import "ui/events.sx";
View :: protocol {
// Measure: given a size proposal, return desired size
size_that_fits :: (proposal: ProposedSize) -> Size;
// Place: position children within the given bounds
layout :: (bounds: Frame);
// Render: emit render nodes
render :: (ctx: *RenderContext, frame: Frame);
// Event handling: return true if the event was consumed
handle_event :: (event: *Event, frame: Frame) -> bool;
}
// A child view with its computed frame (set during layout)
ViewChild :: struct {
view: View;
computed_frame: Frame;
make :: (view: View) -> ViewChild {
ViewChild.{
view = view,
computed_frame = Frame.zero()
};
}
}