#import "modules/std.sx";
#import "modules/ui/types.sx";
#import "modules/ui/events.sx";

FrameContext :: struct {
    viewport_w: f32;
    viewport_h: f32;
    pixel_w: i32;
    pixel_h: i32;
    dpi_scale: f32;
    delta_time: f32;
    // The host clock time at which the next vsync will present the frame
    // we're about to render. On iOS this is CADisplayLink.targetTimestamp;
    // forward it to MetalGPU.end_frame() to schedule presentDrawable:atTime:
    // so our drawable hits the same vsync as UIKit's compositor. Other
    // platforms leave it 0 (Metal then falls back to immediate present).
    target_present_time: f64;
}

KeyboardState :: struct {
    visible: bool;
    height: f32;

    zero :: () -> KeyboardState => .{ visible = false, height = 0.0 };
}
