-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic -- -- GNU General Public Licence (version 3 or later) with interfaces.c; use interfaces.c; package ray is ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ type color_range is range 0 .. 2 ** 8 - 1; type logical is new boolean; for logical'size use 32; for color_range'size use 8; 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 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 vessel is record x, y : float; end record with convention => c_pass_by_copy; type color is record r, g, b, a : color_range; end record with convention => c_pass_by_copy; type rectangle is record x ,y, width, height : float; end record with convention => c_pass_by_copy; type texture is record id : natural; width, height, mipmaps, format : integer; end record with convention => c_pass_by_copy; type font is record base, count, pad : integer; data : texture; r : access rectangle; non : access natural; end record with convention => c_pass_by_copy; type stream is record buffer, processor : access natural; rate, size, channels : natural; end record with convention => c_pass_by_copy; type sound is record data : stream; frame : natural; end record with convention => c_pass_by_copy; -- procedure open_window (width, height : integer; title : string) with import => true, convention => c, external_name => "InitWindow"; procedure close_window with import => true, convention => c, external_name => "CloseWindow"; -- procedure open_audio_device with import => true, convention => c, external_name => "InitAudioDevice"; procedure close_audio_device with import => true, convention => c, external_name => "CloseAudioDevice"; -- procedure set_exit_key (key : integer) with import => true, convention => c, external_name => "SetExitKey"; function exit_key_is_pressed return logical with import => true, convention => c, external_name => "WindowShouldClose"; function get_key_pressed return integer with import => true, convention => c, external_name => "GetKeyPressed"; function mouse_button_is_pressed (button : mouse_button) return logical with import => true, convention => c, external_name => "IsMouseButtonPressed"; function mouse_button_is_released (button : mouse_button) return logical with import => true, convention => c, external_name => "IsMouseButtonReleased"; 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_vessel return vessel with import => true, convention => c, external_name => "GetMousePosition"; 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"; -- procedure clear_background (tint : color) 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 set_target_fps (fps : integer) with import => true, convention => c, external_name => "SetTargetFPS"; function get_fps return integer with import => true, convention => c, external_name => "GetFPS"; procedure randomization (seed : natural) with import => true, convention => c, external_name => "SetRandomSeed"; function get_random (minimum, maximum : integer) return integer with import => true, convention => c, external_name => "GetRandomValue"; -- procedure take_screenshot (path : string := "screenshot.png") with import => true, convention => c, external_name => "TakeScreenshot"; -- procedure set_trace_log_level (level : trace_log_level) with import => true, convention => c, external_name => "SetTraceLogLevel"; -- function load_texture (path : string) return texture with import => true, convention => c, external_name => "LoadTexture"; function load_sound (path : string) return sound with import => true, convention => c, external_name => "LoadSound"; function load_font (path : string) return font with import => true, convention => c, external_name => "LoadFont"; -- procedure unload_texture (data : texture) with import => true, convention => c, external_name => "UnloadTexture"; procedure unload_sound (data : sound) with import => true, convention => c, external_name => "UnloadSound"; procedure unload_font (data : font) with import => true, convention => c, external_name => "UnloadFont"; -- procedure draw_line (x0, y0, x1, y1 : integer; tint : color) with import => true, convention => c, external_name => "DrawLine"; -- procedure draw_rectangle (x, y, width, height : integer; tint : color) with import => true, convention => c, external_name => "DrawRectangle"; -- procedure draw_image (data : texture; uv : rectangle; view : vessel; tint : color) with import => true, convention => c, external_name => "DrawTextureRec"; -- procedure draw_text (data : font; text : string; view : vessel; size, pad : float; tint : color) with import => true, convention => c, external_name => "DrawTextEx"; -- procedure play_sound (data : sound) with import => true, convention => c, external_name => "PlaySound"; procedure stop_sound (data : sound) with import => true, convention => c, external_name => "StopSound"; procedure pause_sound (data : sound) with import => true, convention => c, external_name => "PauseSound"; procedure resume_sound (data : sound) with import => true, convention => c, external_name => "ResumeSound"; procedure megadraw ( data : texture; uv : rectangle; view : rectangle; origin : vessel; rotate : float; tint : color ) with import => true, convention => c, external_name => "DrawTexturePro"; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end ray;