summaryrefslogtreecommitdiffhomepage
path: root/src/raylib.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/raylib.zig')
-rw-r--r--src/raylib.zig8789
1 files changed, 8789 insertions, 0 deletions
diff --git a/src/raylib.zig b/src/raylib.zig
new file mode 100644
index 0000000..9d801c8
--- /dev/null
+++ b/src/raylib.zig
@@ -0,0 +1,8789 @@
+pub const __builtin_bswap16 = @import("std").zig.c_builtins.__builtin_bswap16;
+pub const __builtin_bswap32 = @import("std").zig.c_builtins.__builtin_bswap32;
+pub const __builtin_bswap64 = @import("std").zig.c_builtins.__builtin_bswap64;
+pub const __builtin_signbit = @import("std").zig.c_builtins.__builtin_signbit;
+pub const __builtin_signbitf = @import("std").zig.c_builtins.__builtin_signbitf;
+pub const __builtin_popcount = @import("std").zig.c_builtins.__builtin_popcount;
+pub const __builtin_ctz = @import("std").zig.c_builtins.__builtin_ctz;
+pub const __builtin_clz = @import("std").zig.c_builtins.__builtin_clz;
+pub const __builtin_sqrt = @import("std").zig.c_builtins.__builtin_sqrt;
+pub const __builtin_sqrtf = @import("std").zig.c_builtins.__builtin_sqrtf;
+pub const __builtin_sin = @import("std").zig.c_builtins.__builtin_sin;
+pub const __builtin_sinf = @import("std").zig.c_builtins.__builtin_sinf;
+pub const __builtin_cos = @import("std").zig.c_builtins.__builtin_cos;
+pub const __builtin_cosf = @import("std").zig.c_builtins.__builtin_cosf;
+pub const __builtin_exp = @import("std").zig.c_builtins.__builtin_exp;
+pub const __builtin_expf = @import("std").zig.c_builtins.__builtin_expf;
+pub const __builtin_exp2 = @import("std").zig.c_builtins.__builtin_exp2;
+pub const __builtin_exp2f = @import("std").zig.c_builtins.__builtin_exp2f;
+pub const __builtin_log = @import("std").zig.c_builtins.__builtin_log;
+pub const __builtin_logf = @import("std").zig.c_builtins.__builtin_logf;
+pub const __builtin_log2 = @import("std").zig.c_builtins.__builtin_log2;
+pub const __builtin_log2f = @import("std").zig.c_builtins.__builtin_log2f;
+pub const __builtin_log10 = @import("std").zig.c_builtins.__builtin_log10;
+pub const __builtin_log10f = @import("std").zig.c_builtins.__builtin_log10f;
+pub const __builtin_abs = @import("std").zig.c_builtins.__builtin_abs;
+pub const __builtin_fabs = @import("std").zig.c_builtins.__builtin_fabs;
+pub const __builtin_fabsf = @import("std").zig.c_builtins.__builtin_fabsf;
+pub const __builtin_floor = @import("std").zig.c_builtins.__builtin_floor;
+pub const __builtin_floorf = @import("std").zig.c_builtins.__builtin_floorf;
+pub const __builtin_ceil = @import("std").zig.c_builtins.__builtin_ceil;
+pub const __builtin_ceilf = @import("std").zig.c_builtins.__builtin_ceilf;
+pub const __builtin_trunc = @import("std").zig.c_builtins.__builtin_trunc;
+pub const __builtin_truncf = @import("std").zig.c_builtins.__builtin_truncf;
+pub const __builtin_round = @import("std").zig.c_builtins.__builtin_round;
+pub const __builtin_roundf = @import("std").zig.c_builtins.__builtin_roundf;
+pub const __builtin_strlen = @import("std").zig.c_builtins.__builtin_strlen;
+pub const __builtin_strcmp = @import("std").zig.c_builtins.__builtin_strcmp;
+pub const __builtin_object_size = @import("std").zig.c_builtins.__builtin_object_size;
+pub const __builtin___memset_chk = @import("std").zig.c_builtins.__builtin___memset_chk;
+pub const __builtin_memset = @import("std").zig.c_builtins.__builtin_memset;
+pub const __builtin___memcpy_chk = @import("std").zig.c_builtins.__builtin___memcpy_chk;
+pub const __builtin_memcpy = @import("std").zig.c_builtins.__builtin_memcpy;
+pub const __builtin_expect = @import("std").zig.c_builtins.__builtin_expect;
+pub const __builtin_nanf = @import("std").zig.c_builtins.__builtin_nanf;
+pub const __builtin_huge_valf = @import("std").zig.c_builtins.__builtin_huge_valf;
+pub const __builtin_inff = @import("std").zig.c_builtins.__builtin_inff;
+pub const __builtin_isnan = @import("std").zig.c_builtins.__builtin_isnan;
+pub const __builtin_isinf = @import("std").zig.c_builtins.__builtin_isinf;
+pub const __builtin_isinf_sign = @import("std").zig.c_builtins.__builtin_isinf_sign;
+pub const __has_builtin = @import("std").zig.c_builtins.__has_builtin;
+pub const __builtin_assume = @import("std").zig.c_builtins.__builtin_assume;
+pub const __builtin_unreachable = @import("std").zig.c_builtins.__builtin_unreachable;
+pub const __builtin_constant_p = @import("std").zig.c_builtins.__builtin_constant_p;
+pub const __builtin_mul_overflow = @import("std").zig.c_builtins.__builtin_mul_overflow;
+pub const struct___va_list_tag = extern struct {
+ gp_offset: c_uint,
+ fp_offset: c_uint,
+ overflow_arg_area: ?*anyopaque,
+ reg_save_area: ?*anyopaque,
+};
+pub const __builtin_va_list = [1]struct___va_list_tag;
+pub const va_list = __builtin_va_list;
+pub const __gnuc_va_list = __builtin_va_list;
+pub const struct_Vector2 = extern struct {
+ x: f32,
+ y: f32,
+};
+pub const Vector2 = struct_Vector2;
+pub const struct_Vector3 = extern struct {
+ x: f32,
+ y: f32,
+ z: f32,
+};
+pub const Vector3 = struct_Vector3;
+pub const struct_Vector4 = extern struct {
+ x: f32,
+ y: f32,
+ z: f32,
+ w: f32,
+};
+pub const Vector4 = struct_Vector4;
+pub const Quaternion = Vector4;
+pub const struct_Matrix = extern struct {
+ m0: f32,
+ m4: f32,
+ m8: f32,
+ m12: f32,
+ m1: f32,
+ m5: f32,
+ m9: f32,
+ m13: f32,
+ m2: f32,
+ m6: f32,
+ m10: f32,
+ m14: f32,
+ m3: f32,
+ m7: f32,
+ m11: f32,
+ m15: f32,
+};
+pub const Matrix = struct_Matrix;
+pub const struct_Color = extern struct {
+ r: u8,
+ g: u8,
+ b: u8,
+ a: u8,
+};
+pub const Color = struct_Color;
+pub const struct_Rectangle = extern struct {
+ x: f32,
+ y: f32,
+ width: f32,
+ height: f32,
+};
+pub const Rectangle = struct_Rectangle;
+pub const struct_Image = extern struct {
+ data: ?*anyopaque,
+ width: c_int,
+ height: c_int,
+ mipmaps: c_int,
+ format: c_int,
+};
+pub const Image = struct_Image;
+pub const struct_Texture = extern struct {
+ id: c_uint,
+ width: c_int,
+ height: c_int,
+ mipmaps: c_int,
+ format: c_int,
+};
+pub const Texture = struct_Texture;
+pub const Texture2D = Texture;
+pub const TextureCubemap = Texture;
+pub const struct_RenderTexture = extern struct {
+ id: c_uint,
+ texture: Texture,
+ depth: Texture,
+};
+pub const RenderTexture = struct_RenderTexture;
+pub const RenderTexture2D = RenderTexture;
+pub const struct_NPatchInfo = extern struct {
+ source: Rectangle,
+ left: c_int,
+ top: c_int,
+ right: c_int,
+ bottom: c_int,
+ layout: c_int,
+};
+pub const NPatchInfo = struct_NPatchInfo;
+pub const struct_GlyphInfo = extern struct {
+ value: c_int,
+ offsetX: c_int,
+ offsetY: c_int,
+ advanceX: c_int,
+ image: Image,
+};
+pub const GlyphInfo = struct_GlyphInfo;
+pub const struct_Font = extern struct {
+ baseSize: c_int,
+ glyphCount: c_int,
+ glyphPadding: c_int,
+ texture: Texture2D,
+ recs: [*c]Rectangle,
+ glyphs: [*c]GlyphInfo,
+};
+pub const Font = struct_Font;
+pub const struct_Camera3D = extern struct {
+ position: Vector3,
+ target: Vector3,
+ up: Vector3,
+ fovy: f32,
+ projection: c_int,
+};
+pub const Camera3D = struct_Camera3D;
+pub const Camera = Camera3D;
+pub const struct_Camera2D = extern struct {
+ offset: Vector2,
+ target: Vector2,
+ rotation: f32,
+ zoom: f32,
+};
+pub const Camera2D = struct_Camera2D;
+pub const struct_Mesh = extern struct {
+ vertexCount: c_int,
+ triangleCount: c_int,
+ vertices: [*c]f32,
+ texcoords: [*c]f32,
+ texcoords2: [*c]f32,
+ normals: [*c]f32,
+ tangents: [*c]f32,
+ colors: [*c]u8,
+ indices: [*c]c_ushort,
+ animVertices: [*c]f32,
+ animNormals: [*c]f32,
+ boneIds: [*c]u8,
+ boneWeights: [*c]f32,
+ vaoId: c_uint,
+ vboId: [*c]c_uint,
+};
+pub const Mesh = struct_Mesh;
+pub const struct_Shader = extern struct {
+ id: c_uint,
+ locs: [*c]c_int,
+};
+pub const Shader = struct_Shader;
+pub const struct_MaterialMap = extern struct {
+ texture: Texture2D,
+ color: Color,
+ value: f32,
+};
+pub const MaterialMap = struct_MaterialMap;
+pub const struct_Material = extern struct {
+ shader: Shader,
+ maps: [*c]MaterialMap,
+ params: [4]f32,
+};
+pub const Material = struct_Material;
+pub const struct_Transform = extern struct {
+ translation: Vector3,
+ rotation: Quaternion,
+ scale: Vector3,
+};
+pub const Transform = struct_Transform;
+pub const struct_BoneInfo = extern struct {
+ name: [32]u8,
+ parent: c_int,
+};
+pub const BoneInfo = struct_BoneInfo;
+pub const struct_Model = extern struct {
+ transform: Matrix,
+ meshCount: c_int,
+ materialCount: c_int,
+ meshes: [*c]Mesh,
+ materials: [*c]Material,
+ meshMaterial: [*c]c_int,
+ boneCount: c_int,
+ bones: [*c]BoneInfo,
+ bindPose: [*c]Transform,
+};
+pub const Model = struct_Model;
+pub const struct_ModelAnimation = extern struct {
+ boneCount: c_int,
+ frameCount: c_int,
+ bones: [*c]BoneInfo,
+ framePoses: [*c][*c]Transform,
+};
+pub const ModelAnimation = struct_ModelAnimation;
+pub const struct_Ray = extern struct {
+ position: Vector3,
+ direction: Vector3,
+};
+pub const Ray = struct_Ray;
+pub const struct_RayCollision = extern struct {
+ hit: bool,
+ distance: f32,
+ point: Vector3,
+ normal: Vector3,
+};
+pub const RayCollision = struct_RayCollision;
+pub const struct_BoundingBox = extern struct {
+ min: Vector3,
+ max: Vector3,
+};
+pub const BoundingBox = struct_BoundingBox;
+pub const struct_Wave = extern struct {
+ frameCount: c_uint,
+ sampleRate: c_uint,
+ sampleSize: c_uint,
+ channels: c_uint,
+ data: ?*anyopaque,
+};
+pub const Wave = struct_Wave;
+pub const struct_rAudioBuffer = opaque {};
+pub const rAudioBuffer = struct_rAudioBuffer;
+pub const struct_rAudioProcessor = opaque {};
+pub const rAudioProcessor = struct_rAudioProcessor;
+pub const struct_AudioStream = extern struct {
+ buffer: ?*rAudioBuffer,
+ processor: ?*rAudioProcessor,
+ sampleRate: c_uint,
+ sampleSize: c_uint,
+ channels: c_uint,
+};
+pub const AudioStream = struct_AudioStream;
+pub const struct_Sound = extern struct {
+ stream: AudioStream,
+ frameCount: c_uint,
+};
+pub const Sound = struct_Sound;
+pub const struct_Music = extern struct {
+ stream: AudioStream,
+ frameCount: c_uint,
+ looping: bool,
+ ctxType: c_int,
+ ctxData: ?*anyopaque,
+};
+pub const Music = struct_Music;
+pub const struct_VrDeviceInfo = extern struct {
+ hResolution: c_int,
+ vResolution: c_int,
+ hScreenSize: f32,
+ vScreenSize: f32,
+ vScreenCenter: f32,
+ eyeToScreenDistance: f32,
+ lensSeparationDistance: f32,
+ interpupillaryDistance: f32,
+ lensDistortionValues: [4]f32,
+ chromaAbCorrection: [4]f32,
+};
+pub const VrDeviceInfo = struct_VrDeviceInfo;
+pub const struct_VrStereoConfig = extern struct {
+ projection: [2]Matrix,
+ viewOffset: [2]Matrix,
+ leftLensCenter: [2]f32,
+ rightLensCenter: [2]f32,
+ leftScreenCenter: [2]f32,
+ rightScreenCenter: [2]f32,
+ scale: [2]f32,
+ scaleIn: [2]f32,
+};
+pub const VrStereoConfig = struct_VrStereoConfig;
+pub const FLAG_VSYNC_HINT: c_int = 64;
+pub const FLAG_FULLSCREEN_MODE: c_int = 2;
+pub const FLAG_WINDOW_RESIZABLE: c_int = 4;
+pub const FLAG_WINDOW_UNDECORATED: c_int = 8;
+pub const FLAG_WINDOW_HIDDEN: c_int = 128;
+pub const FLAG_WINDOW_MINIMIZED: c_int = 512;
+pub const FLAG_WINDOW_MAXIMIZED: c_int = 1024;
+pub const FLAG_WINDOW_UNFOCUSED: c_int = 2048;
+pub const FLAG_WINDOW_TOPMOST: c_int = 4096;
+pub const FLAG_WINDOW_ALWAYS_RUN: c_int = 256;
+pub const FLAG_WINDOW_TRANSPARENT: c_int = 16;
+pub const FLAG_WINDOW_HIGHDPI: c_int = 8192;
+pub const FLAG_MSAA_4X_HINT: c_int = 32;
+pub const FLAG_INTERLACED_HINT: c_int = 65536;
+pub const ConfigFlags = c_uint;
+pub const LOG_ALL: c_int = 0;
+pub const LOG_TRACE: c_int = 1;
+pub const LOG_DEBUG: c_int = 2;
+pub const LOG_INFO: c_int = 3;
+pub const LOG_WARNING: c_int = 4;
+pub const LOG_ERROR: c_int = 5;
+pub const LOG_FATAL: c_int = 6;
+pub const LOG_NONE: c_int = 7;
+pub const TraceLogLevel = c_uint;
+pub const KEY_NULL: c_int = 0;
+pub const KEY_APOSTROPHE: c_int = 39;
+pub const KEY_COMMA: c_int = 44;
+pub const KEY_MINUS: c_int = 45;
+pub const KEY_PERIOD: c_int = 46;
+pub const KEY_SLASH: c_int = 47;
+pub const KEY_ZERO: c_int = 48;
+pub const KEY_ONE: c_int = 49;
+pub const KEY_TWO: c_int = 50;
+pub const KEY_THREE: c_int = 51;
+pub const KEY_FOUR: c_int = 52;
+pub const KEY_FIVE: c_int = 53;
+pub const KEY_SIX: c_int = 54;
+pub const KEY_SEVEN: c_int = 55;
+pub const KEY_EIGHT: c_int = 56;
+pub const KEY_NINE: c_int = 57;
+pub const KEY_SEMICOLON: c_int = 59;
+pub const KEY_EQUAL: c_int = 61;
+pub const KEY_A: c_int = 65;
+pub const KEY_B: c_int = 66;
+pub const KEY_C: c_int = 67;
+pub const KEY_D: c_int = 68;
+pub const KEY_E: c_int = 69;
+pub const KEY_F: c_int = 70;
+pub const KEY_G: c_int = 71;
+pub const KEY_H: c_int = 72;
+pub const KEY_I: c_int = 73;
+pub const KEY_J: c_int = 74;
+pub const KEY_K: c_int = 75;
+pub const KEY_L: c_int = 76;
+pub const KEY_M: c_int = 77;
+pub const KEY_N: c_int = 78;
+pub const KEY_O: c_int = 79;
+pub const KEY_P: c_int = 80;
+pub const KEY_Q: c_int = 81;
+pub const KEY_R: c_int = 82;
+pub const KEY_S: c_int = 83;
+pub const KEY_T: c_int = 84;
+pub const KEY_U: c_int = 85;
+pub const KEY_V: c_int = 86;
+pub const KEY_W: c_int = 87;
+pub const KEY_X: c_int = 88;
+pub const KEY_Y: c_int = 89;
+pub const KEY_Z: c_int = 90;
+pub const KEY_LEFT_BRACKET: c_int = 91;
+pub const KEY_BACKSLASH: c_int = 92;
+pub const KEY_RIGHT_BRACKET: c_int = 93;
+pub const KEY_GRAVE: c_int = 96;
+pub const KEY_SPACE: c_int = 32;
+pub const KEY_ESCAPE: c_int = 256;
+pub const KEY_ENTER: c_int = 257;
+pub const KEY_TAB: c_int = 258;
+pub const KEY_BACKSPACE: c_int = 259;
+pub const KEY_INSERT: c_int = 260;
+pub const KEY_DELETE: c_int = 261;
+pub const KEY_RIGHT: c_int = 262;
+pub const KEY_LEFT: c_int = 263;
+pub const KEY_DOWN: c_int = 264;
+pub const KEY_UP: c_int = 265;
+pub const KEY_PAGE_UP: c_int = 266;
+pub const KEY_PAGE_DOWN: c_int = 267;
+pub const KEY_HOME: c_int = 268;
+pub const KEY_END: c_int = 269;
+pub const KEY_CAPS_LOCK: c_int = 280;
+pub const KEY_SCROLL_LOCK: c_int = 281;
+pub const KEY_NUM_LOCK: c_int = 282;
+pub const KEY_PRINT_SCREEN: c_int = 283;
+pub const KEY_PAUSE: c_int = 284;
+pub const KEY_F1: c_int = 290;
+pub const KEY_F2: c_int = 291;
+pub const KEY_F3: c_int = 292;
+pub const KEY_F4: c_int = 293;
+pub const KEY_F5: c_int = 294;
+pub const KEY_F6: c_int = 295;
+pub const KEY_F7: c_int = 296;
+pub const KEY_F8: c_int = 297;
+pub const KEY_F9: c_int = 298;
+pub const KEY_F10: c_int = 299;
+pub const KEY_F11: c_int = 300;
+pub const KEY_F12: c_int = 301;
+pub const KEY_LEFT_SHIFT: c_int = 340;
+pub const KEY_LEFT_CONTROL: c_int = 341;
+pub const KEY_LEFT_ALT: c_int = 342;
+pub const KEY_LEFT_SUPER: c_int = 343;
+pub const KEY_RIGHT_SHIFT: c_int = 344;
+pub const KEY_RIGHT_CONTROL: c_int = 345;
+pub const KEY_RIGHT_ALT: c_int = 346;
+pub const KEY_RIGHT_SUPER: c_int = 347;
+pub const KEY_KB_MENU: c_int = 348;
+pub const KEY_KP_0: c_int = 320;
+pub const KEY_KP_1: c_int = 321;
+pub const KEY_KP_2: c_int = 322;
+pub const KEY_KP_3: c_int = 323;
+pub const KEY_KP_4: c_int = 324;
+pub const KEY_KP_5: c_int = 325;
+pub const KEY_KP_6: c_int = 326;
+pub const KEY_KP_7: c_int = 327;
+pub const KEY_KP_8: c_int = 328;
+pub const KEY_KP_9: c_int = 329;
+pub const KEY_KP_DECIMAL: c_int = 330;
+pub const KEY_KP_DIVIDE: c_int = 331;
+pub const KEY_KP_MULTIPLY: c_int = 332;
+pub const KEY_KP_SUBTRACT: c_int = 333;
+pub const KEY_KP_ADD: c_int = 334;
+pub const KEY_KP_ENTER: c_int = 335;
+pub const KEY_KP_EQUAL: c_int = 336;
+pub const KEY_BACK: c_int = 4;
+pub const KEY_MENU: c_int = 82;
+pub const KEY_VOLUME_UP: c_int = 24;
+pub const KEY_VOLUME_DOWN: c_int = 25;
+pub const KeyboardKey = c_uint;
+pub const MOUSE_BUTTON_LEFT: c_int = 0;
+pub const MOUSE_BUTTON_RIGHT: c_int = 1;
+pub const MOUSE_BUTTON_MIDDLE: c_int = 2;
+pub const MOUSE_BUTTON_SIDE: c_int = 3;
+pub const MOUSE_BUTTON_EXTRA: c_int = 4;
+pub const MOUSE_BUTTON_FORWARD: c_int = 5;
+pub const MOUSE_BUTTON_BACK: c_int = 6;
+pub const MouseButton = c_uint;
+pub const MOUSE_CURSOR_DEFAULT: c_int = 0;
+pub const MOUSE_CURSOR_ARROW: c_int = 1;
+pub const MOUSE_CURSOR_IBEAM: c_int = 2;
+pub const MOUSE_CURSOR_CROSSHAIR: c_int = 3;
+pub const MOUSE_CURSOR_POINTING_HAND: c_int = 4;
+pub const MOUSE_CURSOR_RESIZE_EW: c_int = 5;
+pub const MOUSE_CURSOR_RESIZE_NS: c_int = 6;
+pub const MOUSE_CURSOR_RESIZE_NWSE: c_int = 7;
+pub const MOUSE_CURSOR_RESIZE_NESW: c_int = 8;
+pub const MOUSE_CURSOR_RESIZE_ALL: c_int = 9;
+pub const MOUSE_CURSOR_NOT_ALLOWED: c_int = 10;
+pub const MouseCursor = c_uint;
+pub const GAMEPAD_BUTTON_UNKNOWN: c_int = 0;
+pub const GAMEPAD_BUTTON_LEFT_FACE_UP: c_int = 1;
+pub const GAMEPAD_BUTTON_LEFT_FACE_RIGHT: c_int = 2;
+pub const GAMEPAD_BUTTON_LEFT_FACE_DOWN: c_int = 3;
+pub const GAMEPAD_BUTTON_LEFT_FACE_LEFT: c_int = 4;
+pub const GAMEPAD_BUTTON_RIGHT_FACE_UP: c_int = 5;
+pub const GAMEPAD_BUTTON_RIGHT_FACE_RIGHT: c_int = 6;
+pub const GAMEPAD_BUTTON_RIGHT_FACE_DOWN: c_int = 7;
+pub const GAMEPAD_BUTTON_RIGHT_FACE_LEFT: c_int = 8;
+pub const GAMEPAD_BUTTON_LEFT_TRIGGER_1: c_int = 9;
+pub const GAMEPAD_BUTTON_LEFT_TRIGGER_2: c_int = 10;
+pub const GAMEPAD_BUTTON_RIGHT_TRIGGER_1: c_int = 11;
+pub const GAMEPAD_BUTTON_RIGHT_TRIGGER_2: c_int = 12;
+pub const GAMEPAD_BUTTON_MIDDLE_LEFT: c_int = 13;
+pub const GAMEPAD_BUTTON_MIDDLE: c_int = 14;
+pub const GAMEPAD_BUTTON_MIDDLE_RIGHT: c_int = 15;
+pub const GAMEPAD_BUTTON_LEFT_THUMB: c_int = 16;
+pub const GAMEPAD_BUTTON_RIGHT_THUMB: c_int = 17;
+pub const GamepadButton = c_uint;
+pub const GAMEPAD_AXIS_LEFT_X: c_int = 0;
+pub const GAMEPAD_AXIS_LEFT_Y: c_int = 1;
+pub const GAMEPAD_AXIS_RIGHT_X: c_int = 2;
+pub const GAMEPAD_AXIS_RIGHT_Y: c_int = 3;
+pub const GAMEPAD_AXIS_LEFT_TRIGGER: c_int = 4;
+pub const GAMEPAD_AXIS_RIGHT_TRIGGER: c_int = 5;
+pub const GamepadAxis = c_uint;
+pub const MATERIAL_MAP_ALBEDO: c_int = 0;
+pub const MATERIAL_MAP_METALNESS: c_int = 1;
+pub const MATERIAL_MAP_NORMAL: c_int = 2;
+pub const MATERIAL_MAP_ROUGHNESS: c_int = 3;
+pub const MATERIAL_MAP_OCCLUSION: c_int = 4;
+pub const MATERIAL_MAP_EMISSION: c_int = 5;
+pub const MATERIAL_MAP_HEIGHT: c_int = 6;
+pub const MATERIAL_MAP_CUBEMAP: c_int = 7;
+pub const MATERIAL_MAP_IRRADIANCE: c_int = 8;
+pub const MATERIAL_MAP_PREFILTER: c_int = 9;
+pub const MATERIAL_MAP_BRDF: c_int = 10;
+pub const MaterialMapIndex = c_uint;
+pub const SHADER_LOC_VERTEX_POSITION: c_int = 0;
+pub const SHADER_LOC_VERTEX_TEXCOORD01: c_int = 1;
+pub const SHADER_LOC_VERTEX_TEXCOORD02: c_int = 2;
+pub const SHADER_LOC_VERTEX_NORMAL: c_int = 3;
+pub const SHADER_LOC_VERTEX_TANGENT: c_int = 4;
+pub const SHADER_LOC_VERTEX_COLOR: c_int = 5;
+pub const SHADER_LOC_MATRIX_MVP: c_int = 6;
+pub const SHADER_LOC_MATRIX_VIEW: c_int = 7;
+pub const SHADER_LOC_MATRIX_PROJECTION: c_int = 8;
+pub const SHADER_LOC_MATRIX_MODEL: c_int = 9;
+pub const SHADER_LOC_MATRIX_NORMAL: c_int = 10;
+pub const SHADER_LOC_VECTOR_VIEW: c_int = 11;
+pub const SHADER_LOC_COLOR_DIFFUSE: c_int = 12;
+pub const SHADER_LOC_COLOR_SPECULAR: c_int = 13;
+pub const SHADER_LOC_COLOR_AMBIENT: c_int = 14;
+pub const SHADER_LOC_MAP_ALBEDO: c_int = 15;
+pub const SHADER_LOC_MAP_METALNESS: c_int = 16;
+pub const SHADER_LOC_MAP_NORMAL: c_int = 17;
+pub const SHADER_LOC_MAP_ROUGHNESS: c_int = 18;
+pub const SHADER_LOC_MAP_OCCLUSION: c_int = 19;
+pub const SHADER_LOC_MAP_EMISSION: c_int = 20;
+pub const SHADER_LOC_MAP_HEIGHT: c_int = 21;
+pub const SHADER_LOC_MAP_CUBEMAP: c_int = 22;
+pub const SHADER_LOC_MAP_IRRADIANCE: c_int = 23;
+pub const SHADER_LOC_MAP_PREFILTER: c_int = 24;
+pub const SHADER_LOC_MAP_BRDF: c_int = 25;
+pub const ShaderLocationIndex = c_uint;
+pub const SHADER_UNIFORM_FLOAT: c_int = 0;
+pub const SHADER_UNIFORM_VEC2: c_int = 1;
+pub const SHADER_UNIFORM_VEC3: c_int = 2;
+pub const SHADER_UNIFORM_VEC4: c_int = 3;
+pub const SHADER_UNIFORM_INT: c_int = 4;
+pub const SHADER_UNIFORM_IVEC2: c_int = 5;
+pub const SHADER_UNIFORM_IVEC3: c_int = 6;
+pub const SHADER_UNIFORM_IVEC4: c_int = 7;
+pub const SHADER_UNIFORM_SAMPLER2D: c_int = 8;
+pub const ShaderUniformDataType = c_uint;
+pub const SHADER_ATTRIB_FLOAT: c_int = 0;
+pub const SHADER_ATTRIB_VEC2: c_int = 1;
+pub const SHADER_ATTRIB_VEC3: c_int = 2;
+pub const SHADER_ATTRIB_VEC4: c_int = 3;
+pub const ShaderAttributeDataType = c_uint;
+pub const PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: c_int = 1;
+pub const PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: c_int = 2;
+pub const PIXELFORMAT_UNCOMPRESSED_R5G6B5: c_int = 3;
+pub const PIXELFORMAT_UNCOMPRESSED_R8G8B8: c_int = 4;
+pub const PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: c_int = 5;
+pub const PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: c_int = 6;
+pub const PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: c_int = 7;
+pub const PIXELFORMAT_UNCOMPRESSED_R32: c_int = 8;
+pub const PIXELFORMAT_UNCOMPRESSED_R32G32B32: c_int = 9;
+pub const PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: c_int = 10;
+pub const PIXELFORMAT_COMPRESSED_DXT1_RGB: c_int = 11;
+pub const PIXELFORMAT_COMPRESSED_DXT1_RGBA: c_int = 12;
+pub const PIXELFORMAT_COMPRESSED_DXT3_RGBA: c_int = 13;
+pub const PIXELFORMAT_COMPRESSED_DXT5_RGBA: c_int = 14;
+pub const PIXELFORMAT_COMPRESSED_ETC1_RGB: c_int = 15;
+pub const PIXELFORMAT_COMPRESSED_ETC2_RGB: c_int = 16;
+pub const PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: c_int = 17;
+pub const PIXELFORMAT_COMPRESSED_PVRT_RGB: c_int = 18;
+pub const PIXELFORMAT_COMPRESSED_PVRT_RGBA: c_int = 19;
+pub const PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: c_int = 20;
+pub const PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: c_int = 21;
+pub const PixelFormat = c_uint;
+pub const TEXTURE_FILTER_POINT: c_int = 0;
+pub const TEXTURE_FILTER_BILINEAR: c_int = 1;
+pub const TEXTURE_FILTER_TRILINEAR: c_int = 2;
+pub const TEXTURE_FILTER_ANISOTROPIC_4X: c_int = 3;
+pub const TEXTURE_FILTER_ANISOTROPIC_8X: c_int = 4;
+pub const TEXTURE_FILTER_ANISOTROPIC_16X: c_int = 5;
+pub const TextureFilter = c_uint;
+pub const TEXTURE_WRAP_REPEAT: c_int = 0;
+pub const TEXTURE_WRAP_CLAMP: c_int = 1;
+pub const TEXTURE_WRAP_MIRROR_REPEAT: c_int = 2;
+pub const TEXTURE_WRAP_MIRROR_CLAMP: c_int = 3;
+pub const TextureWrap = c_uint;
+pub const CUBEMAP_LAYOUT_AUTO_DETECT: c_int = 0;
+pub const CUBEMAP_LAYOUT_LINE_VERTICAL: c_int = 1;
+pub const CUBEMAP_LAYOUT_LINE_HORIZONTAL: c_int = 2;
+pub const CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR: c_int = 3;
+pub const CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE: c_int = 4;
+pub const CUBEMAP_LAYOUT_PANORAMA: c_int = 5;
+pub const CubemapLayout = c_uint;
+pub const FONT_DEFAULT: c_int = 0;
+pub const FONT_BITMAP: c_int = 1;
+pub const FONT_SDF: c_int = 2;
+pub const FontType = c_uint;
+pub const BLEND_ALPHA: c_int = 0;
+pub const BLEND_ADDITIVE: c_int = 1;
+pub const BLEND_MULTIPLIED: c_int = 2;
+pub const BLEND_ADD_COLORS: c_int = 3;
+pub const BLEND_SUBTRACT_COLORS: c_int = 4;
+pub const BLEND_ALPHA_PREMUL: c_int = 5;
+pub const BLEND_CUSTOM: c_int = 6;
+pub const BlendMode = c_uint;
+pub const GESTURE_NONE: c_int = 0;
+pub const GESTURE_TAP: c_int = 1;
+pub const GESTURE_DOUBLETAP: c_int = 2;
+pub const GESTURE_HOLD: c_int = 4;
+pub const GESTURE_DRAG: c_int = 8;
+pub const GESTURE_SWIPE_RIGHT: c_int = 16;
+pub const GESTURE_SWIPE_LEFT: c_int = 32;
+pub const GESTURE_SWIPE_UP: c_int = 64;
+pub const GESTURE_SWIPE_DOWN: c_int = 128;
+pub const GESTURE_PINCH_IN: c_int = 256;
+pub const GESTURE_PINCH_OUT: c_int = 512;
+pub const Gesture = c_uint;
+pub const CAMERA_CUSTOM: c_int = 0;
+pub const CAMERA_FREE: c_int = 1;
+pub const CAMERA_ORBITAL: c_int = 2;
+pub const CAMERA_FIRST_PERSON: c_int = 3;
+pub const CAMERA_THIRD_PERSON: c_int = 4;
+pub const CameraMode = c_uint;
+pub const CAMERA_PERSPECTIVE: c_int = 0;
+pub const CAMERA_ORTHOGRAPHIC: c_int = 1;
+pub const CameraProjection = c_uint;
+pub const NPATCH_NINE_PATCH: c_int = 0;
+pub const NPATCH_THREE_PATCH_VERTICAL: c_int = 1;
+pub const NPATCH_THREE_PATCH_HORIZONTAL: c_int = 2;
+pub const NPatchLayout = c_uint;
+pub const TraceLogCallback = ?fn (c_int, [*c]const u8, [*c]struct___va_list_tag) callconv(.C) void;
+pub const LoadFileDataCallback = ?fn ([*c]const u8, [*c]c_uint) callconv(.C) [*c]u8;
+pub const SaveFileDataCallback = ?fn ([*c]const u8, ?*anyopaque, c_uint) callconv(.C) bool;
+pub const LoadFileTextCallback = ?fn ([*c]const u8) callconv(.C) [*c]u8;
+pub const SaveFileTextCallback = ?fn ([*c]const u8, [*c]u8) callconv(.C) bool;
+pub extern fn InitWindow(width: c_int, height: c_int, title: [*c]const u8) void;
+pub extern fn WindowShouldClose() bool;
+pub extern fn CloseWindow() void;
+pub extern fn IsWindowReady() bool;
+pub extern fn IsWindowFullscreen() bool;
+pub extern fn IsWindowHidden() bool;
+pub extern fn IsWindowMinimized() bool;
+pub extern fn IsWindowMaximized() bool;
+pub extern fn IsWindowFocused() bool;
+pub extern fn IsWindowResized() bool;
+pub extern fn IsWindowState(flag: c_uint) bool;
+pub extern fn SetWindowState(flags: c_uint) void;
+pub extern fn ClearWindowState(flags: c_uint) void;
+pub extern fn ToggleFullscreen() void;
+pub extern fn MaximizeWindow() void;
+pub extern fn MinimizeWindow() void;
+pub extern fn RestoreWindow() void;
+pub extern fn SetWindowIcon(image: Image) void;
+pub extern fn SetWindowTitle(title: [*c]const u8) void;
+pub extern fn SetWindowPosition(x: c_int, y: c_int) void;
+pub extern fn SetWindowMonitor(monitor: c_int) void;
+pub extern fn SetWindowMinSize(width: c_int, height: c_int) void;
+pub extern fn SetWindowSize(width: c_int, height: c_int) void;
+pub extern fn SetWindowOpacity(opacity: f32) void;
+pub extern fn GetWindowHandle() ?*anyopaque;
+pub extern fn GetScreenWidth() c_int;
+pub extern fn GetScreenHeight() c_int;
+pub extern fn GetRenderWidth() c_int;
+pub extern fn GetRenderHeight() c_int;
+pub extern fn GetMonitorCount() c_int;
+pub extern fn GetCurrentMonitor() c_int;
+pub extern fn GetMonitorPosition(monitor: c_int) Vector2;
+pub extern fn GetMonitorWidth(monitor: c_int) c_int;
+pub extern fn GetMonitorHeight(monitor: c_int) c_int;
+pub extern fn GetMonitorPhysicalWidth(monitor: c_int) c_int;
+pub extern fn GetMonitorPhysicalHeight(monitor: c_int) c_int;
+pub extern fn GetMonitorRefreshRate(monitor: c_int) c_int;
+pub extern fn GetWindowPosition() Vector2;
+pub extern fn GetWindowScaleDPI() Vector2;
+pub extern fn GetMonitorName(monitor: c_int) [*c]const u8;
+pub extern fn SetClipboardText(text: [*c]const u8) void;
+pub extern fn GetClipboardText() [*c]const u8;
+pub extern fn SwapScreenBuffer() void;
+pub extern fn PollInputEvents() void;
+pub extern fn WaitTime(ms: f32) void;
+pub extern fn ShowCursor() void;
+pub extern fn HideCursor() void;
+pub extern fn IsCursorHidden() bool;
+pub extern fn EnableCursor() void;
+pub extern fn DisableCursor() void;
+pub extern fn IsCursorOnScreen() bool;
+pub extern fn ClearBackground(color: Color) void;
+pub extern fn BeginDrawing() void;
+pub extern fn EndDrawing() void;
+pub extern fn BeginMode2D(camera: Camera2D) void;
+pub extern fn EndMode2D() void;
+pub extern fn BeginMode3D(camera: Camera3D) void;
+pub extern fn EndMode3D() void;
+pub extern fn BeginTextureMode(target: RenderTexture2D) void;
+pub extern fn EndTextureMode() void;
+pub extern fn BeginShaderMode(shader: Shader) void;
+pub extern fn EndShaderMode() void;
+pub extern fn BeginBlendMode(mode: c_int) void;
+pub extern fn EndBlendMode() void;
+pub extern fn BeginScissorMode(x: c_int, y: c_int, width: c_int, height: c_int) void;
+pub extern fn EndScissorMode() void;
+pub extern fn BeginVrStereoMode(config: VrStereoConfig) void;
+pub extern fn EndVrStereoMode() void;
+pub extern fn LoadVrStereoConfig(device: VrDeviceInfo) VrStereoConfig;
+pub extern fn UnloadVrStereoConfig(config: VrStereoConfig) void;
+pub extern fn LoadShader(vsFileName: [*c]const u8, fsFileName: [*c]const u8) Shader;
+pub extern fn LoadShaderFromMemory(vsCode: [*c]const u8, fsCode: [*c]const u8) Shader;
+pub extern fn GetShaderLocation(shader: Shader, uniformName: [*c]const u8) c_int;
+pub extern fn GetShaderLocationAttrib(shader: Shader, attribName: [*c]const u8) c_int;
+pub extern fn SetShaderValue(shader: Shader, locIndex: c_int, value: ?*const anyopaque, uniformType: c_int) void;
+pub extern fn SetShaderValueV(shader: Shader, locIndex: c_int, value: ?*const anyopaque, uniformType: c_int, count: c_int) void;
+pub extern fn SetShaderValueMatrix(shader: Shader, locIndex: c_int, mat: Matrix) void;
+pub extern fn SetShaderValueTexture(shader: Shader, locIndex: c_int, texture: Texture2D) void;
+pub extern fn UnloadShader(shader: Shader) void;
+pub extern fn GetMouseRay(mousePosition: Vector2, camera: Camera) Ray;
+pub extern fn GetCameraMatrix(camera: Camera) Matrix;
+pub extern fn GetCameraMatrix2D(camera: Camera2D) Matrix;
+pub extern fn GetWorldToScreen(position: Vector3, camera: Camera) Vector2;
+pub extern fn GetWorldToScreenEx(position: Vector3, camera: Camera, width: c_int, height: c_int) Vector2;
+pub extern fn GetWorldToScreen2D(position: Vector2, camera: Camera2D) Vector2;
+pub extern fn GetScreenToWorld2D(position: Vector2, camera: Camera2D) Vector2;
+pub extern fn SetTargetFPS(fps: c_int) void;
+pub extern fn GetFPS() c_int;
+pub extern fn GetFrameTime() f32;
+pub extern fn GetTime() f64;
+pub extern fn GetRandomValue(min: c_int, max: c_int) c_int;
+pub extern fn SetRandomSeed(seed: c_uint) void;
+pub extern fn TakeScreenshot(fileName: [*c]const u8) void;
+pub extern fn SetConfigFlags(flags: c_uint) void;
+pub extern fn TraceLog(logLevel: c_int, text: [*c]const u8, ...) void;
+pub extern fn SetTraceLogLevel(logLevel: c_int) void;
+pub extern fn MemAlloc(size: c_int) ?*anyopaque;
+pub extern fn MemRealloc(ptr: ?*anyopaque, size: c_int) ?*anyopaque;
+pub extern fn MemFree(ptr: ?*anyopaque) void;
+pub extern fn SetTraceLogCallback(callback: TraceLogCallback) void;
+pub extern fn SetLoadFileDataCallback(callback: LoadFileDataCallback) void;
+pub extern fn SetSaveFileDataCallback(callback: SaveFileDataCallback) void;
+pub extern fn SetLoadFileTextCallback(callback: LoadFileTextCallback) void;
+pub extern fn SetSaveFileTextCallback(callback: SaveFileTextCallback) void;
+pub extern fn LoadFileData(fileName: [*c]const u8, bytesRead: [*c]c_uint) [*c]u8;
+pub extern fn UnloadFileData(data: [*c]u8) void;
+pub extern fn SaveFileData(fileName: [*c]const u8, data: ?*anyopaque, bytesToWrite: c_uint) bool;
+pub extern fn LoadFileText(fileName: [*c]const u8) [*c]u8;
+pub extern fn UnloadFileText(text: [*c]u8) void;
+pub extern fn SaveFileText(fileName: [*c]const u8, text: [*c]u8) bool;
+pub extern fn FileExists(fileName: [*c]const u8) bool;
+pub extern fn DirectoryExists(dirPath: [*c]const u8) bool;
+pub extern fn IsFileExtension(fileName: [*c]const u8, ext: [*c]const u8) bool;
+pub extern fn GetFileLength(fileName: [*c]const u8) c_int;
+pub extern fn GetFileExtension(fileName: [*c]const u8) [*c]const u8;
+pub extern fn GetFileName(filePath: [*c]const u8) [*c]const u8;
+pub extern fn GetFileNameWithoutExt(filePath: [*c]const u8) [*c]const u8;
+pub extern fn GetDirectoryPath(filePath: [*c]const u8) [*c]const u8;
+pub extern fn GetPrevDirectoryPath(dirPath: [*c]const u8) [*c]const u8;
+pub extern fn GetWorkingDirectory() [*c]const u8;
+pub extern fn GetApplicationDirectory() [*c]const u8;
+pub extern fn GetDirectoryFiles(dirPath: [*c]const u8, count: [*c]c_int) [*c][*c]u8;
+pub extern fn ClearDirectoryFiles() void;
+pub extern fn ChangeDirectory(dir: [*c]const u8) bool;
+pub extern fn IsFileDropped() bool;
+pub extern fn GetDroppedFiles(count: [*c]c_int) [*c][*c]u8;
+pub extern fn ClearDroppedFiles() void;
+pub extern fn GetFileModTime(fileName: [*c]const u8) c_long;
+pub extern fn CompressData(data: [*c]const u8, dataSize: c_int, compDataSize: [*c]c_int) [*c]u8;
+pub extern fn DecompressData(compData: [*c]const u8, compDataSize: c_int, dataSize: [*c]c_int) [*c]u8;
+pub extern fn EncodeDataBase64(data: [*c]const u8, dataSize: c_int, outputSize: [*c]c_int) [*c]u8;
+pub extern fn DecodeDataBase64(data: [*c]const u8, outputSize: [*c]c_int) [*c]u8;
+pub extern fn SaveStorageValue(position: c_uint, value: c_int) bool;
+pub extern fn LoadStorageValue(position: c_uint) c_int;
+pub extern fn OpenURL(url: [*c]const u8) void;
+pub extern fn IsKeyPressed(key: c_int) bool;
+pub extern fn IsKeyDown(key: c_int) bool;
+pub extern fn IsKeyReleased(key: c_int) bool;
+pub extern fn IsKeyUp(key: c_int) bool;
+pub extern fn SetExitKey(key: c_int) void;
+pub extern fn GetKeyPressed() c_int;
+pub extern fn GetCharPressed() c_int;
+pub extern fn IsGamepadAvailable(gamepad: c_int) bool;
+pub extern fn GetGamepadName(gamepad: c_int) [*c]const u8;
+pub extern fn IsGamepadButtonPressed(gamepad: c_int, button: c_int) bool;
+pub extern fn IsGamepadButtonDown(gamepad: c_int, button: c_int) bool;
+pub extern fn IsGamepadButtonReleased(gamepad: c_int, button: c_int) bool;
+pub extern fn IsGamepadButtonUp(gamepad: c_int, button: c_int) bool;
+pub extern fn GetGamepadButtonPressed() c_int;
+pub extern fn GetGamepadAxisCount(gamepad: c_int) c_int;
+pub extern fn GetGamepadAxisMovement(gamepad: c_int, axis: c_int) f32;
+pub extern fn SetGamepadMappings(mappings: [*c]const u8) c_int;
+pub extern fn IsMouseButtonPressed(button: c_int) bool;
+pub extern fn IsMouseButtonDown(button: c_int) bool;
+pub extern fn IsMouseButtonReleased(button: c_int) bool;
+pub extern fn IsMouseButtonUp(button: c_int) bool;
+pub extern fn GetMouseX() c_int;
+pub extern fn GetMouseY() c_int;
+pub extern fn GetMousePosition() Vector2;
+pub extern fn GetMouseDelta() Vector2;
+pub extern fn SetMousePosition(x: c_int, y: c_int) void;
+pub extern fn SetMouseOffset(offsetX: c_int, offsetY: c_int) void;
+pub extern fn SetMouseScale(scaleX: f32, scaleY: f32) void;
+pub extern fn GetMouseWheelMove() f32;
+pub extern fn SetMouseCursor(cursor: c_int) void;
+pub extern fn GetTouchX() c_int;
+pub extern fn GetTouchY() c_int;
+pub extern fn GetTouchPosition(index: c_int) Vector2;
+pub extern fn GetTouchPointId(index: c_int) c_int;
+pub extern fn GetTouchPointCount() c_int;
+pub extern fn SetGesturesEnabled(flags: c_uint) void;
+pub extern fn IsGestureDetected(gesture: c_int) bool;
+pub extern fn GetGestureDetected() c_int;
+pub extern fn GetGestureHoldDuration() f32;
+pub extern fn GetGestureDragVector() Vector2;
+pub extern fn GetGestureDragAngle() f32;
+pub extern fn GetGesturePinchVector() Vector2;
+pub extern fn GetGesturePinchAngle() f32;
+pub extern fn SetCameraMode(camera: Camera, mode: c_int) void;
+pub extern fn UpdateCamera(camera: [*c]Camera) void;
+pub extern fn SetCameraPanControl(keyPan: c_int) void;
+pub extern fn SetCameraAltControl(keyAlt: c_int) void;
+pub extern fn SetCameraSmoothZoomControl(keySmoothZoom: c_int) void;
+pub extern fn SetCameraMoveControls(keyFront: c_int, keyBack: c_int, keyRight: c_int, keyLeft: c_int, keyUp: c_int, keyDown: c_int) void;
+pub extern fn SetShapesTexture(texture: Texture2D, source: Rectangle) void;
+pub extern fn DrawPixel(posX: c_int, posY: c_int, color: Color) void;
+pub extern fn DrawPixelV(position: Vector2, color: Color) void;
+pub extern fn DrawLine(startPosX: c_int, startPosY: c_int, endPosX: c_int, endPosY: c_int, color: Color) void;
+pub extern fn DrawLineV(startPos: Vector2, endPos: Vector2, color: Color) void;
+pub extern fn DrawLineEx(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void;
+pub extern fn DrawLineBezier(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void;
+pub extern fn DrawLineBezierQuad(startPos: Vector2, endPos: Vector2, controlPos: Vector2, thick: f32, color: Color) void;
+pub extern fn DrawLineBezierCubic(startPos: Vector2, endPos: Vector2, startControlPos: Vector2, endControlPos: Vector2, thick: f32, color: Color) void;
+pub extern fn DrawLineStrip(points: [*c]Vector2, pointCount: c_int, color: Color) void;
+pub extern fn DrawCircle(centerX: c_int, centerY: c_int, radius: f32, color: Color) void;
+pub extern fn DrawCircleSector(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void;
+pub extern fn DrawCircleSectorLines(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void;
+pub extern fn DrawCircleGradient(centerX: c_int, centerY: c_int, radius: f32, color1: Color, color2: Color) void;
+pub extern fn DrawCircleV(center: Vector2, radius: f32, color: Color) void;
+pub extern fn DrawCircleLines(centerX: c_int, centerY: c_int, radius: f32, color: Color) void;
+pub extern fn DrawEllipse(centerX: c_int, centerY: c_int, radiusH: f32, radiusV: f32, color: Color) void;
+pub extern fn DrawEllipseLines(centerX: c_int, centerY: c_int, radiusH: f32, radiusV: f32, color: Color) void;
+pub extern fn DrawRing(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void;
+pub extern fn DrawRingLines(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void;
+pub extern fn DrawRectangle(posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void;
+pub extern fn DrawRectangleV(position: Vector2, size: Vector2, color: Color) void;
+pub extern fn DrawRectangleRec(rec: Rectangle, color: Color) void;
+pub extern fn DrawRectanglePro(rec: Rectangle, origin: Vector2, rotation: f32, color: Color) void;
+pub extern fn DrawRectangleGradientV(posX: c_int, posY: c_int, width: c_int, height: c_int, color1: Color, color2: Color) void;
+pub extern fn DrawRectangleGradientH(posX: c_int, posY: c_int, width: c_int, height: c_int, color1: Color, color2: Color) void;
+pub extern fn DrawRectangleGradientEx(rec: Rectangle, col1: Color, col2: Color, col3: Color, col4: Color) void;
+pub extern fn DrawRectangleLines(posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void;
+pub extern fn DrawRectangleLinesEx(rec: Rectangle, lineThick: f32, color: Color) void;
+pub extern fn DrawRectangleRounded(rec: Rectangle, roundness: f32, segments: c_int, color: Color) void;
+pub extern fn DrawRectangleRoundedLines(rec: Rectangle, roundness: f32, segments: c_int, lineThick: f32, color: Color) void;
+pub extern fn DrawTriangle(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void;
+pub extern fn DrawTriangleLines(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void;
+pub extern fn DrawTriangleFan(points: [*c]Vector2, pointCount: c_int, color: Color) void;
+pub extern fn DrawTriangleStrip(points: [*c]Vector2, pointCount: c_int, color: Color) void;
+pub extern fn DrawPoly(center: Vector2, sides: c_int, radius: f32, rotation: f32, color: Color) void;
+pub extern fn DrawPolyLines(center: Vector2, sides: c_int, radius: f32, rotation: f32, color: Color) void;
+pub extern fn DrawPolyLinesEx(center: Vector2, sides: c_int, radius: f32, rotation: f32, lineThick: f32, color: Color) void;
+pub extern fn CheckCollisionRecs(rec1: Rectangle, rec2: Rectangle) bool;
+pub extern fn CheckCollisionCircles(center1: Vector2, radius1: f32, center2: Vector2, radius2: f32) bool;
+pub extern fn CheckCollisionCircleRec(center: Vector2, radius: f32, rec: Rectangle) bool;
+pub extern fn CheckCollisionPointRec(point: Vector2, rec: Rectangle) bool;
+pub extern fn CheckCollisionPointCircle(point: Vector2, center: Vector2, radius: f32) bool;
+pub extern fn CheckCollisionPointTriangle(point: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) bool;
+pub extern fn CheckCollisionLines(startPos1: Vector2, endPos1: Vector2, startPos2: Vector2, endPos2: Vector2, collisionPoint: [*c]Vector2) bool;
+pub extern fn CheckCollisionPointLine(point: Vector2, p1: Vector2, p2: Vector2, threshold: c_int) bool;
+pub extern fn GetCollisionRec(rec1: Rectangle, rec2: Rectangle) Rectangle;
+pub extern fn LoadImage(fileName: [*c]const u8) Image;
+pub extern fn LoadImageRaw(fileName: [*c]const u8, width: c_int, height: c_int, format: c_int, headerSize: c_int) Image;
+pub extern fn LoadImageAnim(fileName: [*c]const u8, frames: [*c]c_int) Image;
+pub extern fn LoadImageFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int) Image;
+pub extern fn LoadImageFromTexture(texture: Texture2D) Image;
+pub extern fn LoadImageFromScreen() Image;
+pub extern fn UnloadImage(image: Image) void;
+pub extern fn ExportImage(image: Image, fileName: [*c]const u8) bool;
+pub extern fn ExportImageAsCode(image: Image, fileName: [*c]const u8) bool;
+pub extern fn GenImageColor(width: c_int, height: c_int, color: Color) Image;
+pub extern fn GenImageGradientV(width: c_int, height: c_int, top: Color, bottom: Color) Image;
+pub extern fn GenImageGradientH(width: c_int, height: c_int, left: Color, right: Color) Image;
+pub extern fn GenImageGradientRadial(width: c_int, height: c_int, density: f32, inner: Color, outer: Color) Image;
+pub extern fn GenImageChecked(width: c_int, height: c_int, checksX: c_int, checksY: c_int, col1: Color, col2: Color) Image;
+pub extern fn GenImageWhiteNoise(width: c_int, height: c_int, factor: f32) Image;
+pub extern fn GenImageCellular(width: c_int, height: c_int, tileSize: c_int) Image;
+pub extern fn ImageCopy(image: Image) Image;
+pub extern fn ImageFromImage(image: Image, rec: Rectangle) Image;
+pub extern fn ImageText(text: [*c]const u8, fontSize: c_int, color: Color) Image;
+pub extern fn ImageTextEx(font: Font, text: [*c]const u8, fontSize: f32, spacing: f32, tint: Color) Image;
+pub extern fn ImageFormat(image: [*c]Image, newFormat: c_int) void;
+pub extern fn ImageToPOT(image: [*c]Image, fill: Color) void;
+pub extern fn ImageCrop(image: [*c]Image, crop: Rectangle) void;
+pub extern fn ImageAlphaCrop(image: [*c]Image, threshold: f32) void;
+pub extern fn ImageAlphaClear(image: [*c]Image, color: Color, threshold: f32) void;
+pub extern fn ImageAlphaMask(image: [*c]Image, alphaMask: Image) void;
+pub extern fn ImageAlphaPremultiply(image: [*c]Image) void;
+pub extern fn ImageResize(image: [*c]Image, newWidth: c_int, newHeight: c_int) void;
+pub extern fn ImageResizeNN(image: [*c]Image, newWidth: c_int, newHeight: c_int) void;
+pub extern fn ImageResizeCanvas(image: [*c]Image, newWidth: c_int, newHeight: c_int, offsetX: c_int, offsetY: c_int, fill: Color) void;
+pub extern fn ImageMipmaps(image: [*c]Image) void;
+pub extern fn ImageDither(image: [*c]Image, rBpp: c_int, gBpp: c_int, bBpp: c_int, aBpp: c_int) void;
+pub extern fn ImageFlipVertical(image: [*c]Image) void;
+pub extern fn ImageFlipHorizontal(image: [*c]Image) void;
+pub extern fn ImageRotateCW(image: [*c]Image) void;
+pub extern fn ImageRotateCCW(image: [*c]Image) void;
+pub extern fn ImageColorTint(image: [*c]Image, color: Color) void;
+pub extern fn ImageColorInvert(image: [*c]Image) void;
+pub extern fn ImageColorGrayscale(image: [*c]Image) void;
+pub extern fn ImageColorContrast(image: [*c]Image, contrast: f32) void;
+pub extern fn ImageColorBrightness(image: [*c]Image, brightness: c_int) void;
+pub extern fn ImageColorReplace(image: [*c]Image, color: Color, replace: Color) void;
+pub extern fn LoadImageColors(image: Image) [*c]Color;
+pub extern fn LoadImagePalette(image: Image, maxPaletteSize: c_int, colorCount: [*c]c_int) [*c]Color;
+pub extern fn UnloadImageColors(colors: [*c]Color) void;
+pub extern fn UnloadImagePalette(colors: [*c]Color) void;
+pub extern fn GetImageAlphaBorder(image: Image, threshold: f32) Rectangle;
+pub extern fn GetImageColor(image: Image, x: c_int, y: c_int) Color;
+pub extern fn ImageClearBackground(dst: [*c]Image, color: Color) void;
+pub extern fn ImageDrawPixel(dst: [*c]Image, posX: c_int, posY: c_int, color: Color) void;
+pub extern fn ImageDrawPixelV(dst: [*c]Image, position: Vector2, color: Color) void;
+pub extern fn ImageDrawLine(dst: [*c]Image, startPosX: c_int, startPosY: c_int, endPosX: c_int, endPosY: c_int, color: Color) void;
+pub extern fn ImageDrawLineV(dst: [*c]Image, start: Vector2, end: Vector2, color: Color) void;
+pub extern fn ImageDrawCircle(dst: [*c]Image, centerX: c_int, centerY: c_int, radius: c_int, color: Color) void;
+pub extern fn ImageDrawCircleV(dst: [*c]Image, center: Vector2, radius: c_int, color: Color) void;
+pub extern fn ImageDrawRectangle(dst: [*c]Image, posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void;
+pub extern fn ImageDrawRectangleV(dst: [*c]Image, position: Vector2, size: Vector2, color: Color) void;
+pub extern fn ImageDrawRectangleRec(dst: [*c]Image, rec: Rectangle, color: Color) void;
+pub extern fn ImageDrawRectangleLines(dst: [*c]Image, rec: Rectangle, thick: c_int, color: Color) void;
+pub extern fn ImageDraw(dst: [*c]Image, src: Image, srcRec: Rectangle, dstRec: Rectangle, tint: Color) void;
+pub extern fn ImageDrawText(dst: [*c]Image, text: [*c]const u8, posX: c_int, posY: c_int, fontSize: c_int, color: Color) void;
+pub extern fn ImageDrawTextEx(dst: [*c]Image, font: Font, text: [*c]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void;
+pub extern fn LoadTexture(fileName: [*c]const u8) Texture2D;
+pub extern fn LoadTextureFromImage(image: Image) Texture2D;
+pub extern fn LoadTextureCubemap(image: Image, layout: c_int) TextureCubemap;
+pub extern fn LoadRenderTexture(width: c_int, height: c_int) RenderTexture2D;
+pub extern fn UnloadTexture(texture: Texture2D) void;
+pub extern fn UnloadRenderTexture(target: RenderTexture2D) void;
+pub extern fn UpdateTexture(texture: Texture2D, pixels: ?*const anyopaque) void;
+pub extern fn UpdateTextureRec(texture: Texture2D, rec: Rectangle, pixels: ?*const anyopaque) void;
+pub extern fn GenTextureMipmaps(texture: [*c]Texture2D) void;
+pub extern fn SetTextureFilter(texture: Texture2D, filter: c_int) void;
+pub extern fn SetTextureWrap(texture: Texture2D, wrap: c_int) void;
+pub extern fn DrawTexture(texture: Texture2D, posX: c_int, posY: c_int, tint: Color) void;
+pub extern fn DrawTextureV(texture: Texture2D, position: Vector2, tint: Color) void;
+pub extern fn DrawTextureEx(texture: Texture2D, position: Vector2, rotation: f32, scale: f32, tint: Color) void;
+pub extern fn DrawTextureRec(texture: Texture2D, source: Rectangle, position: Vector2, tint: Color) void;
+pub extern fn DrawTextureQuad(texture: Texture2D, tiling: Vector2, offset: Vector2, quad: Rectangle, tint: Color) void;
+pub extern fn DrawTextureTiled(texture: Texture2D, source: Rectangle, dest: Rectangle, origin: Vector2, rotation: f32, scale: f32, tint: Color) void;
+pub extern fn DrawTexturePro(texture: Texture2D, source: Rectangle, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void;
+pub extern fn DrawTextureNPatch(texture: Texture2D, nPatchInfo: NPatchInfo, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void;
+pub extern fn DrawTexturePoly(texture: Texture2D, center: Vector2, points: [*c]Vector2, texcoords: [*c]Vector2, pointCount: c_int, tint: Color) void;
+pub extern fn Fade(color: Color, alpha: f32) Color;
+pub extern fn ColorToInt(color: Color) c_int;
+pub extern fn ColorNormalize(color: Color) Vector4;
+pub extern fn ColorFromNormalized(normalized: Vector4) Color;
+pub extern fn ColorToHSV(color: Color) Vector3;
+pub extern fn ColorFromHSV(hue: f32, saturation: f32, value: f32) Color;
+pub extern fn ColorAlpha(color: Color, alpha: f32) Color;
+pub extern fn ColorAlphaBlend(dst: Color, src: Color, tint: Color) Color;
+pub extern fn GetColor(hexValue: c_uint) Color;
+pub extern fn GetPixelColor(srcPtr: ?*anyopaque, format: c_int) Color;
+pub extern fn SetPixelColor(dstPtr: ?*anyopaque, color: Color, format: c_int) void;
+pub extern fn GetPixelDataSize(width: c_int, height: c_int, format: c_int) c_int;
+pub extern fn GetFontDefault() Font;
+pub extern fn LoadFont(fileName: [*c]const u8) Font;
+pub extern fn LoadFontEx(fileName: [*c]const u8, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int) Font;
+pub extern fn LoadFontFromImage(image: Image, key: Color, firstChar: c_int) Font;
+pub extern fn LoadFontFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int) Font;
+pub extern fn LoadFontData(fileData: [*c]const u8, dataSize: c_int, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int, @"type": c_int) [*c]GlyphInfo;
+pub extern fn GenImageFontAtlas(chars: [*c]const GlyphInfo, recs: [*c][*c]Rectangle, glyphCount: c_int, fontSize: c_int, padding: c_int, packMethod: c_int) Image;
+pub extern fn UnloadFontData(chars: [*c]GlyphInfo, glyphCount: c_int) void;
+pub extern fn UnloadFont(font: Font) void;
+pub extern fn ExportFontAsCode(font: Font, fileName: [*c]const u8) bool;
+pub extern fn DrawFPS(posX: c_int, posY: c_int) void;
+pub extern fn DrawText(text: [*c]const u8, posX: c_int, posY: c_int, fontSize: c_int, color: Color) void;
+pub extern fn DrawTextEx(font: Font, text: [*c]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void;
+pub extern fn DrawTextPro(font: Font, text: [*c]const u8, position: Vector2, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color) void;
+pub extern fn DrawTextCodepoint(font: Font, codepoint: c_int, position: Vector2, fontSize: f32, tint: Color) void;
+pub extern fn DrawTextCodepoints(font: Font, codepoints: [*c]const c_int, count: c_int, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void;
+pub extern fn MeasureText(text: [*c]const u8, fontSize: c_int) c_int;
+pub extern fn MeasureTextEx(font: Font, text: [*c]const u8, fontSize: f32, spacing: f32) Vector2;
+pub extern fn GetGlyphIndex(font: Font, codepoint: c_int) c_int;
+pub extern fn GetGlyphInfo(font: Font, codepoint: c_int) GlyphInfo;
+pub extern fn GetGlyphAtlasRec(font: Font, codepoint: c_int) Rectangle;
+pub extern fn LoadCodepoints(text: [*c]const u8, count: [*c]c_int) [*c]c_int;
+pub extern fn UnloadCodepoints(codepoints: [*c]c_int) void;
+pub extern fn GetCodepointCount(text: [*c]const u8) c_int;
+pub extern fn GetCodepoint(text: [*c]const u8, bytesProcessed: [*c]c_int) c_int;
+pub extern fn CodepointToUTF8(codepoint: c_int, byteSize: [*c]c_int) [*c]const u8;
+pub extern fn TextCodepointsToUTF8(codepoints: [*c]const c_int, length: c_int) [*c]u8;
+pub extern fn TextCopy(dst: [*c]u8, src: [*c]const u8) c_int;
+pub extern fn TextIsEqual(text1: [*c]const u8, text2: [*c]const u8) bool;
+pub extern fn TextLength(text: [*c]const u8) c_uint;
+pub extern fn TextFormat(text: [*c]const u8, ...) [*c]const u8;
+pub extern fn TextSubtext(text: [*c]const u8, position: c_int, length: c_int) [*c]const u8;
+pub extern fn TextReplace(text: [*c]u8, replace: [*c]const u8, by: [*c]const u8) [*c]u8;
+pub extern fn TextInsert(text: [*c]const u8, insert: [*c]const u8, position: c_int) [*c]u8;
+pub extern fn TextJoin(textList: [*c][*c]const u8, count: c_int, delimiter: [*c]const u8) [*c]const u8;
+pub extern fn TextSplit(text: [*c]const u8, delimiter: u8, count: [*c]c_int) [*c][*c]const u8;
+pub extern fn TextAppend(text: [*c]u8, append: [*c]const u8, position: [*c]c_int) void;
+pub extern fn TextFindIndex(text: [*c]const u8, find: [*c]const u8) c_int;
+pub extern fn TextToUpper(text: [*c]const u8) [*c]const u8;
+pub extern fn TextToLower(text: [*c]const u8) [*c]const u8;
+pub extern fn TextToPascal(text: [*c]const u8) [*c]const u8;
+pub extern fn TextToInteger(text: [*c]const u8) c_int;
+pub extern fn DrawLine3D(startPos: Vector3, endPos: Vector3, color: Color) void;
+pub extern fn DrawPoint3D(position: Vector3, color: Color) void;
+pub extern fn DrawCircle3D(center: Vector3, radius: f32, rotationAxis: Vector3, rotationAngle: f32, color: Color) void;
+pub extern fn DrawTriangle3D(v1: Vector3, v2: Vector3, v3: Vector3, color: Color) void;
+pub extern fn DrawTriangleStrip3D(points: [*c]Vector3, pointCount: c_int, color: Color) void;
+pub extern fn DrawCube(position: Vector3, width: f32, height: f32, length: f32, color: Color) void;
+pub extern fn DrawCubeV(position: Vector3, size: Vector3, color: Color) void;
+pub extern fn DrawCubeWires(position: Vector3, width: f32, height: f32, length: f32, color: Color) void;
+pub extern fn DrawCubeWiresV(position: Vector3, size: Vector3, color: Color) void;
+pub extern fn DrawCubeTexture(texture: Texture2D, position: Vector3, width: f32, height: f32, length: f32, color: Color) void;
+pub extern fn DrawCubeTextureRec(texture: Texture2D, source: Rectangle, position: Vector3, width: f32, height: f32, length: f32, color: Color) void;
+pub extern fn DrawSphere(centerPos: Vector3, radius: f32, color: Color) void;
+pub extern fn DrawSphereEx(centerPos: Vector3, radius: f32, rings: c_int, slices: c_int, color: Color) void;
+pub extern fn DrawSphereWires(centerPos: Vector3, radius: f32, rings: c_int, slices: c_int, color: Color) void;
+pub extern fn DrawCylinder(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: c_int, color: Color) void;
+pub extern fn DrawCylinderEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: c_int, color: Color) void;
+pub extern fn DrawCylinderWires(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: c_int, color: Color) void;
+pub extern fn DrawCylinderWiresEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: c_int, color: Color) void;
+pub extern fn DrawPlane(centerPos: Vector3, size: Vector2, color: Color) void;
+pub extern fn DrawRay(ray: Ray, color: Color) void;
+pub extern fn DrawGrid(slices: c_int, spacing: f32) void;
+pub extern fn LoadModel(fileName: [*c]const u8) Model;
+pub extern fn LoadModelFromMesh(mesh: Mesh) Model;
+pub extern fn UnloadModel(model: Model) void;
+pub extern fn UnloadModelKeepMeshes(model: Model) void;
+pub extern fn GetModelBoundingBox(model: Model) BoundingBox;
+pub extern fn DrawModel(model: Model, position: Vector3, scale: f32, tint: Color) void;
+pub extern fn DrawModelEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void;
+pub extern fn DrawModelWires(model: Model, position: Vector3, scale: f32, tint: Color) void;
+pub extern fn DrawModelWiresEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void;
+pub extern fn DrawBoundingBox(box: BoundingBox, color: Color) void;
+pub extern fn DrawBillboard(camera: Camera, texture: Texture2D, position: Vector3, size: f32, tint: Color) void;
+pub extern fn DrawBillboardRec(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, size: Vector2, tint: Color) void;
+pub extern fn DrawBillboardPro(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, up: Vector3, size: Vector2, origin: Vector2, rotation: f32, tint: Color) void;
+pub extern fn UploadMesh(mesh: [*c]Mesh, dynamic: bool) void;
+pub extern fn UpdateMeshBuffer(mesh: Mesh, index: c_int, data: ?*const anyopaque, dataSize: c_int, offset: c_int) void;
+pub extern fn UnloadMesh(mesh: Mesh) void;
+pub extern fn DrawMesh(mesh: Mesh, material: Material, transform: Matrix) void;
+pub extern fn DrawMeshInstanced(mesh: Mesh, material: Material, transforms: [*c]const Matrix, instances: c_int) void;
+pub extern fn ExportMesh(mesh: Mesh, fileName: [*c]const u8) bool;
+pub extern fn GetMeshBoundingBox(mesh: Mesh) BoundingBox;
+pub extern fn GenMeshTangents(mesh: [*c]Mesh) void;
+pub extern fn GenMeshBinormals(mesh: [*c]Mesh) void;
+pub extern fn GenMeshPoly(sides: c_int, radius: f32) Mesh;
+pub extern fn GenMeshPlane(width: f32, length: f32, resX: c_int, resZ: c_int) Mesh;
+pub extern fn GenMeshCube(width: f32, height: f32, length: f32) Mesh;
+pub extern fn GenMeshSphere(radius: f32, rings: c_int, slices: c_int) Mesh;
+pub extern fn GenMeshHemiSphere(radius: f32, rings: c_int, slices: c_int) Mesh;
+pub extern fn GenMeshCylinder(radius: f32, height: f32, slices: c_int) Mesh;
+pub extern fn GenMeshCone(radius: f32, height: f32, slices: c_int) Mesh;
+pub extern fn GenMeshTorus(radius: f32, size: f32, radSeg: c_int, sides: c_int) Mesh;
+pub extern fn GenMeshKnot(radius: f32, size: f32, radSeg: c_int, sides: c_int) Mesh;
+pub extern fn GenMeshHeightmap(heightmap: Image, size: Vector3) Mesh;
+pub extern fn GenMeshCubicmap(cubicmap: Image, cubeSize: Vector3) Mesh;
+pub extern fn LoadMaterials(fileName: [*c]const u8, materialCount: [*c]c_int) [*c]Material;
+pub extern fn LoadMaterialDefault() Material;
+pub extern fn UnloadMaterial(material: Material) void;
+pub extern fn SetMaterialTexture(material: [*c]Material, mapType: c_int, texture: Texture2D) void;
+pub extern fn SetModelMeshMaterial(model: [*c]Model, meshId: c_int, materialId: c_int) void;
+pub extern fn LoadModelAnimations(fileName: [*c]const u8, animCount: [*c]c_uint) [*c]ModelAnimation;
+pub extern fn UpdateModelAnimation(model: Model, anim: ModelAnimation, frame: c_int) void;
+pub extern fn UnloadModelAnimation(anim: ModelAnimation) void;
+pub extern fn UnloadModelAnimations(animations: [*c]ModelAnimation, count: c_uint) void;
+pub extern fn IsModelAnimationValid(model: Model, anim: ModelAnimation) bool;
+pub extern fn CheckCollisionSpheres(center1: Vector3, radius1: f32, center2: Vector3, radius2: f32) bool;
+pub extern fn CheckCollisionBoxes(box1: BoundingBox, box2: BoundingBox) bool;
+pub extern fn CheckCollisionBoxSphere(box: BoundingBox, center: Vector3, radius: f32) bool;
+pub extern fn GetRayCollisionSphere(ray: Ray, center: Vector3, radius: f32) RayCollision;
+pub extern fn GetRayCollisionBox(ray: Ray, box: BoundingBox) RayCollision;
+pub extern fn GetRayCollisionMesh(ray: Ray, mesh: Mesh, transform: Matrix) RayCollision;
+pub extern fn GetRayCollisionTriangle(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3) RayCollision;
+pub extern fn GetRayCollisionQuad(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3) RayCollision;
+pub const AudioCallback = ?fn (?*anyopaque, c_uint) callconv(.C) void;
+pub extern fn InitAudioDevice() void;
+pub extern fn CloseAudioDevice() void;
+pub extern fn IsAudioDeviceReady() bool;
+pub extern fn SetMasterVolume(volume: f32) void;
+pub extern fn LoadWave(fileName: [*c]const u8) Wave;
+pub extern fn LoadWaveFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int) Wave;
+pub extern fn LoadSound(fileName: [*c]const u8) Sound;
+pub extern fn LoadSoundFromWave(wave: Wave) Sound;
+pub extern fn UpdateSound(sound: Sound, data: ?*const anyopaque, sampleCount: c_int) void;
+pub extern fn UnloadWave(wave: Wave) void;
+pub extern fn UnloadSound(sound: Sound) void;
+pub extern fn ExportWave(wave: Wave, fileName: [*c]const u8) bool;
+pub extern fn ExportWaveAsCode(wave: Wave, fileName: [*c]const u8) bool;
+pub extern fn PlaySound(sound: Sound) void;
+pub extern fn StopSound(sound: Sound) void;
+pub extern fn PauseSound(sound: Sound) void;
+pub extern fn ResumeSound(sound: Sound) void;
+pub extern fn PlaySoundMulti(sound: Sound) void;
+pub extern fn StopSoundMulti() void;
+pub extern fn GetSoundsPlaying() c_int;
+pub extern fn IsSoundPlaying(sound: Sound) bool;
+pub extern fn SetSoundVolume(sound: Sound, volume: f32) void;
+pub extern fn SetSoundPitch(sound: Sound, pitch: f32) void;
+pub extern fn SetSoundPan(sound: Sound, pan: f32) void;
+pub extern fn WaveCopy(wave: Wave) Wave;
+pub extern fn WaveCrop(wave: [*c]Wave, initSample: c_int, finalSample: c_int) void;
+pub extern fn WaveFormat(wave: [*c]Wave, sampleRate: c_int, sampleSize: c_int, channels: c_int) void;
+pub extern fn LoadWaveSamples(wave: Wave) [*c]f32;
+pub extern fn UnloadWaveSamples(samples: [*c]f32) void;
+pub extern fn LoadMusicStream(fileName: [*c]const u8) Music;
+pub extern fn LoadMusicStreamFromMemory(fileType: [*c]const u8, data: [*c]const u8, dataSize: c_int) Music;
+pub extern fn UnloadMusicStream(music: Music) void;
+pub extern fn PlayMusicStream(music: Music) void;
+pub extern fn IsMusicStreamPlaying(music: Music) bool;
+pub extern fn UpdateMusicStream(music: Music) void;
+pub extern fn StopMusicStream(music: Music) void;
+pub extern fn PauseMusicStream(music: Music) void;
+pub extern fn ResumeMusicStream(music: Music) void;
+pub extern fn SeekMusicStream(music: Music, position: f32) void;
+pub extern fn SetMusicVolume(music: Music, volume: f32) void;
+pub extern fn SetMusicPitch(music: Music, pitch: f32) void;
+pub extern fn SetMusicPan(music: Music, pan: f32) void;
+pub extern fn GetMusicTimeLength(music: Music) f32;
+pub extern fn GetMusicTimePlayed(music: Music) f32;
+pub extern fn LoadAudioStream(sampleRate: c_uint, sampleSize: c_uint, channels: c_uint) AudioStream;
+pub extern fn UnloadAudioStream(stream: AudioStream) void;
+pub extern fn UpdateAudioStream(stream: AudioStream, data: ?*const anyopaque, frameCount: c_int) void;
+pub extern fn IsAudioStreamProcessed(stream: AudioStream) bool;
+pub extern fn PlayAudioStream(stream: AudioStream) void;
+pub extern fn PauseAudioStream(stream: AudioStream) void;
+pub extern fn ResumeAudioStream(stream: AudioStream) void;
+pub extern fn IsAudioStreamPlaying(stream: AudioStream) bool;
+pub extern fn StopAudioStream(stream: AudioStream) void;
+pub extern fn SetAudioStreamVolume(stream: AudioStream, volume: f32) void;
+pub extern fn SetAudioStreamPitch(stream: AudioStream, pitch: f32) void;
+pub extern fn SetAudioStreamPan(stream: AudioStream, pan: f32) void;
+pub extern fn SetAudioStreamBufferSizeDefault(size: c_int) void;
+pub extern fn SetAudioStreamCallback(stream: AudioStream, callback: AudioCallback) void;
+pub extern fn AttachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void;
+pub extern fn DetachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void;
+pub const struct_GuiStyleProp = extern struct {
+ controlId: c_ushort,
+ propertyId: c_ushort,
+ propertyValue: c_int,
+};
+pub const GuiStyleProp = struct_GuiStyleProp;
+pub const GUI_STATE_NORMAL: c_int = 0;
+pub const GUI_STATE_FOCUSED: c_int = 1;
+pub const GUI_STATE_PRESSED: c_int = 2;
+pub const GUI_STATE_DISABLED: c_int = 3;
+pub const GuiControlState = c_uint;
+pub const GUI_TEXT_ALIGN_LEFT: c_int = 0;
+pub const GUI_TEXT_ALIGN_CENTER: c_int = 1;
+pub const GUI_TEXT_ALIGN_RIGHT: c_int = 2;
+pub const GuiTextAlignment = c_uint;
+pub const DEFAULT: c_int = 0;
+pub const LABEL: c_int = 1;
+pub const BUTTON: c_int = 2;
+pub const TOGGLE: c_int = 3;
+pub const SLIDER: c_int = 4;
+pub const PROGRESSBAR: c_int = 5;
+pub const CHECKBOX: c_int = 6;
+pub const COMBOBOX: c_int = 7;
+pub const DROPDOWNBOX: c_int = 8;
+pub const TEXTBOX: c_int = 9;
+pub const VALUEBOX: c_int = 10;
+pub const SPINNER: c_int = 11;
+pub const LISTVIEW: c_int = 12;
+pub const COLORPICKER: c_int = 13;
+pub const SCROLLBAR: c_int = 14;
+pub const STATUSBAR: c_int = 15;
+pub const GuiControl = c_uint;
+pub const BORDER_COLOR_NORMAL: c_int = 0;
+pub const BASE_COLOR_NORMAL: c_int = 1;
+pub const TEXT_COLOR_NORMAL: c_int = 2;
+pub const BORDER_COLOR_FOCUSED: c_int = 3;
+pub const BASE_COLOR_FOCUSED: c_int = 4;
+pub const TEXT_COLOR_FOCUSED: c_int = 5;
+pub const BORDER_COLOR_PRESSED: c_int = 6;
+pub const BASE_COLOR_PRESSED: c_int = 7;
+pub const TEXT_COLOR_PRESSED: c_int = 8;
+pub const BORDER_COLOR_DISABLED: c_int = 9;
+pub const BASE_COLOR_DISABLED: c_int = 10;
+pub const TEXT_COLOR_DISABLED: c_int = 11;
+pub const BORDER_WIDTH: c_int = 12;
+pub const TEXT_PADDING: c_int = 13;
+pub const TEXT_ALIGNMENT: c_int = 14;
+pub const RESERVED: c_int = 15;
+pub const GuiControlProperty = c_uint;
+pub const TEXT_SIZE: c_int = 16;
+pub const TEXT_SPACING: c_int = 17;
+pub const LINE_COLOR: c_int = 18;
+pub const BACKGROUND_COLOR: c_int = 19;
+pub const GuiDefaultProperty = c_uint;
+pub const GROUP_PADDING: c_int = 16;
+pub const GuiToggleProperty = c_uint;
+pub const SLIDER_WIDTH: c_int = 16;
+pub const SLIDER_PADDING: c_int = 17;
+pub const GuiSliderProperty = c_uint;
+pub const PROGRESS_PADDING: c_int = 16;
+pub const GuiProgressBarProperty = c_uint;
+pub const CHECK_PADDING: c_int = 16;
+pub const GuiCheckBoxProperty = c_uint;
+pub const COMBO_BUTTON_WIDTH: c_int = 16;
+pub const COMBO_BUTTON_PADDING: c_int = 17;
+pub const GuiComboBoxProperty = c_uint;
+pub const ARROW_PADDING: c_int = 16;
+pub const DROPDOWN_ITEMS_PADDING: c_int = 17;
+pub const GuiDropdownBoxProperty = c_uint;
+pub const TEXT_INNER_PADDING: c_int = 16;
+pub const TEXT_LINES_PADDING: c_int = 17;
+pub const COLOR_SELECTED_FG: c_int = 18;
+pub const COLOR_SELECTED_BG: c_int = 19;
+pub const GuiTextBoxProperty = c_uint;
+pub const SPIN_BUTTON_WIDTH: c_int = 16;
+pub const SPIN_BUTTON_PADDING: c_int = 17;
+pub const GuiSpinnerProperty = c_uint;
+pub const ARROWS_SIZE: c_int = 16;
+pub const ARROWS_VISIBLE: c_int = 17;
+pub const SCROLL_SLIDER_PADDING: c_int = 18;
+pub const SCROLL_SLIDER_SIZE: c_int = 19;
+pub const SCROLL_PADDING: c_int = 20;
+pub const SCROLL_SPEED: c_int = 21;
+pub const GuiScrollBarProperty = c_uint;
+pub const SCROLLBAR_LEFT_SIDE: c_int = 0;
+pub const SCROLLBAR_RIGHT_SIDE: c_int = 1;
+pub const GuiScrollBarSide = c_uint;
+pub const LIST_ITEMS_HEIGHT: c_int = 16;
+pub const LIST_ITEMS_PADDING: c_int = 17;
+pub const SCROLLBAR_WIDTH: c_int = 18;
+pub const SCROLLBAR_SIDE: c_int = 19;
+pub const GuiListViewProperty = c_uint;
+pub const COLOR_SELECTOR_SIZE: c_int = 16;
+pub const HUEBAR_WIDTH: c_int = 17;
+pub const HUEBAR_PADDING: c_int = 18;
+pub const HUEBAR_SELECTOR_HEIGHT: c_int = 19;
+pub const HUEBAR_SELECTOR_OVERFLOW: c_int = 20;
+pub const GuiColorPickerProperty = c_uint;
+pub export fn GuiEnable() void {
+ guiState = @bitCast(c_uint, GUI_STATE_NORMAL);
+}
+pub export fn GuiDisable() void {
+ guiState = @bitCast(c_uint, GUI_STATE_DISABLED);
+}
+pub export fn GuiLock() void {
+ guiLocked = @as(c_int, 1) != 0;
+}
+pub export fn GuiUnlock() void {
+ guiLocked = @as(c_int, 0) != 0;
+}
+pub export fn GuiIsLocked() bool {
+ return guiLocked;
+}
+pub export fn GuiFade(arg_alpha: f32) void {
+ var alpha = arg_alpha;
+ if (alpha < 0.0) {
+ alpha = 0.0;
+ } else if (alpha > 1.0) {
+ alpha = 1.0;
+ }
+ guiAlpha = alpha;
+}
+pub export fn GuiSetState(arg_state: c_int) void {
+ var state = arg_state;
+ guiState = @bitCast(c_uint, state);
+}
+pub export fn GuiGetState() c_int {
+ return @bitCast(c_int, guiState);
+}
+pub export fn GuiSetFont(arg_font: Font) void {
+ var font = arg_font;
+ if (font.texture.id > @bitCast(c_uint, @as(c_int, 0))) {
+ if (!guiStyleLoaded) {
+ GuiLoadStyleDefault();
+ }
+ guiFont = font;
+ GuiSetStyle(DEFAULT, TEXT_SIZE, font.baseSize);
+ }
+}
+pub export fn GuiGetFont() Font {
+ return guiFont;
+}
+pub export fn GuiSetStyle(arg_control: c_int, arg_property: c_int, arg_value: c_int) void {
+ var control = arg_control;
+ var property = arg_property;
+ var value = arg_value;
+ if (!guiStyleLoaded) {
+ GuiLoadStyleDefault();
+ }
+ guiStyle[@intCast(c_uint, (control * (@as(c_int, 16) + @as(c_int, 8))) + property)] = @bitCast(c_uint, value);
+ if ((control == @as(c_int, 0)) and (property < @as(c_int, 16))) {
+ {
+ var i: c_int = 1;
+ while (i < @as(c_int, 16)) : (i += 1) {
+ guiStyle[@intCast(c_uint, (i * (@as(c_int, 16) + @as(c_int, 8))) + property)] = @bitCast(c_uint, value);
+ }
+ }
+ }
+}
+pub export fn GuiGetStyle(arg_control: c_int, arg_property: c_int) c_int {
+ var control = arg_control;
+ var property = arg_property;
+ if (!guiStyleLoaded) {
+ GuiLoadStyleDefault();
+ }
+ return @bitCast(c_int, guiStyle[@intCast(c_uint, (control * (@as(c_int, 16) + @as(c_int, 8))) + property)]);
+}
+pub export fn GuiWindowBox(arg_bounds: Rectangle, arg_title: [*c]const u8) bool {
+ var bounds = arg_bounds;
+ var title = arg_title;
+ var clicked: bool = @as(c_int, 0) != 0;
+ var statusBarHeight: c_int = @as(c_int, 22) + (@as(c_int, 2) * GuiGetStyle(STATUSBAR, BORDER_WIDTH));
+ statusBarHeight += @import("std").zig.c_translation.signedRemainder(statusBarHeight, @as(c_int, 2));
+ var statusBar: Rectangle = Rectangle{
+ .x = bounds.x,
+ .y = bounds.y,
+ .width = bounds.width,
+ .height = @intToFloat(f32, statusBarHeight),
+ };
+ if (bounds.height < (@intToFloat(f32, statusBarHeight) * 2.0)) {
+ bounds.height = @intToFloat(f32, statusBarHeight) * 2.0;
+ }
+ var windowPanel: Rectangle = Rectangle{
+ .x = bounds.x,
+ .y = (bounds.y + @intToFloat(f32, statusBarHeight)) - @intToFloat(f32, @as(c_int, 1)),
+ .width = bounds.width,
+ .height = bounds.height - @intToFloat(f32, statusBarHeight),
+ };
+ var closeButtonRec: Rectangle = Rectangle{
+ .x = ((statusBar.x + statusBar.width) - @intToFloat(f32, GuiGetStyle(STATUSBAR, BORDER_WIDTH))) - @intToFloat(f32, @as(c_int, 20)),
+ .y = (statusBar.y + (@intToFloat(f32, statusBarHeight) / 2.0)) - (18.0 / 2.0),
+ .width = @intToFloat(f32, @as(c_int, 18)),
+ .height = @intToFloat(f32, @as(c_int, 18)),
+ };
+ GuiStatusBar(statusBar, title);
+ GuiPanel(windowPanel);
+ var tempBorderWidth: c_int = GuiGetStyle(BUTTON, BORDER_WIDTH);
+ var tempTextAlignment: c_int = GuiGetStyle(BUTTON, TEXT_ALIGNMENT);
+ GuiSetStyle(BUTTON, BORDER_WIDTH, @as(c_int, 1));
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ clicked = GuiButton(closeButtonRec, GuiIconText(RICON_CROSS_SMALL, null));
+ GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth);
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment);
+ return clicked;
+}
+pub export fn GuiGroupBox(arg_bounds: Rectangle, arg_text: [*c]const u8) void {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var state: GuiControlState = guiState;
+ GuiDrawRectangle(Rectangle{
+ .x = bounds.x,
+ .y = bounds.y,
+ .width = @intToFloat(f32, @as(c_int, 1)),
+ .height = bounds.height,
+ }, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) BORDER_COLOR_DISABLED else LINE_COLOR))), guiAlpha));
+ GuiDrawRectangle(Rectangle{
+ .x = bounds.x,
+ .y = (bounds.y + bounds.height) - @intToFloat(f32, @as(c_int, 1)),
+ .width = bounds.width,
+ .height = @intToFloat(f32, @as(c_int, 1)),
+ }, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) BORDER_COLOR_DISABLED else LINE_COLOR))), guiAlpha));
+ GuiDrawRectangle(Rectangle{
+ .x = (bounds.x + bounds.width) - @intToFloat(f32, @as(c_int, 1)),
+ .y = bounds.y,
+ .width = @intToFloat(f32, @as(c_int, 1)),
+ .height = bounds.height,
+ }, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) BORDER_COLOR_DISABLED else LINE_COLOR))), guiAlpha));
+ GuiLine(Rectangle{
+ .x = bounds.x,
+ .y = bounds.y,
+ .width = bounds.width,
+ .height = @intToFloat(f32, @as(c_int, 1)),
+ }, text);
+}
+pub export fn GuiLine(arg_bounds: Rectangle, arg_text: [*c]const u8) void {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var state: GuiControlState = guiState;
+ var color: Color = Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) BORDER_COLOR_DISABLED else LINE_COLOR))), guiAlpha);
+ if (text == @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ GuiDrawRectangle(Rectangle{
+ .x = bounds.x,
+ .y = bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2))),
+ .width = bounds.width,
+ .height = @intToFloat(f32, @as(c_int, 1)),
+ }, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, color);
+ } else {
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ textBounds.width = @intToFloat(f32, GetTextWidth(text));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = bounds.x + @intToFloat(f32, @as(c_int, 10));
+ textBounds.y = bounds.y - (@intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)) / @intToFloat(f32, @as(c_int, 2)));
+ GuiDrawRectangle(Rectangle{
+ .x = bounds.x,
+ .y = bounds.y,
+ .width = @intToFloat(f32, @as(c_int, 10) - @as(c_int, 2)),
+ .height = @intToFloat(f32, @as(c_int, 1)),
+ }, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, color);
+ GuiLabel(textBounds, text);
+ GuiDrawRectangle(Rectangle{
+ .x = ((bounds.x + @intToFloat(f32, @as(c_int, 10))) + textBounds.width) + @intToFloat(f32, @as(c_int, 4)),
+ .y = bounds.y,
+ .width = ((bounds.width - textBounds.width) - @intToFloat(f32, @as(c_int, 10))) - @intToFloat(f32, @as(c_int, 4)),
+ .height = @intToFloat(f32, @as(c_int, 1)),
+ }, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, color);
+ }
+}
+pub export fn GuiPanel(arg_bounds: Rectangle) void {
+ var bounds = arg_bounds;
+ var state: GuiControlState = guiState;
+ GuiDrawRectangle(bounds, @as(c_int, 1), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) BORDER_COLOR_DISABLED else LINE_COLOR))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) BASE_COLOR_DISABLED else BACKGROUND_COLOR))), guiAlpha));
+}
+pub export fn GuiScrollPanel(arg_bounds: Rectangle, arg_content: Rectangle, arg_scroll: [*c]Vector2) Rectangle {
+ var bounds = arg_bounds;
+ var content = arg_content;
+ var scroll = arg_scroll;
+ var state: GuiControlState = guiState;
+ var scrollPos: Vector2 = Vector2{
+ .x = 0.0,
+ .y = 0.0,
+ };
+ if (scroll != @ptrCast([*c]Vector2, @alignCast(@import("std").meta.alignment(Vector2), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ scrollPos = scroll.*;
+ }
+ var hasHorizontalScrollBar: bool = (if (content.width > (bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH)))) @as(c_int, 1) else @as(c_int, 0)) != 0;
+ var hasVerticalScrollBar: bool = (if (content.height > (bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH)))) @as(c_int, 1) else @as(c_int, 0)) != 0;
+ if (!hasHorizontalScrollBar) {
+ hasHorizontalScrollBar = (if ((@as(c_int, @boolToInt(hasVerticalScrollBar)) != 0) and (content.width > ((bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))) @as(c_int, 1) else @as(c_int, 0)) != 0;
+ }
+ if (!hasVerticalScrollBar) {
+ hasVerticalScrollBar = (if ((@as(c_int, @boolToInt(hasHorizontalScrollBar)) != 0) and (content.height > ((bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))) @as(c_int, 1) else @as(c_int, 0)) != 0;
+ }
+ const horizontalScrollBarWidth: c_int = if (@as(c_int, @boolToInt(hasHorizontalScrollBar)) != 0) GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) else @as(c_int, 0);
+ const verticalScrollBarWidth: c_int = if (@as(c_int, @boolToInt(hasVerticalScrollBar)) != 0) GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) else @as(c_int, 0);
+ const horizontalScrollBar: Rectangle = Rectangle{
+ .x = (if (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE) bounds.x + @intToFloat(f32, verticalScrollBarWidth) else bounds.x) + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .y = ((bounds.y + bounds.height) - @intToFloat(f32, horizontalScrollBarWidth)) - @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .width = (bounds.width - @intToFloat(f32, verticalScrollBarWidth)) - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .height = @intToFloat(f32, horizontalScrollBarWidth),
+ };
+ const verticalScrollBar: Rectangle = Rectangle{
+ .x = if (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE) bounds.x + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)) else ((bounds.x + bounds.width) - @intToFloat(f32, verticalScrollBarWidth)) - @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .y = bounds.y + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .width = @intToFloat(f32, verticalScrollBarWidth),
+ .height = (bounds.height - @intToFloat(f32, horizontalScrollBarWidth)) - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ };
+ var view: Rectangle = if (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE) Rectangle{
+ .x = (bounds.x + @intToFloat(f32, verticalScrollBarWidth)) + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .y = bounds.y + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .width = (bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, verticalScrollBarWidth),
+ .height = (bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, horizontalScrollBarWidth),
+ } else Rectangle{
+ .x = bounds.x + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .y = bounds.y + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ .width = (bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, verticalScrollBarWidth),
+ .height = (bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, horizontalScrollBarWidth),
+ };
+ if (view.width > content.width) {
+ view.width = content.width;
+ }
+ if (view.height > content.height) {
+ view.height = content.height;
+ }
+ const horizontalMin: f32 = if (@as(c_int, @boolToInt(hasHorizontalScrollBar)) != 0) (if (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE) @intToFloat(f32, -verticalScrollBarWidth) else @intToFloat(f32, @as(c_int, 0))) - @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)) else (if (@intToFloat(f32, GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE)) == @intToFloat(f32, SCROLLBAR_LEFT_SIDE)) @intToFloat(f32, -verticalScrollBarWidth) else @intToFloat(f32, @as(c_int, 0))) - @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH));
+ const horizontalMax: f32 = if (@as(c_int, @boolToInt(hasHorizontalScrollBar)) != 0) (((content.width - bounds.width) + @intToFloat(f32, verticalScrollBarWidth)) + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH))) - (if (@intToFloat(f32, GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE)) == @intToFloat(f32, SCROLLBAR_LEFT_SIDE)) @intToFloat(f32, verticalScrollBarWidth) else @intToFloat(f32, @as(c_int, 0))) else @intToFloat(f32, -GuiGetStyle(DEFAULT, BORDER_WIDTH));
+ const verticalMin: f32 = if (@as(c_int, @boolToInt(hasVerticalScrollBar)) != 0) @intToFloat(f32, -GuiGetStyle(DEFAULT, BORDER_WIDTH)) else @intToFloat(f32, -GuiGetStyle(DEFAULT, BORDER_WIDTH));
+ const verticalMax: f32 = if (@as(c_int, @boolToInt(hasVerticalScrollBar)) != 0) ((content.height - bounds.height) + @intToFloat(f32, horizontalScrollBarWidth)) + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH)) else @intToFloat(f32, -GuiGetStyle(DEFAULT, BORDER_WIDTH));
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ if (hasHorizontalScrollBar) {
+ if (IsKeyDown(KEY_RIGHT)) {
+ scrollPos.x -= @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_SPEED));
+ }
+ if (IsKeyDown(KEY_LEFT)) {
+ scrollPos.x += @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_SPEED));
+ }
+ }
+ if (hasVerticalScrollBar) {
+ if (IsKeyDown(KEY_DOWN)) {
+ scrollPos.y -= @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_SPEED));
+ }
+ if (IsKeyDown(KEY_UP)) {
+ scrollPos.y += @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_SPEED));
+ }
+ }
+ var wheelMove: f32 = GetMouseWheelMove();
+ if ((@as(c_int, @boolToInt(hasHorizontalScrollBar)) != 0) and ((@as(c_int, @boolToInt(IsKeyDown(KEY_LEFT_SHIFT))) != 0) or (@as(c_int, @boolToInt(IsKeyDown(KEY_RIGHT_SHIFT))) != 0))) {
+ scrollPos.x += wheelMove * @intToFloat(f32, @as(c_int, 20));
+ } else {
+ scrollPos.y += wheelMove * @intToFloat(f32, @as(c_int, 20));
+ }
+ }
+ }
+ if (scrollPos.x > -horizontalMin) {
+ scrollPos.x = -horizontalMin;
+ }
+ if (scrollPos.x < -horizontalMax) {
+ scrollPos.x = -horizontalMax;
+ }
+ if (scrollPos.y > -verticalMin) {
+ scrollPos.y = -verticalMin;
+ }
+ if (scrollPos.y < -verticalMax) {
+ scrollPos.y = -verticalMax;
+ }
+ GuiDrawRectangle(bounds, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, BACKGROUND_COLOR))));
+ const slider: c_int = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE);
+ if (hasHorizontalScrollBar) {
+ GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, @floatToInt(c_int, (((bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, verticalScrollBarWidth)) / @intToFloat(f32, @floatToInt(c_int, content.width))) * @intToFloat(f32, (@floatToInt(c_int, bounds.width) - (@as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - verticalScrollBarWidth)));
+ scrollPos.x = @intToFloat(f32, -GuiScrollBar(horizontalScrollBar, @floatToInt(c_int, -scrollPos.x), @floatToInt(c_int, horizontalMin), @floatToInt(c_int, horizontalMax)));
+ }
+ if (hasVerticalScrollBar) {
+ GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, @floatToInt(c_int, (((bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - @intToFloat(f32, horizontalScrollBarWidth)) / @intToFloat(f32, @floatToInt(c_int, content.height))) * @intToFloat(f32, (@floatToInt(c_int, bounds.height) - (@as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH))) - horizontalScrollBarWidth)));
+ scrollPos.y = @intToFloat(f32, -GuiScrollBar(verticalScrollBar, @floatToInt(c_int, -scrollPos.y), @floatToInt(c_int, verticalMin), @floatToInt(c_int, verticalMax)));
+ }
+ if ((@as(c_int, @boolToInt(hasHorizontalScrollBar)) != 0) and (@as(c_int, @boolToInt(hasVerticalScrollBar)) != 0)) {
+ var corner: Rectangle = Rectangle{
+ .x = if (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE) (bounds.x + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH))) + @intToFloat(f32, @as(c_int, 2)) else (horizontalScrollBar.x + horizontalScrollBar.width) + @intToFloat(f32, @as(c_int, 2)),
+ .y = (verticalScrollBar.y + verticalScrollBar.height) + @intToFloat(f32, @as(c_int, 2)),
+ .width = @intToFloat(f32, horizontalScrollBarWidth) - @intToFloat(f32, @as(c_int, 4)),
+ .height = @intToFloat(f32, verticalScrollBarWidth) - @intToFloat(f32, @as(c_int, 4)),
+ };
+ GuiDrawRectangle(corner, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(DEFAULT, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, slider);
+ if (scroll != @ptrCast([*c]Vector2, @alignCast(@import("std").meta.alignment(Vector2), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ scroll.* = scrollPos;
+ }
+ return view;
+}
+pub export fn GuiLabel(arg_bounds: Rectangle, arg_text: [*c]const u8) void {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var state: GuiControlState = guiState;
+ GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LABEL, if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) TEXT_COLOR_DISABLED else TEXT_COLOR_NORMAL))), guiAlpha));
+}
+pub export fn GuiButton(arg_bounds: Rectangle, arg_text: [*c]const u8) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var state: GuiControlState = guiState;
+ var pressed: bool = @as(c_int, 0) != 0;
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ }
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(BUTTON, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(BUTTON, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(BUTTON, @bitCast(c_int, @bitCast(c_uint, BASE) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ GuiDrawText(text, GetTextBounds(BUTTON, bounds), GuiGetStyle(BUTTON, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(BUTTON, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ return pressed;
+}
+pub export fn GuiLabelButton(arg_bounds: Rectangle, arg_text: [*c]const u8) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var state: GuiControlState = guiState;
+ var pressed: bool = @as(c_int, 0) != 0;
+ var textWidth: f32 = MeasureTextEx(guiFont, text, @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)), @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SPACING))).x;
+ if (bounds.width < textWidth) {
+ bounds.width = textWidth;
+ }
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ }
+ }
+ GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LABEL, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ return pressed;
+}
+pub export fn GuiToggle(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_active: bool) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var active = arg_active;
+ var state: GuiControlState = guiState;
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_NORMAL);
+ active = !active;
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ if (state == @bitCast(c_uint, GUI_STATE_NORMAL)) {
+ GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TOGGLE, @bitCast(c_int, if (@as(c_int, @boolToInt(active)) != 0) @bitCast(c_uint, BORDER_COLOR_PRESSED) else @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TOGGLE, @bitCast(c_int, if (@as(c_int, @boolToInt(active)) != 0) @bitCast(c_uint, BASE_COLOR_PRESSED) else @bitCast(c_uint, BASE) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TOGGLE, @bitCast(c_int, if (@as(c_int, @boolToInt(active)) != 0) @bitCast(c_uint, TEXT_COLOR_PRESSED) else @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ } else {
+ GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TOGGLE, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TOGGLE, @bitCast(c_int, @bitCast(c_uint, BASE) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TOGGLE, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ return active;
+}
+pub export fn GuiToggleGroup(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_active: c_int) c_int {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var active = arg_active;
+ var initBoundsX: f32 = bounds.x;
+ var rows: [32]c_int = [1]c_int{
+ 0,
+ } ++ [1]c_int{0} ** 31;
+ var itemCount: c_int = 0;
+ var items: [*c][*c]const u8 = GuiTextSplit(text, &itemCount, @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), &rows)));
+ var prevRow: c_int = rows[@intCast(c_uint, @as(c_int, 0))];
+ {
+ var i: c_int = 0;
+ while (i < itemCount) : (i += 1) {
+ if (prevRow != rows[@intCast(c_uint, i)]) {
+ bounds.x = initBoundsX;
+ bounds.y += bounds.height + @intToFloat(f32, GuiGetStyle(TOGGLE, GROUP_PADDING));
+ prevRow = rows[@intCast(c_uint, i)];
+ }
+ if (i == active) {
+ _ = GuiToggle(bounds, (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk items + @intCast(usize, tmp) else break :blk items - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, @as(c_int, 1) != 0);
+ } else if (@as(c_int, @boolToInt(GuiToggle(bounds, (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk items + @intCast(usize, tmp) else break :blk items - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, @as(c_int, 0) != 0))) == @as(c_int, 1)) {
+ active = i;
+ }
+ bounds.x += bounds.width + @intToFloat(f32, GuiGetStyle(TOGGLE, GROUP_PADDING));
+ }
+ }
+ return active;
+}
+pub export fn GuiCheckBox(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_checked: bool) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var checked = arg_checked;
+ var state: GuiControlState = guiState;
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ if (text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ textBounds.width = @intToFloat(f32, GetTextWidth(text));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = (bounds.x + bounds.width) + @intToFloat(f32, GuiGetStyle(CHECKBOX, TEXT_PADDING));
+ textBounds.y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(GuiGetStyle(DEFAULT, TEXT_SIZE), @as(c_int, 2)));
+ if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_LEFT) {
+ textBounds.x = (bounds.x - textBounds.width) - @intToFloat(f32, GuiGetStyle(CHECKBOX, TEXT_PADDING));
+ }
+ }
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ var totalBounds: Rectangle = Rectangle{
+ .x = if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_LEFT) textBounds.x else bounds.x,
+ .y = bounds.y,
+ .width = (bounds.width + textBounds.width) + @intToFloat(f32, GuiGetStyle(CHECKBOX, TEXT_PADDING)),
+ .height = bounds.height,
+ };
+ if (CheckCollisionPointRec(mousePoint, totalBounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) {
+ checked = !checked;
+ }
+ }
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(CHECKBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(CHECKBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ if (checked) {
+ var check: Rectangle = Rectangle{
+ .x = (bounds.x + @intToFloat(f32, GuiGetStyle(CHECKBOX, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(CHECKBOX, CHECK_PADDING)),
+ .y = (bounds.y + @intToFloat(f32, GuiGetStyle(CHECKBOX, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(CHECKBOX, CHECK_PADDING)),
+ .width = bounds.width - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING))),
+ .height = bounds.height - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING))),
+ };
+ GuiDrawRectangle(check, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(CHECKBOX, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ GuiDrawText(text, textBounds, if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_RIGHT) GUI_TEXT_ALIGN_LEFT else GUI_TEXT_ALIGN_RIGHT, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LABEL, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ return checked;
+}
+pub export fn GuiComboBox(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_active: c_int) c_int {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var active = arg_active;
+ var state: GuiControlState = guiState;
+ bounds.width -= @intToFloat(f32, GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH) + GuiGetStyle(COMBOBOX, COMBO_BUTTON_PADDING));
+ var selector: Rectangle = Rectangle{
+ .x = (bounds.x + bounds.width) + @intToFloat(f32, GuiGetStyle(COMBOBOX, COMBO_BUTTON_PADDING)),
+ .y = bounds.y,
+ .width = @intToFloat(f32, GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH)),
+ .height = bounds.height,
+ };
+ var itemCount: c_int = 0;
+ var items: [*c][*c]const u8 = GuiTextSplit(text, &itemCount, null);
+ if (active < @as(c_int, 0)) {
+ active = 0;
+ } else if (active > (itemCount - @as(c_int, 1))) {
+ active = itemCount - @as(c_int, 1);
+ }
+ if (((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) and (itemCount > @as(c_int, 1))) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if ((@as(c_int, @boolToInt(CheckCollisionPointRec(mousePoint, bounds))) != 0) or (@as(c_int, @boolToInt(CheckCollisionPointRec(mousePoint, selector))) != 0)) {
+ if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+ active += @as(c_int, 1);
+ if (active >= itemCount) {
+ active = 0;
+ }
+ }
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(COMBOBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COMBOBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COMBOBOX, @bitCast(c_int, @bitCast(c_uint, BASE) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ GuiDrawText((blk: {
+ const tmp = active;
+ if (tmp >= 0) break :blk items + @intCast(usize, tmp) else break :blk items - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(COMBOBOX, bounds), GuiGetStyle(COMBOBOX, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COMBOBOX, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ var tempBorderWidth: c_int = GuiGetStyle(BUTTON, BORDER_WIDTH);
+ var tempTextAlign: c_int = GuiGetStyle(BUTTON, TEXT_ALIGNMENT);
+ GuiSetStyle(BUTTON, BORDER_WIDTH, @as(c_int, 1));
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ _ = GuiButton(selector, TextFormat("%i/%i", active + @as(c_int, 1), itemCount));
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign);
+ GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth);
+ return active;
+}
+pub export fn GuiDropdownBox(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_active: [*c]c_int, arg_editMode: bool) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var active = arg_active;
+ var editMode = arg_editMode;
+ var state: GuiControlState = guiState;
+ var itemSelected: c_int = active.*;
+ var itemFocused: c_int = -@as(c_int, 1);
+ var itemCount: c_int = 0;
+ var items: [*c][*c]const u8 = GuiTextSplit(text, &itemCount, null);
+ var boundsOpen: Rectangle = bounds;
+ boundsOpen.height = @intToFloat(f32, itemCount + @as(c_int, 1)) * (bounds.height + @intToFloat(f32, GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_PADDING)));
+ var itemBounds: Rectangle = bounds;
+ var pressed: bool = @as(c_int, 0) != 0;
+ if (((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and ((@as(c_int, @boolToInt(editMode)) != 0) or !guiLocked)) and (itemCount > @as(c_int, 1))) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (editMode) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ if (!CheckCollisionPointRec(mousePoint, boundsOpen)) {
+ if ((@as(c_int, @boolToInt(IsMouseButtonPressed(MOUSE_BUTTON_LEFT))) != 0) or (@as(c_int, @boolToInt(IsMouseButtonReleased(MOUSE_BUTTON_LEFT))) != 0)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ }
+ if ((@as(c_int, @boolToInt(CheckCollisionPointRec(mousePoint, bounds))) != 0) and (@as(c_int, @boolToInt(IsMouseButtonPressed(MOUSE_BUTTON_LEFT))) != 0)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ {
+ var i: c_int = 0;
+ while (i < itemCount) : (i += 1) {
+ itemBounds.y += bounds.height + @intToFloat(f32, GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_PADDING));
+ if (CheckCollisionPointRec(mousePoint, itemBounds)) {
+ itemFocused = i;
+ if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) {
+ itemSelected = i;
+ pressed = @as(c_int, 1) != 0;
+ }
+ break;
+ }
+ }
+ }
+ itemBounds = bounds;
+ } else {
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+ pressed = @as(c_int, 1) != 0;
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ }
+ if (editMode) {
+ GuiPanel(boundsOpen);
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, @bitCast(c_int, @bitCast(c_uint, BASE) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ GuiDrawText((blk: {
+ const tmp = itemSelected;
+ if (tmp >= 0) break :blk items + @intCast(usize, tmp) else break :blk items - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, bounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ if (editMode) {
+ {
+ var i: c_int = 0;
+ while (i < itemCount) : (i += 1) {
+ itemBounds.y += bounds.height + @intToFloat(f32, GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_PADDING));
+ if (i == itemSelected) {
+ GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_PRESSED))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, BASE_COLOR_PRESSED))), guiAlpha));
+ GuiDrawText((blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk items + @intCast(usize, tmp) else break :blk items - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_PRESSED))), guiAlpha));
+ } else if (i == itemFocused) {
+ GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_FOCUSED))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, BASE_COLOR_FOCUSED))), guiAlpha));
+ GuiDrawText((blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk items + @intCast(usize, tmp) else break :blk items - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_FOCUSED))), guiAlpha));
+ } else {
+ GuiDrawText((blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk items + @intCast(usize, tmp) else break :blk items - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL))), guiAlpha));
+ }
+ }
+ }
+ }
+ GuiDrawText("#120#", Rectangle{
+ .x = (bounds.x + bounds.width) - @intToFloat(f32, GuiGetStyle(DROPDOWNBOX, ARROW_PADDING)),
+ .y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @as(c_int, 6)),
+ .width = @intToFloat(f32, @as(c_int, 10)),
+ .height = @intToFloat(f32, @as(c_int, 10)),
+ }, GUI_TEXT_ALIGN_CENTER, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DROPDOWNBOX, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ active.* = itemSelected;
+ return pressed;
+}
+pub export fn GuiSpinner(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_value: [*c]c_int, arg_minValue: c_int, arg_maxValue: c_int, arg_editMode: bool) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var value = arg_value;
+ var minValue = arg_minValue;
+ var maxValue = arg_maxValue;
+ var editMode = arg_editMode;
+ var state: GuiControlState = guiState;
+ var pressed: bool = @as(c_int, 0) != 0;
+ var tempValue: c_int = value.*;
+ var spinner: Rectangle = Rectangle{
+ .x = (bounds.x + @intToFloat(f32, GuiGetStyle(SPINNER, SPIN_BUTTON_WIDTH))) + @intToFloat(f32, GuiGetStyle(SPINNER, SPIN_BUTTON_PADDING)),
+ .y = bounds.y,
+ .width = bounds.width - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(SPINNER, SPIN_BUTTON_WIDTH) + GuiGetStyle(SPINNER, SPIN_BUTTON_PADDING))),
+ .height = bounds.height,
+ };
+ var leftButtonBound: Rectangle = Rectangle{
+ .x = bounds.x,
+ .y = bounds.y,
+ .width = @intToFloat(f32, GuiGetStyle(SPINNER, SPIN_BUTTON_WIDTH)),
+ .height = bounds.height,
+ };
+ var rightButtonBound: Rectangle = Rectangle{
+ .x = (bounds.x + bounds.width) - @intToFloat(f32, GuiGetStyle(SPINNER, SPIN_BUTTON_WIDTH)),
+ .y = bounds.y,
+ .width = @intToFloat(f32, GuiGetStyle(SPINNER, SPIN_BUTTON_WIDTH)),
+ .height = bounds.height,
+ };
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ if (text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ textBounds.width = @intToFloat(f32, GetTextWidth(text));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = (bounds.x + bounds.width) + @intToFloat(f32, GuiGetStyle(SPINNER, TEXT_PADDING));
+ textBounds.y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(GuiGetStyle(DEFAULT, TEXT_SIZE), @as(c_int, 2)));
+ if (GuiGetStyle(SPINNER, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_LEFT) {
+ textBounds.x = (bounds.x - textBounds.width) - @intToFloat(f32, GuiGetStyle(SPINNER, TEXT_PADDING));
+ }
+ }
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ if (!editMode) {
+ if (tempValue < minValue) {
+ tempValue = minValue;
+ }
+ if (tempValue > maxValue) {
+ tempValue = maxValue;
+ }
+ }
+ pressed = GuiValueBox(spinner, null, &tempValue, minValue, maxValue, editMode);
+ var tempBorderWidth: c_int = GuiGetStyle(BUTTON, BORDER_WIDTH);
+ var tempTextAlign: c_int = GuiGetStyle(BUTTON, TEXT_ALIGNMENT);
+ GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(SPINNER, BORDER_WIDTH));
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ if (GuiButton(leftButtonBound, GuiIconText(RICON_ARROW_LEFT_FILL, null))) {
+ tempValue -= 1;
+ }
+ if (GuiButton(rightButtonBound, GuiIconText(RICON_ARROW_RIGHT_FILL, null))) {
+ tempValue += 1;
+ }
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign);
+ GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth);
+ GuiDrawText(text, textBounds, if (GuiGetStyle(SPINNER, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_RIGHT) GUI_TEXT_ALIGN_LEFT else GUI_TEXT_ALIGN_RIGHT, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LABEL, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ value.* = tempValue;
+ return pressed;
+}
+pub export fn GuiValueBox(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_value: [*c]c_int, arg_minValue: c_int, arg_maxValue: c_int, arg_editMode: bool) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var value = arg_value;
+ var minValue = arg_minValue;
+ var maxValue = arg_maxValue;
+ var editMode = arg_editMode;
+ var state: GuiControlState = guiState;
+ var pressed: bool = @as(c_int, 0) != 0;
+ var textValue: [33]u8 = "\x00"[0..1].* ++ [1]u8{0} ** 32;
+ _ = sprintf(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &textValue)), "%i", value.*);
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ if (text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ textBounds.width = @intToFloat(f32, GetTextWidth(text));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = (bounds.x + bounds.width) + @intToFloat(f32, GuiGetStyle(VALUEBOX, TEXT_PADDING));
+ textBounds.y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(GuiGetStyle(DEFAULT, TEXT_SIZE), @as(c_int, 2)));
+ if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_LEFT) {
+ textBounds.x = (bounds.x - textBounds.width) - @intToFloat(f32, GuiGetStyle(VALUEBOX, TEXT_PADDING));
+ }
+ }
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ var valueHasChanged: bool = @as(c_int, 0) != 0;
+ if (editMode) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ var keyCount: c_int = @bitCast(c_int, @truncate(c_uint, strlen(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &textValue)))));
+ if (keyCount < @as(c_int, 32)) {
+ if (@intToFloat(f32, GetTextWidth(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &textValue)))) < bounds.width) {
+ var key: c_int = GetCharPressed();
+ if ((key >= @as(c_int, 48)) and (key <= @as(c_int, 57))) {
+ textValue[@intCast(c_uint, keyCount)] = @bitCast(u8, @truncate(i8, key));
+ keyCount += 1;
+ valueHasChanged = @as(c_int, 1) != 0;
+ }
+ }
+ }
+ if (keyCount > @as(c_int, 0)) {
+ if (IsKeyPressed(KEY_BACKSPACE)) {
+ keyCount -= 1;
+ textValue[@intCast(c_uint, keyCount)] = '\x00';
+ if (keyCount < @as(c_int, 0)) {
+ keyCount = 0;
+ }
+ valueHasChanged = @as(c_int, 1) != 0;
+ }
+ }
+ if (valueHasChanged) {
+ value.* = TextToInteger(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &textValue)));
+ }
+ if ((@as(c_int, @boolToInt(IsKeyPressed(KEY_ENTER))) != 0) or (!CheckCollisionPointRec(mousePoint, bounds) and (@as(c_int, @boolToInt(IsMouseButtonPressed(MOUSE_BUTTON_LEFT))) != 0))) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ } else {
+ if (value.* > maxValue) {
+ value.* = maxValue;
+ } else if (value.* < minValue) {
+ value.* = minValue;
+ }
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ }
+ }
+ }
+ var baseColor: Color = Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ };
+ if (state == @bitCast(c_uint, GUI_STATE_PRESSED)) {
+ baseColor = GetColor(@bitCast(c_uint, GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)));
+ } else if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ baseColor = GetColor(@bitCast(c_uint, GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)));
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(VALUEBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), baseColor);
+ GuiDrawText(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &textValue)), GetTextBounds(VALUEBOX, bounds), GUI_TEXT_ALIGN_CENTER, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(VALUEBOX, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ if (editMode) {
+ var cursor: Rectangle = Rectangle{
+ .x = ((bounds.x + @intToFloat(f32, @divTrunc(GetTextWidth(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &textValue))), @as(c_int, 2)))) + (bounds.width / @intToFloat(f32, @as(c_int, 2)))) + @intToFloat(f32, @as(c_int, 2)),
+ .y = bounds.y + @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(VALUEBOX, BORDER_WIDTH)),
+ .width = @intToFloat(f32, @as(c_int, 4)),
+ .height = bounds.height - @intToFloat(f32, @as(c_int, 4) * GuiGetStyle(VALUEBOX, BORDER_WIDTH)),
+ };
+ GuiDrawRectangle(cursor, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))), guiAlpha));
+ }
+ GuiDrawText(text, textBounds, if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_RIGHT) GUI_TEXT_ALIGN_LEFT else GUI_TEXT_ALIGN_RIGHT, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LABEL, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ return pressed;
+}
+pub export fn GuiTextBox(arg_bounds: Rectangle, arg_text: [*c]u8, arg_textSize: c_int, arg_editMode: bool) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var textSize = arg_textSize;
+ var editMode = arg_editMode;
+ var state: GuiControlState = guiState;
+ var pressed: bool = @as(c_int, 0) != 0;
+ var cursor: Rectangle = Rectangle{
+ .x = ((bounds.x + @intToFloat(f32, GuiGetStyle(TEXTBOX, TEXT_PADDING))) + @intToFloat(f32, GetTextWidth(text))) + @intToFloat(f32, @as(c_int, 2)),
+ .y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)),
+ .width = @intToFloat(f32, @as(c_int, 4)),
+ .height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)) * @intToFloat(f32, @as(c_int, 2)),
+ };
+ if (cursor.height > bounds.height) {
+ cursor.height = bounds.height - @intToFloat(f32, GuiGetStyle(TEXTBOX, BORDER_WIDTH) * @as(c_int, 2));
+ }
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (editMode) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ var key: c_int = GetCharPressed();
+ var keyCount: c_int = @bitCast(c_int, @truncate(c_uint, strlen(text)));
+ if (keyCount < (textSize - @as(c_int, 1))) {
+ var maxWidth: f32 = bounds.width - @intToFloat(f32, GuiGetStyle(TEXTBOX, TEXT_INNER_PADDING) * @as(c_int, 2));
+ if ((@intToFloat(f32, GetTextWidth(text)) < (maxWidth - @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)))) and (key >= @as(c_int, 32))) {
+ var byteSize: c_int = 0;
+ var textUTF8: [*c]const u8 = CodepointToUTF8(key, &byteSize);
+ {
+ var i: c_int = 0;
+ while (i < byteSize) : (i += 1) {
+ (blk: {
+ const tmp = keyCount;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk textUTF8 + @intCast(usize, tmp) else break :blk textUTF8 - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+ keyCount += 1;
+ }
+ }
+ (blk: {
+ const tmp = keyCount;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = '\x00';
+ }
+ }
+ if (keyCount > @as(c_int, 0)) {
+ if (IsKeyPressed(KEY_BACKSPACE)) {
+ keyCount -= 1;
+ (blk: {
+ const tmp = keyCount;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = '\x00';
+ if (keyCount < @as(c_int, 0)) {
+ keyCount = 0;
+ }
+ }
+ }
+ if ((@as(c_int, @boolToInt(IsKeyPressed(KEY_ENTER))) != 0) or (!CheckCollisionPointRec(mousePoint, bounds) and (@as(c_int, @boolToInt(IsMouseButtonPressed(MOUSE_BUTTON_LEFT))) != 0))) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ var textAlignment: c_int = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT);
+ if (textAlignment == GUI_TEXT_ALIGN_CENTER) {
+ cursor.x = ((bounds.x + @intToFloat(f32, @divTrunc(GetTextWidth(text), @as(c_int, 2)))) + (bounds.width / @intToFloat(f32, @as(c_int, 2)))) + @intToFloat(f32, @as(c_int, 1));
+ } else if (textAlignment == GUI_TEXT_ALIGN_RIGHT) {
+ cursor.x = (bounds.x + bounds.width) - @intToFloat(f32, GuiGetStyle(TEXTBOX, TEXT_INNER_PADDING));
+ }
+ } else {
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ }
+ }
+ }
+ if (state == @bitCast(c_uint, GUI_STATE_PRESSED)) {
+ GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))), guiAlpha));
+ } else if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))), guiAlpha));
+ } else {
+ GuiDrawRectangle(bounds, @as(c_int, 1), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ }
+ GuiDrawText(text, GetTextBounds(TEXTBOX, bounds), GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ if (editMode) {
+ GuiDrawRectangle(cursor, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))), guiAlpha));
+ }
+ return pressed;
+}
+pub export fn GuiTextBoxMulti(arg_bounds: Rectangle, arg_text: [*c]u8, arg_textSize: c_int, arg_editMode: bool) bool {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var textSize = arg_textSize;
+ var editMode = arg_editMode;
+ var state: GuiControlState = guiState;
+ var pressed: bool = @as(c_int, 0) != 0;
+ var textAreaBounds: Rectangle = Rectangle{
+ .x = (bounds.x + @intToFloat(f32, GuiGetStyle(TEXTBOX, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(TEXTBOX, TEXT_INNER_PADDING)),
+ .y = (bounds.y + @intToFloat(f32, GuiGetStyle(TEXTBOX, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(TEXTBOX, TEXT_INNER_PADDING)),
+ .width = bounds.width - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(TEXTBOX, BORDER_WIDTH) + GuiGetStyle(TEXTBOX, TEXT_INNER_PADDING))),
+ .height = bounds.height - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(TEXTBOX, BORDER_WIDTH) + GuiGetStyle(TEXTBOX, TEXT_INNER_PADDING))),
+ };
+ var cursor: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = @intToFloat(f32, -@as(c_int, 1)),
+ .width = @intToFloat(f32, @as(c_int, 4)),
+ .height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)) + @intToFloat(f32, @as(c_int, 2)),
+ };
+ var scaleFactor: f32 = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)) / @intToFloat(f32, guiFont.baseSize);
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (editMode) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ var codepoint: c_int = GetCharPressed();
+ var textLength: c_int = @bitCast(c_int, @truncate(c_uint, strlen(text)));
+ if (textLength < (textSize - @as(c_int, 1))) {
+ if (IsKeyPressed(KEY_ENTER)) {
+ (blk: {
+ const tmp = textLength;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = '\n';
+ textLength += 1;
+ } else if (codepoint >= @as(c_int, 32)) {
+ var charUTF8Length: c_int = 0;
+ var charEncoded: [*c]const u8 = CodepointToUTF8(codepoint, &charUTF8Length);
+ _ = memcpy(@ptrCast(?*anyopaque, text + @bitCast(usize, @intCast(isize, textLength))), @ptrCast(?*const anyopaque, charEncoded), @bitCast(c_ulong, @as(c_long, charUTF8Length)));
+ textLength += charUTF8Length;
+ }
+ }
+ if (textLength > @as(c_int, 0)) {
+ if (IsKeyPressed(KEY_BACKSPACE)) {
+ if (@bitCast(c_int, @as(c_uint, @bitCast(u8, (blk: {
+ const tmp = textLength - @as(c_int, 1);
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*))) < @as(c_int, 127)) {
+ textLength -= 1;
+ (blk: {
+ const tmp = textLength;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = '\x00';
+ } else {
+ var charUTF8Length: c_int = 0;
+ while ((@bitCast(c_int, @as(c_uint, @bitCast(u8, (blk: {
+ const tmp = (textLength - @as(c_int, 1)) - charUTF8Length;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*))) & @as(c_int, 64)) == @as(c_int, 0)) {
+ charUTF8Length += 1;
+ }
+ textLength -= charUTF8Length + @as(c_int, 1);
+ (blk: {
+ const tmp = textLength;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = '\x00';
+ }
+ }
+ }
+ if (!CheckCollisionPointRec(mousePoint, bounds) and (@as(c_int, @boolToInt(IsMouseButtonPressed(MOUSE_BUTTON_LEFT))) != 0)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ } else {
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+ pressed = @as(c_int, 1) != 0;
+ }
+ }
+ }
+ }
+ if (state == @bitCast(c_uint, GUI_STATE_PRESSED)) {
+ GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))), guiAlpha));
+ } else if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))), guiAlpha));
+ } else {
+ GuiDrawRectangle(bounds, @as(c_int, 1), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ }
+ var wrapMode: c_int = 1;
+ var cursorPos: Vector2 = Vector2{
+ .x = textAreaBounds.x,
+ .y = textAreaBounds.y,
+ };
+ {
+ var i: c_int = 0;
+ var codepointLength: c_int = 0;
+ while (@bitCast(c_int, @as(c_uint, (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*)) != @as(c_int, '\x00')) : (i += codepointLength) {
+ var codepoint: c_int = GetCodepoint(text + @bitCast(usize, @intCast(isize, i)), &codepointLength);
+ var index_1: c_int = GetGlyphIndex(guiFont, codepoint);
+ var atlasRec: Rectangle = (blk: {
+ const tmp = index_1;
+ if (tmp >= 0) break :blk guiFont.recs + @intCast(usize, tmp) else break :blk guiFont.recs - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+ var glyphInfo: GlyphInfo = (blk: {
+ const tmp = index_1;
+ if (tmp >= 0) break :blk guiFont.glyphs + @intCast(usize, tmp) else break :blk guiFont.glyphs - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+ if ((codepointLength == @as(c_int, 1)) and (codepoint == @as(c_int, '\n'))) {
+ cursorPos.y += (@intToFloat(f32, guiFont.baseSize) * scaleFactor) + @intToFloat(f32, GuiGetStyle(TEXTBOX, TEXT_LINES_PADDING));
+ cursorPos.x = textAreaBounds.x;
+ } else {
+ if (wrapMode == @as(c_int, 1)) {
+ var glyphWidth: c_int = 0;
+ if (glyphInfo.advanceX != @as(c_int, 0)) {
+ glyphWidth += glyphInfo.advanceX;
+ } else {
+ glyphWidth += @floatToInt(i32, atlasRec.width + @intToFloat(f32, glyphInfo.offsetX));
+ }
+ if ((cursorPos.x + (@intToFloat(f32, glyphWidth) * scaleFactor)) > (textAreaBounds.x + textAreaBounds.width)) {
+ cursorPos.y += (@intToFloat(f32, guiFont.baseSize) * scaleFactor) + @intToFloat(f32, GuiGetStyle(TEXTBOX, TEXT_LINES_PADDING));
+ cursorPos.x = textAreaBounds.x;
+ }
+ } else if (wrapMode == @as(c_int, 2)) {}
+ DrawTextCodepoint(guiFont, codepoint, cursorPos, @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ var glyphWidth: c_int = 0;
+ if (glyphInfo.advanceX != @as(c_int, 0)) {
+ glyphWidth += glyphInfo.advanceX;
+ } else {
+ glyphWidth += @floatToInt(i32, atlasRec.width + @intToFloat(f32, glyphInfo.offsetX));
+ }
+ cursorPos.x += (@intToFloat(f32, glyphWidth) * scaleFactor) + @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SPACING));
+ }
+ }
+ }
+ cursor.x = cursorPos.x;
+ cursor.y = cursorPos.y;
+ if (editMode) {
+ GuiDrawRectangle(cursor, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))), guiAlpha));
+ }
+ return pressed;
+}
+pub export fn GuiSlider(arg_bounds: Rectangle, arg_textLeft: [*c]const u8, arg_textRight: [*c]const u8, arg_value: f32, arg_minValue: f32, arg_maxValue: f32) f32 {
+ var bounds = arg_bounds;
+ var textLeft = arg_textLeft;
+ var textRight = arg_textRight;
+ var value = arg_value;
+ var minValue = arg_minValue;
+ var maxValue = arg_maxValue;
+ return GuiSliderPro(bounds, textLeft, textRight, value, minValue, maxValue, GuiGetStyle(SLIDER, SLIDER_WIDTH));
+}
+pub export fn GuiSliderBar(arg_bounds: Rectangle, arg_textLeft: [*c]const u8, arg_textRight: [*c]const u8, arg_value: f32, arg_minValue: f32, arg_maxValue: f32) f32 {
+ var bounds = arg_bounds;
+ var textLeft = arg_textLeft;
+ var textRight = arg_textRight;
+ var value = arg_value;
+ var minValue = arg_minValue;
+ var maxValue = arg_maxValue;
+ return GuiSliderPro(bounds, textLeft, textRight, value, minValue, maxValue, @as(c_int, 0));
+}
+pub export fn GuiProgressBar(arg_bounds: Rectangle, arg_textLeft: [*c]const u8, arg_textRight: [*c]const u8, arg_value: f32, arg_minValue: f32, arg_maxValue: f32) f32 {
+ var bounds = arg_bounds;
+ var textLeft = arg_textLeft;
+ var textRight = arg_textRight;
+ var value = arg_value;
+ var minValue = arg_minValue;
+ var maxValue = arg_maxValue;
+ var state: GuiControlState = guiState;
+ var progress: Rectangle = Rectangle{
+ .x = bounds.x + @intToFloat(f32, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)),
+ .y = (bounds.y + @intToFloat(f32, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING)),
+ .width = @intToFloat(f32, @as(c_int, 0)),
+ .height = (bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(PROGRESSBAR, BORDER_WIDTH))) - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING)),
+ };
+ if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ progress.width = (value / (maxValue - minValue)) * (bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)));
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(PROGRESSBAR, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ if ((state == @bitCast(c_uint, GUI_STATE_NORMAL)) or (state == @bitCast(c_uint, GUI_STATE_PRESSED))) {
+ GuiDrawRectangle(progress, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))), guiAlpha));
+ } else if (state == @bitCast(c_uint, GUI_STATE_FOCUSED)) {
+ GuiDrawRectangle(progress, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(PROGRESSBAR, TEXT_COLOR_FOCUSED))), guiAlpha));
+ }
+ if (textLeft != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ textBounds.width = @intToFloat(f32, GetTextWidth(textLeft));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = (bounds.x - textBounds.width) - @intToFloat(f32, GuiGetStyle(PROGRESSBAR, TEXT_PADDING));
+ textBounds.y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(GuiGetStyle(DEFAULT, TEXT_SIZE), @as(c_int, 2)));
+ GuiDrawText(textLeft, textBounds, GUI_TEXT_ALIGN_RIGHT, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(PROGRESSBAR, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ if (textRight != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ textBounds.width = @intToFloat(f32, GetTextWidth(textRight));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = (bounds.x + bounds.width) + @intToFloat(f32, GuiGetStyle(PROGRESSBAR, TEXT_PADDING));
+ textBounds.y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(GuiGetStyle(DEFAULT, TEXT_SIZE), @as(c_int, 2)));
+ GuiDrawText(textRight, textBounds, GUI_TEXT_ALIGN_LEFT, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(PROGRESSBAR, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ return value;
+}
+pub export fn GuiStatusBar(arg_bounds: Rectangle, arg_text: [*c]const u8) void {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var state: GuiControlState = guiState;
+ GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(STATUSBAR, if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) BORDER_COLOR_NORMAL else BORDER_COLOR_DISABLED))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(STATUSBAR, if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) BASE_COLOR_NORMAL else BASE_COLOR_DISABLED))), guiAlpha));
+ GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(STATUSBAR, if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) TEXT_COLOR_NORMAL else TEXT_COLOR_DISABLED))), guiAlpha));
+}
+pub export fn GuiDummyRec(arg_bounds: Rectangle, arg_text: [*c]const u8) void {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var state: GuiControlState = guiState;
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ GuiDrawRectangle(bounds, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) BASE_COLOR_NORMAL else BASE_COLOR_DISABLED))), guiAlpha));
+ GuiDrawText(text, GetTextBounds(DEFAULT, bounds), GUI_TEXT_ALIGN_CENTER, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(BUTTON, if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) TEXT_COLOR_NORMAL else TEXT_COLOR_DISABLED))), guiAlpha));
+}
+pub export fn GuiScrollBar(arg_bounds: Rectangle, arg_value: c_int, arg_minValue: c_int, arg_maxValue: c_int) c_int {
+ var bounds = arg_bounds;
+ var value = arg_value;
+ var minValue = arg_minValue;
+ var maxValue = arg_maxValue;
+ var state: GuiControlState = guiState;
+ var isVertical: bool = (if (bounds.width > bounds.height) @as(c_int, 0) else @as(c_int, 1)) != 0;
+ const spinnerSize: c_int = if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE) != 0) if (@as(c_int, @boolToInt(isVertical)) != 0) @floatToInt(c_int, bounds.width) - (@as(c_int, 2) * GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) else @floatToInt(c_int, bounds.height) - (@as(c_int, 2) * GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) else @as(c_int, 0);
+ var arrowUpLeft: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ var arrowDownRight: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ var scrollbar: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ var slider: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ if (value > maxValue) {
+ value = maxValue;
+ }
+ if (value < minValue) {
+ value = minValue;
+ }
+ const range: c_int = maxValue - minValue;
+ var sliderSize: c_int = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE);
+ arrowUpLeft = Rectangle{
+ .x = bounds.x + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .y = bounds.y + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .width = @intToFloat(f32, spinnerSize),
+ .height = @intToFloat(f32, spinnerSize),
+ };
+ if (isVertical) {
+ arrowDownRight = Rectangle{
+ .x = bounds.x + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .y = ((bounds.y + bounds.height) - @intToFloat(f32, spinnerSize)) - @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .width = @intToFloat(f32, spinnerSize),
+ .height = @intToFloat(f32, spinnerSize),
+ };
+ scrollbar = Rectangle{
+ .x = (bounds.x + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_PADDING)),
+ .y = arrowUpLeft.y + arrowUpLeft.height,
+ .width = bounds.width - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING))),
+ .height = ((bounds.height - arrowUpLeft.height) - arrowDownRight.height) - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ };
+ sliderSize = if (@intToFloat(f32, sliderSize) >= scrollbar.height) @floatToInt(c_int, scrollbar.height) - @as(c_int, 2) else sliderSize;
+ slider = Rectangle{
+ .x = (bounds.x + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)),
+ .y = scrollbar.y + @intToFloat(f32, @floatToInt(c_int, (@intToFloat(f32, value - minValue) / @intToFloat(f32, range)) * (scrollbar.height - @intToFloat(f32, sliderSize)))),
+ .width = bounds.width - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING))),
+ .height = @intToFloat(f32, sliderSize),
+ };
+ } else {
+ arrowDownRight = Rectangle{
+ .x = ((bounds.x + bounds.width) - @intToFloat(f32, spinnerSize)) - @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .y = bounds.y + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .width = @intToFloat(f32, spinnerSize),
+ .height = @intToFloat(f32, spinnerSize),
+ };
+ scrollbar = Rectangle{
+ .x = arrowUpLeft.x + arrowUpLeft.width,
+ .y = (bounds.y + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_PADDING)),
+ .width = ((bounds.width - arrowUpLeft.width) - arrowDownRight.width) - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .height = bounds.height - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING))),
+ };
+ sliderSize = if (@intToFloat(f32, sliderSize) >= scrollbar.width) @floatToInt(c_int, scrollbar.width) - @as(c_int, 2) else sliderSize;
+ slider = Rectangle{
+ .x = scrollbar.x + @intToFloat(f32, @floatToInt(c_int, (@intToFloat(f32, value - minValue) / @intToFloat(f32, range)) * (scrollbar.width - @intToFloat(f32, sliderSize)))),
+ .y = (bounds.y + @intToFloat(f32, GuiGetStyle(SCROLLBAR, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)),
+ .width = @intToFloat(f32, sliderSize),
+ .height = bounds.height - @intToFloat(f32, @as(c_int, 2) * (GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING))),
+ };
+ }
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ var wheel: c_int = @floatToInt(c_int, GetMouseWheelMove());
+ if (wheel != @as(c_int, 0)) {
+ value += wheel;
+ }
+ if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+ if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) {
+ value -= @divTrunc(range, GuiGetStyle(SCROLLBAR, SCROLL_SPEED));
+ } else if (CheckCollisionPointRec(mousePoint, arrowDownRight)) {
+ value += @divTrunc(range, GuiGetStyle(SCROLLBAR, SCROLL_SPEED));
+ }
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ } else if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ if (!isVertical) {
+ var scrollArea: Rectangle = Rectangle{
+ .x = arrowUpLeft.x + arrowUpLeft.width,
+ .y = arrowUpLeft.y,
+ .width = scrollbar.width,
+ .height = bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ };
+ if (CheckCollisionPointRec(mousePoint, scrollArea)) {
+ value = @floatToInt(c_int, ((((mousePoint.x - scrollArea.x) - (slider.width / @intToFloat(f32, @as(c_int, 2)))) * @intToFloat(f32, range)) / (scrollArea.width - slider.width)) + @intToFloat(f32, minValue));
+ }
+ } else {
+ var scrollArea: Rectangle = Rectangle{
+ .x = arrowUpLeft.x,
+ .y = arrowUpLeft.y + arrowUpLeft.height,
+ .width = bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SCROLLBAR, BORDER_WIDTH)),
+ .height = scrollbar.height,
+ };
+ if (CheckCollisionPointRec(mousePoint, scrollArea)) {
+ value = @floatToInt(c_int, ((((mousePoint.y - scrollArea.y) - (slider.height / @intToFloat(f32, @as(c_int, 2)))) * @intToFloat(f32, range)) / (scrollArea.height - slider.height)) + @intToFloat(f32, minValue));
+ }
+ }
+ }
+ }
+ if (value > maxValue) {
+ value = maxValue;
+ }
+ if (value < minValue) {
+ value = minValue;
+ }
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(SCROLLBAR, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED))), guiAlpha));
+ GuiDrawRectangle(scrollbar, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(BUTTON, BASE_COLOR_NORMAL))), guiAlpha));
+ GuiDrawRectangle(slider, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SLIDER, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE) != 0) {
+ GuiDrawText(if (@as(c_int, @boolToInt(isVertical)) != 0) "#121#" else "#118#", Rectangle{
+ .x = arrowUpLeft.x,
+ .y = arrowUpLeft.y,
+ .width = if (@as(c_int, @boolToInt(isVertical)) != 0) bounds.width else bounds.height,
+ .height = if (@as(c_int, @boolToInt(isVertical)) != 0) bounds.width else bounds.height,
+ }, GUI_TEXT_ALIGN_CENTER, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SCROLLBAR, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ GuiDrawText(if (@as(c_int, @boolToInt(isVertical)) != 0) "#120#" else "#119#", Rectangle{
+ .x = arrowDownRight.x,
+ .y = arrowDownRight.y,
+ .width = if (@as(c_int, @boolToInt(isVertical)) != 0) bounds.width else bounds.height,
+ .height = if (@as(c_int, @boolToInt(isVertical)) != 0) bounds.width else bounds.height,
+ }, GUI_TEXT_ALIGN_CENTER, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SCROLLBAR, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ return value;
+}
+pub export fn GuiGrid(arg_bounds: Rectangle, arg_spacing: f32, arg_subdivs: c_int) Vector2 {
+ var bounds = arg_bounds;
+ var spacing = arg_spacing;
+ var subdivs = arg_subdivs;
+ var state: GuiControlState = guiState;
+ var mousePoint: Vector2 = GetMousePosition();
+ var currentCell: Vector2 = Vector2{
+ .x = @intToFloat(f32, -@as(c_int, 1)),
+ .y = @intToFloat(f32, -@as(c_int, 1)),
+ };
+ var linesV: c_int = (@floatToInt(c_int, bounds.width / spacing) * subdivs) + @as(c_int, 1);
+ var linesH: c_int = (@floatToInt(c_int, bounds.height / spacing) * subdivs) + @as(c_int, 1);
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ currentCell.x = (mousePoint.x - bounds.x) / spacing;
+ currentCell.y = (mousePoint.y - bounds.y) / spacing;
+ }
+ }
+ while (true) {
+ switch (state) {
+ @bitCast(c_uint, @as(c_int, 0)) => {
+ {
+ if (subdivs > @as(c_int, 0)) {
+ {
+ var i: c_int = 0;
+ while (i < linesV) : (i += 1) {
+ var lineV: Rectangle = Rectangle{
+ .x = bounds.x + ((spacing * @intToFloat(f32, i)) / @intToFloat(f32, subdivs)),
+ .y = bounds.y,
+ .width = @intToFloat(f32, @as(c_int, 1)),
+ .height = bounds.height,
+ };
+ GuiDrawRectangle(lineV, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, if (@import("std").zig.c_translation.signedRemainder(i, subdivs) == @as(c_int, 0)) Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, LINE_COLOR))), 0.15000000596046448 * @intToFloat(f32, @as(c_int, 4))) else Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, LINE_COLOR))), 0.15000000596046448));
+ }
+ }
+ {
+ var i: c_int = 0;
+ while (i < linesH) : (i += 1) {
+ var lineH: Rectangle = Rectangle{
+ .x = bounds.x,
+ .y = bounds.y + ((spacing * @intToFloat(f32, i)) / @intToFloat(f32, subdivs)),
+ .width = bounds.width,
+ .height = @intToFloat(f32, @as(c_int, 1)),
+ };
+ GuiDrawRectangle(lineH, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, if (@import("std").zig.c_translation.signedRemainder(i, subdivs) == @as(c_int, 0)) Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, LINE_COLOR))), 0.15000000596046448 * @intToFloat(f32, @as(c_int, 4))) else Fade(GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, LINE_COLOR))), 0.15000000596046448));
+ }
+ }
+ }
+ }
+ break;
+ },
+ else => break,
+ }
+ break;
+ }
+ return currentCell;
+}
+pub export fn GuiListView(arg_bounds: Rectangle, arg_text: [*c]const u8, arg_scrollIndex: [*c]c_int, arg_active: c_int) c_int {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var scrollIndex = arg_scrollIndex;
+ var active = arg_active;
+ var itemCount: c_int = 0;
+ var items: [*c][*c]const u8 = null;
+ if (text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ items = GuiTextSplit(text, &itemCount, null);
+ }
+ return GuiListViewEx(bounds, items, itemCount, null, scrollIndex, active);
+}
+pub export fn GuiListViewEx(arg_bounds: Rectangle, arg_text: [*c][*c]const u8, arg_count: c_int, arg_focus: [*c]c_int, arg_scrollIndex: [*c]c_int, arg_active: c_int) c_int {
+ var bounds = arg_bounds;
+ var text = arg_text;
+ var count = arg_count;
+ var focus = arg_focus;
+ var scrollIndex = arg_scrollIndex;
+ var active = arg_active;
+ var state: GuiControlState = guiState;
+ var itemFocused: c_int = if (focus == @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), @intToPtr(?*anyopaque, @as(c_int, 0))))) -@as(c_int, 1) else focus.*;
+ var itemSelected: c_int = active;
+ var useScrollBar: bool = @as(c_int, 0) != 0;
+ if (@intToFloat(f32, (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING)) * count) > bounds.height) {
+ useScrollBar = @as(c_int, 1) != 0;
+ }
+ var itemBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ itemBounds.x = bounds.x + @intToFloat(f32, GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING));
+ itemBounds.y = (bounds.y + @intToFloat(f32, GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING))) + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH));
+ itemBounds.width = (bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING))) - @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH));
+ itemBounds.height = @intToFloat(f32, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT));
+ if (useScrollBar) {
+ itemBounds.width -= @intToFloat(f32, GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH));
+ }
+ var visibleItems: c_int = @divTrunc(@floatToInt(c_int, bounds.height), GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING));
+ if (visibleItems > count) {
+ visibleItems = count;
+ }
+ var startIndex: c_int = if (scrollIndex == @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), @intToPtr(?*anyopaque, @as(c_int, 0))))) @as(c_int, 0) else scrollIndex.*;
+ if ((startIndex < @as(c_int, 0)) or (startIndex > (count - visibleItems))) {
+ startIndex = 0;
+ }
+ var endIndex: c_int = startIndex + visibleItems;
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ {
+ var i: c_int = 0;
+ while (i < visibleItems) : (i += 1) {
+ if (CheckCollisionPointRec(mousePoint, itemBounds)) {
+ itemFocused = startIndex + i;
+ if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+ if (itemSelected == (startIndex + i)) {
+ itemSelected = -@as(c_int, 1);
+ } else {
+ itemSelected = startIndex + i;
+ }
+ }
+ break;
+ }
+ itemBounds.y += @intToFloat(f32, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING));
+ }
+ }
+ if (useScrollBar) {
+ var wheelMove: c_int = @floatToInt(c_int, GetMouseWheelMove());
+ startIndex -= wheelMove;
+ if (startIndex < @as(c_int, 0)) {
+ startIndex = 0;
+ } else if (startIndex > (count - visibleItems)) {
+ startIndex = count - visibleItems;
+ }
+ endIndex = startIndex + visibleItems;
+ if (endIndex > count) {
+ endIndex = count;
+ }
+ }
+ } else {
+ itemFocused = -@as(c_int, 1);
+ }
+ itemBounds.y = (bounds.y + @intToFloat(f32, GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING))) + @intToFloat(f32, GuiGetStyle(DEFAULT, BORDER_WIDTH));
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(DEFAULT, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), GetColor(@bitCast(c_uint, GuiGetStyle(DEFAULT, BACKGROUND_COLOR))));
+ {
+ var i: c_int = 0;
+ while ((i < visibleItems) and (text != @ptrCast([*c][*c]const u8, @alignCast(@import("std").meta.alignment([*c]const u8), @intToPtr(?*anyopaque, @as(c_int, 0)))))) : (i += 1) {
+ if (state == @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ if ((startIndex + i) == itemSelected) {
+ GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))), guiAlpha));
+ }
+ GuiDrawText((blk: {
+ const tmp = startIndex + i;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))), guiAlpha));
+ } else {
+ if ((startIndex + i) == itemSelected) {
+ GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))), guiAlpha));
+ GuiDrawText((blk: {
+ const tmp = startIndex + i;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))), guiAlpha));
+ } else if ((startIndex + i) == itemFocused) {
+ GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))), guiAlpha));
+ GuiDrawText((blk: {
+ const tmp = startIndex + i;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))), guiAlpha));
+ } else {
+ GuiDrawText((blk: {
+ const tmp = startIndex + i;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*, GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))), guiAlpha));
+ }
+ }
+ itemBounds.y += @intToFloat(f32, GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_PADDING));
+ }
+ }
+ if (useScrollBar) {
+ var scrollBarBounds: Rectangle = Rectangle{
+ .x = ((bounds.x + bounds.width) - @intToFloat(f32, GuiGetStyle(LISTVIEW, BORDER_WIDTH))) - @intToFloat(f32, GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH)),
+ .y = bounds.y + @intToFloat(f32, GuiGetStyle(LISTVIEW, BORDER_WIDTH)),
+ .width = @intToFloat(f32, GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH)),
+ .height = bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(DEFAULT, BORDER_WIDTH)),
+ };
+ var percentVisible: f32 = @intToFloat(f32, endIndex - startIndex) / @intToFloat(f32, count);
+ var sliderSize: f32 = bounds.height * percentVisible;
+ var prevSliderSize: c_int = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE);
+ var prevScrollSpeed: c_int = GuiGetStyle(SCROLLBAR, SCROLL_SPEED);
+ GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, @floatToInt(c_int, sliderSize));
+ GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems);
+ startIndex = GuiScrollBar(scrollBarBounds, startIndex, @as(c_int, 0), count - visibleItems);
+ GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed);
+ GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, prevSliderSize);
+ }
+ if (focus != @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ focus.* = itemFocused;
+ }
+ if (scrollIndex != @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ scrollIndex.* = startIndex;
+ }
+ return itemSelected;
+}
+pub export fn GuiMessageBox(arg_bounds: Rectangle, arg_title: [*c]const u8, arg_message: [*c]const u8, arg_buttons: [*c]const u8) c_int {
+ var bounds = arg_bounds;
+ var title = arg_title;
+ var message = arg_message;
+ var buttons = arg_buttons;
+ var clicked: c_int = -@as(c_int, 1);
+ var buttonCount: c_int = 0;
+ var buttonsText: [*c][*c]const u8 = GuiTextSplit(buttons, &buttonCount, null);
+ var buttonBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ buttonBounds.x = bounds.x + @intToFloat(f32, @as(c_int, 10));
+ buttonBounds.y = ((bounds.y + bounds.height) - @intToFloat(f32, @as(c_int, 24))) - @intToFloat(f32, @as(c_int, 10));
+ buttonBounds.width = (bounds.width - @intToFloat(f32, @as(c_int, 10) * (buttonCount + @as(c_int, 1)))) / @intToFloat(f32, buttonCount);
+ buttonBounds.height = 24;
+ var textSize: Vector2 = MeasureTextEx(guiFont, message, @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)), @intToFloat(f32, @as(c_int, 1)));
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ textBounds.x = (bounds.x + (bounds.width / @intToFloat(f32, @as(c_int, 2)))) - (textSize.x / @intToFloat(f32, @as(c_int, 2)));
+ textBounds.y = ((bounds.y + @intToFloat(f32, @as(c_int, 22))) + ((((bounds.height - @intToFloat(f32, @as(c_int, 22))) - @intToFloat(f32, @as(c_int, 24))) - @intToFloat(f32, @as(c_int, 10))) / @intToFloat(f32, @as(c_int, 2)))) - (textSize.y / @intToFloat(f32, @as(c_int, 2)));
+ textBounds.width = textSize.x;
+ textBounds.height = textSize.y;
+ if (GuiWindowBox(bounds, title)) {
+ clicked = 0;
+ }
+ var prevTextAlignment: c_int = GuiGetStyle(LABEL, TEXT_ALIGNMENT);
+ GuiSetStyle(LABEL, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ GuiLabel(textBounds, message);
+ GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment);
+ prevTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT);
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ {
+ var i: c_int = 0;
+ while (i < buttonCount) : (i += 1) {
+ if (GuiButton(buttonBounds, (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk buttonsText + @intCast(usize, tmp) else break :blk buttonsText - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*)) {
+ clicked = i + @as(c_int, 1);
+ }
+ buttonBounds.x += buttonBounds.width + @intToFloat(f32, @as(c_int, 10));
+ }
+ }
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevTextAlignment);
+ return clicked;
+}
+pub export fn GuiTextInputBox(arg_bounds: Rectangle, arg_title: [*c]const u8, arg_message: [*c]const u8, arg_buttons: [*c]const u8, arg_text: [*c]u8) c_int {
+ var bounds = arg_bounds;
+ var title = arg_title;
+ var message = arg_message;
+ var buttons = arg_buttons;
+ var text = arg_text;
+ const textEditMode = struct {
+ var static: bool = @as(c_int, 0) != 0;
+ };
+ var btnIndex: c_int = -@as(c_int, 1);
+ var buttonCount: c_int = 0;
+ var buttonsText: [*c][*c]const u8 = GuiTextSplit(buttons, &buttonCount, null);
+ var buttonBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ buttonBounds.x = bounds.x + @intToFloat(f32, @as(c_int, 10));
+ buttonBounds.y = ((bounds.y + bounds.height) - @intToFloat(f32, @as(c_int, 24))) - @intToFloat(f32, @as(c_int, 10));
+ buttonBounds.width = (bounds.width - @intToFloat(f32, @as(c_int, 10) * (buttonCount + @as(c_int, 1)))) / @intToFloat(f32, buttonCount);
+ buttonBounds.height = 24;
+ var messageInputHeight: c_int = (((@floatToInt(c_int, bounds.height) - @as(c_int, 22)) - GuiGetStyle(STATUSBAR, BORDER_WIDTH)) - @as(c_int, 24)) - (@as(c_int, 2) * @as(c_int, 10));
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ if (message != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var textSize: Vector2 = MeasureTextEx(guiFont, message, @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)), @intToFloat(f32, @as(c_int, 1)));
+ textBounds.x = (bounds.x + (bounds.width / @intToFloat(f32, @as(c_int, 2)))) - (textSize.x / @intToFloat(f32, @as(c_int, 2)));
+ textBounds.y = ((bounds.y + @intToFloat(f32, @as(c_int, 22))) + @intToFloat(f32, @divTrunc(messageInputHeight, @as(c_int, 4)))) - (textSize.y / @intToFloat(f32, @as(c_int, 2)));
+ textBounds.width = textSize.x;
+ textBounds.height = textSize.y;
+ }
+ var textBoxBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ textBoxBounds.x = bounds.x + @intToFloat(f32, @as(c_int, 10));
+ textBoxBounds.y = (bounds.y + @intToFloat(f32, @as(c_int, 22))) - @intToFloat(f32, @divTrunc(@as(c_int, 30), @as(c_int, 2)));
+ if (message == @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ textBoxBounds.y += @intToFloat(f32, @divTrunc(messageInputHeight, @as(c_int, 2)));
+ } else {
+ textBoxBounds.y += @intToFloat(f32, @divTrunc(messageInputHeight, @as(c_int, 2)) + @divTrunc(messageInputHeight, @as(c_int, 4)));
+ }
+ textBoxBounds.width = bounds.width - @intToFloat(f32, @as(c_int, 10) * @as(c_int, 2));
+ textBoxBounds.height = 30;
+ if (GuiWindowBox(bounds, title)) {
+ btnIndex = 0;
+ }
+ if (message != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var prevTextAlignment: c_int = GuiGetStyle(LABEL, TEXT_ALIGNMENT);
+ GuiSetStyle(LABEL, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ GuiLabel(textBounds, message);
+ GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment);
+ }
+ if (GuiTextBox(textBoxBounds, text, @as(c_int, 256), textEditMode.static)) {
+ textEditMode.static = !textEditMode.static;
+ }
+ var prevBtnTextAlignment: c_int = GuiGetStyle(BUTTON, TEXT_ALIGNMENT);
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ {
+ var i: c_int = 0;
+ while (i < buttonCount) : (i += 1) {
+ if (GuiButton(buttonBounds, (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk buttonsText + @intCast(usize, tmp) else break :blk buttonsText - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*)) {
+ btnIndex = i + @as(c_int, 1);
+ }
+ buttonBounds.x += buttonBounds.width + @intToFloat(f32, @as(c_int, 10));
+ }
+ }
+ GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevBtnTextAlignment);
+ return btnIndex;
+}
+pub export fn GuiColorPicker(arg_bounds: Rectangle, arg_color: Color) Color {
+ var bounds = arg_bounds;
+ var color = arg_color;
+ color = GuiColorPanel(bounds, color);
+ var boundsHue: Rectangle = Rectangle{
+ .x = (bounds.x + bounds.width) + @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_PADDING)),
+ .y = bounds.y,
+ .width = @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_WIDTH)),
+ .height = bounds.height,
+ };
+ var hsv: Vector3 = ConvertRGBtoHSV(Vector3{
+ .x = @intToFloat(f32, @bitCast(c_int, @as(c_uint, color.r))) / 255.0,
+ .y = @intToFloat(f32, @bitCast(c_int, @as(c_uint, color.g))) / 255.0,
+ .z = @intToFloat(f32, @bitCast(c_int, @as(c_uint, color.b))) / 255.0,
+ });
+ hsv.x = GuiColorBarHue(boundsHue, hsv.x);
+ var rgb: Vector3 = ConvertHSVtoRGB(hsv);
+ color = Color{
+ .r = @floatToInt(u8, roundf(rgb.x * 255.0)),
+ .g = @floatToInt(u8, roundf(rgb.y * 255.0)),
+ .b = @floatToInt(u8, roundf(rgb.z * 255.0)),
+ .a = color.a,
+ };
+ return color;
+}
+pub export fn GuiColorPanel(arg_bounds: Rectangle, arg_color: Color) Color {
+ var bounds = arg_bounds;
+ var color = arg_color;
+ const colWhite: Color = Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ };
+ const colBlack: Color = Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ };
+ var state: GuiControlState = guiState;
+ var pickerSelector: Vector2 = Vector2{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ };
+ var vcolor: Vector3 = Vector3{
+ .x = @intToFloat(f32, color.r) / 255.0,
+ .y = @intToFloat(f32, color.g) / 255.0,
+ .z = @intToFloat(f32, color.b) / 255.0,
+ };
+ var hsv: Vector3 = ConvertRGBtoHSV(vcolor);
+ pickerSelector.x = bounds.x + (hsv.y * bounds.width);
+ pickerSelector.y = bounds.y + ((1.0 - hsv.z) * bounds.height);
+ var hue: f32 = -1.0;
+ var maxHue: Vector3 = Vector3{
+ .x = if (hue >= 0.0) hue else hsv.x,
+ .y = 1.0,
+ .z = 1.0,
+ };
+ var rgbHue: Vector3 = ConvertHSVtoRGB(maxHue);
+ var maxHueCol: Color = Color{
+ .r = @floatToInt(u8, 255.0 * rgbHue.x),
+ .g = @floatToInt(u8, 255.0 * rgbHue.y),
+ .b = @floatToInt(u8, 255.0 * rgbHue.z),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ };
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ pickerSelector = mousePoint;
+ var colorPick: Vector2 = Vector2{
+ .x = pickerSelector.x - bounds.x,
+ .y = pickerSelector.y - bounds.y,
+ };
+ colorPick.x /= bounds.width;
+ colorPick.y /= bounds.height;
+ hsv.y = colorPick.x;
+ hsv.z = 1.0 - colorPick.y;
+ var rgb: Vector3 = ConvertHSVtoRGB(hsv);
+ color = Color{
+ .r = @floatToInt(u8, 255.0 * rgb.x),
+ .g = @floatToInt(u8, 255.0 * rgb.y),
+ .b = @floatToInt(u8, 255.0 * rgb.z),
+ .a = @floatToInt(u8, (255.0 * @intToFloat(f32, color.a)) / 255.0),
+ };
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ DrawRectangleGradientEx(bounds, Fade(colWhite, guiAlpha), Fade(colWhite, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha));
+ DrawRectangleGradientEx(bounds, Fade(colBlack, @intToFloat(f32, @as(c_int, 0))), Fade(colBlack, guiAlpha), Fade(colBlack, guiAlpha), Fade(colBlack, @intToFloat(f32, @as(c_int, 0))));
+ var selector: Rectangle = Rectangle{
+ .x = pickerSelector.x - @intToFloat(f32, @divTrunc(GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), @as(c_int, 2))),
+ .y = pickerSelector.y - @intToFloat(f32, @divTrunc(GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), @as(c_int, 2))),
+ .width = @intToFloat(f32, GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)),
+ .height = @intToFloat(f32, GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)),
+ };
+ GuiDrawRectangle(selector, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(colWhite, guiAlpha));
+ } else {
+ DrawRectangleGradientEx(bounds, Fade(Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED))), 0.10000000149011612), guiAlpha), Fade(Fade(colBlack, 0.6000000238418579), guiAlpha), Fade(Fade(colBlack, 0.6000000238418579), guiAlpha), Fade(Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED))), 0.6000000238418579), guiAlpha));
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ return color;
+}
+pub export fn GuiColorBarAlpha(arg_bounds: Rectangle, arg_alpha: f32) f32 {
+ var bounds = arg_bounds;
+ var alpha = arg_alpha;
+ var state: GuiControlState = guiState;
+ var selector: Rectangle = Rectangle{
+ .x = (bounds.x + (alpha * bounds.width)) - @intToFloat(f32, @divTrunc(GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), @as(c_int, 2))),
+ .y = bounds.y - @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)),
+ .width = @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)),
+ .height = bounds.height + @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW) * @as(c_int, 2)),
+ };
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if ((@as(c_int, @boolToInt(CheckCollisionPointRec(mousePoint, bounds))) != 0) or (@as(c_int, @boolToInt(CheckCollisionPointRec(mousePoint, selector))) != 0)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ alpha = (mousePoint.x - bounds.x) / bounds.width;
+ if (alpha <= 0.0) {
+ alpha = 0.0;
+ }
+ if (alpha >= 1.0) {
+ alpha = 1.0;
+ }
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ var checksX: c_int = @divTrunc(@floatToInt(c_int, bounds.width), @as(c_int, 10));
+ var checksY: c_int = @divTrunc(@floatToInt(c_int, bounds.height), @as(c_int, 10));
+ {
+ var x: c_int = 0;
+ while (x < checksX) : (x += 1) {
+ {
+ var y: c_int = 0;
+ while (y < checksY) : (y += 1) {
+ var check: Rectangle = Rectangle{
+ .x = bounds.x + @intToFloat(f32, x * @as(c_int, 10)),
+ .y = bounds.y + @intToFloat(f32, y * @as(c_int, 10)),
+ .width = @intToFloat(f32, @as(c_int, 10)),
+ .height = @intToFloat(f32, @as(c_int, 10)),
+ };
+ GuiDrawRectangle(check, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, if (@import("std").zig.c_translation.signedRemainder(x + y, @as(c_int, 2)) != 0) Fade(Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED))), 0.4000000059604645), guiAlpha) else Fade(Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED))), 0.4000000059604645), guiAlpha));
+ }
+ }
+ }
+ }
+ DrawRectangleGradientEx(bounds, Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha));
+ } else {
+ DrawRectangleGradientEx(bounds, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED))), 0.10000000149011612), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED))), 0.10000000149011612), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED))), guiAlpha));
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ GuiDrawRectangle(selector, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ return alpha;
+}
+pub export fn GuiColorBarHue(arg_bounds: Rectangle, arg_hue: f32) f32 {
+ var bounds = arg_bounds;
+ var hue = arg_hue;
+ var state: GuiControlState = guiState;
+ var selector: Rectangle = Rectangle{
+ .x = bounds.x - @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)),
+ .y = (bounds.y + ((hue / 360.0) * bounds.height)) - @intToFloat(f32, @divTrunc(GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), @as(c_int, 2))),
+ .width = bounds.width + @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW) * @as(c_int, 2)),
+ .height = @intToFloat(f32, GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)),
+ };
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if ((@as(c_int, @boolToInt(CheckCollisionPointRec(mousePoint, bounds))) != 0) or (@as(c_int, @boolToInt(CheckCollisionPointRec(mousePoint, selector))) != 0)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ hue = ((mousePoint.y - bounds.y) * @intToFloat(f32, @as(c_int, 360))) / bounds.height;
+ if (hue <= 0.0) {
+ hue = 0.0;
+ }
+ if (hue >= 359.0) {
+ hue = 359.0;
+ }
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ }
+ if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) {
+ DrawRectangleGradientV(@floatToInt(c_int, bounds.x), @floatToInt(c_int, bounds.y), @floatToInt(c_int, bounds.width), @floatToInt(c_int, ceil(@floatCast(f64, bounds.height / @intToFloat(f32, @as(c_int, 6))))), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha));
+ DrawRectangleGradientV(@floatToInt(c_int, bounds.x), @floatToInt(c_int, bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 6)))), @floatToInt(c_int, bounds.width), @floatToInt(c_int, ceil(@floatCast(f64, bounds.height / @intToFloat(f32, @as(c_int, 6))))), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha));
+ DrawRectangleGradientV(@floatToInt(c_int, bounds.x), @floatToInt(c_int, bounds.y + (@intToFloat(f32, @as(c_int, 2)) * (bounds.height / @intToFloat(f32, @as(c_int, 6))))), @floatToInt(c_int, bounds.width), @floatToInt(c_int, ceil(@floatCast(f64, bounds.height / @intToFloat(f32, @as(c_int, 6))))), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha));
+ DrawRectangleGradientV(@floatToInt(c_int, bounds.x), @floatToInt(c_int, bounds.y + (@intToFloat(f32, @as(c_int, 3)) * (bounds.height / @intToFloat(f32, @as(c_int, 6))))), @floatToInt(c_int, bounds.width), @floatToInt(c_int, ceil(@floatCast(f64, bounds.height / @intToFloat(f32, @as(c_int, 6))))), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha));
+ DrawRectangleGradientV(@floatToInt(c_int, bounds.x), @floatToInt(c_int, bounds.y + (@intToFloat(f32, @as(c_int, 4)) * (bounds.height / @intToFloat(f32, @as(c_int, 6))))), @floatToInt(c_int, bounds.width), @floatToInt(c_int, ceil(@floatCast(f64, bounds.height / @intToFloat(f32, @as(c_int, 6))))), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha));
+ DrawRectangleGradientV(@floatToInt(c_int, bounds.x), @floatToInt(c_int, bounds.y + (@intToFloat(f32, @as(c_int, 5)) * (bounds.height / @intToFloat(f32, @as(c_int, 6))))), @floatToInt(c_int, bounds.width), @floatToInt(c_int, bounds.height / @intToFloat(f32, @as(c_int, 6))), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha), Fade(Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 255))),
+ }, guiAlpha));
+ } else {
+ DrawRectangleGradientV(@floatToInt(c_int, bounds.x), @floatToInt(c_int, bounds.y), @floatToInt(c_int, bounds.width), @floatToInt(c_int, bounds.height), Fade(Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED))), 0.10000000149011612), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED))), guiAlpha));
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ });
+ GuiDrawRectangle(selector, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(COLORPICKER, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ return hue;
+}
+pub const struct__IO_marker = opaque {};
+pub const __off_t = c_long;
+pub const _IO_lock_t = anyopaque;
+pub const __off64_t = c_long;
+pub const struct__IO_codecvt = opaque {};
+pub const struct__IO_wide_data = opaque {};
+pub const struct__IO_FILE = extern struct {
+ _flags: c_int,
+ _IO_read_ptr: [*c]u8,
+ _IO_read_end: [*c]u8,
+ _IO_read_base: [*c]u8,
+ _IO_write_base: [*c]u8,
+ _IO_write_ptr: [*c]u8,
+ _IO_write_end: [*c]u8,
+ _IO_buf_base: [*c]u8,
+ _IO_buf_end: [*c]u8,
+ _IO_save_base: [*c]u8,
+ _IO_backup_base: [*c]u8,
+ _IO_save_end: [*c]u8,
+ _markers: ?*struct__IO_marker,
+ _chain: [*c]struct__IO_FILE,
+ _fileno: c_int,
+ _flags2: c_int,
+ _old_offset: __off_t,
+ _cur_column: c_ushort,
+ _vtable_offset: i8,
+ _shortbuf: [1]u8,
+ _lock: ?*_IO_lock_t,
+ _offset: __off64_t,
+ _codecvt: ?*struct__IO_codecvt,
+ _wide_data: ?*struct__IO_wide_data,
+ _freeres_list: [*c]struct__IO_FILE,
+ _freeres_buf: ?*anyopaque,
+ __pad5: usize,
+ _mode: c_int,
+ _unused2: [20]u8,
+};
+pub const FILE = struct__IO_FILE;
+pub export fn GuiLoadStyle(arg_fileName: [*c]const u8) void {
+ var fileName = arg_fileName;
+ var tryBinary: bool = @as(c_int, 0) != 0;
+ var rgsFile: [*c]FILE = fopen(fileName, "rt");
+ if (rgsFile != @ptrCast([*c]FILE, @alignCast(@import("std").meta.alignment(FILE), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var buffer: [256]u8 = [1]u8{
+ 0,
+ } ++ [1]u8{0} ** 255;
+ _ = fgets(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer)), @as(c_int, 256), rgsFile);
+ if (@bitCast(c_int, @as(c_uint, buffer[@intCast(c_uint, @as(c_int, 0))])) == @as(c_int, '#')) {
+ var controlId: c_int = 0;
+ var propertyId: c_int = 0;
+ var propertyValue: c_uint = 0;
+ while (!(feof(rgsFile) != 0)) {
+ while (true) {
+ switch (@bitCast(c_int, @as(c_uint, buffer[@intCast(c_uint, @as(c_int, 0))]))) {
+ @as(c_int, 112) => {
+ {
+ _ = sscanf(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer)), "p %d %d 0x%x", &controlId, &propertyId, &propertyValue);
+ GuiSetStyle(controlId, propertyId, @bitCast(c_int, propertyValue));
+ }
+ break;
+ },
+ @as(c_int, 102) => {
+ {
+ var fontSize: c_int = 0;
+ var charmapFileName: [256]u8 = [1]u8{
+ 0,
+ } ++ [1]u8{0} ** 255;
+ var fontFileName: [256]u8 = [1]u8{
+ 0,
+ } ++ [1]u8{0} ** 255;
+ _ = sscanf(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer)), "f %d %s %[^\r\n]s", &fontSize, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &charmapFileName)), @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &fontFileName)));
+ var font: Font = Font{
+ .baseSize = @as(c_int, 0),
+ .glyphCount = 0,
+ .glyphPadding = 0,
+ .texture = @import("std").mem.zeroes(struct_Texture),
+ .recs = null,
+ .glyphs = null,
+ };
+ if (@bitCast(c_int, @as(c_uint, charmapFileName[@intCast(c_uint, @as(c_int, 0))])) != @as(c_int, '0')) {
+ var charValues: [*c]u8 = LoadFileText(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &charmapFileName)));
+ if (charValues != @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var glyphCount: c_int = 0;
+ var chars: [*c][*c]const u8 = TextSplit(charValues, @bitCast(u8, @truncate(i8, @as(c_int, '\n'))), &glyphCount);
+ var values: [*c]c_int = @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), malloc(@bitCast(c_ulong, @as(c_long, glyphCount)) *% @sizeOf(c_int))));
+ {
+ var i: c_int = 0;
+ while (i < glyphCount) : (i += 1) {
+ (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk values + @intCast(usize, tmp) else break :blk values - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = TextToInteger((blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk chars + @intCast(usize, tmp) else break :blk chars - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*);
+ }
+ }
+ font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &fontFileName))), fontSize, values, glyphCount);
+ free(@ptrCast(?*anyopaque, values));
+ }
+ } else {
+ font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &fontFileName))), fontSize, null, @as(c_int, 0));
+ }
+ if ((font.texture.id > @bitCast(c_uint, @as(c_int, 0))) and (font.glyphCount > @as(c_int, 0))) {
+ GuiSetFont(font);
+ }
+ }
+ break;
+ },
+ else => break,
+ }
+ break;
+ }
+ _ = fgets(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer)), @as(c_int, 256), rgsFile);
+ }
+ } else {
+ tryBinary = @as(c_int, 1) != 0;
+ }
+ _ = fclose(rgsFile);
+ }
+ if (tryBinary) {
+ rgsFile = fopen(fileName, "rb");
+ if (rgsFile == @ptrCast([*c]FILE, @alignCast(@import("std").meta.alignment(FILE), @intToPtr(?*anyopaque, @as(c_int, 0))))) return;
+ var signature: [5]u8 = [1]u8{0} ** 5;
+ var version: c_short = 0;
+ var reserved: c_short = 0;
+ var propertyCount: c_int = 0;
+ _ = fread(@ptrCast(?*anyopaque, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &signature))), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @bitCast(c_ulong, @as(c_long, @as(c_int, 4))), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &version), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &reserved), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &propertyCount), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ if ((((@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 0))])) == @as(c_int, 'r')) and (@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 1))])) == @as(c_int, 'G'))) and (@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 2))])) == @as(c_int, 'S'))) and (@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 3))])) == @as(c_int, ' '))) {
+ var controlId: c_short = 0;
+ var propertyId: c_short = 0;
+ var propertyValue: c_int = 0;
+ {
+ var i: c_int = 0;
+ while (i < propertyCount) : (i += 1) {
+ _ = fread(@ptrCast(?*anyopaque, &controlId), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &propertyId), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &propertyValue), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ if (@bitCast(c_int, @as(c_int, controlId)) == @as(c_int, 0)) {
+ GuiSetStyle(@as(c_int, 0), @bitCast(c_int, @as(c_int, propertyId)), propertyValue);
+ if (@bitCast(c_int, @as(c_int, propertyId)) < @as(c_int, 16)) {
+ var i_1: c_int = 1;
+ while (i_1 < @as(c_int, 16)) : (i_1 += 1) {
+ GuiSetStyle(i_1, @bitCast(c_int, @as(c_int, propertyId)), propertyValue);
+ }
+ }
+ } else {
+ GuiSetStyle(@bitCast(c_int, @as(c_int, controlId)), @bitCast(c_int, @as(c_int, propertyId)), propertyValue);
+ }
+ }
+ }
+ var fontDataSize: c_int = 0;
+ _ = fread(@ptrCast(?*anyopaque, &fontDataSize), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ if (fontDataSize > @as(c_int, 0)) {
+ var font: Font = Font{
+ .baseSize = @as(c_int, 0),
+ .glyphCount = 0,
+ .glyphPadding = 0,
+ .texture = @import("std").mem.zeroes(struct_Texture),
+ .recs = null,
+ .glyphs = null,
+ };
+ var fontType: c_int = 0;
+ var whiteRec: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ _ = fread(@ptrCast(?*anyopaque, &font.baseSize), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &font.glyphCount), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &fontType), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &whiteRec), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(Rectangle), rgsFile);
+ var fontImageSize: c_int = 0;
+ _ = fread(@ptrCast(?*anyopaque, &fontImageSize), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ if (fontImageSize > @as(c_int, 0)) {
+ var imFont: Image = Image{
+ .data = null,
+ .width = 0,
+ .height = 0,
+ .mipmaps = 0,
+ .format = 0,
+ };
+ imFont.mipmaps = 1;
+ _ = fread(@ptrCast(?*anyopaque, &imFont.width), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &imFont.height), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &imFont.format), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ imFont.data = @ptrCast(?*anyopaque, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), malloc(@bitCast(c_ulong, @as(c_long, fontImageSize))))));
+ _ = fread(imFont.data, @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @bitCast(c_ulong, @as(c_long, fontImageSize)), rgsFile);
+ font.texture = LoadTextureFromImage(imFont);
+ free(imFont.data);
+ }
+ font.recs = @ptrCast([*c]Rectangle, @alignCast(@import("std").meta.alignment(Rectangle), calloc(@bitCast(c_ulong, @as(c_long, font.glyphCount)), @sizeOf(Rectangle))));
+ {
+ var i: c_int = 0;
+ while (i < font.glyphCount) : (i += 1) {
+ _ = fread(@ptrCast(?*anyopaque, &(blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk font.recs + @intCast(usize, tmp) else break :blk font.recs - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(Rectangle), rgsFile);
+ }
+ }
+ font.glyphs = @ptrCast([*c]GlyphInfo, @alignCast(@import("std").meta.alignment(GlyphInfo), calloc(@bitCast(c_ulong, @as(c_long, font.glyphCount)), @sizeOf(GlyphInfo))));
+ {
+ var i: c_int = 0;
+ while (i < font.glyphCount) : (i += 1) {
+ _ = fread(@ptrCast(?*anyopaque, &(blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk font.glyphs + @intCast(usize, tmp) else break :blk font.glyphs - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*.value), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &(blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk font.glyphs + @intCast(usize, tmp) else break :blk font.glyphs - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*.offsetX), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &(blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk font.glyphs + @intCast(usize, tmp) else break :blk font.glyphs - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*.offsetY), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ _ = fread(@ptrCast(?*anyopaque, &(blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk font.glyphs + @intCast(usize, tmp) else break :blk font.glyphs - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*.advanceX), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_int), rgsFile);
+ }
+ }
+ GuiSetFont(font);
+ if ((whiteRec.width != @intToFloat(f32, @as(c_int, 0))) and (whiteRec.height != @intToFloat(f32, @as(c_int, 0)))) {
+ SetShapesTexture(font.texture, whiteRec);
+ }
+ }
+ }
+ _ = fclose(rgsFile);
+ }
+}
+pub export fn GuiLoadStyleDefault() void {
+ guiStyleLoaded = @as(c_int, 1) != 0;
+ GuiSetStyle(DEFAULT, BORDER_COLOR_NORMAL, @bitCast(c_int, @as(c_uint, 2206434303)));
+ GuiSetStyle(DEFAULT, BASE_COLOR_NORMAL, @bitCast(c_int, @as(c_uint, 3385444863)));
+ GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, @as(c_int, 1751673087));
+ GuiSetStyle(DEFAULT, BORDER_COLOR_FOCUSED, @as(c_int, 1538447871));
+ GuiSetStyle(DEFAULT, BASE_COLOR_FOCUSED, @bitCast(c_int, @as(c_uint, 3387948799)));
+ GuiSetStyle(DEFAULT, TEXT_COLOR_FOCUSED, @as(c_int, 1822145791));
+ GuiSetStyle(DEFAULT, BORDER_COLOR_PRESSED, @as(c_int, 76728319));
+ GuiSetStyle(DEFAULT, BASE_COLOR_PRESSED, @bitCast(c_int, @as(c_uint, 2548629503)));
+ GuiSetStyle(DEFAULT, TEXT_COLOR_PRESSED, @as(c_int, 915124223));
+ GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, @bitCast(c_int, @as(c_uint, 3049374463)));
+ GuiSetStyle(DEFAULT, BASE_COLOR_DISABLED, @bitCast(c_int, @as(c_uint, 3874089471)));
+ GuiSetStyle(DEFAULT, TEXT_COLOR_DISABLED, @bitCast(c_int, @as(c_uint, 2931276031)));
+ GuiSetStyle(DEFAULT, BORDER_WIDTH, @as(c_int, 1));
+ GuiSetStyle(DEFAULT, TEXT_PADDING, @as(c_int, 0));
+ GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
+ GuiSetStyle(LABEL, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT);
+ GuiSetStyle(BUTTON, BORDER_WIDTH, @as(c_int, 2));
+ GuiSetStyle(SLIDER, TEXT_PADDING, @as(c_int, 5));
+ GuiSetStyle(CHECKBOX, TEXT_PADDING, @as(c_int, 5));
+ GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_RIGHT);
+ GuiSetStyle(TEXTBOX, TEXT_PADDING, @as(c_int, 5));
+ GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT);
+ GuiSetStyle(VALUEBOX, TEXT_PADDING, @as(c_int, 4));
+ GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT);
+ GuiSetStyle(SPINNER, TEXT_PADDING, @as(c_int, 4));
+ GuiSetStyle(SPINNER, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT);
+ GuiSetStyle(STATUSBAR, TEXT_PADDING, @as(c_int, 6));
+ GuiSetStyle(STATUSBAR, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT);
+ GuiSetStyle(DEFAULT, TEXT_SIZE, @as(c_int, 10));
+ GuiSetStyle(DEFAULT, TEXT_SPACING, @as(c_int, 1));
+ GuiSetStyle(DEFAULT, LINE_COLOR, @bitCast(c_int, @as(c_uint, 2427172351)));
+ GuiSetStyle(DEFAULT, BACKGROUND_COLOR, @bitCast(c_int, @as(c_uint, 4126537215)));
+ GuiSetStyle(TOGGLE, GROUP_PADDING, @as(c_int, 2));
+ GuiSetStyle(SLIDER, SLIDER_WIDTH, @as(c_int, 15));
+ GuiSetStyle(SLIDER, SLIDER_PADDING, @as(c_int, 1));
+ GuiSetStyle(PROGRESSBAR, PROGRESS_PADDING, @as(c_int, 1));
+ GuiSetStyle(CHECKBOX, CHECK_PADDING, @as(c_int, 1));
+ GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, @as(c_int, 30));
+ GuiSetStyle(COMBOBOX, COMBO_BUTTON_PADDING, @as(c_int, 2));
+ GuiSetStyle(DROPDOWNBOX, ARROW_PADDING, @as(c_int, 16));
+ GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_PADDING, @as(c_int, 2));
+ GuiSetStyle(TEXTBOX, TEXT_LINES_PADDING, @as(c_int, 5));
+ GuiSetStyle(TEXTBOX, TEXT_INNER_PADDING, @as(c_int, 4));
+ GuiSetStyle(TEXTBOX, COLOR_SELECTED_FG, @bitCast(c_int, @as(c_uint, 4043308799)));
+ GuiSetStyle(TEXTBOX, COLOR_SELECTED_BG, @bitCast(c_int, @as(c_uint, 2207973344)));
+ GuiSetStyle(SPINNER, SPIN_BUTTON_WIDTH, @as(c_int, 20));
+ GuiSetStyle(SPINNER, SPIN_BUTTON_PADDING, @as(c_int, 2));
+ GuiSetStyle(SCROLLBAR, BORDER_WIDTH, @as(c_int, 0));
+ GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, @as(c_int, 0));
+ GuiSetStyle(SCROLLBAR, ARROWS_SIZE, @as(c_int, 6));
+ GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, @as(c_int, 0));
+ GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, @as(c_int, 16));
+ GuiSetStyle(SCROLLBAR, SCROLL_PADDING, @as(c_int, 0));
+ GuiSetStyle(SCROLLBAR, SCROLL_SPEED, @as(c_int, 10));
+ GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, @as(c_int, 30));
+ GuiSetStyle(LISTVIEW, LIST_ITEMS_PADDING, @as(c_int, 2));
+ GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, @as(c_int, 10));
+ GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_RIGHT_SIDE);
+ GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, @as(c_int, 6));
+ GuiSetStyle(COLORPICKER, HUEBAR_WIDTH, @as(c_int, 20));
+ GuiSetStyle(COLORPICKER, HUEBAR_PADDING, @as(c_int, 10));
+ GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT, @as(c_int, 6));
+ GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW, @as(c_int, 2));
+ guiFont = GetFontDefault();
+}
+pub export fn GuiIconText(arg_iconId: c_int, arg_text: [*c]const u8) [*c]const u8 {
+ var iconId = arg_iconId;
+ var text = arg_text;
+ const buffer = struct {
+ var static: [1024]u8 = [1]u8{
+ 0,
+ } ++ [1]u8{0} ** 1023;
+ };
+ _ = memset(@ptrCast(?*anyopaque, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer.static))), @as(c_int, 0), @bitCast(c_ulong, @as(c_long, @as(c_int, 1024))));
+ _ = sprintf(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer.static)), "#%03i#", iconId);
+ if (text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ {
+ var i: c_int = 5;
+ while (i < @as(c_int, 1024)) : (i += 1) {
+ buffer.static[@intCast(c_uint, i)] = (blk: {
+ const tmp = i - @as(c_int, 5);
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+ if (@bitCast(c_int, @as(c_uint, (blk: {
+ const tmp = i - @as(c_int, 5);
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*)) == @as(c_int, '\x00')) break;
+ }
+ }
+ }
+ return @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer.static));
+}
+pub export fn GuiDrawIcon(arg_iconId: c_int, arg_posX: c_int, arg_posY: c_int, arg_pixelSize: c_int, arg_color: Color) void {
+ var iconId = arg_iconId;
+ var posX = arg_posX;
+ var posY = arg_posY;
+ var pixelSize = arg_pixelSize;
+ var color = arg_color;
+ {
+ var i: c_int = 0;
+ var y: c_int = 0;
+ while (i < @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32))) : (i += 1) {
+ {
+ var k: c_int = 0;
+ while (k < @as(c_int, 32)) : (k += 1) {
+ if ((guiIcons[@intCast(c_uint, (iconId * @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32))) + i)] & @bitCast(c_uint, @as(c_int, 1) << @intCast(@import("std").math.Log2Int(c_int), k))) != 0) {
+ DrawRectangle(posX + (@import("std").zig.c_translation.signedRemainder(k, @as(c_int, 16)) * pixelSize), posY + (y * pixelSize), pixelSize, pixelSize, color);
+ }
+ if ((k == @as(c_int, 15)) or (k == @as(c_int, 31))) {
+ y += 1;
+ }
+ }
+ }
+ }
+ }
+}
+pub export fn GuiGetIcons() [*c]c_uint {
+ return @ptrCast([*c]c_uint, @alignCast(@import("std").meta.alignment(c_uint), &guiIcons));
+}
+pub export fn GuiGetIconData(arg_iconId: c_int) [*c]c_uint {
+ var iconId = arg_iconId;
+ const iconData = struct {
+ var static: [8]c_uint = [1]c_uint{
+ 0,
+ } ++ [1]c_uint{0} ** 7;
+ };
+ _ = memset(@ptrCast(?*anyopaque, @ptrCast([*c]c_uint, @alignCast(@import("std").meta.alignment(c_uint), &iconData.static))), @as(c_int, 0), @bitCast(c_ulong, @as(c_long, @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32)))) *% @sizeOf(c_uint));
+ if (iconId < @as(c_int, 256)) {
+ _ = memcpy(@ptrCast(?*anyopaque, @ptrCast([*c]c_uint, @alignCast(@import("std").meta.alignment(c_uint), &iconData.static))), @ptrCast(?*const anyopaque, &guiIcons[@intCast(c_uint, iconId * @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32)))]), @bitCast(c_ulong, @as(c_long, @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32)))) *% @sizeOf(c_uint));
+ }
+ return @ptrCast([*c]c_uint, @alignCast(@import("std").meta.alignment(c_uint), &iconData.static));
+}
+pub export fn GuiSetIconData(arg_iconId: c_int, arg_data: [*c]c_uint) void {
+ var iconId = arg_iconId;
+ var data = arg_data;
+ if (iconId < @as(c_int, 256)) {
+ _ = memcpy(@ptrCast(?*anyopaque, &guiIcons[@intCast(c_uint, iconId * @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32)))]), @ptrCast(?*const anyopaque, data), @bitCast(c_ulong, @as(c_long, @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32)))) *% @sizeOf(c_uint));
+ }
+}
+pub export fn GuiSetIconPixel(arg_iconId: c_int, arg_x: c_int, arg_y: c_int) void {
+ var iconId = arg_iconId;
+ var x = arg_x;
+ var y = arg_y;
+ _ = blk: {
+ const ref = &guiIcons[@bitCast(c_ulong, @as(c_long, iconId * @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32)))) +% (@bitCast(c_ulong, @as(c_long, y)) / ((@sizeOf(c_uint) *% @bitCast(c_ulong, @as(c_long, @as(c_int, 8)))) / @bitCast(c_ulong, @as(c_long, @as(c_int, 16)))))];
+ ref.* |= @bitCast(c_uint, @as(c_int, 1) << @intCast(@import("std").math.Log2Int(c_int), @bitCast(c_ulong, @as(c_long, x)) +% ((@bitCast(c_ulong, @as(c_long, y)) % ((@sizeOf(c_uint) *% @bitCast(c_ulong, @as(c_long, @as(c_int, 8)))) / @bitCast(c_ulong, @as(c_long, @as(c_int, 16))))) *% @bitCast(c_ulong, @as(c_long, @as(c_int, 16))))));
+ break :blk ref.*;
+ };
+}
+pub export fn GuiClearIconPixel(arg_iconId: c_int, arg_x: c_int, arg_y: c_int) void {
+ var iconId = arg_iconId;
+ var x = arg_x;
+ var y = arg_y;
+ _ = blk: {
+ const ref = &guiIcons[@bitCast(c_ulong, @as(c_long, iconId * @divTrunc(@as(c_int, 16) * @as(c_int, 16), @as(c_int, 32)))) +% (@bitCast(c_ulong, @as(c_long, y)) / ((@sizeOf(c_uint) *% @bitCast(c_ulong, @as(c_long, @as(c_int, 8)))) / @bitCast(c_ulong, @as(c_long, @as(c_int, 16)))))];
+ ref.* &= @bitCast(c_uint, ~(@as(c_int, 1) << @intCast(@import("std").math.Log2Int(c_int), @bitCast(c_ulong, @as(c_long, x)) +% ((@bitCast(c_ulong, @as(c_long, y)) % ((@sizeOf(c_uint) *% @bitCast(c_ulong, @as(c_long, @as(c_int, 8)))) / @bitCast(c_ulong, @as(c_long, @as(c_int, 16))))) *% @bitCast(c_ulong, @as(c_long, @as(c_int, 16)))))));
+ break :blk ref.*;
+ };
+}
+pub export fn GuiCheckIconPixel(arg_iconId: c_int, arg_x: c_int, arg_y: c_int) bool {
+ var iconId = arg_iconId;
+ var x = arg_x;
+ var y = arg_y;
+ return (guiIcons[@intCast(c_uint, (iconId * @as(c_int, 8)) + @divTrunc(y, @as(c_int, 2)))] & @bitCast(c_uint, @as(c_int, 1) << @intCast(@import("std").math.Log2Int(c_int), x + (@import("std").zig.c_translation.signedRemainder(y, @as(c_int, 2)) * @as(c_int, 16))))) != 0;
+}
+pub const __u_char = u8;
+pub const __u_short = c_ushort;
+pub const __u_int = c_uint;
+pub const __u_long = c_ulong;
+pub const __int8_t = i8;
+pub const __uint8_t = u8;
+pub const __int16_t = c_short;
+pub const __uint16_t = c_ushort;
+pub const __int32_t = c_int;
+pub const __uint32_t = c_uint;
+pub const __int64_t = c_long;
+pub const __uint64_t = c_ulong;
+pub const __int_least8_t = __int8_t;
+pub const __uint_least8_t = __uint8_t;
+pub const __int_least16_t = __int16_t;
+pub const __uint_least16_t = __uint16_t;
+pub const __int_least32_t = __int32_t;
+pub const __uint_least32_t = __uint32_t;
+pub const __int_least64_t = __int64_t;
+pub const __uint_least64_t = __uint64_t;
+pub const __quad_t = c_long;
+pub const __u_quad_t = c_ulong;
+pub const __intmax_t = c_long;
+pub const __uintmax_t = c_ulong;
+pub const __dev_t = c_ulong;
+pub const __uid_t = c_uint;
+pub const __gid_t = c_uint;
+pub const __ino_t = c_ulong;
+pub const __ino64_t = c_ulong;
+pub const __mode_t = c_uint;
+pub const __nlink_t = c_ulong;
+pub const __pid_t = c_int;
+pub const __fsid_t = extern struct {
+ __val: [2]c_int,
+};
+pub const __clock_t = c_long;
+pub const __rlim_t = c_ulong;
+pub const __rlim64_t = c_ulong;
+pub const __id_t = c_uint;
+pub const __time_t = c_long;
+pub const __useconds_t = c_uint;
+pub const __suseconds_t = c_long;
+pub const __suseconds64_t = c_long;
+pub const __daddr_t = c_int;
+pub const __key_t = c_int;
+pub const __clockid_t = c_int;
+pub const __timer_t = ?*anyopaque;
+pub const __blksize_t = c_long;
+pub const __blkcnt_t = c_long;
+pub const __blkcnt64_t = c_long;
+pub const __fsblkcnt_t = c_ulong;
+pub const __fsblkcnt64_t = c_ulong;
+pub const __fsfilcnt_t = c_ulong;
+pub const __fsfilcnt64_t = c_ulong;
+pub const __fsword_t = c_long;
+pub const __ssize_t = c_long;
+pub const __syscall_slong_t = c_long;
+pub const __syscall_ulong_t = c_ulong;
+pub const __loff_t = __off64_t;
+pub const __caddr_t = [*c]u8;
+pub const __intptr_t = c_long;
+pub const __socklen_t = c_uint;
+pub const __sig_atomic_t = c_int;
+const union_unnamed_1 = extern union {
+ __wch: c_uint,
+ __wchb: [4]u8,
+};
+pub const __mbstate_t = extern struct {
+ __count: c_int,
+ __value: union_unnamed_1,
+};
+pub const struct__G_fpos_t = extern struct {
+ __pos: __off_t,
+ __state: __mbstate_t,
+};
+pub const __fpos_t = struct__G_fpos_t;
+pub const struct__G_fpos64_t = extern struct {
+ __pos: __off64_t,
+ __state: __mbstate_t,
+};
+pub const __fpos64_t = struct__G_fpos64_t;
+pub const __FILE = struct__IO_FILE;
+pub const off_t = __off_t;
+pub const fpos_t = __fpos_t;
+pub extern var stdin: [*c]FILE;
+pub extern var stdout: [*c]FILE;
+pub extern var stderr: [*c]FILE;
+pub extern fn remove(__filename: [*c]const u8) c_int;
+pub extern fn rename(__old: [*c]const u8, __new: [*c]const u8) c_int;
+pub extern fn renameat(__oldfd: c_int, __old: [*c]const u8, __newfd: c_int, __new: [*c]const u8) c_int;
+pub extern fn fclose(__stream: [*c]FILE) c_int;
+pub extern fn tmpfile() [*c]FILE;
+pub extern fn tmpnam([*c]u8) [*c]u8;
+pub extern fn tmpnam_r(__s: [*c]u8) [*c]u8;
+pub extern fn tempnam(__dir: [*c]const u8, __pfx: [*c]const u8) [*c]u8;
+pub extern fn fflush(__stream: [*c]FILE) c_int;
+pub extern fn fflush_unlocked(__stream: [*c]FILE) c_int;
+pub extern fn fopen(__filename: [*c]const u8, __modes: [*c]const u8) [*c]FILE;
+pub extern fn freopen(noalias __filename: [*c]const u8, noalias __modes: [*c]const u8, noalias __stream: [*c]FILE) [*c]FILE;
+pub extern fn fdopen(__fd: c_int, __modes: [*c]const u8) [*c]FILE;
+pub extern fn fmemopen(__s: ?*anyopaque, __len: usize, __modes: [*c]const u8) [*c]FILE;
+pub extern fn open_memstream(__bufloc: [*c][*c]u8, __sizeloc: [*c]usize) [*c]FILE;
+pub extern fn setbuf(noalias __stream: [*c]FILE, noalias __buf: [*c]u8) void;
+pub extern fn setvbuf(noalias __stream: [*c]FILE, noalias __buf: [*c]u8, __modes: c_int, __n: usize) c_int;
+pub extern fn setbuffer(noalias __stream: [*c]FILE, noalias __buf: [*c]u8, __size: usize) void;
+pub extern fn setlinebuf(__stream: [*c]FILE) void;
+pub extern fn fprintf(__stream: [*c]FILE, __format: [*c]const u8, ...) c_int;
+pub extern fn printf(__format: [*c]const u8, ...) c_int;
+pub extern fn sprintf(__s: [*c]u8, __format: [*c]const u8, ...) c_int;
+pub extern fn vfprintf(__s: [*c]FILE, __format: [*c]const u8, __arg: [*c]struct___va_list_tag) c_int;
+pub fn vprintf(arg___fmt: [*c]const u8, arg___arg: [*c]struct___va_list_tag) callconv(.C) c_int {
+ var __fmt = arg___fmt;
+ var __arg = arg___arg;
+ return vfprintf(stdout, __fmt, __arg);
+}
+pub extern fn vsprintf(__s: [*c]u8, __format: [*c]const u8, __arg: [*c]struct___va_list_tag) c_int;
+pub extern fn snprintf(__s: [*c]u8, __maxlen: c_ulong, __format: [*c]const u8, ...) c_int;
+pub extern fn vsnprintf(__s: [*c]u8, __maxlen: c_ulong, __format: [*c]const u8, __arg: [*c]struct___va_list_tag) c_int;
+pub extern fn vdprintf(__fd: c_int, noalias __fmt: [*c]const u8, __arg: [*c]struct___va_list_tag) c_int;
+pub extern fn dprintf(__fd: c_int, noalias __fmt: [*c]const u8, ...) c_int;
+pub extern fn fscanf(noalias __stream: [*c]FILE, noalias __format: [*c]const u8, ...) c_int;
+pub extern fn scanf(noalias __format: [*c]const u8, ...) c_int;
+pub extern fn sscanf(noalias __s: [*c]const u8, noalias __format: [*c]const u8, ...) c_int;
+pub const _Float32 = f32;
+pub const _Float64 = f64;
+pub const _Float32x = f64;
+pub const _Float64x = c_longdouble;
+pub extern fn vfscanf(noalias __s: [*c]FILE, noalias __format: [*c]const u8, __arg: [*c]struct___va_list_tag) c_int;
+pub extern fn vscanf(noalias __format: [*c]const u8, __arg: [*c]struct___va_list_tag) c_int;
+pub extern fn vsscanf(noalias __s: [*c]const u8, noalias __format: [*c]const u8, __arg: [*c]struct___va_list_tag) c_int;
+pub extern fn fgetc(__stream: [*c]FILE) c_int;
+pub extern fn getc(__stream: [*c]FILE) c_int;
+pub fn getchar() callconv(.C) c_int {
+ return getc(stdin);
+}
+pub fn getc_unlocked(arg___fp: [*c]FILE) callconv(.C) c_int {
+ var __fp = arg___fp;
+ return if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(__fp.*._IO_read_ptr >= __fp.*._IO_read_end))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) __uflow(__fp) else @bitCast(c_int, @as(c_uint, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), blk: {
+ const ref = &__fp.*._IO_read_ptr;
+ const tmp = ref.*;
+ ref.* += 1;
+ break :blk tmp;
+ })).*));
+}
+pub fn getchar_unlocked() callconv(.C) c_int {
+ return if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(stdin.*._IO_read_ptr >= stdin.*._IO_read_end))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) __uflow(stdin) else @bitCast(c_int, @as(c_uint, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), blk: {
+ const ref = &stdin.*._IO_read_ptr;
+ const tmp = ref.*;
+ ref.* += 1;
+ break :blk tmp;
+ })).*));
+}
+pub fn fgetc_unlocked(arg___fp: [*c]FILE) callconv(.C) c_int {
+ var __fp = arg___fp;
+ return if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(__fp.*._IO_read_ptr >= __fp.*._IO_read_end))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) __uflow(__fp) else @bitCast(c_int, @as(c_uint, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), blk: {
+ const ref = &__fp.*._IO_read_ptr;
+ const tmp = ref.*;
+ ref.* += 1;
+ break :blk tmp;
+ })).*));
+}
+pub extern fn fputc(__c: c_int, __stream: [*c]FILE) c_int;
+pub extern fn putc(__c: c_int, __stream: [*c]FILE) c_int;
+pub fn putchar(arg___c: c_int) callconv(.C) c_int {
+ var __c = arg___c;
+ return putc(__c, stdout);
+}
+pub fn fputc_unlocked(arg___c: c_int, arg___stream: [*c]FILE) callconv(.C) c_int {
+ var __c = arg___c;
+ var __stream = arg___stream;
+ return if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(__stream.*._IO_write_ptr >= __stream.*._IO_write_end))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) __overflow(__stream, @bitCast(c_int, @as(c_uint, @bitCast(u8, @truncate(i8, __c))))) else @bitCast(c_int, @as(c_uint, @bitCast(u8, blk: {
+ const tmp = @bitCast(u8, @truncate(i8, __c));
+ (blk_1: {
+ const ref = &__stream.*._IO_write_ptr;
+ const tmp_2 = ref.*;
+ ref.* += 1;
+ break :blk_1 tmp_2;
+ }).* = tmp;
+ break :blk tmp;
+ })));
+}
+pub fn putc_unlocked(arg___c: c_int, arg___stream: [*c]FILE) callconv(.C) c_int {
+ var __c = arg___c;
+ var __stream = arg___stream;
+ return if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(__stream.*._IO_write_ptr >= __stream.*._IO_write_end))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) __overflow(__stream, @bitCast(c_int, @as(c_uint, @bitCast(u8, @truncate(i8, __c))))) else @bitCast(c_int, @as(c_uint, @bitCast(u8, blk: {
+ const tmp = @bitCast(u8, @truncate(i8, __c));
+ (blk_1: {
+ const ref = &__stream.*._IO_write_ptr;
+ const tmp_2 = ref.*;
+ ref.* += 1;
+ break :blk_1 tmp_2;
+ }).* = tmp;
+ break :blk tmp;
+ })));
+}
+pub fn putchar_unlocked(arg___c: c_int) callconv(.C) c_int {
+ var __c = arg___c;
+ return if (__builtin_expect(@bitCast(c_long, @as(c_long, @boolToInt(stdout.*._IO_write_ptr >= stdout.*._IO_write_end))), @bitCast(c_long, @as(c_long, @as(c_int, 0)))) != 0) __overflow(stdout, @bitCast(c_int, @as(c_uint, @bitCast(u8, @truncate(i8, __c))))) else @bitCast(c_int, @as(c_uint, @bitCast(u8, blk: {
+ const tmp = @bitCast(u8, @truncate(i8, __c));
+ (blk_1: {
+ const ref = &stdout.*._IO_write_ptr;
+ const tmp_2 = ref.*;
+ ref.* += 1;
+ break :blk_1 tmp_2;
+ }).* = tmp;
+ break :blk tmp;
+ })));
+}
+pub extern fn getw(__stream: [*c]FILE) c_int;
+pub extern fn putw(__w: c_int, __stream: [*c]FILE) c_int;
+pub extern fn fgets(noalias __s: [*c]u8, __n: c_int, noalias __stream: [*c]FILE) [*c]u8;
+pub extern fn __getdelim(noalias __lineptr: [*c][*c]u8, noalias __n: [*c]usize, __delimiter: c_int, noalias __stream: [*c]FILE) __ssize_t;
+pub extern fn getdelim(noalias __lineptr: [*c][*c]u8, noalias __n: [*c]usize, __delimiter: c_int, noalias __stream: [*c]FILE) __ssize_t;
+pub extern fn getline(noalias __lineptr: [*c][*c]u8, noalias __n: [*c]usize, noalias __stream: [*c]FILE) __ssize_t;
+pub extern fn fputs(noalias __s: [*c]const u8, noalias __stream: [*c]FILE) c_int;
+pub extern fn puts(__s: [*c]const u8) c_int;
+pub extern fn ungetc(__c: c_int, __stream: [*c]FILE) c_int;
+pub extern fn fread(__ptr: ?*anyopaque, __size: c_ulong, __n: c_ulong, __stream: [*c]FILE) c_ulong;
+pub extern fn fwrite(__ptr: ?*const anyopaque, __size: c_ulong, __n: c_ulong, __s: [*c]FILE) c_ulong;
+pub extern fn fread_unlocked(noalias __ptr: ?*anyopaque, __size: usize, __n: usize, noalias __stream: [*c]FILE) usize;
+pub extern fn fwrite_unlocked(noalias __ptr: ?*const anyopaque, __size: usize, __n: usize, noalias __stream: [*c]FILE) usize;
+pub extern fn fseek(__stream: [*c]FILE, __off: c_long, __whence: c_int) c_int;
+pub extern fn ftell(__stream: [*c]FILE) c_long;
+pub extern fn rewind(__stream: [*c]FILE) void;
+pub extern fn fseeko(__stream: [*c]FILE, __off: __off_t, __whence: c_int) c_int;
+pub extern fn ftello(__stream: [*c]FILE) __off_t;
+pub extern fn fgetpos(noalias __stream: [*c]FILE, noalias __pos: [*c]fpos_t) c_int;
+pub extern fn fsetpos(__stream: [*c]FILE, __pos: [*c]const fpos_t) c_int;
+pub extern fn clearerr(__stream: [*c]FILE) void;
+pub extern fn feof(__stream: [*c]FILE) c_int;
+pub extern fn ferror(__stream: [*c]FILE) c_int;
+pub extern fn clearerr_unlocked(__stream: [*c]FILE) void;
+pub fn feof_unlocked(arg___stream: [*c]FILE) callconv(.C) c_int {
+ var __stream = arg___stream;
+ return @boolToInt((__stream.*._flags & @as(c_int, 16)) != @as(c_int, 0));
+}
+pub fn ferror_unlocked(arg___stream: [*c]FILE) callconv(.C) c_int {
+ var __stream = arg___stream;
+ return @boolToInt((__stream.*._flags & @as(c_int, 32)) != @as(c_int, 0));
+}
+pub extern fn perror(__s: [*c]const u8) void;
+pub extern fn fileno(__stream: [*c]FILE) c_int;
+pub extern fn fileno_unlocked(__stream: [*c]FILE) c_int;
+pub extern fn pclose(__stream: [*c]FILE) c_int;
+pub extern fn popen(__command: [*c]const u8, __modes: [*c]const u8) [*c]FILE;
+pub extern fn ctermid(__s: [*c]u8) [*c]u8;
+pub extern fn flockfile(__stream: [*c]FILE) void;
+pub extern fn ftrylockfile(__stream: [*c]FILE) c_int;
+pub extern fn funlockfile(__stream: [*c]FILE) void;
+pub extern fn __uflow([*c]FILE) c_int;
+pub extern fn __overflow([*c]FILE, c_int) c_int;
+pub const wchar_t = c_int;
+pub const div_t = extern struct {
+ quot: c_int,
+ rem: c_int,
+};
+pub const ldiv_t = extern struct {
+ quot: c_long,
+ rem: c_long,
+};
+pub const lldiv_t = extern struct {
+ quot: c_longlong,
+ rem: c_longlong,
+};
+pub extern fn __ctype_get_mb_cur_max() usize;
+pub fn atof(arg___nptr: [*c]const u8) callconv(.C) f64 {
+ var __nptr = arg___nptr;
+ return strtod(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))));
+}
+pub fn atoi(arg___nptr: [*c]const u8) callconv(.C) c_int {
+ var __nptr = arg___nptr;
+ return @bitCast(c_int, @truncate(c_int, strtol(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))), @as(c_int, 10))));
+}
+pub fn atol(arg___nptr: [*c]const u8) callconv(.C) c_long {
+ var __nptr = arg___nptr;
+ return strtol(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))), @as(c_int, 10));
+}
+pub fn atoll(arg___nptr: [*c]const u8) callconv(.C) c_longlong {
+ var __nptr = arg___nptr;
+ return strtoll(__nptr, @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), @intToPtr(?*anyopaque, @as(c_int, 0)))), @as(c_int, 10));
+}
+pub extern fn strtod(__nptr: [*c]const u8, __endptr: [*c][*c]u8) f64;
+pub extern fn strtof(__nptr: [*c]const u8, __endptr: [*c][*c]u8) f32;
+pub extern fn strtold(__nptr: [*c]const u8, __endptr: [*c][*c]u8) c_longdouble;
+pub extern fn strtol(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_long;
+pub extern fn strtoul(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_ulong;
+pub extern fn strtoq(noalias __nptr: [*c]const u8, noalias __endptr: [*c][*c]u8, __base: c_int) c_longlong;
+pub extern fn strtouq(noalias __nptr: [*c]const u8, noalias __endptr: [*c][*c]u8, __base: c_int) c_ulonglong;
+pub extern fn strtoll(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_longlong;
+pub extern fn strtoull(__nptr: [*c]const u8, __endptr: [*c][*c]u8, __base: c_int) c_ulonglong;
+pub extern fn l64a(__n: c_long) [*c]u8;
+pub extern fn a64l(__s: [*c]const u8) c_long;
+pub const u_char = __u_char;
+pub const u_short = __u_short;
+pub const u_int = __u_int;
+pub const u_long = __u_long;
+pub const quad_t = __quad_t;
+pub const u_quad_t = __u_quad_t;
+pub const fsid_t = __fsid_t;
+pub const loff_t = __loff_t;
+pub const ino_t = __ino_t;
+pub const dev_t = __dev_t;
+pub const gid_t = __gid_t;
+pub const mode_t = __mode_t;
+pub const nlink_t = __nlink_t;
+pub const uid_t = __uid_t;
+pub const pid_t = __pid_t;
+pub const id_t = __id_t;
+pub const daddr_t = __daddr_t;
+pub const caddr_t = __caddr_t;
+pub const key_t = __key_t;
+pub const clock_t = __clock_t;
+pub const clockid_t = __clockid_t;
+pub const time_t = __time_t;
+pub const timer_t = __timer_t;
+pub const ulong = c_ulong;
+pub const ushort = c_ushort;
+pub const uint = c_uint;
+pub const u_int8_t = __uint8_t;
+pub const u_int16_t = __uint16_t;
+pub const u_int32_t = __uint32_t;
+pub const u_int64_t = __uint64_t;
+pub const register_t = c_long;
+pub fn __bswap_16(arg___bsx: __uint16_t) callconv(.C) __uint16_t {
+ var __bsx = arg___bsx;
+ return @bitCast(__uint16_t, @truncate(c_short, ((@bitCast(c_int, @as(c_uint, __bsx)) >> @intCast(@import("std").math.Log2Int(c_int), 8)) & @as(c_int, 255)) | ((@bitCast(c_int, @as(c_uint, __bsx)) & @as(c_int, 255)) << @intCast(@import("std").math.Log2Int(c_int), 8))));
+}
+pub fn __bswap_32(arg___bsx: __uint32_t) callconv(.C) __uint32_t {
+ var __bsx = arg___bsx;
+ return ((((__bsx & @as(c_uint, 4278190080)) >> @intCast(@import("std").math.Log2Int(c_uint), 24)) | ((__bsx & @as(c_uint, 16711680)) >> @intCast(@import("std").math.Log2Int(c_uint), 8))) | ((__bsx & @as(c_uint, 65280)) << @intCast(@import("std").math.Log2Int(c_uint), 8))) | ((__bsx & @as(c_uint, 255)) << @intCast(@import("std").math.Log2Int(c_uint), 24));
+}
+pub fn __bswap_64(arg___bsx: __uint64_t) callconv(.C) __uint64_t {
+ var __bsx = arg___bsx;
+ return @bitCast(__uint64_t, @truncate(c_ulong, ((((((((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 18374686479671623680)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 56)) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 71776119061217280)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 40))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 280375465082880)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 24))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 1095216660480)) >> @intCast(@import("std").math.Log2Int(c_ulonglong), 8))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 4278190080)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 8))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 16711680)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 24))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 65280)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 40))) | ((@bitCast(c_ulonglong, @as(c_ulonglong, __bsx)) & @as(c_ulonglong, 255)) << @intCast(@import("std").math.Log2Int(c_ulonglong), 56))));
+}
+pub fn __uint16_identity(arg___x: __uint16_t) callconv(.C) __uint16_t {
+ var __x = arg___x;
+ return __x;
+}
+pub fn __uint32_identity(arg___x: __uint32_t) callconv(.C) __uint32_t {
+ var __x = arg___x;
+ return __x;
+}
+pub fn __uint64_identity(arg___x: __uint64_t) callconv(.C) __uint64_t {
+ var __x = arg___x;
+ return __x;
+}
+pub const __sigset_t = extern struct {
+ __val: [16]c_ulong,
+};
+pub const sigset_t = __sigset_t;
+pub const struct_timeval = extern struct {
+ tv_sec: __time_t,
+ tv_usec: __suseconds_t,
+};
+pub const struct_timespec = extern struct {
+ tv_sec: __time_t,
+ tv_nsec: __syscall_slong_t,
+};
+pub const suseconds_t = __suseconds_t;
+pub const __fd_mask = c_long;
+pub const fd_set = extern struct {
+ __fds_bits: [16]__fd_mask,
+};
+pub const fd_mask = __fd_mask;
+pub extern fn select(__nfds: c_int, noalias __readfds: [*c]fd_set, noalias __writefds: [*c]fd_set, noalias __exceptfds: [*c]fd_set, noalias __timeout: [*c]struct_timeval) c_int;
+pub extern fn pselect(__nfds: c_int, noalias __readfds: [*c]fd_set, noalias __writefds: [*c]fd_set, noalias __exceptfds: [*c]fd_set, noalias __timeout: [*c]const struct_timespec, noalias __sigmask: [*c]const __sigset_t) c_int;
+pub const blksize_t = __blksize_t;
+pub const blkcnt_t = __blkcnt_t;
+pub const fsblkcnt_t = __fsblkcnt_t;
+pub const fsfilcnt_t = __fsfilcnt_t;
+pub const struct___pthread_internal_list = extern struct {
+ __prev: [*c]struct___pthread_internal_list,
+ __next: [*c]struct___pthread_internal_list,
+};
+pub const __pthread_list_t = struct___pthread_internal_list;
+pub const struct___pthread_internal_slist = extern struct {
+ __next: [*c]struct___pthread_internal_slist,
+};
+pub const __pthread_slist_t = struct___pthread_internal_slist;
+pub const struct___pthread_mutex_s = extern struct {
+ __lock: c_int,
+ __count: c_uint,
+ __owner: c_int,
+ __nusers: c_uint,
+ __kind: c_int,
+ __spins: c_short,
+ __elision: c_short,
+ __list: __pthread_list_t,
+};
+pub const struct___pthread_rwlock_arch_t = extern struct {
+ __readers: c_uint,
+ __writers: c_uint,
+ __wrphase_futex: c_uint,
+ __writers_futex: c_uint,
+ __pad3: c_uint,
+ __pad4: c_uint,
+ __cur_writer: c_int,
+ __shared: c_int,
+ __rwelision: i8,
+ __pad1: [7]u8,
+ __pad2: c_ulong,
+ __flags: c_uint,
+};
+const struct_unnamed_3 = extern struct {
+ __low: c_uint,
+ __high: c_uint,
+};
+const union_unnamed_2 = extern union {
+ __wseq: c_ulonglong,
+ __wseq32: struct_unnamed_3,
+};
+const struct_unnamed_5 = extern struct {
+ __low: c_uint,
+ __high: c_uint,
+};
+const union_unnamed_4 = extern union {
+ __g1_start: c_ulonglong,
+ __g1_start32: struct_unnamed_5,
+};
+pub const struct___pthread_cond_s = extern struct {
+ unnamed_0: union_unnamed_2,
+ unnamed_1: union_unnamed_4,
+ __g_refs: [2]c_uint,
+ __g_size: [2]c_uint,
+ __g1_orig_size: c_uint,
+ __wrefs: c_uint,
+ __g_signals: [2]c_uint,
+};
+pub const __tss_t = c_uint;
+pub const __thrd_t = c_ulong;
+pub const __once_flag = extern struct {
+ __data: c_int,
+};
+pub const pthread_t = c_ulong;
+pub const pthread_mutexattr_t = extern union {
+ __size: [4]u8,
+ __align: c_int,
+};
+pub const pthread_condattr_t = extern union {
+ __size: [4]u8,
+ __align: c_int,
+};
+pub const pthread_key_t = c_uint;
+pub const pthread_once_t = c_int;
+pub const union_pthread_attr_t = extern union {
+ __size: [56]u8,
+ __align: c_long,
+};
+pub const pthread_attr_t = union_pthread_attr_t;
+pub const pthread_mutex_t = extern union {
+ __data: struct___pthread_mutex_s,
+ __size: [40]u8,
+ __align: c_long,
+};
+pub const pthread_cond_t = extern union {
+ __data: struct___pthread_cond_s,
+ __size: [48]u8,
+ __align: c_longlong,
+};
+pub const pthread_rwlock_t = extern union {
+ __data: struct___pthread_rwlock_arch_t,
+ __size: [56]u8,
+ __align: c_long,
+};
+pub const pthread_rwlockattr_t = extern union {
+ __size: [8]u8,
+ __align: c_long,
+};
+pub const pthread_spinlock_t = c_int;
+pub const pthread_barrier_t = extern union {
+ __size: [32]u8,
+ __align: c_long,
+};
+pub const pthread_barrierattr_t = extern union {
+ __size: [4]u8,
+ __align: c_int,
+};
+pub extern fn random() c_long;
+pub extern fn srandom(__seed: c_uint) void;
+pub extern fn initstate(__seed: c_uint, __statebuf: [*c]u8, __statelen: usize) [*c]u8;
+pub extern fn setstate(__statebuf: [*c]u8) [*c]u8;
+pub const struct_random_data = extern struct {
+ fptr: [*c]i32,
+ rptr: [*c]i32,
+ state: [*c]i32,
+ rand_type: c_int,
+ rand_deg: c_int,
+ rand_sep: c_int,
+ end_ptr: [*c]i32,
+};
+pub extern fn random_r(noalias __buf: [*c]struct_random_data, noalias __result: [*c]i32) c_int;
+pub extern fn srandom_r(__seed: c_uint, __buf: [*c]struct_random_data) c_int;
+pub extern fn initstate_r(__seed: c_uint, noalias __statebuf: [*c]u8, __statelen: usize, noalias __buf: [*c]struct_random_data) c_int;
+pub extern fn setstate_r(noalias __statebuf: [*c]u8, noalias __buf: [*c]struct_random_data) c_int;
+pub extern fn rand() c_int;
+pub extern fn srand(__seed: c_uint) void;
+pub extern fn rand_r(__seed: [*c]c_uint) c_int;
+pub extern fn drand48() f64;
+pub extern fn erand48(__xsubi: [*c]c_ushort) f64;
+pub extern fn lrand48() c_long;
+pub extern fn nrand48(__xsubi: [*c]c_ushort) c_long;
+pub extern fn mrand48() c_long;
+pub extern fn jrand48(__xsubi: [*c]c_ushort) c_long;
+pub extern fn srand48(__seedval: c_long) void;
+pub extern fn seed48(__seed16v: [*c]c_ushort) [*c]c_ushort;
+pub extern fn lcong48(__param: [*c]c_ushort) void;
+pub const struct_drand48_data = extern struct {
+ __x: [3]c_ushort,
+ __old_x: [3]c_ushort,
+ __c: c_ushort,
+ __init: c_ushort,
+ __a: c_ulonglong,
+};
+pub extern fn drand48_r(noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]f64) c_int;
+pub extern fn erand48_r(__xsubi: [*c]c_ushort, noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]f64) c_int;
+pub extern fn lrand48_r(noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn nrand48_r(__xsubi: [*c]c_ushort, noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn mrand48_r(noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn jrand48_r(__xsubi: [*c]c_ushort, noalias __buffer: [*c]struct_drand48_data, noalias __result: [*c]c_long) c_int;
+pub extern fn srand48_r(__seedval: c_long, __buffer: [*c]struct_drand48_data) c_int;
+pub extern fn seed48_r(__seed16v: [*c]c_ushort, __buffer: [*c]struct_drand48_data) c_int;
+pub extern fn lcong48_r(__param: [*c]c_ushort, __buffer: [*c]struct_drand48_data) c_int;
+pub extern fn malloc(__size: c_ulong) ?*anyopaque;
+pub extern fn calloc(__nmemb: c_ulong, __size: c_ulong) ?*anyopaque;
+pub extern fn realloc(__ptr: ?*anyopaque, __size: c_ulong) ?*anyopaque;
+pub extern fn free(__ptr: ?*anyopaque) void;
+pub extern fn reallocarray(__ptr: ?*anyopaque, __nmemb: usize, __size: usize) ?*anyopaque;
+pub extern fn alloca(__size: c_ulong) ?*anyopaque;
+pub extern fn valloc(__size: usize) ?*anyopaque;
+pub extern fn posix_memalign(__memptr: [*c]?*anyopaque, __alignment: usize, __size: usize) c_int;
+pub extern fn aligned_alloc(__alignment: c_ulong, __size: c_ulong) ?*anyopaque;
+pub extern fn abort() noreturn;
+pub extern fn atexit(__func: ?fn () callconv(.C) void) c_int;
+pub extern fn at_quick_exit(__func: ?fn () callconv(.C) void) c_int;
+pub extern fn on_exit(__func: ?fn (c_int, ?*anyopaque) callconv(.C) void, __arg: ?*anyopaque) c_int;
+pub extern fn exit(__status: c_int) noreturn;
+pub extern fn quick_exit(__status: c_int) noreturn;
+pub extern fn _Exit(__status: c_int) noreturn;
+pub extern fn getenv(__name: [*c]const u8) [*c]u8;
+pub extern fn putenv(__string: [*c]u8) c_int;
+pub extern fn setenv(__name: [*c]const u8, __value: [*c]const u8, __replace: c_int) c_int;
+pub extern fn unsetenv(__name: [*c]const u8) c_int;
+pub extern fn clearenv() c_int;
+pub extern fn mktemp(__template: [*c]u8) [*c]u8;
+pub extern fn mkstemp(__template: [*c]u8) c_int;
+pub extern fn mkstemps(__template: [*c]u8, __suffixlen: c_int) c_int;
+pub extern fn mkdtemp(__template: [*c]u8) [*c]u8;
+pub extern fn system(__command: [*c]const u8) c_int;
+pub extern fn realpath(noalias __name: [*c]const u8, noalias __resolved: [*c]u8) [*c]u8;
+pub const __compar_fn_t = ?fn (?*const anyopaque, ?*const anyopaque) callconv(.C) c_int;
+pub fn bsearch(arg___key: ?*const anyopaque, arg___base: ?*const anyopaque, arg___nmemb: usize, arg___size: usize, arg___compar: __compar_fn_t) callconv(.C) ?*anyopaque {
+ var __key = arg___key;
+ var __base = arg___base;
+ var __nmemb = arg___nmemb;
+ var __size = arg___size;
+ var __compar = arg___compar;
+ var __l: usize = undefined;
+ var __u: usize = undefined;
+ var __idx: usize = undefined;
+ var __p: ?*const anyopaque = undefined;
+ var __comparison: c_int = undefined;
+ __l = 0;
+ __u = __nmemb;
+ while (__l < __u) {
+ __idx = (__l +% __u) / @bitCast(c_ulong, @as(c_long, @as(c_int, 2)));
+ __p = @intToPtr(?*anyopaque, @ptrToInt(@ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), __base)) + (__idx *% __size)));
+ __comparison = __compar.?(__key, __p);
+ if (__comparison < @as(c_int, 0)) {
+ __u = __idx;
+ } else if (__comparison > @as(c_int, 0)) {
+ __l = __idx +% @bitCast(c_ulong, @as(c_long, @as(c_int, 1)));
+ } else return @intToPtr(?*anyopaque, @ptrToInt(__p));
+ }
+ return @intToPtr(?*anyopaque, @as(c_int, 0));
+}
+pub extern fn qsort(__base: ?*anyopaque, __nmemb: usize, __size: usize, __compar: __compar_fn_t) void;
+pub extern fn abs(__x: c_int) c_int;
+pub extern fn labs(__x: c_long) c_long;
+pub extern fn llabs(__x: c_longlong) c_longlong;
+pub extern fn div(__numer: c_int, __denom: c_int) div_t;
+pub extern fn ldiv(__numer: c_long, __denom: c_long) ldiv_t;
+pub extern fn lldiv(__numer: c_longlong, __denom: c_longlong) lldiv_t;
+pub extern fn ecvt(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn fcvt(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn gcvt(__value: f64, __ndigit: c_int, __buf: [*c]u8) [*c]u8;
+pub extern fn qecvt(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn qfcvt(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int) [*c]u8;
+pub extern fn qgcvt(__value: c_longdouble, __ndigit: c_int, __buf: [*c]u8) [*c]u8;
+pub extern fn ecvt_r(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn fcvt_r(__value: f64, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn qecvt_r(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn qfcvt_r(__value: c_longdouble, __ndigit: c_int, noalias __decpt: [*c]c_int, noalias __sign: [*c]c_int, noalias __buf: [*c]u8, __len: usize) c_int;
+pub extern fn mblen(__s: [*c]const u8, __n: usize) c_int;
+pub extern fn mbtowc(noalias __pwc: [*c]wchar_t, noalias __s: [*c]const u8, __n: usize) c_int;
+pub extern fn wctomb(__s: [*c]u8, __wchar: wchar_t) c_int;
+pub extern fn mbstowcs(noalias __pwcs: [*c]wchar_t, noalias __s: [*c]const u8, __n: usize) usize;
+pub extern fn wcstombs(noalias __s: [*c]u8, noalias __pwcs: [*c]const wchar_t, __n: usize) usize;
+pub extern fn rpmatch(__response: [*c]const u8) c_int;
+pub extern fn getsubopt(noalias __optionp: [*c][*c]u8, noalias __tokens: [*c]const [*c]u8, noalias __valuep: [*c][*c]u8) c_int;
+pub extern fn getloadavg(__loadavg: [*c]f64, __nelem: c_int) c_int;
+pub extern fn memcpy(__dest: ?*anyopaque, __src: ?*const anyopaque, __n: c_ulong) ?*anyopaque;
+pub extern fn memmove(__dest: ?*anyopaque, __src: ?*const anyopaque, __n: c_ulong) ?*anyopaque;
+pub extern fn memccpy(__dest: ?*anyopaque, __src: ?*const anyopaque, __c: c_int, __n: c_ulong) ?*anyopaque;
+pub extern fn memset(__s: ?*anyopaque, __c: c_int, __n: c_ulong) ?*anyopaque;
+pub extern fn memcmp(__s1: ?*const anyopaque, __s2: ?*const anyopaque, __n: c_ulong) c_int;
+pub extern fn memchr(__s: ?*const anyopaque, __c: c_int, __n: c_ulong) ?*anyopaque;
+pub extern fn strcpy(__dest: [*c]u8, __src: [*c]const u8) [*c]u8;
+pub extern fn strncpy(__dest: [*c]u8, __src: [*c]const u8, __n: c_ulong) [*c]u8;
+pub extern fn strcat(__dest: [*c]u8, __src: [*c]const u8) [*c]u8;
+pub extern fn strncat(__dest: [*c]u8, __src: [*c]const u8, __n: c_ulong) [*c]u8;
+pub extern fn strcmp(__s1: [*c]const u8, __s2: [*c]const u8) c_int;
+pub extern fn strncmp(__s1: [*c]const u8, __s2: [*c]const u8, __n: c_ulong) c_int;
+pub extern fn strcoll(__s1: [*c]const u8, __s2: [*c]const u8) c_int;
+pub extern fn strxfrm(__dest: [*c]u8, __src: [*c]const u8, __n: c_ulong) c_ulong;
+pub const struct___locale_data = opaque {};
+pub const struct___locale_struct = extern struct {
+ __locales: [13]?*struct___locale_data,
+ __ctype_b: [*c]const c_ushort,
+ __ctype_tolower: [*c]const c_int,
+ __ctype_toupper: [*c]const c_int,
+ __names: [13][*c]const u8,
+};
+pub const __locale_t = [*c]struct___locale_struct;
+pub const locale_t = __locale_t;
+pub extern fn strcoll_l(__s1: [*c]const u8, __s2: [*c]const u8, __l: locale_t) c_int;
+pub extern fn strxfrm_l(__dest: [*c]u8, __src: [*c]const u8, __n: usize, __l: locale_t) usize;
+pub extern fn strdup(__s: [*c]const u8) [*c]u8;
+pub extern fn strndup(__string: [*c]const u8, __n: c_ulong) [*c]u8;
+pub extern fn strchr(__s: [*c]const u8, __c: c_int) [*c]u8;
+pub extern fn strrchr(__s: [*c]const u8, __c: c_int) [*c]u8;
+pub extern fn strcspn(__s: [*c]const u8, __reject: [*c]const u8) c_ulong;
+pub extern fn strspn(__s: [*c]const u8, __accept: [*c]const u8) c_ulong;
+pub extern fn strpbrk(__s: [*c]const u8, __accept: [*c]const u8) [*c]u8;
+pub extern fn strstr(__haystack: [*c]const u8, __needle: [*c]const u8) [*c]u8;
+pub extern fn strtok(__s: [*c]u8, __delim: [*c]const u8) [*c]u8;
+pub extern fn __strtok_r(noalias __s: [*c]u8, noalias __delim: [*c]const u8, noalias __save_ptr: [*c][*c]u8) [*c]u8;
+pub extern fn strtok_r(noalias __s: [*c]u8, noalias __delim: [*c]const u8, noalias __save_ptr: [*c][*c]u8) [*c]u8;
+pub extern fn strlen(__s: [*c]const u8) c_ulong;
+pub extern fn strnlen(__string: [*c]const u8, __maxlen: usize) usize;
+pub extern fn strerror(__errnum: c_int) [*c]u8;
+pub extern fn strerror_r(__errnum: c_int, __buf: [*c]u8, __buflen: usize) c_int;
+pub extern fn strerror_l(__errnum: c_int, __l: locale_t) [*c]u8;
+pub extern fn bcmp(__s1: ?*const anyopaque, __s2: ?*const anyopaque, __n: c_ulong) c_int;
+pub extern fn bcopy(__src: ?*const anyopaque, __dest: ?*anyopaque, __n: usize) void;
+pub extern fn bzero(__s: ?*anyopaque, __n: c_ulong) void;
+pub extern fn index(__s: [*c]const u8, __c: c_int) [*c]u8;
+pub extern fn rindex(__s: [*c]const u8, __c: c_int) [*c]u8;
+pub extern fn ffs(__i: c_int) c_int;
+pub extern fn ffsl(__l: c_long) c_int;
+pub extern fn ffsll(__ll: c_longlong) c_int;
+pub extern fn strcasecmp(__s1: [*c]const u8, __s2: [*c]const u8) c_int;
+pub extern fn strncasecmp(__s1: [*c]const u8, __s2: [*c]const u8, __n: c_ulong) c_int;
+pub extern fn strcasecmp_l(__s1: [*c]const u8, __s2: [*c]const u8, __loc: locale_t) c_int;
+pub extern fn strncasecmp_l(__s1: [*c]const u8, __s2: [*c]const u8, __n: usize, __loc: locale_t) c_int;
+pub extern fn explicit_bzero(__s: ?*anyopaque, __n: usize) void;
+pub extern fn strsep(noalias __stringp: [*c][*c]u8, noalias __delim: [*c]const u8) [*c]u8;
+pub extern fn strsignal(__sig: c_int) [*c]u8;
+pub extern fn __stpcpy(noalias __dest: [*c]u8, noalias __src: [*c]const u8) [*c]u8;
+pub extern fn stpcpy(__dest: [*c]u8, __src: [*c]const u8) [*c]u8;
+pub extern fn __stpncpy(noalias __dest: [*c]u8, noalias __src: [*c]const u8, __n: usize) [*c]u8;
+pub extern fn stpncpy(__dest: [*c]u8, __src: [*c]const u8, __n: c_ulong) [*c]u8;
+pub const float_t = f32;
+pub const double_t = f64;
+pub extern fn __fpclassify(__value: f64) c_int;
+pub extern fn __signbit(__value: f64) c_int;
+pub extern fn __isinf(__value: f64) c_int;
+pub extern fn __finite(__value: f64) c_int;
+pub extern fn __isnan(__value: f64) c_int;
+pub extern fn __iseqsig(__x: f64, __y: f64) c_int;
+pub extern fn __issignaling(__value: f64) c_int;
+pub extern fn acos(__x: f64) f64;
+pub extern fn __acos(__x: f64) f64;
+pub extern fn asin(__x: f64) f64;
+pub extern fn __asin(__x: f64) f64;
+pub extern fn atan(__x: f64) f64;
+pub extern fn __atan(__x: f64) f64;
+pub extern fn atan2(__y: f64, __x: f64) f64;
+pub extern fn __atan2(__y: f64, __x: f64) f64;
+pub extern fn cos(__x: f64) f64;
+pub extern fn __cos(__x: f64) f64;
+pub extern fn sin(__x: f64) f64;
+pub extern fn __sin(__x: f64) f64;
+pub extern fn tan(__x: f64) f64;
+pub extern fn __tan(__x: f64) f64;
+pub extern fn cosh(__x: f64) f64;
+pub extern fn __cosh(__x: f64) f64;
+pub extern fn sinh(__x: f64) f64;
+pub extern fn __sinh(__x: f64) f64;
+pub extern fn tanh(__x: f64) f64;
+pub extern fn __tanh(__x: f64) f64;
+pub extern fn acosh(__x: f64) f64;
+pub extern fn __acosh(__x: f64) f64;
+pub extern fn asinh(__x: f64) f64;
+pub extern fn __asinh(__x: f64) f64;
+pub extern fn atanh(__x: f64) f64;
+pub extern fn __atanh(__x: f64) f64;
+pub extern fn exp(__x: f64) f64;
+pub extern fn __exp(__x: f64) f64;
+pub extern fn frexp(__x: f64, __exponent: [*c]c_int) f64;
+pub extern fn __frexp(__x: f64, __exponent: [*c]c_int) f64;
+pub extern fn ldexp(__x: f64, __exponent: c_int) f64;
+pub extern fn __ldexp(__x: f64, __exponent: c_int) f64;
+pub extern fn log(__x: f64) f64;
+pub extern fn __log(__x: f64) f64;
+pub extern fn log10(__x: f64) f64;
+pub extern fn __log10(__x: f64) f64;
+pub extern fn modf(__x: f64, __iptr: [*c]f64) f64;
+pub extern fn __modf(__x: f64, __iptr: [*c]f64) f64;
+pub extern fn expm1(__x: f64) f64;
+pub extern fn __expm1(__x: f64) f64;
+pub extern fn log1p(__x: f64) f64;
+pub extern fn __log1p(__x: f64) f64;
+pub extern fn logb(__x: f64) f64;
+pub extern fn __logb(__x: f64) f64;
+pub extern fn exp2(__x: f64) f64;
+pub extern fn __exp2(__x: f64) f64;
+pub extern fn log2(__x: f64) f64;
+pub extern fn __log2(__x: f64) f64;
+pub extern fn pow(__x: f64, __y: f64) f64;
+pub extern fn __pow(__x: f64, __y: f64) f64;
+pub extern fn sqrt(__x: f64) f64;
+pub extern fn __sqrt(__x: f64) f64;
+pub extern fn hypot(__x: f64, __y: f64) f64;
+pub extern fn __hypot(__x: f64, __y: f64) f64;
+pub extern fn cbrt(__x: f64) f64;
+pub extern fn __cbrt(__x: f64) f64;
+pub extern fn ceil(__x: f64) f64;
+pub extern fn __ceil(__x: f64) f64;
+pub extern fn fabs(__x: f64) f64;
+pub extern fn __fabs(__x: f64) f64;
+pub extern fn floor(__x: f64) f64;
+pub extern fn __floor(__x: f64) f64;
+pub extern fn fmod(__x: f64, __y: f64) f64;
+pub extern fn __fmod(__x: f64, __y: f64) f64;
+pub extern fn isinf(__value: f64) c_int;
+pub extern fn finite(__value: f64) c_int;
+pub extern fn drem(__x: f64, __y: f64) f64;
+pub extern fn __drem(__x: f64, __y: f64) f64;
+pub extern fn significand(__x: f64) f64;
+pub extern fn __significand(__x: f64) f64;
+pub extern fn copysign(__x: f64, __y: f64) f64;
+pub extern fn __copysign(__x: f64, __y: f64) f64;
+pub extern fn nan(__tagb: [*c]const u8) f64;
+pub extern fn __nan(__tagb: [*c]const u8) f64;
+pub extern fn isnan(__value: f64) c_int;
+pub extern fn j0(f64) f64;
+pub extern fn __j0(f64) f64;
+pub extern fn j1(f64) f64;
+pub extern fn __j1(f64) f64;
+pub extern fn jn(c_int, f64) f64;
+pub extern fn __jn(c_int, f64) f64;
+pub extern fn y0(f64) f64;
+pub extern fn __y0(f64) f64;
+pub extern fn y1(f64) f64;
+pub extern fn __y1(f64) f64;
+pub extern fn yn(c_int, f64) f64;
+pub extern fn __yn(c_int, f64) f64;
+pub extern fn erf(f64) f64;
+pub extern fn __erf(f64) f64;
+pub extern fn erfc(f64) f64;
+pub extern fn __erfc(f64) f64;
+pub extern fn lgamma(f64) f64;
+pub extern fn __lgamma(f64) f64;
+pub extern fn tgamma(f64) f64;
+pub extern fn __tgamma(f64) f64;
+pub extern fn gamma(f64) f64;
+pub extern fn __gamma(f64) f64;
+pub extern fn lgamma_r(f64, __signgamp: [*c]c_int) f64;
+pub extern fn __lgamma_r(f64, __signgamp: [*c]c_int) f64;
+pub extern fn rint(__x: f64) f64;
+pub extern fn __rint(__x: f64) f64;
+pub extern fn nextafter(__x: f64, __y: f64) f64;
+pub extern fn __nextafter(__x: f64, __y: f64) f64;
+pub extern fn nexttoward(__x: f64, __y: c_longdouble) f64;
+pub extern fn __nexttoward(__x: f64, __y: c_longdouble) f64;
+pub extern fn remainder(__x: f64, __y: f64) f64;
+pub extern fn __remainder(__x: f64, __y: f64) f64;
+pub extern fn scalbn(__x: f64, __n: c_int) f64;
+pub extern fn __scalbn(__x: f64, __n: c_int) f64;
+pub extern fn ilogb(__x: f64) c_int;
+pub extern fn __ilogb(__x: f64) c_int;
+pub extern fn scalbln(__x: f64, __n: c_long) f64;
+pub extern fn __scalbln(__x: f64, __n: c_long) f64;
+pub extern fn nearbyint(__x: f64) f64;
+pub extern fn __nearbyint(__x: f64) f64;
+pub extern fn round(__x: f64) f64;
+pub extern fn __round(__x: f64) f64;
+pub extern fn trunc(__x: f64) f64;
+pub extern fn __trunc(__x: f64) f64;
+pub extern fn remquo(__x: f64, __y: f64, __quo: [*c]c_int) f64;
+pub extern fn __remquo(__x: f64, __y: f64, __quo: [*c]c_int) f64;
+pub extern fn lrint(__x: f64) c_long;
+pub extern fn __lrint(__x: f64) c_long;
+pub extern fn llrint(__x: f64) c_longlong;
+pub extern fn __llrint(__x: f64) c_longlong;
+pub extern fn lround(__x: f64) c_long;
+pub extern fn __lround(__x: f64) c_long;
+pub extern fn llround(__x: f64) c_longlong;
+pub extern fn __llround(__x: f64) c_longlong;
+pub extern fn fdim(__x: f64, __y: f64) f64;
+pub extern fn __fdim(__x: f64, __y: f64) f64;
+pub extern fn fmax(__x: f64, __y: f64) f64;
+pub extern fn __fmax(__x: f64, __y: f64) f64;
+pub extern fn fmin(__x: f64, __y: f64) f64;
+pub extern fn __fmin(__x: f64, __y: f64) f64;
+pub extern fn fma(__x: f64, __y: f64, __z: f64) f64;
+pub extern fn __fma(__x: f64, __y: f64, __z: f64) f64;
+pub extern fn scalb(__x: f64, __n: f64) f64;
+pub extern fn __scalb(__x: f64, __n: f64) f64;
+pub extern fn __fpclassifyf(__value: f32) c_int;
+pub extern fn __signbitf(__value: f32) c_int;
+pub extern fn __isinff(__value: f32) c_int;
+pub extern fn __finitef(__value: f32) c_int;
+pub extern fn __isnanf(__value: f32) c_int;
+pub extern fn __iseqsigf(__x: f32, __y: f32) c_int;
+pub extern fn __issignalingf(__value: f32) c_int;
+pub extern fn acosf(__x: f32) f32;
+pub extern fn __acosf(__x: f32) f32;
+pub extern fn asinf(__x: f32) f32;
+pub extern fn __asinf(__x: f32) f32;
+pub extern fn atanf(__x: f32) f32;
+pub extern fn __atanf(__x: f32) f32;
+pub extern fn atan2f(__y: f32, __x: f32) f32;
+pub extern fn __atan2f(__y: f32, __x: f32) f32;
+pub extern fn cosf(__x: f32) f32;
+pub extern fn __cosf(__x: f32) f32;
+pub extern fn sinf(__x: f32) f32;
+pub extern fn __sinf(__x: f32) f32;
+pub extern fn tanf(__x: f32) f32;
+pub extern fn __tanf(__x: f32) f32;
+pub extern fn coshf(__x: f32) f32;
+pub extern fn __coshf(__x: f32) f32;
+pub extern fn sinhf(__x: f32) f32;
+pub extern fn __sinhf(__x: f32) f32;
+pub extern fn tanhf(__x: f32) f32;
+pub extern fn __tanhf(__x: f32) f32;
+pub extern fn acoshf(__x: f32) f32;
+pub extern fn __acoshf(__x: f32) f32;
+pub extern fn asinhf(__x: f32) f32;
+pub extern fn __asinhf(__x: f32) f32;
+pub extern fn atanhf(__x: f32) f32;
+pub extern fn __atanhf(__x: f32) f32;
+pub extern fn expf(__x: f32) f32;
+pub extern fn __expf(__x: f32) f32;
+pub extern fn frexpf(__x: f32, __exponent: [*c]c_int) f32;
+pub extern fn __frexpf(__x: f32, __exponent: [*c]c_int) f32;
+pub extern fn ldexpf(__x: f32, __exponent: c_int) f32;
+pub extern fn __ldexpf(__x: f32, __exponent: c_int) f32;
+pub extern fn logf(__x: f32) f32;
+pub extern fn __logf(__x: f32) f32;
+pub extern fn log10f(__x: f32) f32;
+pub extern fn __log10f(__x: f32) f32;
+pub extern fn modff(__x: f32, __iptr: [*c]f32) f32;
+pub extern fn __modff(__x: f32, __iptr: [*c]f32) f32;
+pub extern fn expm1f(__x: f32) f32;
+pub extern fn __expm1f(__x: f32) f32;
+pub extern fn log1pf(__x: f32) f32;
+pub extern fn __log1pf(__x: f32) f32;
+pub extern fn logbf(__x: f32) f32;
+pub extern fn __logbf(__x: f32) f32;
+pub extern fn exp2f(__x: f32) f32;
+pub extern fn __exp2f(__x: f32) f32;
+pub extern fn log2f(__x: f32) f32;
+pub extern fn __log2f(__x: f32) f32;
+pub extern fn powf(__x: f32, __y: f32) f32;
+pub extern fn __powf(__x: f32, __y: f32) f32;
+pub extern fn sqrtf(__x: f32) f32;
+pub extern fn __sqrtf(__x: f32) f32;
+pub extern fn hypotf(__x: f32, __y: f32) f32;
+pub extern fn __hypotf(__x: f32, __y: f32) f32;
+pub extern fn cbrtf(__x: f32) f32;
+pub extern fn __cbrtf(__x: f32) f32;
+pub extern fn ceilf(__x: f32) f32;
+pub extern fn __ceilf(__x: f32) f32;
+pub extern fn fabsf(__x: f32) f32;
+pub extern fn __fabsf(__x: f32) f32;
+pub extern fn floorf(__x: f32) f32;
+pub extern fn __floorf(__x: f32) f32;
+pub extern fn fmodf(__x: f32, __y: f32) f32;
+pub extern fn __fmodf(__x: f32, __y: f32) f32;
+pub extern fn isinff(__value: f32) c_int;
+pub extern fn finitef(__value: f32) c_int;
+pub extern fn dremf(__x: f32, __y: f32) f32;
+pub extern fn __dremf(__x: f32, __y: f32) f32;
+pub extern fn significandf(__x: f32) f32;
+pub extern fn __significandf(__x: f32) f32;
+pub extern fn copysignf(__x: f32, __y: f32) f32;
+pub extern fn __copysignf(__x: f32, __y: f32) f32;
+pub extern fn nanf(__tagb: [*c]const u8) f32;
+pub extern fn __nanf(__tagb: [*c]const u8) f32;
+pub extern fn isnanf(__value: f32) c_int;
+pub extern fn j0f(f32) f32;
+pub extern fn __j0f(f32) f32;
+pub extern fn j1f(f32) f32;
+pub extern fn __j1f(f32) f32;
+pub extern fn jnf(c_int, f32) f32;
+pub extern fn __jnf(c_int, f32) f32;
+pub extern fn y0f(f32) f32;
+pub extern fn __y0f(f32) f32;
+pub extern fn y1f(f32) f32;
+pub extern fn __y1f(f32) f32;
+pub extern fn ynf(c_int, f32) f32;
+pub extern fn __ynf(c_int, f32) f32;
+pub extern fn erff(f32) f32;
+pub extern fn __erff(f32) f32;
+pub extern fn erfcf(f32) f32;
+pub extern fn __erfcf(f32) f32;
+pub extern fn lgammaf(f32) f32;
+pub extern fn __lgammaf(f32) f32;
+pub extern fn tgammaf(f32) f32;
+pub extern fn __tgammaf(f32) f32;
+pub extern fn gammaf(f32) f32;
+pub extern fn __gammaf(f32) f32;
+pub extern fn lgammaf_r(f32, __signgamp: [*c]c_int) f32;
+pub extern fn __lgammaf_r(f32, __signgamp: [*c]c_int) f32;
+pub extern fn rintf(__x: f32) f32;
+pub extern fn __rintf(__x: f32) f32;
+pub extern fn nextafterf(__x: f32, __y: f32) f32;
+pub extern fn __nextafterf(__x: f32, __y: f32) f32;
+pub extern fn nexttowardf(__x: f32, __y: c_longdouble) f32;
+pub extern fn __nexttowardf(__x: f32, __y: c_longdouble) f32;
+pub extern fn remainderf(__x: f32, __y: f32) f32;
+pub extern fn __remainderf(__x: f32, __y: f32) f32;
+pub extern fn scalbnf(__x: f32, __n: c_int) f32;
+pub extern fn __scalbnf(__x: f32, __n: c_int) f32;
+pub extern fn ilogbf(__x: f32) c_int;
+pub extern fn __ilogbf(__x: f32) c_int;
+pub extern fn scalblnf(__x: f32, __n: c_long) f32;
+pub extern fn __scalblnf(__x: f32, __n: c_long) f32;
+pub extern fn nearbyintf(__x: f32) f32;
+pub extern fn __nearbyintf(__x: f32) f32;
+pub extern fn roundf(__x: f32) f32;
+pub extern fn __roundf(__x: f32) f32;
+pub extern fn truncf(__x: f32) f32;
+pub extern fn __truncf(__x: f32) f32;
+pub extern fn remquof(__x: f32, __y: f32, __quo: [*c]c_int) f32;
+pub extern fn __remquof(__x: f32, __y: f32, __quo: [*c]c_int) f32;
+pub extern fn lrintf(__x: f32) c_long;
+pub extern fn __lrintf(__x: f32) c_long;
+pub extern fn llrintf(__x: f32) c_longlong;
+pub extern fn __llrintf(__x: f32) c_longlong;
+pub extern fn lroundf(__x: f32) c_long;
+pub extern fn __lroundf(__x: f32) c_long;
+pub extern fn llroundf(__x: f32) c_longlong;
+pub extern fn __llroundf(__x: f32) c_longlong;
+pub extern fn fdimf(__x: f32, __y: f32) f32;
+pub extern fn __fdimf(__x: f32, __y: f32) f32;
+pub extern fn fmaxf(__x: f32, __y: f32) f32;
+pub extern fn __fmaxf(__x: f32, __y: f32) f32;
+pub extern fn fminf(__x: f32, __y: f32) f32;
+pub extern fn __fminf(__x: f32, __y: f32) f32;
+pub extern fn fmaf(__x: f32, __y: f32, __z: f32) f32;
+pub extern fn __fmaf(__x: f32, __y: f32, __z: f32) f32;
+pub extern fn scalbf(__x: f32, __n: f32) f32;
+pub extern fn __scalbf(__x: f32, __n: f32) f32;
+pub extern fn __fpclassifyl(__value: c_longdouble) c_int;
+pub extern fn __signbitl(__value: c_longdouble) c_int;
+pub extern fn __isinfl(__value: c_longdouble) c_int;
+pub extern fn __finitel(__value: c_longdouble) c_int;
+pub extern fn __isnanl(__value: c_longdouble) c_int;
+pub extern fn __iseqsigl(__x: c_longdouble, __y: c_longdouble) c_int;
+pub extern fn __issignalingl(__value: c_longdouble) c_int;
+pub extern fn acosl(__x: c_longdouble) c_longdouble;
+pub extern fn __acosl(__x: c_longdouble) c_longdouble;
+pub extern fn asinl(__x: c_longdouble) c_longdouble;
+pub extern fn __asinl(__x: c_longdouble) c_longdouble;
+pub extern fn atanl(__x: c_longdouble) c_longdouble;
+pub extern fn __atanl(__x: c_longdouble) c_longdouble;
+pub extern fn atan2l(__y: c_longdouble, __x: c_longdouble) c_longdouble;
+pub extern fn __atan2l(__y: c_longdouble, __x: c_longdouble) c_longdouble;
+pub extern fn cosl(__x: c_longdouble) c_longdouble;
+pub extern fn __cosl(__x: c_longdouble) c_longdouble;
+pub extern fn sinl(__x: c_longdouble) c_longdouble;
+pub extern fn __sinl(__x: c_longdouble) c_longdouble;
+pub extern fn tanl(__x: c_longdouble) c_longdouble;
+pub extern fn __tanl(__x: c_longdouble) c_longdouble;
+pub extern fn coshl(__x: c_longdouble) c_longdouble;
+pub extern fn __coshl(__x: c_longdouble) c_longdouble;
+pub extern fn sinhl(__x: c_longdouble) c_longdouble;
+pub extern fn __sinhl(__x: c_longdouble) c_longdouble;
+pub extern fn tanhl(__x: c_longdouble) c_longdouble;
+pub extern fn __tanhl(__x: c_longdouble) c_longdouble;
+pub extern fn acoshl(__x: c_longdouble) c_longdouble;
+pub extern fn __acoshl(__x: c_longdouble) c_longdouble;
+pub extern fn asinhl(__x: c_longdouble) c_longdouble;
+pub extern fn __asinhl(__x: c_longdouble) c_longdouble;
+pub extern fn atanhl(__x: c_longdouble) c_longdouble;
+pub extern fn __atanhl(__x: c_longdouble) c_longdouble;
+pub extern fn expl(__x: c_longdouble) c_longdouble;
+pub extern fn __expl(__x: c_longdouble) c_longdouble;
+pub extern fn frexpl(__x: c_longdouble, __exponent: [*c]c_int) c_longdouble;
+pub extern fn __frexpl(__x: c_longdouble, __exponent: [*c]c_int) c_longdouble;
+pub extern fn ldexpl(__x: c_longdouble, __exponent: c_int) c_longdouble;
+pub extern fn __ldexpl(__x: c_longdouble, __exponent: c_int) c_longdouble;
+pub extern fn logl(__x: c_longdouble) c_longdouble;
+pub extern fn __logl(__x: c_longdouble) c_longdouble;
+pub extern fn log10l(__x: c_longdouble) c_longdouble;
+pub extern fn __log10l(__x: c_longdouble) c_longdouble;
+pub extern fn modfl(__x: c_longdouble, __iptr: [*c]c_longdouble) c_longdouble;
+pub extern fn __modfl(__x: c_longdouble, __iptr: [*c]c_longdouble) c_longdouble;
+pub extern fn expm1l(__x: c_longdouble) c_longdouble;
+pub extern fn __expm1l(__x: c_longdouble) c_longdouble;
+pub extern fn log1pl(__x: c_longdouble) c_longdouble;
+pub extern fn __log1pl(__x: c_longdouble) c_longdouble;
+pub extern fn logbl(__x: c_longdouble) c_longdouble;
+pub extern fn __logbl(__x: c_longdouble) c_longdouble;
+pub extern fn exp2l(__x: c_longdouble) c_longdouble;
+pub extern fn __exp2l(__x: c_longdouble) c_longdouble;
+pub extern fn log2l(__x: c_longdouble) c_longdouble;
+pub extern fn __log2l(__x: c_longdouble) c_longdouble;
+pub extern fn powl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __powl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn sqrtl(__x: c_longdouble) c_longdouble;
+pub extern fn __sqrtl(__x: c_longdouble) c_longdouble;
+pub extern fn hypotl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __hypotl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn cbrtl(__x: c_longdouble) c_longdouble;
+pub extern fn __cbrtl(__x: c_longdouble) c_longdouble;
+pub extern fn ceill(__x: c_longdouble) c_longdouble;
+pub extern fn __ceill(__x: c_longdouble) c_longdouble;
+pub extern fn fabsl(__x: c_longdouble) c_longdouble;
+pub extern fn __fabsl(__x: c_longdouble) c_longdouble;
+pub extern fn floorl(__x: c_longdouble) c_longdouble;
+pub extern fn __floorl(__x: c_longdouble) c_longdouble;
+pub extern fn fmodl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __fmodl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn isinfl(__value: c_longdouble) c_int;
+pub extern fn finitel(__value: c_longdouble) c_int;
+pub extern fn dreml(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __dreml(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn significandl(__x: c_longdouble) c_longdouble;
+pub extern fn __significandl(__x: c_longdouble) c_longdouble;
+pub extern fn copysignl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __copysignl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn nanl(__tagb: [*c]const u8) c_longdouble;
+pub extern fn __nanl(__tagb: [*c]const u8) c_longdouble;
+pub extern fn isnanl(__value: c_longdouble) c_int;
+pub extern fn j0l(c_longdouble) c_longdouble;
+pub extern fn __j0l(c_longdouble) c_longdouble;
+pub extern fn j1l(c_longdouble) c_longdouble;
+pub extern fn __j1l(c_longdouble) c_longdouble;
+pub extern fn jnl(c_int, c_longdouble) c_longdouble;
+pub extern fn __jnl(c_int, c_longdouble) c_longdouble;
+pub extern fn y0l(c_longdouble) c_longdouble;
+pub extern fn __y0l(c_longdouble) c_longdouble;
+pub extern fn y1l(c_longdouble) c_longdouble;
+pub extern fn __y1l(c_longdouble) c_longdouble;
+pub extern fn ynl(c_int, c_longdouble) c_longdouble;
+pub extern fn __ynl(c_int, c_longdouble) c_longdouble;
+pub extern fn erfl(c_longdouble) c_longdouble;
+pub extern fn __erfl(c_longdouble) c_longdouble;
+pub extern fn erfcl(c_longdouble) c_longdouble;
+pub extern fn __erfcl(c_longdouble) c_longdouble;
+pub extern fn lgammal(c_longdouble) c_longdouble;
+pub extern fn __lgammal(c_longdouble) c_longdouble;
+pub extern fn tgammal(c_longdouble) c_longdouble;
+pub extern fn __tgammal(c_longdouble) c_longdouble;
+pub extern fn gammal(c_longdouble) c_longdouble;
+pub extern fn __gammal(c_longdouble) c_longdouble;
+pub extern fn lgammal_r(c_longdouble, __signgamp: [*c]c_int) c_longdouble;
+pub extern fn __lgammal_r(c_longdouble, __signgamp: [*c]c_int) c_longdouble;
+pub extern fn rintl(__x: c_longdouble) c_longdouble;
+pub extern fn __rintl(__x: c_longdouble) c_longdouble;
+pub extern fn nextafterl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __nextafterl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn nexttowardl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __nexttowardl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn remainderl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __remainderl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn scalbnl(__x: c_longdouble, __n: c_int) c_longdouble;
+pub extern fn __scalbnl(__x: c_longdouble, __n: c_int) c_longdouble;
+pub extern fn ilogbl(__x: c_longdouble) c_int;
+pub extern fn __ilogbl(__x: c_longdouble) c_int;
+pub extern fn scalblnl(__x: c_longdouble, __n: c_long) c_longdouble;
+pub extern fn __scalblnl(__x: c_longdouble, __n: c_long) c_longdouble;
+pub extern fn nearbyintl(__x: c_longdouble) c_longdouble;
+pub extern fn __nearbyintl(__x: c_longdouble) c_longdouble;
+pub extern fn roundl(__x: c_longdouble) c_longdouble;
+pub extern fn __roundl(__x: c_longdouble) c_longdouble;
+pub extern fn truncl(__x: c_longdouble) c_longdouble;
+pub extern fn __truncl(__x: c_longdouble) c_longdouble;
+pub extern fn remquol(__x: c_longdouble, __y: c_longdouble, __quo: [*c]c_int) c_longdouble;
+pub extern fn __remquol(__x: c_longdouble, __y: c_longdouble, __quo: [*c]c_int) c_longdouble;
+pub extern fn lrintl(__x: c_longdouble) c_long;
+pub extern fn __lrintl(__x: c_longdouble) c_long;
+pub extern fn llrintl(__x: c_longdouble) c_longlong;
+pub extern fn __llrintl(__x: c_longdouble) c_longlong;
+pub extern fn lroundl(__x: c_longdouble) c_long;
+pub extern fn __lroundl(__x: c_longdouble) c_long;
+pub extern fn llroundl(__x: c_longdouble) c_longlong;
+pub extern fn __llroundl(__x: c_longdouble) c_longlong;
+pub extern fn fdiml(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __fdiml(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn fmaxl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __fmaxl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn fminl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn __fminl(__x: c_longdouble, __y: c_longdouble) c_longdouble;
+pub extern fn fmal(__x: c_longdouble, __y: c_longdouble, __z: c_longdouble) c_longdouble;
+pub extern fn __fmal(__x: c_longdouble, __y: c_longdouble, __z: c_longdouble) c_longdouble;
+pub extern fn scalbl(__x: c_longdouble, __n: c_longdouble) c_longdouble;
+pub extern fn __scalbl(__x: c_longdouble, __n: c_longdouble) c_longdouble;
+pub extern var signgam: c_int;
+pub const FP_NAN: c_int = 0;
+pub const FP_INFINITE: c_int = 1;
+pub const FP_ZERO: c_int = 2;
+pub const FP_SUBNORMAL: c_int = 3;
+pub const FP_NORMAL: c_int = 4;
+const enum_unnamed_6 = c_uint;
+pub const RICON_NONE: c_int = 0;
+pub const RICON_FOLDER_FILE_OPEN: c_int = 1;
+pub const RICON_FILE_SAVE_CLASSIC: c_int = 2;
+pub const RICON_FOLDER_OPEN: c_int = 3;
+pub const RICON_FOLDER_SAVE: c_int = 4;
+pub const RICON_FILE_OPEN: c_int = 5;
+pub const RICON_FILE_SAVE: c_int = 6;
+pub const RICON_FILE_EXPORT: c_int = 7;
+pub const RICON_FILE_NEW: c_int = 8;
+pub const RICON_FILE_DELETE: c_int = 9;
+pub const RICON_FILETYPE_TEXT: c_int = 10;
+pub const RICON_FILETYPE_AUDIO: c_int = 11;
+pub const RICON_FILETYPE_IMAGE: c_int = 12;
+pub const RICON_FILETYPE_PLAY: c_int = 13;
+pub const RICON_FILETYPE_VIDEO: c_int = 14;
+pub const RICON_FILETYPE_INFO: c_int = 15;
+pub const RICON_FILE_COPY: c_int = 16;
+pub const RICON_FILE_CUT: c_int = 17;
+pub const RICON_FILE_PASTE: c_int = 18;
+pub const RICON_CURSOR_HAND: c_int = 19;
+pub const RICON_CURSOR_POINTER: c_int = 20;
+pub const RICON_CURSOR_CLASSIC: c_int = 21;
+pub const RICON_PENCIL: c_int = 22;
+pub const RICON_PENCIL_BIG: c_int = 23;
+pub const RICON_BRUSH_CLASSIC: c_int = 24;
+pub const RICON_BRUSH_PAINTER: c_int = 25;
+pub const RICON_WATER_DROP: c_int = 26;
+pub const RICON_COLOR_PICKER: c_int = 27;
+pub const RICON_RUBBER: c_int = 28;
+pub const RICON_COLOR_BUCKET: c_int = 29;
+pub const RICON_TEXT_T: c_int = 30;
+pub const RICON_TEXT_A: c_int = 31;
+pub const RICON_SCALE: c_int = 32;
+pub const RICON_RESIZE: c_int = 33;
+pub const RICON_FILTER_POINT: c_int = 34;
+pub const RICON_FILTER_BILINEAR: c_int = 35;
+pub const RICON_CROP: c_int = 36;
+pub const RICON_CROP_ALPHA: c_int = 37;
+pub const RICON_SQUARE_TOGGLE: c_int = 38;
+pub const RICON_SYMMETRY: c_int = 39;
+pub const RICON_SYMMETRY_HORIZONTAL: c_int = 40;
+pub const RICON_SYMMETRY_VERTICAL: c_int = 41;
+pub const RICON_LENS: c_int = 42;
+pub const RICON_LENS_BIG: c_int = 43;
+pub const RICON_EYE_ON: c_int = 44;
+pub const RICON_EYE_OFF: c_int = 45;
+pub const RICON_FILTER_TOP: c_int = 46;
+pub const RICON_FILTER: c_int = 47;
+pub const RICON_TARGET_POINT: c_int = 48;
+pub const RICON_TARGET_SMALL: c_int = 49;
+pub const RICON_TARGET_BIG: c_int = 50;
+pub const RICON_TARGET_MOVE: c_int = 51;
+pub const RICON_CURSOR_MOVE: c_int = 52;
+pub const RICON_CURSOR_SCALE: c_int = 53;
+pub const RICON_CURSOR_SCALE_RIGHT: c_int = 54;
+pub const RICON_CURSOR_SCALE_LEFT: c_int = 55;
+pub const RICON_UNDO: c_int = 56;
+pub const RICON_REDO: c_int = 57;
+pub const RICON_REREDO: c_int = 58;
+pub const RICON_MUTATE: c_int = 59;
+pub const RICON_ROTATE: c_int = 60;
+pub const RICON_REPEAT: c_int = 61;
+pub const RICON_SHUFFLE: c_int = 62;
+pub const RICON_EMPTYBOX: c_int = 63;
+pub const RICON_TARGET: c_int = 64;
+pub const RICON_TARGET_SMALL_FILL: c_int = 65;
+pub const RICON_TARGET_BIG_FILL: c_int = 66;
+pub const RICON_TARGET_MOVE_FILL: c_int = 67;
+pub const RICON_CURSOR_MOVE_FILL: c_int = 68;
+pub const RICON_CURSOR_SCALE_FILL: c_int = 69;
+pub const RICON_CURSOR_SCALE_RIGHT_FILL: c_int = 70;
+pub const RICON_CURSOR_SCALE_LEFT_FILL: c_int = 71;
+pub const RICON_UNDO_FILL: c_int = 72;
+pub const RICON_REDO_FILL: c_int = 73;
+pub const RICON_REREDO_FILL: c_int = 74;
+pub const RICON_MUTATE_FILL: c_int = 75;
+pub const RICON_ROTATE_FILL: c_int = 76;
+pub const RICON_REPEAT_FILL: c_int = 77;
+pub const RICON_SHUFFLE_FILL: c_int = 78;
+pub const RICON_EMPTYBOX_SMALL: c_int = 79;
+pub const RICON_BOX: c_int = 80;
+pub const RICON_BOX_TOP: c_int = 81;
+pub const RICON_BOX_TOP_RIGHT: c_int = 82;
+pub const RICON_BOX_RIGHT: c_int = 83;
+pub const RICON_BOX_BOTTOM_RIGHT: c_int = 84;
+pub const RICON_BOX_BOTTOM: c_int = 85;
+pub const RICON_BOX_BOTTOM_LEFT: c_int = 86;
+pub const RICON_BOX_LEFT: c_int = 87;
+pub const RICON_BOX_TOP_LEFT: c_int = 88;
+pub const RICON_BOX_CENTER: c_int = 89;
+pub const RICON_BOX_CIRCLE_MASK: c_int = 90;
+pub const RICON_POT: c_int = 91;
+pub const RICON_ALPHA_MULTIPLY: c_int = 92;
+pub const RICON_ALPHA_CLEAR: c_int = 93;
+pub const RICON_DITHERING: c_int = 94;
+pub const RICON_MIPMAPS: c_int = 95;
+pub const RICON_BOX_GRID: c_int = 96;
+pub const RICON_GRID: c_int = 97;
+pub const RICON_BOX_CORNERS_SMALL: c_int = 98;
+pub const RICON_BOX_CORNERS_BIG: c_int = 99;
+pub const RICON_FOUR_BOXES: c_int = 100;
+pub const RICON_GRID_FILL: c_int = 101;
+pub const RICON_BOX_MULTISIZE: c_int = 102;
+pub const RICON_ZOOM_SMALL: c_int = 103;
+pub const RICON_ZOOM_MEDIUM: c_int = 104;
+pub const RICON_ZOOM_BIG: c_int = 105;
+pub const RICON_ZOOM_ALL: c_int = 106;
+pub const RICON_ZOOM_CENTER: c_int = 107;
+pub const RICON_BOX_DOTS_SMALL: c_int = 108;
+pub const RICON_BOX_DOTS_BIG: c_int = 109;
+pub const RICON_BOX_CONCENTRIC: c_int = 110;
+pub const RICON_BOX_GRID_BIG: c_int = 111;
+pub const RICON_OK_TICK: c_int = 112;
+pub const RICON_CROSS: c_int = 113;
+pub const RICON_ARROW_LEFT: c_int = 114;
+pub const RICON_ARROW_RIGHT: c_int = 115;
+pub const RICON_ARROW_DOWN: c_int = 116;
+pub const RICON_ARROW_UP: c_int = 117;
+pub const RICON_ARROW_LEFT_FILL: c_int = 118;
+pub const RICON_ARROW_RIGHT_FILL: c_int = 119;
+pub const RICON_ARROW_DOWN_FILL: c_int = 120;
+pub const RICON_ARROW_UP_FILL: c_int = 121;
+pub const RICON_AUDIO: c_int = 122;
+pub const RICON_FX: c_int = 123;
+pub const RICON_WAVE: c_int = 124;
+pub const RICON_WAVE_SINUS: c_int = 125;
+pub const RICON_WAVE_SQUARE: c_int = 126;
+pub const RICON_WAVE_TRIANGULAR: c_int = 127;
+pub const RICON_CROSS_SMALL: c_int = 128;
+pub const RICON_PLAYER_PREVIOUS: c_int = 129;
+pub const RICON_PLAYER_PLAY_BACK: c_int = 130;
+pub const RICON_PLAYER_PLAY: c_int = 131;
+pub const RICON_PLAYER_PAUSE: c_int = 132;
+pub const RICON_PLAYER_STOP: c_int = 133;
+pub const RICON_PLAYER_NEXT: c_int = 134;
+pub const RICON_PLAYER_RECORD: c_int = 135;
+pub const RICON_MAGNET: c_int = 136;
+pub const RICON_LOCK_CLOSE: c_int = 137;
+pub const RICON_LOCK_OPEN: c_int = 138;
+pub const RICON_CLOCK: c_int = 139;
+pub const RICON_TOOLS: c_int = 140;
+pub const RICON_GEAR: c_int = 141;
+pub const RICON_GEAR_BIG: c_int = 142;
+pub const RICON_BIN: c_int = 143;
+pub const RICON_HAND_POINTER: c_int = 144;
+pub const RICON_LASER: c_int = 145;
+pub const RICON_COIN: c_int = 146;
+pub const RICON_EXPLOSION: c_int = 147;
+pub const RICON_1UP: c_int = 148;
+pub const RICON_PLAYER: c_int = 149;
+pub const RICON_PLAYER_JUMP: c_int = 150;
+pub const RICON_KEY: c_int = 151;
+pub const RICON_DEMON: c_int = 152;
+pub const RICON_TEXT_POPUP: c_int = 153;
+pub const RICON_GEAR_EX: c_int = 154;
+pub const RICON_CRACK: c_int = 155;
+pub const RICON_CRACK_POINTS: c_int = 156;
+pub const RICON_STAR: c_int = 157;
+pub const RICON_DOOR: c_int = 158;
+pub const RICON_EXIT: c_int = 159;
+pub const RICON_MODE_2D: c_int = 160;
+pub const RICON_MODE_3D: c_int = 161;
+pub const RICON_CUBE: c_int = 162;
+pub const RICON_CUBE_FACE_TOP: c_int = 163;
+pub const RICON_CUBE_FACE_LEFT: c_int = 164;
+pub const RICON_CUBE_FACE_FRONT: c_int = 165;
+pub const RICON_CUBE_FACE_BOTTOM: c_int = 166;
+pub const RICON_CUBE_FACE_RIGHT: c_int = 167;
+pub const RICON_CUBE_FACE_BACK: c_int = 168;
+pub const RICON_CAMERA: c_int = 169;
+pub const RICON_SPECIAL: c_int = 170;
+pub const RICON_LINK_NET: c_int = 171;
+pub const RICON_LINK_BOXES: c_int = 172;
+pub const RICON_LINK_MULTI: c_int = 173;
+pub const RICON_LINK: c_int = 174;
+pub const RICON_LINK_BROKE: c_int = 175;
+pub const RICON_TEXT_NOTES: c_int = 176;
+pub const RICON_NOTEBOOK: c_int = 177;
+pub const RICON_SUITCASE: c_int = 178;
+pub const RICON_SUITCASE_ZIP: c_int = 179;
+pub const RICON_MAILBOX: c_int = 180;
+pub const RICON_MONITOR: c_int = 181;
+pub const RICON_PRINTER: c_int = 182;
+pub const RICON_PHOTO_CAMERA: c_int = 183;
+pub const RICON_PHOTO_CAMERA_FLASH: c_int = 184;
+pub const RICON_HOUSE: c_int = 185;
+pub const RICON_HEART: c_int = 186;
+pub const RICON_CORNER: c_int = 187;
+pub const RICON_VERTICAL_BARS: c_int = 188;
+pub const RICON_VERTICAL_BARS_FILL: c_int = 189;
+pub const RICON_LIFE_BARS: c_int = 190;
+pub const RICON_INFO: c_int = 191;
+pub const RICON_CROSSLINE: c_int = 192;
+pub const RICON_HELP: c_int = 193;
+pub const RICON_FILETYPE_ALPHA: c_int = 194;
+pub const RICON_FILETYPE_HOME: c_int = 195;
+pub const RICON_LAYERS_VISIBLE: c_int = 196;
+pub const RICON_LAYERS: c_int = 197;
+pub const RICON_WINDOW: c_int = 198;
+pub const RICON_HIDPI: c_int = 199;
+pub const RICON_200: c_int = 200;
+pub const RICON_201: c_int = 201;
+pub const RICON_202: c_int = 202;
+pub const RICON_203: c_int = 203;
+pub const RICON_204: c_int = 204;
+pub const RICON_205: c_int = 205;
+pub const RICON_206: c_int = 206;
+pub const RICON_207: c_int = 207;
+pub const RICON_208: c_int = 208;
+pub const RICON_209: c_int = 209;
+pub const RICON_210: c_int = 210;
+pub const RICON_211: c_int = 211;
+pub const RICON_212: c_int = 212;
+pub const RICON_213: c_int = 213;
+pub const RICON_214: c_int = 214;
+pub const RICON_215: c_int = 215;
+pub const RICON_216: c_int = 216;
+pub const RICON_217: c_int = 217;
+pub const RICON_218: c_int = 218;
+pub const RICON_219: c_int = 219;
+pub const RICON_220: c_int = 220;
+pub const RICON_221: c_int = 221;
+pub const RICON_222: c_int = 222;
+pub const RICON_223: c_int = 223;
+pub const RICON_224: c_int = 224;
+pub const RICON_225: c_int = 225;
+pub const RICON_226: c_int = 226;
+pub const RICON_227: c_int = 227;
+pub const RICON_228: c_int = 228;
+pub const RICON_229: c_int = 229;
+pub const RICON_230: c_int = 230;
+pub const RICON_231: c_int = 231;
+pub const RICON_232: c_int = 232;
+pub const RICON_233: c_int = 233;
+pub const RICON_234: c_int = 234;
+pub const RICON_235: c_int = 235;
+pub const RICON_236: c_int = 236;
+pub const RICON_237: c_int = 237;
+pub const RICON_238: c_int = 238;
+pub const RICON_239: c_int = 239;
+pub const RICON_240: c_int = 240;
+pub const RICON_241: c_int = 241;
+pub const RICON_242: c_int = 242;
+pub const RICON_243: c_int = 243;
+pub const RICON_244: c_int = 244;
+pub const RICON_245: c_int = 245;
+pub const RICON_246: c_int = 246;
+pub const RICON_247: c_int = 247;
+pub const RICON_248: c_int = 248;
+pub const RICON_249: c_int = 249;
+pub const RICON_250: c_int = 250;
+pub const RICON_251: c_int = 251;
+pub const RICON_252: c_int = 252;
+pub const RICON_253: c_int = 253;
+pub const RICON_254: c_int = 254;
+pub const RICON_255: c_int = 255;
+pub const guiIconName = c_uint;
+pub var guiIcons: [2048]c_uint = [2048]c_uint{
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073217536)),
+ @bitCast(c_uint, @as(c_int, 789061640)),
+ @bitCast(c_uint, @as(c_int, 541204606)),
+ @bitCast(c_uint, @as(c_int, 1073905602)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ @bitCast(c_uint, @as(c_int, 1073610752)),
+ @bitCast(c_uint, @as(c_int, 1143104546)),
+ @bitCast(c_uint, @as(c_int, 1073891298)),
+ @bitCast(c_uint, @as(c_int, 1610235906)),
+ @bitCast(c_uint, @as(c_int, 1474973706)),
+ @bitCast(c_uint, @as(c_int, 1342853130)),
+ @bitCast(c_uint, @as(c_int, 1073897466)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 4325502)),
+ @bitCast(c_uint, @as(c_int, 1073905602)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1090666498)),
+ @bitCast(c_uint, @as(c_int, 1145193090)),
+ @bitCast(c_uint, @as(c_int, 2034123010)),
+ @bitCast(c_uint, @as(c_int, 256)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 4325502)),
+ @bitCast(c_uint, @as(c_int, 1073905602)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1090666754)),
+ @bitCast(c_uint, @as(c_int, 1145192706)),
+ @bitCast(c_uint, @as(c_int, 2034123394)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 553918468)),
+ @bitCast(c_uint, @as(c_int, 608445060)),
+ @bitCast(c_uint, @as(c_int, 553918724)),
+ @bitCast(c_uint, @as(c_int, 537141508)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 553918468)),
+ @bitCast(c_uint, @as(c_int, 553918724)),
+ @bitCast(c_uint, @as(c_int, 579085380)),
+ @bitCast(c_uint, @as(c_int, 537141508)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 270340)),
+ @bitCast(c_uint, @as(c_int, 537137156)),
+ @bitCast(c_uint, @as(c_int, 545539972)),
+ @bitCast(c_uint, @as(c_int, 8655748)),
+ @bitCast(c_uint, @as(c_int, 537143172)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 570696196)),
+ @bitCast(c_uint, @as(c_int, 570699652)),
+ @bitCast(c_uint, @as(c_int, 537141764)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 621029508)),
+ @bitCast(c_uint, @as(c_int, 621027844)),
+ @bitCast(c_uint, @as(c_int, 537143428)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537145332)),
+ @bitCast(c_uint, @as(c_int, 537145332)),
+ @bitCast(c_uint, @as(c_int, 537145332)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 654581764)),
+ @bitCast(c_uint, @as(c_int, 608445636)),
+ @bitCast(c_uint, @as(c_int, 641999940)),
+ @bitCast(c_uint, @as(c_int, 543434340)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 637806084)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 893659268)),
+ @bitCast(c_uint, @as(c_int, 605299244)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 549724164)),
+ @bitCast(c_uint, @as(c_int, 574890308)),
+ @bitCast(c_uint, @as(c_int, 574891076)),
+ @bitCast(c_uint, @as(c_int, 549724484)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 1073491952)),
+ @bitCast(c_uint, @as(c_int, 1060909044)),
+ @bitCast(c_uint, @as(c_int, 1035742900)),
+ @bitCast(c_uint, @as(c_int, 1035742132)),
+ @bitCast(c_uint, @as(c_int, 1060908724)),
+ @bitCast(c_uint, @as(c_int, 1073491956)),
+ @bitCast(c_uint, @as(c_int, 12276)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 562307460)),
+ @bitCast(c_uint, @as(c_int, 562307076)),
+ @bitCast(c_uint, @as(c_int, 562307460)),
+ @bitCast(c_uint, @as(c_int, 562307460)),
+ @bitCast(c_uint, @as(c_int, 537141636)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 267386880)),
+ @bitCast(c_uint, @as(c_int, 941361168)),
+ @bitCast(c_uint, @as(c_int, 671361028)),
+ @bitCast(c_uint, @as(c_int, 671361028)),
+ @bitCast(c_uint, @as(c_int, 671361028)),
+ @bitCast(c_uint, @as(c_int, 671361028)),
+ @bitCast(c_uint, @as(c_int, 537931772)),
+ @bitCast(c_uint, @as(c_int, 16368)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1880883200)),
+ @bitCast(c_uint, @as(c_int, 127671828)),
+ @bitCast(c_uint, @as(c_int, 1436549360)),
+ @bitCast(c_uint, @as(c_int, 127664368)),
+ @bitCast(c_uint, @as(c_int, 1880890900)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 29360128)),
+ @bitCast(c_uint, @as(c_int, 333716460)),
+ @bitCast(c_uint, @as(c_int, 1065619460)),
+ @bitCast(c_uint, @as(c_int, 541335748)),
+ @bitCast(c_uint, @as(c_int, 541335620)),
+ @bitCast(c_uint, @as(c_int, 541335620)),
+ @bitCast(c_uint, @as(c_int, 545005636)),
+ @bitCast(c_uint, @as(c_int, 16320)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 983568352)),
+ @bitCast(c_uint, @as(c_int, 716974752)),
+ @bitCast(c_uint, @as(c_int, 715401892)),
+ @bitCast(c_uint, @as(c_int, 537143972)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 3932172)),
+ @bitCast(c_uint, @as(c_int, 50856136)),
+ @bitCast(c_uint, @as(c_int, 806358032)),
+ @bitCast(c_uint, @as(c_int, 270540832)),
+ @bitCast(c_uint, @as(c_int, 71305280)),
+ @bitCast(c_uint, @as(c_int, 25166464)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1572864)),
+ @bitCast(c_uint, @as(c_int, 32505976)),
+ @bitCast(c_uint, @as(c_int, 65013744)),
+ @bitCast(c_uint, @as(c_int, 130024416)),
+ @bitCast(c_uint, @as(c_int, 67112512)),
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 67108864)),
+ @bitCast(c_uint, @as(c_int, 285215232)),
+ @bitCast(c_uint, @as(c_int, 71305856)),
+ @bitCast(c_uint, @as(c_int, 17826336)),
+ @bitCast(c_uint, @as(c_int, 5767304)),
+ 56,
+ 0,
+ @bitCast(c_uint, @as(c_int, 67108864)),
+ @bitCast(c_uint, @as(c_int, 352324096)),
+ @bitCast(c_uint, @as(c_int, 1346381952)),
+ @bitCast(c_uint, @as(c_int, 336603168)),
+ @bitCast(c_uint, @as(c_int, 84150792)),
+ @bitCast(c_uint, @as(c_int, 22807180)),
+ @bitCast(c_uint, @as(c_int, 8126652)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 29360128)),
+ @bitCast(c_uint, @as(c_int, 20971840)),
+ @bitCast(c_uint, @as(c_int, 20971840)),
+ @bitCast(c_uint, @as(c_int, 267911488)),
+ @bitCast(c_uint, @as(c_int, 267913224)),
+ @bitCast(c_uint, @as(c_int, 178784264)),
+ @bitCast(c_uint, @as(c_int, 178784936)),
+ @bitCast(c_uint, @as(c_int, 4088)),
+ @bitCast(c_uint, @as(c_int, 536608768)),
+ @bitCast(c_uint, @as(c_int, 1610383358)),
+ @bitCast(c_uint, @as(c_int, 1073758208)),
+ @bitCast(c_uint, @as(c_int, 8421248)),
+ @bitCast(c_uint, @as(c_int, 29360576)),
+ @bitCast(c_uint, @as(c_int, 29360576)),
+ @bitCast(c_uint, @as(c_int, 29360576)),
+ 128,
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 29360256)),
+ @bitCast(c_uint, @as(c_int, 65012160)),
+ @bitCast(c_uint, @as(c_int, 133170144)),
+ @bitCast(c_uint, @as(c_int, 56624880)),
+ @bitCast(c_uint, @as(c_int, 448)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1040201728)),
+ @bitCast(c_uint, @as(c_int, 528498560)),
+ @bitCast(c_uint, @as(c_int, 203431488)),
+ @bitCast(c_uint, @as(c_int, 34081808)),
+ @bitCast(c_uint, @as(c_int, 8651012)),
+ @bitCast(c_uint, @as(c_int, 3670084)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 125829888)),
+ @bitCast(c_uint, @as(c_int, 534777792)),
+ @bitCast(c_uint, @as(c_int, 1065893840)),
+ @bitCast(c_uint, @as(c_int, 235020036)),
+ @bitCast(c_uint, @as(c_int, 33817602)),
+ @bitCast(c_uint, @as(c_int, 15728904)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 12582912)),
+ @bitCast(c_uint, @as(c_int, 41943360)),
+ @bitCast(c_uint, @as(c_int, 136315968)),
+ @bitCast(c_uint, @as(c_int, 537399312)),
+ @bitCast(c_uint, @as(c_int, 805187588)),
+ @bitCast(c_uint, @as(c_int, 66586620)),
+ @bitCast(c_uint, @as(c_int, 14680560)),
+ 64,
+ 0,
+ @bitCast(c_uint, @as(c_int, 562315260)),
+ @bitCast(c_uint, @as(c_int, 25166208)),
+ @bitCast(c_uint, @as(c_int, 25166208)),
+ @bitCast(c_uint, @as(c_int, 25166208)),
+ @bitCast(c_uint, @as(c_int, 25166208)),
+ @bitCast(c_uint, @as(c_int, 62914944)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 20971904)),
+ @bitCast(c_uint, @as(c_int, 102761280)),
+ @bitCast(c_uint, @as(c_int, 202376736)),
+ @bitCast(c_uint, @as(c_int, 536349712)),
+ @bitCast(c_uint, @as(c_int, 940316680)),
+ @bitCast(c_uint, @as(c_int, 1879470084)),
+ @bitCast(c_uint, @as(c_int, 63503)),
+ @bitCast(c_uint, @as(c_int, 2013265920)),
+ @bitCast(c_uint, @as(c_int, 1342193664)),
+ @bitCast(c_uint, @as(c_int, 18432)),
+ @bitCast(c_uint, @as(c_int, 62915520)),
+ @bitCast(c_uint, @as(c_int, 62915520)),
+ @bitCast(c_uint, @as(c_int, 1048576)),
+ @bitCast(c_uint, @as(c_int, 131082)),
+ 14,
+ @bitCast(c_uint, @as(c_int, 1968570368)),
+ @bitCast(c_uint, @as(c_int, 1577074690)),
+ @bitCast(c_uint, @as(c_int, 1409290242)),
+ @bitCast(c_uint, @as(c_int, 1090523650)),
+ @bitCast(c_uint, @as(c_int, 1082261758)),
+ @bitCast(c_uint, @as(c_int, 1082261634)),
+ @bitCast(c_uint, @as(c_int, 1082261634)),
+ @bitCast(c_uint, @as(c_int, 27390)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1056980736)),
+ @bitCast(c_uint, @as(c_int, 1056980736)),
+ @bitCast(c_uint, @as(c_int, 1056980736)),
+ @bitCast(c_uint, @as(c_int, 4194432)),
+ @bitCast(c_uint, @as(c_int, 1835040)),
+ @bitCast(c_uint, @as(c_int, 1835036)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1837105152)),
+ @bitCast(c_uint, @as(c_int, 16512)),
+ @bitCast(c_uint, @as(c_int, 1082146944)),
+ @bitCast(c_uint, @as(c_int, 1082130432)),
+ @bitCast(c_uint, @as(c_int, 4222336)),
+ @bitCast(c_uint, @as(c_int, 1835040)),
+ @bitCast(c_uint, @as(c_int, 1835036)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1074266112)),
+ @bitCast(c_uint, @as(c_int, 536748040)),
+ @bitCast(c_uint, @as(c_int, 336072712)),
+ @bitCast(c_uint, @as(c_int, 285741576)),
+ @bitCast(c_uint, @as(c_int, 273158280)),
+ @bitCast(c_uint, @as(c_int, 268963880)),
+ @bitCast(c_uint, @as(c_int, 268730360)),
+ @bitCast(c_uint, @as(c_int, 4098)),
+ @bitCast(c_uint, @as(c_int, 1048576)),
+ @bitCast(c_uint, @as(c_int, 1073479696)),
+ @bitCast(c_uint, @as(c_int, 716191056)),
+ @bitCast(c_uint, @as(c_int, 581969232)),
+ @bitCast(c_uint, @as(c_int, 548413776)),
+ @bitCast(c_uint, @as(c_int, 540024912)),
+ @bitCast(c_uint, @as(c_int, 536936432)),
+ @bitCast(c_uint, @as(c_int, 8192)),
+ @bitCast(c_uint, @as(c_int, 1073741824)),
+ @bitCast(c_uint, @as(c_int, 536354816)),
+ @bitCast(c_uint, @as(c_int, 67643400)),
+ @bitCast(c_uint, @as(c_int, 17310216)),
+ @bitCast(c_uint, @as(c_int, 4726920)),
+ @bitCast(c_uint, @as(c_int, 1581096)),
+ @bitCast(c_uint, @as(c_int, 894705672)),
+ 2,
+ 0,
+ @bitCast(c_uint, @as(c_int, 41943680)),
+ @bitCast(c_uint, @as(c_int, 113247936)),
+ @bitCast(c_uint, @as(c_int, 245370592)),
+ @bitCast(c_uint, @as(c_int, 512761520)),
+ @bitCast(c_uint, @as(c_int, 1049116312)),
+ @bitCast(c_uint, @as(c_int, 2130476684)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 16777216)),
+ @bitCast(c_uint, @as(c_int, 90177792)),
+ @bitCast(c_uint, @as(c_int, 491261264)),
+ @bitCast(c_uint, @as(c_int, 2101493060)),
+ @bitCast(c_uint, @as(c_int, 1027898690)),
+ @bitCast(c_uint, @as(c_int, 223354184)),
+ @bitCast(c_uint, @as(c_int, 16778592)),
+ @bitCast(c_uint, @as(c_int, 256)),
+ @bitCast(c_uint, @as(c_int, 25165824)),
+ @bitCast(c_uint, @as(c_int, 69206592)),
+ @bitCast(c_uint, @as(c_int, 268961808)),
+ @bitCast(c_uint, @as(c_int, 8184)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ @bitCast(c_uint, @as(c_int, 267395064)),
+ @bitCast(c_uint, @as(c_int, 62916576)),
+ @bitCast(c_uint, @as(c_int, 384)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 17301744)),
+ @bitCast(c_uint, @as(c_int, 33817092)),
+ @bitCast(c_uint, @as(c_int, 33817092)),
+ @bitCast(c_uint, @as(c_int, 133169928)),
+ @bitCast(c_uint, @as(c_int, 469765632)),
+ @bitCast(c_uint, @as(c_int, 805320704)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 102237168)),
+ @bitCast(c_uint, @as(c_int, 136580108)),
+ @bitCast(c_uint, @as(c_int, 134481940)),
+ @bitCast(c_uint, @as(c_int, 202115076)),
+ @bitCast(c_uint, @as(c_int, 602936856)),
+ @bitCast(c_uint, @as(c_int, 402662400)),
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 477104064)),
+ @bitCast(c_uint, @as(c_int, 1670263704)),
+ @bitCast(c_uint, @as(c_int, 477115288)),
+ @bitCast(c_uint, @as(c_int, 1984)),
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 268443648)),
+ @bitCast(c_uint, @as(c_int, 74452928)),
+ @bitCast(c_uint, @as(c_int, 1628320280)),
+ @bitCast(c_uint, @as(c_int, 477114520)),
+ @bitCast(c_uint, @as(c_int, 1050528)),
+ 8,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 32764)),
+ @bitCast(c_uint, @as(c_int, 1074036732)),
+ @bitCast(c_uint, @as(c_int, 269492232)),
+ @bitCast(c_uint, @as(c_int, 71305248)),
+ @bitCast(c_uint, @as(c_int, 41943680)),
+ @bitCast(c_uint, @as(c_int, 41943680)),
+ @bitCast(c_uint, @as(c_int, 256)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073905662)),
+ @bitCast(c_uint, @as(c_int, 268967940)),
+ @bitCast(c_uint, @as(c_int, 69208080)),
+ @bitCast(c_uint, @as(c_int, 37749312)),
+ @bitCast(c_uint, @as(c_int, 37749312)),
+ @bitCast(c_uint, @as(c_int, 20972096)),
+ 192,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ 128,
+ @bitCast(c_uint, @as(c_int, 1016987648)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 1065222592)),
+ @bitCast(c_uint, @as(c_int, 8389056)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 65011840)),
+ @bitCast(c_uint, @as(c_int, 1044251168)),
+ @bitCast(c_uint, @as(c_int, 65012256)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 16777216)),
+ @bitCast(c_uint, @as(c_int, 71303808)),
+ @bitCast(c_uint, @as(c_int, 16777472)),
+ @bitCast(c_uint, @as(c_int, 1132732424)),
+ @bitCast(c_uint, @as(c_int, 1132763826)),
+ @bitCast(c_uint, @as(c_int, 16785416)),
+ @bitCast(c_uint, @as(c_int, 71303424)),
+ @bitCast(c_uint, @as(c_int, 16777856)),
+ @bitCast(c_uint, @as(c_int, 16777216)),
+ @bitCast(c_uint, @as(c_int, 71303808)),
+ @bitCast(c_uint, @as(c_int, 16777472)),
+ @bitCast(c_uint, @as(c_int, 1090789640)),
+ @bitCast(c_uint, @as(c_int, 1090822130)),
+ @bitCast(c_uint, @as(c_int, 16785672)),
+ @bitCast(c_uint, @as(c_int, 71303424)),
+ @bitCast(c_uint, @as(c_int, 16777856)),
+ @bitCast(c_uint, @as(c_int, 2015232000)),
+ @bitCast(c_uint, @as(c_int, 1342849026)),
+ @bitCast(c_uint, @as(c_int, 69224466)),
+ @bitCast(c_uint, @as(c_int, 576)),
+ @bitCast(c_uint, @as(c_int, 37748736)),
+ @bitCast(c_uint, @as(c_int, 1209140256)),
+ @bitCast(c_uint, @as(c_int, 1073893386)),
+ @bitCast(c_uint, @as(c_int, 30750)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 536886272)),
+ @bitCast(c_uint, @as(c_int, 603990016)),
+ @bitCast(c_uint, @as(c_int, 16777728)),
+ @bitCast(c_uint, @as(c_int, 4194432)),
+ @bitCast(c_uint, @as(c_int, 1310756)),
+ @bitCast(c_uint, @as(c_int, 3932164)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 262204)),
+ @bitCast(c_uint, @as(c_int, 2359316)),
+ @bitCast(c_uint, @as(c_int, 8388672)),
+ @bitCast(c_uint, @as(c_int, 33554688)),
+ @bitCast(c_uint, @as(c_int, 671097856)),
+ @bitCast(c_uint, @as(c_int, 1006641152)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1048608)),
+ @bitCast(c_uint, @as(c_int, 269492168)),
+ @bitCast(c_uint, @as(c_int, 268439584)),
+ @bitCast(c_uint, @as(c_int, 268439552)),
+ @bitCast(c_uint, @as(c_int, 268439552)),
+ @bitCast(c_uint, @as(c_int, 8128)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 134218752)),
+ @bitCast(c_uint, @as(c_int, 134747128)),
+ @bitCast(c_uint, @as(c_int, 525320)),
+ @bitCast(c_uint, @as(c_int, 524296)),
+ @bitCast(c_uint, @as(c_int, 524296)),
+ @bitCast(c_uint, @as(c_int, 1016)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073479680)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 536879104)),
+ @bitCast(c_uint, @as(c_int, 541073408)),
+ @bitCast(c_uint, @as(c_int, 1066410016)),
+ @bitCast(c_uint, @as(c_int, 4194336)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073479680)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 670834692)),
+ @bitCast(c_uint, @as(c_int, 538976256)),
+ @bitCast(c_uint, @as(c_int, 1070080016)),
+ @bitCast(c_uint, @as(c_int, 2097168)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 267386880)),
+ @bitCast(c_uint, @as(c_int, 268965912)),
+ @bitCast(c_uint, @as(c_int, 293605384)),
+ @bitCast(c_uint, @as(c_int, 268439936)),
+ @bitCast(c_uint, @as(c_int, 403705888)),
+ @bitCast(c_uint, @as(c_int, 1052616)),
+ 32,
+ 0,
+ @bitCast(c_uint, @as(c_int, 67109376)),
+ @bitCast(c_uint, @as(c_int, 604252668)),
+ @bitCast(c_uint, @as(c_int, 537141764)),
+ @bitCast(c_uint, @as(c_int, 541335556)),
+ @bitCast(c_uint, @as(c_int, 1066672164)),
+ @bitCast(c_uint, @as(c_int, 4194336)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 536875008)),
+ @bitCast(c_uint, @as(c_int, 571493390)),
+ @bitCast(c_uint, @as(c_int, 8392992)),
+ @bitCast(c_uint, @as(c_int, 287309888)),
+ @bitCast(c_uint, @as(c_int, 1275994640)),
+ @bitCast(c_uint, @as(c_int, 268443648)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 1342324738)),
+ @bitCast(c_uint, @as(c_int, 1141000194)),
+ @bitCast(c_uint, @as(c_int, 1090667010)),
+ @bitCast(c_uint, @as(c_int, 1078083714)),
+ @bitCast(c_uint, @as(c_int, 1074937890)),
+ @bitCast(c_uint, @as(c_int, 1073889290)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 65011840)),
+ @bitCast(c_uint, @as(c_int, 134743184)),
+ @bitCast(c_uint, @as(c_int, 1016989704)),
+ @bitCast(c_uint, @as(c_int, 134744072)),
+ @bitCast(c_uint, @as(c_int, 65012880)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 1073611200)),
+ @bitCast(c_uint, @as(c_int, 8389056)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 65011840)),
+ @bitCast(c_uint, @as(c_int, 1073611744)),
+ @bitCast(c_uint, @as(c_int, 65012704)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 16777216)),
+ @bitCast(c_uint, @as(c_int, 130024320)),
+ @bitCast(c_uint, @as(c_int, 16777472)),
+ @bitCast(c_uint, @as(c_int, 1670127624)),
+ @bitCast(c_uint, @as(c_int, 1670183870)),
+ @bitCast(c_uint, @as(c_int, 16785416)),
+ @bitCast(c_uint, @as(c_int, 130023680)),
+ @bitCast(c_uint, @as(c_int, 16778112)),
+ @bitCast(c_uint, @as(c_int, 16777216)),
+ @bitCast(c_uint, @as(c_int, 130024320)),
+ @bitCast(c_uint, @as(c_int, 16777472)),
+ @bitCast(c_uint, @as(c_int, 1628184840)),
+ @bitCast(c_uint, @as(c_int, 1628241918)),
+ @bitCast(c_uint, @as(c_int, 16785672)),
+ @bitCast(c_uint, @as(c_int, 130023680)),
+ @bitCast(c_uint, @as(c_int, 16778112)),
+ @bitCast(c_uint, @as(c_int, 2015232000)),
+ @bitCast(c_uint, @as(c_int, 1611034638)),
+ @bitCast(c_uint, @as(c_int, 69224466)),
+ @bitCast(c_uint, @as(c_int, 576)),
+ @bitCast(c_uint, @as(c_int, 37748736)),
+ @bitCast(c_uint, @as(c_int, 1209140256)),
+ @bitCast(c_uint, @as(c_int, 1879990278)),
+ @bitCast(c_uint, @as(c_int, 30750)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 939539456)),
+ @bitCast(c_uint, @as(c_int, 603992064)),
+ @bitCast(c_uint, @as(c_int, 16777728)),
+ @bitCast(c_uint, @as(c_int, 4194432)),
+ @bitCast(c_uint, @as(c_int, 786468)),
+ @bitCast(c_uint, @as(c_int, 3932188)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1835068)),
+ @bitCast(c_uint, @as(c_int, 2359308)),
+ @bitCast(c_uint, @as(c_int, 8388672)),
+ @bitCast(c_uint, @as(c_int, 33554688)),
+ @bitCast(c_uint, @as(c_int, 805315584)),
+ @bitCast(c_uint, @as(c_int, 1006647296)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 3145760)),
+ @bitCast(c_uint, @as(c_int, 271589368)),
+ @bitCast(c_uint, @as(c_int, 268439584)),
+ @bitCast(c_uint, @as(c_int, 268439552)),
+ @bitCast(c_uint, @as(c_int, 268439552)),
+ @bitCast(c_uint, @as(c_int, 8128)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 201327616)),
+ @bitCast(c_uint, @as(c_int, 201859064)),
+ @bitCast(c_uint, @as(c_int, 525320)),
+ @bitCast(c_uint, @as(c_int, 524296)),
+ @bitCast(c_uint, @as(c_int, 524296)),
+ @bitCast(c_uint, @as(c_int, 1016)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073479680)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 536879104)),
+ @bitCast(c_uint, @as(c_int, 541073408)),
+ @bitCast(c_uint, @as(c_int, 1072701536)),
+ @bitCast(c_uint, @as(c_int, 4194400)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073479680)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 670834692)),
+ @bitCast(c_uint, @as(c_int, 538976256)),
+ @bitCast(c_uint, @as(c_int, 1073225776)),
+ @bitCast(c_uint, @as(c_int, 2097200)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 267386880)),
+ @bitCast(c_uint, @as(c_int, 268965912)),
+ @bitCast(c_uint, @as(c_int, 293605384)),
+ @bitCast(c_uint, @as(c_int, 268439936)),
+ @bitCast(c_uint, @as(c_int, 405803040)),
+ @bitCast(c_uint, @as(c_int, 3149816)),
+ 32,
+ 0,
+ @bitCast(c_uint, @as(c_int, 100663808)),
+ @bitCast(c_uint, @as(c_int, 637808636)),
+ @bitCast(c_uint, @as(c_int, 537141764)),
+ @bitCast(c_uint, @as(c_int, 541335556)),
+ @bitCast(c_uint, @as(c_int, 1072963684)),
+ @bitCast(c_uint, @as(c_int, 4194400)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 805310464)),
+ @bitCast(c_uint, @as(c_int, 839941134)),
+ @bitCast(c_uint, @as(c_int, 8392992)),
+ @bitCast(c_uint, @as(c_int, 287309888)),
+ @bitCast(c_uint, @as(c_int, 2081305104)),
+ @bitCast(c_uint, @as(c_int, 268447744)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 805584892)),
+ @bitCast(c_uint, @as(c_int, 604252164)),
+ @bitCast(c_uint, @as(c_int, 553918980)),
+ @bitCast(c_uint, @as(c_int, 541335684)),
+ @bitCast(c_uint, @as(c_int, 538189860)),
+ @bitCast(c_uint, @as(c_int, 1073487884)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 600063996)),
+ @bitCast(c_uint, @as(c_int, 600056772)),
+ @bitCast(c_uint, @as(c_int, 537142212)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1040465916)),
+ @bitCast(c_uint, @as(c_int, 1040465412)),
+ @bitCast(c_uint, @as(c_int, 537148932)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1040465412)),
+ @bitCast(c_uint, @as(c_int, 1040465412)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1040457732)),
+ @bitCast(c_uint, @as(c_int, 1040465412)),
+ @bitCast(c_uint, @as(c_int, 1073495556)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 600055812)),
+ @bitCast(c_uint, @as(c_int, 600056772)),
+ @bitCast(c_uint, @as(c_int, 1073488836)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 545005572)),
+ @bitCast(c_uint, @as(c_int, 545005692)),
+ @bitCast(c_uint, @as(c_int, 1073487996)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 545005692)),
+ @bitCast(c_uint, @as(c_int, 545005692)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 545013756)),
+ @bitCast(c_uint, @as(c_int, 545005692)),
+ @bitCast(c_uint, @as(c_int, 537141372)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 600056772)),
+ @bitCast(c_uint, @as(c_int, 600056772)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1206010242)),
+ @bitCast(c_uint, @as(c_int, 1341278178)),
+ @bitCast(c_uint, @as(c_int, 1206013938)),
+ @bitCast(c_uint, @as(c_int, 1099057122)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ @bitCast(c_uint, @as(c_int, 2147418112)),
+ @bitCast(c_uint, @as(c_int, 1073823745)),
+ @bitCast(c_uint, @as(c_int, 1073823745)),
+ @bitCast(c_uint, @as(c_int, 1230331357)),
+ @bitCast(c_uint, @as(c_int, 1229277533)),
+ @bitCast(c_uint, @as(c_int, 1073826245)),
+ @bitCast(c_uint, @as(c_int, 1073823745)),
+ @bitCast(c_uint, @as(c_int, 32767)),
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 1395815218)),
+ @bitCast(c_uint, @as(c_int, 1154370766)),
+ @bitCast(c_uint, @as(c_int, 1093813042)),
+ @bitCast(c_uint, @as(c_int, 1078870222)),
+ @bitCast(c_uint, @as(c_int, 1209160754)),
+ @bitCast(c_uint, @as(c_int, 1074156558)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 1395815218)),
+ @bitCast(c_uint, @as(c_int, 1154370766)),
+ @bitCast(c_uint, @as(c_int, 1093813042)),
+ @bitCast(c_uint, @as(c_int, 1548632270)),
+ @bitCast(c_uint, @as(c_int, 1142047794)),
+ @bitCast(c_uint, @as(c_int, 1074158606)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 1123959166)),
+ @bitCast(c_uint, @as(c_int, 1123959166)),
+ @bitCast(c_uint, @as(c_int, 1123959166)),
+ @bitCast(c_uint, @as(c_int, 1123959166)),
+ @bitCast(c_uint, @as(c_int, 1123959166)),
+ @bitCast(c_uint, @as(c_int, 1123959166)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ @bitCast(c_uint, @as(c_int, 134086656)),
+ @bitCast(c_uint, @as(c_int, 536477698)),
+ @bitCast(c_uint, @as(c_int, 2146041866)),
+ @bitCast(c_uint, @as(c_int, 1076510762)),
+ @bitCast(c_uint, @as(c_int, 1529499946)),
+ @bitCast(c_uint, @as(c_int, 1361597738)),
+ @bitCast(c_uint, @as(c_int, 1075859752)),
+ @bitCast(c_uint, @as(c_int, 32736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 536346624)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 306716664)),
+ @bitCast(c_uint, @as(c_int, 536351304)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 8184)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 306708480)),
+ @bitCast(c_uint, @as(c_int, 2147357256)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 306741246)),
+ @bitCast(c_uint, @as(c_int, 2147357256)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 306741246)),
+ @bitCast(c_uint, @as(c_int, 4680)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 473432064)),
+ @bitCast(c_uint, @as(c_int, 473438184)),
+ @bitCast(c_uint, @as(c_int, 135268368)),
+ @bitCast(c_uint, @as(c_int, 135268368)),
+ @bitCast(c_uint, @as(c_int, 401087544)),
+ @bitCast(c_uint, @as(c_int, 7224)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1879965696)),
+ @bitCast(c_uint, @as(c_int, 1879990266)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 1610248206)),
+ @bitCast(c_uint, @as(c_int, 28686)),
+ @bitCast(c_uint, @as(c_int, 1065222144)),
+ @bitCast(c_uint, @as(c_int, 557982018)),
+ @bitCast(c_uint, @as(c_int, 557982018)),
+ @bitCast(c_uint, @as(c_int, 16254)),
+ @bitCast(c_uint, @as(c_int, 557989758)),
+ @bitCast(c_uint, @as(c_int, 557982018)),
+ @bitCast(c_uint, @as(c_int, 1065230658)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1001914368)),
+ @bitCast(c_uint, @as(c_int, 1001929656)),
+ @bitCast(c_uint, @as(c_int, 1001914368)),
+ @bitCast(c_uint, @as(c_int, 1001929656)),
+ @bitCast(c_uint, @as(c_int, 1001914368)),
+ @bitCast(c_uint, @as(c_int, 1001929656)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 2147385342)),
+ @bitCast(c_uint, @as(c_int, 2013163520)),
+ @bitCast(c_uint, @as(c_int, 2013165566)),
+ @bitCast(c_uint, @as(c_int, 2004776704)),
+ @bitCast(c_uint, @as(c_int, 2004776830)),
+ @bitCast(c_uint, @as(c_int, 2004776830)),
+ @bitCast(c_uint, @as(c_int, 30590)),
+ @bitCast(c_uint, @as(c_int, 2015232000)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 16386)),
+ @bitCast(c_uint, @as(c_int, 25165824)),
+ @bitCast(c_uint, @as(c_int, 384)),
+ @bitCast(c_uint, @as(c_int, 1073872896)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 30750)),
+ @bitCast(c_uint, @as(c_int, 2015232000)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 16386)),
+ @bitCast(c_uint, @as(c_int, 62915520)),
+ @bitCast(c_uint, @as(c_int, 62915520)),
+ @bitCast(c_uint, @as(c_int, 1073872896)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 30750)),
+ @bitCast(c_uint, @as(c_int, 2015232000)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 132136962)),
+ @bitCast(c_uint, @as(c_int, 132122592)),
+ @bitCast(c_uint, @as(c_int, 132122592)),
+ @bitCast(c_uint, @as(c_int, 1073874912)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 30750)),
+ @bitCast(c_uint, @as(c_int, 2015232000)),
+ @bitCast(c_uint, @as(c_int, 1610235906)),
+ @bitCast(c_uint, @as(c_int, 536371194)),
+ @bitCast(c_uint, @as(c_int, 536354808)),
+ @bitCast(c_uint, @as(c_int, 536354808)),
+ @bitCast(c_uint, @as(c_int, 1610227704)),
+ @bitCast(c_uint, @as(c_int, 1073897466)),
+ @bitCast(c_uint, @as(c_int, 30750)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 537147420)),
+ @bitCast(c_uint, @as(c_int, 8196)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537133056)),
+ @bitCast(c_uint, @as(c_int, 941367300)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 498597888)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 268959744)),
+ @bitCast(c_uint, @as(c_int, 4104)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 7608)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 894828544)),
+ @bitCast(c_uint, @as(c_int, 8194)),
+ @bitCast(c_uint, @as(c_int, 8194)),
+ @bitCast(c_uint, @as(c_int, 8194)),
+ @bitCast(c_uint, @as(c_int, 8194)),
+ @bitCast(c_uint, @as(c_int, 8194)),
+ @bitCast(c_uint, @as(c_int, 894836738)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1209159666)),
+ @bitCast(c_uint, @as(c_int, 1234323474)),
+ @bitCast(c_uint, @as(c_int, 1209158034)),
+ @bitCast(c_uint, @as(c_int, 1341278226)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 277094396)),
+ @bitCast(c_uint, @as(c_int, 277090436)),
+ @bitCast(c_uint, @as(c_int, 536612996)),
+ @bitCast(c_uint, @as(c_int, 277090436)),
+ @bitCast(c_uint, @as(c_int, 277090436)),
+ @bitCast(c_uint, @as(c_int, 8188)),
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 268435456)),
+ @bitCast(c_uint, @as(c_int, 67110912)),
+ @bitCast(c_uint, @as(c_int, 17039872)),
+ @bitCast(c_uint, @as(c_int, 5243016)),
+ 32,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 268959744)),
+ @bitCast(c_uint, @as(c_int, 69208080)),
+ @bitCast(c_uint, @as(c_int, 25166400)),
+ @bitCast(c_uint, @as(c_int, 37749120)),
+ @bitCast(c_uint, @as(c_int, 135267360)),
+ @bitCast(c_uint, @as(c_int, 4104)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 33554432)),
+ @bitCast(c_uint, @as(c_int, 8388864)),
+ @bitCast(c_uint, @as(c_int, 2097216)),
+ @bitCast(c_uint, @as(c_int, 2097168)),
+ @bitCast(c_uint, @as(c_int, 8388672)),
+ @bitCast(c_uint, @as(c_int, 33554688)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 4194304)),
+ @bitCast(c_uint, @as(c_int, 16777344)),
+ @bitCast(c_uint, @as(c_int, 67109376)),
+ @bitCast(c_uint, @as(c_int, 67110912)),
+ @bitCast(c_uint, @as(c_int, 16777728)),
+ @bitCast(c_uint, @as(c_int, 4194432)),
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 134746116)),
+ @bitCast(c_uint, @as(c_int, 35652624)),
+ @bitCast(c_uint, @as(c_int, 8388928)),
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 20971648)),
+ @bitCast(c_uint, @as(c_int, 68157984)),
+ @bitCast(c_uint, @as(c_int, 268699656)),
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 33554432)),
+ @bitCast(c_uint, @as(c_int, 58721024)),
+ @bitCast(c_uint, @as(c_int, 65012672)),
+ @bitCast(c_uint, @as(c_int, 65012720)),
+ @bitCast(c_uint, @as(c_int, 58721216)),
+ @bitCast(c_uint, @as(c_int, 33555200)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 4194304)),
+ @bitCast(c_uint, @as(c_int, 29360320)),
+ @bitCast(c_uint, @as(c_int, 130024384)),
+ @bitCast(c_uint, @as(c_int, 130027456)),
+ @bitCast(c_uint, @as(c_int, 29361088)),
+ @bitCast(c_uint, @as(c_int, 4194496)),
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 267919356)),
+ @bitCast(c_uint, @as(c_int, 65013744)),
+ @bitCast(c_uint, @as(c_int, 8389056)),
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 29360256)),
+ @bitCast(c_uint, @as(c_int, 133170144)),
+ @bitCast(c_uint, @as(c_int, 536612856)),
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 413141184)),
+ @bitCast(c_uint, @as(c_int, 847778448)),
+ @bitCast(c_uint, @as(c_int, 612509318)),
+ @bitCast(c_uint, @as(c_int, 646325378)),
+ @bitCast(c_uint, @as(c_int, 311440008)),
+ @bitCast(c_uint, @as(c_int, 146806944)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 75499392)),
+ @bitCast(c_uint, @as(c_int, 4194496)),
+ @bitCast(c_uint, @as(c_int, 1713373424)),
+ @bitCast(c_uint, @as(c_int, 135281712)),
+ @bitCast(c_uint, @as(c_int, 319426072)),
+ @bitCast(c_uint, @as(c_int, 12686)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388608)),
+ @bitCast(c_uint, @as(c_int, 143132808)),
+ @bitCast(c_uint, @as(c_int, 715786890)),
+ @bitCast(c_uint, @as(c_int, 176827050)),
+ @bitCast(c_uint, @as(c_int, 143132808)),
+ 128,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 6291456)),
+ @bitCast(c_uint, @as(c_int, 17301648)),
+ @bitCast(c_uint, @as(c_int, 33816840)),
+ @bitCast(c_uint, @as(c_int, 1107575300)),
+ @bitCast(c_uint, @as(c_int, 604120066)),
+ @bitCast(c_uint, @as(c_int, 6144)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 133693440)),
+ @bitCast(c_uint, @as(c_int, 67634184)),
+ @bitCast(c_uint, @as(c_int, 67634184)),
+ @bitCast(c_uint, @as(c_int, 67634184)),
+ @bitCast(c_uint, @as(c_int, 2081293320)),
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 10485824)),
+ @bitCast(c_uint, @as(c_int, 570966288)),
+ @bitCast(c_uint, @as(c_int, 134353924)),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 69206016)),
+ @bitCast(c_uint, @as(c_int, 25166400)),
+ @bitCast(c_uint, @as(c_int, 37749120)),
+ @bitCast(c_uint, @as(c_int, 1056)),
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 406323200)),
+ @bitCast(c_uint, @as(c_int, 304616488)),
+ @bitCast(c_uint, @as(c_int, 279449896)),
+ @bitCast(c_uint, @as(c_int, 287838376)),
+ @bitCast(c_uint, @as(c_int, 338170408)),
+ @bitCast(c_uint, @as(c_int, 6200)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 402653184)),
+ @bitCast(c_uint, @as(c_int, 293606912)),
+ @bitCast(c_uint, @as(c_int, 270012512)),
+ @bitCast(c_uint, @as(c_int, 274731032)),
+ @bitCast(c_uint, @as(c_int, 369103232)),
+ @bitCast(c_uint, @as(c_int, 6144)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1572864)),
+ @bitCast(c_uint, @as(c_int, 25690216)),
+ @bitCast(c_uint, @as(c_int, 403179016)),
+ @bitCast(c_uint, @as(c_int, 101193736)),
+ @bitCast(c_uint, @as(c_int, 6816136)),
+ 24,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 511180800)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 306713160)),
+ @bitCast(c_uint, @as(c_int, 7800)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 536346624)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 8184)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 471334912)),
+ @bitCast(c_uint, @as(c_int, 340268072)),
+ @bitCast(c_uint, @as(c_int, 352851080)),
+ @bitCast(c_uint, @as(c_int, 344462600)),
+ @bitCast(c_uint, @as(c_int, 338170952)),
+ @bitCast(c_uint, @as(c_int, 7192)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 62914560)),
+ @bitCast(c_uint, @as(c_int, 135267360)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 69208080)),
+ @bitCast(c_uint, @as(c_int, 960)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 204474336)),
+ @bitCast(c_uint, @as(c_int, 331880472)),
+ @bitCast(c_uint, @as(c_int, 338171496)),
+ @bitCast(c_uint, @as(c_int, 338170920)),
+ @bitCast(c_uint, @as(c_int, 473439288)),
+ @bitCast(c_uint, @as(c_int, 135275076)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 130023424)),
+ @bitCast(c_uint, @as(c_int, 136316960)),
+ @bitCast(c_uint, @as(c_int, 1073219616)),
+ @bitCast(c_uint, @as(c_int, 596123656)),
+ @bitCast(c_uint, @as(c_int, 554181512)),
+ @bitCast(c_uint, @as(c_int, 537403656)),
+ @bitCast(c_uint, @as(c_int, 535830536)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 130023424)),
+ @bitCast(c_uint, @as(c_int, 134219776)),
+ @bitCast(c_uint, @as(c_int, 1073219584)),
+ @bitCast(c_uint, @as(c_int, 596123656)),
+ @bitCast(c_uint, @as(c_int, 554181512)),
+ @bitCast(c_uint, @as(c_int, 537403656)),
+ @bitCast(c_uint, @as(c_int, 535830536)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 29360128)),
+ @bitCast(c_uint, @as(c_int, 202901360)),
+ @bitCast(c_uint, @as(c_int, 814094476)),
+ @bitCast(c_uint, @as(c_int, 1619206274)),
+ @bitCast(c_uint, @as(c_int, 1610827649)),
+ @bitCast(c_uint, @as(c_int, 805707778)),
+ @bitCast(c_uint, @as(c_int, 202905612)),
+ @bitCast(c_uint, @as(c_int, 29362032)),
+ @bitCast(c_uint, @as(c_int, 169869312)),
+ @bitCast(c_uint, @as(c_int, 455088928)),
+ @bitCast(c_uint, @as(c_int, 69209632)),
+ @bitCast(c_uint, @as(c_int, 69207072)),
+ @bitCast(c_uint, @as(c_int, 74449952)),
+ @bitCast(c_uint, @as(c_int, 242224752)),
+ @bitCast(c_uint, @as(c_int, 242224752)),
+ @bitCast(c_uint, @as(c_int, 69209712)),
+ @bitCast(c_uint, @as(c_int, 25165824)),
+ @bitCast(c_uint, @as(c_int, 1004286348)),
+ @bitCast(c_uint, @as(c_int, 267395064)),
+ @bitCast(c_uint, @as(c_int, 2084445816)),
+ @bitCast(c_uint, @as(c_int, 511212606)),
+ @bitCast(c_uint, @as(c_int, 536350704)),
+ @bitCast(c_uint, @as(c_int, 831273948)),
+ @bitCast(c_uint, @as(c_int, 384)),
+ @bitCast(c_uint, @as(c_int, 25165824)),
+ @bitCast(c_uint, @as(c_int, 1073492364)),
+ @bitCast(c_uint, @as(c_int, 473440248)),
+ @bitCast(c_uint, @as(c_int, 2015238168)),
+ @bitCast(c_uint, @as(c_int, 404256798)),
+ @bitCast(c_uint, @as(c_int, 536353848)),
+ @bitCast(c_uint, @as(c_int, 831275004)),
+ @bitCast(c_uint, @as(c_int, 384)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 134746104)),
+ @bitCast(c_uint, @as(c_int, 134750204)),
+ @bitCast(c_uint, @as(c_int, 178784936)),
+ @bitCast(c_uint, @as(c_int, 178784936)),
+ @bitCast(c_uint, @as(c_int, 178784936)),
+ @bitCast(c_uint, @as(c_int, 134744744)),
+ @bitCast(c_uint, @as(c_int, 4088)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 134496132)),
+ @bitCast(c_uint, @as(c_int, 67374980)),
+ @bitCast(c_uint, @as(c_int, 67372932)),
+ @bitCast(c_uint, @as(c_int, 2044)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 608175104)),
+ @bitCast(c_uint, @as(c_int, 5248)),
+ @bitCast(c_uint, @as(c_int, 1862143488)),
+ @bitCast(c_uint, @as(c_int, 3584)),
+ @bitCast(c_uint, @as(c_int, 608179328)),
+ @bitCast(c_uint, @as(c_int, 1024)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 62914560)),
+ @bitCast(c_uint, @as(c_int, 137364576)),
+ @bitCast(c_uint, @as(c_int, 286789912)),
+ @bitCast(c_uint, @as(c_int, 286789912)),
+ @bitCast(c_uint, @as(c_int, 73402416)),
+ @bitCast(c_uint, @as(c_int, 960)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 277348480)),
+ @bitCast(c_uint, @as(c_int, 113248272)),
+ @bitCast(c_uint, @as(c_int, 913049568)),
+ @bitCast(c_uint, @as(c_int, 132121152)),
+ @bitCast(c_uint, @as(c_int, 5992)),
+ @bitCast(c_uint, @as(c_int, 69206592)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1026031616)),
+ @bitCast(c_uint, @as(c_int, 623387948)),
+ @bitCast(c_uint, @as(c_int, 1026041128)),
+ @bitCast(c_uint, @as(c_int, 86508840)),
+ @bitCast(c_uint, @as(c_int, 99091752)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 25165824)),
+ @bitCast(c_uint, @as(c_int, 62915520)),
+ @bitCast(c_uint, @as(c_int, 25166784)),
+ @bitCast(c_uint, @as(c_int, 267388896)),
+ @bitCast(c_uint, @as(c_int, 198183888)),
+ @bitCast(c_uint, @as(c_int, 173018064)),
+ @bitCast(c_uint, @as(c_int, 37749312)),
+ @bitCast(c_uint, @as(c_int, 37749312)),
+ @bitCast(c_uint, @as(c_int, 25165824)),
+ @bitCast(c_uint, @as(c_int, 62915520)),
+ @bitCast(c_uint, @as(c_int, 293606336)),
+ @bitCast(c_uint, @as(c_int, 63447032)),
+ @bitCast(c_uint, @as(c_int, 130024392)),
+ @bitCast(c_uint, @as(c_int, 71304256)),
+ @bitCast(c_uint, @as(c_int, 201852024)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073217536)),
+ @bitCast(c_uint, @as(c_int, 806895608)),
+ @bitCast(c_uint, @as(c_int, 806891544)),
+ @bitCast(c_uint, @as(c_int, 1073233912)),
+ @bitCast(c_uint, @as(c_int, 50332416)),
+ @bitCast(c_uint, @as(c_int, 62915520)),
+ @bitCast(c_uint, @as(c_int, 65012480)),
+ @bitCast(c_uint, @as(c_int, 992)),
+ @bitCast(c_uint, @as(c_int, 1073217536)),
+ @bitCast(c_uint, @as(c_int, 1073233912)),
+ @bitCast(c_uint, @as(c_int, 865615864)),
+ @bitCast(c_uint, @as(c_int, 1073230744)),
+ @bitCast(c_uint, @as(c_int, 1073233912)),
+ @bitCast(c_uint, @as(c_int, 1344)),
+ @bitCast(c_uint, @as(c_int, 266341024)),
+ @bitCast(c_uint, @as(c_int, 4064)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 267386880)),
+ @bitCast(c_uint, @as(c_int, 537137160)),
+ @bitCast(c_uint, @as(c_int, 625221636)),
+ @bitCast(c_uint, @as(c_int, 268967940)),
+ @bitCast(c_uint, @as(c_int, 100666352)),
+ @bitCast(c_uint, @as(c_int, 768)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 289669120)),
+ @bitCast(c_uint, @as(c_int, 133172200)),
+ @bitCast(c_uint, @as(c_int, 471600696)),
+ @bitCast(c_uint, @as(c_int, 471600152)),
+ @bitCast(c_uint, @as(c_int, 133172792)),
+ @bitCast(c_uint, @as(c_int, 289672168)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537395200)),
+ @bitCast(c_uint, @as(c_int, 207622160)),
+ @bitCast(c_uint, @as(c_int, 130027488)),
+ @bitCast(c_uint, @as(c_int, 130025408)),
+ @bitCast(c_uint, @as(c_int, 207622112)),
+ @bitCast(c_uint, @as(c_int, 537399312)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537395200)),
+ @bitCast(c_uint, @as(c_int, 207622160)),
+ @bitCast(c_uint, @as(c_int, 71307232)),
+ @bitCast(c_uint, @as(c_int, 71325012)),
+ @bitCast(c_uint, @as(c_int, 207622112)),
+ @bitCast(c_uint, @as(c_int, 537399312)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 8388736)),
+ @bitCast(c_uint, @as(c_int, 29360576)),
+ @bitCast(c_uint, @as(c_int, 536625150)),
+ @bitCast(c_uint, @as(c_int, 65013744)),
+ @bitCast(c_uint, @as(c_int, 133170144)),
+ @bitCast(c_uint, @as(c_int, 202901360)),
+ @bitCast(c_uint, @as(c_int, 2056)),
+ @bitCast(c_uint, @as(c_int, 267386880)),
+ @bitCast(c_uint, @as(c_int, 135792656)),
+ @bitCast(c_uint, @as(c_int, 135268376)),
+ @bitCast(c_uint, @as(c_int, 168822800)),
+ @bitCast(c_uint, @as(c_int, 135792656)),
+ @bitCast(c_uint, @as(c_int, 135268376)),
+ @bitCast(c_uint, @as(c_int, 135268368)),
+ @bitCast(c_uint, @as(c_int, 8184)),
+ @bitCast(c_uint, @as(c_int, 267386880)),
+ @bitCast(c_uint, @as(c_int, 135268368)),
+ @bitCast(c_uint, @as(c_int, 135268368)),
+ @bitCast(c_uint, @as(c_int, 269484048)),
+ @bitCast(c_uint, @as(c_int, 1334845456)),
+ @bitCast(c_uint, @as(c_int, 269492240)),
+ @bitCast(c_uint, @as(c_int, 135266320)),
+ @bitCast(c_uint, @as(c_int, 4080)),
+ @bitCast(c_uint, @as(c_int, 262144)),
+ @bitCast(c_uint, @as(c_int, 2031630)),
+ @bitCast(c_uint, @as(c_int, 250871812)),
+ @bitCast(c_uint, @as(c_int, 317985412)),
+ @bitCast(c_uint, @as(c_int, 250876436)),
+ @bitCast(c_uint, @as(c_int, 268697604)),
+ @bitCast(c_uint, @as(c_int, 2147233796)),
+ @bitCast(c_uint, @as(c_int, 268447744)),
+ @bitCast(c_uint, @as(c_int, 2013528064)),
+ @bitCast(c_uint, @as(c_int, 1344233486)),
+ @bitCast(c_uint, @as(c_int, 250888196)),
+ @bitCast(c_uint, @as(c_int, 317985412)),
+ @bitCast(c_uint, @as(c_int, 250876548)),
+ @bitCast(c_uint, @as(c_int, 269746180)),
+ @bitCast(c_uint, @as(c_int, 2147233804)),
+ @bitCast(c_uint, @as(c_int, 268447744)),
+ @bitCast(c_uint, @as(c_int, 2145386496)),
+ @bitCast(c_uint, @as(c_int, 1344823344)),
+ @bitCast(c_uint, @as(c_int, 1207846916)),
+ @bitCast(c_uint, @as(c_int, 1143096322)),
+ @bitCast(c_uint, @as(c_int, 1143096354)),
+ @bitCast(c_uint, @as(c_int, 605189602)),
+ @bitCast(c_uint, @as(c_int, 201724938)),
+ @bitCast(c_uint, @as(c_int, 2046)),
+ @bitCast(c_uint, @as(c_int, 2145386496)),
+ @bitCast(c_uint, @as(c_int, 1610121200)),
+ @bitCast(c_uint, @as(c_int, 1207848956)),
+ @bitCast(c_uint, @as(c_int, 1143096322)),
+ @bitCast(c_uint, @as(c_int, 1143096354)),
+ @bitCast(c_uint, @as(c_int, 605189602)),
+ @bitCast(c_uint, @as(c_int, 201724938)),
+ @bitCast(c_uint, @as(c_int, 2046)),
+ @bitCast(c_uint, @as(c_int, 2145386496)),
+ @bitCast(c_uint, @as(c_int, 1345871920)),
+ @bitCast(c_uint, @as(c_int, 1207846972)),
+ @bitCast(c_uint, @as(c_int, 1144931390)),
+ @bitCast(c_uint, @as(c_int, 1144931390)),
+ @bitCast(c_uint, @as(c_int, 605976062)),
+ @bitCast(c_uint, @as(c_int, 201724942)),
+ @bitCast(c_uint, @as(c_int, 2046)),
+ @bitCast(c_uint, @as(c_int, 2145386496)),
+ @bitCast(c_uint, @as(c_int, 1344823344)),
+ @bitCast(c_uint, @as(c_int, 1207846916)),
+ @bitCast(c_uint, @as(c_int, 1207846910)),
+ @bitCast(c_uint, @as(c_int, 1207846910)),
+ @bitCast(c_uint, @as(c_int, 670988286)),
+ @bitCast(c_uint, @as(c_int, 268310526)),
+ @bitCast(c_uint, @as(c_int, 2046)),
+ @bitCast(c_uint, @as(c_int, 2145386496)),
+ @bitCast(c_uint, @as(c_int, 1344823344)),
+ @bitCast(c_uint, @as(c_int, 1207846916)),
+ @bitCast(c_uint, @as(c_int, 1143096322)),
+ @bitCast(c_uint, @as(c_int, 1143096354)),
+ @bitCast(c_uint, @as(c_int, 1072857058)),
+ @bitCast(c_uint, @as(c_int, 268312570)),
+ @bitCast(c_uint, @as(c_int, 2046)),
+ @bitCast(c_uint, @as(c_int, 2145386496)),
+ @bitCast(c_uint, @as(c_int, 1881694256)),
+ @bitCast(c_uint, @as(c_int, 2147383300)),
+ @bitCast(c_uint, @as(c_int, 2082634754)),
+ @bitCast(c_uint, @as(c_int, 2082634786)),
+ @bitCast(c_uint, @as(c_int, 1007844834)),
+ @bitCast(c_uint, @as(c_int, 201726986)),
+ @bitCast(c_uint, @as(c_int, 2046)),
+ @bitCast(c_uint, @as(c_int, 2145386496)),
+ @bitCast(c_uint, @as(c_int, 2145943536)),
+ @bitCast(c_uint, @as(c_int, 2147385316)),
+ @bitCast(c_uint, @as(c_int, 2145550306)),
+ @bitCast(c_uint, @as(c_int, 2145550306)),
+ @bitCast(c_uint, @as(c_int, 605192162)),
+ @bitCast(c_uint, @as(c_int, 201724938)),
+ @bitCast(c_uint, @as(c_int, 2046)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 704787454)),
+ @bitCast(c_uint, @as(c_int, 570566146)),
+ @bitCast(c_uint, @as(c_int, 570565122)),
+ @bitCast(c_uint, @as(c_int, 704783874)),
+ @bitCast(c_uint, @as(c_int, 10499070)),
+ @bitCast(c_uint, @as(c_int, 34078992)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537673724)),
+ @bitCast(c_uint, @as(c_int, 786444)),
+ @bitCast(c_uint, @as(c_int, 1073479692)),
+ @bitCast(c_uint, @as(c_int, 805318656)),
+ @bitCast(c_uint, @as(c_int, 805318656)),
+ @bitCast(c_uint, @as(c_int, 1073491972)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 2228286)),
+ @bitCast(c_uint, @as(c_int, 19005922)),
+ @bitCast(c_uint, @as(c_int, 16777534)),
+ @bitCast(c_uint, @as(c_int, 16777472)),
+ @bitCast(c_uint, @as(c_int, 2030043392)),
+ @bitCast(c_uint, @as(c_int, 1325418752)),
+ @bitCast(c_uint, @as(c_int, 30720)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1140882432)),
+ @bitCast(c_uint, @as(c_int, 1157645824)),
+ @bitCast(c_uint, @as(c_int, 6454462)),
+ @bitCast(c_uint, @as(c_int, 6422562)),
+ @bitCast(c_uint, @as(c_int, 1157659838)),
+ @bitCast(c_uint, @as(c_int, 1140868608)),
+ @bitCast(c_uint, @as(c_int, 31744)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 4456572)),
+ @bitCast(c_uint, @as(c_int, 1048700)),
+ @bitCast(c_uint, @as(c_int, 1058013200)),
+ @bitCast(c_uint, @as(c_int, 1058021872)),
+ @bitCast(c_uint, @as(c_int, 1058013200)),
+ @bitCast(c_uint, @as(c_int, 1056973296)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 4456572)),
+ @bitCast(c_uint, @as(c_int, 4456516)),
+ @bitCast(c_uint, @as(c_int, 1048700)),
+ @bitCast(c_uint, @as(c_int, 1048592)),
+ @bitCast(c_uint, @as(c_int, 1141931024)),
+ @bitCast(c_uint, @as(c_int, 1140869104)),
+ @bitCast(c_uint, @as(c_int, 31744)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 4456572)),
+ @bitCast(c_uint, @as(c_int, 4456516)),
+ 124,
+ 16,
+ @bitCast(c_uint, @as(c_int, 1140882448)),
+ @bitCast(c_uint, @as(c_int, 1140868432)),
+ @bitCast(c_uint, @as(c_int, 31744)),
+ @bitCast(c_uint, @as(c_int, 44040192)),
+ @bitCast(c_uint, @as(c_int, 581189628)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 537145332)),
+ @bitCast(c_uint, @as(c_int, 537145332)),
+ @bitCast(c_uint, @as(c_int, 537145332)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1073479680)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 610150340)),
+ @bitCast(c_uint, @as(c_int, 667165764)),
+ @bitCast(c_uint, @as(c_int, 537141278)),
+ @bitCast(c_uint, @as(c_int, 538845188)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 132120576)),
+ @bitCast(c_uint, @as(c_int, 69207072)),
+ @bitCast(c_uint, @as(c_int, 606355452)),
+ @bitCast(c_uint, @as(c_int, 606348324)),
+ @bitCast(c_uint, @as(c_int, 606348324)),
+ @bitCast(c_uint, @as(c_int, 1073488932)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 266338304)),
+ @bitCast(c_uint, @as(c_int, 136316960)),
+ @bitCast(c_uint, @as(c_int, 1074036732)),
+ @bitCast(c_uint, @as(c_int, 2147243348)),
+ @bitCast(c_uint, @as(c_int, 1074025812)),
+ @bitCast(c_uint, @as(c_int, 2147237892)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 537149436)),
+ @bitCast(c_uint, @as(c_int, 1073487876)),
+ @bitCast(c_uint, @as(c_int, 331878408)),
+ @bitCast(c_uint, @as(c_int, 268964808)),
+ @bitCast(c_uint, @as(c_int, 268963848)),
+ @bitCast(c_uint, @as(c_int, 536350728)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073905662)),
+ @bitCast(c_uint, @as(c_int, 1610244090)),
+ @bitCast(c_uint, @as(c_int, 1610244090)),
+ @bitCast(c_uint, @as(c_int, 1073897466)),
+ @bitCast(c_uint, @as(c_int, 62947326)),
+ @bitCast(c_uint, @as(c_int, 536354808)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 267386880)),
+ @bitCast(c_uint, @as(c_int, 1811841022)),
+ @bitCast(c_uint, @as(c_int, 2147385342)),
+ @bitCast(c_uint, @as(c_int, 1746305022)),
+ @bitCast(c_uint, @as(c_int, 135292950)),
+ @bitCast(c_uint, @as(c_int, 135268368)),
+ @bitCast(c_uint, @as(c_int, 267388944)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073217536)),
+ 4294844424,
+ 2265612290,
+ 2420803722,
+ 2420805706,
+ 2265614474,
+ 4294868994,
+ 0,
+ @bitCast(c_uint, @as(c_int, 264241152)),
+ 4244507864,
+ 2147680254,
+ 2218951554,
+ 2218951746,
+ 2147648386,
+ 4294868994,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 37749120)),
+ @bitCast(c_uint, @as(c_int, 135267360)),
+ @bitCast(c_uint, @as(c_int, 537137160)),
+ @bitCast(c_uint, @as(c_int, 600055812)),
+ @bitCast(c_uint, @as(c_int, 574890564)),
+ @bitCast(c_uint, @as(c_int, 1073488452)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 477102080)),
+ @bitCast(c_uint, @as(c_int, 1073233656)),
+ @bitCast(c_uint, @as(c_int, 1073233912)),
+ @bitCast(c_uint, @as(c_int, 266346480)),
+ @bitCast(c_uint, @as(c_int, 58722240)),
+ @bitCast(c_uint, @as(c_int, 256)),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2147483648,
+ 3758145536,
+ 0,
+ @bitCast(c_uint, @as(c_int, 335551488)),
+ @bitCast(c_uint, @as(c_int, 364909568)),
+ @bitCast(c_uint, @as(c_int, 356521280)),
+ @bitCast(c_uint, @as(c_int, 358356288)),
+ @bitCast(c_uint, @as(c_int, 357832020)),
+ @bitCast(c_uint, @as(c_int, 500962644)),
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 50332416)),
+ @bitCast(c_uint, @as(c_int, 452991744)),
+ @bitCast(c_uint, @as(c_int, 459283296)),
+ @bitCast(c_uint, @as(c_int, 460069728)),
+ @bitCast(c_uint, @as(c_int, 460069740)),
+ @bitCast(c_uint, @as(c_int, 460069740)),
+ 0,
+ 0,
+ 0,
+ @bitCast(c_uint, @as(c_int, 1077837822)),
+ @bitCast(c_uint, @as(c_int, 2147369022)),
+ @bitCast(c_uint, @as(c_int, 2147352576)),
+ @bitCast(c_uint, @as(c_int, 1140737022)),
+ @bitCast(c_uint, @as(c_int, 32766)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 2147221504)),
+ @bitCast(c_uint, @as(c_int, 1132740612)),
+ @bitCast(c_uint, @as(c_int, 1132741252)),
+ @bitCast(c_uint, @as(c_int, 1132740612)),
+ @bitCast(c_uint, @as(c_int, 1115964036)),
+ @bitCast(c_uint, @as(c_int, 1115964036)),
+ @bitCast(c_uint, @as(c_int, 1074021252)),
+ @bitCast(c_uint, @as(c_int, 32764)),
+ @bitCast(c_uint, @as(c_int, 1073774592)),
+ @bitCast(c_uint, @as(c_int, 268443648)),
+ @bitCast(c_uint, @as(c_int, 67110912)),
+ @bitCast(c_uint, @as(c_int, 16777728)),
+ @bitCast(c_uint, @as(c_int, 4194432)),
+ @bitCast(c_uint, @as(c_int, 1048608)),
+ @bitCast(c_uint, @as(c_int, 262152)),
+ @bitCast(c_uint, @as(c_int, 65538)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 535830512)),
+ @bitCast(c_uint, @as(c_int, 405805104)),
+ @bitCast(c_uint, @as(c_int, 520099888)),
+ @bitCast(c_uint, @as(c_int, 50339584)),
+ @bitCast(c_uint, @as(c_int, 768)),
+ @bitCast(c_uint, @as(c_int, 50332416)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 716977488)),
+ @bitCast(c_uint, @as(c_int, 715928916)),
+ @bitCast(c_uint, @as(c_int, 715928916)),
+ @bitCast(c_uint, @as(c_int, 715928916)),
+ @bitCast(c_uint, @as(c_int, 715928916)),
+ @bitCast(c_uint, @as(c_int, 715928916)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 1072693248)),
+ @bitCast(c_uint, @as(c_int, 538714128)),
+ @bitCast(c_uint, @as(c_int, 574890372)),
+ @bitCast(c_uint, @as(c_int, 672408612)),
+ @bitCast(c_uint, @as(c_int, 697575444)),
+ @bitCast(c_uint, @as(c_int, 804530580)),
+ @bitCast(c_uint, @as(c_int, 537141252)),
+ @bitCast(c_uint, @as(c_int, 16380)),
+ @bitCast(c_uint, @as(c_int, 134086656)),
+ @bitCast(c_uint, @as(c_int, 67240962)),
+ @bitCast(c_uint, @as(c_int, 2145518594)),
+ @bitCast(c_uint, @as(c_int, 1143096354)),
+ @bitCast(c_uint, @as(c_int, 1143096354)),
+ @bitCast(c_uint, @as(c_int, 1075857406)),
+ @bitCast(c_uint, @as(c_int, 1075855392)),
+ @bitCast(c_uint, @as(c_int, 32736)),
+ @bitCast(c_uint, @as(c_int, 134086656)),
+ @bitCast(c_uint, @as(c_int, 67240962)),
+ @bitCast(c_uint, @as(c_int, 2080506882)),
+ @bitCast(c_uint, @as(c_int, 1140999170)),
+ @bitCast(c_uint, @as(c_int, 1140999170)),
+ @bitCast(c_uint, @as(c_int, 1075857406)),
+ @bitCast(c_uint, @as(c_int, 1075855392)),
+ @bitCast(c_uint, @as(c_int, 32736)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 1073905662)),
+ @bitCast(c_uint, @as(c_int, 2147368962)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 1073889282)),
+ @bitCast(c_uint, @as(c_int, 2147368962)),
+ 0,
+ @bitCast(c_uint, @as(c_int, 152043520)),
+ @bitCast(c_uint, @as(c_int, 166725904)),
+ @bitCast(c_uint, @as(c_int, 152045840)),
+ @bitCast(c_uint, @as(c_int, 2320)),
+ @bitCast(c_uint, @as(c_int, 614627230)),
+ @bitCast(c_uint, @as(c_int, 664937634)),
+ @bitCast(c_uint, @as(c_int, 1889411234)),
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+};
+pub const BORDER: c_int = 0;
+pub const BASE: c_int = 1;
+pub const TEXT: c_int = 2;
+pub const OTHER: c_int = 3;
+pub const GuiPropertyElement = c_uint;
+pub var guiState: GuiControlState = @bitCast(c_uint, GUI_STATE_NORMAL);
+pub var guiFont: Font = Font{
+ .baseSize = @as(c_int, 0),
+ .glyphCount = 0,
+ .glyphPadding = 0,
+ .texture = @import("std").mem.zeroes(struct_Texture),
+ .recs = null,
+ .glyphs = null,
+};
+pub var guiLocked: bool = @as(c_int, 0) != 0;
+pub var guiAlpha: f32 = 1.0;
+pub var guiStyle: [384]c_uint = [1]c_uint{
+ 0,
+} ++ [1]c_uint{0} ** 383;
+pub var guiStyleLoaded: bool = @as(c_int, 0) != 0;
+pub fn GetTextWidth(arg_text: [*c]const u8) callconv(.C) c_int {
+ var text = arg_text;
+ var size: Vector2 = Vector2{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ };
+ if ((text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) and (@bitCast(c_int, @as(c_uint, text[@intCast(c_uint, @as(c_int, 0))])) != @as(c_int, '\x00'))) {
+ size = MeasureTextEx(guiFont, text, @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)), @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SPACING)));
+ }
+ return @floatToInt(c_int, size.x);
+}
+pub fn GetTextBounds(arg_control: c_int, arg_bounds: Rectangle) callconv(.C) Rectangle {
+ var control = arg_control;
+ var bounds = arg_bounds;
+ var textBounds: Rectangle = bounds;
+ textBounds.x = bounds.x + @intToFloat(f32, GuiGetStyle(control, BORDER_WIDTH));
+ textBounds.y = bounds.y + @intToFloat(f32, GuiGetStyle(control, BORDER_WIDTH));
+ textBounds.width = bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(control, BORDER_WIDTH));
+ textBounds.height = bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(control, BORDER_WIDTH));
+ while (true) {
+ switch (control) {
+ @as(c_int, 7) => {
+ bounds.width -= @intToFloat(f32, GuiGetStyle(control, COMBO_BUTTON_WIDTH) + GuiGetStyle(control, COMBO_BUTTON_PADDING));
+ break;
+ },
+ @as(c_int, 10) => break,
+ else => {
+ {
+ if (GuiGetStyle(control, TEXT_ALIGNMENT) == GUI_TEXT_ALIGN_RIGHT) {
+ textBounds.x -= @intToFloat(f32, GuiGetStyle(control, TEXT_PADDING));
+ } else {
+ textBounds.x += @intToFloat(f32, GuiGetStyle(control, TEXT_PADDING));
+ }
+ }
+ break;
+ },
+ }
+ break;
+ }
+ return textBounds;
+}
+pub fn GetTextIcon(arg_text: [*c]const u8, arg_iconId: [*c]c_int) callconv(.C) [*c]const u8 {
+ var text = arg_text;
+ var iconId = arg_iconId;
+ iconId.* = -@as(c_int, 1);
+ if (@bitCast(c_int, @as(c_uint, text[@intCast(c_uint, @as(c_int, 0))])) == @as(c_int, '#')) {
+ var iconValue: [4]u8 = [1]u8{
+ 0,
+ } ++ [1]u8{0} ** 3;
+ var pos: c_int = 1;
+ while (((pos < @as(c_int, 4)) and (@bitCast(c_int, @as(c_uint, (blk: {
+ const tmp = pos;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*)) >= @as(c_int, '0'))) and (@bitCast(c_int, @as(c_uint, (blk: {
+ const tmp = pos;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*)) <= @as(c_int, '9'))) {
+ iconValue[@intCast(c_uint, pos - @as(c_int, 1))] = (blk: {
+ const tmp = pos;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+ pos += 1;
+ }
+ if (@bitCast(c_int, @as(c_uint, (blk: {
+ const tmp = pos;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*)) == @as(c_int, '#')) {
+ iconId.* = TextToInteger(@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &iconValue)));
+ if (iconId.* >= @as(c_int, 0)) {
+ text += @bitCast(usize, @intCast(isize, pos + @as(c_int, 1)));
+ }
+ }
+ }
+ return text;
+}
+pub fn GuiDrawText(arg_text: [*c]const u8, arg_bounds: Rectangle, arg_alignment: c_int, arg_tint: Color) callconv(.C) void {
+ var text = arg_text;
+ var bounds = arg_bounds;
+ var alignment = arg_alignment;
+ var tint = arg_tint;
+ if ((text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) and (@bitCast(c_int, @as(c_uint, text[@intCast(c_uint, @as(c_int, 0))])) != @as(c_int, '\x00'))) {
+ var iconId: c_int = 0;
+ text = GetTextIcon(text, &iconId);
+ var position: Vector2 = Vector2{
+ .x = bounds.x,
+ .y = bounds.y,
+ };
+ var textWidth: c_int = GetTextWidth(text);
+ var textHeight: c_int = GuiGetStyle(DEFAULT, TEXT_SIZE);
+ if (iconId >= @as(c_int, 0)) {
+ textWidth += @as(c_int, 16);
+ if ((text != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) and (@bitCast(c_int, @as(c_uint, text[@intCast(c_uint, @as(c_int, 0))])) != @as(c_int, '\x00'))) {
+ textWidth += @as(c_int, 4);
+ }
+ }
+ while (true) {
+ switch (alignment) {
+ @as(c_int, 0) => {
+ {
+ position.x = bounds.x;
+ position.y = ((bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(textHeight, @as(c_int, 2)))) + @intToFloat(f32, @import("std").zig.c_translation.signedRemainder(@floatToInt(c_int, bounds.height), @as(c_int, 2)));
+ }
+ break;
+ },
+ @as(c_int, 1) => {
+ {
+ position.x = (bounds.x + (bounds.width / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(textWidth, @as(c_int, 2)));
+ position.y = ((bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(textHeight, @as(c_int, 2)))) + @intToFloat(f32, @import("std").zig.c_translation.signedRemainder(@floatToInt(c_int, bounds.height), @as(c_int, 2)));
+ }
+ break;
+ },
+ @as(c_int, 2) => {
+ {
+ position.x = (bounds.x + bounds.width) - @intToFloat(f32, textWidth);
+ position.y = ((bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(textHeight, @as(c_int, 2)))) + @intToFloat(f32, @import("std").zig.c_translation.signedRemainder(@floatToInt(c_int, bounds.height), @as(c_int, 2)));
+ }
+ break;
+ },
+ else => break,
+ }
+ break;
+ }
+ position.x = @intToFloat(f32, @floatToInt(c_int, position.x));
+ position.y = @intToFloat(f32, @floatToInt(c_int, position.y));
+ if (iconId >= @as(c_int, 0)) {
+ GuiDrawIcon(iconId, @floatToInt(c_int, position.x), @floatToInt(c_int, ((bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(@as(c_int, 16), @as(c_int, 2)))) + @intToFloat(f32, @import("std").zig.c_translation.signedRemainder(@floatToInt(c_int, bounds.height), @as(c_int, 2)))), @as(c_int, 1), tint);
+ position.x += @intToFloat(f32, @as(c_int, 16) + @as(c_int, 4));
+ }
+ DrawTextEx(guiFont, text, position, @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE)), @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SPACING)), tint);
+ }
+}
+pub fn GuiDrawRectangle(arg_rec: Rectangle, arg_borderWidth: c_int, arg_borderColor: Color, arg_color: Color) callconv(.C) void {
+ var rec = arg_rec;
+ var borderWidth = arg_borderWidth;
+ var borderColor = arg_borderColor;
+ var color = arg_color;
+ if (@bitCast(c_int, @as(c_uint, color.a)) > @as(c_int, 0)) {
+ DrawRectangle(@floatToInt(c_int, rec.x), @floatToInt(c_int, rec.y), @floatToInt(c_int, rec.width), @floatToInt(c_int, rec.height), color);
+ }
+ if (borderWidth > @as(c_int, 0)) {
+ DrawRectangle(@floatToInt(c_int, rec.x), @floatToInt(c_int, rec.y), @floatToInt(c_int, rec.width), borderWidth, borderColor);
+ DrawRectangle(@floatToInt(c_int, rec.x), @floatToInt(c_int, rec.y) + borderWidth, borderWidth, @floatToInt(c_int, rec.height) - (@as(c_int, 2) * borderWidth), borderColor);
+ DrawRectangle((@floatToInt(c_int, rec.x) + @floatToInt(c_int, rec.width)) - borderWidth, @floatToInt(c_int, rec.y) + borderWidth, borderWidth, @floatToInt(c_int, rec.height) - (@as(c_int, 2) * borderWidth), borderColor);
+ DrawRectangle(@floatToInt(c_int, rec.x), (@floatToInt(c_int, rec.y) + @floatToInt(c_int, rec.height)) - borderWidth, @floatToInt(c_int, rec.width), borderWidth, borderColor);
+ }
+}
+pub fn GuiTextSplit(arg_text: [*c]const u8, arg_count: [*c]c_int, arg_textRow: [*c]c_int) callconv(.C) [*c][*c]const u8 {
+ var text = arg_text;
+ var count = arg_count;
+ var textRow = arg_textRow;
+ const result = struct {
+ var static: [128][*c]const u8 = [1][*c]const u8{
+ null,
+ } ++ [1][*c]const u8{null} ** 127;
+ };
+ const buffer = struct {
+ var static: [1024]u8 = [1]u8{
+ 0,
+ } ++ [1]u8{0} ** 1023;
+ };
+ _ = memset(@ptrCast(?*anyopaque, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer.static))), @as(c_int, 0), @bitCast(c_ulong, @as(c_long, @as(c_int, 1024))));
+ result.static[@intCast(c_uint, @as(c_int, 0))] = @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer.static));
+ var counter: c_int = 1;
+ if (textRow != @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ textRow[@intCast(c_uint, @as(c_int, 0))] = 0;
+ }
+ {
+ var i: c_int = 0;
+ while (i < @as(c_int, 1024)) : (i += 1) {
+ buffer.static[@intCast(c_uint, i)] = (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk text + @intCast(usize, tmp) else break :blk text - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+ if (@bitCast(c_int, @as(c_uint, buffer.static[@intCast(c_uint, i)])) == @as(c_int, '\x00')) break else if ((@bitCast(c_int, @as(c_uint, buffer.static[@intCast(c_uint, i)])) == @as(c_int, ';')) or (@bitCast(c_int, @as(c_uint, buffer.static[@intCast(c_uint, i)])) == @as(c_int, '\n'))) {
+ result.static[@intCast(c_uint, counter)] = (@ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &buffer.static)) + @bitCast(usize, @intCast(isize, i))) + @bitCast(usize, @intCast(isize, @as(c_int, 1)));
+ if (textRow != @ptrCast([*c]c_int, @alignCast(@import("std").meta.alignment(c_int), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ if (@bitCast(c_int, @as(c_uint, buffer.static[@intCast(c_uint, i)])) == @as(c_int, '\n')) {
+ (blk: {
+ const tmp = counter;
+ if (tmp >= 0) break :blk textRow + @intCast(usize, tmp) else break :blk textRow - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = (blk: {
+ const tmp = counter - @as(c_int, 1);
+ if (tmp >= 0) break :blk textRow + @intCast(usize, tmp) else break :blk textRow - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* + @as(c_int, 1);
+ } else {
+ (blk: {
+ const tmp = counter;
+ if (tmp >= 0) break :blk textRow + @intCast(usize, tmp) else break :blk textRow - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = (blk: {
+ const tmp = counter - @as(c_int, 1);
+ if (tmp >= 0) break :blk textRow + @intCast(usize, tmp) else break :blk textRow - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*;
+ }
+ }
+ buffer.static[@intCast(c_uint, i)] = '\x00';
+ counter += 1;
+ if (counter == @as(c_int, 128)) break;
+ }
+ }
+ }
+ count.* = counter;
+ return @ptrCast([*c][*c]const u8, @alignCast(@import("std").meta.alignment([*c]const u8), &result.static));
+}
+pub fn ConvertHSVtoRGB(arg_hsv: Vector3) callconv(.C) Vector3 {
+ var hsv = arg_hsv;
+ var rgb: Vector3 = Vector3{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .z = 0,
+ };
+ var hh: f32 = 0.0;
+ var p: f32 = 0.0;
+ var q: f32 = 0.0;
+ var t: f32 = 0.0;
+ var ff: f32 = 0.0;
+ var i: c_long = 0;
+ if (hsv.y <= 0.0) {
+ rgb.x = hsv.z;
+ rgb.y = hsv.z;
+ rgb.z = hsv.z;
+ return rgb;
+ }
+ hh = hsv.x;
+ if (hh >= 360.0) {
+ hh = 0.0;
+ }
+ hh /= 60.0;
+ i = @floatToInt(c_long, hh);
+ ff = hh - @intToFloat(f32, i);
+ p = hsv.z * (1.0 - hsv.y);
+ q = hsv.z * (1.0 - (hsv.y * ff));
+ t = hsv.z * (1.0 - (hsv.y * (1.0 - ff)));
+ while (true) {
+ switch (i) {
+ @bitCast(c_long, @as(c_long, @as(c_int, 0))) => {
+ {
+ rgb.x = hsv.z;
+ rgb.y = t;
+ rgb.z = p;
+ }
+ break;
+ },
+ @bitCast(c_long, @as(c_long, @as(c_int, 1))) => {
+ {
+ rgb.x = q;
+ rgb.y = hsv.z;
+ rgb.z = p;
+ }
+ break;
+ },
+ @bitCast(c_long, @as(c_long, @as(c_int, 2))) => {
+ {
+ rgb.x = p;
+ rgb.y = hsv.z;
+ rgb.z = t;
+ }
+ break;
+ },
+ @bitCast(c_long, @as(c_long, @as(c_int, 3))) => {
+ {
+ rgb.x = p;
+ rgb.y = q;
+ rgb.z = hsv.z;
+ }
+ break;
+ },
+ @bitCast(c_long, @as(c_long, @as(c_int, 4))) => {
+ {
+ rgb.x = t;
+ rgb.y = p;
+ rgb.z = hsv.z;
+ }
+ break;
+ },
+ else => {
+ {
+ rgb.x = hsv.z;
+ rgb.y = p;
+ rgb.z = q;
+ }
+ break;
+ },
+ }
+ break;
+ }
+ return rgb;
+}
+pub fn ConvertRGBtoHSV(arg_rgb: Vector3) callconv(.C) Vector3 {
+ var rgb = arg_rgb;
+ var hsv: Vector3 = Vector3{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .z = 0,
+ };
+ var min: f32 = 0.0;
+ var max: f32 = 0.0;
+ var delta: f32 = 0.0;
+ min = if (rgb.x < rgb.y) rgb.x else rgb.y;
+ min = if (min < rgb.z) min else rgb.z;
+ max = if (rgb.x > rgb.y) rgb.x else rgb.y;
+ max = if (max > rgb.z) max else rgb.z;
+ hsv.z = max;
+ delta = max - min;
+ if (delta < 0.000009999999747378752) {
+ hsv.y = 0.0;
+ hsv.x = 0.0;
+ return hsv;
+ }
+ if (max > 0.0) {
+ hsv.y = delta / max;
+ } else {
+ hsv.y = 0.0;
+ hsv.x = 0.0;
+ return hsv;
+ }
+ if (rgb.x >= max) {
+ hsv.x = (rgb.y - rgb.z) / delta;
+ } else {
+ if (rgb.y >= max) {
+ hsv.x = 2.0 + ((rgb.z - rgb.x) / delta);
+ } else {
+ hsv.x = 4.0 + ((rgb.x - rgb.y) / delta);
+ }
+ }
+ hsv.x *= 60.0;
+ if (hsv.x < 0.0) {
+ hsv.x += 360.0;
+ }
+ return hsv;
+}
+pub export fn GuiSliderPro(arg_bounds: Rectangle, arg_textLeft: [*c]const u8, arg_textRight: [*c]const u8, arg_value: f32, arg_minValue: f32, arg_maxValue: f32, arg_sliderWidth: c_int) f32 {
+ var bounds = arg_bounds;
+ var textLeft = arg_textLeft;
+ var textRight = arg_textRight;
+ var value = arg_value;
+ var minValue = arg_minValue;
+ var maxValue = arg_maxValue;
+ var sliderWidth = arg_sliderWidth;
+ var state: GuiControlState = guiState;
+ var sliderValue: c_int = @floatToInt(c_int, ((value - minValue) / (maxValue - minValue)) * (bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SLIDER, BORDER_WIDTH))));
+ var slider: Rectangle = Rectangle{
+ .x = bounds.x,
+ .y = (bounds.y + @intToFloat(f32, GuiGetStyle(SLIDER, BORDER_WIDTH))) + @intToFloat(f32, GuiGetStyle(SLIDER, SLIDER_PADDING)),
+ .width = @intToFloat(f32, @as(c_int, 0)),
+ .height = (bounds.height - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SLIDER, BORDER_WIDTH))) - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SLIDER, SLIDER_PADDING)),
+ };
+ if (sliderWidth > @as(c_int, 0)) {
+ slider.x += @intToFloat(f32, sliderValue - @divTrunc(sliderWidth, @as(c_int, 2)));
+ slider.width = @intToFloat(f32, sliderWidth);
+ } else if (sliderWidth == @as(c_int, 0)) {
+ slider.x += @intToFloat(f32, GuiGetStyle(SLIDER, BORDER_WIDTH));
+ slider.width = @intToFloat(f32, sliderValue);
+ }
+ if ((state != @bitCast(c_uint, GUI_STATE_DISABLED)) and !guiLocked) {
+ var mousePoint: Vector2 = GetMousePosition();
+ if (CheckCollisionPointRec(mousePoint, bounds)) {
+ if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
+ state = @bitCast(c_uint, GUI_STATE_PRESSED);
+ value = (((maxValue - minValue) * (mousePoint.x - (bounds.x + @intToFloat(f32, @divTrunc(sliderWidth, @as(c_int, 2)))))) / (bounds.width - @intToFloat(f32, sliderWidth))) + minValue;
+ if (sliderWidth > @as(c_int, 0)) {
+ slider.x = mousePoint.x - (slider.width / @intToFloat(f32, @as(c_int, 2)));
+ } else if (sliderWidth == @as(c_int, 0)) {
+ slider.width = @intToFloat(f32, sliderValue);
+ }
+ } else {
+ state = @bitCast(c_uint, GUI_STATE_FOCUSED);
+ }
+ }
+ if (value > maxValue) {
+ value = maxValue;
+ } else if (value < minValue) {
+ value = minValue;
+ }
+ }
+ if (sliderWidth > @as(c_int, 0)) {
+ if (slider.x <= (bounds.x + @intToFloat(f32, GuiGetStyle(SLIDER, BORDER_WIDTH)))) {
+ slider.x = bounds.x + @intToFloat(f32, GuiGetStyle(SLIDER, BORDER_WIDTH));
+ } else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) {
+ slider.x = ((bounds.x + bounds.width) - slider.width) - @intToFloat(f32, GuiGetStyle(SLIDER, BORDER_WIDTH));
+ }
+ } else if (sliderWidth == @as(c_int, 0)) {
+ if (slider.width > bounds.width) {
+ slider.width = bounds.width - @intToFloat(f32, @as(c_int, 2) * GuiGetStyle(SLIDER, BORDER_WIDTH));
+ }
+ }
+ GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SLIDER, @bitCast(c_int, @bitCast(c_uint, BORDER) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha), Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SLIDER, if (state != @bitCast(c_uint, GUI_STATE_DISABLED)) BASE_COLOR_NORMAL else BASE_COLOR_DISABLED))), guiAlpha));
+ if ((state == @bitCast(c_uint, GUI_STATE_NORMAL)) or (state == @bitCast(c_uint, GUI_STATE_PRESSED))) {
+ GuiDrawRectangle(slider, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))), guiAlpha));
+ } else if (state == @bitCast(c_uint, GUI_STATE_FOCUSED)) {
+ GuiDrawRectangle(slider, @as(c_int, 0), Color{
+ .r = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .g = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .b = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ .a = @bitCast(u8, @truncate(i8, @as(c_int, 0))),
+ }, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED))), guiAlpha));
+ }
+ if (textLeft != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ textBounds.width = @intToFloat(f32, GetTextWidth(textLeft));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = (bounds.x - textBounds.width) - @intToFloat(f32, GuiGetStyle(SLIDER, TEXT_PADDING));
+ textBounds.y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(GuiGetStyle(DEFAULT, TEXT_SIZE), @as(c_int, 2)));
+ GuiDrawText(textLeft, textBounds, GUI_TEXT_ALIGN_RIGHT, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SLIDER, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ if (textRight != @ptrCast([*c]const u8, @alignCast(@import("std").meta.alignment(u8), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var textBounds: Rectangle = Rectangle{
+ .x = @intToFloat(f32, @as(c_int, 0)),
+ .y = 0,
+ .width = 0,
+ .height = 0,
+ };
+ textBounds.width = @intToFloat(f32, GetTextWidth(textRight));
+ textBounds.height = @intToFloat(f32, GuiGetStyle(DEFAULT, TEXT_SIZE));
+ textBounds.x = (bounds.x + bounds.width) + @intToFloat(f32, GuiGetStyle(SLIDER, TEXT_PADDING));
+ textBounds.y = (bounds.y + (bounds.height / @intToFloat(f32, @as(c_int, 2)))) - @intToFloat(f32, @divTrunc(GuiGetStyle(DEFAULT, TEXT_SIZE), @as(c_int, 2)));
+ GuiDrawText(textRight, textBounds, GUI_TEXT_ALIGN_LEFT, Fade(GetColor(@bitCast(c_uint, GuiGetStyle(SLIDER, @bitCast(c_int, @bitCast(c_uint, TEXT) +% (state *% @bitCast(c_uint, @as(c_int, 3))))))), guiAlpha));
+ }
+ return value;
+}
+pub export fn GuiLoadIcons(arg_fileName: [*c]const u8, arg_loadIconsName: bool) [*c][*c]u8 {
+ var fileName = arg_fileName;
+ var loadIconsName = arg_loadIconsName;
+ var rgiFile: [*c]FILE = fopen(fileName, "rb");
+ var guiIconsName: [*c][*c]u8 = null;
+ if (rgiFile != @ptrCast([*c]FILE, @alignCast(@import("std").meta.alignment(FILE), @intToPtr(?*anyopaque, @as(c_int, 0))))) {
+ var signature: [5]u8 = [1]u8{0} ** 5;
+ var version: c_short = 0;
+ var reserved: c_short = 0;
+ var iconCount: c_short = 0;
+ var iconSize: c_short = 0;
+ _ = fread(@ptrCast(?*anyopaque, @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), &signature))), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @bitCast(c_ulong, @as(c_long, @as(c_int, 4))), rgiFile);
+ _ = fread(@ptrCast(?*anyopaque, &version), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgiFile);
+ _ = fread(@ptrCast(?*anyopaque, &reserved), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgiFile);
+ _ = fread(@ptrCast(?*anyopaque, &iconCount), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgiFile);
+ _ = fread(@ptrCast(?*anyopaque, &iconSize), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), @sizeOf(c_short), rgiFile);
+ if ((((@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 0))])) == @as(c_int, 'r')) and (@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 1))])) == @as(c_int, 'G'))) and (@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 2))])) == @as(c_int, 'I'))) and (@bitCast(c_int, @as(c_uint, signature[@intCast(c_uint, @as(c_int, 3))])) == @as(c_int, ' '))) {
+ if (loadIconsName) {
+ //guiIconsName = @ptrCast([*c][*c]u8, @alignCast(@import("std").meta.alignment([*c]u8), malloc(@bitCast(c_ulong, @as(c_long, iconCount)) *% @sizeOf([*c][*c]u8))));
+ {
+ var i: c_int = 0;
+ while (i < @bitCast(c_int, @as(c_int, iconCount))) : (i += 1) {
+ (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk guiIconsName + @intCast(usize, tmp) else break :blk guiIconsName - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).* = @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), malloc(@bitCast(c_ulong, @as(c_long, @as(c_int, 32))))));
+ _ = fread(@ptrCast(?*anyopaque, (blk: {
+ const tmp = i;
+ if (tmp >= 0) break :blk guiIconsName + @intCast(usize, tmp) else break :blk guiIconsName - ~@bitCast(usize, @intCast(isize, tmp) +% -1);
+ }).*), @bitCast(c_ulong, @as(c_long, @as(c_int, 32))), @bitCast(c_ulong, @as(c_long, @as(c_int, 1))), rgiFile);
+ }
+ }
+ } else {
+ _ = fseek(rgiFile, @bitCast(c_long, @as(c_long, @bitCast(c_int, @as(c_int, iconCount)) * @as(c_int, 32))), @as(c_int, 1));
+ }
+ _ = fread(@ptrCast(?*anyopaque, @ptrCast([*c]c_uint, @alignCast(@import("std").meta.alignment(c_uint), &guiIcons))), @bitCast(c_ulong, @as(c_long, @bitCast(c_int, @as(c_int, iconCount)) * @divTrunc(@bitCast(c_int, @as(c_int, iconSize)) * @bitCast(c_int, @as(c_int, iconSize)), @as(c_int, 32)))), @sizeOf(c_uint), rgiFile);
+ }
+ _ = fclose(rgiFile);
+ }
+ return guiIconsName;
+}
+pub const __INTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `L`"); // (no file):67:9
+pub const __UINTMAX_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `UL`"); // (no file):73:9
+pub const __INT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `L`"); // (no file):164:9
+pub const __UINT32_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `U`"); // (no file):186:9
+pub const __UINT64_C_SUFFIX__ = @compileError("unable to translate macro: undefined identifier `UL`"); // (no file):194:9
+pub const __seg_gs = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // (no file):315:9
+pub const __seg_fs = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // (no file):316:9
+pub const va_start = @compileError("unable to translate macro: undefined identifier `__builtin_va_start`"); // /home/tradam/.asdf/installs/zig/master/lib/include/stdarg.h:17:9
+pub const va_end = @compileError("unable to translate macro: undefined identifier `__builtin_va_end`"); // /home/tradam/.asdf/installs/zig/master/lib/include/stdarg.h:18:9
+pub const va_arg = @compileError("unable to translate macro: undefined identifier `__builtin_va_arg`"); // /home/tradam/.asdf/installs/zig/master/lib/include/stdarg.h:19:9
+pub const __va_copy = @compileError("unable to translate macro: undefined identifier `__builtin_va_copy`"); // /home/tradam/.asdf/installs/zig/master/lib/include/stdarg.h:24:9
+pub const va_copy = @compileError("unable to translate macro: undefined identifier `__builtin_va_copy`"); // /home/tradam/.asdf/installs/zig/master/lib/include/stdarg.h:27:9
+pub const TRACELOG = @compileError("unable to translate C expr: expected ')' instead got '...'"); // raygui.h:222:9
+pub const __GLIBC_USE = @compileError("unable to translate macro: undefined identifier `__GLIBC_USE_`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/features.h:186:9
+pub const __glibc_has_attribute = @compileError("unable to translate macro: undefined identifier `__has_attribute`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:44:10
+pub const __glibc_has_extension = @compileError("unable to translate macro: undefined identifier `__has_extension`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:54:10
+pub const __THROW = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:78:11
+pub const __THROWNL = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:79:11
+pub const __NTH = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:80:11
+pub const __NTHNL = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:81:11
+pub const __CONCAT = @compileError("unable to translate C expr: unexpected token '##'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:123:9
+pub const __STRING = @compileError("unable to translate C expr: unexpected token '#'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:124:9
+pub const __warnattr = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:158:10
+pub const __errordecl = @compileError("unable to translate C expr: unexpected token 'extern'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:159:10
+pub const __flexarr = @compileError("unable to translate C expr: unexpected token '['"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:167:10
+pub const __REDIRECT = @compileError("unable to translate macro: undefined identifier `__asm__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:198:10
+pub const __REDIRECT_NTH = @compileError("unable to translate macro: undefined identifier `__asm__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:205:11
+pub const __REDIRECT_NTHNL = @compileError("unable to translate macro: undefined identifier `__asm__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:207:11
+pub const __ASMNAME2 = @compileError("unable to translate C expr: unexpected token 'Identifier'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:211:10
+pub const __attribute_malloc__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:232:10
+pub const __attribute_alloc_size__ = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:243:10
+pub const __attribute_pure__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:250:10
+pub const __attribute_const__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:257:10
+pub const __attribute_maybe_unused__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:263:10
+pub const __attribute_used__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:272:10
+pub const __attribute_noinline__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:273:10
+pub const __attribute_deprecated__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:281:10
+pub const __attribute_deprecated_msg__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:291:10
+pub const __attribute_format_arg__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:304:10
+pub const __attribute_format_strfmon__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:314:10
+pub const __nonnull = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:324:11
+pub const __returns_nonnull = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:337:10
+pub const __attribute_warn_unused_result__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:346:10
+pub const __always_inline = @compileError("unable to translate macro: undefined identifier `__inline`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:364:10
+pub const __attribute_artificial__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:373:10
+pub const __extern_inline = @compileError("unable to translate macro: undefined identifier `__inline`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:391:11
+pub const __extern_always_inline = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:392:11
+pub const __restrict_arr = @compileError("unable to translate macro: undefined identifier `__restrict`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:435:10
+pub const __attribute_copy__ = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:484:10
+pub const __LDBL_REDIR2_DECL = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:560:10
+pub const __LDBL_REDIR_DECL = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:561:10
+pub const __glibc_macro_warning1 = @compileError("unable to translate macro: undefined identifier `_Pragma`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:575:10
+pub const __glibc_macro_warning = @compileError("unable to translate macro: undefined identifier `GCC`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:576:10
+pub const __attr_access = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:612:11
+pub const __attr_access_none = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:613:11
+pub const __attr_dealloc = @compileError("unable to translate C expr: unexpected token 'Eof'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:623:10
+pub const __attribute_returns_twice__ = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/sys/cdefs.h:630:10
+pub const __STD_TYPE = @compileError("unable to translate C expr: unexpected token 'typedef'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/types.h:137:10
+pub const __FSID_T_TYPE = @compileError("unable to translate macro: undefined identifier `__val`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/x86_64-linux-gnu/bits/typesizes.h:73:9
+pub const __getc_unlocked_body = @compileError("TODO postfix inc/dec expr"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/types/struct_FILE.h:102:9
+pub const __putc_unlocked_body = @compileError("TODO postfix inc/dec expr"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/types/struct_FILE.h:106:9
+pub const __f32 = @compileError("unable to translate macro: undefined identifier `f`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:91:12
+pub const __f64x = @compileError("unable to translate macro: undefined identifier `l`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:120:13
+pub const __CFLOAT32 = @compileError("unable to translate: TODO _Complex"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:149:12
+pub const __CFLOAT64 = @compileError("unable to translate: TODO _Complex"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:160:13
+pub const __CFLOAT32X = @compileError("unable to translate: TODO _Complex"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:169:12
+pub const __CFLOAT64X = @compileError("unable to translate: TODO _Complex"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:178:13
+pub const __builtin_nansf32 = @compileError("unable to translate macro: undefined identifier `__builtin_nansf`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:221:12
+pub const __builtin_huge_valf64 = @compileError("unable to translate macro: undefined identifier `__builtin_huge_val`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:255:13
+pub const __builtin_inff64 = @compileError("unable to translate macro: undefined identifier `__builtin_inf`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:256:13
+pub const __builtin_nanf64 = @compileError("unable to translate macro: undefined identifier `__builtin_nan`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:257:13
+pub const __builtin_nansf64 = @compileError("unable to translate macro: undefined identifier `__builtin_nans`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:258:13
+pub const __builtin_huge_valf32x = @compileError("unable to translate macro: undefined identifier `__builtin_huge_val`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:272:12
+pub const __builtin_inff32x = @compileError("unable to translate macro: undefined identifier `__builtin_inf`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:273:12
+pub const __builtin_nanf32x = @compileError("unable to translate macro: undefined identifier `__builtin_nan`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:274:12
+pub const __builtin_nansf32x = @compileError("unable to translate macro: undefined identifier `__builtin_nans`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:275:12
+pub const __builtin_huge_valf64x = @compileError("unable to translate macro: undefined identifier `__builtin_huge_vall`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:289:13
+pub const __builtin_inff64x = @compileError("unable to translate macro: undefined identifier `__builtin_infl`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:290:13
+pub const __builtin_nanf64x = @compileError("unable to translate macro: undefined identifier `__builtin_nanl`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:291:13
+pub const __builtin_nansf64x = @compileError("unable to translate macro: undefined identifier `__builtin_nansl`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/floatn-common.h:292:13
+pub const __FD_ZERO = @compileError("unable to translate macro: undefined identifier `__i`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/select.h:25:9
+pub const __FD_SET = @compileError("unable to translate C expr: expected ')' instead got '|='"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/select.h:32:9
+pub const __FD_CLR = @compileError("unable to translate C expr: expected ')' instead got '&='"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/select.h:34:9
+pub const __PTHREAD_MUTEX_INITIALIZER = @compileError("unable to translate C expr: unexpected token '{'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/x86_64-linux-gnu/bits/struct_mutex.h:56:10
+pub const __PTHREAD_RWLOCK_ELISION_EXTRA = @compileError("unable to translate C expr: unexpected token '{'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/x86_64-linux-gnu/bits/struct_rwlock.h:40:11
+pub const __ONCE_FLAG_INIT = @compileError("unable to translate C expr: unexpected token '{'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/bits/thread-shared-types.h:127:9
+pub const HUGE_VAL = @compileError("unable to translate macro: undefined identifier `__builtin_huge_val`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:48:10
+pub const HUGE_VALL = @compileError("unable to translate macro: undefined identifier `__builtin_huge_vall`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:60:11
+pub const __SIMD_DECL = @compileError("unable to translate macro: undefined identifier `__DECL_SIMD_`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:276:9
+pub const __MATHCALL_VEC = @compileError("unable to translate C expr: unexpected token 'Identifier'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:278:9
+pub const __MATHDECL_VEC = @compileError("unable to translate C expr: unexpected token 'Identifier'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:282:9
+pub const __MATHDECL = @compileError("unable to translate macro: undefined identifier `__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:288:9
+pub const __MATHDECLX = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:293:9
+pub const __MATHDECL_1_IMPL = @compileError("unable to translate C expr: unexpected token 'extern'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:296:9
+pub const __MATHREDIR = @compileError("unable to translate C expr: unexpected token 'extern'"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:305:9
+pub const __MATHCALL_NARROW_ARGS_1 = @compileError("unable to translate macro: undefined identifier `_Marg_`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:550:9
+pub const __MATHCALL_NARROW_ARGS_2 = @compileError("unable to translate macro: undefined identifier `_Marg_`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:551:9
+pub const __MATHCALL_NARROW_ARGS_3 = @compileError("unable to translate macro: undefined identifier `_Marg_`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:552:9
+pub const __MATHCALL_NARROW_NORMAL = @compileError("unable to translate macro: undefined identifier `_Mret_`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:553:9
+pub const __MATHCALL_NARROW_REDIR = @compileError("unable to translate macro: undefined identifier `_Mret_`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:555:9
+pub const __MATH_TG = @compileError("unable to translate macro: undefined identifier `f`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:916:10
+pub const fpclassify = @compileError("unable to translate macro: undefined identifier `__builtin_fpclassify`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:961:11
+pub const isfinite = @compileError("unable to translate macro: undefined identifier `__builtin_isfinite`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:988:11
+pub const isnormal = @compileError("unable to translate macro: undefined identifier `__builtin_isnormal`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:996:11
+pub const isgreater = @compileError("unable to translate macro: undefined identifier `__builtin_isgreater`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:1282:11
+pub const isgreaterequal = @compileError("unable to translate macro: undefined identifier `__builtin_isgreaterequal`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:1283:11
+pub const isless = @compileError("unable to translate macro: undefined identifier `__builtin_isless`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:1284:11
+pub const islessequal = @compileError("unable to translate macro: undefined identifier `__builtin_islessequal`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:1285:11
+pub const islessgreater = @compileError("unable to translate macro: undefined identifier `__builtin_islessgreater`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:1286:11
+pub const isunordered = @compileError("unable to translate macro: undefined identifier `__builtin_isunordered`"); // /home/tradam/.asdf/installs/zig/master/lib/libc/include/generic-glibc/math.h:1287:11
+pub const BIT_SET = @compileError("unable to translate C expr: expected ')' instead got '|='"); // raygui.h:3698:13
+pub const BIT_CLEAR = @compileError("unable to translate C expr: expected ')' instead got '&='"); // raygui.h:3708:13
+pub const __llvm__ = @as(c_int, 1);
+pub const __clang__ = @as(c_int, 1);
+pub const __clang_major__ = @as(c_int, 13);
+pub const __clang_minor__ = @as(c_int, 0);
+pub const __clang_patchlevel__ = @as(c_int, 1);
+pub const __clang_version__ = "13.0.1 ([email protected]:ziglang/zig-bootstrap.git 81f0e6c5b902ead84753490db4f0007d08df964a)";
+pub const __GNUC__ = @as(c_int, 4);
+pub const __GNUC_MINOR__ = @as(c_int, 2);
+pub const __GNUC_PATCHLEVEL__ = @as(c_int, 1);
+pub const __GXX_ABI_VERSION = @as(c_int, 1002);
+pub const __ATOMIC_RELAXED = @as(c_int, 0);
+pub const __ATOMIC_CONSUME = @as(c_int, 1);
+pub const __ATOMIC_ACQUIRE = @as(c_int, 2);
+pub const __ATOMIC_RELEASE = @as(c_int, 3);
+pub const __ATOMIC_ACQ_REL = @as(c_int, 4);
+pub const __ATOMIC_SEQ_CST = @as(c_int, 5);
+pub const __OPENCL_MEMORY_SCOPE_WORK_ITEM = @as(c_int, 0);
+pub const __OPENCL_MEMORY_SCOPE_WORK_GROUP = @as(c_int, 1);
+pub const __OPENCL_MEMORY_SCOPE_DEVICE = @as(c_int, 2);
+pub const __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES = @as(c_int, 3);
+pub const __OPENCL_MEMORY_SCOPE_SUB_GROUP = @as(c_int, 4);
+pub const __PRAGMA_REDEFINE_EXTNAME = @as(c_int, 1);
+pub const __VERSION__ = "Clang 13.0.1 ([email protected]:ziglang/zig-bootstrap.git 81f0e6c5b902ead84753490db4f0007d08df964a)";
+pub const __OBJC_BOOL_IS_BOOL = @as(c_int, 0);
+pub const __CONSTANT_CFSTRINGS__ = @as(c_int, 1);
+pub const __clang_literal_encoding__ = "UTF-8";
+pub const __clang_wide_literal_encoding__ = "UTF-32";
+pub const __OPTIMIZE__ = @as(c_int, 1);
+pub const __ORDER_LITTLE_ENDIAN__ = @as(c_int, 1234);
+pub const __ORDER_BIG_ENDIAN__ = @as(c_int, 4321);
+pub const __ORDER_PDP_ENDIAN__ = @as(c_int, 3412);
+pub const __BYTE_ORDER__ = __ORDER_LITTLE_ENDIAN__;
+pub const __LITTLE_ENDIAN__ = @as(c_int, 1);
+pub const _LP64 = @as(c_int, 1);
+pub const __LP64__ = @as(c_int, 1);
+pub const __CHAR_BIT__ = @as(c_int, 8);
+pub const __SCHAR_MAX__ = @as(c_int, 127);
+pub const __SHRT_MAX__ = @as(c_int, 32767);
+pub const __INT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __LONG_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __LONG_LONG_MAX__ = @as(c_longlong, 9223372036854775807);
+pub const __WCHAR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __WINT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __INTMAX_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __SIZE_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __UINTMAX_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __PTRDIFF_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INTPTR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __UINTPTR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __SIZEOF_DOUBLE__ = @as(c_int, 8);
+pub const __SIZEOF_FLOAT__ = @as(c_int, 4);
+pub const __SIZEOF_INT__ = @as(c_int, 4);
+pub const __SIZEOF_LONG__ = @as(c_int, 8);
+pub const __SIZEOF_LONG_DOUBLE__ = @as(c_int, 16);
+pub const __SIZEOF_LONG_LONG__ = @as(c_int, 8);
+pub const __SIZEOF_POINTER__ = @as(c_int, 8);
+pub const __SIZEOF_SHORT__ = @as(c_int, 2);
+pub const __SIZEOF_PTRDIFF_T__ = @as(c_int, 8);
+pub const __SIZEOF_SIZE_T__ = @as(c_int, 8);
+pub const __SIZEOF_WCHAR_T__ = @as(c_int, 4);
+pub const __SIZEOF_WINT_T__ = @as(c_int, 4);
+pub const __SIZEOF_INT128__ = @as(c_int, 16);
+pub const __INTMAX_TYPE__ = c_long;
+pub const __INTMAX_FMTd__ = "ld";
+pub const __INTMAX_FMTi__ = "li";
+pub const __UINTMAX_TYPE__ = c_ulong;
+pub const __UINTMAX_FMTo__ = "lo";
+pub const __UINTMAX_FMTu__ = "lu";
+pub const __UINTMAX_FMTx__ = "lx";
+pub const __UINTMAX_FMTX__ = "lX";
+pub const __INTMAX_WIDTH__ = @as(c_int, 64);
+pub const __PTRDIFF_TYPE__ = c_long;
+pub const __PTRDIFF_FMTd__ = "ld";
+pub const __PTRDIFF_FMTi__ = "li";
+pub const __PTRDIFF_WIDTH__ = @as(c_int, 64);
+pub const __INTPTR_TYPE__ = c_long;
+pub const __INTPTR_FMTd__ = "ld";
+pub const __INTPTR_FMTi__ = "li";
+pub const __INTPTR_WIDTH__ = @as(c_int, 64);
+pub const __SIZE_TYPE__ = c_ulong;
+pub const __SIZE_FMTo__ = "lo";
+pub const __SIZE_FMTu__ = "lu";
+pub const __SIZE_FMTx__ = "lx";
+pub const __SIZE_FMTX__ = "lX";
+pub const __SIZE_WIDTH__ = @as(c_int, 64);
+pub const __WCHAR_TYPE__ = c_int;
+pub const __WCHAR_WIDTH__ = @as(c_int, 32);
+pub const __WINT_TYPE__ = c_uint;
+pub const __WINT_WIDTH__ = @as(c_int, 32);
+pub const __SIG_ATOMIC_WIDTH__ = @as(c_int, 32);
+pub const __SIG_ATOMIC_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __CHAR16_TYPE__ = c_ushort;
+pub const __CHAR32_TYPE__ = c_uint;
+pub const __UINTMAX_WIDTH__ = @as(c_int, 64);
+pub const __UINTPTR_TYPE__ = c_ulong;
+pub const __UINTPTR_FMTo__ = "lo";
+pub const __UINTPTR_FMTu__ = "lu";
+pub const __UINTPTR_FMTx__ = "lx";
+pub const __UINTPTR_FMTX__ = "lX";
+pub const __UINTPTR_WIDTH__ = @as(c_int, 64);
+pub const __FLT_DENORM_MIN__ = @as(f32, 1.40129846e-45);
+pub const __FLT_HAS_DENORM__ = @as(c_int, 1);
+pub const __FLT_DIG__ = @as(c_int, 6);
+pub const __FLT_DECIMAL_DIG__ = @as(c_int, 9);
+pub const __FLT_EPSILON__ = @as(f32, 1.19209290e-7);
+pub const __FLT_HAS_INFINITY__ = @as(c_int, 1);
+pub const __FLT_HAS_QUIET_NAN__ = @as(c_int, 1);
+pub const __FLT_MANT_DIG__ = @as(c_int, 24);
+pub const __FLT_MAX_10_EXP__ = @as(c_int, 38);
+pub const __FLT_MAX_EXP__ = @as(c_int, 128);
+pub const __FLT_MAX__ = @as(f32, 3.40282347e+38);
+pub const __FLT_MIN_10_EXP__ = -@as(c_int, 37);
+pub const __FLT_MIN_EXP__ = -@as(c_int, 125);
+pub const __FLT_MIN__ = @as(f32, 1.17549435e-38);
+pub const __DBL_DENORM_MIN__ = 4.9406564584124654e-324;
+pub const __DBL_HAS_DENORM__ = @as(c_int, 1);
+pub const __DBL_DIG__ = @as(c_int, 15);
+pub const __DBL_DECIMAL_DIG__ = @as(c_int, 17);
+pub const __DBL_EPSILON__ = 2.2204460492503131e-16;
+pub const __DBL_HAS_INFINITY__ = @as(c_int, 1);
+pub const __DBL_HAS_QUIET_NAN__ = @as(c_int, 1);
+pub const __DBL_MANT_DIG__ = @as(c_int, 53);
+pub const __DBL_MAX_10_EXP__ = @as(c_int, 308);
+pub const __DBL_MAX_EXP__ = @as(c_int, 1024);
+pub const __DBL_MAX__ = 1.7976931348623157e+308;
+pub const __DBL_MIN_10_EXP__ = -@as(c_int, 307);
+pub const __DBL_MIN_EXP__ = -@as(c_int, 1021);
+pub const __DBL_MIN__ = 2.2250738585072014e-308;
+pub const __LDBL_DENORM_MIN__ = @as(c_longdouble, 3.64519953188247460253e-4951);
+pub const __LDBL_HAS_DENORM__ = @as(c_int, 1);
+pub const __LDBL_DIG__ = @as(c_int, 18);
+pub const __LDBL_DECIMAL_DIG__ = @as(c_int, 21);
+pub const __LDBL_EPSILON__ = @as(c_longdouble, 1.08420217248550443401e-19);
+pub const __LDBL_HAS_INFINITY__ = @as(c_int, 1);
+pub const __LDBL_HAS_QUIET_NAN__ = @as(c_int, 1);
+pub const __LDBL_MANT_DIG__ = @as(c_int, 64);
+pub const __LDBL_MAX_10_EXP__ = @as(c_int, 4932);
+pub const __LDBL_MAX_EXP__ = @as(c_int, 16384);
+pub const __LDBL_MAX__ = @as(c_longdouble, 1.18973149535723176502e+4932);
+pub const __LDBL_MIN_10_EXP__ = -@as(c_int, 4931);
+pub const __LDBL_MIN_EXP__ = -@as(c_int, 16381);
+pub const __LDBL_MIN__ = @as(c_longdouble, 3.36210314311209350626e-4932);
+pub const __POINTER_WIDTH__ = @as(c_int, 64);
+pub const __BIGGEST_ALIGNMENT__ = @as(c_int, 16);
+pub const __WINT_UNSIGNED__ = @as(c_int, 1);
+pub const __INT8_TYPE__ = i8;
+pub const __INT8_FMTd__ = "hhd";
+pub const __INT8_FMTi__ = "hhi";
+pub const __INT8_C_SUFFIX__ = "";
+pub const __INT16_TYPE__ = c_short;
+pub const __INT16_FMTd__ = "hd";
+pub const __INT16_FMTi__ = "hi";
+pub const __INT16_C_SUFFIX__ = "";
+pub const __INT32_TYPE__ = c_int;
+pub const __INT32_FMTd__ = "d";
+pub const __INT32_FMTi__ = "i";
+pub const __INT32_C_SUFFIX__ = "";
+pub const __INT64_TYPE__ = c_long;
+pub const __INT64_FMTd__ = "ld";
+pub const __INT64_FMTi__ = "li";
+pub const __UINT8_TYPE__ = u8;
+pub const __UINT8_FMTo__ = "hho";
+pub const __UINT8_FMTu__ = "hhu";
+pub const __UINT8_FMTx__ = "hhx";
+pub const __UINT8_FMTX__ = "hhX";
+pub const __UINT8_C_SUFFIX__ = "";
+pub const __UINT8_MAX__ = @as(c_int, 255);
+pub const __INT8_MAX__ = @as(c_int, 127);
+pub const __UINT16_TYPE__ = c_ushort;
+pub const __UINT16_FMTo__ = "ho";
+pub const __UINT16_FMTu__ = "hu";
+pub const __UINT16_FMTx__ = "hx";
+pub const __UINT16_FMTX__ = "hX";
+pub const __UINT16_C_SUFFIX__ = "";
+pub const __UINT16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const __INT16_MAX__ = @as(c_int, 32767);
+pub const __UINT32_TYPE__ = c_uint;
+pub const __UINT32_FMTo__ = "o";
+pub const __UINT32_FMTu__ = "u";
+pub const __UINT32_FMTx__ = "x";
+pub const __UINT32_FMTX__ = "X";
+pub const __UINT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __INT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __UINT64_TYPE__ = c_ulong;
+pub const __UINT64_FMTo__ = "lo";
+pub const __UINT64_FMTu__ = "lu";
+pub const __UINT64_FMTx__ = "lx";
+pub const __UINT64_FMTX__ = "lX";
+pub const __UINT64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __INT64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INT_LEAST8_TYPE__ = i8;
+pub const __INT_LEAST8_MAX__ = @as(c_int, 127);
+pub const __INT_LEAST8_FMTd__ = "hhd";
+pub const __INT_LEAST8_FMTi__ = "hhi";
+pub const __UINT_LEAST8_TYPE__ = u8;
+pub const __UINT_LEAST8_MAX__ = @as(c_int, 255);
+pub const __UINT_LEAST8_FMTo__ = "hho";
+pub const __UINT_LEAST8_FMTu__ = "hhu";
+pub const __UINT_LEAST8_FMTx__ = "hhx";
+pub const __UINT_LEAST8_FMTX__ = "hhX";
+pub const __INT_LEAST16_TYPE__ = c_short;
+pub const __INT_LEAST16_MAX__ = @as(c_int, 32767);
+pub const __INT_LEAST16_FMTd__ = "hd";
+pub const __INT_LEAST16_FMTi__ = "hi";
+pub const __UINT_LEAST16_TYPE__ = c_ushort;
+pub const __UINT_LEAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const __UINT_LEAST16_FMTo__ = "ho";
+pub const __UINT_LEAST16_FMTu__ = "hu";
+pub const __UINT_LEAST16_FMTx__ = "hx";
+pub const __UINT_LEAST16_FMTX__ = "hX";
+pub const __INT_LEAST32_TYPE__ = c_int;
+pub const __INT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __INT_LEAST32_FMTd__ = "d";
+pub const __INT_LEAST32_FMTi__ = "i";
+pub const __UINT_LEAST32_TYPE__ = c_uint;
+pub const __UINT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __UINT_LEAST32_FMTo__ = "o";
+pub const __UINT_LEAST32_FMTu__ = "u";
+pub const __UINT_LEAST32_FMTx__ = "x";
+pub const __UINT_LEAST32_FMTX__ = "X";
+pub const __INT_LEAST64_TYPE__ = c_long;
+pub const __INT_LEAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INT_LEAST64_FMTd__ = "ld";
+pub const __INT_LEAST64_FMTi__ = "li";
+pub const __UINT_LEAST64_TYPE__ = c_ulong;
+pub const __UINT_LEAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __UINT_LEAST64_FMTo__ = "lo";
+pub const __UINT_LEAST64_FMTu__ = "lu";
+pub const __UINT_LEAST64_FMTx__ = "lx";
+pub const __UINT_LEAST64_FMTX__ = "lX";
+pub const __INT_FAST8_TYPE__ = i8;
+pub const __INT_FAST8_MAX__ = @as(c_int, 127);
+pub const __INT_FAST8_FMTd__ = "hhd";
+pub const __INT_FAST8_FMTi__ = "hhi";
+pub const __UINT_FAST8_TYPE__ = u8;
+pub const __UINT_FAST8_MAX__ = @as(c_int, 255);
+pub const __UINT_FAST8_FMTo__ = "hho";
+pub const __UINT_FAST8_FMTu__ = "hhu";
+pub const __UINT_FAST8_FMTx__ = "hhx";
+pub const __UINT_FAST8_FMTX__ = "hhX";
+pub const __INT_FAST16_TYPE__ = c_short;
+pub const __INT_FAST16_MAX__ = @as(c_int, 32767);
+pub const __INT_FAST16_FMTd__ = "hd";
+pub const __INT_FAST16_FMTi__ = "hi";
+pub const __UINT_FAST16_TYPE__ = c_ushort;
+pub const __UINT_FAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal);
+pub const __UINT_FAST16_FMTo__ = "ho";
+pub const __UINT_FAST16_FMTu__ = "hu";
+pub const __UINT_FAST16_FMTx__ = "hx";
+pub const __UINT_FAST16_FMTX__ = "hX";
+pub const __INT_FAST32_TYPE__ = c_int;
+pub const __INT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const __INT_FAST32_FMTd__ = "d";
+pub const __INT_FAST32_FMTi__ = "i";
+pub const __UINT_FAST32_TYPE__ = c_uint;
+pub const __UINT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal);
+pub const __UINT_FAST32_FMTo__ = "o";
+pub const __UINT_FAST32_FMTu__ = "u";
+pub const __UINT_FAST32_FMTx__ = "x";
+pub const __UINT_FAST32_FMTX__ = "X";
+pub const __INT_FAST64_TYPE__ = c_long;
+pub const __INT_FAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal);
+pub const __INT_FAST64_FMTd__ = "ld";
+pub const __INT_FAST64_FMTi__ = "li";
+pub const __UINT_FAST64_TYPE__ = c_ulong;
+pub const __UINT_FAST64_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal);
+pub const __UINT_FAST64_FMTo__ = "lo";
+pub const __UINT_FAST64_FMTu__ = "lu";
+pub const __UINT_FAST64_FMTx__ = "lx";
+pub const __UINT_FAST64_FMTX__ = "lX";
+pub const __USER_LABEL_PREFIX__ = "";
+pub const __FINITE_MATH_ONLY__ = @as(c_int, 0);
+pub const __GNUC_STDC_INLINE__ = @as(c_int, 1);
+pub const __GCC_ATOMIC_TEST_AND_SET_TRUEVAL = @as(c_int, 1);
+pub const __CLANG_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_INT_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2);
+pub const __CLANG_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_INT_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2);
+pub const __GCC_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2);
+pub const __PIC__ = @as(c_int, 2);
+pub const __pic__ = @as(c_int, 2);
+pub const __FLT_EVAL_METHOD__ = @as(c_int, 0);
+pub const __FLT_RADIX__ = @as(c_int, 2);
+pub const __DECIMAL_DIG__ = __LDBL_DECIMAL_DIG__;
+pub const __SSP_STRONG__ = @as(c_int, 2);
+pub const __GCC_ASM_FLAG_OUTPUTS__ = @as(c_int, 1);
+pub const __code_model_small__ = @as(c_int, 1);
+pub const __amd64__ = @as(c_int, 1);
+pub const __amd64 = @as(c_int, 1);
+pub const __x86_64 = @as(c_int, 1);
+pub const __x86_64__ = @as(c_int, 1);
+pub const __SEG_GS = @as(c_int, 1);
+pub const __SEG_FS = @as(c_int, 1);
+pub const __corei7 = @as(c_int, 1);
+pub const __corei7__ = @as(c_int, 1);
+pub const __tune_corei7__ = @as(c_int, 1);
+pub const __REGISTER_PREFIX__ = "";
+pub const __NO_MATH_INLINES = @as(c_int, 1);
+pub const __AES__ = @as(c_int, 1);
+pub const __PCLMUL__ = @as(c_int, 1);
+pub const __LAHF_SAHF__ = @as(c_int, 1);
+pub const __RDRND__ = @as(c_int, 1);
+pub const __FSGSBASE__ = @as(c_int, 1);
+pub const __POPCNT__ = @as(c_int, 1);
+pub const __F16C__ = @as(c_int, 1);
+pub const __FXSR__ = @as(c_int, 1);
+pub const __XSAVE__ = @as(c_int, 1);
+pub const __XSAVEOPT__ = @as(c_int, 1);
+pub const __AVX__ = @as(c_int, 1);
+pub const __SSE4_2__ = @as(c_int, 1);
+pub const __SSE4_1__ = @as(c_int, 1);
+pub const __SSSE3__ = @as(c_int, 1);
+pub const __SSE3__ = @as(c_int, 1);
+pub const __SSE2__ = @as(c_int, 1);
+pub const __SSE2_MATH__ = @as(c_int, 1);
+pub const __SSE__ = @as(c_int, 1);
+pub const __SSE_MATH__ = @as(c_int, 1);
+pub const __MMX__ = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = @as(c_int, 1);
+pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 = @as(c_int, 1);
+pub const __SIZEOF_FLOAT128__ = @as(c_int, 16);
+pub const unix = @as(c_int, 1);
+pub const __unix = @as(c_int, 1);
+pub const __unix__ = @as(c_int, 1);
+pub const linux = @as(c_int, 1);
+pub const __linux = @as(c_int, 1);
+pub const __linux__ = @as(c_int, 1);
+pub const __ELF__ = @as(c_int, 1);
+pub const __gnu_linux__ = @as(c_int, 1);
+pub const __FLOAT128__ = @as(c_int, 1);
+pub const __STDC__ = @as(c_int, 1);
+pub const __STDC_HOSTED__ = @as(c_int, 1);
+pub const __STDC_VERSION__ = @as(c_long, 201710);
+pub const __STDC_UTF_16__ = @as(c_int, 1);
+pub const __STDC_UTF_32__ = @as(c_int, 1);
+pub const __GLIBC_MINOR__ = @as(c_int, 19);
+pub const _DEBUG = @as(c_int, 1);
+pub const RAYGUI_IMPLEMENTATION = @as(c_int, 1);
+pub const __GCC_HAVE_DWARF2_CFI_ASM = @as(c_int, 1);
+pub const RAYGUI_H = "";
+pub const RAYGUI_VERSION = "3.0";
+pub const RAYLIB_H = "";
+pub const __STDARG_H = "";
+pub const _VA_LIST = "";
+pub const __GNUC_VA_LIST = @as(c_int, 1);
+pub const RAYLIB_VERSION = "4.1-dev";
+pub const RLAPI = "";
+pub const PI = @as(f32, 3.14159265358979323846);
+pub const DEG2RAD = PI / @as(f32, 180.0);
+pub const RAD2DEG = @as(f32, 180.0) / PI;
+pub inline fn RL_MALLOC(sz: anytype) @TypeOf(malloc(sz)) {
+ return malloc(sz);
+}
+pub inline fn RL_CALLOC(n: anytype, sz: anytype) @TypeOf(calloc(n, sz)) {
+ return calloc(n, sz);
+}
+pub inline fn RL_REALLOC(ptr: anytype, sz: anytype) @TypeOf(realloc(ptr, sz)) {
+ return realloc(ptr, sz);
+}
+pub inline fn RL_FREE(ptr: anytype) @TypeOf(free(ptr)) {
+ return free(ptr);
+}
+pub inline fn CLITERAL(@"type": anytype) @TypeOf(@"type") {
+ return @"type";
+}
+pub const RL_COLOR_TYPE = "";
+pub const RL_RECTANGLE_TYPE = "";
+pub const RL_VECTOR2_TYPE = "";
+pub const RL_VECTOR3_TYPE = "";
+pub const RL_VECTOR4_TYPE = "";
+pub const RL_QUATERNION_TYPE = "";
+pub const RL_MATRIX_TYPE = "";
+pub const LIGHTGRAY = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 200), @as(c_int, 200), @as(c_int, 200), @as(c_int, 255) });
+pub const GRAY = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 130), @as(c_int, 130), @as(c_int, 130), @as(c_int, 255) });
+pub const DARKGRAY = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 80), @as(c_int, 80), @as(c_int, 80), @as(c_int, 255) });
+pub const YELLOW = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 253), @as(c_int, 249), @as(c_int, 0), @as(c_int, 255) });
+pub const GOLD = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 255), @as(c_int, 203), @as(c_int, 0), @as(c_int, 255) });
+pub const ORANGE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 255), @as(c_int, 161), @as(c_int, 0), @as(c_int, 255) });
+pub const PINK = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 255), @as(c_int, 109), @as(c_int, 194), @as(c_int, 255) });
+pub const RED = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 230), @as(c_int, 41), @as(c_int, 55), @as(c_int, 255) });
+pub const MAROON = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 190), @as(c_int, 33), @as(c_int, 55), @as(c_int, 255) });
+pub const GREEN = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 0), @as(c_int, 228), @as(c_int, 48), @as(c_int, 255) });
+pub const LIME = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 0), @as(c_int, 158), @as(c_int, 47), @as(c_int, 255) });
+pub const DARKGREEN = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 0), @as(c_int, 117), @as(c_int, 44), @as(c_int, 255) });
+pub const SKYBLUE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 102), @as(c_int, 191), @as(c_int, 255), @as(c_int, 255) });
+pub const BLUE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 0), @as(c_int, 121), @as(c_int, 241), @as(c_int, 255) });
+pub const DARKBLUE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 0), @as(c_int, 82), @as(c_int, 172), @as(c_int, 255) });
+pub const PURPLE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 200), @as(c_int, 122), @as(c_int, 255), @as(c_int, 255) });
+pub const VIOLET = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 135), @as(c_int, 60), @as(c_int, 190), @as(c_int, 255) });
+pub const DARKPURPLE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 112), @as(c_int, 31), @as(c_int, 126), @as(c_int, 255) });
+pub const BEIGE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 211), @as(c_int, 176), @as(c_int, 131), @as(c_int, 255) });
+pub const BROWN = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 127), @as(c_int, 106), @as(c_int, 79), @as(c_int, 255) });
+pub const DARKBROWN = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 76), @as(c_int, 63), @as(c_int, 47), @as(c_int, 255) });
+pub const WHITE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 255), @as(c_int, 255), @as(c_int, 255), @as(c_int, 255) });
+pub const BLACK = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 0), @as(c_int, 0), @as(c_int, 0), @as(c_int, 255) });
+pub const BLANK = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 0), @as(c_int, 0), @as(c_int, 0), @as(c_int, 0) });
+pub const MAGENTA = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 255), @as(c_int, 0), @as(c_int, 255), @as(c_int, 255) });
+pub const RAYWHITE = @import("std").mem.zeroInit(CLITERAL(Color), .{ @as(c_int, 245), @as(c_int, 245), @as(c_int, 245), @as(c_int, 255) });
+pub const __STDBOOL_H = "";
+pub const @"bool" = bool;
+pub const @"true" = @as(c_int, 1);
+pub const @"false" = @as(c_int, 0);
+pub const __bool_true_false_are_defined = @as(c_int, 1);
+pub const MOUSE_LEFT_BUTTON = MOUSE_BUTTON_LEFT;
+pub const MOUSE_RIGHT_BUTTON = MOUSE_BUTTON_RIGHT;
+pub const MOUSE_MIDDLE_BUTTON = MOUSE_BUTTON_MIDDLE;
+pub const MATERIAL_MAP_DIFFUSE = MATERIAL_MAP_ALBEDO;
+pub const MATERIAL_MAP_SPECULAR = MATERIAL_MAP_METALNESS;
+pub const SHADER_LOC_MAP_DIFFUSE = SHADER_LOC_MAP_ALBEDO;
+pub const SHADER_LOC_MAP_SPECULAR = SHADER_LOC_MAP_METALNESS;
+pub const RAYGUIAPI = "";
+pub inline fn RAYGUI_MALLOC(sz: anytype) @TypeOf(malloc(sz)) {
+ return malloc(sz);
+}
+pub inline fn RAYGUI_CALLOC(n: anytype, sz: anytype) @TypeOf(calloc(n, sz)) {
+ return calloc(n, sz);
+}
+pub inline fn RAYGUI_FREE(p: anytype) @TypeOf(free(p)) {
+ return free(p);
+}
+pub const _STDIO_H = @as(c_int, 1);
+pub const __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION = "";
+pub const _FEATURES_H = @as(c_int, 1);
+pub const __KERNEL_STRICT_NAMES = "";
+pub inline fn __GNUC_PREREQ(maj: anytype, min: anytype) @TypeOf(((__GNUC__ << @as(c_int, 16)) + __GNUC_MINOR__) >= ((maj << @as(c_int, 16)) + min)) {
+ return ((__GNUC__ << @as(c_int, 16)) + __GNUC_MINOR__) >= ((maj << @as(c_int, 16)) + min);
+}
+pub inline fn __glibc_clang_prereq(maj: anytype, min: anytype) @TypeOf(((__clang_major__ << @as(c_int, 16)) + __clang_minor__) >= ((maj << @as(c_int, 16)) + min)) {
+ return ((__clang_major__ << @as(c_int, 16)) + __clang_minor__) >= ((maj << @as(c_int, 16)) + min);
+}
+pub const _DEFAULT_SOURCE = @as(c_int, 1);
+pub const __GLIBC_USE_ISOC2X = @as(c_int, 0);
+pub const __USE_ISOC11 = @as(c_int, 1);
+pub const __USE_ISOC99 = @as(c_int, 1);
+pub const __USE_ISOC95 = @as(c_int, 1);
+pub const __USE_POSIX_IMPLICITLY = @as(c_int, 1);
+pub const _POSIX_SOURCE = @as(c_int, 1);
+pub const _POSIX_C_SOURCE = @as(c_long, 200809);
+pub const __USE_POSIX = @as(c_int, 1);
+pub const __USE_POSIX2 = @as(c_int, 1);
+pub const __USE_POSIX199309 = @as(c_int, 1);
+pub const __USE_POSIX199506 = @as(c_int, 1);
+pub const __USE_XOPEN2K = @as(c_int, 1);
+pub const __USE_XOPEN2K8 = @as(c_int, 1);
+pub const _ATFILE_SOURCE = @as(c_int, 1);
+pub const __WORDSIZE = @as(c_int, 64);
+pub const __WORDSIZE_TIME64_COMPAT32 = @as(c_int, 1);
+pub const __SYSCALL_WORDSIZE = @as(c_int, 64);
+pub const __TIMESIZE = __WORDSIZE;
+pub const __USE_MISC = @as(c_int, 1);
+pub const __USE_ATFILE = @as(c_int, 1);
+pub const __USE_FORTIFY_LEVEL = @as(c_int, 0);
+pub const __GLIBC_USE_DEPRECATED_GETS = @as(c_int, 0);
+pub const __GLIBC_USE_DEPRECATED_SCANF = @as(c_int, 0);
+pub const _STDC_PREDEF_H = @as(c_int, 1);
+pub const __STDC_IEC_559__ = @as(c_int, 1);
+pub const __STDC_IEC_559_COMPLEX__ = @as(c_int, 1);
+pub const __STDC_ISO_10646__ = @as(c_long, 201706);
+pub const __GNU_LIBRARY__ = @as(c_int, 6);
+pub const __GLIBC__ = @as(c_int, 2);
+pub inline fn __GLIBC_PREREQ(maj: anytype, min: anytype) @TypeOf(((__GLIBC__ << @as(c_int, 16)) + __GLIBC_MINOR__) >= ((maj << @as(c_int, 16)) + min)) {
+ return ((__GLIBC__ << @as(c_int, 16)) + __GLIBC_MINOR__) >= ((maj << @as(c_int, 16)) + min);
+}
+pub const _SYS_CDEFS_H = @as(c_int, 1);
+pub inline fn __glibc_has_builtin(name: anytype) @TypeOf(__has_builtin(name)) {
+ return __has_builtin(name);
+}
+pub const __LEAF = "";
+pub const __LEAF_ATTR = "";
+pub inline fn __P(args: anytype) @TypeOf(args) {
+ return args;
+}
+pub inline fn __PMT(args: anytype) @TypeOf(args) {
+ return args;
+}
+pub const __ptr_t = ?*anyopaque;
+pub const __BEGIN_DECLS = "";
+pub const __END_DECLS = "";
+pub inline fn __bos(ptr: anytype) @TypeOf(__builtin_object_size(ptr, __USE_FORTIFY_LEVEL > @as(c_int, 1))) {
+ return __builtin_object_size(ptr, __USE_FORTIFY_LEVEL > @as(c_int, 1));
+}
+pub inline fn __bos0(ptr: anytype) @TypeOf(__builtin_object_size(ptr, @as(c_int, 0))) {
+ return __builtin_object_size(ptr, @as(c_int, 0));
+}
+pub inline fn __glibc_objsize0(__o: anytype) @TypeOf(__bos0(__o)) {
+ return __bos0(__o);
+}
+pub inline fn __glibc_objsize(__o: anytype) @TypeOf(__bos(__o)) {
+ return __bos(__o);
+}
+pub const __glibc_c99_flexarr_available = @as(c_int, 1);
+pub inline fn __ASMNAME(cname: anytype) @TypeOf(__ASMNAME2(__USER_LABEL_PREFIX__, cname)) {
+ return __ASMNAME2(__USER_LABEL_PREFIX__, cname);
+}
+pub const __wur = "";
+pub const __fortify_function = __extern_always_inline ++ __attribute_artificial__;
+pub inline fn __glibc_unlikely(cond: anytype) @TypeOf(__builtin_expect(cond, @as(c_int, 0))) {
+ return __builtin_expect(cond, @as(c_int, 0));
+}
+pub inline fn __glibc_likely(cond: anytype) @TypeOf(__builtin_expect(cond, @as(c_int, 1))) {
+ return __builtin_expect(cond, @as(c_int, 1));
+}
+pub const __attribute_nonstring__ = "";
+pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI = @as(c_int, 0);
+pub inline fn __LDBL_REDIR1(name: anytype, proto: anytype, alias: anytype) @TypeOf(name ++ proto) {
+ _ = alias;
+ return name ++ proto;
+}
+pub inline fn __LDBL_REDIR(name: anytype, proto: anytype) @TypeOf(name ++ proto) {
+ return name ++ proto;
+}
+pub inline fn __LDBL_REDIR1_NTH(name: anytype, proto: anytype, alias: anytype) @TypeOf(name ++ proto ++ __THROW) {
+ _ = alias;
+ return name ++ proto ++ __THROW;
+}
+pub inline fn __LDBL_REDIR_NTH(name: anytype, proto: anytype) @TypeOf(name ++ proto ++ __THROW) {
+ return name ++ proto ++ __THROW;
+}
+pub inline fn __REDIRECT_LDBL(name: anytype, proto: anytype, alias: anytype) @TypeOf(__REDIRECT(name, proto, alias)) {
+ return __REDIRECT(name, proto, alias);
+}
+pub inline fn __REDIRECT_NTH_LDBL(name: anytype, proto: anytype, alias: anytype) @TypeOf(__REDIRECT_NTH(name, proto, alias)) {
+ return __REDIRECT_NTH(name, proto, alias);
+}
+pub const __HAVE_GENERIC_SELECTION = @as(c_int, 1);
+pub const __attr_dealloc_free = "";
+pub const __USE_EXTERN_INLINES = @as(c_int, 1);
+pub const __stub___compat_bdflush = "";
+pub const __stub_chflags = "";
+pub const __stub_fchflags = "";
+pub const __stub_gtty = "";
+pub const __stub_revoke = "";
+pub const __stub_setlogin = "";
+pub const __stub_sigreturn = "";
+pub const __stub_stty = "";
+pub const __GLIBC_USE_LIB_EXT2 = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_BFP_EXT = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_EXT = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_FUNCS_EXT = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X = @as(c_int, 0);
+pub const __GLIBC_USE_IEC_60559_TYPES_EXT = @as(c_int, 0);
+pub const __need_size_t = "";
+pub const __need_NULL = "";
+pub const _SIZE_T = "";
+pub const NULL = @import("std").zig.c_translation.cast(?*anyopaque, @as(c_int, 0));
+pub const __need___va_list = "";
+pub const _BITS_TYPES_H = @as(c_int, 1);
+pub const __S16_TYPE = c_short;
+pub const __U16_TYPE = c_ushort;
+pub const __S32_TYPE = c_int;
+pub const __U32_TYPE = c_uint;
+pub const __SLONGWORD_TYPE = c_long;
+pub const __ULONGWORD_TYPE = c_ulong;
+pub const __SQUAD_TYPE = c_long;
+pub const __UQUAD_TYPE = c_ulong;
+pub const __SWORD_TYPE = c_long;
+pub const __UWORD_TYPE = c_ulong;
+pub const __SLONG32_TYPE = c_int;
+pub const __ULONG32_TYPE = c_uint;
+pub const __S64_TYPE = c_long;
+pub const __U64_TYPE = c_ulong;
+pub const _BITS_TYPESIZES_H = @as(c_int, 1);
+pub const __SYSCALL_SLONG_TYPE = __SLONGWORD_TYPE;
+pub const __SYSCALL_ULONG_TYPE = __ULONGWORD_TYPE;
+pub const __DEV_T_TYPE = __UQUAD_TYPE;
+pub const __UID_T_TYPE = __U32_TYPE;
+pub const __GID_T_TYPE = __U32_TYPE;
+pub const __INO_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __INO64_T_TYPE = __UQUAD_TYPE;
+pub const __MODE_T_TYPE = __U32_TYPE;
+pub const __NLINK_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __FSWORD_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __OFF_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __OFF64_T_TYPE = __SQUAD_TYPE;
+pub const __PID_T_TYPE = __S32_TYPE;
+pub const __RLIM_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __RLIM64_T_TYPE = __UQUAD_TYPE;
+pub const __BLKCNT_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __BLKCNT64_T_TYPE = __SQUAD_TYPE;
+pub const __FSBLKCNT_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __FSBLKCNT64_T_TYPE = __UQUAD_TYPE;
+pub const __FSFILCNT_T_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __FSFILCNT64_T_TYPE = __UQUAD_TYPE;
+pub const __ID_T_TYPE = __U32_TYPE;
+pub const __CLOCK_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __TIME_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __USECONDS_T_TYPE = __U32_TYPE;
+pub const __SUSECONDS_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __SUSECONDS64_T_TYPE = __SQUAD_TYPE;
+pub const __DADDR_T_TYPE = __S32_TYPE;
+pub const __KEY_T_TYPE = __S32_TYPE;
+pub const __CLOCKID_T_TYPE = __S32_TYPE;
+pub const __TIMER_T_TYPE = ?*anyopaque;
+pub const __BLKSIZE_T_TYPE = __SYSCALL_SLONG_TYPE;
+pub const __SSIZE_T_TYPE = __SWORD_TYPE;
+pub const __CPU_MASK_TYPE = __SYSCALL_ULONG_TYPE;
+pub const __OFF_T_MATCHES_OFF64_T = @as(c_int, 1);
+pub const __INO_T_MATCHES_INO64_T = @as(c_int, 1);
+pub const __RLIM_T_MATCHES_RLIM64_T = @as(c_int, 1);
+pub const __STATFS_MATCHES_STATFS64 = @as(c_int, 1);
+pub const __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 = @as(c_int, 1);
+pub const __FD_SETSIZE = @as(c_int, 1024);
+pub const _BITS_TIME64_H = @as(c_int, 1);
+pub const __TIME64_T_TYPE = __TIME_T_TYPE;
+pub const _____fpos_t_defined = @as(c_int, 1);
+pub const ____mbstate_t_defined = @as(c_int, 1);
+pub const _____fpos64_t_defined = @as(c_int, 1);
+pub const ____FILE_defined = @as(c_int, 1);
+pub const __FILE_defined = @as(c_int, 1);
+pub const __struct_FILE_defined = @as(c_int, 1);
+pub const _IO_EOF_SEEN = @as(c_int, 0x0010);
+pub inline fn __feof_unlocked_body(_fp: anytype) @TypeOf((_fp.*._flags & _IO_EOF_SEEN) != @as(c_int, 0)) {
+ return (_fp.*._flags & _IO_EOF_SEEN) != @as(c_int, 0);
+}
+pub const _IO_ERR_SEEN = @as(c_int, 0x0020);
+pub inline fn __ferror_unlocked_body(_fp: anytype) @TypeOf((_fp.*._flags & _IO_ERR_SEEN) != @as(c_int, 0)) {
+ return (_fp.*._flags & _IO_ERR_SEEN) != @as(c_int, 0);
+}
+pub const _IO_USER_LOCK = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x8000, .hexadecimal);
+pub const _VA_LIST_DEFINED = "";
+pub const __off_t_defined = "";
+pub const __ssize_t_defined = "";
+pub const _IOFBF = @as(c_int, 0);
+pub const _IOLBF = @as(c_int, 1);
+pub const _IONBF = @as(c_int, 2);
+pub const BUFSIZ = @as(c_int, 8192);
+pub const EOF = -@as(c_int, 1);
+pub const SEEK_SET = @as(c_int, 0);
+pub const SEEK_CUR = @as(c_int, 1);
+pub const SEEK_END = @as(c_int, 2);
+pub const P_tmpdir = "/tmp";
+pub const _BITS_STDIO_LIM_H = @as(c_int, 1);
+pub const L_tmpnam = @as(c_int, 20);
+pub const TMP_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 238328, .decimal);
+pub const FILENAME_MAX = @as(c_int, 4096);
+pub const L_ctermid = @as(c_int, 9);
+pub const FOPEN_MAX = @as(c_int, 16);
+pub const __attr_dealloc_fclose = __attr_dealloc(fclose, @as(c_int, 1));
+pub const _BITS_FLOATN_H = "";
+pub const __HAVE_FLOAT128 = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT128 = @as(c_int, 0);
+pub const __HAVE_FLOAT64X = @as(c_int, 1);
+pub const __HAVE_FLOAT64X_LONG_DOUBLE = @as(c_int, 1);
+pub const _BITS_FLOATN_COMMON_H = "";
+pub const __HAVE_FLOAT16 = @as(c_int, 0);
+pub const __HAVE_FLOAT32 = @as(c_int, 1);
+pub const __HAVE_FLOAT64 = @as(c_int, 1);
+pub const __HAVE_FLOAT32X = @as(c_int, 1);
+pub const __HAVE_FLOAT128X = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT16 = __HAVE_FLOAT16;
+pub const __HAVE_DISTINCT_FLOAT32 = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT64 = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT32X = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT64X = @as(c_int, 0);
+pub const __HAVE_DISTINCT_FLOAT128X = __HAVE_FLOAT128X;
+pub const __HAVE_FLOAT128_UNLIKE_LDBL = (__HAVE_DISTINCT_FLOAT128 != 0) and (__LDBL_MANT_DIG__ != @as(c_int, 113));
+pub const __HAVE_FLOATN_NOT_TYPEDEF = @as(c_int, 0);
+pub inline fn __f64(x: anytype) @TypeOf(x) {
+ return x;
+}
+pub inline fn __f32x(x: anytype) @TypeOf(x) {
+ return x;
+}
+pub inline fn __builtin_huge_valf32() @TypeOf(__builtin_huge_valf()) {
+ return __builtin_huge_valf();
+}
+pub inline fn __builtin_inff32() @TypeOf(__builtin_inff()) {
+ return __builtin_inff();
+}
+pub inline fn __builtin_nanf32(x: anytype) @TypeOf(__builtin_nanf(x)) {
+ return __builtin_nanf(x);
+}
+pub const _BITS_STDIO_H = @as(c_int, 1);
+pub const __STDIO_INLINE = __extern_inline;
+pub const __need_wchar_t = "";
+pub const _WCHAR_T = "";
+pub const _STDLIB_H = @as(c_int, 1);
+pub const WNOHANG = @as(c_int, 1);
+pub const WUNTRACED = @as(c_int, 2);
+pub const WSTOPPED = @as(c_int, 2);
+pub const WEXITED = @as(c_int, 4);
+pub const WCONTINUED = @as(c_int, 8);
+pub const WNOWAIT = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x01000000, .hexadecimal);
+pub const __WNOTHREAD = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x20000000, .hexadecimal);
+pub const __WALL = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x40000000, .hexadecimal);
+pub const __WCLONE = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x80000000, .hexadecimal);
+pub inline fn __WEXITSTATUS(status: anytype) @TypeOf((status & @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xff00, .hexadecimal)) >> @as(c_int, 8)) {
+ return (status & @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xff00, .hexadecimal)) >> @as(c_int, 8);
+}
+pub inline fn __WTERMSIG(status: anytype) @TypeOf(status & @as(c_int, 0x7f)) {
+ return status & @as(c_int, 0x7f);
+}
+pub inline fn __WSTOPSIG(status: anytype) @TypeOf(__WEXITSTATUS(status)) {
+ return __WEXITSTATUS(status);
+}
+pub inline fn __WIFEXITED(status: anytype) @TypeOf(__WTERMSIG(status) == @as(c_int, 0)) {
+ return __WTERMSIG(status) == @as(c_int, 0);
+}
+pub inline fn __WIFSIGNALED(status: anytype) @TypeOf((@import("std").zig.c_translation.cast(i8, (status & @as(c_int, 0x7f)) + @as(c_int, 1)) >> @as(c_int, 1)) > @as(c_int, 0)) {
+ return (@import("std").zig.c_translation.cast(i8, (status & @as(c_int, 0x7f)) + @as(c_int, 1)) >> @as(c_int, 1)) > @as(c_int, 0);
+}
+pub inline fn __WIFSTOPPED(status: anytype) @TypeOf((status & @as(c_int, 0xff)) == @as(c_int, 0x7f)) {
+ return (status & @as(c_int, 0xff)) == @as(c_int, 0x7f);
+}
+pub inline fn __WIFCONTINUED(status: anytype) @TypeOf(status == __W_CONTINUED) {
+ return status == __W_CONTINUED;
+}
+pub inline fn __WCOREDUMP(status: anytype) @TypeOf(status & __WCOREFLAG) {
+ return status & __WCOREFLAG;
+}
+pub inline fn __W_EXITCODE(ret: anytype, sig: anytype) @TypeOf((ret << @as(c_int, 8)) | sig) {
+ return (ret << @as(c_int, 8)) | sig;
+}
+pub inline fn __W_STOPCODE(sig: anytype) @TypeOf((sig << @as(c_int, 8)) | @as(c_int, 0x7f)) {
+ return (sig << @as(c_int, 8)) | @as(c_int, 0x7f);
+}
+pub const __W_CONTINUED = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xffff, .hexadecimal);
+pub const __WCOREFLAG = @as(c_int, 0x80);
+pub inline fn WEXITSTATUS(status: anytype) @TypeOf(__WEXITSTATUS(status)) {
+ return __WEXITSTATUS(status);
+}
+pub inline fn WTERMSIG(status: anytype) @TypeOf(__WTERMSIG(status)) {
+ return __WTERMSIG(status);
+}
+pub inline fn WSTOPSIG(status: anytype) @TypeOf(__WSTOPSIG(status)) {
+ return __WSTOPSIG(status);
+}
+pub inline fn WIFEXITED(status: anytype) @TypeOf(__WIFEXITED(status)) {
+ return __WIFEXITED(status);
+}
+pub inline fn WIFSIGNALED(status: anytype) @TypeOf(__WIFSIGNALED(status)) {
+ return __WIFSIGNALED(status);
+}
+pub inline fn WIFSTOPPED(status: anytype) @TypeOf(__WIFSTOPPED(status)) {
+ return __WIFSTOPPED(status);
+}
+pub inline fn WIFCONTINUED(status: anytype) @TypeOf(__WIFCONTINUED(status)) {
+ return __WIFCONTINUED(status);
+}
+pub const __ldiv_t_defined = @as(c_int, 1);
+pub const __lldiv_t_defined = @as(c_int, 1);
+pub const RAND_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal);
+pub const EXIT_FAILURE = @as(c_int, 1);
+pub const EXIT_SUCCESS = @as(c_int, 0);
+pub const MB_CUR_MAX = __ctype_get_mb_cur_max();
+pub const _SYS_TYPES_H = @as(c_int, 1);
+pub const __u_char_defined = "";
+pub const __ino_t_defined = "";
+pub const __dev_t_defined = "";
+pub const __gid_t_defined = "";
+pub const __mode_t_defined = "";
+pub const __nlink_t_defined = "";
+pub const __uid_t_defined = "";
+pub const __pid_t_defined = "";
+pub const __id_t_defined = "";
+pub const __daddr_t_defined = "";
+pub const __key_t_defined = "";
+pub const __clock_t_defined = @as(c_int, 1);
+pub const __clockid_t_defined = @as(c_int, 1);
+pub const __time_t_defined = @as(c_int, 1);
+pub const __timer_t_defined = @as(c_int, 1);
+pub const _BITS_STDINT_INTN_H = @as(c_int, 1);
+pub const __BIT_TYPES_DEFINED__ = @as(c_int, 1);
+pub const _ENDIAN_H = @as(c_int, 1);
+pub const _BITS_ENDIAN_H = @as(c_int, 1);
+pub const __LITTLE_ENDIAN = @as(c_int, 1234);
+pub const __BIG_ENDIAN = @as(c_int, 4321);
+pub const __PDP_ENDIAN = @as(c_int, 3412);
+pub const _BITS_ENDIANNESS_H = @as(c_int, 1);
+pub const __BYTE_ORDER = __LITTLE_ENDIAN;
+pub const __FLOAT_WORD_ORDER = __BYTE_ORDER;
+pub inline fn __LONG_LONG_PAIR(HI: anytype, LO: anytype) @TypeOf(HI) {
+ return blk: {
+ _ = LO;
+ break :blk HI;
+ };
+}
+pub const LITTLE_ENDIAN = __LITTLE_ENDIAN;
+pub const BIG_ENDIAN = __BIG_ENDIAN;
+pub const PDP_ENDIAN = __PDP_ENDIAN;
+pub const BYTE_ORDER = __BYTE_ORDER;
+pub const _BITS_BYTESWAP_H = @as(c_int, 1);
+pub inline fn __bswap_constant_16(x: anytype) __uint16_t {
+ return @import("std").zig.c_translation.cast(__uint16_t, ((x >> @as(c_int, 8)) & @as(c_int, 0xff)) | ((x & @as(c_int, 0xff)) << @as(c_int, 8)));
+}
+pub inline fn __bswap_constant_32(x: anytype) @TypeOf(((((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0xff000000, .hexadecimal)) >> @as(c_int, 24)) | ((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0x00ff0000, .hexadecimal)) >> @as(c_int, 8))) | ((x & @as(c_uint, 0x0000ff00)) << @as(c_int, 8))) | ((x & @as(c_uint, 0x000000ff)) << @as(c_int, 24))) {
+ return ((((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0xff000000, .hexadecimal)) >> @as(c_int, 24)) | ((x & @import("std").zig.c_translation.promoteIntLiteral(c_uint, 0x00ff0000, .hexadecimal)) >> @as(c_int, 8))) | ((x & @as(c_uint, 0x0000ff00)) << @as(c_int, 8))) | ((x & @as(c_uint, 0x000000ff)) << @as(c_int, 24));
+}
+pub inline fn __bswap_constant_64(x: anytype) @TypeOf(((((((((x & @as(c_ulonglong, 0xff00000000000000)) >> @as(c_int, 56)) | ((x & @as(c_ulonglong, 0x00ff000000000000)) >> @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x0000ff0000000000)) >> @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000ff00000000)) >> @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x00000000ff000000)) << @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x0000000000ff0000)) << @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000000000ff00)) << @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x00000000000000ff)) << @as(c_int, 56))) {
+ return ((((((((x & @as(c_ulonglong, 0xff00000000000000)) >> @as(c_int, 56)) | ((x & @as(c_ulonglong, 0x00ff000000000000)) >> @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x0000ff0000000000)) >> @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000ff00000000)) >> @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x00000000ff000000)) << @as(c_int, 8))) | ((x & @as(c_ulonglong, 0x0000000000ff0000)) << @as(c_int, 24))) | ((x & @as(c_ulonglong, 0x000000000000ff00)) << @as(c_int, 40))) | ((x & @as(c_ulonglong, 0x00000000000000ff)) << @as(c_int, 56));
+}
+pub const _BITS_UINTN_IDENTITY_H = @as(c_int, 1);
+pub inline fn htobe16(x: anytype) @TypeOf(__bswap_16(x)) {
+ return __bswap_16(x);
+}
+pub inline fn htole16(x: anytype) @TypeOf(__uint16_identity(x)) {
+ return __uint16_identity(x);
+}
+pub inline fn be16toh(x: anytype) @TypeOf(__bswap_16(x)) {
+ return __bswap_16(x);
+}
+pub inline fn le16toh(x: anytype) @TypeOf(__uint16_identity(x)) {
+ return __uint16_identity(x);
+}
+pub inline fn htobe32(x: anytype) @TypeOf(__bswap_32(x)) {
+ return __bswap_32(x);
+}
+pub inline fn htole32(x: anytype) @TypeOf(__uint32_identity(x)) {
+ return __uint32_identity(x);
+}
+pub inline fn be32toh(x: anytype) @TypeOf(__bswap_32(x)) {
+ return __bswap_32(x);
+}
+pub inline fn le32toh(x: anytype) @TypeOf(__uint32_identity(x)) {
+ return __uint32_identity(x);
+}
+pub inline fn htobe64(x: anytype) @TypeOf(__bswap_64(x)) {
+ return __bswap_64(x);
+}
+pub inline fn htole64(x: anytype) @TypeOf(__uint64_identity(x)) {
+ return __uint64_identity(x);
+}
+pub inline fn be64toh(x: anytype) @TypeOf(__bswap_64(x)) {
+ return __bswap_64(x);
+}
+pub inline fn le64toh(x: anytype) @TypeOf(__uint64_identity(x)) {
+ return __uint64_identity(x);
+}
+pub const _SYS_SELECT_H = @as(c_int, 1);
+pub inline fn __FD_ISSET(d: anytype, s: anytype) @TypeOf((__FDS_BITS(s)[__FD_ELT(d)] & __FD_MASK(d)) != @as(c_int, 0)) {
+ return (__FDS_BITS(s)[__FD_ELT(d)] & __FD_MASK(d)) != @as(c_int, 0);
+}
+pub const __sigset_t_defined = @as(c_int, 1);
+pub const ____sigset_t_defined = "";
+pub const _SIGSET_NWORDS = @as(c_int, 1024) / (@as(c_int, 8) * @import("std").zig.c_translation.sizeof(c_ulong));
+pub const __timeval_defined = @as(c_int, 1);
+pub const _STRUCT_TIMESPEC = @as(c_int, 1);
+pub const __suseconds_t_defined = "";
+pub const __NFDBITS = @as(c_int, 8) * @import("std").zig.c_translation.cast(c_int, @import("std").zig.c_translation.sizeof(__fd_mask));
+pub inline fn __FD_ELT(d: anytype) @TypeOf(d / __NFDBITS) {
+ return d / __NFDBITS;
+}
+pub inline fn __FD_MASK(d: anytype) __fd_mask {
+ return @import("std").zig.c_translation.cast(__fd_mask, @as(c_ulong, 1) << (d % __NFDBITS));
+}
+pub inline fn __FDS_BITS(set: anytype) @TypeOf(set.*.__fds_bits) {
+ return set.*.__fds_bits;
+}
+pub const FD_SETSIZE = __FD_SETSIZE;
+pub const NFDBITS = __NFDBITS;
+pub inline fn FD_SET(fd: anytype, fdsetp: anytype) @TypeOf(__FD_SET(fd, fdsetp)) {
+ return __FD_SET(fd, fdsetp);
+}
+pub inline fn FD_CLR(fd: anytype, fdsetp: anytype) @TypeOf(__FD_CLR(fd, fdsetp)) {
+ return __FD_CLR(fd, fdsetp);
+}
+pub inline fn FD_ISSET(fd: anytype, fdsetp: anytype) @TypeOf(__FD_ISSET(fd, fdsetp)) {
+ return __FD_ISSET(fd, fdsetp);
+}
+pub inline fn FD_ZERO(fdsetp: anytype) @TypeOf(__FD_ZERO(fdsetp)) {
+ return __FD_ZERO(fdsetp);
+}
+pub const __blksize_t_defined = "";
+pub const __blkcnt_t_defined = "";
+pub const __fsblkcnt_t_defined = "";
+pub const __fsfilcnt_t_defined = "";
+pub const _BITS_PTHREADTYPES_COMMON_H = @as(c_int, 1);
+pub const _THREAD_SHARED_TYPES_H = @as(c_int, 1);
+pub const _BITS_PTHREADTYPES_ARCH_H = @as(c_int, 1);
+pub const __SIZEOF_PTHREAD_MUTEX_T = @as(c_int, 40);
+pub const __SIZEOF_PTHREAD_ATTR_T = @as(c_int, 56);
+pub const __SIZEOF_PTHREAD_RWLOCK_T = @as(c_int, 56);
+pub const __SIZEOF_PTHREAD_BARRIER_T = @as(c_int, 32);
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T = @as(c_int, 4);
+pub const __SIZEOF_PTHREAD_COND_T = @as(c_int, 48);
+pub const __SIZEOF_PTHREAD_CONDATTR_T = @as(c_int, 4);
+pub const __SIZEOF_PTHREAD_RWLOCKATTR_T = @as(c_int, 8);
+pub const __SIZEOF_PTHREAD_BARRIERATTR_T = @as(c_int, 4);
+pub const __LOCK_ALIGNMENT = "";
+pub const __ONCE_ALIGNMENT = "";
+pub const _THREAD_MUTEX_INTERNAL_H = @as(c_int, 1);
+pub const __PTHREAD_MUTEX_HAVE_PREV = @as(c_int, 1);
+pub const _RWLOCK_INTERNAL_H = "";
+pub inline fn __PTHREAD_RWLOCK_INITIALIZER(__flags: anytype) @TypeOf(__flags) {
+ return blk: {
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = @as(c_int, 0);
+ _ = __PTHREAD_RWLOCK_ELISION_EXTRA;
+ _ = @as(c_int, 0);
+ break :blk __flags;
+ };
+}
+pub const __have_pthread_attr_t = @as(c_int, 1);
+pub const _ALLOCA_H = @as(c_int, 1);
+pub const __COMPAR_FN_T = "";
+pub const _STRING_H = @as(c_int, 1);
+pub const _BITS_TYPES_LOCALE_T_H = @as(c_int, 1);
+pub const _BITS_TYPES___LOCALE_T_H = @as(c_int, 1);
+pub const _STRINGS_H = @as(c_int, 1);
+pub const _MATH_H = @as(c_int, 1);
+pub const _BITS_LIBM_SIMD_DECL_STUBS_H = @as(c_int, 1);
+pub const __DECL_SIMD_cos = "";
+pub const __DECL_SIMD_cosf = "";
+pub const __DECL_SIMD_cosl = "";
+pub const __DECL_SIMD_cosf16 = "";
+pub const __DECL_SIMD_cosf32 = "";
+pub const __DECL_SIMD_cosf64 = "";
+pub const __DECL_SIMD_cosf128 = "";
+pub const __DECL_SIMD_cosf32x = "";
+pub const __DECL_SIMD_cosf64x = "";
+pub const __DECL_SIMD_cosf128x = "";
+pub const __DECL_SIMD_sin = "";
+pub const __DECL_SIMD_sinf = "";
+pub const __DECL_SIMD_sinl = "";
+pub const __DECL_SIMD_sinf16 = "";
+pub const __DECL_SIMD_sinf32 = "";
+pub const __DECL_SIMD_sinf64 = "";
+pub const __DECL_SIMD_sinf128 = "";
+pub const __DECL_SIMD_sinf32x = "";
+pub const __DECL_SIMD_sinf64x = "";
+pub const __DECL_SIMD_sinf128x = "";
+pub const __DECL_SIMD_sincos = "";
+pub const __DECL_SIMD_sincosf = "";
+pub const __DECL_SIMD_sincosl = "";
+pub const __DECL_SIMD_sincosf16 = "";
+pub const __DECL_SIMD_sincosf32 = "";
+pub const __DECL_SIMD_sincosf64 = "";
+pub const __DECL_SIMD_sincosf128 = "";
+pub const __DECL_SIMD_sincosf32x = "";
+pub const __DECL_SIMD_sincosf64x = "";
+pub const __DECL_SIMD_sincosf128x = "";
+pub const __DECL_SIMD_log = "";
+pub const __DECL_SIMD_logf = "";
+pub const __DECL_SIMD_logl = "";
+pub const __DECL_SIMD_logf16 = "";
+pub const __DECL_SIMD_logf32 = "";
+pub const __DECL_SIMD_logf64 = "";
+pub const __DECL_SIMD_logf128 = "";
+pub const __DECL_SIMD_logf32x = "";
+pub const __DECL_SIMD_logf64x = "";
+pub const __DECL_SIMD_logf128x = "";
+pub const __DECL_SIMD_exp = "";
+pub const __DECL_SIMD_expf = "";
+pub const __DECL_SIMD_expl = "";
+pub const __DECL_SIMD_expf16 = "";
+pub const __DECL_SIMD_expf32 = "";
+pub const __DECL_SIMD_expf64 = "";
+pub const __DECL_SIMD_expf128 = "";
+pub const __DECL_SIMD_expf32x = "";
+pub const __DECL_SIMD_expf64x = "";
+pub const __DECL_SIMD_expf128x = "";
+pub const __DECL_SIMD_pow = "";
+pub const __DECL_SIMD_powf = "";
+pub const __DECL_SIMD_powl = "";
+pub const __DECL_SIMD_powf16 = "";
+pub const __DECL_SIMD_powf32 = "";
+pub const __DECL_SIMD_powf64 = "";
+pub const __DECL_SIMD_powf128 = "";
+pub const __DECL_SIMD_powf32x = "";
+pub const __DECL_SIMD_powf64x = "";
+pub const __DECL_SIMD_powf128x = "";
+pub const HUGE_VALF = __builtin_huge_valf();
+pub const INFINITY = __builtin_inff();
+pub const NAN = __builtin_nanf("");
+pub const __GLIBC_FLT_EVAL_METHOD = __FLT_EVAL_METHOD__;
+pub const __FP_LOGB0_IS_MIN = @as(c_int, 1);
+pub const __FP_LOGBNAN_IS_MIN = @as(c_int, 1);
+pub const FP_ILOGB0 = -@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal) - @as(c_int, 1);
+pub const FP_ILOGBNAN = -@import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal) - @as(c_int, 1);
+pub inline fn __MATHCALL(function: anytype, suffix: anytype, args: anytype) @TypeOf(__MATHDECL(_Mdouble_, function, suffix, args)) {
+ return __MATHDECL(_Mdouble_, function, suffix, args);
+}
+pub inline fn __MATHCALLX(function: anytype, suffix: anytype, args: anytype, attrib: anytype) @TypeOf(__MATHDECLX(_Mdouble_, function, suffix, args, attrib)) {
+ return __MATHDECLX(_Mdouble_, function, suffix, args, attrib);
+}
+pub inline fn __MATHDECL_1(@"type": anytype, function: anytype, suffix: anytype, args: anytype) @TypeOf(__MATHDECL_1_IMPL(@"type", function, suffix, args)) {
+ return __MATHDECL_1_IMPL(@"type", function, suffix, args);
+}
+pub inline fn __MATHDECL_ALIAS(@"type": anytype, function: anytype, suffix: anytype, args: anytype, alias: anytype) @TypeOf(__MATHDECL_1(@"type", function, suffix, args)) {
+ _ = alias;
+ return __MATHDECL_1(@"type", function, suffix, args);
+}
+pub const _Mdouble_ = f64;
+pub inline fn __MATH_PRECNAME(name: anytype, r: anytype) @TypeOf(__CONCAT(name, r)) {
+ return __CONCAT(name, r);
+}
+pub const __MATH_DECLARING_DOUBLE = @as(c_int, 1);
+pub const __MATH_DECLARING_FLOATN = @as(c_int, 0);
+pub const __MATH_DECLARE_LDOUBLE = @as(c_int, 1);
+pub inline fn __MATHCALL_NARROW(func: anytype, redir: anytype, nargs: anytype) @TypeOf(__MATHCALL_NARROW_NORMAL(func, nargs)) {
+ _ = redir;
+ return __MATHCALL_NARROW_NORMAL(func, nargs);
+}
+pub inline fn signbit(x: anytype) @TypeOf(__builtin_signbit(x)) {
+ return __builtin_signbit(x);
+}
+pub const MATH_ERRNO = @as(c_int, 1);
+pub const MATH_ERREXCEPT = @as(c_int, 2);
+pub const math_errhandling = MATH_ERRNO | MATH_ERREXCEPT;
+pub const M_E = 2.7182818284590452354;
+pub const M_LOG2E = 1.4426950408889634074;
+pub const M_LOG10E = 0.43429448190325182765;
+pub const M_LN2 = 0.69314718055994530942;
+pub const M_LN10 = 2.30258509299404568402;
+pub const M_PI = 3.14159265358979323846;
+pub const M_PI_2 = 1.57079632679489661923;
+pub const M_PI_4 = 0.78539816339744830962;
+pub const M_1_PI = 0.31830988618379067154;
+pub const M_2_PI = 0.63661977236758134308;
+pub const M_2_SQRTPI = 1.12837916709551257390;
+pub const M_SQRT2 = 1.41421356237309504880;
+pub const M_SQRT1_2 = 0.70710678118654752440;
+pub inline fn RAYGUI_CLITERAL(name: anytype) @TypeOf(name) {
+ return name;
+}
+pub const RICON_SIZE = @as(c_int, 16);
+pub const RICON_MAX_ICONS = @as(c_int, 256);
+pub const RICON_MAX_NAME_LENGTH = @as(c_int, 32);
+pub const RICON_DATA_ELEMENTS = (RICON_SIZE * RICON_SIZE) / @as(c_int, 32);
+pub const RAYGUI_MAX_CONTROLS = @as(c_int, 16);
+pub const RAYGUI_MAX_PROPS_BASE = @as(c_int, 16);
+pub const RAYGUI_MAX_PROPS_EXTENDED = @as(c_int, 8);
+pub const WINDOW_STATUSBAR_HEIGHT = @as(c_int, 22);
+pub const GROUPBOX_LINE_THICK = @as(c_int, 1);
+pub const GROUPBOX_TEXT_PADDING = @as(c_int, 10);
+pub const LINE_TEXT_PADDING = @as(c_int, 10);
+pub const PANEL_BORDER_WIDTH = @as(c_int, 1);
+pub const TOGGLEGROUP_MAX_ELEMENTS = @as(c_int, 32);
+pub const VALUEBOX_MAX_CHARS = @as(c_int, 32);
+pub const COLORBARALPHA_CHECKED_SIZE = @as(c_int, 10);
+pub const MESSAGEBOX_BUTTON_HEIGHT = @as(c_int, 24);
+pub const MESSAGEBOX_BUTTON_PADDING = @as(c_int, 10);
+pub const TEXTINPUTBOX_BUTTON_HEIGHT = @as(c_int, 24);
+pub const TEXTINPUTBOX_BUTTON_PADDING = @as(c_int, 10);
+pub const TEXTINPUTBOX_HEIGHT = @as(c_int, 30);
+pub const TEXTINPUTBOX_MAX_TEXT_LENGTH = @as(c_int, 256);
+pub const GRID_COLOR_ALPHA = @as(f32, 0.15);
+pub inline fn BIT_CHECK(a: anytype, b: anytype) @TypeOf(a & (@as(c_int, 1) << b)) {
+ return a & (@as(c_int, 1) << b);
+}
+pub inline fn TEXT_VALIGN_PIXEL_OFFSET(h: anytype) @TypeOf(@import("std").zig.c_translation.cast(c_int, h) % @as(c_int, 2)) {
+ return @import("std").zig.c_translation.cast(c_int, h) % @as(c_int, 2);
+}
+pub const RICON_TEXT_PADDING = @as(c_int, 4);
+pub const TEXTSPLIT_MAX_TEXT_LENGTH = @as(c_int, 1024);
+pub const TEXTSPLIT_MAX_TEXT_ELEMENTS = @as(c_int, 128);
+pub const __va_list_tag = struct___va_list_tag;
+pub const _IO_marker = struct__IO_marker;
+pub const _IO_codecvt = struct__IO_codecvt;
+pub const _IO_wide_data = struct__IO_wide_data;
+pub const _IO_FILE = struct__IO_FILE;
+pub const _G_fpos_t = struct__G_fpos_t;
+pub const _G_fpos64_t = struct__G_fpos64_t;
+pub const timeval = struct_timeval;
+pub const timespec = struct_timespec;
+pub const __pthread_internal_list = struct___pthread_internal_list;
+pub const __pthread_internal_slist = struct___pthread_internal_slist;
+pub const __pthread_mutex_s = struct___pthread_mutex_s;
+pub const __pthread_rwlock_arch_t = struct___pthread_rwlock_arch_t;
+pub const __pthread_cond_s = struct___pthread_cond_s;
+pub const random_data = struct_random_data;
+pub const drand48_data = struct_drand48_data;
+pub const __locale_data = struct___locale_data;
+pub const __locale_struct = struct___locale_struct;