// ZcatguiBridge.h - Objective-C bridge header for zcatgui iOS backend // // Include this in your iOS project and link with the zcatgui static library. // See ZcatguiBridge.m for implementation. #ifndef ZCATGUI_BRIDGE_H #define ZCATGUI_BRIDGE_H #import #import // Event types (must match ios.zig) typedef NS_ENUM(uint32_t, ZcatguiEventType) { ZcatguiEventNone = 0, ZcatguiEventTouchDown = 1, ZcatguiEventTouchUp = 2, ZcatguiEventTouchMove = 3, ZcatguiEventKeyDown = 4, ZcatguiEventKeyUp = 5, ZcatguiEventResize = 6, ZcatguiEventQuit = 7, }; // Event structure typedef struct { ZcatguiEventType type; uint8_t data[64]; } ZcatguiEvent; // Bridge view that renders zcatgui framebuffer @interface ZcatguiView : UIView @property (nonatomic, readonly) CGSize framebufferSize; - (instancetype)initWithFrame:(CGRect)frame; - (void)presentPixels:(const uint32_t *)pixels width:(uint32_t)width height:(uint32_t)height; @end // Main view controller @interface ZcatguiViewController : UIViewController @property (nonatomic, strong) ZcatguiView *zcatguiView; @property (nonatomic, assign) BOOL running; - (void)startRenderLoop; - (void)stopRenderLoop; @end // Bridge functions called by Zig #ifdef __cplusplus extern "C" { #endif void ios_view_init(uint32_t width, uint32_t height); uint32_t ios_view_get_width(void); uint32_t ios_view_get_height(void); void ios_view_present(const uint32_t *pixels, uint32_t width, uint32_t height); uint32_t ios_poll_event(uint8_t *buffer); void ios_log(const uint8_t *ptr, size_t len); uint64_t ios_get_time_ms(void); #ifdef __cplusplus } #endif #endif // ZCATGUI_BRIDGE_H