const std = @import("std"); pub const c = @import("c.zig").c; pub const Window = opaque {}; pub const MessageBoxFlags = packed struct(u32) { messageboxError: bool = false, // error dialog messageboxWarning: bool = false, // warning dialog messageboxInformation: bool = false, // informational dialog messageboxButtonsLeftToRight: bool = false, // buttons placed left to right messageboxButtonsRightToLeft: bool = false, // buttons placed right to left pad0: u26 = 0, rsvd: bool = false, pub const None = MessageBoxFlags{}; }; pub const MessageBoxButtonFlags = packed struct(u32) { messageboxButtonReturnkeyDefault: bool = false, // Marks the default button when return is hit messageboxButtonEscapekeyDefault: bool = false, // Marks the default button when escape is hit pad0: u29 = 0, rsvd: bool = false, pub const None = MessageBoxButtonFlags{}; }; pub const MessageBoxButtonData = extern struct { flags: MessageBoxButtonFlags, buttonID: c_int, // User defined button id (value returned via SDL_ShowMessageBox) text: [*c]const u8, // The UTF-8 button text }; pub const MessageBoxColor = extern struct { r: u8, g: u8, b: u8, }; pub const MessageBoxColorType = enum(c_int) { messageboxColorBackground, messageboxColorText, messageboxColorButtonBorder, messageboxColorButtonBackground, messageboxColorButtonSelected, messageboxColorCount, //Size of the colors array of SDL_MessageBoxColorScheme. }; pub const MessageBoxColorScheme = extern struct { colors: [c.SDL_MESSAGEBOX_COLOR_COUNT]MessageBoxColor, }; pub const MessageBoxData = extern struct { flags: MessageBoxFlags, window: ?*Window, // Parent window, can be NULL title: [*c]const u8, // UTF-8 title message: [*c]const u8, // UTF-8 message text numbuttons: c_int, buttons: *const MessageBoxButtonData, colorScheme: *const MessageBoxColorScheme, // SDL_MessageBoxColorScheme, can be NULL to use system settings }; pub inline fn showMessageBox(messageboxdata: *const MessageBoxData, buttonid: *c_int) bool { return @bitCast(c.SDL_ShowMessageBox(@ptrCast(messageboxdata), @ptrCast(buttonid))); } pub inline fn showSimpleMessageBox(flags: MessageBoxFlags, title: [*c]const u8, message: [*c]const u8, window: ?*Window) bool { return @bitCast(c.SDL_ShowSimpleMessageBox(@bitCast(flags), title, message, @ptrCast(window))); }