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
99extern "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(images: *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
280extern "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();
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();
300}
301
302extern "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
327extern "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
338extern "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
370extern "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
383extern "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
416extern "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
432extern "C" {
434 #[link_name = "MeasureText"]
436 pub fn measure_text(text: *const c_char, font_size: c_int);
437}
438
439extern "C" {
441 #[link_name = "DrawCircleV"]
443 pub fn draw_circle_v(center: Vector2, radius: c_float, color: Color);
444 #[link_name = "DrawRectangleRec"]
446 pub fn draw_rectangle_rec(rec: Rectangle, color: Color);
447 #[link_name = "DrawRectanglePro"]
449 pub fn draw_rectangle_pro(rec: Rectangle, origin: Vector2, rotation: f32, color: Color);
450 #[link_name = "DrawRectangleLines"]
452 pub fn draw_rectangle_lines(
453 pos_x: c_int,
454 pos_y: c_int,
455 width: c_int,
456 height: c_int,
457 color: Color,
458 );
459 #[link_name = "DrawRectangleLinesEx"]
460 pub fn draw_rectangle_lines_ex(react: Rectangle, line_thickness: c_float, color: Color);
461}
462
463extern "C" {
465 #[link_name = "IsKeyPressed"]
467 pub fn is_key_pressed(key: KeyboardKey) -> bool;
468 #[link_name = "IsKeyPressedRepeat"]
470 pub fn is_key_pressed_repeat(key: KeyboardKey) -> bool;
471 #[link_name = "IsKeyDown"]
473 pub fn is_key_down(key: KeyboardKey) -> bool;
474 #[link_name = "IsKeyReleased"]
476 pub fn is_key_released(key: KeyboardKey) -> bool;
477 #[link_name = "IsKeyUp"]
479 pub fn is_key_up(key: KeyboardKey) -> bool;
480 #[link_name = "GetKeyPressed"]
482 pub fn get_key_pressed() -> c_int;
483 #[link_name = "GetCharPressed"]
485 pub fn get_char_pressed() -> c_int;
486 #[link_name = "SetExitKey"]
488 pub fn set_exit_key(key: c_int);
489}
490
491extern "C" {
493 #[link_name = "IsGamepadAvailable"]
495 pub fn is_gamepad_available(gamepad: c_int) -> bool;
496 #[link_name = "GetGamepadName"]
498 pub fn get_gamepad_name(gamepad: c_int) -> *const c_char;
499 #[link_name = "IsGamepadButtonPressed"]
501 pub fn is_gamepad_button_pressed(gamepad: c_int, button: GamepadButton) -> bool;
502 #[link_name = "IsGamepadButtonDown"]
504 pub fn is_gamepad_button_down(gamepad: c_int, button: GamepadButton) -> bool;
505 #[link_name = "IsGamepadButtonReleased"]
507 pub fn is_gamepad_button_released(gamepad: c_int, button: GamepadButton) -> bool;
508 #[link_name = "IsGamepadButtonUp"]
510 pub fn is_gamepad_button_up(gamepad: c_int, button: GamepadButton) -> bool;
511 #[link_name = "GetGamepadButtonPressed"]
513 pub fn get_gamepad_button_pressed(gamepad: c_int) -> GamepadButton;
514 #[link_name = "GetGamepadAxisCount"]
516 pub fn get_gamepad_axis_count(gamepad: c_int) -> c_int;
517 #[link_name = "GetGamepadAxisMovement"]
519 pub fn get_gamepad_axis_movement(gamepad: c_int, axis: GamepadAxis) -> c_float;
520 #[link_name = "SetGamepadVibration"]
522 pub fn set_gamepad_vibration(
523 gamepad: c_int,
524 left_motor: c_float,
525 right_motor: c_float,
526 duration: c_float,
527 );
528}
529
530extern "C" {
532 #[link_name = "IsMouseButtonPressed"]
534 pub fn is_mouse_button_pressed(button: MouseButton) -> bool;
535 #[link_name = "IsMouseButtonDown"]
537 pub fn is_mouse_button_down(button: MouseButton) -> bool;
538 #[link_name = "IsMouseButtonReleased"]
540 pub fn is_mouse_button_released(button: MouseButton) -> bool;
541 #[link_name = "IsMouseButtonUp"]
543 pub fn is_mouse_button_up(button: MouseButton) -> bool;
544 #[link_name = "GetMouseX"]
546 pub fn get_mouse_x() -> c_int;
547 #[link_name = "GetMouseY"]
549 pub fn get_mouse_y() -> c_int;
550 #[link_name = "GetMousePosition"]
552 pub fn get_mouse_position() -> Vector2;
553 #[link_name = "GetMouseDelta"]
555 pub fn get_mouse_delta() -> Vector2;
556 #[link_name = "SetMousePosition"]
558 pub fn set_mouse_position(x: c_int, y: c_int);
559 #[link_name = "SetMouseOffset"]
561 pub fn set_mouse_offset(offset_x: c_int, offset_y: c_int);
562 #[link_name = "SetMouseScale"]
564 pub fn set_mouse_scale(scale_x: c_int, scale_y: c_int);
565 #[link_name = "GetMouseWheelMove"]
567 pub fn get_mouse_wheel_move() -> c_float;
568 #[link_name = "GetMouseWheelMoveV"]
570 pub fn get_mouse_wheel_move_v() -> Vector2;
571 #[link_name = "SetMouseCursor"]
573 pub fn set_mouse_cursor(cursor: MouseCursor);
574}
575
576extern "C" {
578 #[link_name = "GetTouchX"]
580 pub fn get_touch_x() -> c_int;
581 #[link_name = "GetTouchY"]
583 pub fn get_touch_y() -> c_int;
584 #[link_name = "GetTouchPosition"]
586 pub fn get_touch_position(index: c_int) -> Vector2;
587 #[link_name = "GetTouchPointId"]
589 pub fn get_touch_point_id(index: c_int) -> c_int;
590 #[link_name = "GetTouchPointCount"]
592 pub fn get_touch_point_count() -> c_int;
593}
594extern "C" {
596 #[link_name = "SetGesturesEnabled"]
598 pub fn set_gestures_enabled(flags: Gesture);
599 #[link_name = "IsGestureDetected"]
601 pub fn is_gesture_detected(gesture: Gesture);
602 #[link_name = "GetGestureDetected"]
604 pub fn get_gesture_detected() -> Gesture;
605 #[link_name = "GetGestureHoldDuration"]
607 pub fn get_gesture_hold_duration() -> c_int;
608 #[link_name = "GetGestureDragVector"]
610 pub fn get_gesture_drag_vector() -> Vector2;
611 #[link_name = "GetGestureDragAngle"]
613 pub fn get_gesture_drag_angle() -> c_float;
614 #[link_name = "GetGesturePinchVector"]
616 pub fn get_gesture_pinch_vector() -> Vector2;
617 #[link_name = "GetGesturePinchAngle"]
619 pub fn get_gesture_pinch_angle() -> c_float;
620}
621
622extern "C" {
624 #[link_name = "SetTargetFPS"]
626 pub fn set_target_fps(fps: c_int);
627 #[link_name = "GetFrameTime"]
629 pub fn get_frame_time() -> c_float;
630 #[link_name = "GetTime"]
632 pub fn get_time() -> c_double;
633 #[link_name = "GetFPS"]
635 pub fn get_fps() -> c_int;
636}
637
638extern "C" {
640 #[link_name = "SetConfigFlags"]
653 pub fn set_config_flags(flags: ConfigFlag);
654}
655
656extern "C" {
658 #[link_name = "InitAudioDevice"]
660 pub fn init_audio_device();
661 #[link_name = "CloseAudioDevice"]
663 pub fn close_audio_device();
664 #[link_name = "IsAudioDeviceReady"]
666 pub fn is_audio_device_ready() -> bool;
667 #[link_name = "SetMasterVolume"]
669 pub fn set_master_volume(volume: c_float);
670 #[link_name = "GetMasterVolume"]
672 pub fn get_master_volume() -> c_float;
673}
674
675extern "C" {
677 #[link_name = "LoadWave"]
679 pub fn load_wave(file_name: *const c_char) -> Wave;
680 #[link_name = "LoadWaveFromMemory"]
682 pub fn load_wave_from_memory(
683 file_type: *const c_char,
684 file_data: *const c_uchar,
685 data_size: c_int,
686 ) -> Wave;
687 #[link_name = "IsWaveValid"]
689 pub fn is_wave_valid(wave: Wave) -> bool;
690 #[link_name = "LoadSound"]
692 pub fn load_sound(file_name: *const c_char) -> Sound;
693 #[link_name = "LoadSoundFromWave"]
695 pub fn load_sound_from_wave(wave: Wave) -> Sound;
696 #[link_name = "LoadSoundAlias"]
698 pub fn load_sound_alias(source: Sound) -> Sound;
699 #[link_name = "IsSoundValid"]
701 pub fn is_sound_valid(sound: Sound) -> bool;
702 #[link_name = "UpdateSound"]
704 pub fn update_sound(sound: Sound, data: *const c_void, sample_count: c_int);
705 #[link_name = "UnloadWave"]
707 pub fn unload_wave(wave: Wave);
708 #[link_name = "UnloadSound"]
710 pub fn unload_sound(sound: Sound);
711 #[link_name = "UnloadSoundAlias"]
713 pub fn unload_sound_alias(alias: Sound);
714 #[link_name = "ExportWave"]
716 pub fn export_wave(wave: Wave, file_name: *const c_char) -> bool;
717 #[link_name = "ExportWaveAsCode"]
719 pub fn export_wave_as_code(wave: Wave, file_name: *const c_char) -> bool;
720}
721
722extern "C" {
724 #[link_name = "PlaySound"]
726 pub fn play_sound(sound: Sound);
727 #[link_name = "StopSound"]
729 pub fn stop_sound(sound: Sound);
730 #[link_name = "PauseSound"]
732 pub fn pause_sound(sound: Sound);
733 #[link_name = "ResumeSound"]
735 pub fn resume_sound(sound: Sound);
736 #[link_name = "IsSoundPlaying"]
738 pub fn is_sound_playing(sound: Sound) -> bool;
739 #[link_name = "SetSoundVolume"]
741 pub fn set_sound_volume(sound: Sound, volume: c_float);
742 #[link_name = "SetSoundPitch"]
744 pub fn set_sound_pitch(sound: Sound, pitch: c_float);
745 #[link_name = "SetSoundPan"]
747 pub fn set_sound_pan(sound: Sound, pan: c_float);
748 #[link_name = "WaveCopy"]
750 pub fn wave_copy(wave: Wave);
751 #[link_name = "WaveCrop"]
753 pub fn wave_crop(wave: *mut Wave, init_frame: c_int, final_frame: c_int);
754 #[link_name = "WaveFormat"]
756 pub fn wave_format(wave: *mut Wave, sample_rate: c_int, sample_size: c_int, channels: c_int);
757 #[link_name = "LoadWaveSamples"]
759 pub fn load_wave_samples(wave: Wave) -> *const c_float;
760 #[link_name = "UnloadWaveSamples"]
762 pub fn unload_wave_samples(samples: *const c_float);
763}
764
765extern "C" {
766 #[link_name = "LoadMusicStream"]
768 pub fn load_music_stream(file_name: *const c_char) -> Music;
769 #[link_name = "LoadMusicStreamFromMemory"]
771 pub fn load_music_stream_from_memory(
772 file_type: *const c_char,
773 data: *const c_uchar,
774 data_size: c_int,
775 ) -> Music;
776 #[link_name = "IsMusicValid"]
778 pub fn is_music_valid(music: Music) -> bool;
779 #[link_name = "UnloadMusicStream"]
781 pub fn unload_music_stream(music: Music);
782 #[link_name = "PlayMusicStream"]
784 pub fn play_music_stream(music: Music);
785 #[link_name = "IsMusicStreamPlaying"]
787 pub fn is_music_stream_playing(music: Music) -> bool;
788 #[link_name = "UpdateMusicStream"]
790 pub fn update_music_stream(music: Music);
791 #[link_name = "StopMusicStream"]
793 pub fn stop_music_stream(music: Music);
794 #[link_name = "PauseMusicStream"]
796 pub fn pause_music_stream(music: Music);
797 #[link_name = "ResumeMusicStream"]
799 pub fn resume_music_stream(music: Music);
800 #[link_name = "SeekMusicStream"]
802 pub fn seek_music_stream(music: Music, position: c_float);
803 #[link_name = "SetMusicVolume"]
805 pub fn set_music_volume(music: Music, volume: c_float);
806 #[link_name = "SetMusicPitch"]
808 pub fn set_music_pitch(music: Music, pitch: c_float);
809 #[link_name = "SetMusicPan"]
811 pub fn set_music_pan(music: Music, pan: c_float);
812 #[link_name = "GetMusicTimeLength"]
814 pub fn get_music_time_length(music: Music) -> c_float;
815 #[link_name = "GetMusicTimePlayed"]
817 pub fn get_music_time_played(music: Music) -> c_float;
818}
819
820extern "C" {
822 #[link_name = "LoadAudioStream"]
824 pub fn load_audio_stream(
825 sample_rate: c_uint,
826 sample_size: c_uint,
827 channels: c_uint,
828 ) -> AudioStream;
829 #[link_name = "IsAudioStreamValid"]
831 pub fn is_audio_stream_valid(stream: AudioStream) -> bool;
832 #[link_name = "UnloadStreamValid"]
834 pub fn unload_stream_valid(stream: AudioStream);
835 #[link_name = "UpdateStreamValid"]
837 pub fn update_stream_valid(stream: AudioStream, data: *const c_void, frame_count: c_int);
838 #[link_name = "IsAudioStreamProcessed"]
840 pub fn is_audio_stream_processed(stream: AudioStream) -> bool;
841 #[link_name = "PlayAudioStream"]
843 pub fn play_audio_stream(stream: AudioStream);
844 #[link_name = "PauseAudioStream"]
846 pub fn pause_audio_stream(stream: AudioStream);
847 #[link_name = "ResumeAudioStream"]
849 pub fn resume_audio_stream(stream: AudioStream);
850 #[link_name = "IsAudioStreamPlaying"]
852 pub fn is_audio_stream_playing(stream: AudioStream) -> bool;
853 #[link_name = "StopAudioStream"]
855 pub fn stop_audio_stream(stream: AudioStream);
856 #[link_name = "SetAudioStreamVolume"]
858 pub fn set_audio_stream_volume(stream: AudioStream, volume: c_float);
859 #[link_name = "SetAudioStreamPitch"]
861 pub fn set_audio_stream_pitch(stream: AudioStream, pitch: c_float);
862 #[link_name = "SetAudioStreamPan"]
864 pub fn set_audio_stream_pan(stream: AudioStream, pan: c_float);
865 #[link_name = "SetAudioStreamBufferSizeDefault"]
867 pub fn set_audio_stream_buffer_size_default(size: c_int);
868 #[link_name = "SetAudioStreamCallback"]
870 pub fn set_audio_stream_callback(stream: AudioStream, callback: AudioCallback);
871
872 #[link_name = "AttachAudioStreamProcessor"]
874 pub fn attach_audio_stream_processor(stream: AudioStream, processor: AudioCallback);
875 #[link_name = "DetachAudioStreamProcessor"]
877 pub fn detach_audio_stream_processor(stream: AudioStream, processor: AudioCallback);
878 #[link_name = "AttachAudioMixedProcessor"]
880 pub fn attach_audio_mixed_processor(processor: AudioCallback);
881 #[link_name = "DetachAudioMixedProcessor"]
883 pub fn detach_audio_mixed_processor(processor: AudioCallback);
884}
885
886extern "C" {
888 #[link_name = "CheckCollisionRecs"]
890 pub fn check_collision_recs(rec1: Rectangle, rec2: Rectangle) -> bool;
891 #[link_name = "CheckCollisionCircles"]
893 pub fn check_collision_circles(
894 center1: Vector2,
895 radius1: f32,
896 center2: Vector2,
897 radius2: f32,
898 ) -> bool;
899 #[link_name = "CheckCollisionCircleRec"]
901 pub fn check_collision_circle_rec(center1: Vector2, radius1: c_float, rec: Rectangle) -> bool;
902 #[link_name = "CheckCollisionCircleLine"]
904 pub fn check_collision_circle_line(
905 center: Vector2,
906 radius: f32,
907 p1: Vector2,
908 p2: Vector2,
909 ) -> bool;
910 #[link_name = "CheckCollisionPointRec"]
912 pub fn check_collision_point_rec(point: Vector2, rec: Rectangle) -> bool;
913 #[link_name = "CheckCollisionPointCircle"]
915 pub fn check_collision_point_circle(point: Vector2, center: Vector2, radius: c_float) -> bool;
916 #[link_name = "CheckCollisionPointTriangle"]
918 pub fn check_collision_point_triangle(
919 point: Vector2,
920 p1: Vector2,
921 p2: Vector2,
922 p3: Vector2,
923 ) -> bool;
924 #[link_name = "CheckCollisionPointLine"]
926 pub fn check_collision_point_line(
927 point: Vector2,
928 p1: Vector2,
929 p2: Vector2,
930 treshold: c_float,
931 ) -> bool;
932 #[link_name = "CheckCollisionPointPoly"]
934 pub fn check_collision_point_poly(
935 point: Vector2,
936 p1: *const Vector2,
937 point_count: c_int,
938 ) -> bool;
939 #[link_name = "GetCollisionRec"]
941 pub fn get_collision_rec(rec1: Rectangle, rec2: Rectangle) -> Rectangle;
942}
943
944pub type TraceLogCallback = extern "C" fn(log_level: i32, text: *const c_char, args: *mut c_void);
946
947extern "C" {
948 #[link_name = "SetTraceLogCallback"]
949 pub fn set_trace_log_callback(callback: TraceLogCallback);
950}