From a8ec1e2be20b0ce5ef0b77c5450b768e6f9d8665 Mon Sep 17 00:00:00 2001 From: xolatile Date: Fri, 29 Mar 2024 18:16:22 -0400 Subject: [PATCH] Initial code past the experimental state of development... --- .gitignore | 3 + compile.sh | 9 + install.sh | 7 + raylib.ads | 4231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ xhampion.adb | 99 ++ 5 files changed, 4349 insertions(+) create mode 100644 .gitignore create mode 100644 compile.sh create mode 100644 install.sh create mode 100644 raylib.ads create mode 100644 xhampion.adb diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c7652f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +*.ali +xhampion diff --git a/compile.sh b/compile.sh new file mode 100644 index 0000000..ce41c97 --- /dev/null +++ b/compile.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -xe + +gnatmake -c xhampion.adb +gnatbind xhampion.ali +gnatlink xhampion.ali -lraylib + +exit diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..004296a --- /dev/null +++ b/install.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -xe + +cp xhampion /usr/bin/xhampion + +exit diff --git a/raylib.ads b/raylib.ads new file mode 100644 index 0000000..31b3ae0 --- /dev/null +++ b/raylib.ads @@ -0,0 +1,4231 @@ +------------------------------------------------------------------------ + +with System; + +package Raylib is + +------------------------------------------------------------------------ + + type Logical is new Boolean; + -- + for Logical'Size use 32; + + type Config_Flags is ( + Flag_None, + Flag_Fullscreen_Mode, + Flag_Window_Resizable, + Flag_Window_Undecorated, + Flag_Window_Transparent, + Flag_MSAA_x4_Hint, + Flag_VSync_Hint, + Flag_Window_Hidden, + Flag_Window_Always_Run, + Flag_Window_Minimized, + Flag_Window_Maximized, + Flag_Window_Unfocused, + Flag_Window_Topmost, + Flag_Window_High_DPI, + Flag_Window_Mouse_Passthrough, + Flag_Borderless_Windowed_Mode, + Flag_Interlaced_Hint + ) with Convention => C; + + for Config_Flags use ( + Flag_None => 16#00000000#, + Flag_Fullscreen_Mode => 16#00000002#, + Flag_Window_Resizable => 16#00000004#, + Flag_Window_Undecorated => 16#00000008#, + Flag_Window_Transparent => 16#00000010#, + Flag_MSAA_x4_Hint => 16#00000020#, + Flag_VSync_Hint => 16#00000040#, + Flag_Window_Hidden => 16#00000080#, + Flag_Window_Always_Run => 16#00000100#, + Flag_Window_Minimized => 16#00000200#, + Flag_Window_Maximized => 16#00000400#, + Flag_Window_Unfocused => 16#00000800#, + Flag_Window_Topmost => 16#00001000#, + Flag_Window_High_DPI => 16#00002000#, + Flag_Window_Mouse_Passthrough => 16#00004000#, + Flag_Borderless_Windowed_Mode => 16#00008000#, + Flag_Interlaced_Hint => 16#00010000# + ); + + type Trace_Log_Level is ( + Log_All, + Log_Trace, + Log_Debug, + Log_Info, + Log_Warning, + Log_Error, + Log_Fatal, + Log_None + ) with Convention => C; + + type Keyboard_Key is ( + Key_Null, + Key_Space, + Key_Apostrophe, + Key_Comma, + Key_Minus, + Key_Period, + Key_Slash, + Key_0, + Key_1, + Key_2, + Key_3, + Key_4, + Key_5, + Key_6, + Key_7, + Key_8, + Key_9, + Key_Semicolon, + Key_Equal, + Key_A, + Key_B, + Key_C, + Key_D, + Key_E, + Key_F, + Key_G, + Key_H, + Key_I, + Key_J, + Key_K, + Key_L, + Key_M, + Key_N, + Key_O, + Key_P, + Key_Q, + Key_R, + Key_S, + Key_T, + Key_U, + Key_V, + Key_W, + Key_X, + Key_Y, + Key_Z, + Key_Left_Bracket, + Key_Backslash, + Key_Right_Bracket, + Key_Grave, + Key_Escape, + Key_Enter, + Key_Tab, + Key_Backspace, + Key_Insert, + Key_Delete, + Key_Right, + Key_Left, + Key_Down, + Key_Up, + Key_Page_Up, + Key_Page_Down, + Key_Home, + Key_End, + Key_Caps_Lock, + Key_Scroll_Lock, + Key_Num_Lock, + Key_Print_Screen, + Key_Pause, + Key_F1, + Key_F2, + Key_F3, + Key_F4, + Key_F5, + Key_F6, + Key_F7, + Key_F8, + Key_F9, + Key_F10, + Key_F11, + Key_F12, + Key_Pad_0, + Key_Pad_1, + Key_Pad_2, + Key_Pad_3, + Key_Pad_4, + Key_Pad_5, + Key_Pad_6, + Key_Pad_7, + Key_Pad_8, + Key_Pad_9, + Key_Pad_Decimal, + Key_Pad_Divide, + Key_Pad_Multiply, + Key_Pad_Subtract, + Key_Pad_Add, + Key_Pad_Enter, + Key_Pad_Equal, + Key_Left_Shift, + Key_Left_Control, + Key_Left_Alt, + Key_Left_Super, + Key_Right_Shift, + Key_Right_Control, + Key_Right_Alt, + Key_Right_Super, + Key_KB_Menu + ) with Convention => C; + + for Keyboard_Key use ( + Key_Null => 0, + Key_Space => 32, + Key_Apostrophe => 39, + Key_Comma => 44, + Key_Minus => 45, + Key_Period => 46, + Key_Slash => 47, + Key_0 => 48, + Key_1 => 49, + Key_2 => 50, + Key_3 => 51, + Key_4 => 52, + Key_5 => 53, + Key_6 => 54, + Key_7 => 55, + Key_8 => 56, + Key_9 => 57, + Key_Semicolon => 59, + Key_Equal => 61, + Key_A => 65, + Key_B => 66, + Key_C => 67, + Key_D => 68, + Key_E => 69, + Key_F => 70, + Key_G => 71, + Key_H => 72, + Key_I => 73, + Key_J => 74, + Key_K => 75, + Key_L => 76, + Key_M => 77, + Key_N => 78, + Key_O => 79, + Key_P => 80, + Key_Q => 81, + Key_R => 82, + Key_S => 83, + Key_T => 84, + Key_U => 85, + Key_V => 86, + Key_W => 87, + Key_X => 88, + Key_Y => 89, + Key_Z => 90, + Key_Left_Bracket => 91, + Key_Backslash => 92, + Key_Right_Bracket => 93, + Key_Grave => 96, + Key_Escape => 256, + Key_Enter => 257, + Key_Tab => 258, + Key_Backspace => 259, + Key_Insert => 260, + Key_Delete => 261, + Key_Right => 262, + Key_Left => 263, + Key_Down => 264, + Key_Up => 265, + Key_Page_Up => 266, + Key_Page_Down => 267, + Key_Home => 268, + Key_End => 269, + Key_Caps_Lock => 280, + Key_Scroll_Lock => 281, + Key_Num_Lock => 282, + Key_Print_Screen => 283, + Key_Pause => 284, + Key_F1 => 290, + Key_F2 => 291, + Key_F3 => 292, + Key_F4 => 293, + Key_F5 => 294, + Key_F6 => 295, + Key_F7 => 296, + Key_F8 => 297, + Key_F9 => 298, + Key_F10 => 299, + Key_F11 => 300, + Key_F12 => 301, + Key_Pad_0 => 320, + Key_Pad_1 => 321, + Key_Pad_2 => 322, + Key_Pad_3 => 323, + Key_Pad_4 => 324, + Key_Pad_5 => 325, + Key_Pad_6 => 326, + Key_Pad_7 => 327, + Key_Pad_8 => 328, + Key_Pad_9 => 329, + Key_Pad_Decimal => 330, + Key_Pad_Divide => 331, + Key_Pad_Multiply => 332, + Key_Pad_Subtract => 333, + Key_Pad_Add => 334, + Key_Pad_Enter => 335, + Key_Pad_Equal => 336, + Key_Left_Shift => 340, + Key_Left_Control => 341, + Key_Left_Alt => 342, + Key_Left_Super => 343, + Key_Right_Shift => 344, + Key_Right_Control => 345, + Key_Right_Alt => 346, + Key_Right_Super => 347, + Key_KB_Menu => 348 + ); + + type Mouse_Button is ( + Mouse_Button_Left, + Mouse_Button_Right, + Mouse_Button_Middle, + Mouse_Button_Side, + Mouse_Button_Extra, + Mouse_Button_Forward, + Mouse_Button_Back + ) with Convention => C; + + type Mouse_Cursor is ( + Mouse_Cursor_Default, + Mouse_Cursor_Arrow, + Mouse_Cursor_Ibeam, + Mouse_Cursor_Crosshair, + Mouse_Cursor_Pointing_Hand, + Mouse_Cursor_Resize_EW, + Mouse_Cursor_Resize_NS, + Mouse_Cursor_Resize_NWSE, + Mouse_Cursor_Resize_NESW, + Mouse_Cursor_Resize_All, + Mouse_Cursor_Not_Allowed + ) with Convention => C; + + type Gamepad_Button is ( + Gamepad_Button_Unknown, + Gamepad_Button_Left_Face_Up, + Gamepad_Button_Left_Face_Right, + Gamepad_Button_Left_Face_Down, + Gamepad_Button_Left_Face_Left, + Gamepad_Button_Right_Face_Up, + Gamepad_Button_Right_Face_Right, + Gamepad_Button_Right_Face_Down, + Gamepad_Button_Right_Face_Left, + Gamepad_Button_Left_Trigger_1, + Gamepad_Button_Left_Trigger_2, + Gamepad_Button_Right_Trigger_1, + Gamepad_Button_Right_Trigger_2, + Gamepad_Button_Middle_Left, + Gamepad_Button_Middle, + Gamepad_Button_Middle_Right, + Gamepad_Button_Left_Thumb, + Gamepad_Button_Right_Thumb + ) with Convention => C; + + type Gamepad_Axis is ( + Gamepad_Axis_Left_X, + Gamepad_Axis_Left_Y, + Gamepad_Axis_Right_X, + Gamepad_Axis_Right_Y, + Gamepad_Axis_Left_Trigger, + Gamepad_Axis_Right_Trigger + ) with Convention => C; + + type Material_Map_Index is ( + Material_Map_Diffuse, + Material_Map_Specular, + Material_Map_Normal, + Material_Map_Roughness, + Material_Map_Occlusion, + Material_Map_Emission, + Material_Map_Height, + Material_Map_Cubemap, + Material_Map_Irradiance, + Material_Map_Prefilter, + Material_Map_BRDF + ) with Convention => C; + + type Shader_Location_Index is ( + Shader_Location_Vertex_Position, + Shader_Location_Vertex_Texcoord_1, + Shader_Location_Vertex_Texcoord_2, + Shader_Location_Vertex_Normal, + Shader_Location_Vertex_Tangent, + Shader_Location_Vertex_Color, + Shader_Location_Matrix_MVP, + Shader_Location_Matrix_View, + Shader_Location_Matrix_Projection, + Shader_Location_Matrix_Model, + Shader_Location_Matrix_Normal, + Shader_Location_Vector_View, + Shader_Location_Color_Diffuse, + Shader_Location_Color_Specular, + Shader_Location_Color_Ambient, + Shader_Location_Map_Diffuse, + Shader_Location_Map_Specular, + Shader_Location_Map_Normal, + Shader_Location_Map_Roughness, + Shader_Location_Map_Occlusion, + Shader_Location_Map_Emission, + Shader_Location_Map_Height, + Shader_Location_Map_Cubemap, + Shader_Location_Map_Irradiance, + Shader_Location_Map_Prefilter, + Shader_Location_Map_BRDF + ) with Convention => C; + + type Shader_Uniform_Data_Type is ( + Shader_Uniform_FLOAT, + Shader_Uniform_VEC2, + Shader_Uniform_VEC3, + Shader_Uniform_VEC4, + Shader_Uniform_INT, + Shader_Uniform_IVEC2, + Shader_Uniform_IVEC3, + Shader_Uniform_IVEC4, + Shader_Uniform_SAMPLER2D + ) with Convention => C; + + type Shader_Attribute_Data_Type is ( + Shader_Attribute_FLOAT, + Shader_Attribute_VEC2, + Shader_Attribute_VEC3, + Shader_Attribute_VEC4 + ) with Convention => C; + + type Pixel_Format is ( + Pixel_Format_None, + Pixel_Format_Uncompressed_Grayscale, + Pixel_Format_Uncompressed_Gray_Alpha, + Pixel_Format_Uncompressed_R5G6B5, + Pixel_Format_Uncompressed_R8G8B8, + Pixel_Format_Uncompressed_R5G5B5A1, + Pixel_Format_Uncompressed_R4G4B4A4, + Pixel_Format_Uncompressed_R8G8B8A8, + Pixel_Format_Uncompressed_R32, + Pixel_Format_Uncompressed_R32G32B32, + Pixel_Format_Uncompressed_R32G32B32A32, + Pixel_Format_Uncompressed_R16, + Pixel_Format_Uncompressed_R16G16B16, + Pixel_Format_Uncompressed_R16G16B16A16, + Pixel_Format_Compressed_DXT1_RGB, + Pixel_Format_Compressed_DXT1_RGBA, + Pixel_Format_Compressed_DXT3_RGBA, + Pixel_Format_Compressed_DXT5_RGBA, + Pixel_Format_Compressed_ETC1_RGB, + Pixel_Format_Compressed_ETC2_RGB, + Pixel_Format_Compressed_ETC2_EAC_RGBA, + Pixel_Format_Compressed_PVRT_RGB, + Pixel_Format_Compressed_PVRT_RGBA, + Pixel_Format_Compressed_ASTC_4x4_RGBA, + Pixel_Format_Compressed_ASTC_8x8_RGBA + ) with Convention => C; + + type Texture_Filter is ( + Texture_Filter_Point, + Texture_Filter_Bilinear, + Texture_Filter_Trilinear, + Texture_Filter_Anisotropic_x4, + Texture_Filter_Anisotropic_x8, + Texture_Filter_Anisotropic_x16 + ) with Convention => C; + + type Texture_Wrap is ( + Texture_Wrap_Repeat, + Texture_Wrap_Clamp, + Texture_Wrap_Mirror_Repeat, + Texture_Wrap_Mirror_Clamp + ) with Convention => C; + + type Cubemap_Layout is ( + Cubemap_Layout_Auto_Detect, + Cubemap_Layout_Line_Vertical, + Cubemap_Layout_Line_Horizontal, + Cubemap_Layout_Cross_3_By_4, + Cubemap_Layout_Cross_4_By_3, + Cubemap_Layout_Panorama + ) with Convention => C; + + type Font_Type is ( + Font_Default, + Font_Bitmap, + Font_SDF + ) with Convention => C; + + type Blend_Mode is ( + Blend_Alpha, + Blend_Additive, + Blend_Multiplied, + Blend_Add_Colors, + Blend_Subtract_Colors, + Blend_Alpha_Premultiply, + Blend_Custom, + Blend_Custom_Separate + ) with Convention => C; + + type Gesture is ( + Gesture_None, + Gesture_Tap, + Gesture_Doubletap, + Gesture_Hold, + Gesture_Drag, + Gesture_Swipe_Right, + Gesture_Swipe_Left, + Gesture_Swipe_Up, + Gesture_Swipe_Down, + Gesture_Pinch_In, + Gesture_Pinch_Out + ) with Convention => C; + + for Gesture use ( + Gesture_None => 0, + Gesture_Tap => 1, + Gesture_Doubletap => 2, + Gesture_Hold => 4, + Gesture_Drag => 8, + Gesture_Swipe_Right => 16, + Gesture_Swipe_Left => 32, + Gesture_Swipe_Up => 64, + Gesture_Swipe_Down => 128, + Gesture_Pinch_In => 256, + Gesture_Pinch_Out => 512 + ); + + type Camera_Mode is ( + Camera_Custom, + Camera_Free, + Camera_Orbital, + Camera_First_Person, + Camera_Third_Person + ) with Convention => C; + + type Camera_Projection is ( + Camera_Perspective, + Camera_Orthographic + ) with Convention => C; + + type NPatch_Layout is ( + NPatch_Nine_Patch, + NPatch_Three_Patch_Vertical, + NPatch_Three_Patch_Horizontal + ) with Convention => C; + +------------------------------------------------------------------------ + + type Color_Range is range 0 .. 2**8 - 1; + type Index_Range is range 0 .. 2**16 - 1; + + for Color_Range'Size use 8; + for Index_Range'Size use 16; + + type Pointer is access all System.Address; + + type Vector_2D is record + X : Float := 0.0; + Y : Float := 0.0; + end record with Convention => C_Pass_By_Copy; + + type Vector_3D is record + X : Float := 0.0; + Y : Float := 0.0; + Z : Float := 0.0; + end record with Convention => C_Pass_By_Copy; + + type Vector_4D is record + X : Float := 0.0; + Y : Float := 0.0; + Z : Float := 0.0; + W : Float := 0.0; + end record with Convention => C_Pass_By_Copy; + + type Quaternion is new Vector_4D; + + type Matrix_4D is record + M00 : Float := 1.0; + M10 : Float := 0.0; + M20 : Float := 0.0; + M30 : Float := 0.0; + M01 : Float := 0.0; + M11 : Float := 1.0; + M21 : Float := 0.0; + M31 : Float := 0.0; + M02 : Float := 0.0; + M12 : Float := 0.0; + M22 : Float := 1.0; + M32 : Float := 0.0; + M03 : Float := 0.0; + M13 : Float := 0.0; + M23 : Float := 0.0; + M33 : Float := 1.0; + end record with Convention => C_Pass_By_Copy; + + Id_Matrix : Matrix_4D; + + type Color is record + R : Color_Range := 255; + G : Color_Range := 255; + B : Color_Range := 255; + A : Color_Range := 255; + end record with Convention => C_Pass_By_Copy; + + No_Color : Color; + + type Rectangle is record + X : Float := 0.0; + Y : Float := 0.0; + Width : Float := 0.0; + Height : Float := 0.0; + end record with Convention => C_Pass_By_Copy; + + No_Rectangle : Rectangle; + + type Image is record + Data : Pointer := null; + Width : Integer := 0; + Height : Integer := 0; + Mipmaps : Integer := 1; + Format : Pixel_Format := Pixel_Format_None; + end record with Convention => C_Pass_By_Copy; + + No_Image : Image; + + type Texture is record + Id : Natural := 0; + Width : Integer := 0; + Height : Integer := 0; + Mipmaps : Integer := 1; + Format : Pixel_Format := Pixel_Format_None; + end record with Convention => C_Pass_By_Copy; + + No_Texture : Texture; + + type Render_Texture is record + Id : Natural := 0; + Data : Texture := No_Texture; + Depth : Texture := No_Texture; + end record with Convention => C_Pass_By_Copy; + + No_Render_Texture : Render_Texture; + + type NPatch_Info is record + Source : Rectangle := No_Rectangle; + Left : Integer := 0; + Top : Integer := 0; + Right : Integer := 0; + Bottom : Integer := 0; + Layout : NPatch_Layout := NPatch_Nine_Patch; + end record with Convention => C_Pass_By_Copy; + + type Glyph_Info is record + Value : Integer := 0; + Offset_X : Integer := 0; + Offset_Y : Integer := 0; + Advance_X : Integer := 0; + Data : Image := No_Image; + end record with Convention => C_Pass_By_Copy; + + type Font is record + Base_Size : Integer := 0; + Glyph_Count : Integer := 0; + Glyph_Padding : Integer := 0; + Data : Texture := No_Texture; + Rectangles : access Rectangle := null; + Glyphs : access Glyph_Info := null; + end record with Convention => C_Pass_By_Copy; + + No_Font : Font; + + type Camera_3D is record + Position : Vector_3D := (0.0, 0.0, 0.0); + Target : Vector_3D := (0.0, 0.0, 0.0); + Up : Vector_3D := (0.0, 0.0, 0.0); + Field_Of_View : Float := 0.0; + Projection : Camera_Projection := Camera_Perspective; + end record with Convention => C_Pass_By_Copy; + + No_Camera_3D : Camera_3D; + + type Camera_2D is record + Offset : Vector_2D := (0.0, 0.0); + Target : Vector_2D := (0.0, 0.0); + Rotation : Float := 0.0; + Zoom : Float := 0.0; + end record with Convention => C_Pass_By_Copy; + + No_Camera_2D : Camera_2D; + + type Mesh is record + Vertex_Count : Integer := 0; + Triangle_Count : Integer := 0; + Vertices : access Float := null; + Texture_Coordinates : access Float := null; + Texture_Coordinates_2 : access Float := null; + Normals : access Float := null; + Tangents : access Float := null; + Colors : access Color_Range := null; + Indices : access Index_Range := null; + Animation_Vertices : access Float := null; + Animation_Normals : access Float := null; + Bone_Ids : access Color_Range := null; + Bone_Weights : access Float := null; + VAO_Id : Natural := 0; + VBO_Id : access Natural := null; + end record with Convention => C_Pass_By_Copy; + + No_Mesh : Mesh; + + type Shader is record + Id : Natural := 0; + Locations : access Integer := null; + end record with Convention => C_Pass_By_Copy; + + No_Shader : Shader; + + type Material_Map is record + Data : Texture := No_Texture; + Tint : Color := No_Color; + Value : Float := 0.0; + end record with Convention => C_Pass_By_Copy; + + No_Material_Map : Material_Map; + + type Float_Array_4 is array (0 .. 3) of Float; + type Material_Map_Array_4 is array (0 .. 3) of Material_Map; + type Material_Map_Array is array (Natural range <>) of Material_Map; + + type Material is record + Data : Shader := No_Shader; + Maps : access Material_Map_Array := null; + Parameter : Float_Array_4 := (0.0, 0.0, 0.0, 1.0); + end record with Convention => C_Pass_By_Copy; + + No_Material : Material; + + type Transform is record + Translation : Vector_3D := (0.0, 0.0, 0.0); + Rotation : Vector_4D := (0.0, 0.0, 0.0, 0.0); + Scale : Vector_3D := (0.0, 0.0, 0.0); + end record with Convention => C_Pass_By_Copy; + + type Character_Array_32 is array (0 .. 31) of Character; + + Empty : Character_Array_32 := (others => Character'Val (0)); + + type Bone_Info is record + Name : Character_Array_32 := Empty; + Parent : Integer := 0; + end record with Convention => C_Pass_By_Copy; + + type Material_Array_4 is array (0 .. 3) of Material; + type Material_Array is array (Natural range <>) of Material; + + type Model is record + Transform : Matrix_4D := Id_Matrix; + Mesh_Count : Integer := 0; + Material_Count : Integer := 0; + Meshes : access Mesh := null; + Materials : access Material_Array := null; + Mesh_Materials : access Integer := null; + Bone_Count : Integer := 0; + Bones : access Bone_Info := null; + --~Bind_Post : access Transform := null; ERROR + end record with Convention => C_Pass_By_Copy; + + No_Model : Model; + + type Model_Animation is record + Bone_Count : Integer := 0; + Frame_Count : Integer := 0; + Bones : access Bone_Info := null; + Frame_Poses : access Transform := null; + Name : Character_Array_32 := Empty; + end record with Convention => C_Pass_By_Copy; + + type Ray is record + Position : Vector_3D := (0.0, 0.0, 0.0); + Direction : Vector_3D := (0.0, 0.0, 0.0); + end record with Convention => C_Pass_By_Copy; + + type Ray_Collision is record + Hit : Logical := False; + Distance : Float := 0.0; + Point : Vector_3D := (0.0, 0.0, 0.0); + Normal : Vector_3D := (0.0, 0.0, 0.0); + end record with Convention => C_Pass_By_Copy; + + type Bounding_Box is record + Min : Vector_3D := (0.0, 0.0, 0.0); + Max : Vector_3D := (0.0, 0.0, 0.0); + end record with Convention => C_Pass_By_Copy; + + type Wave is record + Frame_Count : Natural := 0; + Sample_Rate : Natural := 0; + Sample_Size : Natural := 0; + Channels : Natural := 0; + Data : Pointer := null; + end record with Convention => C_Pass_By_Copy; + + No_Wave : Wave; + + type Audio_Stream is record + Buffer : Pointer := null; + Processor : Pointer := null; + Sample_Rate : Natural := 0; + Sample_Size : Natural := 0; + Channels : Natural := 0; + end record with Convention => C_Pass_By_Copy; + + No_Audio_Stream : Audio_Stream; + + type Sound is record + Stream : Audio_Stream := No_Audio_Stream; + Frame_Count : Natural := 0; + end record with Convention => C_Pass_By_Copy; + + No_Sound : Sound; + + type Music is record + Stream : Audio_Stream := No_Audio_Stream; + Frame_Count : Natural := 0; + Looping : Logical := False; + Context_Type : Integer := 0; + Context_Data : Pointer := null; + end record with Convention => C_Pass_By_Copy; + + No_Music : Music; + + type VR_Device_Info is record + Horizontal_Resoultion : Integer := 0; + Vertical_Resoultion : Integer := 0; + Horizontal_Screen_Size : Float := 0.0; + Vertical_Screen_Size : Float := 0.0; + Vertical_Screen_Center : Float := 0.0; + Eye_To_Screen_Distance : Float := 0.0; + Lens_Separate_Distance : Float := 0.0; + Interpupillary_Distance : Float := 0.0; + Lens_Distortion_Values : Float_Array_4 := (0.0, 0.0, 0.0, 0.0); + Chroma_Abberation_Correction : Float_Array_4 := (0.0, 0.0, 0.0, 0.0); + end record with Convention => C_Pass_By_Copy; + + No_VR_Device_Info : VR_Device_Info; + + type Matrix_4D_Array_2 is array (0 .. 1) of Matrix_4D; + type Float_Array_2 is array (0 .. 1) of Float; + + type VR_Stereo_Config is record + Projection : Matrix_4D_Array_2 := (Id_Matrix, Id_Matrix); + View_Offset : Matrix_4D_Array_2 := (Id_Matrix, Id_Matrix); + Left_Lens_Center : Float_Array_2 := (0.0, 0.0); + Right_Lens_Center : Float_Array_2 := (0.0, 0.0); + Left_Screen_Center : Float_Array_2 := (0.0, 0.0); + Right_Screen_Center : Float_Array_2 := (0.0, 0.0); + Scale : Float_Array_2 := (0.0, 0.0); + Scale_In : Float_Array_2 := (0.0, 0.0); + end record with Convention => C_Pass_By_Copy; + + No_VR_Stereo_Config : VR_Stereo_Config; + + type File_Path_List is record + Capacity : Natural := 0; + Count : Natural := 0; + Paths : Pointer := null; + end record with Convention => C_Pass_By_Copy; + + type Integer_Array_4 is array (0 .. 3) of Integer; + + type Automation_Event is record + Frame : Natural := 0; + Kind : Natural := 0; + Parameters : Integer_Array_4 := (0, 0, 0, 0); + end record with Convention => C_Pass_By_Copy; + + type Automation_Event_List is record + Capacity : Natural := 0; + Count : Natural := 0; + Events : access Automation_Event := null; + end record with Convention => C_Pass_By_Copy; + +------------------------------------------------------------------------ + + Version_Major : constant Integer := 5; + Version_Minor : constant Integer := 1; + Version_Patch : constant Integer := 0; + Version : aliased constant String := "5.1-dev"; + + Pi : constant Float := 3.14159265358979323846; + Tau : constant Float := 2.0 * Pi; + Degree_To_Radius : constant Float := Pi / 180.0; + Radius_To_Degree : constant Float := 180.0 / Pi; + + Light_Gray : constant Color := (200, 200, 200, 255); + Gray : constant Color := (130, 130, 130, 255); + Dark_Gray : constant Color := (80, 80, 80, 255); + Yellow : constant Color := (253, 249, 0, 255); + Gold : constant Color := (255, 203, 0, 255); + Orange : constant Color := (255, 161, 0, 255); + Pink : constant Color := (255, 109, 194, 255); + Red : constant Color := (230, 41, 55, 255); + Maroon : constant Color := (190, 33, 55, 255); + Green : constant Color := (0, 228, 48, 255); + Lime : constant Color := (0, 158, 47, 255); + Dark_Green : constant Color := (0, 117, 44, 255); + Sky_Blue : constant Color := (102, 191, 255, 255); + Blue : constant Color := (0, 121, 241, 255); + Dark_Blue : constant Color := (0, 82, 172, 255); + Purple : constant Color := (200, 122, 255, 255); + Violet : constant Color := (135, 60, 190, 255); + Dark_Purple : constant Color := (112, 31, 126, 255); + Beige : constant Color := (211, 176, 131, 255); + Brown : constant Color := (127, 106, 79, 255); + Dark_Brown : constant Color := (76, 63, 47, 255); + White : constant Color := (255, 255, 255, 255); + Black : constant Color := (0, 0, 0, 255); + Blank : constant Color := (0, 0, 0, 0 ); + Magenta : constant Color := (255, 0, 255, 255); + Ray_White : constant Color := (245, 245, 245, 255); + +------------------------------------------------------------------------ + +--~typedef void (*TraceLogCallback)(int logLevel, const char *text, va_list args); -- Logging: Redirect trace log messages +--~typedef unsigned char *(*LoadFileDataCallback)(const char *fileName, int *dataSize); -- FileIO: Load binary data +--~typedef bool (*SaveFileDataCallback)(const char *fileName, void *data, int dataSize); -- FileIO: Save binary data +--~typedef char *(*LoadFileTextCallback)(const char *fileName); -- FileIO: Load text data +--~typedef bool (*SaveFileTextCallback)(const char *fileName, char *text); -- FileIO: Save text data + + procedure Open_Window ( + Width : Integer := 640; + Height : Integer := 480; + Title : String := "" + ) with + Import => True, + Convention => C, + External_Name => "InitWindow"; + + procedure Close_Window with + Import => True, + Convention => C, + External_Name => "CloseWindow"; + + function Window_Should_Close return Logical with + Import => True, + Convention => C, + External_Name => "WindowShouldClose"; + + function Is_Window_Ready return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowReady"; + + function Is_Window_Fullscreen return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowFullscreen"; + + function Is_Window_Hidden return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowHidden"; + + function Is_Window_Minimized return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowMinimized"; + + function Is_Window_Maximized return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowMaximized"; + + function Is_Window_Focused return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowFocused"; + + function Is_Window_Resized return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowResized"; + + function Is_Window_State ( + Flags : Natural := 0 + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsWindowState"; + + procedure Set_Window_State ( + Flags : Natural := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowState"; + + procedure Clear_Window_State ( + Flags : Natural := 0 + ) with + Import => True, + Convention => C, + External_Name => "ClearWindowState"; + + procedure Toggle_Fullscreen with + Import => True, + Convention => C, + External_Name => "ToggleFullscreen"; + + procedure Toggle_Borderless_Windowed with + Import => True, + Convention => C, + External_Name => "ToggleBorderlessWindowed"; + + procedure Maximize_Window with + Import => True, + Convention => C, + External_Name => "MaximizeWindow"; + + procedure Minimize_Window with + Import => True, + Convention => C, + External_Name => "MinimizeWindow"; + + procedure Restore_Window with + Import => True, + Convention => C, + External_Name => "RestoreWindow"; + + procedure Set_Window_Icon ( + Icon : Image := No_Image + ) with + Import => True, + Convention => C, + External_Name => "SetWindowIcon"; + + procedure Set_Window_Icons ( + Icons : access Image := null; + Count : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowIcons"; + + procedure Set_Window_Title ( + Title : String := "" + ) with + Import => True, + Convention => C, + External_Name => "SetWindowTitle"; + + procedure Set_Window_Position ( + X : Integer := 0; + Y : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowPosition"; + + procedure Set_Window_Monitor ( + Monitor : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowMonitor"; + + procedure Set_Window_Min_Size ( + Width : Integer := 0; + Height : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowMinSize"; + + procedure Set_Window_Max_Size ( + Width : Integer := 0; + Height : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowMaxSize"; + + procedure Set_Window_Size ( + Width : Integer := 0; + Height : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowSize"; + + procedure Set_WindowZ_Opacity ( + Opacity : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetWindowOpacity"; + + procedure Set_Window_Focused with + Import => True, + Convention => C, + External_Name => "SetWindowFocused"; + + function Get_Window_Handle return Pointer with + Import => True, + Convention => C, + External_Name => "GetWindowHandle"; + + function Get_Screen_Width return Integer with + Import => True, + Convention => C, + External_Name => "GetScreenWidth"; + + function Get_Screen_Height return Integer with + Import => True, + Convention => C, + External_Name => "GetScreenHeight"; + + function Get_Render_Width return Integer with + Import => True, + Convention => C, + External_Name => "GetRenderWidth"; + + function Get_Render_Height return Integer with + Import => True, + Convention => C, + External_Name => "GetRenderHeight"; + + function Get_Monitor_Count return Integer with + Import => True, + Convention => C, + External_Name => "GetMonitorCount"; + + function Get_Current_Monitor return Integer with + Import => True, + Convention => C, + External_Name => "GetCurrentMonitor"; + + function Get_Monitor_Position ( + Monitor : Integer := 0 + ) return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetMonitorPosition"; + + function Get_Monitor_Width ( + Monitor : Integer := 0 + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetMonitorWidth"; + + function Get_Monitor_Height ( + Monitor : Integer := 0 + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetMonitorHeight"; + + function Get_Monitor_Physical_Width ( + Monitor : Integer := 0 + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetMonitorPhysicalWidth"; + + function Get_Monitor_Physical_Height ( + Monitor : Integer := 0 + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetMonitorPhysicalHeight"; + + function Get_Monitor_Refresh_Rate ( + Monitor : Integer := 0 + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetMonitorRefreshRate"; + + function Get_Window_Position return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetWindowPosition"; + + function Get_Window_Scale_DPI return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetWindowScaleDPI"; + + function Get_Monitor_Name ( + Monitor : Integer := 0 + ) return Pointer with + Import => True, + Convention => C, + External_Name => "GetMonitorName"; + + procedure Set_Clipboard_Text ( + Text : String := "" + ) with + Import => True, + Convention => C, + External_Name => "SetClipboardText"; + + function Get_Clipboard_Text return Pointer with + Import => True, + Convention => C, + External_Name => "GetClipboardText"; + + procedure Enable_Event_Waiting with + Import => True, + Convention => C, + External_Name => "EnableEventWaiting"; + + procedure Disable_Event_Waiting with + Import => True, + Convention => C, + External_Name => "DisableEventWaiting"; + + procedure Show_Cursor with + Import => True, + Convention => C, + External_Name => "ShowCursor"; + + procedure Hide_Cursor with + Import => True, + Convention => C, + External_Name => "HideCursor"; + + function Is_Cursor_Hidden return Logical with + Import => True, + Convention => C, + External_Name => "IsCursorHidden"; + + procedure Enable_Cursor with + Import => True, + Convention => C, + External_Name => "EnableCursor"; + + procedure Disable_Cursor with + Import => True, + Convention => C, + External_Name => "DisableCursor"; + + function Is_Cursor_On_Screen return Logical with + Import => True, + Convention => C, + External_Name => "IsCursorOnScreen"; + + procedure Clear_Background ( + Tint : Color := Ray_White + ) with + Import => True, + Convention => C, + External_Name => "ClearBackground"; + + procedure Begin_Drawing with + Import => True, + Convention => C, + External_Name => "BeginDrawing"; + + procedure End_Drawing with + Import => True, + Convention => C, + External_Name => "EndDrawing"; + + procedure Begin_Mode_2D ( + Camera : Camera_2D + ) with + Import => True, + Convention => C, + External_Name => "BeginMode2D"; + + procedure End_Mode_2D with + Import => True, + Convention => C, + External_Name => "EndMode2D"; + + procedure Begin_Mode_3D ( + Camera : Camera_3D + ) with + Import => True, + Convention => C, + External_Name => "BeginMode3D"; + + procedure End_Mode_3D with + Import => True, + Convention => C, + External_Name => "EndMode3D"; + + procedure Begin_Texture_Mode ( + Data : Render_Texture := No_Render_Texture + ) with + Import => True, + Convention => C, + External_Name => "BeginTextureMode"; + + procedure End_Texture_Mode with + Import => True, + Convention => C, + External_Name => "EndTextureMode"; + + procedure Begin_Shader_Mode ( + Data : Shader := No_Shader + ) with + Import => True, + Convention => C, + External_Name => "BeginShaderMode"; + + procedure End_Shader_Mode with + Import => True, + Convention => C, + External_Name => "EndShaderMode"; + + procedure Begin_Blend_Mode ( + Mode : Blend_Mode := Blend_Alpha + ) with + Import => True, + Convention => C, + External_Name => "BeginBlendMode"; + + procedure End_Blend_Mode with + Import => True, + Convention => C, + External_Name => "EndBlendMode"; + + procedure Begin_Scissor_Mode ( + X : Integer := 0; + Y : Integer := 0; + Width : Integer := 0; + Height : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "BeginScissorMode"; + + procedure End_Scissor_Mode with + Import => True, + Convention => C, + External_Name => "EndScissorMode"; + + procedure Begin_VR_Stereo_Mode ( + Config : VR_Stereo_Config := No_VR_Stereo_Config + ) with + Import => True, + Convention => C, + External_Name => "BeginVrStereoMode"; + + procedure End_VR_Stereo_Mode with + Import => True, + Convention => C, + External_Name => "EndVrStereoMode"; + + function Load_VR_Stereo_Config ( + Device : VR_Device_Info := No_VR_Device_Info + ) return VR_Stereo_Config with + Import => True, + Convention => C, + External_Name => "LoadVrStereoConfig"; + + procedure Unload_VR_Stereo_Config ( + Config : VR_Stereo_Config := No_VR_Stereo_Config + ) with + Import => True, + Convention => C, + External_Name => "UnloadVrStereoConfig"; + + function Load_Shader ( + Vertex_Shader_File_Path : String := ""; + Fragment_Shader_File_Path : String := "" + ) return Shader with + Import => True, + Convention => C, + External_Name => "LoadShader"; + + function Load_Shader_From_Memory ( + Vertex_Shader_Code_Path : String := ""; + Fragment_Shader_Code_Path : String := "" + ) return Shader with + Import => True, + Convention => C, + External_Name => "LoadShaderFromMemory"; + + function Is_Shader_Ready ( + Data : Shader := No_Shader + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsShaderReady"; + + function Get_Shader_Location ( + Data : Shader := No_Shader; + Name : String := "" + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetShaderLocation"; + + function Get_Shader_Location_Attribute ( + Data : Shader := No_Shader; + Name : String := "" + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetShaderLocationAttrib"; + + procedure Set_Shader_Value ( + Data : Shader := No_Shader; + Location_Index : Integer := 0; + Value : Pointer := null; + Uniform_Type : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetShaderValue"; + + procedure Set_Shader_Value_Vector ( + Data : Shader := No_Shader; + Location_Index : Integer := 0; + Value : Pointer := null; + Uniform_Type : Integer := 0; + Count : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetShaderValueV"; + + procedure Set_Shader_Value_Matrix ( + Data : Shader := No_Shader; + Location_Index : Integer := 0; + Value : Matrix_4D := Id_Matrix + ) with + Import => True, + Convention => C, + External_Name => "SetShaderValueMatrix"; + + procedure Set_Shader_Value_Texture ( + Data : Shader := No_Shader; + Location_Index : Integer := 0; + Value : Texture := No_Texture + ) with + Import => True, + Convention => C, + External_Name => "SetShaderValueTexture"; + + procedure Unload_Shader ( + Data : Shader := No_Shader + ) with + Import => True, + Convention => C, + External_Name => "UnloadShader"; + + function Get_Mouse_Ray ( + Mouse_Position : Vector_2D := (0.0, 0.0); + Camera : Camera_3D := No_Camera_3D + ) return Ray with + Import => True, + Convention => C, + External_Name => "GetMouseRay"; + + function Get_Camera_Matrix_3D ( + Camera : Camera_3D := No_Camera_3D + ) return Matrix_4D with + Import => True, + Convention => C, + External_Name => "GetCameraMatrix"; + + function Get_Camera_Matrix_2D ( + Camera : Camera_2D := No_Camera_2D + ) return Matrix_4D with + Import => True, + Convention => C, + External_Name => "GetCameraMatrix2D"; + + function Get_World_To_Screen_3D ( + Position : Vector_3D := (0.0, 0.0, 0.0); + Camera : Camera_3D := No_Camera_3D + ) return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetWorldToScreen"; + + function Get_Screen_To_World_2D ( + Position : Vector_2D := (0.0, 0.0); + Camera : Camera_2D := No_Camera_2D + ) return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetScreenToWorld2D"; + + function Get_World_To_Screen_Ex ( + Position : Vector_3D := (0.0, 0.0, 0.0); + Camera : Camera_3D := No_Camera_3D; + Width : Integer := 0; + Height : Integer := 0 + ) return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetWorldToScreenEx"; + + function Get_World_To_Screen_2D ( + Position : Vector_2D := (0.0, 0.0); + Camera : Camera_2D := No_Camera_2D + ) return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetWorldToScreen2D"; + + procedure Set_Target_FPS ( + FPS : Integer := 60 + ) with + Import => True, + Convention => C, + External_Name => "SetTargetFPS"; + + function Get_Frame_Time return Float with + Import => True, + Convention => C, + External_Name => "GetFrameTime"; + + function Get_Time return Long_Float with + Import => True, + Convention => C, + External_Name => "GetTime"; + + function Get_FPS return Integer with + Import => True, + Convention => C, + External_Name => "GetFPS"; + + procedure Swap_Screen_Buffer with + Import => True, + Convention => C, + External_Name => "SwapScreenBuffer"; + + procedure Poll_Input_Events with + Import => True, + Convention => C, + External_Name => "PollInputEvents"; + + procedure Wait_Time ( + Seconds : Long_Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "WaitTime"; + + procedure Set_Random_Seed ( + Seed : Natural := 16#0EADBEEF# + ) with + Import => True, + Convention => C, + External_Name => "SetRandomSeed"; + + function Get_Random_Value ( + Min : Integer := 0; + Max : Integer := 255 + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetRandomValue"; + + function Load_Random_Sequence ( + Count : Natural := 0; + Min : Integer := 0; + Max : Integer := 0 + ) return access Integer with + Import => True, + Convention => C, + External_Name => "LoadRandomSequence"; + + procedure Unload_Random_Sequence ( + Sequence : access Integer := null + ) with + Import => True, + Convention => C, + External_Name => "UnloadRandomSequence"; + + procedure Take_Screenshot ( + File_Name : String := "Screenshot.png" + ) with + Import => True, + Convention => C, + External_Name => "TakeScreenshot"; + + procedure Set_Config_Flags ( + Flags : Config_Flags := Flag_None + ) with + Import => True, + Convention => C, + External_Name => "SetConfigFlags"; + + procedure Open_URL ( + URL : String := "" + ) with + Import => True, + Convention => C, + External_Name => "OpenURL"; + + --~procedure TraceLog (int logLevel, const char *text, ...) with + --~Import => True, + --~Convention => C, + --~External_Name => "TraceLog"; + + procedure Set_Trace_Log_Level ( + Level : Trace_Log_Level := Log_All + ) with + Import => True, + Convention => C, + External_Name => "SetTraceLogLevel"; + + function Allocate ( + Size : Natural := 0 + ) return Pointer with + Import => True, + Convention => C, + External_Name => "MemAlloc"; + + function Reallocate ( + Data : Pointer := null; + Size : Natural := 0 + ) return Pointer with + Import => True, + Convention => C, + External_Name => "MemRealloc"; + + procedure Deallocate ( + Data : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "MemFree"; + + --~procedure SetTraceLogCallback (TraceLogCallback callback) with + --~Import => True, + --~Convention => C, + --~External_Name => "SetTraceLogCallback"; + + --~procedure SetLoadFileDataCallback (LoadFileDataCallback callback) with + --~Import => True, + --~Convention => C, + --~External_Name => "SetLoadFileDataCallback"; + + --~procedure SetSaveFileDataCallback (SaveFileDataCallback callback) with + --~Import => True, + --~Convention => C, + --~External_Name => "SetSaveFileDataCallback"; + + --~procedure SetLoadFileTextCallback (LoadFileTextCallback callback) with + --~Import => True, + --~Convention => C, + --~External_Name => "SetLoadFileTextCallback"; + + --~procedure SetSaveFileTextCallback (SaveFileTextCallback callback) with + --~Import => True, + --~Convention => C, + --~External_Name => "SetSaveFileTextCallback"; + + function Load_File_Data ( + File_Name : String := ""; + Data_Size : access Integer := null + ) return access Character with + Import => True, + Convention => C, + External_Name => "LoadFileData"; + + procedure Unload_File_Data ( + Data : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "UnloadFileData"; + + --~function bool SaveFileData (const char *fileName, void *data, int dataSize) with + --~Import => True, + --~Convention => C, + --~External_Name => "SaveFileData"; + + --~function bool ExportDataAsCode (const unsigned char *data, int dataSize, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "ExportDataAsCode"; + + --~function char *LoadFileText (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "LoadFileText"; + + --~procedure UnloadFileText (char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => "UnloadFileText"; + + --~function bool SaveFileText (const char *fileName, char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => "SaveFileText"; + + --~function bool FileExists (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "FileExists"; + + --~function bool DirectoryExists (const char *dirPath) with + --~Import => True, + --~Convention => C, + --~External_Name => "DirectoryExists"; + + --~function bool IsFileExtension (const char *fileName, const char *ext) with + --~Import => True, + --~Convention => C, + --~External_Name => "IsFileExtension"; + + --~function int GetFileLength (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetFileLength"; + + --~function const char *GetFileExtension (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetFileExtension"; + + --~function const char *GetFileName (const char *filePath) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetFileName"; + + --~function const char *GetFileNameWithoutExt (const char *filePath) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetFileNameWithoutExt"; + + --~function const char *GetDirectoryPath (const char *filePath) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetDirectoryPath"; + + --~function const char *GetPrevDirectoryPath (const char *dirPath) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetPrevDirectoryPath"; + + --~function const char *GetWorkingDirectory (void) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetWorkingDirectory"; + + --~function const char *GetApplicationDirectory (void) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetApplicationDirectory"; + + --~function bool ChangeDirectory (const char *dir) with + --~Import => True, + --~Convention => C, + --~External_Name => "ChangeDirectory"; + + --~function bool IsPathFile (const char *path) with + --~Import => True, + --~Convention => C, + --~External_Name => "IsPathFile"; + + --~function FilePathList LoadDirectoryFiles (const char *dirPath) with + --~Import => True, + --~Convention => C, + --~External_Name => "LoadDirectoryFiles"; + + --~function FilePathList LoadDirectoryFilesEx (const char *basePath, const char *filter, bool scanSubdirs) with + --~Import => True, + --~Convention => C, + --~External_Name => "LoadDirectoryFilesEx"; + + --~procedure UnloadDirectoryFiles (FilePathList files) with + --~Import => True, + --~Convention => C, + --~External_Name => "UnloadDirectoryFiles"; + + --~function bool IsFileDropped (void) with + --~Import => True, + --~Convention => C, + --~External_Name => "IsFileDropped"; + + --~function FilePathList LoadDroppedFiles (void) with + --~Import => True, + --~Convention => C, + --~External_Name => "LoadDroppedFiles"; + + --~procedure UnloadDroppedFiles (FilePathList files) with + --~Import => True, + --~Convention => C, + --~External_Name => "UnloadDroppedFiles"; + + --~function long GetFileModTime (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "GetFileModTime"; + + --~function unsigned char *CompressData (const unsigned char *data, int dataSize, int *compDataSize) with + --~Import => True, + --~Convention => C, + --~External_Name => "CompressData"; + + --~function unsigned char *DecompressData (const unsigned char *compData, int compDataSize, int *dataSize) with + --~Import => True, + --~Convention => C, + --~External_Name => "DecompressData"; + + --~function char *EncodeDataBase64 (const unsigned char *data, int dataSize, int *outputSize) with + --~Import => True, + --~Convention => C, + --~External_Name => "EncodeDataBase64"; + + --~function unsigned char *DecodeDataBase64 (const unsigned char *data, int *outputSize) with + --~Import => True, + --~Convention => C, + --~External_Name => "DecodeDataBase64"; + + --~function AutomationEventList LoadAutomationEventList (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "LoadAutomationEventList"; + + --~procedure UnloadAutomationEventList (AutomationEventList *list) with + --~Import => True, + --~Convention => C, + --~External_Name => "UnloadAutomationEventList"; + + --~function bool ExportAutomationEventList (AutomationEventList list, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => "ExportAutomationEventList"; + + --~procedure SetAutomationEventList (AutomationEventList *list) with + --~Import => True, + --~Convention => C, + --~External_Name => "SetAutomationEventList"; + + --~procedure SetAutomationEventBaseFrame (int frame) with + --~Import => True, + --~Convention => C, + --~External_Name => "SetAutomationEventBaseFrame"; + + --~procedure StartAutomationEventRecording (void) with + --~Import => True, + --~Convention => C, + --~External_Name => "StartAutomationEventRecording"; + + --~procedure StopAutomationEventRecording (void) with + --~Import => True, + --~Convention => C, + --~External_Name => "StopAutomationEventRecording"; + + --~procedure PlayAutomationEvent (AutomationEvent event) with + --~Import => True, + --~Convention => C, + --~External_Name => "PlayAutomationEvent"; + + function Is_Key_Pressed ( + Key : Keyboard_Key := Key_Null + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsKeyPressed"; + + function Is_Key_Pressed_Repeat ( + Key : Keyboard_Key := Key_Null + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsKeyPressedRepeat"; + + function Is_Key_Down ( + Key : Keyboard_Key := Key_Null + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsKeyDown"; + + function Is_Key_Released ( + Key : Keyboard_Key := Key_Null + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsKeyReleased"; + + function Is_Key_Up ( + Key : Keyboard_Key := Key_Null + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsKeyUp"; + + function Get_Key_Pressed return Keyboard_Key with + Import => True, + Convention => C, + External_Name => "GetKeyPressed"; + + function Get_Character_Pressed return Character with + Import => True, + Convention => C, + External_Name => "GetCharPressed"; + + procedure Set_Exit_Key ( + Key : Keyboard_Key := Key_Escape + ) with + Import => True, + Convention => C, + External_Name => "SetExitKey"; + + --~function bool IsGamepadAvailable (int gamepad) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *GetGamepadName (int gamepad) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsGamepadButtonPressed (int gamepad, int button) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsGamepadButtonDown (int gamepad, int button) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsGamepadButtonReleased (int gamepad, int button) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsGamepadButtonUp (int gamepad, int button) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetGamepadButtonPressed (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetGamepadAxisCount (int gamepad) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function float GetGamepadAxisMovement (int gamepad, int axis) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int SetGamepadMappings (const char *mappings) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + function Is_Mouse_Button_Pressed ( + Button : Mouse_Button := Mouse_Button_Left + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsMouseButtonPressed"; + + function Is_Mouse_Button_Down ( + Button : Mouse_Button := Mouse_Button_Left + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsMouseButtonDown"; + + function Is_Mouse_Button_Released ( + Button : Mouse_Button := Mouse_Button_Left + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsMouseButtonReleased"; + + function Is_Mouse_Button_Up ( + Button : Mouse_Button := Mouse_Button_Left + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsMouseButtonUp"; + + function Get_Mouse_X return Integer with + Import => True, + Convention => C, + External_Name => "GetMouseX"; + + function Get_Mouse_Y return Integer with + Import => True, + Convention => C, + External_Name => "GetMouseY"; + + function Get_Mouse_Position return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetMousePosition"; + + function Get_Mouse_Delta return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetMouseDelta"; + + procedure Set_Mouse_Position ( + X : Integer := 0; + Y : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetMousePosition"; + + procedure Set_Mouse_Offset ( + X : Integer := 0; + Y : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetMouseOffset"; + + procedure Set_Mouse_Scale ( + X : Float := 0.0; + Y : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetMouseScale"; + + function Get_Mouse_Wheel_Move return Float with + Import => True, + Convention => C, + External_Name => "GetMouseWheelMove"; + + function Get_Mouse_Wheel_Move_V return Vector_2D with + Import => True, + Convention => C, + External_Name => "GetMouseWheelMoveV"; + + procedure Set_Mouse_Cursor ( + Cursor : Mouse_Cursor := Mouse_Cursor_Default + ) with + Import => True, + Convention => C, + External_Name => "SetMouseCursor"; + + --~function int GetTouchX (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetTouchY (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetTouchPosition (int index) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetTouchPointId (int index) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetTouchPointCount (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure SetGesturesEnabled (unsigned int flags) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsGestureDetected (unsigned int gesture) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetGestureDetected (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function float GetGestureHoldDuration (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetGestureDragVector (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function float GetGestureDragAngle (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetGesturePinchVector (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function float GetGesturePinchAngle (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Update_Camera ( + Data : access Camera_3D := null; + Mode : Camera_Mode := Camera_First_Person + ) with + Import => True, + Convention => C, + External_Name => "UpdateCamera"; + + procedure Update_Camera_Pro ( + Data : access Camera_3D := null; + Movement : Vector_3D := (0.0, 0.0, 0.0); + Rotation : Vector_3D := (0.0, 0.0, 0.0); + Zoom : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "UpdateCameraPro"; + + --~procedure SetShapesTexture (Texture2D texture, Rectangle source) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawPixel (int posX, int posY, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawPixelV (Vector2 position, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Line ( + X0 : Integer := 0; + Y0 : Integer := 0; + X1 : Integer := 0; + Y1 : Integer := 0; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawLine"; + + --~procedure DrawLineV (Vector2 startPos, Vector2 endPos, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawLineEx (Vector2 startPos, Vector2 endPos, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawLineStrip (Vector2 *points, int pointCount, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawLineBezier (Vector2 startPos, Vector2 endPos, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircle (int centerX, int centerY, float radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircleSector (Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircleSectorLines (Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircleGradient (int centerX, int centerY, float radius, Color color1, Color color2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircleV (Vector2 center, float radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircleLines (int centerX, int centerY, float radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircleLinesV (Vector2 center, float radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawEllipse (int centerX, int centerY, float radiusH, float radiusV, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawEllipseLines (int centerX, int centerY, float radiusH, float radiusV, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawRing (Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawRingLines (Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Rectangle ( + X : Integer := 0; + Y : Integer := 0; + Width : Integer := 0; + Height : Integer := 0; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangle"; + + procedure Draw_Rectangle_V ( + Position : Vector_2D := (0.0, 0.0); + Size : Vector_2D := (0.0, 0.0); + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleV"; + + procedure Draw_Rectangle_Rec ( + Data : Rectangle := No_Rectangle; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleRec"; + + procedure Draw_Rectangle_Pro ( + Data : Rectangle := No_Rectangle; + Origin : Vector_2D := (0.0, 0.0); + Rotation : Float := 0.0; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectanglePro"; + + procedure Draw_Rectangle_Gradient_V ( + X : Integer := 0; + Y : Integer := 0; + Width : Integer := 0; + Height : Integer := 0; + Color_1 : Color := Black; + Color_2 : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleGradientV"; + + procedure Draw_Rectangle_Gradient_H ( + X : Integer := 0; + Y : Integer := 0; + Width : Integer := 0; + Height : Integer := 0; + Color_1 : Color := Black; + Color_2 : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleGradientH"; + + procedure Draw_Rectangle_Gradient_Ex ( + Data : Rectangle := No_Rectangle; + Color_1 : Color := Red; + Color_2 : Color := Green; + Color_3 : Color := Blue; + Color_4 : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleGradientEx"; + + procedure Draw_Rectangle_Lines ( + X : Integer := 0; + Y : Integer := 0; + Width : Integer := 0; + Height : Integer := 0; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleLines"; + + procedure Draw_Rectangle_Lines_Ex ( + Data : Rectangle := No_Rectangle; + Thickness : Float := 1.0; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleLinesEx"; + + procedure Draw_Rectangle_Rounded ( + Data : Rectangle := No_Rectangle; + Roundness : Float := 1.0; + Segments : Integer := 1; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleRounded"; + + procedure Draw_Rectangle_Rounded_Lines ( + Data : Rectangle := No_Rectangle; + Roundness : Float := 1.0; + Segments : Integer := 1; + Thickness : Float := 1.0; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawRectangleRoundedLines"; + + --~procedure DrawTriangle (Vector2 v1, Vector2 v2, Vector2 v3, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawTriangleLines (Vector2 v1, Vector2 v2, Vector2 v3, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawTriangleFan (Vector2 *points, int pointCount, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawTriangleStrip (Vector2 *points, int pointCount, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawPoly (Vector2 center, int sides, float radius, float rotation, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawPolyLines (Vector2 center, int sides, float radius, float rotation, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawPolyLinesEx (Vector2 center, int sides, float radius, float rotation, float lineThick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineLinear (Vector2 *points, int pointCount, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineBasis (Vector2 *points, int pointCount, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineCatmullRom (Vector2 *points, int pointCount, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineBezierQuadratic (Vector2 *points, int pointCount, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineBezierCubic (Vector2 *points, int pointCount, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineSegmentLinear (Vector2 p1, Vector2 p2, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineSegmentBasis (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineSegmentCatmullRom (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineSegmentBezierQuadratic (Vector2 p1, Vector2 c2, Vector2 p3, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSplineSegmentBezierCubic (Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetSplinePointLinear (Vector2 startPos, Vector2 endPos, float t) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetSplinePointBasis (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetSplinePointCatmullRom (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetSplinePointBezierQuad (Vector2 p1, Vector2 c2, Vector2 p3, float t) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector2 GetSplinePointBezierCubic (Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float t) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionRecs (Rectangle rec1, Rectangle rec2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionCircles (Vector2 center1, float radius1, Vector2 center2, float radius2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionCircleRec (Vector2 center, float radius, Rectangle rec) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionPointRec (Vector2 point, Rectangle rec) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionPointCircle (Vector2 point, Vector2 center, float radius) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionPointTriangle (Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionPointPoly (Vector2 point, Vector2 *points, int pointCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionLines (Vector2 startPos1, Vector2 endPos1, Vector2 startPos2, Vector2 endPos2, Vector2 *collisionPoint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionPointLine (Vector2 point, Vector2 p1, Vector2 p2, int threshold) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Rectangle GetCollisionRec (Rectangle rec1, Rectangle rec2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image LoadImage (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image LoadImageRaw (const char *fileName, int width, int height, int format, int headerSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image LoadImageSvg (const char *fileNameOrString, int width, int height) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image LoadImageAnim (const char *fileName, int *frames) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image LoadImageFromMemory (const char *fileType, const unsigned char *fileData, int dataSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image LoadImageFromTexture (Texture2D texture) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image LoadImageFromScreen (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsImageReady (Image image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadImage (Image image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool ExportImage (Image image, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function unsigned char *ExportImageToMemory (Image image, const char *fileType, int *fileSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool ExportImageAsCode (Image image, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageColor (int width, int height, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageGradientLinear (int width, int height, int direction, Color start, Color end) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageGradientRadial (int width, int height, float density, Color inner, Color outer) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageGradientSquare (int width, int height, float density, Color inner, Color outer) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageChecked (int width, int height, int checksX, int checksY, Color col1, Color col2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageWhiteNoise (int width, int height, float factor) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImagePerlinNoise (int width, int height, int offsetX, int offsetY, float scale) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageCellular (int width, int height, int tileSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageText (int width, int height, const char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image ImageCopy (Image image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image ImageFromImage (Image image, Rectangle rec) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image ImageText (const char *text, int fontSize, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image ImageTextEx (Font font, const char *text, float fontSize, float spacing, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageFormat (Image *image, int newFormat) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageToPOT (Image *image, Color fill) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageCrop (Image *image, Rectangle crop) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageAlphaCrop (Image *image, float threshold) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageAlphaClear (Image *image, Color color, float threshold) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageAlphaMask (Image *image, Image alphaMask) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageAlphaPremultiply (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageBlurGaussian (Image *image, int blurSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageKernelConvolution (Image *image, float* kernel, int kernelSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageResize (Image *image, int newWidth, int newHeight) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageResizeNN (Image *image, int newWidth,int newHeight) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageResizeCanvas (Image *image, int newWidth, int newHeight, int offsetX, int offsetY, Color fill) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageMipmaps (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDither (Image *image, int rBpp, int gBpp, int bBpp, int aBpp) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageFlipVertical (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageFlipHorizontal (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageRotate (Image *image, int degrees) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageRotateCW (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageRotateCCW (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageColorTint (Image *image, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageColorInvert (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageColorGrayscale (Image *image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageColorContrast (Image *image, float contrast) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageColorBrightness (Image *image, int brightness) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageColorReplace (Image *image, Color color, Color replace) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color *LoadImageColors (Image image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color *LoadImagePalette (Image image, int maxPaletteSize, int *colorCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadImageColors (Color *colors) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadImagePalette (Color *colors) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Rectangle GetImageAlphaBorder (Image image, float threshold) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color GetImageColor (Image image, int x, int y) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageClearBackground (Image *dst, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawPixel (Image *dst, int posX, int posY, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawPixelV (Image *dst, Vector2 position, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawLine (Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawLineV (Image *dst, Vector2 start, Vector2 end, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawCircle (Image *dst, int centerX, int centerY, int radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawCircleV (Image *dst, Vector2 center, int radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawCircleLines (Image *dst, int centerX, int centerY, int radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawCircleLinesV (Image *dst, Vector2 center, int radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawRectangle (Image *dst, int posX, int posY, int width, int height, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawRectangleV (Image *dst, Vector2 position, Vector2 size, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawRectangleRec (Image *dst, Rectangle rec, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawRectangleLines (Image *dst, Rectangle rec, int thick, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDraw (Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawText (Image *dst, const char *text, int posX, int posY, int fontSize, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure ImageDrawTextEx (Image *dst, Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + function Load_Texture ( + File_Path : String := "" + ) return Texture with + Import => True, + Convention => C, + External_Name => "LoadTexture"; + + --~function Texture2D LoadTextureFromImage (Image image) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function TextureCubemap LoadTextureCubemap (Image image, int layout) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function RenderTexture2D LoadRenderTexture (int width, int height) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsTextureReady (Texture2D texture) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Unload_Texture ( + Data : Texture := No_Texture + ) with + Import => True, + Convention => C, + External_Name => "UnloadTexture"; + + function Is_Render_Texture_Ready ( + Target : Render_Texture := No_Render_Texture + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsRenderTextureReady"; + + procedure Unload_Render_Texture ( + Target : Render_Texture := No_Render_Texture + ) with + Import => True, + Convention => C, + External_Name => "UnloadRenderTexture"; + + procedure Update_Texture ( + Data : Texture := No_Texture; + Pixels : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "UpdateTexture"; + + procedure Update_Texture_Rec ( + Data : Texture := No_Texture; + Source : Rectangle := No_Rectangle; + Pixels : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "UpdateTextureRec"; + + procedure Gen_Texture_Mipmaps ( + Data : Texture := No_Texture + ) with + Import => True, + Convention => C, + External_Name => "GenTextureMipmaps"; + + procedure Set_Texture_Filter ( + Data : Texture := No_Texture; + Filter : Texture_Filter := Texture_Filter_Point + ) with + Import => True, + Convention => C, + External_Name => "SetTextureFilter"; + + procedure Set_Texture_Wrap ( + Data : Texture := No_Texture; + Wrap : Texture_Wrap := Texture_Wrap_Repeat + ) with + Import => True, + Convention => C, + External_Name => "SetTextureWrap"; + + procedure Draw_Texture ( + Data : Texture := No_Texture; + X : Integer := 0; + Y : Integer := 0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawTexture"; + + procedure Draw_Texture_V ( + Data : Texture := No_Texture; + Position : Vector_2D := (0.0, 0.0); + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawTextureV"; + + procedure Draw_Texture_Ex ( + Data : Texture := No_Texture; + Position : Vector_2D := (0.0, 0.0); + Rotation : Float := 0.0; + Scale : Float := 0.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawTextureEx"; + + procedure Draw_Texture_Rec ( + Data : Texture := No_Texture; + Source : Rectangle := No_Rectangle; + Position : Vector_2D := (0.0, 0.0); + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawTextureRec"; + + procedure Draw_Texture_Pro ( + Data : Texture := No_Texture; + Source : Rectangle := No_Rectangle; + Destination : Rectangle := No_Rectangle; + Origin : Vector_2D := (0.0, 0.0); + Rotation : Float := 0.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawTexturePro"; + + --~procedure DrawTextureNPatch (Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color Fade (Color color, float alpha) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int ColorToInt (Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector4 ColorNormalize (Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color ColorFromNormalized (Vector4 normalized) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Vector3 ColorToHSV (Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color ColorFromHSV (float hue, float saturation, float value) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color ColorTint (Color color, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color ColorBrightness (Color color, float factor) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color ColorContrast (Color color, float contrast) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color ColorAlpha (Color color, float alpha) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color ColorAlphaBlend (Color dst, Color src, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color GetColor (unsigned int hexValue) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Color GetPixelColor (void *srcPtr, int format) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure SetPixelColor (void *dstPtr, Color color, int format) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetPixelDataSize (int width, int height, int format) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + function Get_Font_Default return Font with + Import => True, + Convention => C, + External_Name => "GetFontDefault"; + + function Load_Font ( + File_Name : String := "" + ) return Font with + Import => True, + Convention => C, + External_Name => "LoadFont"; + + --~function Font LoadFontEx (const char *fileName, int fontSize, int *codepoints, int codepointCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Font LoadFontFromImage (Image image, Color key, int firstChar) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Font LoadFontFromMemory (const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsFontReady (Font font) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function GlyphInfo *LoadFontData (const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Image GenImageFontAtlas (const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadFontData (GlyphInfo *glyphs, int glyphCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Unload_Font ( + Data : Font := No_Font + ) with + Import => True, + Convention => C, + External_Name => "UnloadFont"; + + --~function bool ExportFontAsCode (Font font, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_FPS ( + X : Integer := 0; + Y : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "DrawFPS"; + + procedure Draw_Text ( + Text : String := ""; + X : Integer := 0; + Y : Integer := 0; + Size : Integer := 32; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawText"; + + procedure Draw_Text_Ex ( + Data : Font := Get_Font_Default; + Text : String := ""; + Position : Vector_2D := (0.0, 0.0); + Font_Size : Float := 0.0; + Spacing : Float := 0.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawTextEx"; + + procedure Draw_Text_Pro ( + Data : Font := Get_Font_Default; + Text : String := ""; + Position : Vector_2D := (0.0, 0.0); + Origin : Vector_2D := (0.0, 0.0); + Rotation : Float := 0.0; + Font_Size : Float := 0.0; + Spacing : Float := 0.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawTextPro"; + + --~procedure DrawTextCodepoint (Font font, int codepoint, Vector2 position, float fontSize, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawTextCodepoints (Font font, const int *codepoints, int codepointCount, Vector2 position, float fontSize, float spacing, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Set_Text_Line_Spacing ( + Spacing : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetTextLineSpacing"; + + function Measure_Text ( + Text : String := ""; + Font_Size : Integer := 0 + ) return Integer with + Import => True, + Convention => C, + External_Name => "MeasureText"; + + function Measure_Text_Ex ( + Data : Font := Get_Font_Default; + Text : String := ""; + Font_Size : Float := 0.0; + Spacing : Float := 0.0 + ) return Vector_2D with + Import => True, + Convention => C, + External_Name => "MeasureTextEx"; + + function Get_Glyph_Index ( + Data : Font := Get_Font_Default; + Code_Point : Integer := 0 + ) return Integer with + Import => True, + Convention => C, + External_Name => "GetGlyphIndex"; + + function Get_Glyph_Info ( + Data : Font := Get_Font_Default; + Code_Point : Integer := 0 + ) return Glyph_Info with + Import => True, + Convention => C, + External_Name => "GetGlyphInfo"; + + function Get_Glyph_Atlas_Rec ( + Data : Font := Get_Font_Default; + Code_Point : Integer := 0 + ) return Rectangle with + Import => True, + Convention => C, + External_Name => "GetGlyphAtlasRec"; + + function Load_UTF8 ( + Code_Points : access Integer := null; + Length : Integer := 0 + ) return access Character with + Import => True, + Convention => C, + External_Name => "LoadUTF8"; + + procedure Unload_UTF8 ( + Text : access Character := null + ) with + Import => True, + Convention => C, + External_Name => "UnloadUTF8"; + + --~function int *LoadCodepoints (const char *text, int *count) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadCodepoints (int *codepoints) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetCodepointCount (const char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetCodepoint (const char *text, int *codepointSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetCodepointNext (const char *text, int *codepointSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int GetCodepointPrevious (const char *text, int *codepointSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *CodepointToUTF8 (int codepoint, int *utf8Size) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int TextCopy (char *dst, const char *src) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool TextIsEqual (const char *text1, const char *text2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function unsigned int TextLength (const char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *TextFormat (const char *text, ...) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *TextSubtext (const char *text, int position, int length) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function char *TextReplace (char *text, const char *replace, const char *by) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function char *TextInsert (const char *text, const char *insert, int position) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *TextJoin (const char **textList, int count, const char *delimiter) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char **TextSplit (const char *text, char delimiter, int *count) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure TextAppend (char *text, const char *append, int *position) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int TextFindIndex (const char *text, const char *find) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *TextToUpper (const char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *TextToLower (const char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function const char *TextToPascal (const char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function int TextToInteger (const char *text) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawLine3D (Vector3 startPos, Vector3 endPos, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawPoint3D (Vector3 position, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCircle3D (Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawTriangle3D (Vector3 v1, Vector3 v2, Vector3 v3, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawTriangleStrip3D (Vector3 *points, int pointCount, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Cube ( + Position : Vector_3D := (0.0, 0.0, 0.0); + Width : Float := 0.0; + Height : Float := 0.0; + Length : Float := 0.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawCube"; + + --~procedure DrawCubeV (Vector3 position, Vector3 size, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Cube_Wires ( + Position : Vector_3D := (0.0, 0.0, 0.0); + Width : Float := 0.0; + Height : Float := 0.0; + Length : Float := 0.0; + Tint : Color := Black + ) with + Import => True, + Convention => C, + External_Name => "DrawCubeWires"; + + --~procedure DrawCubeWiresV (Vector3 position, Vector3 size, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSphere (Vector3 centerPos, float radius, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSphereEx (Vector3 centerPos, float radius, int rings, int slices, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawSphereWires (Vector3 centerPos, float radius, int rings, int slices, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCylinder (Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCylinderEx (Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCylinderWires (Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCylinderWiresEx (Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCapsule (Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawCapsuleWires (Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Plane ( + Center : Vector_3D := (0.0, 0.0, 0.0); + Size : Vector_2D := (0.0, 0.0); + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawPlane"; + + --~procedure DrawRay (Ray ray, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure DrawGrid (int slices, float spacing) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + function Load_Model ( + File_Name : String := "" + ) return Model with + Import => True, + Convention => C, + External_Name => "LoadModel"; + + --~function Model LoadModelFromMesh (Mesh mesh) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsModelReady (Model model) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Unload_Model ( + Data : Model := No_Model + ) with + Import => True, + Convention => C, + External_Name => "UnloadModel"; + + --~function BoundingBox GetModelBoundingBox (Model model) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Model ( + Data : Model := No_Model; + Position : Vector_3D := (0.0, 0.0, 0.0); + Scale : Float := 1.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawModel"; + + procedure Draw_Model_Ex ( + Data : Model := No_Model; + Position : Vector_3D := (0.0, 0.0, 0.0); + Axis : Vector_3D := (0.0, 0.0, 0.0); + Angle : Float := 0.0; + Scale : Vector_3D := (1.0, 1.0, 1.0); + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawModelEx"; + + --~procedure DrawModelWires (Model model, Vector3 position, float scale, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Model_Wires_Ex ( + Data : Model := No_Model; + Position : Vector_3D := (0.0, 0.0, 0.0); + Axis : Vector_3D := (0.0, 0.0, 0.0); + Angle : Float := 0.0; + Scale : Vector_3D := (1.0, 1.0, 1.0); + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawModelWiresEx"; + + --~procedure DrawBoundingBox (BoundingBox box, Color color) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Billboard ( + Camera : Camera_3D := No_Camera_3D; + Billboard : Texture := No_Texture; + Position : Vector_3D := (0.0, 0.0, 0.0); + Size : Float := 0.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawBillboard"; + + --~procedure DrawBillboardRec (Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Billboard_Pro ( + Camera : Camera_3D := No_Camera_3D; + Billboard : Texture := No_Texture; + Source : Rectangle := No_Rectangle; + Position : Vector_3D := (0.0, 0.0, 0.0); + Up : Vector_3D := (0.0, 0.0, 0.0); + Size : Vector_2D := (0.0, 0.0); + Origin : Vector_2D := (0.0, 0.0); + Rotation : Float := 0.0; + Tint : Color := White + ) with + Import => True, + Convention => C, + External_Name => "DrawBillboardPro"; + + procedure Upload_Mesh ( + Data : access Mesh := null; + Dynamic : Logical := False + ) with + Import => True, + Convention => C, + External_Name => "UploadMesh"; + + --~procedure UpdateMeshBuffer (Mesh mesh, int index, const void *data, int dataSize, int offset) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadMesh (Mesh mesh) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Draw_Mesh ( + Data : Mesh := No_Mesh; + Pixels : Material := No_Material; + Transform : Matrix_4D := (others => 0.0) + ) with + Import => True, + Convention => C, + External_Name => "DrawMesh"; + + --~procedure DrawMeshInstanced (Mesh mesh, Material material, const Matrix *transforms, int instances) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function BoundingBox GetMeshBoundingBox (Mesh mesh) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure GenMeshTangents (Mesh *mesh) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool ExportMesh (Mesh mesh, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool ExportMeshAsCode (Mesh mesh, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshPoly (int sides, float radius) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + function Gen_Mesh_Plane ( + Width : Float := 1.0; + Height : Float := 1.0; + X : Integer := 1; + Z : Integer := 1 + ) return Mesh with + Import => True, + Convention => C, + External_Name => "GenMeshPlane"; + + --~function Mesh GenMeshCube (float width, float height, float length) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshSphere (float radius, int rings, int slices) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshHemiSphere (float radius, int rings, int slices) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshCylinder (float radius, float height, int slices) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshCone (float radius, float height, int slices) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshTorus (float radius, float size, int radSeg, int sides) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshKnot (float radius, float size, int radSeg, int sides) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshHeightmap (Image heightmap, Vector3 size) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Mesh GenMeshCubicmap (Image cubicmap, Vector3 cubeSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Material *LoadMaterials (const char *fileName, int *materialCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Material LoadMaterialDefault (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsMaterialReady (Material material) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadMaterial (Material material) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure SetMaterialTexture (Material *material, int mapType, Texture2D texture) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure SetModelMeshMaterial (Model *model, int meshId, int materialId) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function ModelAnimation *LoadModelAnimations (const char *fileName, int *animCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UpdateModelAnimation (Model model, ModelAnimation anim, int frame) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadModelAnimation (ModelAnimation anim) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadModelAnimations (ModelAnimation *animations, int animCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsModelAnimationValid (Model model, ModelAnimation anim) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionSpheres (Vector3 center1, float radius1, Vector3 center2, float radius2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionBoxes (BoundingBox box1, BoundingBox box2) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool CheckCollisionBoxSphere (BoundingBox box, Vector3 center, float radius) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function RayCollision GetRayCollisionSphere (Ray ray, Vector3 center, float radius) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function RayCollision GetRayCollisionBox (Ray ray, BoundingBox box) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function RayCollision GetRayCollisionMesh (Ray ray, Mesh mesh, Matrix transform) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function RayCollision GetRayCollisionTriangle (Ray ray, Vector3 p1, Vector3 p2, Vector3 p3) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function RayCollision GetRayCollisionQuad (Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~typedef void (*AudioCallback) (void *bufferData, unsigned int frames) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Open_Audio_Device with + Import => True, + Convention => C, + External_Name => "InitAudioDevice"; + + procedure Close_Audio_Device with + Import => True, + Convention => C, + External_Name => "CloseAudioDevice"; + + --~function bool IsAudioDeviceReady (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure SetMasterVolume (float volume) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function float GetMasterVolume (void) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Wave LoadWave (const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Wave LoadWaveFromMemory (const char *fileType, const unsigned char *fileData, int dataSize) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsWaveReady (Wave wave) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + function Load_Sound ( + File_Name : String := "" + ) return Sound with + Import => True, + Convention => C, + External_Name => "LoadSound"; + + --~function Sound LoadSoundFromWave (Wave wave) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function Sound LoadSoundAlias (Sound source) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool IsSoundReady (Sound sound) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UpdateSound (Sound sound, const void *data, int sampleCount) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~procedure UnloadWave (Wave wave) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Unload_Sound ( + Data : Sound := No_Sound + ) with + Import => True, + Convention => C, + External_Name => "UnloadSound"; + + --~procedure UnloadSoundAlias (Sound alias) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool ExportWave (Wave wave, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + --~function bool ExportWaveAsCode (Wave wave, const char *fileName) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Play_Sound ( + Data : Sound := No_Sound + ) with + Import => True, + Convention => C, + External_Name => "PlaySound"; + + procedure Stop_Sound ( + Data : Sound := No_Sound + ) with + Import => True, + Convention => C, + External_Name => "StopSound"; + + procedure Pause_Sound ( + Data : Sound := No_Sound + ) with + Import => True, + Convention => C, + External_Name => "PauseSound"; + + procedure Resume_Sound ( + Data : Sound := No_Sound + ) with + Import => True, + Convention => C, + External_Name => "ResumeSound"; + + function Is_Sound_Playing ( + Data : Sound := No_Sound + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsSoundPlaying"; + + procedure Set_Sound_Volume ( + Data : Sound := No_Sound; + Volume : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetSoundVolume"; + + procedure Set_Sound_Pitch ( + Data : Sound := No_Sound; + Pitch : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetSoundPitch"; + + procedure Set_Sound_Pan ( + Data : Sound := No_Sound; + Pan : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetSoundPan"; + + function Wave_Copy ( + Data : Wave := No_Wave + ) return Wave with + Import => True, + Convention => C, + External_Name => "WaveCopy"; + + procedure Wave_Crop ( + Data : access Wave := null; + First_Sample : Integer := 0; + Final_Sample : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "WaveCrop"; + + procedure Wave_Format ( + Data : access Wave := null; + Sample_Rate : Integer := 0; + Sample_Size : Integer := 0; + Channels : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "WaveFormat"; + + function Load_Wave_Samples ( + Data : Wave := No_Wave + ) return access Float with + Import => True, + Convention => C, + External_Name => "LoadWaveSamples"; + + procedure Unload_Wave_Samples ( + Samples : access Float := null + ) with + Import => True, + Convention => C, + External_Name => "UnloadWaveSamples"; + + function Load_Music_Stream ( + File_Name : String := "" + ) return Music with + Import => True, + Convention => C, + External_Name => "LoadMusicStream"; + + function Load_Music_Stream_From_Memory ( + File_Type : String := ""; + Data : Pointer := null; + Data_Size : Integer := 0 + ) return Music with + Import => True, + Convention => C, + External_Name => "LoadMusicStreamFromMemory"; + + function Is_Music_Ready ( + Data : Music := No_Music + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsMusicReady"; + + procedure Unload_Music_Stream ( + Data : Music := No_Music + ) with + Import => True, + Convention => C, + External_Name => "UnloadMusicStream"; + + procedure Play_Music_Stream ( + Data : Music := No_Music + ) with + Import => True, + Convention => C, + External_Name => "PlayMusicStream"; + + function Is_Music_Stream_Playing ( + Data : Music := No_Music + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsMusicStreamPlaying"; + + procedure Update_Music_Stream ( + Data : Music := No_Music + ) with + Import => True, + Convention => C, + External_Name => "UpdateMusicStream"; + + procedure Stop_Music_Stream ( + Data : Music := No_Music + ) with + Import => True, + Convention => C, + External_Name => "StopMusicStream"; + + procedure Pause_Music_Stream ( + Data : Music := No_Music + ) with + Import => True, + Convention => C, + External_Name => "PauseMusicStream"; + + procedure Resume_Music_Stream ( + Data : Music := No_Music + ) with + Import => True, + Convention => C, + External_Name => "ResumeMusicStream"; + + procedure Seek_Music_Stream ( + Data : Music := No_Music; + Position : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SeekMusicStream"; + + procedure Set_Music_Volume ( + Data : Music := No_Music; + Volume : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetMusicVolume"; + + procedure Set_Music_Pitch ( + Data : Music := No_Music; + Pitch : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetMusicPitch"; + + procedure Set_Music_Pan ( + Data : Music := No_Music; + Pan : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetMusicPan"; + + function Get_Music_Time_Length ( + Data : Music := No_Music + ) return Float with + Import => True, + Convention => C, + External_Name => "GetMusicTimeLength"; + + function Get_Music_Time_Played ( + Data : Music := No_Music + ) return Float with + Import => True, + Convention => C, + External_Name => "GetMusicTimePlayed"; + + function Load_Audio_Stream ( + Sample_Rate : Natural := 0; + Sample_Size : Natural := 0; + Channels : Natural := 0 + ) return Audio_Stream with + Import => True, + Convention => C, + External_Name => "LoadAudioStream"; + + function Is_Audio_Stream_Ready ( + Data : Audio_Stream := No_Audio_Stream + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsAudioStreamReady"; + + procedure Unload_Audio_Stream ( + Data : Audio_Stream := No_Audio_Stream + ) with + Import => True, + Convention => C, + External_Name => "UnloadAudioStream"; + + procedure Update_Audio_Stream ( + Data : Audio_Stream := No_Audio_Stream; + Raw_Data : Pointer := null; + Frame_Count : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "UpdateAudioStream"; + + function Is_Audio_Stream_Processed ( + Data : Audio_Stream := No_Audio_Stream + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsAudioStreamProcessed"; + + procedure Play_Audio_Stream ( + Data : Audio_Stream := No_Audio_Stream + ) with + Import => True, + Convention => C, + External_Name => "PlayAudioStream"; + + procedure Pause_Audio_Stream ( + Data : Audio_Stream := No_Audio_Stream + ) with + Import => True, + Convention => C, + External_Name => "PauseAudioStream"; + + procedure Resume_Audio_Stream ( + Data : Audio_Stream := No_Audio_Stream + ) with + Import => True, + Convention => C, + External_Name => "ResumeAudioStream"; + + function Is_Audio_Stream_Playing ( + Data : Audio_Stream := No_Audio_Stream + ) return Logical with + Import => True, + Convention => C, + External_Name => "IsAudioStreamPlaying"; + + procedure Stop_Audio_Stream ( + Data : Audio_Stream := No_Audio_Stream + ) with + Import => True, + Convention => C, + External_Name => "StopAudioStream"; + + procedure Set_Audio_Stream_Volume ( + Data : Audio_Stream := No_Audio_Stream; + Volume : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetAudioStreamVolume"; + + procedure Set_Audio_Stream_Pitch ( + Data : Audio_Stream := No_Audio_Stream; + Pitch : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetAudioStreamPitch"; + + procedure Set_Audio_Stream_Pan ( + Data : Audio_Stream := No_Audio_Stream; + Pan : Float := 0.0 + ) with + Import => True, + Convention => C, + External_Name => "SetAudioStreamPan"; + + procedure Set_Audio_Stream_Buffer_Size_Default ( + Size : Integer := 0 + ) with + Import => True, + Convention => C, + External_Name => "SetAudioStreamBufferSizeDefault"; + + --~procedure SetAudioStreamCallback (AudioStream stream, AudioCallback callback) with + --~Import => True, + --~Convention => C, + --~External_Name => ""; + + procedure Attach_Audio_Stream_Processor ( + Stream : Audio_Stream := No_Audio_Stream; + Processor : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "AttachAudioStreamProcessor"; + + procedure Detach_Audio_Stream_Processor ( + Stream : Audio_Stream := No_Audio_Stream; + Processor : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "DetachAudioStreamProcessor"; + + procedure Attach_Audio_Mixed_Processor ( + Processor : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "AttachAudioMixedProcessor"; + + procedure Detach_Audio_Mixed_Processor ( + Processor : Pointer := null + ) with + Import => True, + Convention => C, + External_Name => "DetachAudioMixedProcessor"; + +end Raylib; diff --git a/xhampion.adb b/xhampion.adb new file mode 100644 index 0000000..79d8658 --- /dev/null +++ b/xhampion.adb @@ -0,0 +1,99 @@ +with raylib; +use raylib; + +procedure xhampion is + + type monster_index is ( + afrit, + brown_chaos_serpent, + centaur, + dark_bishop, + death_wyvern, + ettin, + green_chaos_serpent, + maulotaur, + pig, + reiver, + stalker, + wendigo + ); + + view : aliased camera_3d := ( + position => (0.0, 0.0, 0.0), + target => (0.0, 0.0, 1.0), + up => (0.0, 1.0, 0.0), + field_of_view => 90.0, + projection => camera_perspective + ); + + model_count : natural := 2; + model_array : array (0 .. 1) of model; + + texture_count : natural := 2; + texture_array : array (0 .. 1) of texture; + + movement : vector_3d := (0.0, 0.0, 0.0); + rotation : vector_3d := (0.0, 0.0, 0.0); + + dd : vector_2d := (0.0, 0.0); + +begin + + open_window (1800, 900, "Xhampion" & character'val (0)); + + disable_cursor; + + set_target_fps (60); + + set_trace_log_level (log_none); + + model_array (0) := load_model ("./sprite/wall.obj" & character'val (0)); + model_array (1) := load_model ("./sprite/meme.obj" & character'val (0)); + + texture_array (0) := load_texture ("./sprite/hand.png" & character'val (0)); + + gameplay: loop + exit when window_should_close; + + --~update_camera (view'access, camera_first_person); + if is_key_pressed (key_w) then movement.x := movement.x + 1.0; + elsif is_key_pressed (key_s) then movement.x := movement.x - 1.0; + elsif is_key_pressed (key_a) then movement.y := movement.y - 1.0; + elsif is_key_pressed (key_d) then movement.y := movement.y + 1.0; + end if; + + dd := get_mouse_delta; + + rotation.x := dd.x; + + update_camera_pro (view'access, movement, rotation, 1.0); + --~update_camera_pro (view'access, (0.0, 0.0, 0.0), rotation, 1.0); + --~update_camera_pro (view'access, movement, (0.0, 0.0, 0.0), 1.0); + + begin_drawing; + + clear_background (sky_blue); + + begin_mode_3d (view); + + for i in 0 .. 40 + loop + for j in 0 .. 40 + loop + draw_model (model_array (0), (float (i) * (-4.0), -10.0, float (j) * (-4.0)), 2.0, white); + draw_model (model_array (1), (float (i) * (-4.0), -10.0, float (j) * (-4.0)), 2.0, white); + end loop; + end loop; + + end_mode_3d; + + draw_texture (texture_array (0), (get_screen_width - 960) / 2, get_screen_height - 600, white); + + draw_fps (0, 0); + + end_drawing; + end loop gameplay; + + close_window; + +end xhampion;