1use libc::{c_char, c_double, c_float, c_int, c_uchar, c_uint, c_void};
86
87use crate::{
88 audio::{AudioCallback, AudioStream, Music, Sound, Wave},
89 camera::Camera2D,
90 color::Color,
91 consts::{
92 ConfigFlag, GamepadAxis, GamepadButton, Gesture, KeyboardKey, MouseButton, MouseCursor,
93 TextureFilter, TextureWrap,
94 },
95 math::{Rectangle, Vector2},
96 texture::{Image, RenderTexture, RenderTexture2D, Texture},
97};
98
99unsafe extern "C" {
101 #[link_name = "InitWindow"]
103 pub fn init_window(width: c_int, height: c_int, title: *const c_char);
104 #[link_name = "CloseWindow"]
106 pub fn close_window();
107 #[link_name = "WindowShouldClose"]
109 pub fn window_should_close() -> bool;
110 #[link_name = "IsWindowReady"]
112 pub fn is_window_ready() -> bool;
113 #[link_name = "IsWindowFullscreen"]
115 pub fn is_window_fullscreen() -> bool;
116 #[link_name = "IsWindowHidden"]
118 pub fn is_window_hidden() -> bool;
119 #[link_name = "IsWindowMinimized"]
121 pub fn is_window_minimized() -> bool;
122 #[link_name = "IsWindowMaximized"]
124 pub fn is_window_maximized() -> bool;
125 #[link_name = "IsWindowFocused"]
127 pub fn is_window_focused() -> bool;
128 #[link_name = "IsWindowResized"]
130 pub fn is_window_resized() -> bool;
131 #[link_name = "IsWindowState"]
144 pub fn is_window_state(flags: ConfigFlag) -> bool;
145 #[link_name = "SetWindowState"]
158 pub fn set_window_state(flags: ConfigFlag);
159 #[link_name = "ClearWindowState"]
172 pub fn clear_window_state(flags: ConfigFlag);
173 #[link_name = "ToggleFullscreen"]
175 pub fn toggle_fullscreen();
176 #[link_name = "ToggleBorderlessWindowed"]
178 pub fn toggle_borderless_windowed();
179 #[link_name = "MaximizeWindow"]
181 pub fn maximize_window();
182 #[link_name = "MinimizeWindow"]
184 pub fn minimize_window();
185 #[link_name = "RestoreWindow"]
187 pub fn restore_window();
188 #[link_name = "SetWindowIcon"]
190 pub fn set_window_icon(image: Image);
191 #[link_name = "SetWindowIcons"]
193 pub fn set_window_icons(images: *const Image);
194 #[link_name = "SetWindowTitle"]
196 pub fn set_window_title(title: *const c_char);
197 #[link_name = "SetWindowPosition"]
199 pub fn set_window_position(x: c_int, y: c_int);
200 #[link_name = "SetWindowMonitor"]
202 pub fn set_window_monitor(monitor: c_int);
203 #[link_name = "SetWindowMinSize"]
205 pub fn set_window_min_size(width: c_int, height: c_int);
206 #[link_name = "SetWindowMaxSize"]
208 pub fn set_window_max_size(width: c_int, height: c_int);
209 #[link_name = "SetWindowSize"]
211 pub fn set_window_size(width: c_int, height: c_int);
212 #[link_name = "SetWindowOpacity"]
214 pub fn set_window_opacity(opacity: c_float);
215 #[link_name = "SetWindowFocused"]
217 pub fn set_window_focused();
218 #[link_name = "GetScreenWidth"]
220 pub fn get_screen_width() -> c_int;
221 #[link_name = "GetScreenHeight"]
223 pub fn get_screen_height() -> c_int;
224 #[link_name = "GetRenderWidth"]
226 pub fn get_render_width() -> c_int;
227 #[link_name = "GetRenderHeight"]
229 pub fn get_render_height() -> c_int;
230 #[link_name = "GetMonitorCount"]
232 pub fn get_monitor_count() -> c_int;
233 #[link_name = "GetCurrentMonitor"]
235 pub fn get_current_monitor() -> c_int;
236 #[link_name = "GetMonitorPosition"]
238 pub fn get_monitor_position(monitor: c_int) -> Vector2;
239 #[link_name = "GetMonitorWidth"]
241 pub fn get_monitor_width(monitor: c_int) -> c_int;
242 #[link_name = "GetMonitorHeight"]
244 pub fn get_monitor_height(monitor: c_int) -> c_int;
245 #[link_name = "GetMonitorPhysicalWidth"]
247 pub fn get_monitor_physical_width(monitor: c_int) -> c_int;
248 #[link_name = "GetMonitorPhysicalHeight"]
250 pub fn get_monitor_physical_height(monitor: c_int) -> c_int;
251 #[link_name = "GetMonitorRefreshRate"]
253 pub fn get_monitor_refresh_rate(monitor: c_int) -> c_int;
254 #[link_name = "GetWindowPosition"]
256 pub fn get_window_position() -> Vector2;
257 #[link_name = "GetWindowScaleDPI"]
259 pub fn get_window_scale_dpi() -> Vector2;
260 #[link_name = "GetMonitorName"]
262 pub fn get_monitor_name(monitor: c_int) -> *const c_char;
263 #[link_name = "SetClipboardText"]
265 pub fn set_clipboard_text(text: *const c_char);
266 #[link_name = "GetClipboardText"]
268 pub fn get_clipboard_text() -> *const c_char;
269 #[link_name = "GetClipboardImage"]
271 pub fn get_clipboard_image() -> Image;
272 #[link_name = "EnableEventWaiting"]
274 pub fn enable_event_waiting();
275 #[link_name = "DisableEventWaiting"]
277 pub fn disable_event_waiting();
278}
279
280unsafe extern "C" {
282 #[link_name = "ShowCursor"]
284 pub fn show_cursor();
285 #[link_name = "HideCursor"]
287 pub fn hide_cursor();
288 #[link_name = "IsCursorHidden"]
290 pub fn is_cursor_hidden() -> bool;
291 #[link_name = "EnableCursor"]
293 pub fn enable_cursor();
294 #[link_name = "DisableCursor"]
296 pub fn disable_cursor();
297 #[link_name = "IsCursorOnScreen"]
299 pub fn is_cursor_on_screen() -> bool;
300}
301
302unsafe extern "C" {
304 #[link_name = "ClearBackground"]
306 pub fn clear_background(color: Color);
307 #[link_name = "BeginDrawing"]
309 pub fn begin_drawing();
310 #[link_name = "EndDrawing"]
312 pub fn end_drawing();
313 #[link_name = "BeginMode2D"]
315 pub fn begin_mode_2d(camera: Camera2D);
316 #[link_name = "EndMode2D"]
318 pub fn end_mode_2d();
319 #[link_name = "BeginTextureMode"]
321 pub fn begin_texture_mode(render_texture: RenderTexture2D);
322 #[link_name = "EndTextureMode"]
324 pub fn end_texture_mode();
325}
326
327unsafe extern "C" {
329 #[link_name = "LoadImageFromMemory"]
331 pub fn load_image_from_memory(
332 file_type: *const c_char,
333 file_data: *const c_uchar,
334 data_size: c_int,
335 ) -> Image;
336}
337
338unsafe extern "C" {
341 #[link_name = "LoadTexture"]
343 pub fn load_texture(path: *const c_char) -> Texture;
344 #[link_name = "LoadTextureFromImage"]
346 pub fn load_texture_from_image(image: Image) -> Texture;
347 #[link_name = "LoadRenderTexture"]
349 pub fn load_render_texture(width: c_int, height: c_int) -> RenderTexture;
350 #[link_name = "IsTextureValid"]
352 pub fn is_texture_valid(texture: Texture) -> bool;
353 #[link_name = "UnloadTexture"]
355 pub fn unload_texture(texture: Texture);
356 #[link_name = "IsRenderTextureValid"]
358 pub fn is_render_texture_valid(target: RenderTexture) -> bool;
359 #[link_name = "UnloadRenderTexture"]
361 pub fn unload_render_texture(render_texture: RenderTexture);
362 #[link_name = "UpdateTexture"]
364 pub fn update_texture(texture: Texture, pixels: *const c_void);
365 #[link_name = "UpdateTextureRec"]
367 pub fn update_texture_rec(texture: Texture, rec: Rectangle, pixels: *const c_void);
368}
369
370unsafe extern "C" {
372 #[link_name = "GenTextureMipmaps"]
374 pub fn gen_texture_mipmaps(texture: *mut Texture);
375 #[link_name = "SetTextureFilter"]
377 pub fn set_texture_filter(texture: Texture, filter: TextureFilter);
378 #[link_name = "SetTextureWrap"]
380 pub fn set_texture_wrap(texture: Texture, wrap: TextureWrap);
381}
382
383unsafe extern "C" {
385 #[link_name = "DrawTexture"]
387 pub fn draw_texture(texture: Texture, pos_x: c_int, pos_y: c_int, tint: Color);
388 #[link_name = "DrawTextureV"]
390 pub fn draw_texture_v(texture: Texture, pos: Vector2, tint: Color);
391 #[link_name = "DrawTextureEx"]
393 pub fn draw_texture_ex(
394 texture: Texture,
395 pos: Vector2,
396 rotation: c_float,
397 scale: c_float,
398 tint: Color,
399 );
400 #[link_name = "DrawTextureRec"]
402 pub fn draw_texture_rec(texture: Texture, source: Rectangle, position: Vector2, tint: Color);
403 #[link_name = "DrawTexturePro"]
405 pub fn draw_texture_pro(
406 texture: Texture,
407 source: Rectangle,
408 dest: Rectangle,
409 origin: Vector2,
410 rotation: c_float,
411 tint: Color,
412 );
413 }
415
416unsafe extern "C" {
418 #[link_name = "DrawFPS"]
420 pub fn draw_fps(pos_x: c_int, pos_y: c_int);
421 #[link_name = "DrawText"]
423 pub fn draw_text(
424 text: *const c_char,
425 pos_x: c_int,
426 pos_y: c_int,
427 font_size: c_int,
428 color: Color,
429 );
430}
431
432unsafe extern "C" {
434 #[link_name = "MeasureText"]
436 pub fn measure_text(text: *const c_char, font_size: c_int);
437}
438
439unsafe extern "C" {
441 #[link_name = "DrawLine"]
443 pub fn draw_line(start_x: c_int, start_y: c_int, end_x: c_int, end_y: c_int, color: Color);
444 #[link_name = "DrawLineV"]
446 pub fn draw_line_v(start: Vector2, end: Vector2, color: Color);
447 #[link_name = "DrawLineEx"]
449 pub fn draw_line_ex(start: Vector2, end: Vector2, thick: c_float, color: Color);
450 #[link_name = "DrawLineStrip"]
452 pub fn draw_line_strip(points: *const Vector2, num_points: c_int, color: Color);
453 #[link_name = "DrawLineBezier"]
455 pub fn draw_line_bezier(start: Vector2, end: Vector2, thick: c_float, color: Color);
456 #[link_name = "DrawCircle"]
458 pub fn draw_circle(center_x: c_int, center_y: c_int, radius: c_float, color: Color);
459 #[link_name = "DrawCircleV"]
461 pub fn draw_circle_v(center: Vector2, radius: c_float, color: Color);
462 #[link_name = "DrawCircleLines"]
464 pub fn draw_circle_lines(center_x: c_int, center_y: c_int, radius: c_float, color: Color);
465 #[link_name = "DrawEllipse"]
467 pub fn draw_ellipse(
468 center_x: c_int,
469 center_y: c_int,
470 radius_x: c_float,
471 radius_y: c_float,
472 color: Color,
473 );
474 #[link_name = "DrawRectangleRec"]
476 pub fn draw_rectangle_rec(rec: Rectangle, color: Color);
477 #[link_name = "DrawRectanglePro"]
479 pub fn draw_rectangle_pro(rec: Rectangle, origin: Vector2, rotation: f32, color: Color);
480 #[link_name = "DrawRectangleLines"]
482 pub fn draw_rectangle_lines(
483 pos_x: c_int,
484 pos_y: c_int,
485 width: c_int,
486 height: c_int,
487 color: Color,
488 );
489 #[link_name = "DrawRectangleLinesEx"]
490 pub fn draw_rectangle_lines_ex(rect: Rectangle, line_thickness: c_float, color: Color);
491 #[link_name = "DrawTriangle"]
492 pub fn draw_triangle(v1: Vector2, v2: Vector2, v3: Vector2, color: Color);
493 #[link_name = "DrawTriangleLines"]
494 pub fn draw_triangle_lines(v1: Vector2, v2: Vector2, v3: Vector2, color: Color);
495}
496
497unsafe extern "C" {
499 #[link_name = "IsKeyPressed"]
501 pub fn is_key_pressed(key: KeyboardKey) -> bool;
502 #[link_name = "IsKeyPressedRepeat"]
504 pub fn is_key_pressed_repeat(key: KeyboardKey) -> bool;
505 #[link_name = "IsKeyDown"]
507 pub fn is_key_down(key: KeyboardKey) -> bool;
508 #[link_name = "IsKeyReleased"]
510 pub fn is_key_released(key: KeyboardKey) -> bool;
511 #[link_name = "IsKeyUp"]
513 pub fn is_key_up(key: KeyboardKey) -> bool;
514 #[link_name = "GetKeyPressed"]
516 pub fn get_key_pressed() -> c_int;
517 #[link_name = "GetCharPressed"]
519 pub fn get_char_pressed() -> c_int;
520 #[link_name = "SetExitKey"]
522 pub fn set_exit_key(key: KeyboardKey);
523}
524
525unsafe extern "C" {
527 #[link_name = "IsGamepadAvailable"]
529 pub fn is_gamepad_available(gamepad: c_int) -> bool;
530 #[link_name = "GetGamepadName"]
532 pub fn get_gamepad_name(gamepad: c_int) -> *const c_char;
533 #[link_name = "IsGamepadButtonPressed"]
535 pub fn is_gamepad_button_pressed(gamepad: c_int, button: GamepadButton) -> bool;
536 #[link_name = "IsGamepadButtonDown"]
538 pub fn is_gamepad_button_down(gamepad: c_int, button: GamepadButton) -> bool;
539 #[link_name = "IsGamepadButtonReleased"]
541 pub fn is_gamepad_button_released(gamepad: c_int, button: GamepadButton) -> bool;
542 #[link_name = "IsGamepadButtonUp"]
544 pub fn is_gamepad_button_up(gamepad: c_int, button: GamepadButton) -> bool;
545 #[link_name = "GetGamepadButtonPressed"]
547 pub fn get_gamepad_button_pressed(gamepad: c_int) -> GamepadButton;
548 #[link_name = "GetGamepadAxisCount"]
550 pub fn get_gamepad_axis_count(gamepad: c_int) -> c_int;
551 #[link_name = "GetGamepadAxisMovement"]
553 pub fn get_gamepad_axis_movement(gamepad: c_int, axis: GamepadAxis) -> c_float;
554 #[link_name = "SetGamepadVibration"]
556 pub fn set_gamepad_vibration(
557 gamepad: c_int,
558 left_motor: c_float,
559 right_motor: c_float,
560 duration: c_float,
561 );
562}
563
564unsafe extern "C" {
566 #[link_name = "IsMouseButtonPressed"]
568 pub fn is_mouse_button_pressed(button: MouseButton) -> bool;
569 #[link_name = "IsMouseButtonDown"]
571 pub fn is_mouse_button_down(button: MouseButton) -> bool;
572 #[link_name = "IsMouseButtonReleased"]
574 pub fn is_mouse_button_released(button: MouseButton) -> bool;
575 #[link_name = "IsMouseButtonUp"]
577 pub fn is_mouse_button_up(button: MouseButton) -> bool;
578 #[link_name = "GetMouseX"]
580 pub fn get_mouse_x() -> c_int;
581 #[link_name = "GetMouseY"]
583 pub fn get_mouse_y() -> c_int;
584 #[link_name = "GetMousePosition"]
586 pub fn get_mouse_position() -> Vector2;
587 #[link_name = "GetMouseDelta"]
589 pub fn get_mouse_delta() -> Vector2;
590 #[link_name = "SetMousePosition"]
592 pub fn set_mouse_position(x: c_int, y: c_int);
593 #[link_name = "SetMouseOffset"]
595 pub fn set_mouse_offset(offset_x: c_int, offset_y: c_int);
596 #[link_name = "SetMouseScale"]
598 pub fn set_mouse_scale(scale_x: c_int, scale_y: c_int);
599 #[link_name = "GetMouseWheelMove"]
601 pub fn get_mouse_wheel_move() -> c_float;
602 #[link_name = "GetMouseWheelMoveV"]
604 pub fn get_mouse_wheel_move_v() -> Vector2;
605 #[link_name = "SetMouseCursor"]
607 pub fn set_mouse_cursor(cursor: MouseCursor);
608}
609
610unsafe extern "C" {
612 #[link_name = "GetTouchX"]
614 pub fn get_touch_x() -> c_int;
615 #[link_name = "GetTouchY"]
617 pub fn get_touch_y() -> c_int;
618 #[link_name = "GetTouchPosition"]
620 pub fn get_touch_position(index: c_int) -> Vector2;
621 #[link_name = "GetTouchPointId"]
623 pub fn get_touch_point_id(index: c_int) -> c_int;
624 #[link_name = "GetTouchPointCount"]
626 pub fn get_touch_point_count() -> c_int;
627}
628unsafe extern "C" {
630 #[link_name = "SetGesturesEnabled"]
632 pub fn set_gestures_enabled(flags: Gesture);
633 #[link_name = "IsGestureDetected"]
635 pub fn is_gesture_detected(gesture: Gesture);
636 #[link_name = "GetGestureDetected"]
638 pub fn get_gesture_detected() -> Gesture;
639 #[link_name = "GetGestureHoldDuration"]
641 pub fn get_gesture_hold_duration() -> c_int;
642 #[link_name = "GetGestureDragVector"]
644 pub fn get_gesture_drag_vector() -> Vector2;
645 #[link_name = "GetGestureDragAngle"]
647 pub fn get_gesture_drag_angle() -> c_float;
648 #[link_name = "GetGesturePinchVector"]
650 pub fn get_gesture_pinch_vector() -> Vector2;
651 #[link_name = "GetGesturePinchAngle"]
653 pub fn get_gesture_pinch_angle() -> c_float;
654}
655
656unsafe extern "C" {
658 #[link_name = "SetTargetFPS"]
660 pub fn set_target_fps(fps: c_int);
661 #[link_name = "GetFrameTime"]
663 pub fn get_frame_time() -> c_float;
664 #[link_name = "GetTime"]
666 pub fn get_time() -> c_double;
667 #[link_name = "GetFPS"]
669 pub fn get_fps() -> c_int;
670}
671
672unsafe extern "C" {
674 #[link_name = "TakeScreenshot"]
676 pub fn take_screenshot(file_name: *const c_char);
677 #[link_name = "SetConfigFlags"]
690 pub fn set_config_flags(flags: ConfigFlag);
691 #[link_name = "OpenURL"]
693 pub fn open_url(url: *const c_char);
694}
695
696unsafe extern "C" {
698 #[link_name = "InitAudioDevice"]
700 pub fn init_audio_device();
701 #[link_name = "CloseAudioDevice"]
703 pub fn close_audio_device();
704 #[link_name = "IsAudioDeviceReady"]
706 pub fn is_audio_device_ready() -> bool;
707 #[link_name = "SetMasterVolume"]
709 pub fn set_master_volume(volume: c_float);
710 #[link_name = "GetMasterVolume"]
712 pub fn get_master_volume() -> c_float;
713}
714
715unsafe extern "C" {
717 #[link_name = "LoadWave"]
719 pub fn load_wave(file_name: *const c_char) -> Wave;
720 #[link_name = "LoadWaveFromMemory"]
722 pub fn load_wave_from_memory(
723 file_type: *const c_char,
724 file_data: *const c_uchar,
725 data_size: c_int,
726 ) -> Wave;
727 #[link_name = "IsWaveValid"]
729 pub fn is_wave_valid(wave: Wave) -> bool;
730 #[link_name = "LoadSound"]
732 pub fn load_sound(file_name: *const c_char) -> Sound;
733 #[link_name = "LoadSoundFromWave"]
735 pub fn load_sound_from_wave(wave: Wave) -> Sound;
736 #[link_name = "LoadSoundAlias"]
738 pub fn load_sound_alias(source: Sound) -> Sound;
739 #[link_name = "IsSoundValid"]
741 pub fn is_sound_valid(sound: Sound) -> bool;
742 #[link_name = "UpdateSound"]
744 pub fn update_sound(sound: Sound, data: *const c_void, sample_count: c_int);
745 #[link_name = "UnloadWave"]
747 pub fn unload_wave(wave: Wave);
748 #[link_name = "UnloadSound"]
750 pub fn unload_sound(sound: Sound);
751 #[link_name = "UnloadSoundAlias"]
753 pub fn unload_sound_alias(alias: Sound);
754 #[link_name = "ExportWave"]
756 pub fn export_wave(wave: Wave, file_name: *const c_char) -> bool;
757 #[link_name = "ExportWaveAsCode"]
759 pub fn export_wave_as_code(wave: Wave, file_name: *const c_char) -> bool;
760}
761
762unsafe extern "C" {
764 #[link_name = "PlaySound"]
766 pub fn play_sound(sound: Sound);
767 #[link_name = "StopSound"]
769 pub fn stop_sound(sound: Sound);
770 #[link_name = "PauseSound"]
772 pub fn pause_sound(sound: Sound);
773 #[link_name = "ResumeSound"]
775 pub fn resume_sound(sound: Sound);
776 #[link_name = "IsSoundPlaying"]
778 pub fn is_sound_playing(sound: Sound) -> bool;
779 #[link_name = "SetSoundVolume"]
781 pub fn set_sound_volume(sound: Sound, volume: c_float);
782 #[link_name = "SetSoundPitch"]
784 pub fn set_sound_pitch(sound: Sound, pitch: c_float);
785 #[link_name = "SetSoundPan"]
787 pub fn set_sound_pan(sound: Sound, pan: c_float);
788 #[link_name = "WaveCopy"]
790 pub fn wave_copy(wave: Wave);
791 #[link_name = "WaveCrop"]
793 pub fn wave_crop(wave: *mut Wave, init_frame: c_int, final_frame: c_int);
794 #[link_name = "WaveFormat"]
796 pub fn wave_format(wave: *mut Wave, sample_rate: c_int, sample_size: c_int, channels: c_int);
797 #[link_name = "LoadWaveSamples"]
799 pub fn load_wave_samples(wave: Wave) -> *const c_float;
800 #[link_name = "UnloadWaveSamples"]
802 pub fn unload_wave_samples(samples: *const c_float);
803}
804
805unsafe extern "C" {
806 #[link_name = "LoadMusicStream"]
808 pub fn load_music_stream(file_name: *const c_char) -> Music;
809 #[link_name = "LoadMusicStreamFromMemory"]
811 pub fn load_music_stream_from_memory(
812 file_type: *const c_char,
813 data: *const c_uchar,
814 data_size: c_int,
815 ) -> Music;
816 #[link_name = "IsMusicValid"]
818 pub fn is_music_valid(music: Music) -> bool;
819 #[link_name = "UnloadMusicStream"]
821 pub fn unload_music_stream(music: Music);
822 #[link_name = "PlayMusicStream"]
824 pub fn play_music_stream(music: Music);
825 #[link_name = "IsMusicStreamPlaying"]
827 pub fn is_music_stream_playing(music: Music) -> bool;
828 #[link_name = "UpdateMusicStream"]
830 pub fn update_music_stream(music: Music);
831 #[link_name = "StopMusicStream"]
833 pub fn stop_music_stream(music: Music);
834 #[link_name = "PauseMusicStream"]
836 pub fn pause_music_stream(music: Music);
837 #[link_name = "ResumeMusicStream"]
839 pub fn resume_music_stream(music: Music);
840 #[link_name = "SeekMusicStream"]
842 pub fn seek_music_stream(music: Music, position: c_float);
843 #[link_name = "SetMusicVolume"]
845 pub fn set_music_volume(music: Music, volume: c_float);
846 #[link_name = "SetMusicPitch"]
848 pub fn set_music_pitch(music: Music, pitch: c_float);
849 #[link_name = "SetMusicPan"]
851 pub fn set_music_pan(music: Music, pan: c_float);
852 #[link_name = "GetMusicTimeLength"]
854 pub fn get_music_time_length(music: Music) -> c_float;
855 #[link_name = "GetMusicTimePlayed"]
857 pub fn get_music_time_played(music: Music) -> c_float;
858}
859
860unsafe extern "C" {
862 #[link_name = "LoadAudioStream"]
864 pub fn load_audio_stream(
865 sample_rate: c_uint,
866 sample_size: c_uint,
867 channels: c_uint,
868 ) -> AudioStream;
869 #[link_name = "IsAudioStreamValid"]
871 pub fn is_audio_stream_valid(stream: AudioStream) -> bool;
872 #[link_name = "UnloadStreamValid"]
874 pub fn unload_stream_valid(stream: AudioStream);
875 #[link_name = "UpdateStreamValid"]
877 pub fn update_stream_valid(stream: AudioStream, data: *const c_void, frame_count: c_int);
878 #[link_name = "IsAudioStreamProcessed"]
880 pub fn is_audio_stream_processed(stream: AudioStream) -> bool;
881 #[link_name = "PlayAudioStream"]
883 pub fn play_audio_stream(stream: AudioStream);
884 #[link_name = "PauseAudioStream"]
886 pub fn pause_audio_stream(stream: AudioStream);
887 #[link_name = "ResumeAudioStream"]
889 pub fn resume_audio_stream(stream: AudioStream);
890 #[link_name = "IsAudioStreamPlaying"]
892 pub fn is_audio_stream_playing(stream: AudioStream) -> bool;
893 #[link_name = "StopAudioStream"]
895 pub fn stop_audio_stream(stream: AudioStream);
896 #[link_name = "SetAudioStreamVolume"]
898 pub fn set_audio_stream_volume(stream: AudioStream, volume: c_float);
899 #[link_name = "SetAudioStreamPitch"]
901 pub fn set_audio_stream_pitch(stream: AudioStream, pitch: c_float);
902 #[link_name = "SetAudioStreamPan"]
904 pub fn set_audio_stream_pan(stream: AudioStream, pan: c_float);
905 #[link_name = "SetAudioStreamBufferSizeDefault"]
907 pub fn set_audio_stream_buffer_size_default(size: c_int);
908 #[link_name = "SetAudioStreamCallback"]
910 pub fn set_audio_stream_callback(stream: AudioStream, callback: AudioCallback);
911
912 #[link_name = "AttachAudioStreamProcessor"]
914 pub fn attach_audio_stream_processor(stream: AudioStream, processor: AudioCallback);
915 #[link_name = "DetachAudioStreamProcessor"]
917 pub fn detach_audio_stream_processor(stream: AudioStream, processor: AudioCallback);
918 #[link_name = "AttachAudioMixedProcessor"]
920 pub fn attach_audio_mixed_processor(processor: AudioCallback);
921 #[link_name = "DetachAudioMixedProcessor"]
923 pub fn detach_audio_mixed_processor(processor: AudioCallback);
924}
925
926unsafe extern "C" {
928 #[link_name = "CheckCollisionRecs"]
930 pub fn check_collision_recs(rec1: Rectangle, rec2: Rectangle) -> bool;
931 #[link_name = "CheckCollisionCircles"]
933 pub fn check_collision_circles(
934 center1: Vector2,
935 radius1: f32,
936 center2: Vector2,
937 radius2: f32,
938 ) -> bool;
939 #[link_name = "CheckCollisionCircleRec"]
941 pub fn check_collision_circle_rec(center1: Vector2, radius1: c_float, rec: Rectangle) -> bool;
942 #[link_name = "CheckCollisionCircleLine"]
944 pub fn check_collision_circle_line(
945 center: Vector2,
946 radius: f32,
947 p1: Vector2,
948 p2: Vector2,
949 ) -> bool;
950 #[link_name = "CheckCollisionPointRec"]
952 pub fn check_collision_point_rec(point: Vector2, rec: Rectangle) -> bool;
953 #[link_name = "CheckCollisionPointCircle"]
955 pub fn check_collision_point_circle(point: Vector2, center: Vector2, radius: c_float) -> bool;
956 #[link_name = "CheckCollisionPointTriangle"]
958 pub fn check_collision_point_triangle(
959 point: Vector2,
960 p1: Vector2,
961 p2: Vector2,
962 p3: Vector2,
963 ) -> bool;
964 #[link_name = "CheckCollisionPointLine"]
966 pub fn check_collision_point_line(
967 point: Vector2,
968 p1: Vector2,
969 p2: Vector2,
970 treshold: c_float,
971 ) -> bool;
972 #[link_name = "CheckCollisionPointPoly"]
974 pub fn check_collision_point_poly(
975 point: Vector2,
976 p1: *const Vector2,
977 point_count: c_int,
978 ) -> bool;
979 #[link_name = "GetCollisionRec"]
981 pub fn get_collision_rec(rec1: Rectangle, rec2: Rectangle) -> Rectangle;
982}
983
984pub type TraceLogCallback = extern "C" fn(log_level: i32, text: *const c_char, args: *mut c_void);
986
987unsafe extern "C" {
988 #[link_name = "SetTraceLogCallback"]
989 pub fn set_trace_log_callback(callback: TraceLogCallback);
990}