// UIKitPlatform end-to-end smoke: boots the AppDelegate, installs an // SxGLView with a CAEAGLLayer + GLES3 context + CADisplayLink, polls // UITouch events into ui.Event, and on every vsync clears the screen // to a color that advances on each tap. // // Build + run: // sx build --target ios-sim examples/66-uikit-platform.sx \ // -o /tmp/SxUIKitBoot --bundle /tmp/SxUIKitBoot.app \ // --bundle-id co.swipelab.sxuikit -F ~/Library/Frameworks // xcrun simctl install booted /tmp/SxUIKitBoot.app // xcrun simctl launch --console booted co.swipelab.sxuikit // xcrun simctl io booted screenshot /tmp/screen.png #import "modules/std.sx"; #import "modules/std/uikit.sx"; #framework "OpenGLES"; #framework "QuartzCore"; #import "modules/opengl.sx"; #import "modules/ui/types.sx"; #import "modules/ui/events.sx"; #import "modules/platform/uikit.sx"; g_color_index : s64 = 0; tap_frame :: () { fc := g_uikit_plat.begin_frame(); events := g_uikit_plat.poll_events(); i : s64 = 0; while i < events.len { ev := events.ptr[i]; if ev == { case .mouse_down: { g_color_index += 1; } } i += 1; } phase := g_color_index % 3; r : f32 = if phase == 0 then 0.8 else 0.1; g : f32 = if phase == 1 then 0.8 else 0.1; b : f32 = if phase == 2 then 0.8 else 0.1; glViewport(0, 0, fc.pixel_w, fc.pixel_h); glClearColor(r, g, b, 1.0); glClear(GL_COLOR_BUFFER_BIT); g_uikit_plat.end_frame(); } main :: () -> void { plat : *UIKitPlatform = xx malloc(size_of(UIKitPlatform)); plat.init("SxUIKitPlatform", 0, 0); plat.run_frame_loop(closure(tap_frame)); }