From af773c79e2c8cca590b726be00b46c17f0ab8fed Mon Sep 17 00:00:00 2001 From: Not-Nik Date: Fri, 7 Jul 2023 02:03:54 +0200 Subject: [PATCH] Use single library files instead of keeping function declarations in a seperate file --- lib/generate_functions.py | 33 +- lib/raylib-wa.zig | 568 ----------------------- lib/raylib-zig-math-prelude.zig | 17 + lib/raylib-zig-math.zig | 2 + lib/raylib-zig-types.zig | 768 ++++++++++++++++++++++++++++++++ lib/raylib-zig.zig | 523 +++++++++++++++++++++- 6 files changed, 1321 insertions(+), 590 deletions(-) delete mode 100644 lib/raylib-wa.zig create mode 100644 lib/raylib-zig-math-prelude.zig create mode 100755 lib/raylib-zig-types.zig mode change 100755 => 100644 lib/raylib-zig.zig diff --git a/lib/generate_functions.py b/lib/generate_functions.py index 204993a..c259101 100644 --- a/lib/generate_functions.py +++ b/lib/generate_functions.py @@ -1,9 +1,7 @@ import re """ -Automatic utility for generating raylib function headers. Simply put -raylib.h in the working directory of this script and execute. -Tested with raylib version 3.7.0 +Automatic utility for generating raylib function headers. """ C_TO_ZIG = { @@ -67,7 +65,7 @@ def fix_enums(arg_name, arg_type, func_name): return arg_type -def parse_header(header_name: str, output_file: str, prefix: str): +def parse_header(header_name: str, output_file: str, prefix: str, *args: str): header = open(header_name, mode="r") zig_functions = [] zig_heads = [] @@ -111,6 +109,9 @@ def parse_header(header_name: str, output_file: str, prefix: str): func_name = result.group(2) arguments = result.group(3) + if func_name == "SetTraceLogCallback": + continue + return_type = c_to_zig_type(return_type) func_name, return_type = fix_pointer(func_name, return_type) @@ -121,7 +122,8 @@ def parse_header(header_name: str, output_file: str, prefix: str): if arg == "...": zig_arguments.append("...") continue - arg_type = " ".join(arg.split(" ")[0:-1]) # everything but the last element (for stuff like "const Vector3") + # everything but the last element (for stuff like "const Vector3") + arg_type = " ".join(arg.split(" ")[0:-1]) arg_name = arg.split(" ")[-1] # last element should be the name arg_type = fix_enums(arg_name, arg_type, func_name) @@ -133,16 +135,19 @@ def parse_header(header_name: str, output_file: str, prefix: str): zig_arguments = ", ".join(zig_arguments) zig_heads.append("pub extern fn " + func_name + "(" + zig_arguments + ") " + return_type + ";") - zigheader = open(output_file, mode="w") - print("""const rl = @import("raylib-zig.zig");\n""", file=zigheader) + prelude = str() - print("\n".join(sorted(f"const {t} = rl.{t};" for t in zig_types if ('*' not in t) and (t not in C_TO_ZIG.values()))), file=zigheader) - print("", file=zigheader) - print("\n".join(zig_heads), file=zigheader) - print("", file=zigheader) - print("\n".join(zig_functions), file=zigheader) + for imp in args: + prelude += open(imp, mode="r").read() + + zig_header = open(output_file, mode="w") + print(prelude, file=zig_header) + + print("\n".join(zig_heads), file=zig_header) + print("", file=zig_header) + print("\n".join(zig_functions), file=zig_header) if __name__ == "__main__": - parse_header("../raylib/src/raylib.h", "raylib-wa.zig", "RLAPI ") - parse_header("../raylib/src/raymath.h", "raylib-zig-math.zig", "RMAPI ") + parse_header("../raylib/src/raylib.h", "raylib-zig.zig", "RLAPI ", "raylib-zig-types.zig") + parse_header("../raylib/src/raymath.h", "raylib-zig-math.zig", "RMAPI ", "raylib-zig-math-prelude.zig") diff --git a/lib/raylib-wa.zig b/lib/raylib-wa.zig deleted file mode 100644 index 9cac713..0000000 --- a/lib/raylib-wa.zig +++ /dev/null @@ -1,568 +0,0 @@ -const rl = @import("raylib-zig.zig"); - -const AudioCallback = rl.AudioCallback; -const AudioStream = rl.AudioStream; -const BoneInfo = rl.BoneInfo; -const BoundingBox = rl.BoundingBox; -const Camera = rl.Camera; -const Camera2D = rl.Camera2D; -const Camera3D = rl.Camera3D; -const CameraMode = rl.CameraMode; -const Color = rl.Color; -const ConfigFlags = rl.ConfigFlags; -const FilePathList = rl.FilePathList; -const Font = rl.Font; -const GamepadButton = rl.GamepadButton; -const Gestures = rl.Gestures; -const GlyphInfo = rl.GlyphInfo; -const Image = rl.Image; -const KeyboardKey = rl.KeyboardKey; -const LoadFileDataCallback = rl.LoadFileDataCallback; -const LoadFileTextCallback = rl.LoadFileTextCallback; -const Material = rl.Material; -const MaterialMap = rl.MaterialMap; -const Matrix = rl.Matrix; -const Mesh = rl.Mesh; -const Model = rl.Model; -const ModelAnimation = rl.ModelAnimation; -const MouseButton = rl.MouseButton; -const Music = rl.Music; -const NPatchInfo = rl.NPatchInfo; -const Quaternion = rl.Quaternion; -const Ray = rl.Ray; -const RayCollision = rl.RayCollision; -const Rectangle = rl.Rectangle; -const RenderTexture = rl.RenderTexture; -const RenderTexture2D = rl.RenderTexture2D; -const SaveFileDataCallback = rl.SaveFileDataCallback; -const SaveFileTextCallback = rl.SaveFileTextCallback; -const Shader = rl.Shader; -const Sound = rl.Sound; -const Texture = rl.Texture; -const Texture2D = rl.Texture2D; -const TextureCubemap = rl.TextureCubemap; -const TraceLogCallback = rl.TraceLogCallback; -const Transform = rl.Transform; -const Vector2 = rl.Vector2; -const Vector3 = rl.Vector3; -const Vector4 = rl.Vector4; -const VrDeviceInfo = rl.VrDeviceInfo; -const VrStereoConfig = rl.VrStereoConfig; -const Wave = rl.Wave; -const char = rl.char; -const rAudioBuffer = rl.rAudioBuffer; -const rAudioProcessor = rl.rAudioProcessor; - -pub extern fn InitWindow(width: c_int, height: c_int, title: [*c]const u8) void; -pub extern fn WindowShouldClose() bool; -pub extern fn CloseWindow() void; -pub extern fn IsWindowReady() bool; -pub extern fn IsWindowFullscreen() bool; -pub extern fn IsWindowHidden() bool; -pub extern fn IsWindowMinimized() bool; -pub extern fn IsWindowMaximized() bool; -pub extern fn IsWindowFocused() bool; -pub extern fn IsWindowResized() bool; -pub extern fn IsWindowState(flag: c_uint) bool; -pub extern fn SetWindowState(flags: ConfigFlags) void; -pub extern fn ClearWindowState(flags: ConfigFlags) void; -pub extern fn ToggleFullscreen() void; -pub extern fn MaximizeWindow() void; -pub extern fn MinimizeWindow() void; -pub extern fn RestoreWindow() void; -pub extern fn SetWindowIcon(image: Image) void; -pub extern fn SetWindowTitle(title: [*c]const u8) void; -pub extern fn SetWindowPosition(x: c_int, y: c_int) void; -pub extern fn SetWindowMonitor(monitor: c_int) void; -pub extern fn SetWindowMinSize(width: c_int, height: c_int) void; -pub extern fn SetWindowSize(width: c_int, height: c_int) void; -pub extern fn SetWindowOpacity(opacity: f32) void; -pub extern fn GetWindowHandle() *anyopaque; -pub extern fn GetScreenWidth() c_int; -pub extern fn GetScreenHeight() c_int; -pub extern fn GetRenderWidth() c_int; -pub extern fn GetRenderHeight() c_int; -pub extern fn GetMonitorCount() c_int; -pub extern fn GetCurrentMonitor() c_int; -pub extern fn GetMonitorPosition(monitor: c_int) Vector2; -pub extern fn GetMonitorWidth(monitor: c_int) c_int; -pub extern fn GetMonitorHeight(monitor: c_int) c_int; -pub extern fn GetMonitorPhysicalWidth(monitor: c_int) c_int; -pub extern fn GetMonitorPhysicalHeight(monitor: c_int) c_int; -pub extern fn GetMonitorRefreshRate(monitor: c_int) c_int; -pub extern fn GetWindowPosition() Vector2; -pub extern fn GetWindowScaleDPI() Vector2; -pub extern fn GetMonitorName(monitor: c_int) [*c]const u8; -pub extern fn SetClipboardText(text: [*c]const u8) void; -pub extern fn GetClipboardText() [*c]const u8; -pub extern fn EnableEventWaiting() void; -pub extern fn DisableEventWaiting() void; -pub extern fn SwapScreenBuffer() void; -pub extern fn PollInputEvents() void; -pub extern fn WaitTime(seconds: f64) void; -pub extern fn ShowCursor() void; -pub extern fn HideCursor() void; -pub extern fn IsCursorHidden() bool; -pub extern fn EnableCursor() void; -pub extern fn DisableCursor() void; -pub extern fn IsCursorOnScreen() bool; -pub extern fn ClearBackground(color: Color) void; -pub extern fn BeginDrawing() void; -pub extern fn EndDrawing() void; -pub extern fn BeginMode2D(camera: Camera2D) void; -pub extern fn EndMode2D() void; -pub extern fn BeginMode3D(camera: Camera3D) void; -pub extern fn EndMode3D() void; -pub extern fn BeginTextureMode(target: RenderTexture2D) void; -pub extern fn EndTextureMode() void; -pub extern fn BeginShaderMode(shader: Shader) void; -pub extern fn EndShaderMode() void; -pub extern fn BeginBlendMode(mode: c_int) void; -pub extern fn EndBlendMode() void; -pub extern fn BeginScissorMode(x: c_int, y: c_int, width: c_int, height: c_int) void; -pub extern fn EndScissorMode() void; -pub extern fn BeginVrStereoMode(config: VrStereoConfig) void; -pub extern fn EndVrStereoMode() void; -pub extern fn LoadVrStereoConfig(device: VrDeviceInfo) VrStereoConfig; -pub extern fn UnloadVrStereoConfig(config: VrStereoConfig) void; -pub extern fn LoadShader(vsFileName: [*c]const u8, fsFileName: [*c]const u8) Shader; -pub extern fn LoadShaderFromMemory(vsCode: [*c]const u8, fsCode: [*c]const u8) Shader; -pub extern fn GetShaderLocation(shader: Shader, uniformName: [*c]const u8) c_int; -pub extern fn GetShaderLocationAttrib(shader: Shader, attribName: [*c]const u8) c_int; -pub extern fn SetShaderValue(shader: Shader, locIndex: c_int, value: *const anyopaque, uniformType: c_int) void; -pub extern fn SetShaderValueV(shader: Shader, locIndex: c_int, value: *const anyopaque, uniformType: c_int, count: c_int) void; -pub extern fn SetShaderValueMatrix(shader: Shader, locIndex: c_int, mat: Matrix) void; -pub extern fn SetShaderValueTexture(shader: Shader, locIndex: c_int, texture: Texture2D) void; -pub extern fn UnloadShader(shader: Shader) void; -pub extern fn GetMouseRay(mousePosition: Vector2, camera: Camera) Ray; -pub extern fn GetCameraMatrix(camera: Camera) Matrix; -pub extern fn GetCameraMatrix2D(camera: Camera2D) Matrix; -pub extern fn GetWorldToScreen(position: Vector3, camera: Camera) Vector2; -pub extern fn GetScreenToWorld2D(position: Vector2, camera: Camera2D) Vector2; -pub extern fn GetWorldToScreenEx(position: Vector3, camera: Camera, width: c_int, height: c_int) Vector2; -pub extern fn GetWorldToScreen2D(position: Vector2, camera: Camera2D) Vector2; -pub extern fn SetTargetFPS(fps: c_int) void; -pub extern fn GetFPS() c_int; -pub extern fn GetFrameTime() f32; -pub extern fn GetTime() f64; -pub extern fn GetRandomValue(min: c_int, max: c_int) c_int; -pub extern fn SetRandomSeed(seed: c_uint) void; -pub extern fn TakeScreenshot(fileName: [*c]const u8) void; -pub extern fn SetConfigFlags(flags: ConfigFlags) void; -pub extern fn TraceLog(logLevel: c_int, text: [*c]const u8, ...) void; -pub extern fn SetTraceLogLevel(logLevel: c_int) void; -pub extern fn MemAlloc(size: c_uint) *anyopaque; -pub extern fn MemRealloc(ptr: *anyopaque, size: c_uint) *anyopaque; -pub extern fn MemFree(ptr: *anyopaque) void; -pub extern fn OpenURL(url: [*c]const u8) void; -pub extern fn SetTraceLogCallback(callback: TraceLogCallback) void; -pub extern fn SetLoadFileDataCallback(callback: LoadFileDataCallback) void; -pub extern fn SetSaveFileDataCallback(callback: SaveFileDataCallback) void; -pub extern fn SetLoadFileTextCallback(callback: LoadFileTextCallback) void; -pub extern fn SetSaveFileTextCallback(callback: SaveFileTextCallback) void; -pub extern fn LoadFileData(fileName: [*c]const u8, bytesRead: [*c]c_uint) [*c]u8; -pub extern fn UnloadFileData(data: [*c]u8) void; -pub extern fn SaveFileData(fileName: [*c]const u8, data: *anyopaque, bytesToWrite: c_uint) bool; -pub extern fn ExportDataAsCode(data: [*c]const u8, size: c_uint, fileName: [*c]const u8) bool; -pub extern fn LoadFileText(fileName: [*c]const u8) [*c]u8; -pub extern fn UnloadFileText(text: [*c]u8) void; -pub extern fn SaveFileText(fileName: [*c]const u8, text: [*c]u8) bool; -pub extern fn FileExists(fileName: [*c]const u8) bool; -pub extern fn DirectoryExists(dirPath: [*c]const u8) bool; -pub extern fn IsFileExtension(fileName: [*c]const u8, ext: [*c]const u8) bool; -pub extern fn GetFileLength(fileName: [*c]const u8) c_int; -pub extern fn GetFileExtension(fileName: [*c]const u8) [*c]const u8; -pub extern fn GetFileName(filePath: [*c]const u8) [*c]const u8; -pub extern fn GetFileNameWithoutExt(filePath: [*c]const u8) [*c]const u8; -pub extern fn GetDirectoryPath(filePath: [*c]const u8) [*c]const u8; -pub extern fn GetPrevDirectoryPath(dirPath: [*c]const u8) [*c]const u8; -pub extern fn GetWorkingDirectory() [*c]const u8; -pub extern fn GetApplicationDirectory() [*c]const u8; -pub extern fn ChangeDirectory(dir: [*c]const u8) bool; -pub extern fn IsPathFile(path: [*c]const u8) bool; -pub extern fn LoadDirectoryFiles(dirPath: [*c]const u8) FilePathList; -pub extern fn LoadDirectoryFilesEx(basePath: [*c]const u8, filter: [*c]const u8, scanSubdirs: bool) FilePathList; -pub extern fn UnloadDirectoryFiles(files: FilePathList) void; -pub extern fn IsFileDropped() bool; -pub extern fn LoadDroppedFiles() FilePathList; -pub extern fn UnloadDroppedFiles(files: FilePathList) void; -pub extern fn GetFileModTime(fileName: [*c]const u8) c_long; -pub extern fn CompressData(data: [*c]const u8, dataSize: c_int, compDataSize: [*c]c_int) [*c]u8; -pub extern fn DecompressData(compData: [*c]const u8, compDataSize: c_int, dataSize: [*c]c_int) [*c]u8; -pub extern fn EncodeDataBase64(data: [*c]const u8, dataSize: c_int, outputSize: [*c]c_int) [*c]u8; -pub extern fn DecodeDataBase64(data: [*c]const u8, outputSize: [*c]c_int) [*c]u8; -pub extern fn IsKeyPressed(key: KeyboardKey) bool; -pub extern fn IsKeyDown(key: KeyboardKey) bool; -pub extern fn IsKeyReleased(key: KeyboardKey) bool; -pub extern fn IsKeyUp(key: KeyboardKey) bool; -pub extern fn SetExitKey(key: KeyboardKey) void; -pub extern fn GetKeyPressed() c_int; -pub extern fn GetCharPressed() c_int; -pub extern fn IsGamepadAvailable(gamepad: c_int) bool; -pub extern fn GetGamepadName(gamepad: c_int) [*c]const u8; -pub extern fn IsGamepadButtonPressed(gamepad: c_int, button: GamepadButton) bool; -pub extern fn IsGamepadButtonDown(gamepad: c_int, button: GamepadButton) bool; -pub extern fn IsGamepadButtonReleased(gamepad: c_int, button: GamepadButton) bool; -pub extern fn IsGamepadButtonUp(gamepad: c_int, button: GamepadButton) bool; -pub extern fn GetGamepadButtonPressed() c_int; -pub extern fn GetGamepadAxisCount(gamepad: c_int) c_int; -pub extern fn GetGamepadAxisMovement(gamepad: c_int, axis: c_int) f32; -pub extern fn SetGamepadMappings(mappings: [*c]const u8) c_int; -pub extern fn IsMouseButtonPressed(button: MouseButton) bool; -pub extern fn IsMouseButtonDown(button: MouseButton) bool; -pub extern fn IsMouseButtonReleased(button: MouseButton) bool; -pub extern fn IsMouseButtonUp(button: MouseButton) bool; -pub extern fn GetMouseX() c_int; -pub extern fn GetMouseY() c_int; -pub extern fn GetMousePosition() Vector2; -pub extern fn GetMouseDelta() Vector2; -pub extern fn SetMousePosition(x: c_int, y: c_int) void; -pub extern fn SetMouseOffset(offsetX: c_int, offsetY: c_int) void; -pub extern fn SetMouseScale(scaleX: f32, scaleY: f32) void; -pub extern fn GetMouseWheelMove() f32; -pub extern fn GetMouseWheelMoveV() Vector2; -pub extern fn SetMouseCursor(cursor: c_int) void; -pub extern fn GetTouchX() c_int; -pub extern fn GetTouchY() c_int; -pub extern fn GetTouchPosition(index: c_int) Vector2; -pub extern fn GetTouchPointId(index: c_int) c_int; -pub extern fn GetTouchPointCount() c_int; -pub extern fn SetGesturesEnabled(flags: c_uint) void; -pub extern fn IsGestureDetected(gesture: Gestures) bool; -pub extern fn GetGestureDetected() c_int; -pub extern fn GetGestureHoldDuration() f32; -pub extern fn GetGestureDragVector() Vector2; -pub extern fn GetGestureDragAngle() f32; -pub extern fn GetGesturePinchVector() Vector2; -pub extern fn GetGesturePinchAngle() f32; -pub extern fn SetCameraMode(camera: Camera, mode: CameraMode) void; -pub extern fn UpdateCamera(camera: [*c]Camera) void; -pub extern fn SetCameraPanControl(keyPan: c_int) void; -pub extern fn SetCameraAltControl(keyAlt: c_int) void; -pub extern fn SetCameraSmoothZoomControl(keySmoothZoom: c_int) void; -pub extern fn SetCameraMoveControls(keyFront: c_int, keyBack: c_int, keyRight: c_int, keyLeft: c_int, keyUp: c_int, keyDown: c_int) void; -pub extern fn SetShapesTexture(texture: Texture2D, source: Rectangle) void; -pub extern fn DrawPixel(posX: c_int, posY: c_int, color: Color) void; -pub extern fn DrawPixelV(position: Vector2, color: Color) void; -pub extern fn DrawLine(startPosX: c_int, startPosY: c_int, endPosX: c_int, endPosY: c_int, color: Color) void; -pub extern fn DrawLineV(startPos: Vector2, endPos: Vector2, color: Color) void; -pub extern fn DrawLineEx(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void; -pub extern fn DrawLineBezier(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void; -pub extern fn DrawLineBezierQuad(startPos: Vector2, endPos: Vector2, controlPos: Vector2, thick: f32, color: Color) void; -pub extern fn DrawLineBezierCubic(startPos: Vector2, endPos: Vector2, startControlPos: Vector2, endControlPos: Vector2, thick: f32, color: Color) void; -pub extern fn DrawLineStrip(points: [*c]Vector2, pointCount: c_int, color: Color) void; -pub extern fn DrawCircle(centerX: c_int, centerY: c_int, radius: f32, color: Color) void; -pub extern fn DrawCircleSector(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; -pub extern fn DrawCircleSectorLines(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; -pub extern fn DrawCircleGradient(centerX: c_int, centerY: c_int, radius: f32, color1: Color, color2: Color) void; -pub extern fn DrawCircleV(center: Vector2, radius: f32, color: Color) void; -pub extern fn DrawCircleLines(centerX: c_int, centerY: c_int, radius: f32, color: Color) void; -pub extern fn DrawEllipse(centerX: c_int, centerY: c_int, radiusH: f32, radiusV: f32, color: Color) void; -pub extern fn DrawEllipseLines(centerX: c_int, centerY: c_int, radiusH: f32, radiusV: f32, color: Color) void; -pub extern fn DrawRing(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; -pub extern fn DrawRingLines(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; -pub extern fn DrawRectangle(posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void; -pub extern fn DrawRectangleV(position: Vector2, size: Vector2, color: Color) void; -pub extern fn DrawRectangleRec(rec: Rectangle, color: Color) void; -pub extern fn DrawRectanglePro(rec: Rectangle, origin: Vector2, rotation: f32, color: Color) void; -pub extern fn DrawRectangleGradientV(posX: c_int, posY: c_int, width: c_int, height: c_int, color1: Color, color2: Color) void; -pub extern fn DrawRectangleGradientH(posX: c_int, posY: c_int, width: c_int, height: c_int, color1: Color, color2: Color) void; -pub extern fn DrawRectangleGradientEx(rec: Rectangle, col1: Color, col2: Color, col3: Color, col4: Color) void; -pub extern fn DrawRectangleLines(posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void; -pub extern fn DrawRectangleLinesEx(rec: Rectangle, lineThick: f32, color: Color) void; -pub extern fn DrawRectangleRounded(rec: Rectangle, roundness: f32, segments: c_int, color: Color) void; -pub extern fn DrawRectangleRoundedLines(rec: Rectangle, roundness: f32, segments: c_int, lineThick: f32, color: Color) void; -pub extern fn DrawTriangle(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void; -pub extern fn DrawTriangleLines(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void; -pub extern fn DrawTriangleFan(points: [*c]Vector2, pointCount: c_int, color: Color) void; -pub extern fn DrawTriangleStrip(points: [*c]Vector2, pointCount: c_int, color: Color) void; -pub extern fn DrawPoly(center: Vector2, sides: c_int, radius: f32, rotation: f32, color: Color) void; -pub extern fn DrawPolyLines(center: Vector2, sides: c_int, radius: f32, rotation: f32, color: Color) void; -pub extern fn DrawPolyLinesEx(center: Vector2, sides: c_int, radius: f32, rotation: f32, lineThick: f32, color: Color) void; -pub extern fn CheckCollisionRecs(rec1: Rectangle, rec2: Rectangle) bool; -pub extern fn CheckCollisionCircles(center1: Vector2, radius1: f32, center2: Vector2, radius2: f32) bool; -pub extern fn CheckCollisionCircleRec(center: Vector2, radius: f32, rec: Rectangle) bool; -pub extern fn CheckCollisionPointRec(point: Vector2, rec: Rectangle) bool; -pub extern fn CheckCollisionPointCircle(point: Vector2, center: Vector2, radius: f32) bool; -pub extern fn CheckCollisionPointTriangle(point: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) bool; -pub extern fn CheckCollisionPointPoly(point: Vector2, points: [*c]Vector2, pointCount: c_int) bool; -pub extern fn CheckCollisionLines(startPos1: Vector2, endPos1: Vector2, startPos2: Vector2, endPos2: Vector2, collisionPoint: [*c]Vector2) bool; -pub extern fn CheckCollisionPointLine(point: Vector2, p1: Vector2, p2: Vector2, threshold: c_int) bool; -pub extern fn GetCollisionRec(rec1: Rectangle, rec2: Rectangle) Rectangle; -pub extern fn LoadImage(fileName: [*c]const u8) Image; -pub extern fn LoadImageRaw(fileName: [*c]const u8, width: c_int, height: c_int, format: c_int, headerSize: c_int) Image; -pub extern fn LoadImageAnim(fileName: [*c]const u8, frames: [*c]c_int) Image; -pub extern fn LoadImageFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int) Image; -pub extern fn LoadImageFromTexture(texture: Texture2D) Image; -pub extern fn LoadImageFromScreen() Image; -pub extern fn UnloadImage(image: Image) void; -pub extern fn ExportImage(image: Image, fileName: [*c]const u8) bool; -pub extern fn ExportImageAsCode(image: Image, fileName: [*c]const u8) bool; -pub extern fn GenImageColor(width: c_int, height: c_int, color: Color) Image; -pub extern fn GenImageGradientV(width: c_int, height: c_int, top: Color, bottom: Color) Image; -pub extern fn GenImageGradientH(width: c_int, height: c_int, left: Color, right: Color) Image; -pub extern fn GenImageGradientRadial(width: c_int, height: c_int, density: f32, inner: Color, outer: Color) Image; -pub extern fn GenImageChecked(width: c_int, height: c_int, checksX: c_int, checksY: c_int, col1: Color, col2: Color) Image; -pub extern fn GenImageWhiteNoise(width: c_int, height: c_int, factor: f32) Image; -pub extern fn GenImagePerlinNoise(width: c_int, height: c_int, offsetX: c_int, offsetY: c_int, scale: f32) Image; -pub extern fn GenImageCellular(width: c_int, height: c_int, tileSize: c_int) Image; -pub extern fn GenImageText(width: c_int, height: c_int, text: [*c]const u8) Image; -pub extern fn ImageCopy(image: Image) Image; -pub extern fn ImageFromImage(image: Image, rec: Rectangle) Image; -pub extern fn ImageText(text: [*c]const u8, fontSize: c_int, color: Color) Image; -pub extern fn ImageTextEx(font: Font, text: [*c]const u8, fontSize: f32, spacing: f32, tint: Color) Image; -pub extern fn ImageFormat(image: [*c]Image, newFormat: c_int) void; -pub extern fn ImageToPOT(image: [*c]Image, fill: Color) void; -pub extern fn ImageCrop(image: [*c]Image, crop: Rectangle) void; -pub extern fn ImageAlphaCrop(image: [*c]Image, threshold: f32) void; -pub extern fn ImageAlphaClear(image: [*c]Image, color: Color, threshold: f32) void; -pub extern fn ImageAlphaMask(image: [*c]Image, alphaMask: Image) void; -pub extern fn ImageAlphaPremultiply(image: [*c]Image) void; -pub extern fn ImageBlurGaussian(image: [*c]Image, blurSize: c_int) void; -pub extern fn ImageResize(image: [*c]Image, newWidth: c_int, newHeight: c_int) void; -pub extern fn ImageResizeNN(image: [*c]Image, newWidth: c_int, newHeight: c_int) void; -pub extern fn ImageResizeCanvas(image: [*c]Image, newWidth: c_int, newHeight: c_int, offsetX: c_int, offsetY: c_int, fill: Color) void; -pub extern fn ImageMipmaps(image: [*c]Image) void; -pub extern fn ImageDither(image: [*c]Image, rBpp: c_int, gBpp: c_int, bBpp: c_int, aBpp: c_int) void; -pub extern fn ImageFlipVertical(image: [*c]Image) void; -pub extern fn ImageFlipHorizontal(image: [*c]Image) void; -pub extern fn ImageRotateCW(image: [*c]Image) void; -pub extern fn ImageRotateCCW(image: [*c]Image) void; -pub extern fn ImageColorTint(image: [*c]Image, color: Color) void; -pub extern fn ImageColorInvert(image: [*c]Image) void; -pub extern fn ImageColorGrayscale(image: [*c]Image) void; -pub extern fn ImageColorContrast(image: [*c]Image, contrast: f32) void; -pub extern fn ImageColorBrightness(image: [*c]Image, brightness: c_int) void; -pub extern fn ImageColorReplace(image: [*c]Image, color: Color, replace: Color) void; -pub extern fn LoadImageColors(image: Image) [*c]Color; -pub extern fn LoadImagePalette(image: Image, maxPaletteSize: c_int, colorCount: [*c]c_int) [*c]Color; -pub extern fn UnloadImageColors(colors: [*c]Color) void; -pub extern fn UnloadImagePalette(colors: [*c]Color) void; -pub extern fn GetImageAlphaBorder(image: Image, threshold: f32) Rectangle; -pub extern fn GetImageColor(image: Image, x: c_int, y: c_int) Color; -pub extern fn ImageClearBackground(dst: [*c]Image, color: Color) void; -pub extern fn ImageDrawPixel(dst: [*c]Image, posX: c_int, posY: c_int, color: Color) void; -pub extern fn ImageDrawPixelV(dst: [*c]Image, position: Vector2, color: Color) void; -pub extern fn ImageDrawLine(dst: [*c]Image, startPosX: c_int, startPosY: c_int, endPosX: c_int, endPosY: c_int, color: Color) void; -pub extern fn ImageDrawLineV(dst: [*c]Image, start: Vector2, end: Vector2, color: Color) void; -pub extern fn ImageDrawCircle(dst: [*c]Image, centerX: c_int, centerY: c_int, radius: c_int, color: Color) void; -pub extern fn ImageDrawCircleV(dst: [*c]Image, center: Vector2, radius: c_int, color: Color) void; -pub extern fn ImageDrawCircleLines(dst: [*c]Image, centerX: c_int, centerY: c_int, radius: c_int, color: Color) void; -pub extern fn ImageDrawCircleLinesV(dst: [*c]Image, center: Vector2, radius: c_int, color: Color) void; -pub extern fn ImageDrawRectangle(dst: [*c]Image, posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void; -pub extern fn ImageDrawRectangleV(dst: [*c]Image, position: Vector2, size: Vector2, color: Color) void; -pub extern fn ImageDrawRectangleRec(dst: [*c]Image, rec: Rectangle, color: Color) void; -pub extern fn ImageDrawRectangleLines(dst: [*c]Image, rec: Rectangle, thick: c_int, color: Color) void; -pub extern fn ImageDraw(dst: [*c]Image, src: Image, srcRec: Rectangle, dstRec: Rectangle, tint: Color) void; -pub extern fn ImageDrawText(dst: [*c]Image, text: [*c]const u8, posX: c_int, posY: c_int, fontSize: c_int, color: Color) void; -pub extern fn ImageDrawTextEx(dst: [*c]Image, font: Font, text: [*c]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void; -pub extern fn LoadTexture(fileName: [*c]const u8) Texture2D; -pub extern fn LoadTextureFromImage(image: Image) Texture2D; -pub extern fn LoadTextureCubemap(image: Image, layout: c_int) TextureCubemap; -pub extern fn LoadRenderTexture(width: c_int, height: c_int) RenderTexture2D; -pub extern fn UnloadTexture(texture: Texture2D) void; -pub extern fn UnloadRenderTexture(target: RenderTexture2D) void; -pub extern fn UpdateTexture(texture: Texture2D, pixels: *const anyopaque) void; -pub extern fn UpdateTextureRec(texture: Texture2D, rec: Rectangle, pixels: *const anyopaque) void; -pub extern fn GenTextureMipmaps(texture: [*c]Texture2D) void; -pub extern fn SetTextureFilter(texture: Texture2D, filter: c_int) void; -pub extern fn SetTextureWrap(texture: Texture2D, wrap: c_int) void; -pub extern fn DrawTexture(texture: Texture2D, posX: c_int, posY: c_int, tint: Color) void; -pub extern fn DrawTextureV(texture: Texture2D, position: Vector2, tint: Color) void; -pub extern fn DrawTextureEx(texture: Texture2D, position: Vector2, rotation: f32, scale: f32, tint: Color) void; -pub extern fn DrawTextureRec(texture: Texture2D, source: Rectangle, position: Vector2, tint: Color) void; -pub extern fn DrawTexturePro(texture: Texture2D, source: Rectangle, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void; -pub extern fn DrawTextureNPatch(texture: Texture2D, nPatchInfo: NPatchInfo, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void; -pub extern fn Fade(color: Color, alpha: f32) Color; -pub extern fn ColorToInt(color: Color) c_int; -pub extern fn ColorNormalize(color: Color) Vector4; -pub extern fn ColorFromNormalized(normalized: Vector4) Color; -pub extern fn ColorToHSV(color: Color) Vector3; -pub extern fn ColorFromHSV(hue: f32, saturation: f32, value: f32) Color; -pub extern fn ColorTint(color: Color, tint: Color) Color; -pub extern fn ColorBrightness(color: Color, factor: f32) Color; -pub extern fn ColorContrast(color: Color, contrast: f32) Color; -pub extern fn ColorAlpha(color: Color, alpha: f32) Color; -pub extern fn ColorAlphaBlend(dst: Color, src: Color, tint: Color) Color; -pub extern fn GetColor(hexValue: c_uint) Color; -pub extern fn GetPixelColor(srcPtr: *anyopaque, format: c_int) Color; -pub extern fn SetPixelColor(dstPtr: *anyopaque, color: Color, format: c_int) void; -pub extern fn GetPixelDataSize(width: c_int, height: c_int, format: c_int) c_int; -pub extern fn GetFontDefault() Font; -pub extern fn LoadFont(fileName: [*c]const u8) Font; -pub extern fn LoadFontEx(fileName: [*c]const u8, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int) Font; -pub extern fn LoadFontFromImage(image: Image, key: Color, firstChar: c_int) Font; -pub extern fn LoadFontFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int) Font; -pub extern fn LoadFontData(fileData: [*c]const u8, dataSize: c_int, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int, type: c_int) [*c]GlyphInfo; -pub extern fn GenImageFontAtlas(chars: [*c]const GlyphInfo, recs: [*c][*c]Rectangle, glyphCount: c_int, fontSize: c_int, padding: c_int, packMethod: c_int) Image; -pub extern fn UnloadFontData(chars: [*c]GlyphInfo, glyphCount: c_int) void; -pub extern fn UnloadFont(font: Font) void; -pub extern fn ExportFontAsCode(font: Font, fileName: [*c]const u8) bool; -pub extern fn DrawFPS(posX: c_int, posY: c_int) void; -pub extern fn DrawText(text: [*c]const u8, posX: c_int, posY: c_int, fontSize: c_int, color: Color) void; -pub extern fn DrawTextEx(font: Font, text: [*c]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void; -pub extern fn DrawTextPro(font: Font, text: [*c]const u8, position: Vector2, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color) void; -pub extern fn DrawTextCodepoint(font: Font, codepoint: c_int, position: Vector2, fontSize: f32, tint: Color) void; -pub extern fn DrawTextCodepoints(font: Font, codepoints: [*c]const c_int, count: c_int, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void; -pub extern fn MeasureText(text: [*c]const u8, fontSize: c_int) c_int; -pub extern fn MeasureTextEx(font: Font, text: [*c]const u8, fontSize: f32, spacing: f32) Vector2; -pub extern fn GetGlyphIndex(font: Font, codepoint: c_int) c_int; -pub extern fn GetGlyphInfo(font: Font, codepoint: c_int) GlyphInfo; -pub extern fn GetGlyphAtlasRec(font: Font, codepoint: c_int) Rectangle; -pub extern fn LoadUTF8(codepoints: [*c]const c_int, length: c_int) [*c]u8; -pub extern fn UnloadUTF8(text: [*c]u8) void; -pub extern fn LoadCodepoints(text: [*c]const u8, count: [*c]c_int) [*c]c_int; -pub extern fn UnloadCodepoints(codepoints: [*c]c_int) void; -pub extern fn GetCodepointCount(text: [*c]const u8) c_int; -pub extern fn GetCodepoint(text: [*c]const u8, codepointSize: [*c]c_int) c_int; -pub extern fn GetCodepointNext(text: [*c]const u8, codepointSize: [*c]c_int) c_int; -pub extern fn GetCodepointPrevious(text: [*c]const u8, codepointSize: [*c]c_int) c_int; -pub extern fn CodepointToUTF8(codepoint: c_int, utf8Size: [*c]c_int) [*c]const u8; -pub extern fn TextCopy(dst: [*c]u8, src: [*c]const u8) c_int; -pub extern fn TextIsEqual(text1: [*c]const u8, text2: [*c]const u8) bool; -pub extern fn TextLength(text: [*c]const u8) c_uint; -pub extern fn TextFormat(text: [*c]const u8, ...) [*c]const u8; -pub extern fn TextSubtext(text: [*c]const u8, position: c_int, length: c_int) [*c]const u8; -pub extern fn TextReplace(text: [*c]u8, replace: [*c]const u8, by: [*c]const u8) [*c]u8; -pub extern fn TextInsert(text: [*c]const u8, insert: [*c]const u8, position: c_int) [*c]u8; -pub extern fn TextJoin(textList: [*c][*c]const u8, count: c_int, delimiter: [*c]const u8) [*c]const u8; -pub extern fn TextSplit(text: [*c]const u8, delimiter: u8, count: [*c]c_int) [*c][*c]const u8; -pub extern fn TextAppend(text: [*c]u8, append: [*c]const u8, position: [*c]c_int) void; -pub extern fn TextFindIndex(text: [*c]const u8, find: [*c]const u8) c_int; -pub extern fn TextToUpper(text: [*c]const u8) [*c]const u8; -pub extern fn TextToLower(text: [*c]const u8) [*c]const u8; -pub extern fn TextToPascal(text: [*c]const u8) [*c]const u8; -pub extern fn TextToInteger(text: [*c]const u8) c_int; -pub extern fn DrawLine3D(startPos: Vector3, endPos: Vector3, color: Color) void; -pub extern fn DrawPoint3D(position: Vector3, color: Color) void; -pub extern fn DrawCircle3D(center: Vector3, radius: f32, rotationAxis: Vector3, rotationAngle: f32, color: Color) void; -pub extern fn DrawTriangle3D(v1: Vector3, v2: Vector3, v3: Vector3, color: Color) void; -pub extern fn DrawTriangleStrip3D(points: [*c]Vector3, pointCount: c_int, color: Color) void; -pub extern fn DrawCube(position: Vector3, width: f32, height: f32, length: f32, color: Color) void; -pub extern fn DrawCubeV(position: Vector3, size: Vector3, color: Color) void; -pub extern fn DrawCubeWires(position: Vector3, width: f32, height: f32, length: f32, color: Color) void; -pub extern fn DrawCubeWiresV(position: Vector3, size: Vector3, color: Color) void; -pub extern fn DrawSphere(centerPos: Vector3, radius: f32, color: Color) void; -pub extern fn DrawSphereEx(centerPos: Vector3, radius: f32, rings: c_int, slices: c_int, color: Color) void; -pub extern fn DrawSphereWires(centerPos: Vector3, radius: f32, rings: c_int, slices: c_int, color: Color) void; -pub extern fn DrawCylinder(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: c_int, color: Color) void; -pub extern fn DrawCylinderEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: c_int, color: Color) void; -pub extern fn DrawCylinderWires(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: c_int, color: Color) void; -pub extern fn DrawCylinderWiresEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: c_int, color: Color) void; -pub extern fn DrawCapsule(startPos: Vector3, endPos: Vector3, radius: f32, slices: c_int, rings: c_int, color: Color) void; -pub extern fn DrawCapsuleWires(startPos: Vector3, endPos: Vector3, radius: f32, slices: c_int, rings: c_int, color: Color) void; -pub extern fn DrawPlane(centerPos: Vector3, size: Vector2, color: Color) void; -pub extern fn DrawRay(ray: Ray, color: Color) void; -pub extern fn DrawGrid(slices: c_int, spacing: f32) void; -pub extern fn LoadModel(fileName: [*c]const u8) Model; -pub extern fn LoadModelFromMesh(mesh: Mesh) Model; -pub extern fn UnloadModel(model: Model) void; -pub extern fn UnloadModelKeepMeshes(model: Model) void; -pub extern fn GetModelBoundingBox(model: Model) BoundingBox; -pub extern fn DrawModel(model: Model, position: Vector3, scale: f32, tint: Color) void; -pub extern fn DrawModelEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void; -pub extern fn DrawModelWires(model: Model, position: Vector3, scale: f32, tint: Color) void; -pub extern fn DrawModelWiresEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void; -pub extern fn DrawBoundingBox(box: BoundingBox, color: Color) void; -pub extern fn DrawBillboard(camera: Camera, texture: Texture2D, position: Vector3, size: f32, tint: Color) void; -pub extern fn DrawBillboardRec(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, size: Vector2, tint: Color) void; -pub extern fn DrawBillboardPro(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, up: Vector3, size: Vector2, origin: Vector2, rotation: f32, tint: Color) void; -pub extern fn UploadMesh(mesh: [*c]Mesh, dynamic: bool) void; -pub extern fn UpdateMeshBuffer(mesh: Mesh, index: c_int, data: *const anyopaque, dataSize: c_int, offset: c_int) void; -pub extern fn UnloadMesh(mesh: Mesh) void; -pub extern fn DrawMesh(mesh: Mesh, material: Material, transform: Matrix) void; -pub extern fn DrawMeshInstanced(mesh: Mesh, material: Material, transforms: [*c]const Matrix, instances: c_int) void; -pub extern fn ExportMesh(mesh: Mesh, fileName: [*c]const u8) bool; -pub extern fn GetMeshBoundingBox(mesh: Mesh) BoundingBox; -pub extern fn GenMeshTangents(mesh: [*c]Mesh) void; -pub extern fn GenMeshPoly(sides: c_int, radius: f32) Mesh; -pub extern fn GenMeshPlane(width: f32, length: f32, resX: c_int, resZ: c_int) Mesh; -pub extern fn GenMeshCube(width: f32, height: f32, length: f32) Mesh; -pub extern fn GenMeshSphere(radius: f32, rings: c_int, slices: c_int) Mesh; -pub extern fn GenMeshHemiSphere(radius: f32, rings: c_int, slices: c_int) Mesh; -pub extern fn GenMeshCylinder(radius: f32, height: f32, slices: c_int) Mesh; -pub extern fn GenMeshCone(radius: f32, height: f32, slices: c_int) Mesh; -pub extern fn GenMeshTorus(radius: f32, size: f32, radSeg: c_int, sides: c_int) Mesh; -pub extern fn GenMeshKnot(radius: f32, size: f32, radSeg: c_int, sides: c_int) Mesh; -pub extern fn GenMeshHeightmap(heightmap: Image, size: Vector3) Mesh; -pub extern fn GenMeshCubicmap(cubicmap: Image, cubeSize: Vector3) Mesh; -pub extern fn LoadMaterials(fileName: [*c]const u8, materialCount: [*c]c_int) [*c]Material; -pub extern fn LoadMaterialDefault() Material; -pub extern fn UnloadMaterial(material: Material) void; -pub extern fn SetMaterialTexture(material: [*c]Material, mapType: c_int, texture: Texture2D) void; -pub extern fn SetModelMeshMaterial(model: [*c]Model, meshId: c_int, materialId: c_int) void; -pub extern fn LoadModelAnimations(fileName: [*c]const u8, animCount: [*c]c_uint) [*c]ModelAnimation; -pub extern fn UpdateModelAnimation(model: Model, anim: ModelAnimation, frame: c_int) void; -pub extern fn UnloadModelAnimation(anim: ModelAnimation) void; -pub extern fn UnloadModelAnimations(animations: [*c]ModelAnimation, count: c_uint) void; -pub extern fn IsModelAnimationValid(model: Model, anim: ModelAnimation) bool; -pub extern fn CheckCollisionSpheres(center1: Vector3, radius1: f32, center2: Vector3, radius2: f32) bool; -pub extern fn CheckCollisionBoxes(box1: BoundingBox, box2: BoundingBox) bool; -pub extern fn CheckCollisionBoxSphere(box: BoundingBox, center: Vector3, radius: f32) bool; -pub extern fn GetRayCollisionSphere(ray: Ray, center: Vector3, radius: f32) RayCollision; -pub extern fn GetRayCollisionBox(ray: Ray, box: BoundingBox) RayCollision; -pub extern fn GetRayCollisionMesh(ray: Ray, mesh: Mesh, transform: Matrix) RayCollision; -pub extern fn GetRayCollisionTriangle(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3) RayCollision; -pub extern fn GetRayCollisionQuad(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3) RayCollision; -pub extern fn InitAudioDevice() void; -pub extern fn CloseAudioDevice() void; -pub extern fn IsAudioDeviceReady() bool; -pub extern fn SetMasterVolume(volume: f32) void; -pub extern fn LoadWave(fileName: [*c]const u8) Wave; -pub extern fn LoadWaveFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int) Wave; -pub extern fn LoadSound(fileName: [*c]const u8) Sound; -pub extern fn LoadSoundFromWave(wave: Wave) Sound; -pub extern fn UpdateSound(sound: Sound, data: *const anyopaque, sampleCount: c_int) void; -pub extern fn UnloadWave(wave: Wave) void; -pub extern fn UnloadSound(sound: Sound) void; -pub extern fn ExportWave(wave: Wave, fileName: [*c]const u8) bool; -pub extern fn ExportWaveAsCode(wave: Wave, fileName: [*c]const u8) bool; -pub extern fn PlaySound(sound: Sound) void; -pub extern fn StopSound(sound: Sound) void; -pub extern fn PauseSound(sound: Sound) void; -pub extern fn ResumeSound(sound: Sound) void; -pub extern fn PlaySoundMulti(sound: Sound) void; -pub extern fn StopSoundMulti() void; -pub extern fn GetSoundsPlaying() c_int; -pub extern fn IsSoundPlaying(sound: Sound) bool; -pub extern fn SetSoundVolume(sound: Sound, volume: f32) void; -pub extern fn SetSoundPitch(sound: Sound, pitch: f32) void; -pub extern fn SetSoundPan(sound: Sound, pan: f32) void; -pub extern fn WaveCopy(wave: Wave) Wave; -pub extern fn WaveCrop(wave: [*c]Wave, initSample: c_int, finalSample: c_int) void; -pub extern fn WaveFormat(wave: [*c]Wave, sampleRate: c_int, sampleSize: c_int, channels: c_int) void; -pub extern fn LoadWaveSamples(wave: Wave) [*c]f32; -pub extern fn UnloadWaveSamples(samples: [*c]f32) void; -pub extern fn LoadMusicStream(fileName: [*c]const u8) Music; -pub extern fn LoadMusicStreamFromMemory(fileType: [*c]const u8, data: [*c]const u8, dataSize: c_int) Music; -pub extern fn UnloadMusicStream(music: Music) void; -pub extern fn PlayMusicStream(music: Music) void; -pub extern fn IsMusicStreamPlaying(music: Music) bool; -pub extern fn UpdateMusicStream(music: Music) void; -pub extern fn StopMusicStream(music: Music) void; -pub extern fn PauseMusicStream(music: Music) void; -pub extern fn ResumeMusicStream(music: Music) void; -pub extern fn SeekMusicStream(music: Music, position: f32) void; -pub extern fn SetMusicVolume(music: Music, volume: f32) void; -pub extern fn SetMusicPitch(music: Music, pitch: f32) void; -pub extern fn SetMusicPan(music: Music, pan: f32) void; -pub extern fn GetMusicTimeLength(music: Music) f32; -pub extern fn GetMusicTimePlayed(music: Music) f32; -pub extern fn LoadAudioStream(sampleRate: c_uint, sampleSize: c_uint, channels: c_uint) AudioStream; -pub extern fn UnloadAudioStream(stream: AudioStream) void; -pub extern fn UpdateAudioStream(stream: AudioStream, data: *const anyopaque, frameCount: c_int) void; -pub extern fn IsAudioStreamProcessed(stream: AudioStream) bool; -pub extern fn PlayAudioStream(stream: AudioStream) void; -pub extern fn PauseAudioStream(stream: AudioStream) void; -pub extern fn ResumeAudioStream(stream: AudioStream) void; -pub extern fn IsAudioStreamPlaying(stream: AudioStream) bool; -pub extern fn StopAudioStream(stream: AudioStream) void; -pub extern fn SetAudioStreamVolume(stream: AudioStream, volume: f32) void; -pub extern fn SetAudioStreamPitch(stream: AudioStream, pitch: f32) void; -pub extern fn SetAudioStreamPan(stream: AudioStream, pan: f32) void; -pub extern fn SetAudioStreamBufferSizeDefault(size: c_int) void; -pub extern fn SetAudioStreamCallback(stream: AudioStream, callback: AudioCallback) void; -pub extern fn AttachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void; -pub extern fn DetachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void; - - diff --git a/lib/raylib-zig-math-prelude.zig b/lib/raylib-zig-math-prelude.zig new file mode 100644 index 0000000..d382a48 --- /dev/null +++ b/lib/raylib-zig-math-prelude.zig @@ -0,0 +1,17 @@ +// raylib-zig (c) Nikolas Wipper 2023 + +const rl = @import("raylib-zig.zig"); + +const Matrix = rl.Matrix; +const Quaternion = rl.Quaternion; +const Vector2 = rl.Vector2; +const Vector3 = rl.Vector3; +const Vector4 = rl.Vector4; + +pub const float3 = extern struct { + v: [3]f32, +}; + +pub const float16 = extern struct { + v: [16]f32, +}; diff --git a/lib/raylib-zig-math.zig b/lib/raylib-zig-math.zig index 0cea20a..ad04698 100755 --- a/lib/raylib-zig-math.zig +++ b/lib/raylib-zig-math.zig @@ -1,3 +1,5 @@ +// raylib-zig (c) Nikolas Wipper 2023 + const rl = @import("raylib-zig.zig"); const Matrix = rl.Matrix; diff --git a/lib/raylib-zig-types.zig b/lib/raylib-zig-types.zig new file mode 100755 index 0000000..0a51702 --- /dev/null +++ b/lib/raylib-zig-types.zig @@ -0,0 +1,768 @@ +// raylib-zig (c) Nikolas Wipper 2023 + +const rl = @This(); + +pub const Vector2 = extern struct { + x: f32, + y: f32, +}; + +pub const Vector3 = extern struct { + x: f32, + y: f32, + z: f32, +}; + +pub const Vector4 = extern struct { + x: f32, + y: f32, + z: f32, + w: f32, +}; +pub const Quaternion = Vector4; + +pub const Matrix = extern struct { + m0: f32, + m4: f32, + m8: f32, + m12: f32, + m1: f32, + m5: f32, + m9: f32, + m13: f32, + m2: f32, + m6: f32, + m10: f32, + m14: f32, + m3: f32, + m7: f32, + m11: f32, + m15: f32, +}; + +pub const Color = extern struct { + r: u8, + g: u8, + b: u8, + a: u8, +}; + +pub const LIGHTGRAY = Color{ .r = 200, .g = 200, .b = 200, .a = 255 }; +pub const GRAY = Color{ .r = 130, .g = 130, .b = 130, .a = 255 }; +pub const DARKGRAY = Color{ .r = 80, .g = 80, .b = 80, .a = 255 }; +pub const YELLOW = Color{ .r = 253, .g = 249, .b = 0, .a = 255 }; +pub const GOLD = Color{ .r = 255, .g = 203, .b = 0, .a = 255 }; +pub const ORANGE = Color{ .r = 255, .g = 161, .b = 0, .a = 255 }; +pub const PINK = Color{ .r = 255, .g = 109, .b = 194, .a = 255 }; +pub const RED = Color{ .r = 230, .g = 41, .b = 55, .a = 255 }; +pub const MAROON = Color{ .r = 190, .g = 33, .b = 55, .a = 255 }; +pub const GREEN = Color{ .r = 0, .g = 228, .b = 48, .a = 255 }; +pub const LIME = Color{ .r = 0, .g = 158, .b = 47, .a = 255 }; +pub const DARKGREEN = Color{ .r = 0, .g = 117, .b = 44, .a = 255 }; +pub const SKYBLUE = Color{ .r = 102, .g = 191, .b = 255, .a = 255 }; +pub const BLUE = Color{ .r = 0, .g = 121, .b = 241, .a = 255 }; +pub const DARKBLUE = Color{ .r = 0, .g = 82, .b = 172, .a = 255 }; +pub const PURPLE = Color{ .r = 200, .g = 122, .b = 255, .a = 255 }; +pub const VIOLET = Color{ .r = 135, .g = 60, .b = 190, .a = 255 }; +pub const DARKPURPLE = Color{ .r = 112, .g = 31, .b = 126, .a = 255 }; +pub const BEIGE = Color{ .r = 211, .g = 176, .b = 131, .a = 255 }; +pub const BROWN = Color{ .r = 127, .g = 106, .b = 79, .a = 255 }; +pub const DARKBROWN = Color{ .r = 76, .g = 63, .b = 47, .a = 255 }; + +pub const WHITE = Color{ .r = 255, .g = 255, .b = 255, .a = 255 }; +pub const BLACK = Color{ .r = 0, .g = 0, .b = 0, .a = 255 }; +pub const BLANK = Color{ .r = 0, .g = 0, .b = 0, .a = 0 }; +pub const MAGENTA = Color{ .r = 255, .g = 0, .b = 255, .a = 255 }; +pub const RAYWHITE = Color{ .r = 245, .g = 245, .b = 245, .a = 255 }; + +pub const Rectangle = extern struct { + x: f32, + y: f32, + width: f32, + height: f32, +}; + +pub const Image = extern struct { + data: ?*anyopaque, + width: c_int, + height: c_int, + mipmaps: c_int, + format: PixelFormat, + + pub fn init(fileName: [*c]const u8) Image { + return rl.LoadImage(fileName); + } + + pub fn initRaw(fileName: [*c]const u8, width: c_int, height: c_int, format: PixelFormat, headerSize: c_int) Image { + return rl.LoadImageRaw(fileName, width, height, format, headerSize); + } + + pub fn initText(text: [*c]const u8, fontSize: c_int, color: Color) Image { + return rl.ImageText(text, fontSize, color); + } + + pub fn initTextEx(font: Font, text: [*c]const u8, fontSize: f32, spacing: f32, tint: Color) Image { + return rl.ImageTextEx(font, text, fontSize, spacing, tint); + } + + pub fn copy(image: Image) Image { + return rl.ImageCopy(image); + } + + pub fn copyRec(image: Image, rec: Rectangle) Image { + return rl.ImageFromImage(image, rec); + } + + pub fn GenColor(width: c_int, height: c_int, color: Color) Image { + return rl.GenImageColor(width, height, color); + } + + pub fn GenGradientV(width: c_int, height: c_int, top: Color, bottom: Color) Image { + return rl.GenImageGradientV(width, height, top, bottom); + } + + pub fn GenGradientH(width: c_int, height: c_int, left: Color, right: Color) Image { + return rl.GenImageGradientH(width, height, left, right); + } + + pub fn GenGradientRadial(width: c_int, height: c_int, density: f32, inner: Color, outer: Color) Image { + return rl.GenImageGradientRadial(width, height, density, inner, outer); + } + + pub fn GenChecked(width: c_int, height: c_int, checksX: c_int, checksY: c_int, col1: Color, col2: Color) Image { + return rl.GenImageChecked(width, height, checksX, checksY, col1, col2); + } + + pub fn GenWhiteNoise(width: c_int, height: c_int, factor: f32) Image { + return rl.GenImageWhiteNoise(width, height, factor); + } + + pub fn GenCellular(width: c_int, height: c_int, tileSize: c_int) Image { + return rl.GenImageCellular(width, height, tileSize); + } + + pub fn UseAsWindowIcon(self: Image) void { + rl.SetWindowIcon(self); + } +}; + +pub const Texture = extern struct { + id: c_uint, + width: c_int, + height: c_int, + mipmaps: c_int, + format: c_int, +}; +pub const Texture2D = Texture; +pub const TextureCubemap = Texture; + +pub const RenderTexture = extern struct { + id: c_uint, + texture: Texture, + depth: Texture, + + pub fn Begin(self: RenderTexture2D) void { + rl.BeginTextureMode(self); + } + + pub fn End(_: RenderTexture2D) void { + rl.EndTextureMode(); + } +}; +pub const RenderTexture2D = RenderTexture; + +pub const NPatchInfo = extern struct { + source: Rectangle, + left: c_int, + top: c_int, + right: c_int, + bottom: c_int, + layout: c_int, +}; + +pub const GlyphInfo = extern struct { + value: c_int, + offsetX: c_int, + offsetY: c_int, + advanceX: c_int, + image: Image, +}; + +pub const Font = extern struct { + baseSize: c_int, + glyphCount: c_int, + glyphPadding: c_int, + texture: Texture2D, + recs: [*c]Rectangle, + glyphs: [*c]GlyphInfo, +}; + +pub const Camera3D = extern struct { + position: Vector3, + target: Vector3, + up: Vector3, + fovy: f32, + projection: CameraProjection, + + pub fn Begin(self: Camera3D) void { + rl.BeginMode3D(self); + } + + pub fn Update(self: *Camera3D) void { + rl.UpdateCamera(self); + } + + pub fn GetMatrix(self: Camera3D) Matrix { + return rl.GetCameraMatrix(self); + } + + pub fn SetMode(self: Camera3D, mode: CameraMode) void { + rl.SetCameraMode(self, mode); + } + + pub fn End(_: Camera3D) void { + rl.EndMode3D(); + } +}; +pub const Camera = Camera3D; + +pub const Camera2D = extern struct { + offset: Vector2, + target: Vector2, + rotation: f32, + zoom: f32, + + pub fn Begin(self: Camera2D) void { + rl.BeginMode2D(self); + } + + pub fn GetMatrix(self: Camera2D) Matrix { + return rl.GetCameraMatrix2D(self); + } + + pub fn End(_: Camera2D) void { + rl.EndMode2D(); + } +}; + +pub const Mesh = extern struct { + vertexCount: c_int, + triangleCount: c_int, + vertices: [*c]f32, + texcoords: [*c]f32, + texcoords2: [*c]f32, + normals: [*c]f32, + tangents: [*c]f32, + colors: [*c]u8, + indices: [*c]c_ushort, + animVertices: [*c]f32, + animNormals: [*c]f32, + boneIds: [*c]u8, + boneWeights: [*c]f32, + vaoId: c_uint, + vboId: [*c]c_uint, +}; + +pub const Shader = extern struct { + id: c_uint, + locs: [*c]c_int, +}; + +pub const MaterialMap = extern struct { + texture: Texture2D, + color: Color, + value: f32, +}; + +pub const Material = extern struct { + shader: Shader, + maps: [*c]MaterialMap, + params: [4]f32, +}; + +pub const Transform = extern struct { + translation: Vector3, + rotation: Quaternion, + scale: Vector3, +}; + +pub const BoneInfo = extern struct { + name: [32]u8, + parent: c_int, +}; + +pub const Model = extern struct { + transform: Matrix, + meshCount: c_int, + materialCount: c_int, + meshes: [*c]Mesh, + materials: [*c]Material, + meshMaterial: [*c]c_int, + boneCount: c_int, + bones: [*c]BoneInfo, + bindPose: [*c]Transform, +}; + +pub const ModelAnimation = extern struct { + boneCount: c_int, + frameCount: c_int, + bones: [*c]BoneInfo, + framePoses: [*c][*c]Transform, +}; + +pub const Ray = extern struct { + position: Vector3, + direction: Vector3, +}; + +pub const RayCollision = extern struct { + hit: bool, + distance: f32, + point: Vector3, + normal: Vector3, +}; + +pub const BoundingBox = extern struct { + min: Vector3, + max: Vector3, +}; + +pub const Wave = extern struct { + frameCount: c_uint, + sampleRate: c_uint, + sampleSize: c_uint, + channels: c_uint, + data: ?*anyopaque, +}; + +pub const rAudioBuffer = opaque {}; +pub const rAudioProcessor = opaque {}; + +pub const AudioStream = extern struct { + buffer: ?*rAudioBuffer, + processor: ?*rAudioProcessor, + sampleRate: c_uint, + sampleSize: c_uint, + channels: c_uint, +}; + +pub const Sound = extern struct { + stream: AudioStream, + frameCount: c_uint, +}; + +pub const Music = extern struct { + stream: AudioStream, + frameCount: c_uint, + looping: bool, + ctxType: c_int, + ctxData: ?*anyopaque, +}; + +pub const VrDeviceInfo = extern struct { + hResolution: c_int, + vResolution: c_int, + hScreenSize: f32, + vScreenSize: f32, + vScreenCenter: f32, + eyeToScreenDistance: f32, + lensSeparationDistance: f32, + interpupillaryDistance: f32, + lensDistortionValues: [4]f32, + chromaAbCorrection: [4]f32, +}; + +pub const VrStereoConfig = extern struct { + projection: [2]Matrix, + viewOffset: [2]Matrix, + leftLensCenter: [2]f32, + rightLensCenter: [2]f32, + leftScreenCenter: [2]f32, + rightScreenCenter: [2]f32, + scale: [2]f32, + scaleIn: [2]f32, +}; + +pub const FilePathList = extern struct { + capacity: c_uint, + count: c_uint, + paths: [*c][*c]u8, +}; + +pub const ConfigFlags = enum(c_int) { + FLAG_FULLSCREEN_MODE = 2, + FLAG_WINDOW_RESIZABLE = 4, + FLAG_WINDOW_UNDECORATED = 8, + FLAG_WINDOW_TRANSPARENT = 16, + FLAG_MSAA_4X_HINT = 32, + FLAG_VSYNC_HINT = 64, + FLAG_WINDOW_HIDDEN = 128, + FLAG_WINDOW_ALWAYS_RUN = 256, + FLAG_WINDOW_MINIMIZED = 512, + FLAG_WINDOW_MAXIMIZED = 1024, + FLAG_WINDOW_UNFOCUSED = 2048, + FLAG_WINDOW_TOPMOST = 4096, + FLAG_WINDOW_HIGHDPI = 8192, + FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384, + FLAG_INTERLACED_HINT = 65536, +}; + +pub const TraceLogLevel = enum(c_int) { + LOG_ALL = 0, + LOG_TRACE = 1, + LOG_DEBUG = 2, + LOG_INFO = 3, + LOG_WARNING = 4, + LOG_ERROR = 5, + LOG_FATAL = 6, + LOG_NONE = 7, +}; + +pub const KeyboardKey = enum(c_int) { + KEY_NULL = 0, + KEY_APOSTROPHE = 39, + KEY_COMMA = 44, + KEY_MINUS = 45, + KEY_PERIOD = 46, + KEY_SLASH = 47, + KEY_ZERO = 48, + KEY_ONE = 49, + KEY_TWO = 50, + KEY_THREE = 51, + KEY_FOUR = 52, + KEY_FIVE = 53, + KEY_SIX = 54, + KEY_SEVEN = 55, + KEY_EIGHT = 56, + KEY_NINE = 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_SPACE = 32, + 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_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, + KEY_LEFT_BRACKET = 91, + KEY_BACKSLASH = 92, + KEY_RIGHT_BRACKET = 93, + KEY_GRAVE = 96, + KEY_KP_0 = 320, + KEY_KP_1 = 321, + KEY_KP_2 = 322, + KEY_KP_3 = 323, + KEY_KP_4 = 324, + KEY_KP_5 = 325, + KEY_KP_6 = 326, + KEY_KP_7 = 327, + KEY_KP_8 = 328, + KEY_KP_9 = 329, + KEY_KP_DECIMAL = 330, + KEY_KP_DIVIDE = 331, + KEY_KP_MULTIPLY = 332, + KEY_KP_SUBTRACT = 333, + KEY_KP_ADD = 334, + KEY_KP_ENTER = 335, + KEY_KP_EQUAL = 336, + KEY_BACK = 4, + //KEY_MENU = 82, + KEY_VOLUME_UP = 24, + KEY_VOLUME_DOWN = 25, +}; + +pub const MouseButton = enum(c_int) { + MOUSE_BUTTON_LEFT = 0, + MOUSE_BUTTON_RIGHT = 1, + MOUSE_BUTTON_MIDDLE = 2, + MOUSE_BUTTON_SIDE = 3, + MOUSE_BUTTON_EXTRA = 4, + MOUSE_BUTTON_FORWARD = 5, + MOUSE_BUTTON_BACK = 6, +}; + +pub const MouseCursor = enum(c_int) { + MOUSE_CURSOR_DEFAULT = 0, + MOUSE_CURSOR_ARROW = 1, + MOUSE_CURSOR_IBEAM = 2, + MOUSE_CURSOR_CROSSHAIR = 3, + MOUSE_CURSOR_POINTING_HAND = 4, + MOUSE_CURSOR_RESIZE_EW = 5, + MOUSE_CURSOR_RESIZE_NS = 6, + MOUSE_CURSOR_RESIZE_NWSE = 7, + MOUSE_CURSOR_RESIZE_NESW = 8, + MOUSE_CURSOR_RESIZE_ALL = 9, + MOUSE_CURSOR_NOT_ALLOWED = 10, +}; + +pub const GamepadButton = enum(c_int) { + GAMEPAD_BUTTON_UNKNOWN = 0, + GAMEPAD_BUTTON_LEFT_FACE_UP = 1, + GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2, + GAMEPAD_BUTTON_LEFT_FACE_DOWN = 3, + GAMEPAD_BUTTON_LEFT_FACE_LEFT = 4, + GAMEPAD_BUTTON_RIGHT_FACE_UP = 5, + GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = 6, + GAMEPAD_BUTTON_RIGHT_FACE_DOWN = 7, + GAMEPAD_BUTTON_RIGHT_FACE_LEFT = 8, + GAMEPAD_BUTTON_LEFT_TRIGGER_1 = 9, + GAMEPAD_BUTTON_LEFT_TRIGGER_2 = 10, + GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = 11, + GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = 12, + GAMEPAD_BUTTON_MIDDLE_LEFT = 13, + GAMEPAD_BUTTON_MIDDLE = 14, + GAMEPAD_BUTTON_MIDDLE_RIGHT = 15, + GAMEPAD_BUTTON_LEFT_THUMB = 16, + GAMEPAD_BUTTON_RIGHT_THUMB = 17, +}; + +pub const GamepadAxis = enum(c_int) { + GAMEPAD_AXIS_LEFT_X = 0, + GAMEPAD_AXIS_LEFT_Y = 1, + GAMEPAD_AXIS_RIGHT_X = 2, + GAMEPAD_AXIS_RIGHT_Y = 3, + GAMEPAD_AXIS_LEFT_TRIGGER = 4, + GAMEPAD_AXIS_RIGHT_TRIGGER = 5, +}; + +pub const MaterialMapIndex = enum(c_int) { + MATERIAL_MAP_ALBEDO = 0, + MATERIAL_MAP_METALNESS = 1, + MATERIAL_MAP_NORMAL = 2, + MATERIAL_MAP_ROUGHNESS = 3, + MATERIAL_MAP_OCCLUSION = 4, + MATERIAL_MAP_EMISSION = 5, + MATERIAL_MAP_HEIGHT = 6, + MATERIAL_MAP_CUBEMAP = 7, + MATERIAL_MAP_IRRADIANCE = 8, + MATERIAL_MAP_PREFILTER = 9, + MATERIAL_MAP_BRDF = 10, +}; + +pub const ShaderLocationIndex = enum(c_int) { + SHADER_LOC_VERTEX_POSITION = 0, + SHADER_LOC_VERTEX_TEXCOORD01 = 1, + SHADER_LOC_VERTEX_TEXCOORD02 = 2, + SHADER_LOC_VERTEX_NORMAL = 3, + SHADER_LOC_VERTEX_TANGENT = 4, + SHADER_LOC_VERTEX_COLOR = 5, + SHADER_LOC_MATRIX_MVP = 6, + SHADER_LOC_MATRIX_VIEW = 7, + SHADER_LOC_MATRIX_PROJECTION = 8, + SHADER_LOC_MATRIX_MODEL = 9, + SHADER_LOC_MATRIX_NORMAL = 10, + SHADER_LOC_VECTOR_VIEW = 11, + SHADER_LOC_COLOR_DIFFUSE = 12, + SHADER_LOC_COLOR_SPECULAR = 13, + SHADER_LOC_COLOR_AMBIENT = 14, + SHADER_LOC_MAP_ALBEDO = 15, + SHADER_LOC_MAP_METALNESS = 16, + SHADER_LOC_MAP_NORMAL = 17, + SHADER_LOC_MAP_ROUGHNESS = 18, + SHADER_LOC_MAP_OCCLUSION = 19, + SHADER_LOC_MAP_EMISSION = 20, + SHADER_LOC_MAP_HEIGHT = 21, + SHADER_LOC_MAP_CUBEMAP = 22, + SHADER_LOC_MAP_IRRADIANCE = 23, + SHADER_LOC_MAP_PREFILTER = 24, + SHADER_LOC_MAP_BRDF = 25, +}; + +pub const ShaderUniformDataType = enum(c_int) { + SHADER_UNIFORM_FLOAT = 0, + SHADER_UNIFORM_VEC2 = 1, + SHADER_UNIFORM_VEC3 = 2, + SHADER_UNIFORM_VEC4 = 3, + SHADER_UNIFORM_INT = 4, + SHADER_UNIFORM_IVEC2 = 5, + SHADER_UNIFORM_IVEC3 = 6, + SHADER_UNIFORM_IVEC4 = 7, + SHADER_UNIFORM_SAMPLER2D = 8, +}; + +pub const ShaderAttribute = enum(c_int) { + SHADER_ATTRIB_FLOAT = 0, + SHADER_ATTRIB_VEC2 = 1, + SHADER_ATTRIB_VEC3 = 2, + SHADER_ATTRIB_VEC4 = 3, +}; + +pub const PixelFormat = enum(c_int) { + PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, + PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2, + PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3, + PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4, + PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5, + PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6, + PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7, + PIXELFORMAT_UNCOMPRESSED_R32 = 8, + PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9, + PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10, + PIXELFORMAT_COMPRESSED_DXT1_RGB = 11, + PIXELFORMAT_COMPRESSED_DXT1_RGBA = 12, + PIXELFORMAT_COMPRESSED_DXT3_RGBA = 13, + PIXELFORMAT_COMPRESSED_DXT5_RGBA = 14, + PIXELFORMAT_COMPRESSED_ETC1_RGB = 15, + PIXELFORMAT_COMPRESSED_ETC2_RGB = 16, + PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 17, + PIXELFORMAT_COMPRESSED_PVRT_RGB = 18, + PIXELFORMAT_COMPRESSED_PVRT_RGBA = 19, + PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 20, + PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 21, +}; + +pub const TextureFilter = enum(c_int) { + TEXTURE_FILTER_POINT = 0, + TEXTURE_FILTER_BILINEAR = 1, + TEXTURE_FILTER_TRILINEAR = 2, + TEXTURE_FILTER_ANISOTROPIC_4X = 3, + TEXTURE_FILTER_ANISOTROPIC_8X = 4, + TEXTURE_FILTER_ANISOTROPIC_16X = 5, +}; + +pub const TextureWrap = enum(c_int) { + TEXTURE_WRAP_REPEAT = 0, + TEXTURE_WRAP_CLAMP = 1, + TEXTURE_WRAP_MIRROR_REPEAT = 2, + TEXTURE_WRAP_MIRROR_CLAMP = 3, +}; + +pub const CubemapLayout = enum(c_int) { + CUBEMAP_LAYOUT_AUTO_DETECT = 0, + CUBEMAP_LAYOUT_LINE_VERTICAL = 1, + CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2, + CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3, + CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4, + CUBEMAP_LAYOUT_PANORAMA = 5, +}; + +pub const FontType = enum(c_int) { + FONT_DEFAULT = 0, + FONT_BITMAP = 1, + FONT_SDF = 2, +}; + +pub const BlendMode = enum(c_int) { + BLEND_ALPHA = 0, + BLEND_ADDITIVE = 1, + BLEND_MULTIPLIED = 2, + BLEND_ADD_COLORS = 3, + BLEND_SUBTRACT_COLORS = 4, + BLEND_ALPHA_PREMULTIPLY = 5, + BLEND_CUSTOM = 6, + BLEND_CUSTOM_SEPARATE = 7, +}; + +pub const Gestures = enum(c_int) { + 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, +}; + +pub const CameraMode = enum(c_int) { + CAMERA_CUSTOM = 0, + CAMERA_FREE = 1, + CAMERA_ORBITAL = 2, + CAMERA_FIRST_PERSON = 3, + CAMERA_THIRD_PERSON = 4, +}; + +pub const CameraProjection = enum(c_int) { + CAMERA_PERSPECTIVE = 0, + CAMERA_ORTHOGRAPHIC = 1, +}; + +pub const NPatchType = enum(c_int) { + NPATCH_NINE_PATCH = 0, + NPATCH_THREE_PATCH_VERTICAL = 1, + NPATCH_THREE_PATCH_HORIZONTAL = 2, +}; + +// pub const TraceLogCallback = ?fn (c_int, [*c]const u8, [*c]struct___va_list_tag) callconv(.C) void; +pub const LoadFileDataCallback = ?fn ([*c]const u8, [*c]c_uint) callconv(.C) [*c]u8; +pub const SaveFileDataCallback = ?fn ([*c]const u8, ?*anyopaque, c_uint) callconv(.C) bool; +pub const LoadFileTextCallback = ?fn ([*c]const u8) callconv(.C) [*c]u8; +pub const SaveFileTextCallback = ?fn ([*c]const u8, [*c]u8) callconv(.C) bool; +pub const AudioCallback = ?*const fn (?*anyopaque, c_uint) callconv(.C) void; + +pub const RAYLIB_VERSION_MAJOR = @as(c_int, 4); +pub const RAYLIB_VERSION_MINOR = @as(c_int, 5); +pub const RAYLIB_VERSION_PATCH = @as(c_int, 0); +pub const RAYLIB_VERSION = "4.5-dev"; + +pub const MAX_TOUCH_POINTS = 10; +pub const MAX_MATERIAL_MAPS = 12; +pub const MAX_SHADER_LOCATIONS = 32; + +pub const MATERIAL_MAP_DIFFUSE = MaterialMapIndex.MATERIAL_MAP_ALBEDO; +pub const MATERIAL_MAP_SPECULAR = MaterialMapIndex.MATERIAL_MAP_METALNESS; +pub const SHADER_LOC_MAP_DIFFUSE = ShaderLocationIndex.SHADER_LOC_MAP_ALBEDO; +pub const SHADER_LOC_MAP_SPECULAR = ShaderLocationIndex.SHADER_LOC_MAP_METALNESS; diff --git a/lib/raylib-zig.zig b/lib/raylib-zig.zig old mode 100755 new mode 100644 index cbb11b5..c687588 --- a/lib/raylib-zig.zig +++ b/lib/raylib-zig.zig @@ -1,11 +1,4 @@ -// -// raylib-zig -// Zig version: 0.9.0 -// Author: Nikolas Wipper -// Date: 2020-02-15 -// - -pub usingnamespace @import("raylib-wa.zig"); +// raylib-zig (c) Nikolas Wipper 2023 const rl = @This(); @@ -758,6 +751,7 @@ pub const LoadFileDataCallback = ?fn ([*c]const u8, [*c]c_uint) callconv(.C) [*c pub const SaveFileDataCallback = ?fn ([*c]const u8, ?*anyopaque, c_uint) callconv(.C) bool; pub const LoadFileTextCallback = ?fn ([*c]const u8) callconv(.C) [*c]u8; pub const SaveFileTextCallback = ?fn ([*c]const u8, [*c]u8) callconv(.C) bool; +pub const AudioCallback = ?*const fn (?*anyopaque, c_uint) callconv(.C) void; pub const RAYLIB_VERSION_MAJOR = @as(c_int, 4); pub const RAYLIB_VERSION_MINOR = @as(c_int, 5); @@ -772,3 +766,516 @@ pub const MATERIAL_MAP_DIFFUSE = MaterialMapIndex.MATERIAL_MAP_ALBEDO; pub const MATERIAL_MAP_SPECULAR = MaterialMapIndex.MATERIAL_MAP_METALNESS; pub const SHADER_LOC_MAP_DIFFUSE = ShaderLocationIndex.SHADER_LOC_MAP_ALBEDO; pub const SHADER_LOC_MAP_SPECULAR = ShaderLocationIndex.SHADER_LOC_MAP_METALNESS; + +pub extern fn InitWindow(width: c_int, height: c_int, title: [*c]const u8) void; +pub extern fn WindowShouldClose() bool; +pub extern fn CloseWindow() void; +pub extern fn IsWindowReady() bool; +pub extern fn IsWindowFullscreen() bool; +pub extern fn IsWindowHidden() bool; +pub extern fn IsWindowMinimized() bool; +pub extern fn IsWindowMaximized() bool; +pub extern fn IsWindowFocused() bool; +pub extern fn IsWindowResized() bool; +pub extern fn IsWindowState(flag: c_uint) bool; +pub extern fn SetWindowState(flags: ConfigFlags) void; +pub extern fn ClearWindowState(flags: ConfigFlags) void; +pub extern fn ToggleFullscreen() void; +pub extern fn MaximizeWindow() void; +pub extern fn MinimizeWindow() void; +pub extern fn RestoreWindow() void; +pub extern fn SetWindowIcon(image: Image) void; +pub extern fn SetWindowTitle(title: [*c]const u8) void; +pub extern fn SetWindowPosition(x: c_int, y: c_int) void; +pub extern fn SetWindowMonitor(monitor: c_int) void; +pub extern fn SetWindowMinSize(width: c_int, height: c_int) void; +pub extern fn SetWindowSize(width: c_int, height: c_int) void; +pub extern fn SetWindowOpacity(opacity: f32) void; +pub extern fn GetWindowHandle() *anyopaque; +pub extern fn GetScreenWidth() c_int; +pub extern fn GetScreenHeight() c_int; +pub extern fn GetRenderWidth() c_int; +pub extern fn GetRenderHeight() c_int; +pub extern fn GetMonitorCount() c_int; +pub extern fn GetCurrentMonitor() c_int; +pub extern fn GetMonitorPosition(monitor: c_int) Vector2; +pub extern fn GetMonitorWidth(monitor: c_int) c_int; +pub extern fn GetMonitorHeight(monitor: c_int) c_int; +pub extern fn GetMonitorPhysicalWidth(monitor: c_int) c_int; +pub extern fn GetMonitorPhysicalHeight(monitor: c_int) c_int; +pub extern fn GetMonitorRefreshRate(monitor: c_int) c_int; +pub extern fn GetWindowPosition() Vector2; +pub extern fn GetWindowScaleDPI() Vector2; +pub extern fn GetMonitorName(monitor: c_int) [*c]const u8; +pub extern fn SetClipboardText(text: [*c]const u8) void; +pub extern fn GetClipboardText() [*c]const u8; +pub extern fn EnableEventWaiting() void; +pub extern fn DisableEventWaiting() void; +pub extern fn SwapScreenBuffer() void; +pub extern fn PollInputEvents() void; +pub extern fn WaitTime(seconds: f64) void; +pub extern fn ShowCursor() void; +pub extern fn HideCursor() void; +pub extern fn IsCursorHidden() bool; +pub extern fn EnableCursor() void; +pub extern fn DisableCursor() void; +pub extern fn IsCursorOnScreen() bool; +pub extern fn ClearBackground(color: Color) void; +pub extern fn BeginDrawing() void; +pub extern fn EndDrawing() void; +pub extern fn BeginMode2D(camera: Camera2D) void; +pub extern fn EndMode2D() void; +pub extern fn BeginMode3D(camera: Camera3D) void; +pub extern fn EndMode3D() void; +pub extern fn BeginTextureMode(target: RenderTexture2D) void; +pub extern fn EndTextureMode() void; +pub extern fn BeginShaderMode(shader: Shader) void; +pub extern fn EndShaderMode() void; +pub extern fn BeginBlendMode(mode: c_int) void; +pub extern fn EndBlendMode() void; +pub extern fn BeginScissorMode(x: c_int, y: c_int, width: c_int, height: c_int) void; +pub extern fn EndScissorMode() void; +pub extern fn BeginVrStereoMode(config: VrStereoConfig) void; +pub extern fn EndVrStereoMode() void; +pub extern fn LoadVrStereoConfig(device: VrDeviceInfo) VrStereoConfig; +pub extern fn UnloadVrStereoConfig(config: VrStereoConfig) void; +pub extern fn LoadShader(vsFileName: [*c]const u8, fsFileName: [*c]const u8) Shader; +pub extern fn LoadShaderFromMemory(vsCode: [*c]const u8, fsCode: [*c]const u8) Shader; +pub extern fn GetShaderLocation(shader: Shader, uniformName: [*c]const u8) c_int; +pub extern fn GetShaderLocationAttrib(shader: Shader, attribName: [*c]const u8) c_int; +pub extern fn SetShaderValue(shader: Shader, locIndex: c_int, value: *const anyopaque, uniformType: c_int) void; +pub extern fn SetShaderValueV(shader: Shader, locIndex: c_int, value: *const anyopaque, uniformType: c_int, count: c_int) void; +pub extern fn SetShaderValueMatrix(shader: Shader, locIndex: c_int, mat: Matrix) void; +pub extern fn SetShaderValueTexture(shader: Shader, locIndex: c_int, texture: Texture2D) void; +pub extern fn UnloadShader(shader: Shader) void; +pub extern fn GetMouseRay(mousePosition: Vector2, camera: Camera) Ray; +pub extern fn GetCameraMatrix(camera: Camera) Matrix; +pub extern fn GetCameraMatrix2D(camera: Camera2D) Matrix; +pub extern fn GetWorldToScreen(position: Vector3, camera: Camera) Vector2; +pub extern fn GetScreenToWorld2D(position: Vector2, camera: Camera2D) Vector2; +pub extern fn GetWorldToScreenEx(position: Vector3, camera: Camera, width: c_int, height: c_int) Vector2; +pub extern fn GetWorldToScreen2D(position: Vector2, camera: Camera2D) Vector2; +pub extern fn SetTargetFPS(fps: c_int) void; +pub extern fn GetFPS() c_int; +pub extern fn GetFrameTime() f32; +pub extern fn GetTime() f64; +pub extern fn GetRandomValue(min: c_int, max: c_int) c_int; +pub extern fn SetRandomSeed(seed: c_uint) void; +pub extern fn TakeScreenshot(fileName: [*c]const u8) void; +pub extern fn SetConfigFlags(flags: ConfigFlags) void; +pub extern fn TraceLog(logLevel: c_int, text: [*c]const u8, ...) void; +pub extern fn SetTraceLogLevel(logLevel: c_int) void; +pub extern fn MemAlloc(size: c_uint) *anyopaque; +pub extern fn MemRealloc(ptr: *anyopaque, size: c_uint) *anyopaque; +pub extern fn MemFree(ptr: *anyopaque) void; +pub extern fn OpenURL(url: [*c]const u8) void; +pub extern fn SetLoadFileDataCallback(callback: LoadFileDataCallback) void; +pub extern fn SetSaveFileDataCallback(callback: SaveFileDataCallback) void; +pub extern fn SetLoadFileTextCallback(callback: LoadFileTextCallback) void; +pub extern fn SetSaveFileTextCallback(callback: SaveFileTextCallback) void; +pub extern fn LoadFileData(fileName: [*c]const u8, bytesRead: [*c]c_uint) [*c]u8; +pub extern fn UnloadFileData(data: [*c]u8) void; +pub extern fn SaveFileData(fileName: [*c]const u8, data: *anyopaque, bytesToWrite: c_uint) bool; +pub extern fn ExportDataAsCode(data: [*c]const u8, size: c_uint, fileName: [*c]const u8) bool; +pub extern fn LoadFileText(fileName: [*c]const u8) [*c]u8; +pub extern fn UnloadFileText(text: [*c]u8) void; +pub extern fn SaveFileText(fileName: [*c]const u8, text: [*c]u8) bool; +pub extern fn FileExists(fileName: [*c]const u8) bool; +pub extern fn DirectoryExists(dirPath: [*c]const u8) bool; +pub extern fn IsFileExtension(fileName: [*c]const u8, ext: [*c]const u8) bool; +pub extern fn GetFileLength(fileName: [*c]const u8) c_int; +pub extern fn GetFileExtension(fileName: [*c]const u8) [*c]const u8; +pub extern fn GetFileName(filePath: [*c]const u8) [*c]const u8; +pub extern fn GetFileNameWithoutExt(filePath: [*c]const u8) [*c]const u8; +pub extern fn GetDirectoryPath(filePath: [*c]const u8) [*c]const u8; +pub extern fn GetPrevDirectoryPath(dirPath: [*c]const u8) [*c]const u8; +pub extern fn GetWorkingDirectory() [*c]const u8; +pub extern fn GetApplicationDirectory() [*c]const u8; +pub extern fn ChangeDirectory(dir: [*c]const u8) bool; +pub extern fn IsPathFile(path: [*c]const u8) bool; +pub extern fn LoadDirectoryFiles(dirPath: [*c]const u8) FilePathList; +pub extern fn LoadDirectoryFilesEx(basePath: [*c]const u8, filter: [*c]const u8, scanSubdirs: bool) FilePathList; +pub extern fn UnloadDirectoryFiles(files: FilePathList) void; +pub extern fn IsFileDropped() bool; +pub extern fn LoadDroppedFiles() FilePathList; +pub extern fn UnloadDroppedFiles(files: FilePathList) void; +pub extern fn GetFileModTime(fileName: [*c]const u8) c_long; +pub extern fn CompressData(data: [*c]const u8, dataSize: c_int, compDataSize: [*c]c_int) [*c]u8; +pub extern fn DecompressData(compData: [*c]const u8, compDataSize: c_int, dataSize: [*c]c_int) [*c]u8; +pub extern fn EncodeDataBase64(data: [*c]const u8, dataSize: c_int, outputSize: [*c]c_int) [*c]u8; +pub extern fn DecodeDataBase64(data: [*c]const u8, outputSize: [*c]c_int) [*c]u8; +pub extern fn IsKeyPressed(key: KeyboardKey) bool; +pub extern fn IsKeyDown(key: KeyboardKey) bool; +pub extern fn IsKeyReleased(key: KeyboardKey) bool; +pub extern fn IsKeyUp(key: KeyboardKey) bool; +pub extern fn SetExitKey(key: KeyboardKey) void; +pub extern fn GetKeyPressed() c_int; +pub extern fn GetCharPressed() c_int; +pub extern fn IsGamepadAvailable(gamepad: c_int) bool; +pub extern fn GetGamepadName(gamepad: c_int) [*c]const u8; +pub extern fn IsGamepadButtonPressed(gamepad: c_int, button: GamepadButton) bool; +pub extern fn IsGamepadButtonDown(gamepad: c_int, button: GamepadButton) bool; +pub extern fn IsGamepadButtonReleased(gamepad: c_int, button: GamepadButton) bool; +pub extern fn IsGamepadButtonUp(gamepad: c_int, button: GamepadButton) bool; +pub extern fn GetGamepadButtonPressed() c_int; +pub extern fn GetGamepadAxisCount(gamepad: c_int) c_int; +pub extern fn GetGamepadAxisMovement(gamepad: c_int, axis: c_int) f32; +pub extern fn SetGamepadMappings(mappings: [*c]const u8) c_int; +pub extern fn IsMouseButtonPressed(button: MouseButton) bool; +pub extern fn IsMouseButtonDown(button: MouseButton) bool; +pub extern fn IsMouseButtonReleased(button: MouseButton) bool; +pub extern fn IsMouseButtonUp(button: MouseButton) bool; +pub extern fn GetMouseX() c_int; +pub extern fn GetMouseY() c_int; +pub extern fn GetMousePosition() Vector2; +pub extern fn GetMouseDelta() Vector2; +pub extern fn SetMousePosition(x: c_int, y: c_int) void; +pub extern fn SetMouseOffset(offsetX: c_int, offsetY: c_int) void; +pub extern fn SetMouseScale(scaleX: f32, scaleY: f32) void; +pub extern fn GetMouseWheelMove() f32; +pub extern fn GetMouseWheelMoveV() Vector2; +pub extern fn SetMouseCursor(cursor: c_int) void; +pub extern fn GetTouchX() c_int; +pub extern fn GetTouchY() c_int; +pub extern fn GetTouchPosition(index: c_int) Vector2; +pub extern fn GetTouchPointId(index: c_int) c_int; +pub extern fn GetTouchPointCount() c_int; +pub extern fn SetGesturesEnabled(flags: c_uint) void; +pub extern fn IsGestureDetected(gesture: Gestures) bool; +pub extern fn GetGestureDetected() c_int; +pub extern fn GetGestureHoldDuration() f32; +pub extern fn GetGestureDragVector() Vector2; +pub extern fn GetGestureDragAngle() f32; +pub extern fn GetGesturePinchVector() Vector2; +pub extern fn GetGesturePinchAngle() f32; +pub extern fn SetCameraMode(camera: Camera, mode: CameraMode) void; +pub extern fn UpdateCamera(camera: [*c]Camera) void; +pub extern fn SetCameraPanControl(keyPan: c_int) void; +pub extern fn SetCameraAltControl(keyAlt: c_int) void; +pub extern fn SetCameraSmoothZoomControl(keySmoothZoom: c_int) void; +pub extern fn SetCameraMoveControls(keyFront: c_int, keyBack: c_int, keyRight: c_int, keyLeft: c_int, keyUp: c_int, keyDown: c_int) void; +pub extern fn SetShapesTexture(texture: Texture2D, source: Rectangle) void; +pub extern fn DrawPixel(posX: c_int, posY: c_int, color: Color) void; +pub extern fn DrawPixelV(position: Vector2, color: Color) void; +pub extern fn DrawLine(startPosX: c_int, startPosY: c_int, endPosX: c_int, endPosY: c_int, color: Color) void; +pub extern fn DrawLineV(startPos: Vector2, endPos: Vector2, color: Color) void; +pub extern fn DrawLineEx(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void; +pub extern fn DrawLineBezier(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void; +pub extern fn DrawLineBezierQuad(startPos: Vector2, endPos: Vector2, controlPos: Vector2, thick: f32, color: Color) void; +pub extern fn DrawLineBezierCubic(startPos: Vector2, endPos: Vector2, startControlPos: Vector2, endControlPos: Vector2, thick: f32, color: Color) void; +pub extern fn DrawLineStrip(points: [*c]Vector2, pointCount: c_int, color: Color) void; +pub extern fn DrawCircle(centerX: c_int, centerY: c_int, radius: f32, color: Color) void; +pub extern fn DrawCircleSector(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; +pub extern fn DrawCircleSectorLines(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; +pub extern fn DrawCircleGradient(centerX: c_int, centerY: c_int, radius: f32, color1: Color, color2: Color) void; +pub extern fn DrawCircleV(center: Vector2, radius: f32, color: Color) void; +pub extern fn DrawCircleLines(centerX: c_int, centerY: c_int, radius: f32, color: Color) void; +pub extern fn DrawEllipse(centerX: c_int, centerY: c_int, radiusH: f32, radiusV: f32, color: Color) void; +pub extern fn DrawEllipseLines(centerX: c_int, centerY: c_int, radiusH: f32, radiusV: f32, color: Color) void; +pub extern fn DrawRing(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; +pub extern fn DrawRingLines(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: c_int, color: Color) void; +pub extern fn DrawRectangle(posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void; +pub extern fn DrawRectangleV(position: Vector2, size: Vector2, color: Color) void; +pub extern fn DrawRectangleRec(rec: Rectangle, color: Color) void; +pub extern fn DrawRectanglePro(rec: Rectangle, origin: Vector2, rotation: f32, color: Color) void; +pub extern fn DrawRectangleGradientV(posX: c_int, posY: c_int, width: c_int, height: c_int, color1: Color, color2: Color) void; +pub extern fn DrawRectangleGradientH(posX: c_int, posY: c_int, width: c_int, height: c_int, color1: Color, color2: Color) void; +pub extern fn DrawRectangleGradientEx(rec: Rectangle, col1: Color, col2: Color, col3: Color, col4: Color) void; +pub extern fn DrawRectangleLines(posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void; +pub extern fn DrawRectangleLinesEx(rec: Rectangle, lineThick: f32, color: Color) void; +pub extern fn DrawRectangleRounded(rec: Rectangle, roundness: f32, segments: c_int, color: Color) void; +pub extern fn DrawRectangleRoundedLines(rec: Rectangle, roundness: f32, segments: c_int, lineThick: f32, color: Color) void; +pub extern fn DrawTriangle(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void; +pub extern fn DrawTriangleLines(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void; +pub extern fn DrawTriangleFan(points: [*c]Vector2, pointCount: c_int, color: Color) void; +pub extern fn DrawTriangleStrip(points: [*c]Vector2, pointCount: c_int, color: Color) void; +pub extern fn DrawPoly(center: Vector2, sides: c_int, radius: f32, rotation: f32, color: Color) void; +pub extern fn DrawPolyLines(center: Vector2, sides: c_int, radius: f32, rotation: f32, color: Color) void; +pub extern fn DrawPolyLinesEx(center: Vector2, sides: c_int, radius: f32, rotation: f32, lineThick: f32, color: Color) void; +pub extern fn CheckCollisionRecs(rec1: Rectangle, rec2: Rectangle) bool; +pub extern fn CheckCollisionCircles(center1: Vector2, radius1: f32, center2: Vector2, radius2: f32) bool; +pub extern fn CheckCollisionCircleRec(center: Vector2, radius: f32, rec: Rectangle) bool; +pub extern fn CheckCollisionPointRec(point: Vector2, rec: Rectangle) bool; +pub extern fn CheckCollisionPointCircle(point: Vector2, center: Vector2, radius: f32) bool; +pub extern fn CheckCollisionPointTriangle(point: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) bool; +pub extern fn CheckCollisionPointPoly(point: Vector2, points: [*c]Vector2, pointCount: c_int) bool; +pub extern fn CheckCollisionLines(startPos1: Vector2, endPos1: Vector2, startPos2: Vector2, endPos2: Vector2, collisionPoint: [*c]Vector2) bool; +pub extern fn CheckCollisionPointLine(point: Vector2, p1: Vector2, p2: Vector2, threshold: c_int) bool; +pub extern fn GetCollisionRec(rec1: Rectangle, rec2: Rectangle) Rectangle; +pub extern fn LoadImage(fileName: [*c]const u8) Image; +pub extern fn LoadImageRaw(fileName: [*c]const u8, width: c_int, height: c_int, format: c_int, headerSize: c_int) Image; +pub extern fn LoadImageAnim(fileName: [*c]const u8, frames: [*c]c_int) Image; +pub extern fn LoadImageFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int) Image; +pub extern fn LoadImageFromTexture(texture: Texture2D) Image; +pub extern fn LoadImageFromScreen() Image; +pub extern fn UnloadImage(image: Image) void; +pub extern fn ExportImage(image: Image, fileName: [*c]const u8) bool; +pub extern fn ExportImageAsCode(image: Image, fileName: [*c]const u8) bool; +pub extern fn GenImageColor(width: c_int, height: c_int, color: Color) Image; +pub extern fn GenImageGradientV(width: c_int, height: c_int, top: Color, bottom: Color) Image; +pub extern fn GenImageGradientH(width: c_int, height: c_int, left: Color, right: Color) Image; +pub extern fn GenImageGradientRadial(width: c_int, height: c_int, density: f32, inner: Color, outer: Color) Image; +pub extern fn GenImageChecked(width: c_int, height: c_int, checksX: c_int, checksY: c_int, col1: Color, col2: Color) Image; +pub extern fn GenImageWhiteNoise(width: c_int, height: c_int, factor: f32) Image; +pub extern fn GenImagePerlinNoise(width: c_int, height: c_int, offsetX: c_int, offsetY: c_int, scale: f32) Image; +pub extern fn GenImageCellular(width: c_int, height: c_int, tileSize: c_int) Image; +pub extern fn GenImageText(width: c_int, height: c_int, text: [*c]const u8) Image; +pub extern fn ImageCopy(image: Image) Image; +pub extern fn ImageFromImage(image: Image, rec: Rectangle) Image; +pub extern fn ImageText(text: [*c]const u8, fontSize: c_int, color: Color) Image; +pub extern fn ImageTextEx(font: Font, text: [*c]const u8, fontSize: f32, spacing: f32, tint: Color) Image; +pub extern fn ImageFormat(image: [*c]Image, newFormat: c_int) void; +pub extern fn ImageToPOT(image: [*c]Image, fill: Color) void; +pub extern fn ImageCrop(image: [*c]Image, crop: Rectangle) void; +pub extern fn ImageAlphaCrop(image: [*c]Image, threshold: f32) void; +pub extern fn ImageAlphaClear(image: [*c]Image, color: Color, threshold: f32) void; +pub extern fn ImageAlphaMask(image: [*c]Image, alphaMask: Image) void; +pub extern fn ImageAlphaPremultiply(image: [*c]Image) void; +pub extern fn ImageBlurGaussian(image: [*c]Image, blurSize: c_int) void; +pub extern fn ImageResize(image: [*c]Image, newWidth: c_int, newHeight: c_int) void; +pub extern fn ImageResizeNN(image: [*c]Image, newWidth: c_int, newHeight: c_int) void; +pub extern fn ImageResizeCanvas(image: [*c]Image, newWidth: c_int, newHeight: c_int, offsetX: c_int, offsetY: c_int, fill: Color) void; +pub extern fn ImageMipmaps(image: [*c]Image) void; +pub extern fn ImageDither(image: [*c]Image, rBpp: c_int, gBpp: c_int, bBpp: c_int, aBpp: c_int) void; +pub extern fn ImageFlipVertical(image: [*c]Image) void; +pub extern fn ImageFlipHorizontal(image: [*c]Image) void; +pub extern fn ImageRotateCW(image: [*c]Image) void; +pub extern fn ImageRotateCCW(image: [*c]Image) void; +pub extern fn ImageColorTint(image: [*c]Image, color: Color) void; +pub extern fn ImageColorInvert(image: [*c]Image) void; +pub extern fn ImageColorGrayscale(image: [*c]Image) void; +pub extern fn ImageColorContrast(image: [*c]Image, contrast: f32) void; +pub extern fn ImageColorBrightness(image: [*c]Image, brightness: c_int) void; +pub extern fn ImageColorReplace(image: [*c]Image, color: Color, replace: Color) void; +pub extern fn LoadImageColors(image: Image) [*c]Color; +pub extern fn LoadImagePalette(image: Image, maxPaletteSize: c_int, colorCount: [*c]c_int) [*c]Color; +pub extern fn UnloadImageColors(colors: [*c]Color) void; +pub extern fn UnloadImagePalette(colors: [*c]Color) void; +pub extern fn GetImageAlphaBorder(image: Image, threshold: f32) Rectangle; +pub extern fn GetImageColor(image: Image, x: c_int, y: c_int) Color; +pub extern fn ImageClearBackground(dst: [*c]Image, color: Color) void; +pub extern fn ImageDrawPixel(dst: [*c]Image, posX: c_int, posY: c_int, color: Color) void; +pub extern fn ImageDrawPixelV(dst: [*c]Image, position: Vector2, color: Color) void; +pub extern fn ImageDrawLine(dst: [*c]Image, startPosX: c_int, startPosY: c_int, endPosX: c_int, endPosY: c_int, color: Color) void; +pub extern fn ImageDrawLineV(dst: [*c]Image, start: Vector2, end: Vector2, color: Color) void; +pub extern fn ImageDrawCircle(dst: [*c]Image, centerX: c_int, centerY: c_int, radius: c_int, color: Color) void; +pub extern fn ImageDrawCircleV(dst: [*c]Image, center: Vector2, radius: c_int, color: Color) void; +pub extern fn ImageDrawCircleLines(dst: [*c]Image, centerX: c_int, centerY: c_int, radius: c_int, color: Color) void; +pub extern fn ImageDrawCircleLinesV(dst: [*c]Image, center: Vector2, radius: c_int, color: Color) void; +pub extern fn ImageDrawRectangle(dst: [*c]Image, posX: c_int, posY: c_int, width: c_int, height: c_int, color: Color) void; +pub extern fn ImageDrawRectangleV(dst: [*c]Image, position: Vector2, size: Vector2, color: Color) void; +pub extern fn ImageDrawRectangleRec(dst: [*c]Image, rec: Rectangle, color: Color) void; +pub extern fn ImageDrawRectangleLines(dst: [*c]Image, rec: Rectangle, thick: c_int, color: Color) void; +pub extern fn ImageDraw(dst: [*c]Image, src: Image, srcRec: Rectangle, dstRec: Rectangle, tint: Color) void; +pub extern fn ImageDrawText(dst: [*c]Image, text: [*c]const u8, posX: c_int, posY: c_int, fontSize: c_int, color: Color) void; +pub extern fn ImageDrawTextEx(dst: [*c]Image, font: Font, text: [*c]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void; +pub extern fn LoadTexture(fileName: [*c]const u8) Texture2D; +pub extern fn LoadTextureFromImage(image: Image) Texture2D; +pub extern fn LoadTextureCubemap(image: Image, layout: c_int) TextureCubemap; +pub extern fn LoadRenderTexture(width: c_int, height: c_int) RenderTexture2D; +pub extern fn UnloadTexture(texture: Texture2D) void; +pub extern fn UnloadRenderTexture(target: RenderTexture2D) void; +pub extern fn UpdateTexture(texture: Texture2D, pixels: *const anyopaque) void; +pub extern fn UpdateTextureRec(texture: Texture2D, rec: Rectangle, pixels: *const anyopaque) void; +pub extern fn GenTextureMipmaps(texture: [*c]Texture2D) void; +pub extern fn SetTextureFilter(texture: Texture2D, filter: c_int) void; +pub extern fn SetTextureWrap(texture: Texture2D, wrap: c_int) void; +pub extern fn DrawTexture(texture: Texture2D, posX: c_int, posY: c_int, tint: Color) void; +pub extern fn DrawTextureV(texture: Texture2D, position: Vector2, tint: Color) void; +pub extern fn DrawTextureEx(texture: Texture2D, position: Vector2, rotation: f32, scale: f32, tint: Color) void; +pub extern fn DrawTextureRec(texture: Texture2D, source: Rectangle, position: Vector2, tint: Color) void; +pub extern fn DrawTexturePro(texture: Texture2D, source: Rectangle, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void; +pub extern fn DrawTextureNPatch(texture: Texture2D, nPatchInfo: NPatchInfo, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void; +pub extern fn Fade(color: Color, alpha: f32) Color; +pub extern fn ColorToInt(color: Color) c_int; +pub extern fn ColorNormalize(color: Color) Vector4; +pub extern fn ColorFromNormalized(normalized: Vector4) Color; +pub extern fn ColorToHSV(color: Color) Vector3; +pub extern fn ColorFromHSV(hue: f32, saturation: f32, value: f32) Color; +pub extern fn ColorTint(color: Color, tint: Color) Color; +pub extern fn ColorBrightness(color: Color, factor: f32) Color; +pub extern fn ColorContrast(color: Color, contrast: f32) Color; +pub extern fn ColorAlpha(color: Color, alpha: f32) Color; +pub extern fn ColorAlphaBlend(dst: Color, src: Color, tint: Color) Color; +pub extern fn GetColor(hexValue: c_uint) Color; +pub extern fn GetPixelColor(srcPtr: *anyopaque, format: c_int) Color; +pub extern fn SetPixelColor(dstPtr: *anyopaque, color: Color, format: c_int) void; +pub extern fn GetPixelDataSize(width: c_int, height: c_int, format: c_int) c_int; +pub extern fn GetFontDefault() Font; +pub extern fn LoadFont(fileName: [*c]const u8) Font; +pub extern fn LoadFontEx(fileName: [*c]const u8, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int) Font; +pub extern fn LoadFontFromImage(image: Image, key: Color, firstChar: c_int) Font; +pub extern fn LoadFontFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int) Font; +pub extern fn LoadFontData(fileData: [*c]const u8, dataSize: c_int, fontSize: c_int, fontChars: [*c]c_int, glyphCount: c_int, type: c_int) [*c]GlyphInfo; +pub extern fn GenImageFontAtlas(chars: [*c]const GlyphInfo, recs: [*c][*c]Rectangle, glyphCount: c_int, fontSize: c_int, padding: c_int, packMethod: c_int) Image; +pub extern fn UnloadFontData(chars: [*c]GlyphInfo, glyphCount: c_int) void; +pub extern fn UnloadFont(font: Font) void; +pub extern fn ExportFontAsCode(font: Font, fileName: [*c]const u8) bool; +pub extern fn DrawFPS(posX: c_int, posY: c_int) void; +pub extern fn DrawText(text: [*c]const u8, posX: c_int, posY: c_int, fontSize: c_int, color: Color) void; +pub extern fn DrawTextEx(font: Font, text: [*c]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void; +pub extern fn DrawTextPro(font: Font, text: [*c]const u8, position: Vector2, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color) void; +pub extern fn DrawTextCodepoint(font: Font, codepoint: c_int, position: Vector2, fontSize: f32, tint: Color) void; +pub extern fn DrawTextCodepoints(font: Font, codepoints: [*c]const c_int, count: c_int, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void; +pub extern fn MeasureText(text: [*c]const u8, fontSize: c_int) c_int; +pub extern fn MeasureTextEx(font: Font, text: [*c]const u8, fontSize: f32, spacing: f32) Vector2; +pub extern fn GetGlyphIndex(font: Font, codepoint: c_int) c_int; +pub extern fn GetGlyphInfo(font: Font, codepoint: c_int) GlyphInfo; +pub extern fn GetGlyphAtlasRec(font: Font, codepoint: c_int) Rectangle; +pub extern fn LoadUTF8(codepoints: [*c]const c_int, length: c_int) [*c]u8; +pub extern fn UnloadUTF8(text: [*c]u8) void; +pub extern fn LoadCodepoints(text: [*c]const u8, count: [*c]c_int) [*c]c_int; +pub extern fn UnloadCodepoints(codepoints: [*c]c_int) void; +pub extern fn GetCodepointCount(text: [*c]const u8) c_int; +pub extern fn GetCodepoint(text: [*c]const u8, codepointSize: [*c]c_int) c_int; +pub extern fn GetCodepointNext(text: [*c]const u8, codepointSize: [*c]c_int) c_int; +pub extern fn GetCodepointPrevious(text: [*c]const u8, codepointSize: [*c]c_int) c_int; +pub extern fn CodepointToUTF8(codepoint: c_int, utf8Size: [*c]c_int) [*c]const u8; +pub extern fn TextCopy(dst: [*c]u8, src: [*c]const u8) c_int; +pub extern fn TextIsEqual(text1: [*c]const u8, text2: [*c]const u8) bool; +pub extern fn TextLength(text: [*c]const u8) c_uint; +pub extern fn TextFormat(text: [*c]const u8, ...) [*c]const u8; +pub extern fn TextSubtext(text: [*c]const u8, position: c_int, length: c_int) [*c]const u8; +pub extern fn TextReplace(text: [*c]u8, replace: [*c]const u8, by: [*c]const u8) [*c]u8; +pub extern fn TextInsert(text: [*c]const u8, insert: [*c]const u8, position: c_int) [*c]u8; +pub extern fn TextJoin(textList: [*c][*c]const u8, count: c_int, delimiter: [*c]const u8) [*c]const u8; +pub extern fn TextSplit(text: [*c]const u8, delimiter: u8, count: [*c]c_int) [*c][*c]const u8; +pub extern fn TextAppend(text: [*c]u8, append: [*c]const u8, position: [*c]c_int) void; +pub extern fn TextFindIndex(text: [*c]const u8, find: [*c]const u8) c_int; +pub extern fn TextToUpper(text: [*c]const u8) [*c]const u8; +pub extern fn TextToLower(text: [*c]const u8) [*c]const u8; +pub extern fn TextToPascal(text: [*c]const u8) [*c]const u8; +pub extern fn TextToInteger(text: [*c]const u8) c_int; +pub extern fn DrawLine3D(startPos: Vector3, endPos: Vector3, color: Color) void; +pub extern fn DrawPoint3D(position: Vector3, color: Color) void; +pub extern fn DrawCircle3D(center: Vector3, radius: f32, rotationAxis: Vector3, rotationAngle: f32, color: Color) void; +pub extern fn DrawTriangle3D(v1: Vector3, v2: Vector3, v3: Vector3, color: Color) void; +pub extern fn DrawTriangleStrip3D(points: [*c]Vector3, pointCount: c_int, color: Color) void; +pub extern fn DrawCube(position: Vector3, width: f32, height: f32, length: f32, color: Color) void; +pub extern fn DrawCubeV(position: Vector3, size: Vector3, color: Color) void; +pub extern fn DrawCubeWires(position: Vector3, width: f32, height: f32, length: f32, color: Color) void; +pub extern fn DrawCubeWiresV(position: Vector3, size: Vector3, color: Color) void; +pub extern fn DrawSphere(centerPos: Vector3, radius: f32, color: Color) void; +pub extern fn DrawSphereEx(centerPos: Vector3, radius: f32, rings: c_int, slices: c_int, color: Color) void; +pub extern fn DrawSphereWires(centerPos: Vector3, radius: f32, rings: c_int, slices: c_int, color: Color) void; +pub extern fn DrawCylinder(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: c_int, color: Color) void; +pub extern fn DrawCylinderEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: c_int, color: Color) void; +pub extern fn DrawCylinderWires(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: c_int, color: Color) void; +pub extern fn DrawCylinderWiresEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: c_int, color: Color) void; +pub extern fn DrawCapsule(startPos: Vector3, endPos: Vector3, radius: f32, slices: c_int, rings: c_int, color: Color) void; +pub extern fn DrawCapsuleWires(startPos: Vector3, endPos: Vector3, radius: f32, slices: c_int, rings: c_int, color: Color) void; +pub extern fn DrawPlane(centerPos: Vector3, size: Vector2, color: Color) void; +pub extern fn DrawRay(ray: Ray, color: Color) void; +pub extern fn DrawGrid(slices: c_int, spacing: f32) void; +pub extern fn LoadModel(fileName: [*c]const u8) Model; +pub extern fn LoadModelFromMesh(mesh: Mesh) Model; +pub extern fn UnloadModel(model: Model) void; +pub extern fn UnloadModelKeepMeshes(model: Model) void; +pub extern fn GetModelBoundingBox(model: Model) BoundingBox; +pub extern fn DrawModel(model: Model, position: Vector3, scale: f32, tint: Color) void; +pub extern fn DrawModelEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void; +pub extern fn DrawModelWires(model: Model, position: Vector3, scale: f32, tint: Color) void; +pub extern fn DrawModelWiresEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void; +pub extern fn DrawBoundingBox(box: BoundingBox, color: Color) void; +pub extern fn DrawBillboard(camera: Camera, texture: Texture2D, position: Vector3, size: f32, tint: Color) void; +pub extern fn DrawBillboardRec(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, size: Vector2, tint: Color) void; +pub extern fn DrawBillboardPro(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, up: Vector3, size: Vector2, origin: Vector2, rotation: f32, tint: Color) void; +pub extern fn UploadMesh(mesh: [*c]Mesh, dynamic: bool) void; +pub extern fn UpdateMeshBuffer(mesh: Mesh, index: c_int, data: *const anyopaque, dataSize: c_int, offset: c_int) void; +pub extern fn UnloadMesh(mesh: Mesh) void; +pub extern fn DrawMesh(mesh: Mesh, material: Material, transform: Matrix) void; +pub extern fn DrawMeshInstanced(mesh: Mesh, material: Material, transforms: [*c]const Matrix, instances: c_int) void; +pub extern fn ExportMesh(mesh: Mesh, fileName: [*c]const u8) bool; +pub extern fn GetMeshBoundingBox(mesh: Mesh) BoundingBox; +pub extern fn GenMeshTangents(mesh: [*c]Mesh) void; +pub extern fn GenMeshPoly(sides: c_int, radius: f32) Mesh; +pub extern fn GenMeshPlane(width: f32, length: f32, resX: c_int, resZ: c_int) Mesh; +pub extern fn GenMeshCube(width: f32, height: f32, length: f32) Mesh; +pub extern fn GenMeshSphere(radius: f32, rings: c_int, slices: c_int) Mesh; +pub extern fn GenMeshHemiSphere(radius: f32, rings: c_int, slices: c_int) Mesh; +pub extern fn GenMeshCylinder(radius: f32, height: f32, slices: c_int) Mesh; +pub extern fn GenMeshCone(radius: f32, height: f32, slices: c_int) Mesh; +pub extern fn GenMeshTorus(radius: f32, size: f32, radSeg: c_int, sides: c_int) Mesh; +pub extern fn GenMeshKnot(radius: f32, size: f32, radSeg: c_int, sides: c_int) Mesh; +pub extern fn GenMeshHeightmap(heightmap: Image, size: Vector3) Mesh; +pub extern fn GenMeshCubicmap(cubicmap: Image, cubeSize: Vector3) Mesh; +pub extern fn LoadMaterials(fileName: [*c]const u8, materialCount: [*c]c_int) [*c]Material; +pub extern fn LoadMaterialDefault() Material; +pub extern fn UnloadMaterial(material: Material) void; +pub extern fn SetMaterialTexture(material: [*c]Material, mapType: c_int, texture: Texture2D) void; +pub extern fn SetModelMeshMaterial(model: [*c]Model, meshId: c_int, materialId: c_int) void; +pub extern fn LoadModelAnimations(fileName: [*c]const u8, animCount: [*c]c_uint) [*c]ModelAnimation; +pub extern fn UpdateModelAnimation(model: Model, anim: ModelAnimation, frame: c_int) void; +pub extern fn UnloadModelAnimation(anim: ModelAnimation) void; +pub extern fn UnloadModelAnimations(animations: [*c]ModelAnimation, count: c_uint) void; +pub extern fn IsModelAnimationValid(model: Model, anim: ModelAnimation) bool; +pub extern fn CheckCollisionSpheres(center1: Vector3, radius1: f32, center2: Vector3, radius2: f32) bool; +pub extern fn CheckCollisionBoxes(box1: BoundingBox, box2: BoundingBox) bool; +pub extern fn CheckCollisionBoxSphere(box: BoundingBox, center: Vector3, radius: f32) bool; +pub extern fn GetRayCollisionSphere(ray: Ray, center: Vector3, radius: f32) RayCollision; +pub extern fn GetRayCollisionBox(ray: Ray, box: BoundingBox) RayCollision; +pub extern fn GetRayCollisionMesh(ray: Ray, mesh: Mesh, transform: Matrix) RayCollision; +pub extern fn GetRayCollisionTriangle(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3) RayCollision; +pub extern fn GetRayCollisionQuad(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3) RayCollision; +pub extern fn InitAudioDevice() void; +pub extern fn CloseAudioDevice() void; +pub extern fn IsAudioDeviceReady() bool; +pub extern fn SetMasterVolume(volume: f32) void; +pub extern fn LoadWave(fileName: [*c]const u8) Wave; +pub extern fn LoadWaveFromMemory(fileType: [*c]const u8, fileData: [*c]const u8, dataSize: c_int) Wave; +pub extern fn LoadSound(fileName: [*c]const u8) Sound; +pub extern fn LoadSoundFromWave(wave: Wave) Sound; +pub extern fn UpdateSound(sound: Sound, data: *const anyopaque, sampleCount: c_int) void; +pub extern fn UnloadWave(wave: Wave) void; +pub extern fn UnloadSound(sound: Sound) void; +pub extern fn ExportWave(wave: Wave, fileName: [*c]const u8) bool; +pub extern fn ExportWaveAsCode(wave: Wave, fileName: [*c]const u8) bool; +pub extern fn PlaySound(sound: Sound) void; +pub extern fn StopSound(sound: Sound) void; +pub extern fn PauseSound(sound: Sound) void; +pub extern fn ResumeSound(sound: Sound) void; +pub extern fn PlaySoundMulti(sound: Sound) void; +pub extern fn StopSoundMulti() void; +pub extern fn GetSoundsPlaying() c_int; +pub extern fn IsSoundPlaying(sound: Sound) bool; +pub extern fn SetSoundVolume(sound: Sound, volume: f32) void; +pub extern fn SetSoundPitch(sound: Sound, pitch: f32) void; +pub extern fn SetSoundPan(sound: Sound, pan: f32) void; +pub extern fn WaveCopy(wave: Wave) Wave; +pub extern fn WaveCrop(wave: [*c]Wave, initSample: c_int, finalSample: c_int) void; +pub extern fn WaveFormat(wave: [*c]Wave, sampleRate: c_int, sampleSize: c_int, channels: c_int) void; +pub extern fn LoadWaveSamples(wave: Wave) [*c]f32; +pub extern fn UnloadWaveSamples(samples: [*c]f32) void; +pub extern fn LoadMusicStream(fileName: [*c]const u8) Music; +pub extern fn LoadMusicStreamFromMemory(fileType: [*c]const u8, data: [*c]const u8, dataSize: c_int) Music; +pub extern fn UnloadMusicStream(music: Music) void; +pub extern fn PlayMusicStream(music: Music) void; +pub extern fn IsMusicStreamPlaying(music: Music) bool; +pub extern fn UpdateMusicStream(music: Music) void; +pub extern fn StopMusicStream(music: Music) void; +pub extern fn PauseMusicStream(music: Music) void; +pub extern fn ResumeMusicStream(music: Music) void; +pub extern fn SeekMusicStream(music: Music, position: f32) void; +pub extern fn SetMusicVolume(music: Music, volume: f32) void; +pub extern fn SetMusicPitch(music: Music, pitch: f32) void; +pub extern fn SetMusicPan(music: Music, pan: f32) void; +pub extern fn GetMusicTimeLength(music: Music) f32; +pub extern fn GetMusicTimePlayed(music: Music) f32; +pub extern fn LoadAudioStream(sampleRate: c_uint, sampleSize: c_uint, channels: c_uint) AudioStream; +pub extern fn UnloadAudioStream(stream: AudioStream) void; +pub extern fn UpdateAudioStream(stream: AudioStream, data: *const anyopaque, frameCount: c_int) void; +pub extern fn IsAudioStreamProcessed(stream: AudioStream) bool; +pub extern fn PlayAudioStream(stream: AudioStream) void; +pub extern fn PauseAudioStream(stream: AudioStream) void; +pub extern fn ResumeAudioStream(stream: AudioStream) void; +pub extern fn IsAudioStreamPlaying(stream: AudioStream) bool; +pub extern fn StopAudioStream(stream: AudioStream) void; +pub extern fn SetAudioStreamVolume(stream: AudioStream, volume: f32) void; +pub extern fn SetAudioStreamPitch(stream: AudioStream, pitch: f32) void; +pub extern fn SetAudioStreamPan(stream: AudioStream, pan: f32) void; +pub extern fn SetAudioStreamBufferSizeDefault(size: c_int) void; +pub extern fn SetAudioStreamCallback(stream: AudioStream, callback: AudioCallback) void; +pub extern fn AttachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void; +pub extern fn DetachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void; + +