raylib-zig/lib/raylib-zig.zig
2024-01-01 16:18:21 +00:00

3500 lines
107 KiB
Zig

// raylib-zig (c) Nikolas Wipper 2023
const rl = @This();
const rlm = @import("raylib-zig-math.zig");
const std = @import("std");
pub const RaylibError = error{GenericError};
pub const Vector2 = extern struct {
x: f32,
y: f32,
pub fn init(x: f32, y: f32) Vector2 {
return Vector2{ .x = x, .y = y };
}
};
pub const Vector3 = extern struct {
x: f32,
y: f32,
z: f32,
pub fn init(x: f32, y: f32, z: f32) Vector3 {
return Vector3{ .x = x, .y = y, .z = z };
}
pub const add = rlm.vector2Add;
pub const sub = rlm.vector2Subtract;
};
pub const Vector4 = extern struct {
x: f32,
y: f32,
z: f32,
w: f32,
pub fn init(x: f32, y: f32, z: f32, w: f32) Vector4 {
return Vector4{ .x = x, .y = y, .z = z, .w = w };
}
};
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 light_gray = Color.init(200, 200, 200, 255);
pub const gray = Color.init(130, 130, 130, 255);
pub const dark_gray = Color.init(80, 80, 80, 255);
pub const yellow = Color.init(253, 249, 0, 255);
pub const gold = Color.init(255, 203, 0, 255);
pub const orange = Color.init(255, 161, 0, 255);
pub const pink = Color.init(255, 109, 194, 255);
pub const red = Color.init(230, 41, 55, 255);
pub const maroon = Color.init(190, 33, 55, 255);
pub const green = Color.init(0, 228, 48, 255);
pub const lime = Color.init(0, 158, 47, 255);
pub const dark_green = Color.init(0, 117, 44, 255);
pub const sky_blue = Color.init(102, 191, 255, 255);
pub const blue = Color.init(0, 121, 241, 255);
pub const dark_blue = Color.init(0, 82, 172, 255);
pub const purple = Color.init(200, 122, 255, 255);
pub const violet = Color.init(135, 60, 190, 255);
pub const dark_purple = Color.init(112, 31, 126, 255);
pub const beige = Color.init(211, 176, 131, 255);
pub const brown = Color.init(127, 106, 79, 255);
pub const dark_brown = Color.init(76, 63, 47, 255);
pub const white = Color.init(255, 255, 255, 255);
pub const black = Color.init(0, 0, 0, 255);
pub const blank = Color.init(0, 0, 0, 0);
pub const magenta = Color.init(255, 0, 255, 255);
pub const ray_white = Color.init(245, 245, 245, 255);
pub fn init(r: u8, g: u8, b: u8, a: u8) Color {
return Color{ .r = r, .g = g, .b = b, .a = a };
}
pub fn fromNormalized(normalized: Vector4) Color {
return rl.colorFromNormalized(normalized);
}
pub fn fromHSV(hue: f32, saturation: f32, value: f32) Color {
return rl.colorFromHSV(hue, saturation, value);
}
pub fn fromInt(hexValue: u32) Color {
return rl.getColor(hexValue);
}
pub fn fade(self: Color, a: f32) Color {
return rl.fade(self, a);
}
pub fn tint(self: Color, t: Color) Color {
return rl.colorTint(self, t);
}
pub fn normalize(self: Color) Vector4 {
return rl.colorNormalize(self);
}
pub fn brightness(self: Color, factor: f32) Color {
return rl.colorBrightness(self, factor);
}
pub fn constrast(self: Color, c: f32) Color {
return rl.colorConstrast(self, c);
}
pub fn alpha(self: Color, a: f32) Color {
return rl.colorAlpha(self, a);
}
pub fn toInt(self: Color) Color {
return rl.colorToInt(self);
}
pub fn toHSV(self: Color) Vector3 {
return rl.colorToHSV(self);
}
};
pub const Rectangle = extern struct {
x: f32,
y: f32,
width: f32,
height: f32,
pub fn init(x: f32, y: f32, width: f32, height: f32) Rectangle {
return Rectangle{ .x = x, .y = y, .width = width, .height = height };
}
pub fn checkCollision(self: Rectangle, rec2: Rectangle) bool {
return rl.CheckCollisionRecs(self, rec2);
}
pub fn getCollision(self: Rectangle, rec2: Rectangle) Rectangle {
return rl.GetCollisionRec(self, rec2);
}
};
pub const Image = extern struct {
data: *anyopaque,
width: c_int,
height: c_int,
mipmaps: c_int,
format: PixelFormat,
pub fn init(fileName: [:0]const u8) Image {
return rl.loadImage(fileName);
}
pub fn initRaw(fileName: [:0]const u8, width: i32, height: i32, format: PixelFormat, headerSize: i32) Image {
return rl.loadImageRaw(fileName, width, height, format, headerSize);
}
pub fn initAnim(fileName: [:0]const u8, frames: *i32) Image {
return rl.loadImageAnim(fileName, frames);
}
pub fn fromTexture(texture: Texture) Image {
return rl.loadImageFromTexture(texture);
}
pub fn fromScreen() Image {
return rl.loadImageFromScreen();
}
pub fn unload(self: Image) void {
rl.unloadImage(self);
}
pub fn initText(text: [:0]const u8, fontSize: i32, color: Color) Image {
return rl.imageText(text, fontSize, color);
}
pub fn initTextEx(font: Font, text: [:0]const u8, fontSize: f32, spacing: f32, t: Color) Image {
return rl.imageTextEx(font, text, fontSize, spacing, t);
}
pub fn genColor(width: i32, height: i32, color: Color) Image {
return rl.genImageColor(width, height, color);
}
pub fn genGradientLinear(width: i32, height: i32, direction: i32, start: Color, end: Color) Image {
return rl.genImageGradientLinear(width, height, direction, start, end);
}
pub fn genGradientRadial(width: i32, height: i32, density: f32, inner: Color, outer: Color) Image {
return rl.genImageGradientRadial(width, height, density, inner, outer);
}
pub fn genGradientSquare(width: i32, height: i32, density: f32, inner: Color, outer: Color) Image {
return rl.genImageGradientSquare(width, height, density, inner, outer);
}
pub fn genChecked(width: i32, height: i32, checksX: i32, checksY: i32, col1: Color, col2: Color) Image {
return rl.genImageChecked(width, height, checksX, checksY, col1, col2);
}
pub fn genWhiteNoise(width: i32, height: i32, factor: f32) Image {
return rl.genImageWhiteNoise(width, height, factor);
}
pub fn genPerlinNoise(width: i32, height: i32, offsetX: i32, offsetY: i32, scale: f32) Image {
_ = scale;
return rl.genImagePerlinNoise(width, height, offsetX, offsetY);
}
pub fn genCellular(width: i32, height: i32, tileSize: i32) Image {
return rl.genImageCellular(width, height, tileSize);
}
pub fn genText(width: i32, height: i32, text: [:0]const u8) Image {
return rl.genImageText(width, height, text);
}
pub fn copy(self: Image) Image {
return rl.imageCopy(self);
}
pub fn copyRec(self: Image, rec: Rectangle) Image {
return rl.imageFromImage(self, rec);
}
// @todo: use PixelFormat enum for newFormat
pub fn setFormat(self: *Image, newFormat: i32) Image {
rl.imageFormat(self, newFormat);
}
pub fn toPOT(self: *Image, fill: Color) void {
rl.imageToPOT(self, fill);
}
pub fn crop(self: *Image, c: Rectangle) void {
rl.imageCrop(self, c);
}
pub fn alphaCrop(self: *Image, threshold: f32) void {
rl.imageAlphaCrop(self, threshold);
}
pub fn alphaClear(self: *Image, color: Color, threshold: f32) void {
rl.imageAlphaClear(self, color, threshold);
}
pub fn alphaMask(self: *Image, am: Image) void {
rl.imageAlphaMask(self, am);
}
pub fn alphaPremultiply(self: *Image) void {
rl.imageAlphaPremultiply(self);
}
pub fn blurGaussian(self: *Image, blurSize: i32) void {
rl.imageBlurGaussian(self, blurSize);
}
pub fn resize(self: *Image, newWidth: i32, newHeight: i32) void {
rl.imageResize(self, newWidth, newHeight);
}
pub fn resizeNN(self: *Image, newWidth: i32, newHeight: i32) void {
rl.imageResizeNN(self, newWidth, newHeight);
}
pub fn resizeCanvas(self: *Image, newWidth: i32, newHeight: i32, offsetX: i32, offsetY: i32, fill: Color) void {
rl.imageResizeCanvas(self, newWidth, newHeight, offsetX, offsetY, fill);
}
pub fn mimaps(self: *Image) void {
rl.imageMipmaps(self);
}
pub fn dither(self: *Image, rBpp: i32, gBpp: i32, bBpp: i32, aBpp: i32) void {
rl.imageDither(self, rBpp, gBpp, bBpp, aBpp);
}
pub fn flipVertical(self: *Image) void {
rl.imageFlipVertical(self);
}
pub fn flipHorizontal(self: *Image) void {
rl.imageFlipHorizontal(self);
}
pub fn rotate(self: *Image, degrees: f32) void {
rl.imageRotate(self, degrees);
}
pub fn rotateCW(self: *Image) void {
rl.imageRotateCW(self);
}
pub fn rotateCCW(self: *Image) void {
rl.imageRotateCCW(self);
}
pub fn tint(self: *Image, color: Color) void {
rl.imageColorTint(self, color);
}
pub fn invert(self: *Image) void {
rl.imageColorInvert(self);
}
pub fn grayscale(self: *Image) void {
rl.imageColorGrayscale(self);
}
pub fn contrast(self: *Image, c: f32) void {
rl.imageColorContrast(self, c);
}
pub fn brightness(self: *Image, b: i32) void {
rl.imageColorBrightness(self, @as(c_int, b));
}
pub fn replaceColor(self: *Image, color: Color, replace: Color) void {
rl.imageColorReplace(self, color, replace);
}
pub fn getAlphaBorder(self: Image, threshold: f32) Rectangle {
return rl.getImageAlphaBorder(self, threshold);
}
pub fn getColor(self: Image, x: i32, y: i32) Color {
return rl.getImageColor(self, x, y);
}
pub fn clearBackground(self: *Image, color: Color) void {
rl.imageClearBackground(self, color);
}
pub fn drawPixel(self: *Image, posX: i32, posY: i32, color: Color) void {
rl.imageDrawPixel(self, posX, posY, color);
}
pub fn drawPixelV(self: *Image, position: Vector2, color: Color) void {
rl.imageDrawPixelV(self, position, color);
}
pub fn drawLine(self: *Image, startPosX: i32, startPosY: i32, endPosX: i32, endPosY: i32, color: Color) void {
rl.imageDrawLine(self, startPosX, startPosY, endPosX, endPosY, color);
}
pub fn drawLineV(self: *Image, start: Vector2, end: Vector2, color: Color) void {
rl.imageDrawLineV(self, start, end, color);
}
pub fn drawCircle(self: *Image, centerX: i32, centerY: i32, radius: i32, color: Color) void {
rl.imageDrawCircle(self, centerX, centerY, radius, color);
}
pub fn drawCircleV(self: *Image, center: Vector2, radius: i32, color: Color) void {
rl.imageDrawCircleV(self, center, radius, color);
}
pub fn drawCircleLines(self: *Image, centerX: i32, centerY: i32, radius: i32, color: Color) void {
rl.imageDrawCircleLines(self, centerX, centerY, radius, color);
}
pub fn drawCircleLinesV(self: *Image, center: Vector2, radius: i32, color: Color) void {
rl.imageDrawCircleLinesV(self, center, radius, color);
}
pub fn drawRectangle(self: *Image, posX: i32, posY: i32, width: i32, height: i32, color: Color) void {
rl.imageDrawRectangle(self, posX, posY, width, height, color);
}
pub fn drawRectangleV(self: *Image, position: Vector2, size: Vector2, color: Color) void {
rl.imageDrawRectangleV(self, position, size, color);
}
pub fn drawRectangleRec(self: *Image, rec: Rectangle, color: Color) void {
rl.imageDrawRectangleRec(self, rec, color);
}
pub fn drawRectangleLines(self: *Image, rec: Rectangle, thick: i32, color: Color) void {
rl.imageDrawRectangleLines(self, rec, thick, color);
}
pub fn drawImage(self: *Image, src: Image, srcRec: Rectangle, dstRec: Rectangle, t: Color) void {
rl.imageDraw(self, src, srcRec, dstRec, t);
}
pub fn drawText(self: *Image, text: [:0]const u8, posX: i32, posY: i32, fontSize: i32, color: Color) void {
rl.imageDrawText(self, text, posX, posY, fontSize, color);
}
pub fn drawTextEx(self: *Image, font: Font, text: [:0]const u8, position: Vector2, fontSize: f32, spacing: f32, t: Color) void {
rl.imageDrawTextEx(self, font, text, position, fontSize, spacing, t);
}
pub fn exportToFile(self: Image, fileName: [:0]const u8) bool {
return rl.exportImage(self, fileName);
}
pub fn exportAsCode(self: Image, fileName: [:0]const u8) bool {
return rl.exportImageAsCode(self, fileName);
}
pub fn useAsWindowIcon(self: Image) void {
rl.setWindowIcon(self);
}
pub fn toTexture(self: Image) Texture {
return Texture.fromImage(self);
}
// @todo: use CubemapLayout enum for layout
pub fn asCubemap(self: Image, layout: i32) Texture {
return Texture.fromCubemap(self, layout);
}
};
pub const Texture = extern struct {
id: c_uint,
width: c_int,
height: c_int,
mipmaps: c_int,
format: PixelFormat,
pub fn init(fileName: [:0]const u8) Texture {
return rl.loadTexture(fileName);
}
pub fn fromImage(image: Image) Texture {
return rl.loadTextureFromImage(image);
}
pub fn fromCubemap(image: Image, layout: i32) Texture {
return rl.loadTextureCubemap(image, layout);
}
pub fn unload(self: Texture) void {
rl.unloadTexture(self);
}
pub fn draw(self: Texture, posX: i32, posY: i32, tint: Color) void {
rl.drawTexture(self, posX, posY, tint);
}
pub fn drawV(self: Texture, position: Vector2, tint: Color) void {
rl.drawTextureV(self, position, tint);
}
pub fn drawEx(self: Texture, position: Vector2, rotation: f32, scale: f32, tint: Color) void {
rl.drawTextureEx(self, position, rotation, scale, tint);
}
pub fn drawRec(self: Texture, source: Rectangle, position: Vector2, tint: Color) void {
rl.drawTextureRec(self, source, position, tint);
}
pub fn drawPro(self: Texture, source: Rectangle, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void {
rl.drawTexturePro(self, source, dest, origin, rotation, tint);
}
pub fn drawNPatch(self: Texture, nPatchInfo: NPatchInfo, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void {
rl.drawTextureNPatch(self, nPatchInfo, dest, origin, rotation, tint);
}
};
pub const Texture2D = Texture;
pub const TextureCubemap = Texture;
pub const RenderTexture = extern struct {
id: c_uint,
texture: Texture,
depth: Texture,
pub fn init(width: i32, height: i32) RenderTexture {
return rl.loadRenderTexture(width, height);
}
pub fn unload(self: RenderTexture) void {
rl.unloadRenderTexture(self);
}
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 fn init(fileName: [:0]const u8) Font {
return rl.loadFont(fileName);
}
pub fn initEx(fileName: [:0]const u8, fontSize: i32, fontChars: []i32, glyphCount: i32) Font {
return rl.loadFontEx(fileName, fontSize, fontChars, glyphCount);
}
pub fn fromImage(image: Image, key: Color, firstChar: i32) Font {
return rl.loadFontFromImage(image, key, firstChar);
}
pub fn fromMemory(fileType: [:0]const u8, fileData: ?[]const u8, fontSize: i32, fontChars: []i32) Font {
return rl.loadFontFromMemory(fileType, fileData, fontSize, fontChars);
}
pub fn unload(self: Font) void {
rl.unloadFont(self);
}
pub fn isReady(self: Font) bool {
return rl.isFontReady(self);
}
pub fn exportAsCode(self: Font, fileName: [:0]const u8) bool {
return rl.exportFontAsCode(self, fileName);
}
};
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, mode: rl.CameraMode) void {
rl.updateCamera(self, mode);
}
pub fn getMatrix(self: Camera3D) Matrix {
return rl.getCameraMatrix(self);
}
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 fn draw(self: Mesh, material: Material, transform: Matrix) void {
rl.drawMesh(self, material, transform);
}
pub fn drawInstanced(self: Mesh, material: Material, transforms: []const Matrix) void {
rl.drawMeshInstanced(self, material, transforms);
}
};
pub const Shader = extern struct {
id: c_uint,
locs: [*c]c_int,
pub fn activate(self: Shader) void {
rl.beginShaderMode(self);
}
pub fn deactivate(_: Shader) void {
rl.endShaderMode();
}
};
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 fn init(fileName: [:0]const u8) Model {
return rl.loadModel(fileName);
}
pub fn fromMesh(mesh: Mesh) Model {
return rl.loadModelFromMesh(mesh);
}
pub fn unload(self: Model) void {
rl.unloadModel(self);
}
pub fn draw(self: Mesh, position: Vector3, scale: f32, tint: Color) void {
return rl.drawMesh(self, position, scale, tint);
}
pub fn drawEx(self: Mesh, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void {
return rl.drawMeshEx(self, position, rotationAxis, rotationAngle, scale, tint);
}
pub fn drawWires(self: Mesh, position: Vector3, scale: f32, tint: Color) void {
return rl.drawMeshWires(self, position, scale, tint);
}
pub fn drawWiresEx(self: Mesh, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void {
return rl.drawMeshWiresEx(self, position, rotationAxis, rotationAngle, scale, tint);
}
};
pub const ModelAnimation = extern struct {
boneCount: c_int,
frameCount: c_int,
bones: [*c]BoneInfo,
framePoses: [*c][*c]Transform,
name: [32]u8,
};
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_borderless_windowed_mode = 32768,
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 Gesture = 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 AutomationEvent = extern struct {
frame: c_uint = @import("std").mem.zeroes(c_uint),
type: c_uint = @import("std").mem.zeroes(c_uint),
params: [4]c_int = @import("std").mem.zeroes([4]c_int),
};
pub const AutomationEventList = extern struct {
capacity: c_uint = @import("std").mem.zeroes(c_uint),
count: c_uint = @import("std").mem.zeroes(c_uint),
events: [*c]AutomationEvent = @import("std").mem.zeroes([*c]AutomationEvent),
};
pub const RAYLIB_VERSION_MAJOR = @as(i32, 4);
pub const RAYLIB_VERSION_MINOR = @as(i32, 6);
pub const RAYLIB_VERSION_PATCH = @as(i32, 0);
pub const RAYLIB_VERSION = "4.6-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;
const cdef = @import("raylib-zig-ext.zig");
pub fn setWindowIcons(images: []Image) void {
cdef.SetWindowIcons(@as([*c]Image, @ptrCast(images)), @as(c_int, @intCast(images.len)));
}
pub fn loadShader(vsFileName: ?[:0]const u8, fsFileName: ?[:0]const u8) Shader {
var vsFileNameFinal = @as([*c]const u8, 0);
var fsFileNameFinal = @as([*c]const u8, 0);
if (vsFileName) |vsFileNameSure| {
vsFileNameFinal = @as([*c]const u8, @ptrCast(vsFileNameSure));
}
if (fsFileName) |fsFileNameSure| {
fsFileNameFinal = @as([*c]const u8, @ptrCast(fsFileNameSure));
}
return cdef.LoadShader(vsFileNameFinal, fsFileNameFinal);
}
pub fn loadShaderFromMemory(vsCode: ?[:0]const u8, fsCode: ?[:0]const u8) Shader {
var vsCodeFinal = @as([*c]const u8, 0);
var fsCodeFinal = @as([*c]const u8, 0);
if (vsCode) |vsCodeSure| {
vsCodeFinal = @as([*c]const u8, @ptrCast(vsCodeSure));
}
if (fsCode) |fsCodeSure| {
fsCodeFinal = @as([*c]const u8, @ptrCast(fsCodeSure));
}
return cdef.LoadShaderFromMemory(vsCodeFinal, fsCodeFinal);
}
pub fn loadFileData(fileName: [:0]const u8) ![]u8 {
var bytesRead: i32 = 0;
var res: []u8 = undefined;
const ptr = cdef.LoadFileData(@as([*c]const u8, @ptrCast(fileName)), @as([*c]c_uint, @ptrCast(&bytesRead)));
if (ptr == 0) return RaylibError.GenericError;
res.ptr = @as([*]u8, @ptrCast(ptr));
res.len = @as(usize, @intCast(bytesRead));
return res;
}
pub fn saveFileData(fileName: [:0]const u8, data: []u8) bool {
return cdef.SaveFileData(@as([*c]const u8, @ptrCast(fileName)), @as(*anyopaque, @ptrCast(data.ptr)), @as(c_uint, @intCast(data.len)));
}
pub fn exportDataAsCode(data: []const u8, fileName: [:0]const u8) bool {
return cdef.ExportDataAsCode(@as([*c]const u8, @ptrCast(data)), @as(c_uint, @intCast(data.len)), @as([*c]const u8, @ptrCast(fileName)));
}
pub fn compressData(data: []const u8) [:0]u8 {
var compDataSize: i32 = 0;
var res: []u8 = undefined;
res.ptr = cdef.CompressData(@as([*c]const u8, @ptrCast(data)), @as(c_int, @intCast(data.len)), @as([*c]c_int, @ptrCast(&compDataSize)));
res.len = @as(usize, @intCast(compDataSize));
return res;
}
pub fn decompressData(compData: []const u8) [:0]u8 {
var dataSize: i32 = 0;
var res: []u8 = undefined;
res.ptr = cdef.DecompressData(@as([*c]const u8, @ptrCast(compData)), @as(c_int, @intCast(compData.len)), @as([*c]c_int, @ptrCast(&dataSize)));
res.len = @as(usize, @intCast(dataSize));
return res;
}
pub fn encodeDataBase64(data: []const u8) []u8 {
var outputSize: i32 = 0;
var res: []u8 = undefined;
res.ptr = cdef.EncodeDataBase64(@as([*c]const u8, @ptrCast(data)), @as(c_int, @intCast(data.len)), @as([*c]const u8, @ptrCast(&outputSize)));
res.len = @as(usize, @intCast(outputSize));
return res;
}
pub fn decodeDataBase64(data: []const u8) []u8 {
var outputSize: i32 = 0;
var res: []u8 = undefined;
res.ptr = cdef.DecodeDataBase64(@as([*c]const u8, @ptrCast(data)), @as([*c]const u8, @ptrCast(&outputSize)));
res.len = @as(usize, @intCast(outputSize));
return res;
}
pub fn loadImageFromMemory(fileType: [:0]const u8, fileData: []const u8) Image {
return cdef.LoadImageFromMemory(@as([*c]const u8, @ptrCast(fileType)), @as([*c]const u8, @ptrCast(fileData)), @as(c_int, @intCast(fileData.len)));
}
pub fn loadImageColors(image: Image) []Color {
var res: []Color = undefined;
const ptr = cdef.LoadImageColors(image);
if (ptr == 0) return RaylibError.GenericError;
res.ptr = @as([*]Color, @ptrCast(ptr));
res.len = @as(usize, @intCast(image.width * image.height));
return res;
}
pub fn loadImagePalette(image: Image, maxPaletteSize: i32) []Color {
var colorCount: i32 = 0;
var res: []Color = undefined;
const ptr = cdef.LoadImagePalette(image, @as(c_int, maxPaletteSize), @as([*c]c_int, @ptrCast(&colorCount)));
if (ptr == 0) return RaylibError.GenericError;
res.ptr = @as([*]Color, @ptrCast(ptr));
res.len = @as(usize, @intCast(colorCount));
return res;
}
pub fn loadFontFromMemory(fileType: [:0]const u8, fileData: ?[]const u8, fontSize: i32, fontChars: []i32) Font {
var fileDataFinal = @as([*c]const u8, 0);
var fileDataLen: i32 = 0;
if (fileData) |fileDataSure| {
fileDataFinal = @as([*c]const u8, @ptrCast(fileDataSure));
fileDataLen = @as(i32, @intCast(fileDataSure.len));
}
return cdef.LoadFontFromMemory(@as([*c]const u8, @ptrCast(fileType)), @as([*c]const u8, @ptrCast(fileDataFinal)), @as(c_int, @intCast(fileDataLen)), @as(c_int, fontSize), @as([*c]c_int, @ptrCast(fontChars)), @as(c_int, @intCast(fontChars.len)));
}
pub fn loadFontData(fileData: []const u8, fontSize: i32, fontChars: []i32, ty: i32) []GlyphInfo {
var res: []GlyphInfo = undefined;
const ptr = cdef.LoadFontData(@as([*c]const u8, @ptrCast(fileData)), @as(c_int, @intCast(fileData.len)), @as(c_int, fontSize), @as([*c]c_int, @ptrCast(fontChars)), @as(c_int, @intCast(fontChars.len)), @as(c_int, ty));
if (ptr == 0) return RaylibError.GenericError;
res.ptr = @as([*]GlyphInfo, @ptrCast(ptr));
res.len = @as(usize, @intCast(fontChars.len));
return res;
}
pub fn loadCodepoints(text: [:0]const u8) []i32 {
if (@sizeOf(c_int) != @sizeOf(i32)) {
@compileError("Can't cast pointer to c_int array to i32 because they don't have the same size");
}
var count: i32 = 0;
var res: []i32 = undefined;
const ptr = cdef.LoadCodepoints(@as([*c]const u8, @ptrCast(text)), @as([*c]c_int, @ptrCast(&count)));
if (ptr == 0) return RaylibError.GenericError;
res.ptr = @as([*]i32, @ptrCast(ptr));
res.len = @as(usize, @intCast(count));
return res;
}
pub fn textFormat(text: [:0]const u8, args: anytype) [:0]const u8 {
return std.mem.span(@call(.auto, cdef.TextFormat, .{@as([*c]const u8, @ptrCast(text))} ++ args));
}
pub fn textSplit(text: [:0]const u8, delimiter: u8) [][:0]const u8 {
var count: i32 = 0;
var res: [][*]const u8 = undefined;
res.ptr = @as([*][:0]const u8, @ptrCast(cdef.TextSplit(@as([*c]const u8, @ptrCast(text)), delimiter, @as([*c]c_int, @ptrCast(&count)))));
res.len = @as(usize, @intCast(count));
return res;
}
pub fn drawMeshInstanced(mesh: Mesh, material: Material, transforms: []const Matrix) void {
cdef.DrawMeshInstanced(mesh, material, @as([*c]const Matrix, @ptrCast(transforms)), @as(c_int, @intCast(transforms.len)));
}
pub fn loadMaterials(fileName: [:0]const u8) []Material {
var materialCount: i32 = 0;
var res: []Material = undefined;
const ptr = cdef.LoadMaterials(@as([*c]const u8, @ptrCast(fileName)), @as([*c]c_int, @ptrCast(&materialCount)));
if (ptr == 0) return RaylibError.GenericError;
res.ptr = @as([*]Material, @ptrCast(ptr));
res.len = @as(usize, @intCast(materialCount));
return res;
}
pub fn loadModelAnimations(fileName: [:0]const u8) []ModelAnimation {
var animCount: i32 = 0;
var res: []ModelAnimation = undefined;
const ptr = cdef.LoadModelAnimations(@as([*c]const u8, @ptrCast(fileName)), @as([*c]c_uint, @ptrCast(&animCount)));
if (ptr == 0) return RaylibError.GenericError;
res.ptr = @as([*]ModelAnimation, @ptrCast(ptr));
res.len = @as(usize, @intCast(animCount));
return res;
}
pub fn unloadModelAnimations(animations: []ModelAnimation) void {
cdef.UnloadModelAnimations(@as([*c]ModelAnimation, @ptrCast(animations)), @as(c_uint, @intCast(animations.len)));
}
pub fn loadWaveFromMemory(fileType: [:0]const u8, fileData: []const u8) Wave {
return cdef.LoadWaveFromMemory(@as([*c]const u8, @ptrCast(fileType)), @as([*c]const u8, @ptrCast(fileData)), @as(c_int, @intCast(fileData.len)));
}
pub fn loadWaveSamples(wave: Wave) []f32 {
var res: []f32 = undefined;
res.ptr = @as([*]f32, @ptrCast(cdef.LoadWaveSamples(wave)));
res.len = @as(usize, @intCast(wave.frameCount * wave.channels));
return res;
}
pub fn loadMusicStreamFromMemory(fileType: [:0]const u8, data: []const u8) Music {
return cdef.LoadMusicStreamFromMemory(@as([*c]const u8, @ptrCast(fileType)), @as([*c]const u8, @ptrCast(data)), @as(c_int, @intCast(data.len)));
}
pub fn drawLineStrip(points: []const Vector2, color: Color) void {
cdef.DrawLineStrip(@as([*c]Vector2, @ptrCast(points)), @as(c_int, @intCast(points.len)), color);
}
pub fn drawTriangleFan(points: []const Vector2, color: Color) void {
cdef.DrawTriangleFan(@as([*c]Vector2, @ptrCast(points)), @as(c_int, @intCast(points.len)), color);
}
pub fn drawTriangleStrip(points: []const Vector2, color: Color) void {
cdef.DrawTriangleStrip(@as([*c]Vector2, @ptrCast(points)), @as(c_int, @intCast(points.len)), color);
}
pub fn checkCollisionPointPoly(point: Vector2, points: []const Vector2) bool {
return cdef.CheckCollisionPointPoly(point, @as([*c]Vector2, @ptrCast(points)), @as(c_int, @intCast(points.len)));
}
pub fn loadFontEx(fileName: [:0]const u8, fontSize: i32, fontChars: []i32) Font {
return cdef.LoadFontEx(@as([*c]const u8, @ptrCast(fileName)), @as(c_int, fontSize), @as([*c]c_int, @ptrCast(fontChars)), @as(c_int, @intCast(fontChars.len)));
}
pub fn genImageFontAtlas(chars: []const GlyphInfo, recs: [][]Rectangle, fontSize: i32, padding: i32, packMethod: i32) Image {
return cdef.GenImageFontAtlas(@as([*c]const GlyphInfo, @ptrCast(chars)), @as([*c][*c]Rectangle, @ptrCast(recs)), @as(c_int, @intCast(recs.len)), @as(c_int, fontSize), @as(c_int, padding), @as(c_int, packMethod));
}
pub fn unloadFontData(chars: []GlyphInfo) void {
cdef.UnloadFontData(@as([*c]GlyphInfo, @ptrCast(chars)), @as(c_int, @intCast(chars.len)));
}
pub fn loadUTF8(codepoints: []const c_int) [:0]u8 {
return std.mem.span(cdef.LoadUTF8(@as([*c]const c_int, @ptrCast(codepoints)), @as(c_int, @intCast(codepoints.len))));
}
pub fn textJoin(textList: [][:0]const u8, delimiter: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.TextJoin(@as([*c][*c]const u8, @ptrCast(textList)), @as(c_int, @intCast(textList.len)), @as([*c]const u8, @ptrCast(delimiter))));
}
pub fn drawTriangleStrip3D(points: []const Vector3, color: Color) void {
cdef.DrawTriangleStrip3D(@as([*c]Vector3, @ptrCast(points)), @as(c_int, @intCast(points.len)), color);
}
pub fn initWindow(width: i32, height: i32, title: [:0]const u8) void {
cdef.InitWindow(@as(c_int, width), @as(c_int, height), @as([*c]const u8, @ptrCast(title)));
}
pub fn closeWindow() void {
cdef.CloseWindow();
}
pub fn windowShouldClose() bool {
return cdef.WindowShouldClose();
}
pub fn isWindowReady() bool {
return cdef.IsWindowReady();
}
pub fn isWindowFullscreen() bool {
return cdef.IsWindowFullscreen();
}
pub fn isWindowHidden() bool {
return cdef.IsWindowHidden();
}
pub fn isWindowMinimized() bool {
return cdef.IsWindowMinimized();
}
pub fn isWindowMaximized() bool {
return cdef.IsWindowMaximized();
}
pub fn isWindowFocused() bool {
return cdef.IsWindowFocused();
}
pub fn isWindowResized() bool {
return cdef.IsWindowResized();
}
pub fn isWindowState(flag: u32) bool {
return cdef.IsWindowState(@as(c_uint, flag));
}
pub fn setWindowState(flags: ConfigFlags) void {
cdef.SetWindowState(flags);
}
pub fn clearWindowState(flags: ConfigFlags) void {
cdef.ClearWindowState(flags);
}
pub fn toggleFullscreen() void {
cdef.ToggleFullscreen();
}
pub fn toggleBorderlessWindowed() void {
cdef.ToggleBorderlessWindowed();
}
pub fn maximizeWindow() void {
cdef.MaximizeWindow();
}
pub fn minimizeWindow() void {
cdef.MinimizeWindow();
}
pub fn restoreWindow() void {
cdef.RestoreWindow();
}
pub fn setWindowIcon(image: Image) void {
cdef.SetWindowIcon(image);
}
pub fn setWindowTitle(title: [:0]const u8) void {
cdef.SetWindowTitle(@as([*c]const u8, @ptrCast(title)));
}
pub fn setWindowPosition(x: i32, y: i32) void {
cdef.SetWindowPosition(@as(c_int, x), @as(c_int, y));
}
pub fn setWindowMonitor(monitor: i32) void {
cdef.SetWindowMonitor(@as(c_int, monitor));
}
pub fn setWindowMinSize(width: i32, height: i32) void {
cdef.SetWindowMinSize(@as(c_int, width), @as(c_int, height));
}
pub fn setWindowMaxSize(width: i32, height: i32) void {
cdef.SetWindowMaxSize(@as(c_int, width), @as(c_int, height));
}
pub fn setWindowSize(width: i32, height: i32) void {
cdef.SetWindowSize(@as(c_int, width), @as(c_int, height));
}
pub fn setWindowOpacity(opacity: f32) void {
cdef.SetWindowOpacity(opacity);
}
pub fn setWindowFocused() void {
cdef.SetWindowFocused();
}
pub fn getWindowHandle() *anyopaque {
return cdef.GetWindowHandle();
}
pub fn getScreenWidth() i32 {
return @as(i32, cdef.GetScreenWidth());
}
pub fn getScreenHeight() i32 {
return @as(i32, cdef.GetScreenHeight());
}
pub fn getRenderWidth() i32 {
return @as(i32, cdef.GetRenderWidth());
}
pub fn getRenderHeight() i32 {
return @as(i32, cdef.GetRenderHeight());
}
pub fn getMonitorCount() i32 {
return @as(i32, cdef.GetMonitorCount());
}
pub fn getCurrentMonitor() i32 {
return @as(i32, cdef.GetCurrentMonitor());
}
pub fn getMonitorPosition(monitor: i32) Vector2 {
return cdef.GetMonitorPosition(@as(c_int, monitor));
}
pub fn getMonitorWidth(monitor: i32) i32 {
return @as(i32, cdef.GetMonitorWidth(@as(c_int, monitor)));
}
pub fn getMonitorHeight(monitor: i32) i32 {
return @as(i32, cdef.GetMonitorHeight(@as(c_int, monitor)));
}
pub fn getMonitorPhysicalWidth(monitor: i32) i32 {
return @as(i32, cdef.GetMonitorPhysicalWidth(@as(c_int, monitor)));
}
pub fn getMonitorPhysicalHeight(monitor: i32) i32 {
return @as(i32, cdef.GetMonitorPhysicalHeight(@as(c_int, monitor)));
}
pub fn getMonitorRefreshRate(monitor: i32) i32 {
return @as(i32, cdef.GetMonitorRefreshRate(@as(c_int, monitor)));
}
pub fn getWindowPosition() Vector2 {
return cdef.GetWindowPosition();
}
pub fn getWindowScaleDPI() Vector2 {
return cdef.GetWindowScaleDPI();
}
pub fn getMonitorName(monitor: i32) [:0]const u8 {
return std.mem.span(cdef.GetMonitorName(@as(c_int, monitor)));
}
pub fn setClipboardText(text: [:0]const u8) void {
cdef.SetClipboardText(@as([*c]const u8, @ptrCast(text)));
}
pub fn getClipboardText() [:0]const u8 {
return std.mem.span(cdef.GetClipboardText());
}
pub fn enableEventWaiting() void {
cdef.EnableEventWaiting();
}
pub fn disableEventWaiting() void {
cdef.DisableEventWaiting();
}
pub fn showCursor() void {
cdef.ShowCursor();
}
pub fn hideCursor() void {
cdef.HideCursor();
}
pub fn isCursorHidden() bool {
return cdef.IsCursorHidden();
}
pub fn enableCursor() void {
cdef.EnableCursor();
}
pub fn disableCursor() void {
cdef.DisableCursor();
}
pub fn isCursorOnScreen() bool {
return cdef.IsCursorOnScreen();
}
pub fn clearBackground(color: Color) void {
cdef.ClearBackground(color);
}
pub fn beginDrawing() void {
cdef.BeginDrawing();
}
pub fn endDrawing() void {
cdef.EndDrawing();
}
pub fn beginMode2D(camera: Camera2D) void {
cdef.BeginMode2D(camera);
}
pub fn endMode2D() void {
cdef.EndMode2D();
}
pub fn beginMode3D(camera: Camera3D) void {
cdef.BeginMode3D(camera);
}
pub fn endMode3D() void {
cdef.EndMode3D();
}
pub fn beginTextureMode(target: RenderTexture2D) void {
cdef.BeginTextureMode(target);
}
pub fn endTextureMode() void {
cdef.EndTextureMode();
}
pub fn beginShaderMode(shader: Shader) void {
cdef.BeginShaderMode(shader);
}
pub fn endShaderMode() void {
cdef.EndShaderMode();
}
pub fn beginBlendMode(mode: i32) void {
cdef.BeginBlendMode(@as(c_int, mode));
}
pub fn endBlendMode() void {
cdef.EndBlendMode();
}
pub fn beginScissorMode(x: i32, y: i32, width: i32, height: i32) void {
cdef.BeginScissorMode(@as(c_int, x), @as(c_int, y), @as(c_int, width), @as(c_int, height));
}
pub fn endScissorMode() void {
cdef.EndScissorMode();
}
pub fn beginVrStereoMode(config: VrStereoConfig) void {
cdef.BeginVrStereoMode(config);
}
pub fn endVrStereoMode() void {
cdef.EndVrStereoMode();
}
pub fn loadVrStereoConfig(device: VrDeviceInfo) VrStereoConfig {
return cdef.LoadVrStereoConfig(device);
}
pub fn unloadVrStereoConfig(config: VrStereoConfig) void {
cdef.UnloadVrStereoConfig(config);
}
pub fn isShaderReady(shader: Shader) bool {
return cdef.IsShaderReady(shader);
}
pub fn getShaderLocation(shader: Shader, uniformName: [:0]const u8) i32 {
return @as(i32, cdef.GetShaderLocation(shader, @as([*c]const u8, @ptrCast(uniformName))));
}
pub fn getShaderLocationAttrib(shader: Shader, attribName: [:0]const u8) i32 {
return @as(i32, cdef.GetShaderLocationAttrib(shader, @as([*c]const u8, @ptrCast(attribName))));
}
pub fn setShaderValue(shader: Shader, locIndex: i32, value: *const anyopaque, uniformType: i32) void {
cdef.SetShaderValue(shader, @as(c_int, locIndex), value, @as(c_int, uniformType));
}
pub fn setShaderValueV(shader: Shader, locIndex: i32, value: *const anyopaque, uniformType: i32, count: i32) void {
cdef.SetShaderValueV(shader, @as(c_int, locIndex), value, @as(c_int, uniformType), @as(c_int, count));
}
pub fn setShaderValueMatrix(shader: Shader, locIndex: i32, mat: Matrix) void {
cdef.SetShaderValueMatrix(shader, @as(c_int, locIndex), mat);
}
pub fn setShaderValueTexture(shader: Shader, locIndex: i32, texture: Texture2D) void {
cdef.SetShaderValueTexture(shader, @as(c_int, locIndex), texture);
}
pub fn unloadShader(shader: Shader) void {
cdef.UnloadShader(shader);
}
pub fn getMouseRay(mousePosition: Vector2, camera: Camera) Ray {
return cdef.GetMouseRay(mousePosition, camera);
}
pub fn getCameraMatrix(camera: Camera) Matrix {
return cdef.GetCameraMatrix(camera);
}
pub fn getCameraMatrix2D(camera: Camera2D) Matrix {
return cdef.GetCameraMatrix2D(camera);
}
pub fn getWorldToScreen(position: Vector3, camera: Camera) Vector2 {
return cdef.GetWorldToScreen(position, camera);
}
pub fn getScreenToWorld2D(position: Vector2, camera: Camera2D) Vector2 {
return cdef.GetScreenToWorld2D(position, camera);
}
pub fn getWorldToScreenEx(position: Vector3, camera: Camera, width: i32, height: i32) Vector2 {
return cdef.GetWorldToScreenEx(position, camera, @as(c_int, width), @as(c_int, height));
}
pub fn getWorldToScreen2D(position: Vector2, camera: Camera2D) Vector2 {
return cdef.GetWorldToScreen2D(position, camera);
}
pub fn setTargetFPS(fps: i32) void {
cdef.SetTargetFPS(@as(c_int, fps));
}
pub fn getFrameTime() f32 {
return cdef.GetFrameTime();
}
pub fn getTime() f64 {
return cdef.GetTime();
}
pub fn getFPS() i32 {
return @as(i32, cdef.GetFPS());
}
pub fn swapScreenBuffer() void {
cdef.SwapScreenBuffer();
}
pub fn pollInputEvents() void {
cdef.PollInputEvents();
}
pub fn waitTime(seconds: f64) void {
cdef.WaitTime(seconds);
}
pub fn setRandomSeed(seed: u32) void {
cdef.SetRandomSeed(@as(c_uint, seed));
}
pub fn getRandomValue(min: i32, max: i32) i32 {
return @as(i32, cdef.GetRandomValue(@as(c_int, min), @as(c_int, max)));
}
pub fn unloadRandomSequence(sequence: []i32) void {
cdef.UnloadRandomSequence(@as([*c]c_int, @ptrCast(sequence)));
}
pub fn takeScreenshot(fileName: [:0]const u8) void {
cdef.TakeScreenshot(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn setConfigFlags(flags: ConfigFlags) void {
cdef.SetConfigFlags(flags);
}
pub fn openURL(url: [:0]const u8) void {
cdef.OpenURL(@as([*c]const u8, @ptrCast(url)));
}
pub fn traceLog(logLevel: TraceLogLevel, text: [:0]const u8) void {
cdef.TraceLog(logLevel, @as([*c]const u8, @ptrCast(text)));
}
pub fn setTraceLogLevel(logLevel: TraceLogLevel) void {
cdef.SetTraceLogLevel(logLevel);
}
pub fn memAlloc(size: u32) *anyopaque {
return cdef.MemAlloc(@as(c_uint, size));
}
pub fn memRealloc(ptr: *anyopaque, size: u32) *anyopaque {
return cdef.MemRealloc(ptr, @as(c_uint, size));
}
pub fn memFree(ptr: *anyopaque) void {
cdef.MemFree(ptr);
}
pub fn setLoadFileDataCallback(callback: LoadFileDataCallback) void {
cdef.SetLoadFileDataCallback(callback);
}
pub fn setSaveFileDataCallback(callback: SaveFileDataCallback) void {
cdef.SetSaveFileDataCallback(callback);
}
pub fn setLoadFileTextCallback(callback: LoadFileTextCallback) void {
cdef.SetLoadFileTextCallback(callback);
}
pub fn setSaveFileTextCallback(callback: SaveFileTextCallback) void {
cdef.SetSaveFileTextCallback(callback);
}
pub fn unloadFileData(data: []u8) void {
cdef.UnloadFileData(@as([*c]u8, @ptrCast(data)));
}
pub fn loadFileText(fileName: [:0]const u8) [:0]u8 {
return std.mem.span(cdef.LoadFileText(@as([*c]const u8, @ptrCast(fileName))));
}
pub fn unloadFileText(text: [:0]u8) void {
cdef.UnloadFileText(@as([*c]u8, @ptrCast(text)));
}
pub fn saveFileText(fileName: [:0]const u8, text: [:0]u8) bool {
return cdef.SaveFileText(@as([*c]const u8, @ptrCast(fileName)), @as([*c]u8, @ptrCast(text)));
}
pub fn fileExists(fileName: [:0]const u8) bool {
return cdef.FileExists(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn directoryExists(dirPath: [:0]const u8) bool {
return cdef.DirectoryExists(@as([*c]const u8, @ptrCast(dirPath)));
}
pub fn isFileExtension(fileName: [:0]const u8, ext: [:0]const u8) bool {
return cdef.IsFileExtension(@as([*c]const u8, @ptrCast(fileName)), @as([*c]const u8, @ptrCast(ext)));
}
pub fn getFileLength(fileName: [:0]const u8) i32 {
return @as(i32, cdef.GetFileLength(@as([*c]const u8, @ptrCast(fileName))));
}
pub fn getFileExtension(fileName: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.GetFileExtension(@as([*c]const u8, @ptrCast(fileName))));
}
pub fn getFileName(filePath: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.GetFileName(@as([*c]const u8, @ptrCast(filePath))));
}
pub fn getFileNameWithoutExt(filePath: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.GetFileNameWithoutExt(@as([*c]const u8, @ptrCast(filePath))));
}
pub fn getDirectoryPath(filePath: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.GetDirectoryPath(@as([*c]const u8, @ptrCast(filePath))));
}
pub fn getPrevDirectoryPath(dirPath: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.GetPrevDirectoryPath(@as([*c]const u8, @ptrCast(dirPath))));
}
pub fn getWorkingDirectory() [:0]const u8 {
return std.mem.span(cdef.GetWorkingDirectory());
}
pub fn getApplicationDirectory() [:0]const u8 {
return std.mem.span(cdef.GetApplicationDirectory());
}
pub fn changeDirectory(dir: [:0]const u8) bool {
return cdef.ChangeDirectory(@as([*c]const u8, @ptrCast(dir)));
}
pub fn isPathFile(path: [:0]const u8) bool {
return cdef.IsPathFile(@as([*c]const u8, @ptrCast(path)));
}
pub fn loadDirectoryFiles(dirPath: [:0]const u8) FilePathList {
return cdef.LoadDirectoryFiles(@as([*c]const u8, @ptrCast(dirPath)));
}
pub fn loadDirectoryFilesEx(basePath: [:0]const u8, filter: [:0]const u8, scanSubdirs: bool) FilePathList {
return cdef.LoadDirectoryFilesEx(@as([*c]const u8, @ptrCast(basePath)), @as([*c]const u8, @ptrCast(filter)), scanSubdirs);
}
pub fn unloadDirectoryFiles(files: FilePathList) void {
cdef.UnloadDirectoryFiles(files);
}
pub fn isFileDropped() bool {
return cdef.IsFileDropped();
}
pub fn loadDroppedFiles() FilePathList {
return cdef.LoadDroppedFiles();
}
pub fn unloadDroppedFiles(files: FilePathList) void {
cdef.UnloadDroppedFiles(files);
}
pub fn getFileModTime(fileName: [:0]const u8) i64 {
return @as(i64, cdef.GetFileModTime(@as([*c]const u8, @ptrCast(fileName))));
}
pub fn loadAutomationEventList(fileName: [:0]const u8) AutomationEventList {
return cdef.LoadAutomationEventList(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn unloadAutomationEventList(list: AutomationEventList) void {
cdef.UnloadAutomationEventList(list);
}
pub fn exportAutomationEventList(list: AutomationEventList, fileName: [:0]const u8) bool {
return cdef.ExportAutomationEventList(list, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn setAutomationEventList(list: *AutomationEventList) void {
cdef.SetAutomationEventList(@as([*c]AutomationEventList, @ptrCast(list)));
}
pub fn setAutomationEventBaseFrame(frame: i32) void {
cdef.SetAutomationEventBaseFrame(@as(c_int, frame));
}
pub fn startAutomationEventRecording() void {
cdef.StartAutomationEventRecording();
}
pub fn stopAutomationEventRecording() void {
cdef.StopAutomationEventRecording();
}
pub fn playAutomationEvent(event: AutomationEvent) void {
cdef.PlayAutomationEvent(event);
}
pub fn isKeyPressed(key: KeyboardKey) bool {
return cdef.IsKeyPressed(key);
}
pub fn isKeyPressedRepeat(key: KeyboardKey) bool {
return cdef.IsKeyPressedRepeat(key);
}
pub fn isKeyDown(key: KeyboardKey) bool {
return cdef.IsKeyDown(key);
}
pub fn isKeyReleased(key: KeyboardKey) bool {
return cdef.IsKeyReleased(key);
}
pub fn isKeyUp(key: KeyboardKey) bool {
return cdef.IsKeyUp(key);
}
pub fn getKeyPressed() KeyboardKey {
return cdef.GetKeyPressed();
}
pub fn getCharPressed() i32 {
return @as(i32, cdef.GetCharPressed());
}
pub fn setExitKey(key: KeyboardKey) void {
cdef.SetExitKey(key);
}
pub fn isGamepadAvailable(gamepad: i32) bool {
return cdef.IsGamepadAvailable(@as(c_int, gamepad));
}
pub fn getGamepadName(gamepad: i32) [:0]const u8 {
return std.mem.span(cdef.GetGamepadName(@as(c_int, gamepad)));
}
pub fn isGamepadButtonPressed(gamepad: i32, button: GamepadButton) bool {
return cdef.IsGamepadButtonPressed(@as(c_int, gamepad), button);
}
pub fn isGamepadButtonDown(gamepad: i32, button: GamepadButton) bool {
return cdef.IsGamepadButtonDown(@as(c_int, gamepad), button);
}
pub fn isGamepadButtonReleased(gamepad: i32, button: GamepadButton) bool {
return cdef.IsGamepadButtonReleased(@as(c_int, gamepad), button);
}
pub fn isGamepadButtonUp(gamepad: i32, button: GamepadButton) bool {
return cdef.IsGamepadButtonUp(@as(c_int, gamepad), button);
}
pub fn getGamepadButtonPressed() GamepadButton {
return cdef.GetGamepadButtonPressed();
}
pub fn getGamepadAxisCount(gamepad: i32) i32 {
return @as(i32, cdef.GetGamepadAxisCount(@as(c_int, gamepad)));
}
pub fn getGamepadAxisMovement(gamepad: i32, axis: i32) f32 {
return cdef.GetGamepadAxisMovement(@as(c_int, gamepad), @as(c_int, axis));
}
pub fn setGamepadMappings(mappings: [:0]const u8) i32 {
return @as(i32, cdef.SetGamepadMappings(@as([*c]const u8, @ptrCast(mappings))));
}
pub fn isMouseButtonPressed(button: MouseButton) bool {
return cdef.IsMouseButtonPressed(button);
}
pub fn isMouseButtonDown(button: MouseButton) bool {
return cdef.IsMouseButtonDown(button);
}
pub fn isMouseButtonReleased(button: MouseButton) bool {
return cdef.IsMouseButtonReleased(button);
}
pub fn isMouseButtonUp(button: MouseButton) bool {
return cdef.IsMouseButtonUp(button);
}
pub fn getMouseX() i32 {
return @as(i32, cdef.GetMouseX());
}
pub fn getMouseY() i32 {
return @as(i32, cdef.GetMouseY());
}
pub fn getMousePosition() Vector2 {
return cdef.GetMousePosition();
}
pub fn getMouseDelta() Vector2 {
return cdef.GetMouseDelta();
}
pub fn setMousePosition(x: i32, y: i32) void {
cdef.SetMousePosition(@as(c_int, x), @as(c_int, y));
}
pub fn setMouseOffset(offsetX: i32, offsetY: i32) void {
cdef.SetMouseOffset(@as(c_int, offsetX), @as(c_int, offsetY));
}
pub fn setMouseScale(scaleX: f32, scaleY: f32) void {
cdef.SetMouseScale(scaleX, scaleY);
}
pub fn getMouseWheelMove() f32 {
return cdef.GetMouseWheelMove();
}
pub fn getMouseWheelMoveV() Vector2 {
return cdef.GetMouseWheelMoveV();
}
pub fn setMouseCursor(cursor: i32) void {
cdef.SetMouseCursor(@as(c_int, cursor));
}
pub fn getTouchX() i32 {
return @as(i32, cdef.GetTouchX());
}
pub fn getTouchY() i32 {
return @as(i32, cdef.GetTouchY());
}
pub fn getTouchPosition(index: i32) Vector2 {
return cdef.GetTouchPosition(@as(c_int, index));
}
pub fn getTouchPointId(index: i32) i32 {
return @as(i32, cdef.GetTouchPointId(@as(c_int, index)));
}
pub fn getTouchPointCount() i32 {
return @as(i32, cdef.GetTouchPointCount());
}
pub fn setGesturesEnabled(flags: u32) void {
cdef.SetGesturesEnabled(@as(c_uint, flags));
}
pub fn isGestureDetected(gesture: Gesture) bool {
return cdef.IsGestureDetected(gesture);
}
pub fn getGestureDetected() Gesture {
return cdef.GetGestureDetected();
}
pub fn getGestureHoldDuration() f32 {
return cdef.GetGestureHoldDuration();
}
pub fn getGestureDragVector() Vector2 {
return cdef.GetGestureDragVector();
}
pub fn getGestureDragAngle() f32 {
return cdef.GetGestureDragAngle();
}
pub fn getGesturePinchVector() Vector2 {
return cdef.GetGesturePinchVector();
}
pub fn getGesturePinchAngle() f32 {
return cdef.GetGesturePinchAngle();
}
pub fn updateCamera(camera: *Camera, mode: CameraMode) void {
cdef.UpdateCamera(@as([*c]Camera, @ptrCast(camera)), mode);
}
pub fn updateCameraPro(camera: *Camera, movement: Vector3, rotation: Vector3, zoom: f32) void {
cdef.UpdateCameraPro(@as([*c]Camera, @ptrCast(camera)), movement, rotation, zoom);
}
pub fn setShapesTexture(texture: Texture2D, source: Rectangle) void {
cdef.SetShapesTexture(texture, source);
}
pub fn drawPixel(posX: i32, posY: i32, color: Color) void {
cdef.DrawPixel(@as(c_int, posX), @as(c_int, posY), color);
}
pub fn drawPixelV(position: Vector2, color: Color) void {
cdef.DrawPixelV(position, color);
}
pub fn drawLine(startPosX: i32, startPosY: i32, endPosX: i32, endPosY: i32, color: Color) void {
cdef.DrawLine(@as(c_int, startPosX), @as(c_int, startPosY), @as(c_int, endPosX), @as(c_int, endPosY), color);
}
pub fn drawLineV(startPos: Vector2, endPos: Vector2, color: Color) void {
cdef.DrawLineV(startPos, endPos, color);
}
pub fn drawLineEx(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void {
cdef.DrawLineEx(startPos, endPos, thick, color);
}
pub fn drawLineBezier(startPos: Vector2, endPos: Vector2, thick: f32, color: Color) void {
cdef.DrawLineBezier(startPos, endPos, thick, color);
}
pub fn drawCircle(centerX: i32, centerY: i32, radius: f32, color: Color) void {
cdef.DrawCircle(@as(c_int, centerX), @as(c_int, centerY), radius, color);
}
pub fn drawCircleSector(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: i32, color: Color) void {
cdef.DrawCircleSector(center, radius, startAngle, endAngle, @as(c_int, segments), color);
}
pub fn drawCircleSectorLines(center: Vector2, radius: f32, startAngle: f32, endAngle: f32, segments: i32, color: Color) void {
cdef.DrawCircleSectorLines(center, radius, startAngle, endAngle, @as(c_int, segments), color);
}
pub fn drawCircleGradient(centerX: i32, centerY: i32, radius: f32, color1: Color, color2: Color) void {
cdef.DrawCircleGradient(@as(c_int, centerX), @as(c_int, centerY), radius, color1, color2);
}
pub fn drawCircleV(center: Vector2, radius: f32, color: Color) void {
cdef.DrawCircleV(center, radius, color);
}
pub fn drawCircleLines(centerX: i32, centerY: i32, radius: f32, color: Color) void {
cdef.DrawCircleLines(@as(c_int, centerX), @as(c_int, centerY), radius, color);
}
pub fn drawCircleLinesV(center: Vector2, radius: f32, color: Color) void {
cdef.DrawCircleLinesV(center, radius, color);
}
pub fn drawEllipse(centerX: i32, centerY: i32, radiusH: f32, radiusV: f32, color: Color) void {
cdef.DrawEllipse(@as(c_int, centerX), @as(c_int, centerY), radiusH, radiusV, color);
}
pub fn drawEllipseLines(centerX: i32, centerY: i32, radiusH: f32, radiusV: f32, color: Color) void {
cdef.DrawEllipseLines(@as(c_int, centerX), @as(c_int, centerY), radiusH, radiusV, color);
}
pub fn drawRing(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: i32, color: Color) void {
cdef.DrawRing(center, innerRadius, outerRadius, startAngle, endAngle, @as(c_int, segments), color);
}
pub fn drawRingLines(center: Vector2, innerRadius: f32, outerRadius: f32, startAngle: f32, endAngle: f32, segments: i32, color: Color) void {
cdef.DrawRingLines(center, innerRadius, outerRadius, startAngle, endAngle, @as(c_int, segments), color);
}
pub fn drawRectangle(posX: i32, posY: i32, width: i32, height: i32, color: Color) void {
cdef.DrawRectangle(@as(c_int, posX), @as(c_int, posY), @as(c_int, width), @as(c_int, height), color);
}
pub fn drawRectangleV(position: Vector2, size: Vector2, color: Color) void {
cdef.DrawRectangleV(position, size, color);
}
pub fn drawRectangleRec(rec: Rectangle, color: Color) void {
cdef.DrawRectangleRec(rec, color);
}
pub fn drawRectanglePro(rec: Rectangle, origin: Vector2, rotation: f32, color: Color) void {
cdef.DrawRectanglePro(rec, origin, rotation, color);
}
pub fn drawRectangleGradientV(posX: i32, posY: i32, width: i32, height: i32, color1: Color, color2: Color) void {
cdef.DrawRectangleGradientV(@as(c_int, posX), @as(c_int, posY), @as(c_int, width), @as(c_int, height), color1, color2);
}
pub fn drawRectangleGradientH(posX: i32, posY: i32, width: i32, height: i32, color1: Color, color2: Color) void {
cdef.DrawRectangleGradientH(@as(c_int, posX), @as(c_int, posY), @as(c_int, width), @as(c_int, height), color1, color2);
}
pub fn drawRectangleGradientEx(rec: Rectangle, col1: Color, col2: Color, col3: Color, col4: Color) void {
cdef.DrawRectangleGradientEx(rec, col1, col2, col3, col4);
}
pub fn drawRectangleLines(posX: i32, posY: i32, width: i32, height: i32, color: Color) void {
cdef.DrawRectangleLines(@as(c_int, posX), @as(c_int, posY), @as(c_int, width), @as(c_int, height), color);
}
pub fn drawRectangleLinesEx(rec: Rectangle, lineThick: f32, color: Color) void {
cdef.DrawRectangleLinesEx(rec, lineThick, color);
}
pub fn drawRectangleRounded(rec: Rectangle, roundness: f32, segments: i32, color: Color) void {
cdef.DrawRectangleRounded(rec, roundness, @as(c_int, segments), color);
}
pub fn drawRectangleRoundedLines(rec: Rectangle, roundness: f32, segments: i32, lineThick: f32, color: Color) void {
cdef.DrawRectangleRoundedLines(rec, roundness, @as(c_int, segments), lineThick, color);
}
pub fn drawTriangle(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void {
cdef.DrawTriangle(v1, v2, v3, color);
}
pub fn drawTriangleLines(v1: Vector2, v2: Vector2, v3: Vector2, color: Color) void {
cdef.DrawTriangleLines(v1, v2, v3, color);
}
pub fn drawPoly(center: Vector2, sides: i32, radius: f32, rotation: f32, color: Color) void {
cdef.DrawPoly(center, @as(c_int, sides), radius, rotation, color);
}
pub fn drawPolyLines(center: Vector2, sides: i32, radius: f32, rotation: f32, color: Color) void {
cdef.DrawPolyLines(center, @as(c_int, sides), radius, rotation, color);
}
pub fn drawPolyLinesEx(center: Vector2, sides: i32, radius: f32, rotation: f32, lineThick: f32, color: Color) void {
cdef.DrawPolyLinesEx(center, @as(c_int, sides), radius, rotation, lineThick, color);
}
pub fn drawSplineLinear(points: []const Vector2, pointCount: i32, thick: f32, color: Color) void {
cdef.DrawSplineLinear(@as([*c]const Vector2, @ptrCast(points)), @as(c_int, pointCount), thick, color);
}
pub fn drawSplineBasis(points: []const Vector2, pointCount: i32, thick: f32, color: Color) void {
cdef.DrawSplineBasis(@as([*c]const Vector2, @ptrCast(points)), @as(c_int, pointCount), thick, color);
}
pub fn drawSplineCatmullRom(points: []const Vector2, pointCount: i32, thick: f32, color: Color) void {
cdef.DrawSplineCatmullRom(@as([*c]const Vector2, @ptrCast(points)), @as(c_int, pointCount), thick, color);
}
pub fn drawSplineBezierQuadratic(points: []const Vector2, pointCount: i32, thick: f32, color: Color) void {
cdef.DrawSplineBezierQuadratic(@as([*c]const Vector2, @ptrCast(points)), @as(c_int, pointCount), thick, color);
}
pub fn drawSplineBezierCubic(points: []const Vector2, pointCount: i32, thick: f32, color: Color) void {
cdef.DrawSplineBezierCubic(@as([*c]const Vector2, @ptrCast(points)), @as(c_int, pointCount), thick, color);
}
pub fn drawSplineSegmentLinear(p1: Vector2, p2: Vector2, thick: f32, color: Color) void {
cdef.DrawSplineSegmentLinear(p1, p2, thick, color);
}
pub fn drawSplineSegmentBasis(p1: Vector2, p2: Vector2, p3: Vector2, p4: Vector2, thick: f32, color: Color) void {
cdef.DrawSplineSegmentBasis(p1, p2, p3, p4, thick, color);
}
pub fn drawSplineSegmentCatmullRom(p1: Vector2, p2: Vector2, p3: Vector2, p4: Vector2, thick: f32, color: Color) void {
cdef.DrawSplineSegmentCatmullRom(p1, p2, p3, p4, thick, color);
}
pub fn drawSplineSegmentBezierQuadratic(p1: Vector2, c2: Vector2, p3: Vector2, thick: f32, color: Color) void {
cdef.DrawSplineSegmentBezierQuadratic(p1, c2, p3, thick, color);
}
pub fn drawSplineSegmentBezierCubic(p1: Vector2, c2: Vector2, c3: Vector2, p4: Vector2, thick: f32, color: Color) void {
cdef.DrawSplineSegmentBezierCubic(p1, c2, c3, p4, thick, color);
}
pub fn getSplinePointLinear(startPos: Vector2, endPos: Vector2, t: f32) Vector2 {
return cdef.GetSplinePointLinear(startPos, endPos, t);
}
pub fn getSplinePointBasis(p1: Vector2, p2: Vector2, p3: Vector2, p4: Vector2, t: f32) Vector2 {
return cdef.GetSplinePointBasis(p1, p2, p3, p4, t);
}
pub fn getSplinePointCatmullRom(p1: Vector2, p2: Vector2, p3: Vector2, p4: Vector2, t: f32) Vector2 {
return cdef.GetSplinePointCatmullRom(p1, p2, p3, p4, t);
}
pub fn getSplinePointBezierQuad(p1: Vector2, c2: Vector2, p3: Vector2, t: f32) Vector2 {
return cdef.GetSplinePointBezierQuad(p1, c2, p3, t);
}
pub fn getSplinePointBezierCubic(p1: Vector2, c2: Vector2, c3: Vector2, p4: Vector2, t: f32) Vector2 {
return cdef.GetSplinePointBezierCubic(p1, c2, c3, p4, t);
}
pub fn checkCollisionRecs(rec1: Rectangle, rec2: Rectangle) bool {
return cdef.CheckCollisionRecs(rec1, rec2);
}
pub fn checkCollisionCircles(center1: Vector2, radius1: f32, center2: Vector2, radius2: f32) bool {
return cdef.CheckCollisionCircles(center1, radius1, center2, radius2);
}
pub fn checkCollisionCircleRec(center: Vector2, radius: f32, rec: Rectangle) bool {
return cdef.CheckCollisionCircleRec(center, radius, rec);
}
pub fn checkCollisionPointRec(point: Vector2, rec: Rectangle) bool {
return cdef.CheckCollisionPointRec(point, rec);
}
pub fn checkCollisionPointCircle(point: Vector2, center: Vector2, radius: f32) bool {
return cdef.CheckCollisionPointCircle(point, center, radius);
}
pub fn checkCollisionPointTriangle(point: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) bool {
return cdef.CheckCollisionPointTriangle(point, p1, p2, p3);
}
pub fn checkCollisionLines(startPos1: Vector2, endPos1: Vector2, startPos2: Vector2, endPos2: Vector2, collisionPoint: *Vector2) bool {
return cdef.CheckCollisionLines(startPos1, endPos1, startPos2, endPos2, @as([*c]Vector2, @ptrCast(collisionPoint)));
}
pub fn checkCollisionPointLine(point: Vector2, p1: Vector2, p2: Vector2, threshold: i32) bool {
return cdef.CheckCollisionPointLine(point, p1, p2, @as(c_int, threshold));
}
pub fn getCollisionRec(rec1: Rectangle, rec2: Rectangle) Rectangle {
return cdef.GetCollisionRec(rec1, rec2);
}
pub fn loadImage(fileName: [:0]const u8) Image {
return cdef.LoadImage(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn loadImageRaw(fileName: [:0]const u8, width: i32, height: i32, format: i32, headerSize: i32) Image {
return cdef.LoadImageRaw(@as([*c]const u8, @ptrCast(fileName)), @as(c_int, width), @as(c_int, height), @as(c_int, format), @as(c_int, headerSize));
}
pub fn loadImageSvg(fileNameOrString: [:0]const u8, width: i32, height: i32) Image {
return cdef.LoadImageSvg(@as([*c]const u8, @ptrCast(fileNameOrString)), @as(c_int, width), @as(c_int, height));
}
pub fn loadImageAnim(fileName: [:0]const u8, frames: *i32) Image {
return cdef.LoadImageAnim(@as([*c]const u8, @ptrCast(fileName)), @as([*c]c_int, @ptrCast(frames)));
}
pub fn loadImageFromTexture(texture: Texture2D) Image {
return cdef.LoadImageFromTexture(texture);
}
pub fn loadImageFromScreen() Image {
return cdef.LoadImageFromScreen();
}
pub fn isImageReady(image: Image) bool {
return cdef.IsImageReady(image);
}
pub fn unloadImage(image: Image) void {
cdef.UnloadImage(image);
}
pub fn exportImage(image: Image, fileName: [:0]const u8) bool {
return cdef.ExportImage(image, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn exportImageToMemory(image: Image, fileType: [:0]const u8, fileSize: *i32) [:0]u8 {
return std.mem.span(cdef.ExportImageToMemory(image, @as([*c]const u8, @ptrCast(fileType)), @as([*c]c_int, @ptrCast(fileSize))));
}
pub fn exportImageAsCode(image: Image, fileName: [:0]const u8) bool {
return cdef.ExportImageAsCode(image, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn genImageColor(width: i32, height: i32, color: Color) Image {
return cdef.GenImageColor(@as(c_int, width), @as(c_int, height), color);
}
pub fn genImageGradientLinear(width: i32, height: i32, direction: i32, start: Color, end: Color) Image {
return cdef.GenImageGradientLinear(@as(c_int, width), @as(c_int, height), @as(c_int, direction), start, end);
}
pub fn genImageGradientRadial(width: i32, height: i32, density: f32, inner: Color, outer: Color) Image {
return cdef.GenImageGradientRadial(@as(c_int, width), @as(c_int, height), density, inner, outer);
}
pub fn genImageGradientSquare(width: i32, height: i32, density: f32, inner: Color, outer: Color) Image {
return cdef.GenImageGradientSquare(@as(c_int, width), @as(c_int, height), density, inner, outer);
}
pub fn genImageChecked(width: i32, height: i32, checksX: i32, checksY: i32, col1: Color, col2: Color) Image {
return cdef.GenImageChecked(@as(c_int, width), @as(c_int, height), @as(c_int, checksX), @as(c_int, checksY), col1, col2);
}
pub fn genImageWhiteNoise(width: i32, height: i32, factor: f32) Image {
return cdef.GenImageWhiteNoise(@as(c_int, width), @as(c_int, height), factor);
}
pub fn genImagePerlinNoise(width: i32, height: i32, offsetX: i32, offsetY: i32, scale: f32) Image {
return cdef.GenImagePerlinNoise(@as(c_int, width), @as(c_int, height), @as(c_int, offsetX), @as(c_int, offsetY), scale);
}
pub fn genImageCellular(width: i32, height: i32, tileSize: i32) Image {
return cdef.GenImageCellular(@as(c_int, width), @as(c_int, height), @as(c_int, tileSize));
}
pub fn genImageText(width: i32, height: i32, text: [:0]const u8) Image {
return cdef.GenImageText(@as(c_int, width), @as(c_int, height), @as([*c]const u8, @ptrCast(text)));
}
pub fn imageCopy(image: Image) Image {
return cdef.ImageCopy(image);
}
pub fn imageFromImage(image: Image, rec: Rectangle) Image {
return cdef.ImageFromImage(image, rec);
}
pub fn imageText(text: [:0]const u8, fontSize: i32, color: Color) Image {
return cdef.ImageText(@as([*c]const u8, @ptrCast(text)), @as(c_int, fontSize), color);
}
pub fn imageTextEx(font: Font, text: [:0]const u8, fontSize: f32, spacing: f32, tint: Color) Image {
return cdef.ImageTextEx(font, @as([*c]const u8, @ptrCast(text)), fontSize, spacing, tint);
}
pub fn imageFormat(image: *Image, newFormat: i32) void {
cdef.ImageFormat(@as([*c]Image, @ptrCast(image)), @as(c_int, newFormat));
}
pub fn imageToPOT(image: *Image, fill: Color) void {
cdef.ImageToPOT(@as([*c]Image, @ptrCast(image)), fill);
}
pub fn imageCrop(image: *Image, crop: Rectangle) void {
cdef.ImageCrop(@as([*c]Image, @ptrCast(image)), crop);
}
pub fn imageAlphaCrop(image: *Image, threshold: f32) void {
cdef.ImageAlphaCrop(@as([*c]Image, @ptrCast(image)), threshold);
}
pub fn imageAlphaClear(image: *Image, color: Color, threshold: f32) void {
cdef.ImageAlphaClear(@as([*c]Image, @ptrCast(image)), color, threshold);
}
pub fn imageAlphaMask(image: *Image, alphaMask: Image) void {
cdef.ImageAlphaMask(@as([*c]Image, @ptrCast(image)), alphaMask);
}
pub fn imageAlphaPremultiply(image: *Image) void {
cdef.ImageAlphaPremultiply(@as([*c]Image, @ptrCast(image)));
}
pub fn imageBlurGaussian(image: *Image, blurSize: i32) void {
cdef.ImageBlurGaussian(@as([*c]Image, @ptrCast(image)), @as(c_int, blurSize));
}
pub fn imageKernelConvolution(image: *Image, kernel: []f32, kernelSize: i32) void {
cdef.ImageKernelConvolution(@as([*c]Image, @ptrCast(image)), @as([*c]f32, @ptrCast(kernel)), @as(c_int, kernelSize));
}
pub fn imageResize(image: *Image, newWidth: i32, newHeight: i32) void {
cdef.ImageResize(@as([*c]Image, @ptrCast(image)), @as(c_int, newWidth), @as(c_int, newHeight));
}
pub fn imageResizeNN(image: *Image, newWidth: i32, newHeight: i32) void {
cdef.ImageResizeNN(@as([*c]Image, @ptrCast(image)), @as(c_int, newWidth), @as(c_int, newHeight));
}
pub fn imageResizeCanvas(image: *Image, newWidth: i32, newHeight: i32, offsetX: i32, offsetY: i32, fill: Color) void {
cdef.ImageResizeCanvas(@as([*c]Image, @ptrCast(image)), @as(c_int, newWidth), @as(c_int, newHeight), @as(c_int, offsetX), @as(c_int, offsetY), fill);
}
pub fn imageMipmaps(image: *Image) void {
cdef.ImageMipmaps(@as([*c]Image, @ptrCast(image)));
}
pub fn imageDither(image: *Image, rBpp: i32, gBpp: i32, bBpp: i32, aBpp: i32) void {
cdef.ImageDither(@as([*c]Image, @ptrCast(image)), @as(c_int, rBpp), @as(c_int, gBpp), @as(c_int, bBpp), @as(c_int, aBpp));
}
pub fn imageFlipVertical(image: *Image) void {
cdef.ImageFlipVertical(@as([*c]Image, @ptrCast(image)));
}
pub fn imageFlipHorizontal(image: *Image) void {
cdef.ImageFlipHorizontal(@as([*c]Image, @ptrCast(image)));
}
pub fn imageRotate(image: *Image, degrees: i32) void {
cdef.ImageRotate(@as([*c]Image, @ptrCast(image)), @as(c_int, degrees));
}
pub fn imageRotateCW(image: *Image) void {
cdef.ImageRotateCW(@as([*c]Image, @ptrCast(image)));
}
pub fn imageRotateCCW(image: *Image) void {
cdef.ImageRotateCCW(@as([*c]Image, @ptrCast(image)));
}
pub fn imageColorTint(image: *Image, color: Color) void {
cdef.ImageColorTint(@as([*c]Image, @ptrCast(image)), color);
}
pub fn imageColorInvert(image: *Image) void {
cdef.ImageColorInvert(@as([*c]Image, @ptrCast(image)));
}
pub fn imageColorGrayscale(image: *Image) void {
cdef.ImageColorGrayscale(@as([*c]Image, @ptrCast(image)));
}
pub fn imageColorContrast(image: *Image, contrast: f32) void {
cdef.ImageColorContrast(@as([*c]Image, @ptrCast(image)), contrast);
}
pub fn imageColorBrightness(image: *Image, brightness: i32) void {
cdef.ImageColorBrightness(@as([*c]Image, @ptrCast(image)), @as(c_int, brightness));
}
pub fn imageColorReplace(image: *Image, color: Color, replace: Color) void {
cdef.ImageColorReplace(@as([*c]Image, @ptrCast(image)), color, replace);
}
pub fn unloadImageColors(colors: []Color) void {
cdef.UnloadImageColors(@as([*c]Color, @ptrCast(colors)));
}
pub fn unloadImagePalette(colors: []Color) void {
cdef.UnloadImagePalette(@as([*c]Color, @ptrCast(colors)));
}
pub fn getImageAlphaBorder(image: Image, threshold: f32) Rectangle {
return cdef.GetImageAlphaBorder(image, threshold);
}
pub fn getImageColor(image: Image, x: i32, y: i32) Color {
return cdef.GetImageColor(image, @as(c_int, x), @as(c_int, y));
}
pub fn imageClearBackground(dst: *Image, color: Color) void {
cdef.ImageClearBackground(@as([*c]Image, @ptrCast(dst)), color);
}
pub fn imageDrawPixel(dst: *Image, posX: i32, posY: i32, color: Color) void {
cdef.ImageDrawPixel(@as([*c]Image, @ptrCast(dst)), @as(c_int, posX), @as(c_int, posY), color);
}
pub fn imageDrawPixelV(dst: *Image, position: Vector2, color: Color) void {
cdef.ImageDrawPixelV(@as([*c]Image, @ptrCast(dst)), position, color);
}
pub fn imageDrawLine(dst: *Image, startPosX: i32, startPosY: i32, endPosX: i32, endPosY: i32, color: Color) void {
cdef.ImageDrawLine(@as([*c]Image, @ptrCast(dst)), @as(c_int, startPosX), @as(c_int, startPosY), @as(c_int, endPosX), @as(c_int, endPosY), color);
}
pub fn imageDrawLineV(dst: *Image, start: Vector2, end: Vector2, color: Color) void {
cdef.ImageDrawLineV(@as([*c]Image, @ptrCast(dst)), start, end, color);
}
pub fn imageDrawCircle(dst: *Image, centerX: i32, centerY: i32, radius: i32, color: Color) void {
cdef.ImageDrawCircle(@as([*c]Image, @ptrCast(dst)), @as(c_int, centerX), @as(c_int, centerY), @as(c_int, radius), color);
}
pub fn imageDrawCircleV(dst: *Image, center: Vector2, radius: i32, color: Color) void {
cdef.ImageDrawCircleV(@as([*c]Image, @ptrCast(dst)), center, @as(c_int, radius), color);
}
pub fn imageDrawCircleLines(dst: *Image, centerX: i32, centerY: i32, radius: i32, color: Color) void {
cdef.ImageDrawCircleLines(@as([*c]Image, @ptrCast(dst)), @as(c_int, centerX), @as(c_int, centerY), @as(c_int, radius), color);
}
pub fn imageDrawCircleLinesV(dst: *Image, center: Vector2, radius: i32, color: Color) void {
cdef.ImageDrawCircleLinesV(@as([*c]Image, @ptrCast(dst)), center, @as(c_int, radius), color);
}
pub fn imageDrawRectangle(dst: *Image, posX: i32, posY: i32, width: i32, height: i32, color: Color) void {
cdef.ImageDrawRectangle(@as([*c]Image, @ptrCast(dst)), @as(c_int, posX), @as(c_int, posY), @as(c_int, width), @as(c_int, height), color);
}
pub fn imageDrawRectangleV(dst: *Image, position: Vector2, size: Vector2, color: Color) void {
cdef.ImageDrawRectangleV(@as([*c]Image, @ptrCast(dst)), position, size, color);
}
pub fn imageDrawRectangleRec(dst: *Image, rec: Rectangle, color: Color) void {
cdef.ImageDrawRectangleRec(@as([*c]Image, @ptrCast(dst)), rec, color);
}
pub fn imageDrawRectangleLines(dst: *Image, rec: Rectangle, thick: i32, color: Color) void {
cdef.ImageDrawRectangleLines(@as([*c]Image, @ptrCast(dst)), rec, @as(c_int, thick), color);
}
pub fn imageDraw(dst: *Image, src: Image, srcRec: Rectangle, dstRec: Rectangle, tint: Color) void {
cdef.ImageDraw(@as([*c]Image, @ptrCast(dst)), src, srcRec, dstRec, tint);
}
pub fn imageDrawText(dst: *Image, text: [:0]const u8, posX: i32, posY: i32, fontSize: i32, color: Color) void {
cdef.ImageDrawText(@as([*c]Image, @ptrCast(dst)), @as([*c]const u8, @ptrCast(text)), @as(c_int, posX), @as(c_int, posY), @as(c_int, fontSize), color);
}
pub fn imageDrawTextEx(dst: *Image, font: Font, text: [:0]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void {
cdef.ImageDrawTextEx(@as([*c]Image, @ptrCast(dst)), font, @as([*c]const u8, @ptrCast(text)), position, fontSize, spacing, tint);
}
pub fn loadTexture(fileName: [:0]const u8) Texture2D {
return cdef.LoadTexture(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn loadTextureFromImage(image: Image) Texture2D {
return cdef.LoadTextureFromImage(image);
}
pub fn loadTextureCubemap(image: Image, layout: i32) TextureCubemap {
return cdef.LoadTextureCubemap(image, @as(c_int, layout));
}
pub fn loadRenderTexture(width: i32, height: i32) RenderTexture2D {
return cdef.LoadRenderTexture(@as(c_int, width), @as(c_int, height));
}
pub fn isTextureReady(texture: Texture2D) bool {
return cdef.IsTextureReady(texture);
}
pub fn unloadTexture(texture: Texture2D) void {
cdef.UnloadTexture(texture);
}
pub fn isRenderTextureReady(target: RenderTexture2D) bool {
return cdef.IsRenderTextureReady(target);
}
pub fn unloadRenderTexture(target: RenderTexture2D) void {
cdef.UnloadRenderTexture(target);
}
pub fn updateTexture(texture: Texture2D, pixels: *const anyopaque) void {
cdef.UpdateTexture(texture, pixels);
}
pub fn updateTextureRec(texture: Texture2D, rec: Rectangle, pixels: *const anyopaque) void {
cdef.UpdateTextureRec(texture, rec, pixels);
}
pub fn genTextureMipmaps(texture: *Texture2D) void {
cdef.GenTextureMipmaps(@as([*c]Texture2D, @ptrCast(texture)));
}
pub fn setTextureFilter(texture: Texture2D, filter: i32) void {
cdef.SetTextureFilter(texture, @as(c_int, filter));
}
pub fn setTextureWrap(texture: Texture2D, wrap: i32) void {
cdef.SetTextureWrap(texture, @as(c_int, wrap));
}
pub fn drawTexture(texture: Texture2D, posX: i32, posY: i32, tint: Color) void {
cdef.DrawTexture(texture, @as(c_int, posX), @as(c_int, posY), tint);
}
pub fn drawTextureV(texture: Texture2D, position: Vector2, tint: Color) void {
cdef.DrawTextureV(texture, position, tint);
}
pub fn drawTextureEx(texture: Texture2D, position: Vector2, rotation: f32, scale: f32, tint: Color) void {
cdef.DrawTextureEx(texture, position, rotation, scale, tint);
}
pub fn drawTextureRec(texture: Texture2D, source: Rectangle, position: Vector2, tint: Color) void {
cdef.DrawTextureRec(texture, source, position, tint);
}
pub fn drawTexturePro(texture: Texture2D, source: Rectangle, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void {
cdef.DrawTexturePro(texture, source, dest, origin, rotation, tint);
}
pub fn drawTextureNPatch(texture: Texture2D, nPatchInfo: NPatchInfo, dest: Rectangle, origin: Vector2, rotation: f32, tint: Color) void {
cdef.DrawTextureNPatch(texture, nPatchInfo, dest, origin, rotation, tint);
}
pub fn fade(color: Color, alpha: f32) Color {
return cdef.Fade(color, alpha);
}
pub fn colorToInt(color: Color) i32 {
return @as(i32, cdef.ColorToInt(color));
}
pub fn colorNormalize(color: Color) Vector4 {
return cdef.ColorNormalize(color);
}
pub fn colorFromNormalized(normalized: Vector4) Color {
return cdef.ColorFromNormalized(normalized);
}
pub fn colorToHSV(color: Color) Vector3 {
return cdef.ColorToHSV(color);
}
pub fn colorFromHSV(hue: f32, saturation: f32, value: f32) Color {
return cdef.ColorFromHSV(hue, saturation, value);
}
pub fn colorTint(color: Color, tint: Color) Color {
return cdef.ColorTint(color, tint);
}
pub fn colorBrightness(color: Color, factor: f32) Color {
return cdef.ColorBrightness(color, factor);
}
pub fn colorContrast(color: Color, contrast: f32) Color {
return cdef.ColorContrast(color, contrast);
}
pub fn colorAlpha(color: Color, alpha: f32) Color {
return cdef.ColorAlpha(color, alpha);
}
pub fn colorAlphaBlend(dst: Color, src: Color, tint: Color) Color {
return cdef.ColorAlphaBlend(dst, src, tint);
}
pub fn getColor(hexValue: u32) Color {
return cdef.GetColor(@as(c_uint, hexValue));
}
pub fn getPixelColor(srcPtr: *anyopaque, format: i32) Color {
return cdef.GetPixelColor(srcPtr, @as(c_int, format));
}
pub fn setPixelColor(dstPtr: *anyopaque, color: Color, format: i32) void {
cdef.SetPixelColor(dstPtr, color, @as(c_int, format));
}
pub fn getPixelDataSize(width: i32, height: i32, format: i32) i32 {
return @as(i32, cdef.GetPixelDataSize(@as(c_int, width), @as(c_int, height), @as(c_int, format)));
}
pub fn getFontDefault() Font {
return cdef.GetFontDefault();
}
pub fn loadFont(fileName: [:0]const u8) Font {
return cdef.LoadFont(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn loadFontFromImage(image: Image, key: Color, firstChar: i32) Font {
return cdef.LoadFontFromImage(image, key, @as(c_int, firstChar));
}
pub fn isFontReady(font: Font) bool {
return cdef.IsFontReady(font);
}
pub fn unloadFont(font: Font) void {
cdef.UnloadFont(font);
}
pub fn exportFontAsCode(font: Font, fileName: [:0]const u8) bool {
return cdef.ExportFontAsCode(font, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn drawFPS(posX: i32, posY: i32) void {
cdef.DrawFPS(@as(c_int, posX), @as(c_int, posY));
}
pub fn drawText(text: [:0]const u8, posX: i32, posY: i32, fontSize: i32, color: Color) void {
cdef.DrawText(@as([*c]const u8, @ptrCast(text)), @as(c_int, posX), @as(c_int, posY), @as(c_int, fontSize), color);
}
pub fn drawTextEx(font: Font, text: [:0]const u8, position: Vector2, fontSize: f32, spacing: f32, tint: Color) void {
cdef.DrawTextEx(font, @as([*c]const u8, @ptrCast(text)), position, fontSize, spacing, tint);
}
pub fn drawTextPro(font: Font, text: [:0]const u8, position: Vector2, origin: Vector2, rotation: f32, fontSize: f32, spacing: f32, tint: Color) void {
cdef.DrawTextPro(font, @as([*c]const u8, @ptrCast(text)), position, origin, rotation, fontSize, spacing, tint);
}
pub fn drawTextCodepoint(font: Font, codepoint: i32, position: Vector2, fontSize: f32, tint: Color) void {
cdef.DrawTextCodepoint(font, @as(c_int, codepoint), position, fontSize, tint);
}
pub fn setTextLineSpacing(spacing: i32) void {
cdef.SetTextLineSpacing(@as(c_int, spacing));
}
pub fn measureText(text: [:0]const u8, fontSize: i32) i32 {
return @as(i32, cdef.MeasureText(@as([*c]const u8, @ptrCast(text)), @as(c_int, fontSize)));
}
pub fn measureTextEx(font: Font, text: [:0]const u8, fontSize: f32, spacing: f32) Vector2 {
return cdef.MeasureTextEx(font, @as([*c]const u8, @ptrCast(text)), fontSize, spacing);
}
pub fn getGlyphIndex(font: Font, codepoint: i32) i32 {
return @as(i32, cdef.GetGlyphIndex(font, @as(c_int, codepoint)));
}
pub fn getGlyphInfo(font: Font, codepoint: i32) GlyphInfo {
return cdef.GetGlyphInfo(font, @as(c_int, codepoint));
}
pub fn getGlyphAtlasRec(font: Font, codepoint: i32) Rectangle {
return cdef.GetGlyphAtlasRec(font, @as(c_int, codepoint));
}
pub fn unloadUTF8(text: [:0]u8) void {
cdef.UnloadUTF8(@as([*c]u8, @ptrCast(text)));
}
pub fn unloadCodepoints(codepoints: []i32) void {
cdef.UnloadCodepoints(@as([*c]c_int, @ptrCast(codepoints)));
}
pub fn getCodepointCount(text: [:0]const u8) i32 {
return @as(i32, cdef.GetCodepointCount(@as([*c]const u8, @ptrCast(text))));
}
pub fn getCodepoint(text: [:0]const u8, codepointSize: *i32) i32 {
return @as(i32, cdef.GetCodepoint(@as([*c]const u8, @ptrCast(text)), @as([*c]c_int, @ptrCast(codepointSize))));
}
pub fn getCodepointNext(text: [:0]const u8, codepointSize: *i32) i32 {
return @as(i32, cdef.GetCodepointNext(@as([*c]const u8, @ptrCast(text)), @as([*c]c_int, @ptrCast(codepointSize))));
}
pub fn getCodepointPrevious(text: [:0]const u8, codepointSize: *i32) i32 {
return @as(i32, cdef.GetCodepointPrevious(@as([*c]const u8, @ptrCast(text)), @as([*c]c_int, @ptrCast(codepointSize))));
}
pub fn codepointToUTF8(codepoint: i32, utf8Size: *i32) [:0]const u8 {
return std.mem.span(cdef.CodepointToUTF8(@as(c_int, codepoint), @as([*c]c_int, @ptrCast(utf8Size))));
}
pub fn textCopy(dst: *u8, src: [:0]const u8) i32 {
return @as(i32, cdef.TextCopy(@as([*c]u8, @ptrCast(dst)), @as([*c]const u8, @ptrCast(src))));
}
pub fn textIsEqual(text1: [:0]const u8, text2: [:0]const u8) bool {
return cdef.TextIsEqual(@as([*c]const u8, @ptrCast(text1)), @as([*c]const u8, @ptrCast(text2)));
}
pub fn textLength(text: [:0]const u8) u32 {
return @as(u32, cdef.TextLength(@as([*c]const u8, @ptrCast(text))));
}
pub fn textSubtext(text: [:0]const u8, position: i32, length: i32) [:0]const u8 {
return std.mem.span(cdef.TextSubtext(@as([*c]const u8, @ptrCast(text)), @as(c_int, position), @as(c_int, length)));
}
pub fn textReplace(text: [:0]u8, replace: [:0]const u8, by: [:0]const u8) [:0]u8 {
return std.mem.span(cdef.TextReplace(@as([*c]u8, @ptrCast(text)), @as([*c]const u8, @ptrCast(replace)), @as([*c]const u8, @ptrCast(by))));
}
pub fn textInsert(text: [:0]const u8, insert: [:0]const u8, position: i32) [:0]u8 {
return std.mem.span(cdef.TextInsert(@as([*c]const u8, @ptrCast(text)), @as([*c]const u8, @ptrCast(insert)), @as(c_int, position)));
}
pub fn textAppend(text: [:0]u8, append: [:0]const u8, position: *i32) void {
cdef.TextAppend(@as([*c]u8, @ptrCast(text)), @as([*c]const u8, @ptrCast(append)), @as([*c]c_int, @ptrCast(position)));
}
pub fn textFindIndex(text: [:0]const u8, find: [:0]const u8) i32 {
return @as(i32, cdef.TextFindIndex(@as([*c]const u8, @ptrCast(text)), @as([*c]const u8, @ptrCast(find))));
}
pub fn textToUpper(text: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.TextToUpper(@as([*c]const u8, @ptrCast(text))));
}
pub fn textToLower(text: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.TextToLower(@as([*c]const u8, @ptrCast(text))));
}
pub fn textToPascal(text: [:0]const u8) [:0]const u8 {
return std.mem.span(cdef.TextToPascal(@as([*c]const u8, @ptrCast(text))));
}
pub fn textToInteger(text: [:0]const u8) i32 {
return @as(i32, cdef.TextToInteger(@as([*c]const u8, @ptrCast(text))));
}
pub fn textToFloat(text: [:0]const u8) f32 {
return cdef.TextToFloat(@as([*c]const u8, @ptrCast(text)));
}
pub fn drawLine3D(startPos: Vector3, endPos: Vector3, color: Color) void {
cdef.DrawLine3D(startPos, endPos, color);
}
pub fn drawPoint3D(position: Vector3, color: Color) void {
cdef.DrawPoint3D(position, color);
}
pub fn drawCircle3D(center: Vector3, radius: f32, rotationAxis: Vector3, rotationAngle: f32, color: Color) void {
cdef.DrawCircle3D(center, radius, rotationAxis, rotationAngle, color);
}
pub fn drawTriangle3D(v1: Vector3, v2: Vector3, v3: Vector3, color: Color) void {
cdef.DrawTriangle3D(v1, v2, v3, color);
}
pub fn drawCube(position: Vector3, width: f32, height: f32, length: f32, color: Color) void {
cdef.DrawCube(position, width, height, length, color);
}
pub fn drawCubeV(position: Vector3, size: Vector3, color: Color) void {
cdef.DrawCubeV(position, size, color);
}
pub fn drawCubeWires(position: Vector3, width: f32, height: f32, length: f32, color: Color) void {
cdef.DrawCubeWires(position, width, height, length, color);
}
pub fn drawCubeWiresV(position: Vector3, size: Vector3, color: Color) void {
cdef.DrawCubeWiresV(position, size, color);
}
pub fn drawSphere(centerPos: Vector3, radius: f32, color: Color) void {
cdef.DrawSphere(centerPos, radius, color);
}
pub fn drawSphereEx(centerPos: Vector3, radius: f32, rings: i32, slices: i32, color: Color) void {
cdef.DrawSphereEx(centerPos, radius, @as(c_int, rings), @as(c_int, slices), color);
}
pub fn drawSphereWires(centerPos: Vector3, radius: f32, rings: i32, slices: i32, color: Color) void {
cdef.DrawSphereWires(centerPos, radius, @as(c_int, rings), @as(c_int, slices), color);
}
pub fn drawCylinder(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: i32, color: Color) void {
cdef.DrawCylinder(position, radiusTop, radiusBottom, height, @as(c_int, slices), color);
}
pub fn drawCylinderEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: i32, color: Color) void {
cdef.DrawCylinderEx(startPos, endPos, startRadius, endRadius, @as(c_int, sides), color);
}
pub fn drawCylinderWires(position: Vector3, radiusTop: f32, radiusBottom: f32, height: f32, slices: i32, color: Color) void {
cdef.DrawCylinderWires(position, radiusTop, radiusBottom, height, @as(c_int, slices), color);
}
pub fn drawCylinderWiresEx(startPos: Vector3, endPos: Vector3, startRadius: f32, endRadius: f32, sides: i32, color: Color) void {
cdef.DrawCylinderWiresEx(startPos, endPos, startRadius, endRadius, @as(c_int, sides), color);
}
pub fn drawCapsule(startPos: Vector3, endPos: Vector3, radius: f32, slices: i32, rings: i32, color: Color) void {
cdef.DrawCapsule(startPos, endPos, radius, @as(c_int, slices), @as(c_int, rings), color);
}
pub fn drawCapsuleWires(startPos: Vector3, endPos: Vector3, radius: f32, slices: i32, rings: i32, color: Color) void {
cdef.DrawCapsuleWires(startPos, endPos, radius, @as(c_int, slices), @as(c_int, rings), color);
}
pub fn drawPlane(centerPos: Vector3, size: Vector2, color: Color) void {
cdef.DrawPlane(centerPos, size, color);
}
pub fn drawRay(ray: Ray, color: Color) void {
cdef.DrawRay(ray, color);
}
pub fn drawGrid(slices: i32, spacing: f32) void {
cdef.DrawGrid(@as(c_int, slices), spacing);
}
pub fn loadModel(fileName: [:0]const u8) Model {
return cdef.LoadModel(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn loadModelFromMesh(mesh: Mesh) Model {
return cdef.LoadModelFromMesh(mesh);
}
pub fn isModelReady(model: Model) bool {
return cdef.IsModelReady(model);
}
pub fn unloadModel(model: Model) void {
cdef.UnloadModel(model);
}
pub fn getModelBoundingBox(model: Model) BoundingBox {
return cdef.GetModelBoundingBox(model);
}
pub fn drawModel(model: Model, position: Vector3, scale: f32, tint: Color) void {
cdef.DrawModel(model, position, scale, tint);
}
pub fn drawModelEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void {
cdef.DrawModelEx(model, position, rotationAxis, rotationAngle, scale, tint);
}
pub fn drawModelWires(model: Model, position: Vector3, scale: f32, tint: Color) void {
cdef.DrawModelWires(model, position, scale, tint);
}
pub fn drawModelWiresEx(model: Model, position: Vector3, rotationAxis: Vector3, rotationAngle: f32, scale: Vector3, tint: Color) void {
cdef.DrawModelWiresEx(model, position, rotationAxis, rotationAngle, scale, tint);
}
pub fn drawBoundingBox(box: BoundingBox, color: Color) void {
cdef.DrawBoundingBox(box, color);
}
pub fn drawBillboard(camera: Camera, texture: Texture2D, position: Vector3, size: f32, tint: Color) void {
cdef.DrawBillboard(camera, texture, position, size, tint);
}
pub fn drawBillboardRec(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, size: Vector2, tint: Color) void {
cdef.DrawBillboardRec(camera, texture, source, position, size, tint);
}
pub fn drawBillboardPro(camera: Camera, texture: Texture2D, source: Rectangle, position: Vector3, up: Vector3, size: Vector2, origin: Vector2, rotation: f32, tint: Color) void {
cdef.DrawBillboardPro(camera, texture, source, position, up, size, origin, rotation, tint);
}
pub fn uploadMesh(mesh: *Mesh, dynamic: bool) void {
cdef.UploadMesh(@as([*c]Mesh, @ptrCast(mesh)), dynamic);
}
pub fn updateMeshBuffer(mesh: Mesh, index: i32, data: *const anyopaque, dataSize: i32, offset: i32) void {
cdef.UpdateMeshBuffer(mesh, @as(c_int, index), data, @as(c_int, dataSize), @as(c_int, offset));
}
pub fn unloadMesh(mesh: Mesh) void {
cdef.UnloadMesh(mesh);
}
pub fn drawMesh(mesh: Mesh, material: Material, transform: Matrix) void {
cdef.DrawMesh(mesh, material, transform);
}
pub fn getMeshBoundingBox(mesh: Mesh) BoundingBox {
return cdef.GetMeshBoundingBox(mesh);
}
pub fn genMeshTangents(mesh: *Mesh) void {
cdef.GenMeshTangents(@as([*c]Mesh, @ptrCast(mesh)));
}
pub fn exportMesh(mesh: Mesh, fileName: [:0]const u8) bool {
return cdef.ExportMesh(mesh, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn exportMeshAsCode(mesh: Mesh, fileName: [:0]const u8) bool {
return cdef.ExportMeshAsCode(mesh, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn genMeshPoly(sides: i32, radius: f32) Mesh {
return cdef.GenMeshPoly(@as(c_int, sides), radius);
}
pub fn genMeshPlane(width: f32, length: f32, resX: i32, resZ: i32) Mesh {
return cdef.GenMeshPlane(width, length, @as(c_int, resX), @as(c_int, resZ));
}
pub fn genMeshCube(width: f32, height: f32, length: f32) Mesh {
return cdef.GenMeshCube(width, height, length);
}
pub fn genMeshSphere(radius: f32, rings: i32, slices: i32) Mesh {
return cdef.GenMeshSphere(radius, @as(c_int, rings), @as(c_int, slices));
}
pub fn genMeshHemiSphere(radius: f32, rings: i32, slices: i32) Mesh {
return cdef.GenMeshHemiSphere(radius, @as(c_int, rings), @as(c_int, slices));
}
pub fn genMeshCylinder(radius: f32, height: f32, slices: i32) Mesh {
return cdef.GenMeshCylinder(radius, height, @as(c_int, slices));
}
pub fn genMeshCone(radius: f32, height: f32, slices: i32) Mesh {
return cdef.GenMeshCone(radius, height, @as(c_int, slices));
}
pub fn genMeshTorus(radius: f32, size: f32, radSeg: i32, sides: i32) Mesh {
return cdef.GenMeshTorus(radius, size, @as(c_int, radSeg), @as(c_int, sides));
}
pub fn genMeshKnot(radius: f32, size: f32, radSeg: i32, sides: i32) Mesh {
return cdef.GenMeshKnot(radius, size, @as(c_int, radSeg), @as(c_int, sides));
}
pub fn genMeshHeightmap(heightmap: Image, size: Vector3) Mesh {
return cdef.GenMeshHeightmap(heightmap, size);
}
pub fn genMeshCubicmap(cubicmap: Image, cubeSize: Vector3) Mesh {
return cdef.GenMeshCubicmap(cubicmap, cubeSize);
}
pub fn loadMaterialDefault() Material {
return cdef.LoadMaterialDefault();
}
pub fn isMaterialReady(material: Material) bool {
return cdef.IsMaterialReady(material);
}
pub fn unloadMaterial(material: Material) void {
cdef.UnloadMaterial(material);
}
pub fn setMaterialTexture(material: *Material, mapType: i32, texture: Texture2D) void {
cdef.SetMaterialTexture(@as([*c]Material, @ptrCast(material)), @as(c_int, mapType), texture);
}
pub fn setModelMeshMaterial(model: *Model, meshId: i32, materialId: i32) void {
cdef.SetModelMeshMaterial(@as([*c]Model, @ptrCast(model)), @as(c_int, meshId), @as(c_int, materialId));
}
pub fn updateModelAnimation(model: Model, anim: ModelAnimation, frame: i32) void {
cdef.UpdateModelAnimation(model, anim, @as(c_int, frame));
}
pub fn unloadModelAnimation(anim: ModelAnimation) void {
cdef.UnloadModelAnimation(anim);
}
pub fn isModelAnimationValid(model: Model, anim: ModelAnimation) bool {
return cdef.IsModelAnimationValid(model, anim);
}
pub fn checkCollisionSpheres(center1: Vector3, radius1: f32, center2: Vector3, radius2: f32) bool {
return cdef.CheckCollisionSpheres(center1, radius1, center2, radius2);
}
pub fn checkCollisionBoxes(box1: BoundingBox, box2: BoundingBox) bool {
return cdef.CheckCollisionBoxes(box1, box2);
}
pub fn checkCollisionBoxSphere(box: BoundingBox, center: Vector3, radius: f32) bool {
return cdef.CheckCollisionBoxSphere(box, center, radius);
}
pub fn getRayCollisionSphere(ray: Ray, center: Vector3, radius: f32) RayCollision {
return cdef.GetRayCollisionSphere(ray, center, radius);
}
pub fn getRayCollisionBox(ray: Ray, box: BoundingBox) RayCollision {
return cdef.GetRayCollisionBox(ray, box);
}
pub fn getRayCollisionMesh(ray: Ray, mesh: Mesh, transform: Matrix) RayCollision {
return cdef.GetRayCollisionMesh(ray, mesh, transform);
}
pub fn getRayCollisionTriangle(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3) RayCollision {
return cdef.GetRayCollisionTriangle(ray, p1, p2, p3);
}
pub fn getRayCollisionQuad(ray: Ray, p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3) RayCollision {
return cdef.GetRayCollisionQuad(ray, p1, p2, p3, p4);
}
pub fn initAudioDevice() void {
cdef.InitAudioDevice();
}
pub fn closeAudioDevice() void {
cdef.CloseAudioDevice();
}
pub fn isAudioDeviceReady() bool {
return cdef.IsAudioDeviceReady();
}
pub fn setMasterVolume(volume: f32) void {
cdef.SetMasterVolume(volume);
}
pub fn getMasterVolume() f32 {
return cdef.GetMasterVolume();
}
pub fn loadWave(fileName: [:0]const u8) Wave {
return cdef.LoadWave(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn isWaveReady(wave: Wave) bool {
return cdef.IsWaveReady(wave);
}
pub fn loadSound(fileName: [:0]const u8) Sound {
return cdef.LoadSound(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn loadSoundFromWave(wave: Wave) Sound {
return cdef.LoadSoundFromWave(wave);
}
pub fn loadSoundAlias(source: Sound) Sound {
return cdef.LoadSoundAlias(source);
}
pub fn isSoundReady(sound: Sound) bool {
return cdef.IsSoundReady(sound);
}
pub fn updateSound(sound: Sound, data: *const anyopaque, sampleCount: i32) void {
cdef.UpdateSound(sound, data, @as(c_int, sampleCount));
}
pub fn unloadWave(wave: Wave) void {
cdef.UnloadWave(wave);
}
pub fn unloadSound(sound: Sound) void {
cdef.UnloadSound(sound);
}
pub fn unloadSoundAlias(alias: Sound) void {
cdef.UnloadSoundAlias(alias);
}
pub fn exportWave(wave: Wave, fileName: [:0]const u8) bool {
return cdef.ExportWave(wave, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn exportWaveAsCode(wave: Wave, fileName: [:0]const u8) bool {
return cdef.ExportWaveAsCode(wave, @as([*c]const u8, @ptrCast(fileName)));
}
pub fn playSound(sound: Sound) void {
cdef.PlaySound(sound);
}
pub fn stopSound(sound: Sound) void {
cdef.StopSound(sound);
}
pub fn pauseSound(sound: Sound) void {
cdef.PauseSound(sound);
}
pub fn resumeSound(sound: Sound) void {
cdef.ResumeSound(sound);
}
pub fn isSoundPlaying(sound: Sound) bool {
return cdef.IsSoundPlaying(sound);
}
pub fn setSoundVolume(sound: Sound, volume: f32) void {
cdef.SetSoundVolume(sound, volume);
}
pub fn setSoundPitch(sound: Sound, pitch: f32) void {
cdef.SetSoundPitch(sound, pitch);
}
pub fn setSoundPan(sound: Sound, pan: f32) void {
cdef.SetSoundPan(sound, pan);
}
pub fn waveCopy(wave: Wave) Wave {
return cdef.WaveCopy(wave);
}
pub fn waveCrop(wave: *Wave, initSample: i32, finalSample: i32) void {
cdef.WaveCrop(@as([*c]Wave, @ptrCast(wave)), @as(c_int, initSample), @as(c_int, finalSample));
}
pub fn waveFormat(wave: *Wave, sampleRate: i32, sampleSize: i32, channels: i32) void {
cdef.WaveFormat(@as([*c]Wave, @ptrCast(wave)), @as(c_int, sampleRate), @as(c_int, sampleSize), @as(c_int, channels));
}
pub fn unloadWaveSamples(samples: []f32) void {
cdef.UnloadWaveSamples(@as([*c]f32, @ptrCast(samples)));
}
pub fn loadMusicStream(fileName: [:0]const u8) Music {
return cdef.LoadMusicStream(@as([*c]const u8, @ptrCast(fileName)));
}
pub fn isMusicReady(music: Music) bool {
return cdef.IsMusicReady(music);
}
pub fn unloadMusicStream(music: Music) void {
cdef.UnloadMusicStream(music);
}
pub fn playMusicStream(music: Music) void {
cdef.PlayMusicStream(music);
}
pub fn isMusicStreamPlaying(music: Music) bool {
return cdef.IsMusicStreamPlaying(music);
}
pub fn updateMusicStream(music: Music) void {
cdef.UpdateMusicStream(music);
}
pub fn stopMusicStream(music: Music) void {
cdef.StopMusicStream(music);
}
pub fn pauseMusicStream(music: Music) void {
cdef.PauseMusicStream(music);
}
pub fn resumeMusicStream(music: Music) void {
cdef.ResumeMusicStream(music);
}
pub fn seekMusicStream(music: Music, position: f32) void {
cdef.SeekMusicStream(music, position);
}
pub fn setMusicVolume(music: Music, volume: f32) void {
cdef.SetMusicVolume(music, volume);
}
pub fn setMusicPitch(music: Music, pitch: f32) void {
cdef.SetMusicPitch(music, pitch);
}
pub fn setMusicPan(music: Music, pan: f32) void {
cdef.SetMusicPan(music, pan);
}
pub fn getMusicTimeLength(music: Music) f32 {
return cdef.GetMusicTimeLength(music);
}
pub fn getMusicTimePlayed(music: Music) f32 {
return cdef.GetMusicTimePlayed(music);
}
pub fn loadAudioStream(sampleRate: u32, sampleSize: u32, channels: u32) AudioStream {
return cdef.LoadAudioStream(@as(c_uint, sampleRate), @as(c_uint, sampleSize), @as(c_uint, channels));
}
pub fn isAudioStreamReady(stream: AudioStream) bool {
return cdef.IsAudioStreamReady(stream);
}
pub fn unloadAudioStream(stream: AudioStream) void {
cdef.UnloadAudioStream(stream);
}
pub fn updateAudioStream(stream: AudioStream, data: *const anyopaque, frameCount: i32) void {
cdef.UpdateAudioStream(stream, data, @as(c_int, frameCount));
}
pub fn isAudioStreamProcessed(stream: AudioStream) bool {
return cdef.IsAudioStreamProcessed(stream);
}
pub fn playAudioStream(stream: AudioStream) void {
cdef.PlayAudioStream(stream);
}
pub fn pauseAudioStream(stream: AudioStream) void {
cdef.PauseAudioStream(stream);
}
pub fn resumeAudioStream(stream: AudioStream) void {
cdef.ResumeAudioStream(stream);
}
pub fn isAudioStreamPlaying(stream: AudioStream) bool {
return cdef.IsAudioStreamPlaying(stream);
}
pub fn stopAudioStream(stream: AudioStream) void {
cdef.StopAudioStream(stream);
}
pub fn setAudioStreamVolume(stream: AudioStream, volume: f32) void {
cdef.SetAudioStreamVolume(stream, volume);
}
pub fn setAudioStreamPitch(stream: AudioStream, pitch: f32) void {
cdef.SetAudioStreamPitch(stream, pitch);
}
pub fn setAudioStreamPan(stream: AudioStream, pan: f32) void {
cdef.SetAudioStreamPan(stream, pan);
}
pub fn setAudioStreamBufferSizeDefault(size: i32) void {
cdef.SetAudioStreamBufferSizeDefault(@as(c_int, size));
}
pub fn setAudioStreamCallback(stream: AudioStream, callback: AudioCallback) void {
cdef.SetAudioStreamCallback(stream, callback);
}
pub fn attachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void {
cdef.AttachAudioStreamProcessor(stream, processor);
}
pub fn detachAudioStreamProcessor(stream: AudioStream, processor: AudioCallback) void {
cdef.DetachAudioStreamProcessor(stream, processor);
}
pub fn attachAudioMixedProcessor(processor: AudioCallback) void {
cdef.AttachAudioMixedProcessor(processor);
}
pub fn detachAudioMixedProcessor(processor: AudioCallback) void {
cdef.DetachAudioMixedProcessor(processor);
}