summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--rfont.c3l/rfont.c3198
-rw-r--r--rgfw.c3l/rgfw.c31301
-rw-r--r--rsgl.c3l/rsgl.c3690
m---------uefi.c3l0
5 files changed, 1161 insertions, 1031 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..9bfd883
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "uefi.c3l"]
+ path = uefi.c3l
+ url = https://github.com/NotsoanoNimus/uefi.c3l/
diff --git a/rfont.c3l/rfont.c3 b/rfont.c3l/rfont.c3
index 3c7af6a..0743258 100644
--- a/rfont.c3l/rfont.c3
+++ b/rfont.c3l/rfont.c3
@@ -1,5 +1,4 @@
-/*
-*
+/**
* Copyright (C) 2026 andromeda
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@@ -7,8 +6,7 @@
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
-*
-*/
+**/
module rfont;
@@ -20,110 +18,138 @@ alias Surface = void*;
struct Render_data
{
- float* verts;
- float* tcoords;
- ushort* elements;
- Texture atlas;
- usz nverts;
- usz nelements;
+ float* verts;
+ float* tcoords;
+ ushort* elements;
+ Texture atlas;
+ usz nverts;
+ usz nelements;
}
-alias Renderer_proc_size = fn usz();
-alias Renderer_proc_initPtr = fn void(void*);
-alias Renderer_proc_create_atlas = fn Texture(void*, uint, uint);
-alias Renderer_proc_free_atlas = fn void(void*, Texture);
+alias Renderer_proc_size = fn usz();
+alias Renderer_proc_initPtr = fn void(void*);
+alias Renderer_proc_create_atlas = fn Texture(void*, uint, uint);
+alias Renderer_proc_free_atlas = fn void(void*, Texture);
alias Renderer_proc_bitmap_to_atlas = fn void(void*, Texture, uint, uint, uint, char*, float, float, float*, float*);
-alias Renderer_proc_render = fn void(void*, Render_data*);
+alias Renderer_proc_render = fn void(void*, Render_data*);
alias Renderer_proc_set_framebuffer = fn void(void*, uint, uint);
-alias Renderer_proc_set_color = fn void(void*, float, float, float, float);
-alias Renderer_proc_set_surface = fn void(void*, Surface);
-alias Renderer_proc_freePtr = fn void(void*);
+alias Renderer_proc_set_color = fn void(void*, float, float, float, float);
+alias Renderer_proc_set_surface = fn void(void*, Surface);
+alias Renderer_proc_freePtr = fn void(void*);
struct Renderer_proc
{
- Renderer_proc_size size;
- Renderer_proc_initPtr initPtr;
- Renderer_proc_create_atlas create_atlas;
- Renderer_proc_free_atlas free_atlas;
- Renderer_proc_bitmap_to_atlas bitmap_to_atlas;
- Renderer_proc_render render;
- Renderer_proc_set_framebuffer set_framebuffer;
- Renderer_proc_set_color set_color;
- Renderer_proc_set_surface set_surface;
- Renderer_proc_freePtr freePtr;
+ Renderer_proc_size size;
+ Renderer_proc_initPtr initPtr;
+ Renderer_proc_create_atlas create_atlas;
+ Renderer_proc_free_atlas free_atlas;
+ Renderer_proc_bitmap_to_atlas bitmap_to_atlas;
+ Renderer_proc_render render;
+ Renderer_proc_set_framebuffer set_framebuffer;
+ Renderer_proc_set_color set_color;
+ Renderer_proc_set_surface set_surface;
+ Renderer_proc_freePtr freePtr;
}
struct Renderer
{
- void* ctx;
- Renderer_proc proc;
+ void* ctx;
+ Renderer_proc proc;
}
struct Font
{
- Src* src;
- float fheight;
- float descent;
- float numOfLongHorMetrics;
- float space_adv;
- uint maxHeight;
- Glyph[MAX_GLYPHS] glyphs;
- usz glyph_len;
- Texture atlas;
- usz atlasWidth;
- usz atlasHeight;
- float atlasX;
- float atlasY;
- float[INIT_VERTS*3] verts;
- float[INIT_VERTS*2] tcoords;
- ushort[INIT_VERTS*6] elements;
+ Src* src;
+ float fheight;
+ float descent;
+ float numOfLongHorMetrics;
+ float space_adv;
+ uint maxHeight;
+ Glyph[MAX_GLYPHS] glyphs;
+ usz glyph_len;
+ Texture atlas;
+ usz atlasWidth;
+ usz atlasHeight;
+ float atlasX;
+ float atlasY;
+ float[INIT_VERTS * 3] verts;
+ float[INIT_VERTS * 2] tcoords;
+ ushort[INIT_VERTS * 6] elements;
}
struct Glyph
{
- uint codepoint;
- usz size;
- int x;
- int x2;
- int y;
- int y2;
- Font* font;
- int src;
- float w;
- float h;
- float x1;
- float y1;
- float advance;
+ uint codepoint;
+ usz size;
+ int x;
+ int x2;
+ int y;
+ int y2;
+ Font* font;
+ int src;
+ float w;
+ float h;
+ float x1;
+ float y1;
+ float advance;
}
alias Src = void;
alias Glyph_fallback_callback = fn Glyph(Renderer*, Font*, uint, usz);
-extern fn CChar* codepoint_to_utf8(uint) @cname("RFont_codepoint_to_utf8");
-extern fn Font* font_init(Renderer*, ZString, uint, usz, usz) @cname("RFont_font_init");
-extern fn Font* font_init_ptr(Renderer*, ZString, uint, usz, usz, Font*) @cname("RFont_font_init_ptr");
-extern fn Font* font_init_data(Renderer*, char*, uint, usz, usz) @cname("RFont_font_init_data");
-extern fn Font* font_init_data_ptr(Renderer*, char*, uint, usz, usz, Font*) @cname("RFont_font_init_data_ptr");
-extern fn void font_free(Renderer*, Font*) @cname("RFont_font_free");
-extern fn void font_free_ptr(Renderer*, Font*) @cname("RFont_font_free_ptr");
-extern fn Glyph_fallback_callback set_glyph_fallback_callback(Glyph_fallback_callback) @cname("RFont_set_glyph_fallback_callback");
-extern fn Glyph font_add_char(Renderer*, Font*, CChar, usz) @cname("RFont_font_add_char");
-extern fn Glyph font_add_codepoint(Renderer*, Font*, uint, usz) @cname("RFont_font_add_codepoint");
-extern fn Glyph font_add_codepoint_ex(Renderer*, Font*, uint, usz, char) @cname("RFont_font_add_codepoint_ex");
-extern fn void font_add_string(Renderer*, Font*, ZString, usz*, usz) @cname("RFont_font_add_string");
-extern fn void font_add_string_len(Renderer*, Font*, ZString, usz, usz*, usz) @cname("RFont_font_add_string_len");
-extern fn void text_area(Renderer*, Font*, ZString, uint, uint*, uint*) @cname("RFont_text_area");
-extern fn void text_area_spacing(Renderer*, Font*, ZString, float, uint, uint*, uint*) @cname("RFont_text_area_spacing");
-extern fn void text_area_len(Renderer*, Font*, ZString, usz, uint, usz, float, uint*, uint*) @cname("RFont_text_area_len");
-extern fn void draw_text(Renderer*, Font*, ZString, float, float, uint) @cname("RFont_draw_text");
-extern fn void draw_text_spacing(Renderer*, Font*, ZString, float, float, uint, float) @cname("RFont_draw_text_spacing");
-extern fn void draw_text_len(Renderer*, Font*, ZString, usz, float, float, uint, float) @cname("RFont_draw_text_len");
-extern fn usz renderer_size(Renderer*) @cname("RFont_renderer_size");
-extern fn Renderer* renderer_init(Renderer_proc) @cname("RFont_renderer_init");
-extern fn void renderer_initPtr(Renderer_proc, void*, Renderer*) @cname("RFont_renderer_initPtr");
-extern fn void renderer_set_framebuffer(Renderer*, uint, uint) @cname("RFont_renderer_set_framebuffer");
-extern fn void renderer_set_surface(Renderer*, Surface) @cname("RFont_renderer_set_surface");
-extern fn void renderer_set_color(Renderer*, float, float, float, float) @cname("RFont_renderer_set_color");
-extern fn void renderer_free(Renderer*) @cname("RFont_renderer_free");
-extern fn void renderer_freePtr(Renderer*) @cname("RFont_renderer_freePtr");
+extern fn CChar* codepoint_to_utf8(uint) @cname("RFont_codepoint_to_utf8");
+extern fn Font* font_init(Renderer*, ZString, uint, usz, usz) @cname("RFont_font_init");
+extern fn Font* font_init_ptr(Renderer*, ZString, uint, usz, usz, Font*) @cname("RFont_font_init_ptr");
+extern fn Font* font_init_data(Renderer*, char*, uint, usz, usz) @cname("RFont_font_init_data");
+extern fn Font* font_init_data_ptr(Renderer*, char*, uint, usz, usz, Font*) @cname("RFont_font_init_data_ptr");
+extern fn void font_free(Renderer*, Font*) @cname("RFont_font_free");
+extern fn void font_free_ptr(Renderer*, Font*) @cname("RFont_font_free_ptr");
+extern fn Glyph_fallback_callback set_glyph_fallback_callback(
+ Glyph_fallback_callback
+) @cname("RFont_set_glyph_fallback_callback");
+extern fn Glyph font_add_char(Renderer*, Font*, CChar, usz) @cname("RFont_font_add_char");
+extern fn Glyph font_add_codepoint(Renderer*, Font*, uint, usz) @cname("RFont_font_add_codepoint");
+extern fn Glyph font_add_codepoint_ex(Renderer*, Font*, uint, usz, char) @cname("RFont_font_add_codepoint_ex");
+extern fn void font_add_string(Renderer*, Font*, ZString, usz*, usz) @cname("RFont_font_add_string");
+extern fn void font_add_string_len(Renderer*, Font*, ZString, usz, usz*, usz) @cname("RFont_font_add_string_len");
+extern fn void text_area(Renderer*, Font*, ZString, uint, uint*, uint*) @cname("RFont_text_area");
+extern fn void text_area_spacing(
+ Renderer*,
+ Font*,
+ ZString,
+ float,
+ uint,
+ uint*,
+ uint*
+) @cname("RFont_text_area_spacing");
+extern fn void text_area_len(
+ Renderer*,
+ Font*,
+ ZString,
+ usz,
+ uint,
+ usz,
+ float,
+ uint*,
+ uint*
+) @cname("RFont_text_area_len");
+extern fn void draw_text(Renderer*, Font*, ZString, float, float, uint) @cname("RFont_draw_text");
+extern fn void draw_text_spacing(
+ Renderer*,
+ Font*,
+ ZString,
+ float,
+ float,
+ uint,
+ float
+) @cname("RFont_draw_text_spacing");
+extern fn void draw_text_len(Renderer*, Font*, ZString, usz, float, float, uint, float) @cname("RFont_draw_text_len");
+extern fn usz renderer_size(Renderer*) @cname("RFont_renderer_size");
+extern fn Renderer* renderer_init(Renderer_proc) @cname("RFont_renderer_init");
+extern fn void renderer_initPtr(Renderer_proc, void*, Renderer*) @cname("RFont_renderer_initPtr");
+extern fn void renderer_set_framebuffer(Renderer*, uint, uint) @cname("RFont_renderer_set_framebuffer");
+extern fn void renderer_set_surface(Renderer*, Surface) @cname("RFont_renderer_set_surface");
+extern fn void renderer_set_color(Renderer*, float, float, float, float) @cname("RFont_renderer_set_color");
+extern fn void renderer_free(Renderer*) @cname("RFont_renderer_free");
+extern fn void renderer_freePtr(Renderer*) @cname("RFont_renderer_freePtr"); \ No newline at end of file
diff --git a/rgfw.c3l/rgfw.c3 b/rgfw.c3l/rgfw.c3
index 171ea5b..bdbe771 100644
--- a/rgfw.c3l/rgfw.c3
+++ b/rgfw.c3l/rgfw.c3
@@ -1,5 +1,4 @@
-/*
-*
+/**
* Copyright (C) 2026 andromeda
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@@ -7,33 +6,32 @@
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
-*
-*/
+**/
module rgfw;
-alias Info = void;
-alias Window = void;
+alias Info = void;
+alias Window = void;
alias Window_src = void;
constdef Format : char
{
- RGB8 = 0,
- BGR8,
- RGBA8,
- ARGB8,
- BGRA8,
- ABGR8,
- COUNT,
+ RGB8 = 0,
+ BGR8,
+ RGBA8,
+ ARGB8,
+ BGRA8,
+ ABGR8,
+ COUNT,
}
struct ColorLayout
{
- int r;
- int g;
- int b;
- int a;
- uint channels;
+ int r;
+ int g;
+ int b;
+ int a;
+ uint channels;
}
alias ConvertImageDataFunc = fn void(char*, char*, ColorLayout*, ColorLayout*, usz);
@@ -43,790 +41,811 @@ alias Surface = void;
struct GammaRamp
{
- ushort* red;
- ushort* green;
- ushort* blue;
- usz count;
+ ushort* red;
+ ushort* green;
+ ushort* blue;
+ usz count;
}
struct MonitorMode
{
- int w;
- int h;
- float refreshRate;
- char red;
- char blue;
- char green;
- void* src;
+ int w;
+ int h;
+ float refreshRate;
+ char red;
+ char blue;
+ char green;
+ void* src;
}
alias MonitorNode = void;
struct Monitor
{
- int x;
- int y;
- CChar* name;
- float scaleX;
- float scaleY;
- float pixelRatio;
- float physW;
- float physH;
- MonitorMode mode;
- void* userPtr;
- MonitorNode* node;
+ int x;
+ int y;
+ CChar* name;
+ float scaleX;
+ float scaleY;
+ float pixelRatio;
+ float physW;
+ float physH;
+ MonitorMode mode;
+ void* userPtr;
+ MonitorNode* node;
}
constdef ModeRequest : char
{
- SCALE = 1 << 0,
- REFRESH = 1 << 1,
- RGB = 1 << 2,
- ALL = SCALE | REFRESH | RGB,
+ SCALE = 1 << 0,
+ REFRESH = 1 << 1,
+ RGB = 1 << 2,
+ ALL = SCALE | REFRESH | RGB,
}
alias Mouse = void;
constdef Key
{
- KEY_NULL = 0,
- KEY_ESCAPE = 27,
- KEY_BACKTICK = '`',
- KEY_0 = '0',
- KEY_1 = '1',
- KEY_2 = '2',
- KEY_3 = '3',
- KEY_4 = '4',
- KEY_5 = '5',
- KEY_6 = '6',
- KEY_7 = '7',
- KEY_8 = '8',
- KEY_9 = '9',
- KEY_MINUS = '-',
- KEY_EQUAL = '=',
- KEY_EQUALS = KEY_EQUAL,
- KEY_BACKSPACE = '\b',
- KEY_TAB = '\t',
- KEY_SPACE = ' ',
- KEY_A = 'a',
- KEY_B = 'b',
- KEY_C = 'c',
- KEY_D = 'd',
- KEY_E = 'e',
- KEY_F = 'f',
- KEY_G = 'g',
- KEY_H = 'h',
- KEY_I = 'i',
- KEY_J = 'j',
- KEY_K = 'k',
- KEY_L = 'l',
- KEY_M = 'm',
- KEY_N = 'n',
- KEY_O = 'o',
- KEY_P = 'p',
- KEY_Q = 'q',
- KEY_R = 'r',
- KEY_S = 's',
- KEY_T = 't',
- KEY_U = 'u',
- KEY_V = 'v',
- KEY_W = 'w',
- KEY_X = 'x',
- KEY_Y = 'y',
- KEY_Z = 'z',
- KEY_PERIOD = '.',
- KEY_COMMA = ',',
- KEY_SLASH = '/',
- KEY_BRACKET = '[',
- KEY_CLOSEBRACKET = ']',
- KEY_SEMICOLON = ';',
- KEY_APOSTROPHE = '\'',
- KEY_BACKSLASH = '\\',
- KEY_RETURN = '\n',
- KEY_ENTER = KEY_RETURN,
- KEY_DELETE = 127,
- KEY_F1,
- KEY_F2,
- KEY_F3,
- KEY_F4,
- KEY_F5,
- KEY_F6,
- KEY_F7,
- KEY_F8,
- KEY_F9,
- KEY_F10,
- KEY_F11,
- KEY_F12,
- KEY_F13,
- KEY_F14,
- KEY_F15,
- KEY_F16,
- KEY_F17,
- KEY_F18,
- KEY_F19,
- KEY_F20,
- KEY_F21,
- KEY_F22,
- KEY_F23,
- KEY_F24,
- KEY_F25,
- KEY_CAPSLOCK,
- KEY_SHIFTL,
- KEY_CONTROLL,
- KEY_ALTL,
- KEY_SUPERL,
- KEY_SHIFTR,
- KEY_CONTROLR,
- KEY_ALTR,
- KEY_SUPERR,
- KEY_UP,
- KEY_DOWN,
- KEY_LEFT,
- KEY_RIGHT,
- KEY_INSERT,
- KEY_MENU,
- KEY_END,
- KEY_HOME,
- KEY_PAGEUP,
- KEY_PAGEDOWN,
- KEY_NUMLOCK,
- KEY_PADSLASH,
- KEY_PADMULTIPLY,
- KEY_PADPLUS,
- KEY_PADMINUS,
- KEY_PADEQUAL,
- KEY_PADEQUALS = KEY_PADEQUAL,
- KEY_KEY_PAD1,
- KEY_PAD2,
- KEY_PAD3,
- KEY_PAD4,
- KEY_PAD5,
- KEY_PAD6,
- KEY_PAD7,
- KEY_PAD8,
- KEY_PAD9,
- KEY_PAD0,
- KEY_PADPERIOD,
- KEY_PADRETURN,
- KEY_SCROLLLOCK,
- KEY_PRINTSCREEN,
- KEY_PAUSE,
- KEY_WORLD1,
- KEY_WORLD2,
- KEY_LAST = 256,
+ KEY_NULL = 0,
+ KEY_ESCAPE = 27,
+ KEY_BACKTICK = '`',
+ KEY_0 = '0',
+ KEY_1 = '1',
+ KEY_2 = '2',
+ KEY_3 = '3',
+ KEY_4 = '4',
+ KEY_5 = '5',
+ KEY_6 = '6',
+ KEY_7 = '7',
+ KEY_8 = '8',
+ KEY_9 = '9',
+ KEY_MINUS = '-',
+ KEY_EQUAL = '=',
+ KEY_EQUALS = KEY_EQUAL,
+ KEY_BACKSPACE = '\b',
+ KEY_TAB = '\t',
+ KEY_SPACE = ' ',
+ KEY_A = 'a',
+ KEY_B = 'b',
+ KEY_C = 'c',
+ KEY_D = 'd',
+ KEY_E = 'e',
+ KEY_F = 'f',
+ KEY_G = 'g',
+ KEY_H = 'h',
+ KEY_I = 'i',
+ KEY_J = 'j',
+ KEY_K = 'k',
+ KEY_L = 'l',
+ KEY_M = 'm',
+ KEY_N = 'n',
+ KEY_O = 'o',
+ KEY_P = 'p',
+ KEY_Q = 'q',
+ KEY_R = 'r',
+ KEY_S = 's',
+ KEY_T = 't',
+ KEY_U = 'u',
+ KEY_V = 'v',
+ KEY_W = 'w',
+ KEY_X = 'x',
+ KEY_Y = 'y',
+ KEY_Z = 'z',
+ KEY_PERIOD = '.',
+ KEY_COMMA = ',',
+ KEY_SLASH = '/',
+ KEY_BRACKET = '[',
+ KEY_CLOSEBRACKET = ']',
+ KEY_SEMICOLON = ';',
+ KEY_APOSTROPHE = '\'',
+ KEY_BACKSLASH = '\\',
+ KEY_RETURN = '\n',
+ KEY_ENTER = KEY_RETURN,
+ KEY_DELETE = 127,
+ KEY_F1,
+ KEY_F2,
+ KEY_F3,
+ KEY_F4,
+ KEY_F5,
+ KEY_F6,
+ KEY_F7,
+ KEY_F8,
+ KEY_F9,
+ KEY_F10,
+ KEY_F11,
+ KEY_F12,
+ KEY_F13,
+ KEY_F14,
+ KEY_F15,
+ KEY_F16,
+ KEY_F17,
+ KEY_F18,
+ KEY_F19,
+ KEY_F20,
+ KEY_F21,
+ KEY_F22,
+ KEY_F23,
+ KEY_F24,
+ KEY_F25,
+ KEY_CAPSLOCK,
+ KEY_SHIFTL,
+ KEY_CONTROLL,
+ KEY_ALTL,
+ KEY_SUPERL,
+ KEY_SHIFTR,
+ KEY_CONTROLR,
+ KEY_ALTR,
+ KEY_SUPERR,
+ KEY_UP,
+ KEY_DOWN,
+ KEY_LEFT,
+ KEY_RIGHT,
+ KEY_INSERT,
+ KEY_MENU,
+ KEY_END,
+ KEY_HOME,
+ KEY_PAGEUP,
+ KEY_PAGEDOWN,
+ KEY_NUMLOCK,
+ KEY_PADSLASH,
+ KEY_PADMULTIPLY,
+ KEY_PADPLUS,
+ KEY_PADMINUS,
+ KEY_PADEQUAL,
+ KEY_PADEQUALS = KEY_PADEQUAL,
+ KEY_KEY_PAD1,
+ KEY_PAD2,
+ KEY_PAD3,
+ KEY_PAD4,
+ KEY_PAD5,
+ KEY_PAD6,
+ KEY_PAD7,
+ KEY_PAD8,
+ KEY_PAD9,
+ KEY_PAD0,
+ KEY_PADPERIOD,
+ KEY_PADRETURN,
+ KEY_SCROLLLOCK,
+ KEY_PRINTSCREEN,
+ KEY_PAUSE,
+ KEY_WORLD1,
+ KEY_WORLD2,
+ KEY_LAST = 256,
}
constdef MouseButton : char
{
- LEFT = 0,
- MIDDLE,
- RIGHT,
- MISC1,
- MISC2,
- MISC3,
- MISC4,
- MISC5,
- FINAL,
+ LEFT = 0,
+ MIDDLE,
+ RIGHT,
+ MISC1,
+ MISC2,
+ MISC3,
+ MISC4,
+ MISC5,
+ FINAL,
}
constdef Keymod : char
{
- CAPSLOCK = 1 << 0,
- NUMLOCK = 1 << 1,
- CONTROL = 1 << 2,
- ALT = 1 << 3,
- SHIFT = 1 << 4,
- SUPER = 1 << 5,
- SCROLLLOCK = 1 << 6,
+ CAPSLOCK = 1 << 0,
+ NUMLOCK = 1 << 1,
+ CONTROL = 1 << 2,
+ ALT = 1 << 3,
+ SHIFT = 1 << 4,
+ SUPER = 1 << 5,
+ SCROLLLOCK = 1 << 6,
}
constdef DndActionType : char
{
- ACTION_NONE = 0,
- ACTION_ENTER,
- ACTION_MOVE,
- ACTION_EXIT,
+ ACTION_NONE = 0,
+ ACTION_ENTER,
+ ACTION_MOVE,
+ ACTION_EXIT,
}
constdef DataTransferType : char
{
- NONE = 0,
- TEXT,
- FILE,
- URL,
- IMAGE,
- UNKNOWN,
+ NONE = 0,
+ TEXT,
+ FILE,
+ URL,
+ IMAGE,
+ UNKNOWN,
}
struct DataDropNode
{
- ZString data;
- usz size;
- DataTransferType type;
- DataDropNode* next;
+ ZString data;
+ usz size;
+ DataTransferType type;
+ DataDropNode* next;
}
constdef EventType : char
{
- EVENT_NONE = 0,
- KEY_PRESSED,
- KEY_RELEASED,
- KEY_CHAR,
- MOUSE_BUTTON_PRESSED,
- MOUSE_BUTTON_RELEASED,
- MOUSE_SCROLL,
- MOUSE_POS_CHANGED,
- MOUSE_RAW_MOTION,
- MOUSE_ENTER,
- MOUSE_LEAVE,
- WINDOW_MOVED,
- WINDOW_RESIZED,
- WINDOW_FOCUS_IN,
- WINDOW_FOCUS_OUT,
- WINDOW_REFRESH,
- WINDOW_CLOSE,
- WINDOW_MAXIMIZED,
- WINDOW_MINIMIZED,
- WINDOW_RESTORED,
- DATA_DROP,
- DATA_DRAG,
- SCALE_UPDATED,
- MONITOR_CONNECTED,
- MONITOR_DISCONNECTED,
- EVENT_COUNT,
+ EVENT_NONE = 0,
+ KEY_PRESSED,
+ KEY_RELEASED,
+ KEY_CHAR,
+ MOUSE_BUTTON_PRESSED,
+ MOUSE_BUTTON_RELEASED,
+ MOUSE_SCROLL,
+ MOUSE_POS_CHANGED,
+ MOUSE_RAW_MOTION,
+ MOUSE_ENTER,
+ MOUSE_LEAVE,
+ WINDOW_MOVED,
+ WINDOW_RESIZED,
+ WINDOW_FOCUS_IN,
+ WINDOW_FOCUS_OUT,
+ WINDOW_REFRESH,
+ WINDOW_CLOSE,
+ WINDOW_MAXIMIZED,
+ WINDOW_MINIMIZED,
+ WINDOW_RESTORED,
+ DATA_DROP,
+ DATA_DRAG,
+ SCALE_UPDATED,
+ MONITOR_CONNECTED,
+ MONITOR_DISCONNECTED,
+ EVENT_COUNT,
}
constdef EventFlag : uint
{
- KEY_PRESSED = 1 << (char)EventType.KEY_PRESSED,
- KEY_RELEASED = 1 << (char)EventType.KEY_RELEASED,
- KEY_CHAR = 1 << (char)EventType.KEY_CHAR,
- MOUSE_BUTTON_PRESSED = 1 << (char)EventType.MOUSE_BUTTON_PRESSED,
- MOUSE_BUTTON_RELEASED = 1 << (char)EventType.MOUSE_BUTTON_RELEASED,
- MOUSE_SCROLL = 1 << (char)EventType.MOUSE_SCROLL,
- MOUSE_POS_CHANGED = 1 << (char)EventType.MOUSE_POS_CHANGED,
- MOUSE_RAW_MOTION = 1 << (char)EventType.MOUSE_RAW_MOTION,
- MOUSE_ENTER = 1 << (char)EventType.MOUSE_ENTER,
- MOUSE_LEAVE = 1 << (char)EventType.MOUSE_LEAVE,
- WINDOW_MOVED = 1 << (char)EventType.WINDOW_MOVED,
- WINDOW_RESIZED = 1 << (char)EventType.WINDOW_RESIZED,
- WINDOW_FOCUS_IN = 1 << (char)EventType.WINDOW_FOCUS_IN,
- WINDOW_FOCUS_OUT = 1 << (char)EventType.WINDOW_FOCUS_OUT,
- WINDOW_REFRESH = 1 << (char)EventType.WINDOW_REFRESH,
- WINDOW_CLOSE = 1 << (char)EventType.WINDOW_CLOSE,
- WINDOW_MAXIMIZED = 1 << (char)EventType.WINDOW_MAXIMIZED,
- WINDOW_MINIMIZED = 1 << (char)EventType.WINDOW_MINIMIZED,
- WINDOW_RESTORED = 1 << (char)EventType.WINDOW_RESTORED,
- DATA_DROP = 1 << (char)EventType.DATA_DROP,
- DATA_DRAG = 1 << (char)EventType.DATA_DRAG,
- SCALE_UPDATED = 1 << (char)EventType.SCALE_UPDATED,
- MONITOR_CONNECTED = 1 << (char)EventType.MONITOR_CONNECTED,
- MONITOR_DISCONNECTED = 1 << (char)EventType.MONITOR_DISCONNECTED,
+ KEY_PRESSED = 1 << (char)EventType.KEY_PRESSED,
+ KEY_RELEASED = 1 << (char)EventType.KEY_RELEASED,
+ KEY_CHAR = 1 << (char)EventType.KEY_CHAR,
+ MOUSE_BUTTON_PRESSED = 1 << (char)EventType.MOUSE_BUTTON_PRESSED,
+ MOUSE_BUTTON_RELEASED = 1 << (char)EventType.MOUSE_BUTTON_RELEASED,
+ MOUSE_SCROLL = 1 << (char)EventType.MOUSE_SCROLL,
+ MOUSE_POS_CHANGED = 1 << (char)EventType.MOUSE_POS_CHANGED,
+ MOUSE_RAW_MOTION = 1 << (char)EventType.MOUSE_RAW_MOTION,
+ MOUSE_ENTER = 1 << (char)EventType.MOUSE_ENTER,
+ MOUSE_LEAVE = 1 << (char)EventType.MOUSE_LEAVE,
+ WINDOW_MOVED = 1 << (char)EventType.WINDOW_MOVED,
+ WINDOW_RESIZED = 1 << (char)EventType.WINDOW_RESIZED,
+ WINDOW_FOCUS_IN = 1 << (char)EventType.WINDOW_FOCUS_IN,
+ WINDOW_FOCUS_OUT = 1 << (char)EventType.WINDOW_FOCUS_OUT,
+ WINDOW_REFRESH = 1 << (char)EventType.WINDOW_REFRESH,
+ WINDOW_CLOSE = 1 << (char)EventType.WINDOW_CLOSE,
+ WINDOW_MAXIMIZED = 1 << (char)EventType.WINDOW_MAXIMIZED,
+ WINDOW_MINIMIZED = 1 << (char)EventType.WINDOW_MINIMIZED,
+ WINDOW_RESTORED = 1 << (char)EventType.WINDOW_RESTORED,
+ DATA_DROP = 1 << (char)EventType.DATA_DROP,
+ DATA_DRAG = 1 << (char)EventType.DATA_DRAG,
+ SCALE_UPDATED = 1 << (char)EventType.SCALE_UPDATED,
+ MONITOR_CONNECTED = 1 << (char)EventType.MONITOR_CONNECTED,
+ MONITOR_DISCONNECTED = 1 << (char)EventType.MONITOR_DISCONNECTED,
- KEY_EVENTS = KEY_PRESSED | KEY_RELEASED | KEY_CHAR,
- MOUSE_EVENTS = MOUSE_BUTTON_PRESSED | MOUSE_BUTTON_RELEASED | MOUSE_SCROLL | MOUSE_POS_CHANGED | MOUSE_RAW_MOTION | MOUSE_ENTER | MOUSE_LEAVE,
- WINDOW_EVENTS = WINDOW_MOVED | WINDOW_RESIZED | WINDOW_REFRESH | WINDOW_MAXIMIZED | WINDOW_MINIMIZED | WINDOW_RESTORED | SCALE_UPDATED,
- WINDOW_FOCUS_EVENTS = WINDOW_FOCUS_IN | WINDOW_FOCUS_OUT,
- DATA_DRAG_DROP_EVENTS = DATA_DRAG | DATA_DROP,
- MONITOR_EVENTS = MONITOR_CONNECTED | MONITOR_DISCONNECTED,
- ALL_EVENTS = KEY_EVENTS | MOUSE_EVENTS | WINDOW_EVENTS | WINDOW_FOCUS_EVENTS | DATA_DRAG_DROP_EVENTS | MONITOR_EVENTS,
+ KEY_EVENTS = KEY_PRESSED | KEY_RELEASED | KEY_CHAR,
+ MOUSE_EVENTS = MOUSE_BUTTON_PRESSED | MOUSE_BUTTON_RELEASED | MOUSE_SCROLL | MOUSE_POS_CHANGED
+ | MOUSE_RAW_MOTION
+ | MOUSE_ENTER
+ | MOUSE_LEAVE,
+ WINDOW_EVENTS = WINDOW_MOVED | WINDOW_RESIZED | WINDOW_REFRESH | WINDOW_MAXIMIZED | WINDOW_MINIMIZED
+ | WINDOW_RESTORED
+ | SCALE_UPDATED,
+ WINDOW_FOCUS_EVENTS = WINDOW_FOCUS_IN | WINDOW_FOCUS_OUT,
+ DATA_DRAG_DROP_EVENTS = DATA_DRAG | DATA_DROP,
+ MONITOR_EVENTS = MONITOR_CONNECTED | MONITOR_DISCONNECTED,
+ ALL_EVENTS = KEY_EVENTS | MOUSE_EVENTS | WINDOW_EVENTS | WINDOW_FOCUS_EVENTS | DATA_DRAG_DROP_EVENTS
+ | MONITOR_EVENTS,
}
struct CommonEvent
{
- EventType type;
- Window* win;
+ EventType type;
+ Window* win;
}
struct WindowFocusEvent
{
- EventType type;
- Window* win;
- bool state;
+ EventType type;
+ Window* win;
+ bool state;
}
struct MouseButtonEvent
{
- EventType type;
- Window* win;
- MouseButton value;
- bool state;
+ EventType type;
+ Window* win;
+ MouseButton value;
+ bool state;
}
struct MouseDeltaEvent
{
- EventType type;
- Window* win;
- float x;
- float y;
+ EventType type;
+ Window* win;
+ float x;
+ float y;
}
struct MousePosEvent
{
- EventType type;
- Window* win;
- int x;
- int y;
- bool inWindow;
+ EventType type;
+ Window* win;
+ int x;
+ int y;
+ bool inWindow;
}
struct KeyEvent
{
- EventType type;
- Window* win;
- Key value;
- bool repeat;
- Keymod mod;
- bool state;
+ EventType type;
+ Window* win;
+ Key value;
+ bool repeat;
+ Keymod mod;
+ bool state;
}
struct KeyCharEvent
{
- EventType type;
- Window* win;
- Char32 value;
+ EventType type;
+ Window* win;
+ Char32 value;
}
struct DataDropEvent
{
- EventType type;
- Window* win;
- DataDropNode* value;
+ EventType type;
+ Window* win;
+ DataDropNode* value;
}
struct DataDragEvent
{
- EventType type;
- Window* win;
- int x;
- int y;
- DndActionType action;
- DataTransferType dataType;
+ EventType type;
+ Window* win;
+ int x;
+ int y;
+ DndActionType action;
+ DataTransferType dataType;
}
struct ScaleUpdatedEvent
{
- EventType type;
- Window* win;
- float x;
- float y;
+ EventType type;
+ Window* win;
+ float x;
+ float y;
}
struct MonitorEvent
{
- EventType type;
- Window* win;
- Monitor* monitor;
- bool state;
+ EventType type;
+ Window* win;
+ Monitor* monitor;
+ bool state;
}
struct WindowUpdateEvent
{
- EventType type;
- Window* win;
- int x;
- int y;
- int w;
- int h;
+ EventType type;
+ Window* win;
+ int x;
+ int y;
+ int w;
+ int h;
}
union Event
{
- EventType type;
- CommonEvent common;
- WindowFocusEvent focus;
- WindowUpdateEvent update;
- MouseButtonEvent button;
- MouseDeltaEvent delta;
- MousePosEvent mouse;
- KeyEvent key;
- KeyCharEvent keyChar;
- DataDropEvent drop;
- DataDragEvent drag;
- ScaleUpdatedEvent scale;
- MonitorEvent monitor;
+ EventType type;
+ CommonEvent common;
+ WindowFocusEvent focus;
+ WindowUpdateEvent update;
+ MouseButtonEvent button;
+ MouseDeltaEvent delta;
+ MousePosEvent mouse;
+ KeyEvent key;
+ KeyCharEvent keyChar;
+ DataDropEvent drop;
+ DataDragEvent drag;
+ ScaleUpdatedEvent scale;
+ MonitorEvent monitor;
}
constdef EventWait : int
{
- NO_WAIT = 0,
- WAIT_NEXT = -1,
+ NO_WAIT = 0,
+ WAIT_NEXT = -1,
}
alias GenericFunc = fn void(Event*);
-struct Callbacks { GenericFunc* arr; }
+struct Callbacks
+{
+ GenericFunc* arr;
+}
constdef WindowFlags : uint
{
- NO_BORDER = 1 << 0,
- NO_RESIZE = 1 << 1,
- ALLOW_DND = 1 << 2,
- HIDE_MOUSE = 1 << 3,
- FULLSCREEN = 1 << 4,
- TRANSLUCENT = 1 << 5,
- TRANSPARENT = TRANSLUCENT,
- CENTER = 1 << 6,
- RAW_MOUSE = 1 << 7,
- SCALE_TO_MONITOR = 1 << 8,
- HIDE = 1 << 9,
- MAXIMIZE = 1 << 10,
- CENTER_CURSOR = 1 << 11,
- FLOATING = 1 << 12,
- FOCUS_ON_SHOW = 1 << 13,
- MINIMIZE = 1 << 14,
- FOCUS = 1 << 15,
- CAPTURE_MOUSE = 1 << 16,
- OPENGL = 1 << 17,
- EGL = 1 << 18,
- NO_DEINIT_ON_CLOSE = 1 << 19,
- WINDOWED_FULLSCREEN = NO_BORDER | MAXIMIZE,
- CAPTURE_RAW_MOUSE = CAPTURE_MOUSE | RAW_MOUSE,
+ NO_BORDER = 1 << 0,
+ NO_RESIZE = 1 << 1,
+ ALLOW_DND = 1 << 2,
+ HIDE_MOUSE = 1 << 3,
+ FULLSCREEN = 1 << 4,
+ TRANSLUCENT = 1 << 5,
+ TRANSPARENT = TRANSLUCENT,
+ CENTER = 1 << 6,
+ RAW_MOUSE = 1 << 7,
+ SCALE_TO_MONITOR = 1 << 8,
+ HIDE = 1 << 9,
+ MAXIMIZE = 1 << 10,
+ CENTER_CURSOR = 1 << 11,
+ FLOATING = 1 << 12,
+ FOCUS_ON_SHOW = 1 << 13,
+ MINIMIZE = 1 << 14,
+ FOCUS = 1 << 15,
+ CAPTURE_MOUSE = 1 << 16,
+ OPENGL = 1 << 17,
+ EGL = 1 << 18,
+ NO_DEINIT_ON_CLOSE = 1 << 19,
+ WINDOWED_FULLSCREEN = NO_BORDER | MAXIMIZE,
+ CAPTURE_RAW_MOUSE = CAPTURE_MOUSE | RAW_MOUSE,
}
constdef Icon : char
{
- TASKBAR = 1 << 0,
- WINDOW = 1 << 1,
- BOTH = TASKBAR | WINDOW,
+ TASKBAR = 1 << 0,
+ WINDOW = 1 << 1,
+ BOTH = TASKBAR | WINDOW,
}
constdef MouseIcon : char
{
- NORMAL = 0,
- ARROW,
- IBEAM,
- TEXT = IBEAM,
- CROSSHAIR,
- POINTING_HAND,
- RESIZE_EW,
- RESIZE_NS,
- RESIZE_NWSE,
- RESIZE_NESW,
- RESIZE_NW,
- RESIZE_N,
- RESIZE_NE,
- RESIZE_E,
- RESIZE_SE,
- RESIZE_S,
- RESIZE_SW,
- RESIZE_W,
- RESIZE_ALL,
- NOT_ALLOWED,
- WAIT,
- PROGRESS,
- ICON_COUNT,
- ICON_FINAL = 16, // padding
+ NORMAL = 0,
+ ARROW,
+ IBEAM,
+ TEXT = IBEAM,
+ CROSSHAIR,
+ POINTING_HAND,
+ RESIZE_EW,
+ RESIZE_NS,
+ RESIZE_NWSE,
+ RESIZE_NESW,
+ RESIZE_NW,
+ RESIZE_N,
+ RESIZE_NE,
+ RESIZE_E,
+ RESIZE_SE,
+ RESIZE_S,
+ RESIZE_SW,
+ RESIZE_W,
+ RESIZE_ALL,
+ NOT_ALLOWED,
+ WAIT,
+ PROGRESS,
+ ICON_COUNT,
+ ICON_FINAL = 16, // padding
}
constdef FlashRequest : char
{
- CANCEL = 0,
- BRIEFLY,
- UNTIL_FOCUSED,
+ CANCEL = 0,
+ BRIEFLY,
+ UNTIL_FOCUSED,
}
constdef DebugType : char
{
- ERROR = 0,
- WARNING,
- INFO,
+ ERROR = 0,
+ WARNING,
+ INFO,
}
constdef ErrorCode : char
{
- NO_ERROR = 0,
- ERR_OUT_OF_MEMORY,
- ERR_OPENGL_CONTEXT,
- ERR_EGL_CONTEXT,
- ERR_WAYLAND,
- ERR_X11,
- ERR_DIRECTX_CONTEXT,
- ERR_IOKIT,
- ERR_CLIPBOARD,
- ERR_FAILED_FUNC_LOAD,
- ERR_BUFFER,
- ERR_METAL,
- ERR_PLATFORM,
- ERR_EVENT_QUEUE,
- INFO_WINDOW,
- INFO_BUFFER,
- INFO_GLOBAL,
- INFO_OPENGL,
- WARNING_WAYLAND,
- WARNING_OPENGL,
+ NO_ERROR = 0,
+ ERR_OUT_OF_MEMORY,
+ ERR_OPENGL_CONTEXT,
+ ERR_EGL_CONTEXT,
+ ERR_WAYLAND,
+ ERR_X11,
+ ERR_DIRECTX_CONTEXT,
+ ERR_IOKIT,
+ ERR_CLIPBOARD,
+ ERR_FAILED_FUNC_LOAD,
+ ERR_BUFFER,
+ ERR_METAL,
+ ERR_PLATFORM,
+ ERR_EVENT_QUEUE,
+ INFO_WINDOW,
+ INFO_BUFFER,
+ INFO_GLOBAL,
+ INFO_OPENGL,
+ WARNING_WAYLAND,
+ WARNING_OPENGL,
}
struct DebugInfo
{
- DebugType type;
- ErrorCode code;
- ZString msg;
+ DebugType type;
+ ErrorCode code;
+ ZString msg;
}
-alias DebugFunc = fn void(DebugInfo*);
-alias Proc @if($feature(OPENGL)) = fn void();
-alias GlContext @if($feature(OPENGL)) = void;
+alias DebugFunc = fn void(DebugInfo*);
+alias Proc @if($feature(OPENGL)) = fn void();
+alias GlContext @if($feature(OPENGL)) = void;
alias EglContext @if($feature(EGL)) = void;
constdef GlReleaseBehavior : int @if($feature(OPENGL))
{
- FLUSH = 0,
- NONE,
+ FLUSH = 0,
+ NONE,
}
constdef GlProfile : int @if($feature(OPENGL))
{
- CORE = 0,
- FORWARD_COMPATIBILITY,
- COMPATIBILITY,
- ES,
+ CORE = 0,
+ FORWARD_COMPATIBILITY,
+ COMPATIBILITY,
+ ES,
}
constdef GlRenderer : int @if($feature(OPENGL))
{
- ACCELERATED = 0,
- SOFTWARE,
+ ACCELERATED = 0,
+ SOFTWARE,
}
struct GlHints @if($feature(OPENGL))
{
- int stencil;
- int samples;
- int stereo;
- int auxBuffers;
- int doubleBuffer;
- int red;
- int green;
- int blue;
- int alpha;
- int depth;
- int accumRed;
- int accumGreen;
- int accumBlue;
- int accumAlpha;
- bool sRGB;
- bool robustness;
- bool debug;
- bool noError;
- GlReleaseBehavior releaseBehavior;
- GlProfile profile;
- int major;
- int minor;
- GlContext* share;
- EglContext* shareEGL;
- GlRenderer renderer;
+ int stencil;
+ int samples;
+ int stereo;
+ int auxBuffers;
+ int doubleBuffer;
+ int red;
+ int green;
+ int blue;
+ int alpha;
+ int depth;
+ int accumRed;
+ int accumGreen;
+ int accumBlue;
+ int accumAlpha;
+ bool sRGB;
+ bool robustness;
+ bool debug;
+ bool noError;
+ GlReleaseBehavior releaseBehavior;
+ GlProfile profile;
+ int major;
+ int minor;
+ GlContext* share;
+ EglContext* shareEGL;
+ GlRenderer renderer;
}
-extern fn void* alloc(usz) @cname("RGFW_alloc");
-extern fn void free(void*) @cname("RGFW_free");
-extern fn usz sizeofWindow() @cname("RGFW_sizeofWindow");
-extern fn usz sizeofWindowSrc() @cname("RGFW_sizeofWindowSrc");
-extern fn void useWayland(bool) @cname("RGFW_useWayland");
-extern fn bool usingWayland() @cname("RGFW_usingWayland");
-extern fn void* getLayer_OSX() @cname("RGFW_getLayer_OSX");
-extern fn void* getDisplay_X11() @cname("RGFW_getDisplay_X11");
-extern fn void* getDisplay_Wayland() @cname("RGFW_getDisplay_Wayland"); // TODO return isn't void*
-extern fn void setClassName(ZString) @cname("RGFW_setClassName");
-extern fn void setXInstName(ZString) @cname("RGFW_setXInstName");
-extern fn void moveToMacOSResourceDir() @cname("RGFW_modeToMacOSResourceDir");
-extern fn void copyImageData(char*, int, int, Format, char*, Format, ConvertImageDataFunc) @cname("RGFW_copyImageData");
-extern fn usz sizeofNativeImage() @cname("RGFW_sizeofNativeImage");
-extern fn usz sizeofSurface() @cname("RGFW_sizeofSurface");
-extern fn Format nativeFormat() @cname("RGFW_nativeFormat");
-extern fn Surface* createSurface(char*, int, int, Format) @cname("RGFW_createSurface");
-extern fn bool createSurfacePtr(char*, int, int, Format, Surface*) @cname("RGFW_createSurfacePtr");
-extern fn NativeImage* surface_getNativeImage(Surface*) @cname("RGFW_surface_getNativeImage");
-extern fn void surface_free(Surface*) @cname("RGFW_surface_free");
-extern fn void surface_freePtr(Surface*) @cname("RGFW_surface_freePtr");
-extern fn Mouse* createMouse(char*, int, int, Format) @cname("RGFW_createMouse");
-extern fn Mouse* createMouseStandard(MouseIcon) @cname("RGFW_createMouseStandard");
-extern fn void freeMouse(Mouse*) @cname("RGFW_freeMouse");
-extern fn MonitorMode* monitor_getModes(Monitor*, usz*) @cname("RGFW_monitor_getModes");
-extern fn void freeModes(MonitorMode*) @cname("RGFW_freeModes");
-extern fn usz monitor_getModesPtr(Monitor*, MonitorMode**) @cname("RGFW_monitor_getModesPtr");
-extern fn bool monitor_findClosestMode(Monitor*, MonitorMode*, MonitorMode*) @cname("RGFW_monitor_findClosestMode");
-extern fn GammaRamp* monitor_getGammaRamp(Monitor*) @cname("RGFW_monitor_getGammaRamp");
-extern fn void freeGammaRamp(GammaRamp*) @cname("RGFW_freeGammaRamp");
-extern fn usz monitor_getGammaRampPtr(Monitor*, GammaRamp*) @cname("RGFW_monitor_getGammaRampPtr");
-extern fn bool monitor_setGammaRamp(Monitor*, GammaRamp*) @cname("RGFW_monitor_setGammaRamp");
-extern fn bool monitor_setGamma(Monitor*, float) @cname("RGFW_monitor_setGamma");
-extern fn bool monitor_setGammaPtr(Monitor*, float, ushort*, usz) @cname("RGFW_monitor_setGammaPtr");
-extern fn bool monitor_getWorkarea(Monitor*, int*, int*, int*, int*) @cname("RGFW_monitor_getWorkarea");
-extern fn bool monitor_getPosition(Monitor*, int*, int*) @cname("RGFW_monitor_getPosition");
-extern fn ZString monitor_getName(Monitor*) @cname("RGFW_monitor_getName");
-extern fn bool monitor_getScale(Monitor*, float*, float*) @cname("RGFW_monitor_getScale");
-extern fn bool monitor_getPhysicalSize(Monitor*, float*, float*) @cname("RGFW_monitor_getPhysicalSize");
-extern fn void monitor_setUserPtr(Monitor*, void*) @cname("RGFW_monitor_setUserPtr");
-extern fn void* monitor_getUserPtr(Monitor*) @cname("RGFW_monitor_getUserPtr");
-extern fn bool monitor_getMode(Monitor*, MonitorMode*) @cname("RGFW_monitor_getMode");
-extern fn void pollMonitors() @cname("RGFW_pollMonitors");
-extern fn Monitor** getMonitors(usz*) @cname("RGFW_getMonitors");
-extern fn Monitor* getPrimaryMonitor() @cname("RGFW_getPrimaryMonitor");
-extern fn bool monitor_requestMode(Monitor*, MonitorMode*, ModeRequest) @cname("RGFW_monitor_requestMode");
-extern fn bool monitor_setMode(Monitor*, MonitorMode*) @cname("RGFW_monitor_setMode");
-extern fn bool monitorModeCompare(MonitorMode*, MonitorMode*, ModeRequest) @cname("RGFW_monitorModeCompare");
-extern fn bool monitor_scaleToWindow(Monitor*, Window*) @cname("RGFW_monitor_scaleToWindow");
-extern fn void setRawMouseMode(bool) @cname("RGFW_setRawMouseMode");
-extern fn void setBuildDND(bool) @cname("RGFW_setbuildDND");
-extern fn void waitForEvent(int) @cname("RGFW_waitForEvent");
-extern fn void setQueueEvents(bool) @cname("RGFW_setQueueEvents");
-extern fn GenericFunc* setEventCallback(EventType, GenericFunc) @cname("RGFW_setEventCallback");
-extern fn void setDualEventCallback(EventType, GenericFunc, GenericFunc*, GenericFunc*) @cname("RGFW_setDualEventCallback");
-extern fn void setAllEventCallbacks(GenericFunc, Callbacks*) @cname("RGFW_setAllEventCallbacks");
-extern fn void pollEvents() @cname("RGFW_pollEvents");
-extern fn void stopCheckEvents() @cname("RGFW_stopCheckEvents");
-extern fn bool checkEvent(Event*) @cname("RGFW_checkEvent");
-extern fn bool checkQueuedEvent(Event*) @cname("RGFW_checkQueuedEvent");
-extern fn bool isKeyPressed(Key) @cname("RGFW_isKeyPressed");
-extern fn bool isKeyReleased(Key) @cname("RGFW_isKeyReleased");
-extern fn bool isKeyDown(Key) @cname("RGFW_isKeyDown");
-extern fn bool isMousePressed(MouseButton) @cname("RGFW_isMousePressed");
-extern fn bool isMouseReleased(MouseButton) @cname("RGFW_isMouseReleased");
-extern fn bool isMouseDown(MouseButton) @cname("RGFW_isMouseDown");
-extern fn void getMouseScroll(float*, float*) @cname("RGFW_getMouseScroll");
-extern fn void getMouseVector(float*, float*) @cname("RGFW_getMouseVector");
-extern fn Window* createWindow(ZString, int, int, int, int, WindowFlags) @cname("RGFW_createWindow");
-extern fn Window* createWindowPtr(ZString, int, int, int, int, WindowFlags, Window*) @cname("RGFW_createWindowPtr");
-extern fn Surface* window_createSurface(Window*, char*, int, int, Format) @cname("RGFW_window_createSurface");
-extern fn Surface* window_createSurfacePtr(Window*, char*, int, int, Format, Surface*) @cname("RGFW_window_createSurfacePtr");
-extern fn void surface_setConvertFunc(Surface*, ConvertImageDataFunc) @cname("RGFW_surface_setConvertFunc");
-extern fn void window_blitSurface(Window*, Surface*) @cname("RGFW_window_blitSurface");
-extern fn bool window_getPosition(Window*, int*, int*) @cname("RGFW_window_getPosition");
-extern fn bool window_getSize(Window*, int*, int*) @cname("RGFW_window_getSize");
-extern fn bool window_getSizeInPixels(Window*, int*, int*) @cname("RGFW_window_getSizeInPixels");
-extern fn uint window_getFlags(Window*) @cname("RGFW_window_getFlags");
-extern fn Key window_getExitKey(Window*) @cname("RGFW_window_getExitKey");
-extern fn void window_setExitKey(Window*, Key) @cname("RGFW_window_setExitKey");
-extern fn void window_setEnabledEvents(Window*, EventFlag) @cname("RGFW_window_setEnabledEvents");
-extern fn EventFlag window_getEnabledEvents(Window*) @cname("RGFW_window_getEnabledEvents");
-extern fn void window_setDisabledEvents(Window*, EventFlag) @cname("RGFW_window_setDisabledEvents");
-extern fn void window_setEventState(Window*, EventFlag, bool) @cname("RGFW_window_setEventState");
-extern fn void* window_getUserPtr(Window*) @cname("RGFW_window_getUserPtr");
-extern fn void window_setUserPtr(Window*, void*) @cname("RGFW_window_setUserPtr");
-extern fn Window_src* window_getSrc(Window*) @cname("RGFW_window_getSrc");
-extern fn void window_setLayer_OSX(Window*, void*) @cname("RGFW_window_setLayer_OSX");
-extern fn void* window_getView_OSX(Window*) @cname("RGFW_window_getView_OSX");
-extern fn void* window_getWindow_OSX(Window*) @cname("RGFW_window_getWindow_OSX");
-extern fn void* window_getHWND(Window*) @cname("RGFW_window_getHWND");
-extern fn void* window_getHDC(Window*) @cname("RGFW_window_getHDC");
-extern fn ulong window_getWindow_X11(Window*) @cname("RGFW_window_getWindow_X11");
-extern fn void* window_getWindow_Wayland(Window*) @cname("RGFW_window_getWindow_Wayland"); // TODO return isn't *void
-extern fn void window_setFlags(Window*, WindowFlags) @cname("RGFW_window_setFlags");
-extern fn bool window_checkEvent(Window*, Event*) @cname("RGFW_window_checkEvent");
-extern fn bool window_checkQueuedEvent(Window*, Event*) @cname("RGFW_window_checkQueuedEvent");
-extern fn bool window_isKeyPressed(Window*, Key) @cname("RGFW_window_isKeyPressed");
-extern fn bool window_isKeyDown(Window*, Key) @cname("RGFW_window_isKeyDown");
-extern fn bool window_isKeyReleased(Window*, Key) @cname("RGFW_window_isKeyReleased");
-extern fn bool window_isMousePressed(Window*, MouseButton) @cname("RGFW_window_isMousePressed");
-extern fn bool window_isMouseDown(Window*, MouseButton) @cname("RGFW_window_isMouseDown");
-extern fn bool window_isMouseReleased(Window*, MouseButton) @cname("RGFW_window_isMouseReleased");
-extern fn bool window_didMouseLeave(Window*) @cname("RGFW_window_didMouseLeave");
-extern fn bool window_didMouseEnter(Window*) @cname("RGFW_window_didMouseEnter");
-extern fn bool window_isMouseInside(Window*) @cname("RGFW_window_isMouseInside");
-extern fn bool window_isDataDragging(Window*) @cname("RGFW_window_isDataDragging");
-extern fn bool window_getDataDrag(Window*, int*, int*) @cname("RGFW_window_getDataDrag");
-extern fn bool window_didDataDrop(Window*) @cname("RGFW_window_didDataDrop");
-extern fn DataDropNode* window_getDataDrop(Window*) @cname("RGFW_window_getDataDrop");
-extern fn void window_close(Window*) @cname("RGFW_window_close");
-extern fn void window_closePtr(Window*) @cname("RGFW_window_closePtr");
-extern fn bool window_fetchSize(Window*, int*, int*) @cname("RGFW_window_fetchSize");
-extern fn void window_move(Window*, int, int) @cname("RGFW_window_move");
-extern fn void window_moveToMonitor(Window*, Monitor*) @cname("RGFW_window_moveToMonitor");
-extern fn void window_resize(Window*, int, int) @cname("RGFW_window_resize");
-extern fn void window_setAspectRatio(Window*, int, int) @cname("RGFW_window_setAspectRation");
-extern fn void window_setMinSize(Window*, int, int) @cname("RGFW_window_setMinSize");
-extern fn void window_setMaxSize(Window*, int, int) @cname("RGFW_window_setMaxSize");
-extern fn void window_focus(Window*) @cname("RGFW_window_focus");
-extern fn bool window_isInFocus(Window*) @cname("RGFW_window_isInFocus");
-extern fn void window_raise(Window*) @cname("RGFW_window_raise");
-extern fn void window_maximize(Window*) @cname("RGFW_window_maximize");
-extern fn void window_setFullscreen(Window*, bool) @cname("RGFW_window_setFullscreen");
-extern fn void window_center(Window*) @cname("RGFW_window_center");
-extern fn void window_minimize(Window*) @cname("RGFW_window_minimize");
-extern fn void window_restore(Window*) @cname("RGFW_window_restore");
-extern fn void window_setFloating(Window*, bool) @cname("RGFW_window_setFloating");
-extern fn void window_setOpacity(Window*, char) @cname("RGFW_window_setOpacity");
-extern fn void window_setBorder(Window*, bool) @cname("RGFW_window_setBorder");
-extern fn bool window_borderless(Window*) @cname("RGFW_window_borderless");
-extern fn void window_setDND(Window*, bool) @cname("RGFW_window_setDND");
-extern fn bool window_allowsDND(Window*) @cname("RGFW_window_allowsDND");
-extern fn void window_setMousePassthrough(Window*, bool) @cname("RGFW_window_setMousePassthrough");
-extern fn void window_setName(Window*, ZString) @cname("RGFW_window_setName");
-extern fn bool window_setIcon(Window*, char*, int, int, Format) @cname("RGFW_window_seticon");
-extern fn bool window_setIconEx(Window*, char*, int, int, Format, Icon) @cname("RGFW_window_setIconEx");
-extern fn bool window_setMouse(Window*, Mouse*) @cname("RGFW_window_setMouse");
-extern fn bool window_setMouseStandard(Window*, MouseIcon) @cname("RGFW_window_setMouseStandard");
-extern fn bool window_setMouseDefault(Window*) @cname("RGFW_window_setMouseDefault");
-extern fn void window_setRawMouseMode(Window*, bool) @cname("RGFW_window_setRawMousemode");
-extern fn void window_captureMouse(Window*, bool) @cname("RGFW_window_captureMouse");
-extern fn void window_captureRawMouse(Window*, bool) @cname("RGFW_window_captureRawMouse");
-extern fn bool window_isRawMouseMode(Window*) @cname("RGFW_window_isRawMouseMode");
-extern fn bool window_isCaptured(Window*) @cname("RGFW_window_isCaptured");
-extern fn void window_hide(Window*) @cname("RGFW_window_hide");
-extern fn void window_show(Window*) @cname("RGFW_window_show");
-extern fn void window_flash(Window*, FlashRequest) @cname("RGFW_window_flash");
-extern fn void window_setShouldClose(Window*, bool) @cname("RGFW_window_setShouldClose");
-extern fn bool window_getGlobalMouse(int*, int*) @cname("RGFW_window_getGlobalMouse");
-extern fn bool window_getMouse(Window*, int*, int*) @cname("RGFW_window_getMouse");
-extern fn void window_showMouse(Window*, bool) @cname("RGFW_window_showMouse");
-extern fn bool window_isMouseHidden(Window*) @cname("RGFW_window_isMouseHidden");
-extern fn void window_moveMouse(Window*, int, int) @cname("RGFW_window_moveMouse");
-extern fn bool window_shouldClose(Window*) @cname("RGFW_window_shouldClose");
-extern fn bool window_isFullscreen(Window*) @cname("RGFW_window_isFullscreen");
-extern fn bool window_isHidden(Window*) @cname("RGFW_window_isHidden");
-extern fn bool window_isMinimized(Window*) @cname("RGFW_window_isMinimized");
-extern fn bool window_isMaximized(Window*) @cname("RGFW_window_isMaximized");
-extern fn bool window_isFloating(Window*) @cname("RGFW_window_isFloating");
-extern fn void window_scaleToMonitor(Window*) @cname("RGFW_window_scaleToMonitor");
-extern fn Monitor* window_getMonitor(Window*) @cname("RGFW_window_getMonitor");
-extern fn ZString readClipboard(usz*) @cname("RGFW_readClipboard");
-extern fn sz readClipboardPtr(CChar*, usz) @cname("RGFW_readClipboardPtr");
-extern fn void writeClipboard(ZString, uint) @cname("RGFW_writeClipboard");
-extern fn DebugFunc setDebugCallback(DebugFunc) @cname("RGFW_setDebugCallback");
-extern fn void debugCallback(DebugType, ErrorCode, ZString) @cname("RGFW_debugCallback");
+extern fn void* alloc(usz) @cname("RGFW_alloc");
+extern fn void free(void*) @cname("RGFW_free");
+extern fn usz sizeofWindow() @cname("RGFW_sizeofWindow");
+extern fn usz sizeofWindowSrc() @cname("RGFW_sizeofWindowSrc");
+extern fn void useWayland(bool) @cname("RGFW_useWayland");
+extern fn bool usingWayland() @cname("RGFW_usingWayland");
+extern fn void* getLayer_OSX() @cname("RGFW_getLayer_OSX");
+extern fn void* getDisplay_X11() @cname("RGFW_getDisplay_X11");
+extern fn void* getDisplay_Wayland() @cname("RGFW_getDisplay_Wayland"); // TODO return isn't void*
+extern fn void setClassName(ZString) @cname("RGFW_setClassName");
+extern fn void setXInstName(ZString) @cname("RGFW_setXInstName");
+extern fn void moveToMacOSResourceDir() @cname("RGFW_modeToMacOSResourceDir");
+extern fn void copyImageData(char*, int, int, Format, char*, Format, ConvertImageDataFunc) @cname("RGFW_copyImageData");
+extern fn usz sizeofNativeImage() @cname("RGFW_sizeofNativeImage");
+extern fn usz sizeofSurface() @cname("RGFW_sizeofSurface");
+extern fn Format nativeFormat() @cname("RGFW_nativeFormat");
+extern fn Surface* createSurface(char*, int, int, Format) @cname("RGFW_createSurface");
+extern fn bool createSurfacePtr(char*, int, int, Format, Surface*) @cname("RGFW_createSurfacePtr");
+extern fn NativeImage* surface_getNativeImage(Surface*) @cname("RGFW_surface_getNativeImage");
+extern fn void surface_free(Surface*) @cname("RGFW_surface_free");
+extern fn void surface_freePtr(Surface*) @cname("RGFW_surface_freePtr");
+extern fn Mouse* createMouse(char*, int, int, Format) @cname("RGFW_createMouse");
+extern fn Mouse* createMouseStandard(MouseIcon) @cname("RGFW_createMouseStandard");
+extern fn void freeMouse(Mouse*) @cname("RGFW_freeMouse");
+extern fn MonitorMode* monitor_getModes(Monitor*, usz*) @cname("RGFW_monitor_getModes");
+extern fn void freeModes(MonitorMode*) @cname("RGFW_freeModes");
+extern fn usz monitor_getModesPtr(Monitor*, MonitorMode**) @cname("RGFW_monitor_getModesPtr");
+extern fn bool monitor_findClosestMode(Monitor*, MonitorMode*, MonitorMode*) @cname("RGFW_monitor_findClosestMode");
+extern fn GammaRamp* monitor_getGammaRamp(Monitor*) @cname("RGFW_monitor_getGammaRamp");
+extern fn void freeGammaRamp(GammaRamp*) @cname("RGFW_freeGammaRamp");
+extern fn usz monitor_getGammaRampPtr(Monitor*, GammaRamp*) @cname("RGFW_monitor_getGammaRampPtr");
+extern fn bool monitor_setGammaRamp(Monitor*, GammaRamp*) @cname("RGFW_monitor_setGammaRamp");
+extern fn bool monitor_setGamma(Monitor*, float) @cname("RGFW_monitor_setGamma");
+extern fn bool monitor_setGammaPtr(Monitor*, float, ushort*, usz) @cname("RGFW_monitor_setGammaPtr");
+extern fn bool monitor_getWorkarea(Monitor*, int*, int*, int*, int*) @cname("RGFW_monitor_getWorkarea");
+extern fn bool monitor_getPosition(Monitor*, int*, int*) @cname("RGFW_monitor_getPosition");
+extern fn ZString monitor_getName(Monitor*) @cname("RGFW_monitor_getName");
+extern fn bool monitor_getScale(Monitor*, float*, float*) @cname("RGFW_monitor_getScale");
+extern fn bool monitor_getPhysicalSize(Monitor*, float*, float*) @cname("RGFW_monitor_getPhysicalSize");
+extern fn void monitor_setUserPtr(Monitor*, void*) @cname("RGFW_monitor_setUserPtr");
+extern fn void* monitor_getUserPtr(Monitor*) @cname("RGFW_monitor_getUserPtr");
+extern fn bool monitor_getMode(Monitor*, MonitorMode*) @cname("RGFW_monitor_getMode");
+extern fn void pollMonitors() @cname("RGFW_pollMonitors");
+extern fn Monitor** getMonitors(usz*) @cname("RGFW_getMonitors");
+extern fn Monitor* getPrimaryMonitor() @cname("RGFW_getPrimaryMonitor");
+extern fn bool monitor_requestMode(Monitor*, MonitorMode*, ModeRequest) @cname("RGFW_monitor_requestMode");
+extern fn bool monitor_setMode(Monitor*, MonitorMode*) @cname("RGFW_monitor_setMode");
+extern fn bool monitorModeCompare(MonitorMode*, MonitorMode*, ModeRequest) @cname("RGFW_monitorModeCompare");
+extern fn bool monitor_scaleToWindow(Monitor*, Window*) @cname("RGFW_monitor_scaleToWindow");
+extern fn void setRawMouseMode(bool) @cname("RGFW_setRawMouseMode");
+extern fn void setBuildDND(bool) @cname("RGFW_setbuildDND");
+extern fn void waitForEvent(int) @cname("RGFW_waitForEvent");
+extern fn void setQueueEvents(bool) @cname("RGFW_setQueueEvents");
+extern fn GenericFunc* setEventCallback(EventType, GenericFunc) @cname("RGFW_setEventCallback");
+extern fn void setDualEventCallback(
+ EventType,
+ GenericFunc,
+ GenericFunc*,
+ GenericFunc*
+) @cname("RGFW_setDualEventCallback");
+extern fn void setAllEventCallbacks(GenericFunc, Callbacks*) @cname("RGFW_setAllEventCallbacks");
+extern fn void pollEvents() @cname("RGFW_pollEvents");
+extern fn void stopCheckEvents() @cname("RGFW_stopCheckEvents");
+extern fn bool checkEvent(Event*) @cname("RGFW_checkEvent");
+extern fn bool checkQueuedEvent(Event*) @cname("RGFW_checkQueuedEvent");
+extern fn bool isKeyPressed(Key) @cname("RGFW_isKeyPressed");
+extern fn bool isKeyReleased(Key) @cname("RGFW_isKeyReleased");
+extern fn bool isKeyDown(Key) @cname("RGFW_isKeyDown");
+extern fn bool isMousePressed(MouseButton) @cname("RGFW_isMousePressed");
+extern fn bool isMouseReleased(MouseButton) @cname("RGFW_isMouseReleased");
+extern fn bool isMouseDown(MouseButton) @cname("RGFW_isMouseDown");
+extern fn void getMouseScroll(float*, float*) @cname("RGFW_getMouseScroll");
+extern fn void getMouseVector(float*, float*) @cname("RGFW_getMouseVector");
+extern fn Window* createWindow(ZString, int, int, int, int, WindowFlags) @cname("RGFW_createWindow");
+extern fn Window* createWindowPtr(ZString, int, int, int, int, WindowFlags, Window*) @cname("RGFW_createWindowPtr");
+extern fn Surface* window_createSurface(Window*, char*, int, int, Format) @cname("RGFW_window_createSurface");
+extern fn Surface* window_createSurfacePtr(
+ Window*,
+ char*,
+ int,
+ int,
+ Format,
+ Surface*
+) @cname("RGFW_window_createSurfacePtr");
+extern fn void surface_setConvertFunc(Surface*, ConvertImageDataFunc) @cname("RGFW_surface_setConvertFunc");
+extern fn void window_blitSurface(Window*, Surface*) @cname("RGFW_window_blitSurface");
+extern fn bool window_getPosition(Window*, int*, int*) @cname("RGFW_window_getPosition");
+extern fn bool window_getSize(Window*, int*, int*) @cname("RGFW_window_getSize");
+extern fn bool window_getSizeInPixels(Window*, int*, int*) @cname("RGFW_window_getSizeInPixels");
+extern fn uint window_getFlags(Window*) @cname("RGFW_window_getFlags");
+extern fn Key window_getExitKey(Window*) @cname("RGFW_window_getExitKey");
+extern fn void window_setExitKey(Window*, Key) @cname("RGFW_window_setExitKey");
+extern fn void window_setEnabledEvents(Window*, EventFlag) @cname("RGFW_window_setEnabledEvents");
+extern fn EventFlag window_getEnabledEvents(Window*) @cname("RGFW_window_getEnabledEvents");
+extern fn void window_setDisabledEvents(Window*, EventFlag) @cname("RGFW_window_setDisabledEvents");
+extern fn void window_setEventState(Window*, EventFlag, bool) @cname("RGFW_window_setEventState");
+extern fn void* window_getUserPtr(Window*) @cname("RGFW_window_getUserPtr");
+extern fn void window_setUserPtr(Window*, void*) @cname("RGFW_window_setUserPtr");
+extern fn Window_src* window_getSrc(Window*) @cname("RGFW_window_getSrc");
+extern fn void window_setLayer_OSX(Window*, void*) @cname("RGFW_window_setLayer_OSX");
+extern fn void* window_getView_OSX(Window*) @cname("RGFW_window_getView_OSX");
+extern fn void* window_getWindow_OSX(Window*) @cname("RGFW_window_getWindow_OSX");
+extern fn void* window_getHWND(Window*) @cname("RGFW_window_getHWND");
+extern fn void* window_getHDC(Window*) @cname("RGFW_window_getHDC");
+extern fn ulong window_getWindow_X11(Window*) @cname("RGFW_window_getWindow_X11");
+extern fn void* window_getWindow_Wayland(Window*) @cname("RGFW_window_getWindow_Wayland"); // TODO return isn't *void
+extern fn void window_setFlags(Window*, WindowFlags) @cname("RGFW_window_setFlags");
+extern fn bool window_checkEvent(Window*, Event*) @cname("RGFW_window_checkEvent");
+extern fn bool window_checkQueuedEvent(Window*, Event*) @cname("RGFW_window_checkQueuedEvent");
+extern fn bool window_isKeyPressed(Window*, Key) @cname("RGFW_window_isKeyPressed");
+extern fn bool window_isKeyDown(Window*, Key) @cname("RGFW_window_isKeyDown");
+extern fn bool window_isKeyReleased(Window*, Key) @cname("RGFW_window_isKeyReleased");
+extern fn bool window_isMousePressed(Window*, MouseButton) @cname("RGFW_window_isMousePressed");
+extern fn bool window_isMouseDown(Window*, MouseButton) @cname("RGFW_window_isMouseDown");
+extern fn bool window_isMouseReleased(Window*, MouseButton) @cname("RGFW_window_isMouseReleased");
+extern fn bool window_didMouseLeave(Window*) @cname("RGFW_window_didMouseLeave");
+extern fn bool window_didMouseEnter(Window*) @cname("RGFW_window_didMouseEnter");
+extern fn bool window_isMouseInside(Window*) @cname("RGFW_window_isMouseInside");
+extern fn bool window_isDataDragging(Window*) @cname("RGFW_window_isDataDragging");
+extern fn bool window_getDataDrag(Window*, int*, int*) @cname("RGFW_window_getDataDrag");
+extern fn bool window_didDataDrop(Window*) @cname("RGFW_window_didDataDrop");
+extern fn DataDropNode* window_getDataDrop(Window*) @cname("RGFW_window_getDataDrop");
+extern fn void window_close(Window*) @cname("RGFW_window_close");
+extern fn void window_closePtr(Window*) @cname("RGFW_window_closePtr");
+extern fn bool window_fetchSize(Window*, int*, int*) @cname("RGFW_window_fetchSize");
+extern fn void window_move(Window*, int, int) @cname("RGFW_window_move");
+extern fn void window_moveToMonitor(Window*, Monitor*) @cname("RGFW_window_moveToMonitor");
+extern fn void window_resize(Window*, int, int) @cname("RGFW_window_resize");
+extern fn void window_setAspectRatio(Window*, int, int) @cname("RGFW_window_setAspectRation");
+extern fn void window_setMinSize(Window*, int, int) @cname("RGFW_window_setMinSize");
+extern fn void window_setMaxSize(Window*, int, int) @cname("RGFW_window_setMaxSize");
+extern fn void window_focus(Window*) @cname("RGFW_window_focus");
+extern fn bool window_isInFocus(Window*) @cname("RGFW_window_isInFocus");
+extern fn void window_raise(Window*) @cname("RGFW_window_raise");
+extern fn void window_maximize(Window*) @cname("RGFW_window_maximize");
+extern fn void window_setFullscreen(Window*, bool) @cname("RGFW_window_setFullscreen");
+extern fn void window_center(Window*) @cname("RGFW_window_center");
+extern fn void window_minimize(Window*) @cname("RGFW_window_minimize");
+extern fn void window_restore(Window*) @cname("RGFW_window_restore");
+extern fn void window_setFloating(Window*, bool) @cname("RGFW_window_setFloating");
+extern fn void window_setOpacity(Window*, char) @cname("RGFW_window_setOpacity");
+extern fn void window_setBorder(Window*, bool) @cname("RGFW_window_setBorder");
+extern fn bool window_borderless(Window*) @cname("RGFW_window_borderless");
+extern fn void window_setDND(Window*, bool) @cname("RGFW_window_setDND");
+extern fn bool window_allowsDND(Window*) @cname("RGFW_window_allowsDND");
+extern fn void window_setMousePassthrough(Window*, bool) @cname("RGFW_window_setMousePassthrough");
+extern fn void window_setName(Window*, ZString) @cname("RGFW_window_setName");
+extern fn bool window_setIcon(Window*, char*, int, int, Format) @cname("RGFW_window_seticon");
+extern fn bool window_setIconEx(Window*, char*, int, int, Format, Icon) @cname("RGFW_window_setIconEx");
+extern fn bool window_setMouse(Window*, Mouse*) @cname("RGFW_window_setMouse");
+extern fn bool window_setMouseStandard(Window*, MouseIcon) @cname("RGFW_window_setMouseStandard");
+extern fn bool window_setMouseDefault(Window*) @cname("RGFW_window_setMouseDefault");
+extern fn void window_setRawMouseMode(Window*, bool) @cname("RGFW_window_setRawMousemode");
+extern fn void window_captureMouse(Window*, bool) @cname("RGFW_window_captureMouse");
+extern fn void window_captureRawMouse(Window*, bool) @cname("RGFW_window_captureRawMouse");
+extern fn bool window_isRawMouseMode(Window*) @cname("RGFW_window_isRawMouseMode");
+extern fn bool window_isCaptured(Window*) @cname("RGFW_window_isCaptured");
+extern fn void window_hide(Window*) @cname("RGFW_window_hide");
+extern fn void window_show(Window*) @cname("RGFW_window_show");
+extern fn void window_flash(Window*, FlashRequest) @cname("RGFW_window_flash");
+extern fn void window_setShouldClose(Window*, bool) @cname("RGFW_window_setShouldClose");
+extern fn bool window_getGlobalMouse(int*, int*) @cname("RGFW_window_getGlobalMouse");
+extern fn bool window_getMouse(Window*, int*, int*) @cname("RGFW_window_getMouse");
+extern fn void window_showMouse(Window*, bool) @cname("RGFW_window_showMouse");
+extern fn bool window_isMouseHidden(Window*) @cname("RGFW_window_isMouseHidden");
+extern fn void window_moveMouse(Window*, int, int) @cname("RGFW_window_moveMouse");
+extern fn bool window_shouldClose(Window*) @cname("RGFW_window_shouldClose");
+extern fn bool window_isFullscreen(Window*) @cname("RGFW_window_isFullscreen");
+extern fn bool window_isHidden(Window*) @cname("RGFW_window_isHidden");
+extern fn bool window_isMinimized(Window*) @cname("RGFW_window_isMinimized");
+extern fn bool window_isMaximized(Window*) @cname("RGFW_window_isMaximized");
+extern fn bool window_isFloating(Window*) @cname("RGFW_window_isFloating");
+extern fn void window_scaleToMonitor(Window*) @cname("RGFW_window_scaleToMonitor");
+extern fn Monitor* window_getMonitor(Window*) @cname("RGFW_window_getMonitor");
+extern fn ZString readClipboard(usz*) @cname("RGFW_readClipboard");
+extern fn sz readClipboardPtr(CChar*, usz) @cname("RGFW_readClipboardPtr");
+extern fn void writeClipboard(ZString, uint) @cname("RGFW_writeClipboard");
+extern fn DebugFunc setDebugCallback(DebugFunc) @cname("RGFW_setDebugCallback");
+extern fn void debugCallback(DebugType, ErrorCode, ZString) @cname("RGFW_debugCallback");
module rgfw::opengl @if($feature(OPENGL));
-extern fn void setGlobalHints(GlHints*) @cname("RGFW_setGlobalHints_OpenGL");
-extern fn void resetGlobalHints() @cname("RGFW_resetGlobalHints_OpenGL");
-extern fn GlHints* getGlobalHints() @cname("RGFW_getGlobalHints_OpenGL");
-extern fn GlContext* window_createContext(Window*, GlHints*) @cname("RGFW_window_createContext_OpenGL");
-extern fn bool window_createContextPtr(Window*, GlContext*, GlHints*) @cname("RGFW_window_createContextPtr_OpenGL");
-extern fn GlContext* window_getContext(Window*) @cname("RGFW_window_getContext_OpenGL");
-extern fn void window_deleteContext(Window*, GlContext*) @cname("RGFW_window_deleteContext_OpenGL");
-extern fn void window_deleteContextPtr(Window*, GlContext*) @cname("RGFW_window_deleteContextPtr_OpenGL");
-extern fn void* glContext_getSourceContext(GlContext*) @cname("RGFW_glContext_getSourceContext");
-extern fn void window_makeCurrentWindow(Window*) @cname("RGFW_window_makeCurrentWindow_OpenGL");
-extern fn void window_makeCurrentContext(Window*) @cname("RGFW_window_makeCurrentContext_OpenGL");
-extern fn void window_swapBuffers(Window*) @cname("RGFW_window_swapBuffers_OpenGL");
-extern fn void* getCurrentContext() @cname("RGFW_getCurrentContext_OpenGL");
-extern fn Window* getCurrentWindow() @cname("RGFW_getCurrentWindow_OpenGL");
-extern fn void window_swapInterval(Window*, int) @cname("RGFW_window_swapInterval_OpenGL");
-extern fn Proc getProcAddress(ZString) @cname("RGFW_getProcAddress_OpenGL");
-extern fn bool extensionSupported(ZString, usz) @cname("RGFW_extensionSupported_OpenGL");
-extern fn bool extensionSupportedPlatform(ZString, usz) @cname("RGFW_extensionSupportedPlatform_OpenGL");
+extern fn void setGlobalHints(GlHints*) @cname("RGFW_setGlobalHints_OpenGL");
+extern fn void resetGlobalHints() @cname("RGFW_resetGlobalHints_OpenGL");
+extern fn GlHints* getGlobalHints() @cname("RGFW_getGlobalHints_OpenGL");
+extern fn GlContext* window_createContext(Window*, GlHints*) @cname("RGFW_window_createContext_OpenGL");
+extern fn bool window_createContextPtr(Window*, GlContext*, GlHints*) @cname("RGFW_window_createContextPtr_OpenGL");
+extern fn GlContext* window_getContext(Window*) @cname("RGFW_window_getContext_OpenGL");
+extern fn void window_deleteContext(Window*, GlContext*) @cname("RGFW_window_deleteContext_OpenGL");
+extern fn void window_deleteContextPtr(Window*, GlContext*) @cname("RGFW_window_deleteContextPtr_OpenGL");
+extern fn void* glContext_getSourceContext(GlContext*) @cname("RGFW_glContext_getSourceContext");
+extern fn void window_makeCurrentWindow(Window*) @cname("RGFW_window_makeCurrentWindow_OpenGL");
+extern fn void window_makeCurrentContext(Window*) @cname("RGFW_window_makeCurrentContext_OpenGL");
+extern fn void window_swapBuffers(Window*) @cname("RGFW_window_swapBuffers_OpenGL");
+extern fn void* getCurrentContext() @cname("RGFW_getCurrentContext_OpenGL");
+extern fn Window* getCurrentWindow() @cname("RGFW_getCurrentWindow_OpenGL");
+extern fn void window_swapInterval(Window*, int) @cname("RGFW_window_swapInterval_OpenGL");
+extern fn Proc getProcAddress(ZString) @cname("RGFW_getProcAddress_OpenGL");
+extern fn bool extensionSupported(ZString, usz) @cname("RGFW_extensionSupported_OpenGL");
+extern fn bool extensionSupportedPlatform(ZString, usz) @cname("RGFW_extensionSupportedPlatform_OpenGL");
// RGFW_EGL
module rgfw::egl @if($feature(EGL));
-extern fn EglContext* window_createContext(Window*, GlHints*) @cname("RGFW_window_createContext_EGL");
-extern fn bool window_createContextPtr(Window*, EglContext*, GlHints*) @cname("RGFW_window_createContextPtr_EGL");
-extern fn void window_deleteContext(Window*, EglContext*) @cname("RGFW_window_deleteContext_EGL");
-extern fn void window_deleteContextPtr(Window*, EglContext*) @cname("RGFW_window_deleteContextPtr_EGL");
-extern fn EglContext* window_getContext(Window*) @cname("RGFW_window_getContext_EGL");
-extern fn void* getDisplay() @cname("RGFW_getDisplay_EGL");
-extern fn void* eglContext_getSourceContext(EglContext*) @cname("RGFW_eglContext_getSourceContext");
-extern fn void* eglContext_getSurface(EglContext*) @cname("RGFW_eglContext_getSurface");
-extern fn void* eglContext_wlEglWindow(EglContext*) @cname("RGFW_eglContext_wlEGLWindow");
-extern fn void window_swapBuffers(Window*) @cname("RGFW_window_swapBuffers_EGL");
-extern fn void window_makeCurrentWindow(Window*) @cname("RGFW_window_makeCurrentWindow_EGL");
-extern fn void window_makeCurrentContext(Window*) @cname("RGFW_window_makeCurrentContext_EGL");
-extern fn void* getCurrentContext() @cname("RGFW_getCurrentContext_EGL");
-extern fn Window* getCurrentWindow() @cname("RGFW_getCurrentWindow_EGL");
-extern fn void window_swapInterval(Window*, int) @cname("RGFW_window_swapInterval_EGL");
-extern fn Proc* getProcAddress(ZString) @cname("RGFW_getProcAddress_EGL");
-extern fn bool extensionSupported(ZString, usz) @cname("RGFW_extensionSupported_EGL");
-extern fn bool extensionSupportedPlatform(ZString, usz) @cname("RGFW_extensionSupportedPlatform_EGL");
+extern fn EglContext* window_createContext(Window*, GlHints*) @cname("RGFW_window_createContext_EGL");
+extern fn bool window_createContextPtr(Window*, EglContext*, GlHints*) @cname("RGFW_window_createContextPtr_EGL");
+extern fn void window_deleteContext(Window*, EglContext*) @cname("RGFW_window_deleteContext_EGL");
+extern fn void window_deleteContextPtr(Window*, EglContext*) @cname("RGFW_window_deleteContextPtr_EGL");
+extern fn EglContext* window_getContext(Window*) @cname("RGFW_window_getContext_EGL");
+extern fn void* getDisplay() @cname("RGFW_getDisplay_EGL");
+extern fn void* eglContext_getSourceContext(EglContext*) @cname("RGFW_eglContext_getSourceContext");
+extern fn void* eglContext_getSurface(EglContext*) @cname("RGFW_eglContext_getSurface");
+extern fn void* eglContext_wlEglWindow(EglContext*) @cname("RGFW_eglContext_wlEGLWindow");
+extern fn void window_swapBuffers(Window*) @cname("RGFW_window_swapBuffers_EGL");
+extern fn void window_makeCurrentWindow(Window*) @cname("RGFW_window_makeCurrentWindow_EGL");
+extern fn void window_makeCurrentContext(Window*) @cname("RGFW_window_makeCurrentContext_EGL");
+extern fn void* getCurrentContext() @cname("RGFW_getCurrentContext_EGL");
+extern fn Window* getCurrentWindow() @cname("RGFW_getCurrentWindow_EGL");
+extern fn void window_swapInterval(Window*, int) @cname("RGFW_window_swapInterval_EGL");
+extern fn Proc* getProcAddress(ZString) @cname("RGFW_getProcAddress_EGL");
+extern fn bool extensionSupported(ZString, usz) @cname("RGFW_extensionSupported_EGL");
+extern fn bool extensionSupportedPlatform(ZString, usz) @cname("RGFW_extensionSupportedPlatform_EGL");
// RGFW_VULKAN 2599..2626
// RGFW_DIRECTX 2630..2649
-// RGFW_WEBGPU 2652..2661
+// RGFW_WEBGPU 2652..2661 \ No newline at end of file
diff --git a/rsgl.c3l/rsgl.c3 b/rsgl.c3l/rsgl.c3
index db292e0..dc770b2 100644
--- a/rsgl.c3l/rsgl.c3
+++ b/rsgl.c3l/rsgl.c3
@@ -1,5 +1,4 @@
-/*
-*
+/**
* Copyright (C) 2026 andromeda
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@@ -7,439 +6,522 @@
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
-*
-*/
+**/
module rsgl;
-macro @rect(#x,#y,#w,#h) {return (Rect){#x,#y,#w,#h};}
-macro @cube(#x,#y,#z,#w,#l,#h) {return (Cube){#x,#y,#z,#w,#l,#h};}
-macro @vec2D(#x,#y) {return (Vec2D){#x,#y};}
-macro @vec3D(#x,#y,#z) {return (Vec3D){#x,#y,#z};}
-macro @triangle(#p1,#p2,#p3) {return (Vec3D[3]){#p1,#p2,#p3};}
-macro @createTriangle(#p1x,#p1y,#p1z,#p2x,#p2y,#p2z,#p3x,#p3y,#p3z) {return @triangle(@vec3D(#p1x,#p1y,#p1z),@vec3D(#p2x,#p2y,#p2z),@vec3D(#p3x,#p3y,#p3z));}
-macro @rgba(#r,#g,#b,#a) {return (Color){#a,#b,#g,#r};}
-macro @rgb(#r,#g,#b) {return (Color){255,#b,#g,#r};}
-macro @colorToHex(#color) {return (uint)#color & 0xFFFFFF00;}
-macro @rgbToHex(#r,#g,#b) {return @colorToHex(@rgb(#r,#g,#b));}
-macro @rgbaToHex(#r,#g,#b,#a) {return @colorToHex(@rgba(#r,#g,#b,#a));}
+macro @rect(#x, #y, #w, #h)
+{
+ return (Rect) { #x, #y, #w, #h };
+}
+macro @cube(#x, #y, #z, #w, #l, #h)
+{
+ return (Cube) { #x, #y, #z, #w, #l, #h };
+}
+macro @vec2D(#x, #y)
+{
+ return (Vec2D) { #x, #y };
+}
+macro @vec3D(#x, #y, #z)
+{
+ return (Vec3D) { #x, #y, #z };
+}
+macro @triangle(#p1, #p2, #p3)
+{
+ return (Vec3D[3]) { #p1, #p2, #p3 };
+}
+macro @createTriangle(#p1x, #p1y, #p1z, #p2x, #p2y, #p2z, #p3x, #p3y, #p3z)
+{
+ return @triangle(@vec3D(#p1x, #p1y, #p1z), @vec3D(#p2x, #p2y, #p2z), @vec3D(#p3x, #p3y, #p3z));
+}
+macro @rgba(#r, #g, #b, #a)
+{
+ return (Color) { #a, #b, #g, #r };
+}
+macro @rgb(#r, #g, #b)
+{
+ return (Color) { 255, #b, #g, #r };
+}
+macro @colorToHex(#color)
+{
+ return (uint)#color & 0xFFFFFF00;
+}
+macro @rgbToHex(#r, #g, #b)
+{
+ return @colorToHex(@rgb(#r, #g, #b));
+}
+macro @rgbaToHex(#r, #g, #b, #a)
+{
+ return @colorToHex(@rgba(#r, #g, #b, #a));
+}
const int MAX_BATCHES = 2028;
const int MAX_VERTS = 8192;
constdef TextureFormat
{
- NONE = 0,
- RGB,
- BGR,
- RGBA,
- BGRA,
- RED,
- GRAYSCALE,
- GRAYSCALE_ALPHA,
- FORMAT_COUNT,
+ NONE = 0,
+ RGB,
+ BGR,
+ RGBA,
+ BGRA,
+ RED,
+ GRAYSCALE,
+ GRAYSCALE_ALPHA,
+ FORMAT_COUNT,
}
constdef TextureDataType
{
- INT = 0,
- FLOAT,
+ INT = 0,
+ FLOAT,
}
constdef TextureFilter
{
- NEAREST = 0,
- LINEAR,
+ NEAREST = 0,
+ LINEAR,
}
struct TextureBlob
{
- void* data;
- usz width;
- usz height;
- TextureDataType dataType;
- TextureFormat dataFormat;
- TextureFormat textureFormat;
- TextureFilter minFilter;
- TextureFilter magFilter;
+ void* data;
+ usz width;
+ usz height;
+ TextureDataType dataType;
+ TextureFormat dataFormat;
+ TextureFormat textureFormat;
+ TextureFilter minFilter;
+ TextureFilter magFilter;
}
-alias Texture = usz;
+alias Texture = usz;
alias Framebuffer = usz;
struct Rect
{
- float x;
- float y;
- float w;
- float h;
+ float x;
+ float y;
+ float w;
+ float h;
}
struct Cube
{
- float x;
- float y;
- float z;
- float w;
- float l;
- float h;
+ float x;
+ float y;
+ float z;
+ float w;
+ float l;
+ float h;
}
struct Vec2D
{
- float x;
- float y;
+ float x;
+ float y;
}
struct Vec3D
{
- float x;
- float y;
- float z;
+ float x;
+ float y;
+ float z;
}
struct Color
{
- char a;
- char b;
- char g;
- char r;
+ char a;
+ char b;
+ char g;
+ char r;
}
alias Mat4 = float[16];
-extern fn Mat4 mat4_loadIdentity() @cname("RSGL_mat4_loadIdentity");
-extern fn Mat4 mat4_scale(Mat4, float, float, float) @cname("RSGL_mat4_scale");
-extern fn Mat4 mat4_rotate(Mat4, float, float, float, float) @cname("RSGL_mat4_rotate");
-extern fn Mat4 mat4_translate(Mat4, float, float, float) @cname("RSGL_mat4_translate");
-extern fn Mat4 mat4_perspective(Mat4, float, float, float, float) @cname("RSGL_mat4_perspective");
-extern fn Mat4 mat4_ortho(Mat4, float, float, float, float, float, float) @cname("RSGL_mat4_ortho");
-extern fn Mat4 mat4_lookAt(Mat4, float, float, float, float, float, float, float, float, float) @cname("RSGL_mat4_lookAt");
-extern fn Mat4 mat4_multiply(Mat4, Mat4) @cname("RSGL_mat4_multiply");
-extern fn Vec3D mat4_multiplyPoint(Mat4, Vec3D) @cname("RSGL_mat4_multiplyPoint");
+extern fn Mat4 mat4_loadIdentity() @cname("RSGL_mat4_loadIdentity");
+extern fn Mat4 mat4_scale(Mat4, float, float, float) @cname("RSGL_mat4_scale");
+extern fn Mat4 mat4_rotate(Mat4, float, float, float, float) @cname("RSGL_mat4_rotate");
+extern fn Mat4 mat4_translate(Mat4, float, float, float) @cname("RSGL_mat4_translate");
+extern fn Mat4 mat4_perspective(Mat4, float, float, float, float) @cname("RSGL_mat4_perspective");
+extern fn Mat4 mat4_ortho(Mat4, float, float, float, float, float, float) @cname("RSGL_mat4_ortho");
+extern fn Mat4 mat4_lookAt(
+ Mat4,
+ float,
+ float,
+ float,
+ float,
+ float,
+ float,
+ float,
+ float,
+ float
+) @cname("RSGL_mat4_lookAt");
+extern fn Mat4 mat4_multiply(Mat4, Mat4) @cname("RSGL_mat4_multiply");
+extern fn Vec3D mat4_multiplyPoint(Mat4, Vec3D) @cname("RSGL_mat4_multiplyPoint");
constdef ProjectionType
{
- ORTHO_2D = 0,
- ORTHO_3D,
- PERSPECTIVE_3D,
+ ORTHO_2D = 0,
+ ORTHO_3D,
+ PERSPECTIVE_3D,
}
struct Projection2D
{
- ProjectionType type;
- uint width;
- uint height;
+ ProjectionType type;
+ uint width;
+ uint height;
}
struct Projection3D
{
- ProjectionType type;
- float fov;
- float ratio;
- float pNear;
- float pFar;
+ ProjectionType type;
+ float fov;
+ float ratio;
+ float pNear;
+ float pFar;
}
union Projection
{
- ProjectionType type;
- Projection2D p2D;
- Projection3D p3D;
+ ProjectionType type;
+ Projection2D p2D;
+ Projection3D p3D;
}
extern fn Mat4 projection_getMatrix(Projection*) @cname("RSGL_projection_getMatrix");
constdef ShaderType
{
- NONE = 0,
- STANDARD = 1,
- COMPUTE = 2,
- GEOMETRY = 4,
+ NONE = 0,
+ STANDARD = 1,
+ COMPUTE = 2,
+ GEOMETRY = 4,
}
struct ProgramBlob
{
- ZString vertex;
- usz vertexLen;
- ZString fragment;
- usz fragmentLen;
+ ZString vertex;
+ usz vertexLen;
+ ZString fragment;
+ usz fragmentLen;
}
struct ProgramInfo
{
- usz program;
- usz perspectiveView;
- usz model;
- usz vertexPosition;
- usz vertexTexCoord;
- usz vertexColor;
- ShaderType type;
+ usz program;
+ usz perspectiveView;
+ usz model;
+ usz vertexPosition;
+ usz vertexTexCoord;
+ usz vertexColor;
+ ShaderType type;
}
struct Batch
{
- usz start;
- usz len;
- usz elmStart;
- usz elmCount;
- uint type;
- Texture tex;
- float lineWidth;
- Mat4 matrix;
+ usz start;
+ usz len;
+ usz elmStart;
+ usz elmCount;
+ uint type;
+ Texture tex;
+ float lineWidth;
+ Mat4 matrix;
}
struct RenderData
{
- float* verts;
- float* texCoords;
- float* colors;
- ushort* elements;
- usz elements_count;
- usz len;
- Mat4 perspective;
+ float* verts;
+ float* texCoords;
+ float* colors;
+ ushort* elements;
+ usz elements_count;
+ usz len;
+ Mat4 perspective;
}
constdef BufferType
{
- ARRAY_BUFFER = 0,
- ELEMENT_ARRAY_BUFFER,
- SHADER_STORAGE_BUFFER,
- TEXTURE_BUFFER,
- UNIFORM_BUFFER,
+ ARRAY_BUFFER = 0,
+ ELEMENT_ARRAY_BUFFER,
+ SHADER_STORAGE_BUFFER,
+ TEXTURE_BUFFER,
+ UNIFORM_BUFFER,
}
struct RenderBuffers
{
- usz vertex;
- usz color;
- usz texture;
- usz elements;
- usz maxVerts;
- Batch[MAX_BATCHES] batches;
- usz batchCount;
+ usz vertex;
+ usz color;
+ usz texture;
+ usz elements;
+ usz maxVerts;
+ Batch[MAX_BATCHES] batches;
+ usz batchCount;
}
struct RenderState
{
- float* gradient;
- Rect source;
- Texture texture;
- uint gradient_len;
- Color color;
- Vec3D rotate;
- ProgramInfo* program;
- RenderBuffers* buffers;
- Vec3D center;
- float lineWidth;
- Mat4 modelMatrix;
- Mat4 viewMatrix;
- Mat4 perspectiveMatrix;
- bool forceBatch;
- bool overflow;
- Framebuffer framebuffer;
+ float* gradient;
+ Rect source;
+ Texture texture;
+ uint gradient_len;
+ Color color;
+ Vec3D rotate;
+ ProgramInfo* program;
+ RenderBuffers* buffers;
+ Vec3D center;
+ float lineWidth;
+ Mat4 modelMatrix;
+ Mat4 viewMatrix;
+ Mat4 perspectiveMatrix;
+ bool forceBatch;
+ bool overflow;
+ Framebuffer framebuffer;
}
struct RenderPass
{
- ProgramInfo* program;
- float* matrix;
- RenderBuffers* buffers;
- Framebuffer framebuffer;
+ ProgramInfo* program;
+ float* matrix;
+ RenderBuffers* buffers;
+ Framebuffer framebuffer;
}
-alias RendererProc_size = fn usz ();
-alias RendererProc_defaultBlob = fn ProgramBlob (void*);
-alias RendererProc_initPtr = fn void (void*, void*);
-alias RendererProc_freePtr = fn void (void*);
-alias RendererProc_render = fn void (void*, RenderPass*);
-alias RendererProc_clear = fn void (void*, Framebuffer, float, float, float, float);
-alias RendererProc_viewport = fn void (void*, int, int, int, int);
-alias RendererProc_setSurface = fn void (void*, void*);
-alias RendererProc_createTexture = fn Texture (void*, TextureBlob*);
-alias RendererProc_copyToTexture = fn void (void*, Texture, usz, usz, TextureBlob*);
-alias RendererProc_deleteTexture = fn void (void*, Texture);
-alias RendererProc_scissorStart = fn void (void*, float, float, float, float, float);
-alias RendererProc_scissorEnd = fn void (void*);
-alias RendererProc_createProgram = fn ProgramInfo (void*, ProgramBlob*);
-alias RendererProc_deleteProgram = fn void (void*, ProgramInfo*);
-alias RendererProc_findShaderVariable = fn usz (void*, ProgramInfo*, ZString, usz);
-alias RendererProc_updateShaderVariable = fn void (void*, ProgramInfo*, usz, float*, char);
-alias RendererProc_createComputeProgram = fn ProgramInfo (void*, ZString);
-alias RendererProc_dispatchComputeProgram = fn void (void*, ProgramInfo*, uint, uint, uint);
-alias RendererProc_bindComputeTexture = fn void (void*, uint, char);
-alias RendererProc_createBuffer = fn void (void*, BufferType, usz, void*, usz*);
-alias RendererProc_updateBuffer = fn void (void*, BufferType, usz, void*, usz, usz);
-alias RendererProc_deleteBuffer = fn void (void*, usz);
-alias RendererProc_createFramebuffer = fn Framebuffer (void*, usz, usz);
-alias RendererProc_attachFramebuffer = fn void (void*, Framebuffer, Texture, char, char);
-alias RendererProc_deleteFramebuffer = fn void (void*, Framebuffer);
+alias RendererProc_size = fn usz();
+alias RendererProc_defaultBlob = fn ProgramBlob(void*);
+alias RendererProc_initPtr = fn void(void*, void*);
+alias RendererProc_freePtr = fn void(void*);
+alias RendererProc_render = fn void(void*, RenderPass*);
+alias RendererProc_clear = fn void(void*, Framebuffer, float, float, float, float);
+alias RendererProc_viewport = fn void(void*, int, int, int, int);
+alias RendererProc_setSurface = fn void(void*, void*);
+alias RendererProc_createTexture = fn Texture(void*, TextureBlob*);
+alias RendererProc_copyToTexture = fn void(void*, Texture, usz, usz, TextureBlob*);
+alias RendererProc_deleteTexture = fn void(void*, Texture);
+alias RendererProc_scissorStart = fn void(void*, float, float, float, float, float);
+alias RendererProc_scissorEnd = fn void(void*);
+alias RendererProc_createProgram = fn ProgramInfo(void*, ProgramBlob*);
+alias RendererProc_deleteProgram = fn void(void*, ProgramInfo*);
+alias RendererProc_findShaderVariable = fn usz(void*, ProgramInfo*, ZString, usz);
+alias RendererProc_updateShaderVariable = fn void(void*, ProgramInfo*, usz, float*, char);
+alias RendererProc_createComputeProgram = fn ProgramInfo(void*, ZString);
+alias RendererProc_dispatchComputeProgram = fn void(void*, ProgramInfo*, uint, uint, uint);
+alias RendererProc_bindComputeTexture = fn void(void*, uint, char);
+alias RendererProc_createBuffer = fn void(void*, BufferType, usz, void*, usz*);
+alias RendererProc_updateBuffer = fn void(void*, BufferType, usz, void*, usz, usz);
+alias RendererProc_deleteBuffer = fn void(void*, usz);
+alias RendererProc_createFramebuffer = fn Framebuffer(void*, usz, usz);
+alias RendererProc_attachFramebuffer = fn void(void*, Framebuffer, Texture, char, char);
+alias RendererProc_deleteFramebuffer = fn void(void*, Framebuffer);
struct RendererProc
{
- RendererProc_size size;
- RendererProc_defaultBlob defaultBlob;
- RendererProc_initPtr initPtr;
- RendererProc_freePtr freePtr;
- RendererProc_render render;
- RendererProc_clear clear;
- RendererProc_viewport viewport;
- RendererProc_setSurface setSurface;
- RendererProc_createTexture createTexture;
- RendererProc_copyToTexture copyToTexture;
- RendererProc_deleteTexture deleteTexture;
- RendererProc_scissorStart scissorStart;
- RendererProc_scissorEnd scissorEnd;
- RendererProc_createProgram createProgram;
- RendererProc_deleteProgram deleteProgram;
- RendererProc_findShaderVariable findShaderVariable;
- RendererProc_updateShaderVariable updateShaderVariable;
- RendererProc_createComputeProgram createComputeProgram;
- RendererProc_dispatchComputeProgram dispatchComputeProgram;
- RendererProc_bindComputeTexture bindComputeTexture;
- RendererProc_createBuffer createBuffer;
- RendererProc_updateBuffer updateBuffer;
- RendererProc_deleteBuffer deleteBuffer;
- RendererProc_createFramebuffer createFramebuffer;
- RendererProc_attachFramebuffer attachFramebuffer;
- RendererProc_deleteFramebuffer deleteFramebuffer;
+ RendererProc_size size;
+ RendererProc_defaultBlob defaultBlob;
+ RendererProc_initPtr initPtr;
+ RendererProc_freePtr freePtr;
+ RendererProc_render render;
+ RendererProc_clear clear;
+ RendererProc_viewport viewport;
+ RendererProc_setSurface setSurface;
+ RendererProc_createTexture createTexture;
+ RendererProc_copyToTexture copyToTexture;
+ RendererProc_deleteTexture deleteTexture;
+ RendererProc_scissorStart scissorStart;
+ RendererProc_scissorEnd scissorEnd;
+ RendererProc_createProgram createProgram;
+ RendererProc_deleteProgram deleteProgram;
+ RendererProc_findShaderVariable findShaderVariable;
+ RendererProc_updateShaderVariable updateShaderVariable;
+ RendererProc_createComputeProgram createComputeProgram;
+ RendererProc_dispatchComputeProgram dispatchComputeProgram;
+ RendererProc_bindComputeTexture bindComputeTexture;
+ RendererProc_createBuffer createBuffer;
+ RendererProc_updateBuffer updateBuffer;
+ RendererProc_deleteBuffer deleteBuffer;
+ RendererProc_createFramebuffer createFramebuffer;
+ RendererProc_attachFramebuffer attachFramebuffer;
+ RendererProc_deleteFramebuffer deleteFramebuffer;
}
struct Renderer
{
- RenderData data;
- RenderState state;
- RendererProc proc;
- void* userPtr;
- void* ctx;
- Texture defaultTexture;
- ProgramInfo defaultProgram;
- Mat4 defaultPerspectiveMatrix;
- float[MAX_VERTS*3] verts;
- float[MAX_VERTS*2] texCoords;
- float[MAX_VERTS*4] colors;
- ushort[MAX_VERTS*6] elements;
- RenderBuffers buffers;
+ RenderData data;
+ RenderState state;
+ RendererProc proc;
+ void* userPtr;
+ void* ctx;
+ Texture defaultTexture;
+ ProgramInfo defaultProgram;
+ Mat4 defaultPerspectiveMatrix;
+ float[MAX_VERTS * 3] verts;
+ float[MAX_VERTS * 2] texCoords;
+ float[MAX_VERTS * 4] colors;
+ ushort[MAX_VERTS * 6] elements;
+ RenderBuffers buffers;
}
-extern fn void renderer_getRenderState(Renderer*, RenderState*) @cname("RSGL_renderer_getRenderState");
-extern fn usz renderer_size(Renderer*) @cname("RSGL_renderer_size");
-extern fn void renderer_initPtr(RendererProc*, void*, void*, Renderer*) @cname("RSGL_renderer_initPtr");
-extern fn Renderer* renderer_init(RendererProc, void*) @cname("RSGL_renderer_init");
-extern fn void renderer_updateSize(Renderer*, usz, usz) @cname("RSGL_renderer_updateSize");
-extern fn void renderer_freePtr(Renderer*) @cname("RSGL_renderer_freePtr");
-extern fn void renderer_setSurface(Renderer*, void*) @cname("RSGL_renderer_setSurface");
-extern fn void renderer_createBuffer(Renderer*, BufferType, usz, void*, usz*) @cname("RSGL_renderer_createBuffer");
-extern fn void renderer_updateBuffer(Renderer*, BufferType, usz, void*, usz, usz) @cname("RSGL_renderer_updateBuffer");
-extern fn void renderer_deleteBuffer(Renderer*, usz) @cname("RSGL_renderer_deleteBuffer");
-extern fn void renderer_createRenderBuffers(Renderer*, usz, RenderBuffers*) @cname("RSGL_renderer_createRenderBuffers");
-extern fn void renderer_deleteRenderBuffers(Renderer*, RenderBuffers*) @cname("RSGL_renderer_deleteRenderBuffers");
-extern fn void renderer_render(Renderer*) @cname("RSGL_renderer_render");
-extern fn void renderer_updateRenderBuffers(Renderer*) @cname("RSGL_renderer_updateRenderbuffers");
-extern fn void renderer_renderBuffers(Renderer*) @cname("RSGL_renderer_renderBuffers");
-extern fn void renderer_free(Renderer*) @cname("RSGL_renderer_free");
-extern fn void renderer_setRotate(Renderer*, Vec3D) @cname("RSGL_renderer_setRotate");
-extern fn void renderer_setTexture(Renderer*, Texture) @cname("RSGL_renderer_setTexture");
-extern fn void renderer_setTextureSource(Renderer*, Texture, Rect) @cname("RSGL_renderer_setTextureSource");
-extern fn void renderer_setColor(Renderer*, Color) @cname("RSGL_renderer_setColor");
-extern fn void renderer_setProgram(Renderer*, ProgramInfo*) @cname("RSGL_renderer_setProgram");
-extern fn void renderer_setFramebuffer(Renderer*, Framebuffer) @cname("RSGL_renderer_setFramebuffer");
-extern fn void renderer_setRenderBuffers(Renderer*, RenderBuffers*) @cname("RSGL_renderer_setRenderBuffers");
-extern fn void renderer_setGradient(Renderer*, float*, usz) @cname("RSGL_renderer_setGradient");
-extern fn void renderer_setCenter(Renderer*, Vec3D) @cname("RSGL_renderer_setCenter");
-extern fn void renderer_setOverflow(Renderer*, bool) @cname("RSGL_renderer_setOverflow");
-extern fn void renderer_clearArgs(Renderer*) @cname("RSGL_renderer_clearArgs");
-extern fn Mat4 renderer_initDrawMatrix(Renderer*, Vec3D) @cname("RSGL_renderer_initDrawMatrix");
-extern fn void renderer_clear(Renderer*, Color) @cname("RSGL_renderer_clear");
-extern fn void renderer_viewport(Renderer*, Rect) @cname("RSGL_renderer_viewport");
-extern fn Texture renderer_createTexture(Renderer*, TextureBlob*) @cname("RSGL_renderer_createTexture");
-extern fn void renderer_copyToTexture(Renderer*, Texture, usz, usz, TextureBlob*) @cname("RSGL_renderer_copyToTexture");
-extern fn void renderer_deleteTexture(Renderer*, Texture) @cname("RSGL_renderer_deleteTexture");
-extern fn Framebuffer renderer_createFramebuffer(Renderer*, usz, usz) @cname("RSGL_renderer_createFramebuffer");
-extern fn void renderer_attachFramebuffer(Renderer*, Framebuffer, Texture, char, char) @cname("RSGL_renderer_attachFramebuffer");
-extern fn void renderer_deleteFramebuffer(Renderer*, Framebuffer) @cname("RSGL_renderer_deleteFramebuffer");
-extern fn void renderer_scissorStart(Renderer*, Rect, int) @cname("RSGL_renderer_scissorStart");
-extern fn void renderer_scissorEnd(Renderer*) @cname("RSGL_renderer_scissorEnd");
-extern fn ProgramBlob renderer_defaultBlob(Renderer*) @cname("RSGL_renderer_defaultBlob");
-extern fn ProgramInfo renderer_createProgram(Renderer*, ProgramBlob*) @cname("RSGL_renderer_createProgram");
-extern fn void renderer_deleteProgram(Renderer*, ProgramInfo*) @cname("RSGL_renderer_deleteProgram");
-extern fn usz renderer_findShaderVariable(Renderer*, ProgramInfo*, ZString, usz) @cname("RSGL_renderer_findShaderVariable");
-extern fn void renderer_updateShaderVariable(Renderer*, ProgramInfo*, usz, float*, char) @cname("RSGL_renderer_updateShaderVariable");
-extern fn void renderer_forceBatch(Renderer*) @cname("RSGL_renderer_forceBatch");
-extern fn void renderer_setPerspectiveMatrix(Renderer*, Mat4) @cname("RSGL_renderer_setPerspectiveMatrix");
-extern fn void renderer_setDefaultPerspectiveMatrix(Renderer*, Mat4) @cname("RSGL_renderer_setDefaultPerspectiveMatrix");
-extern fn void renderer_setModelMatrix(Renderer*, Mat4) @cname("RSGL_renderer_setModelMatrix");
-extern fn void renderer_resetModelMatrix(Renderer*) @cname("RSGL_renderer_resetModelMatrix");
-extern fn ProgramInfo renderer_createComputeProgram(Renderer*, ZString) @cname("RSGL_renderer_createComputeProgram");
-extern fn void renderer_dispatchComputeProgram(Renderer*, ProgramInfo*, uint, uint, uint) @cname("RSGL_renderer_dispatchComputeProgram");
-extern fn void renderer_bindComputeTexture(Renderer*, uint, char) @cname("RSGL_renderer_bindComputeTexture");
+extern fn void renderer_getRenderState(Renderer*, RenderState*) @cname("RSGL_renderer_getRenderState");
+extern fn usz renderer_size(Renderer*) @cname("RSGL_renderer_size");
+extern fn void renderer_initPtr(RendererProc*, void*, void*, Renderer*) @cname("RSGL_renderer_initPtr");
+extern fn Renderer* renderer_init(RendererProc, void*) @cname("RSGL_renderer_init");
+extern fn void renderer_updateSize(Renderer*, usz, usz) @cname("RSGL_renderer_updateSize");
+extern fn void renderer_freePtr(Renderer*) @cname("RSGL_renderer_freePtr");
+extern fn void renderer_setSurface(Renderer*, void*) @cname("RSGL_renderer_setSurface");
+extern fn void renderer_createBuffer(Renderer*, BufferType, usz, void*, usz*) @cname("RSGL_renderer_createBuffer");
+extern fn void renderer_updateBuffer(Renderer*, BufferType, usz, void*, usz, usz) @cname("RSGL_renderer_updateBuffer");
+extern fn void renderer_deleteBuffer(Renderer*, usz) @cname("RSGL_renderer_deleteBuffer");
+extern fn void renderer_createRenderBuffers(Renderer*, usz, RenderBuffers*) @cname("RSGL_renderer_createRenderBuffers");
+extern fn void renderer_deleteRenderBuffers(Renderer*, RenderBuffers*) @cname("RSGL_renderer_deleteRenderBuffers");
+extern fn void renderer_render(Renderer*) @cname("RSGL_renderer_render");
+extern fn void renderer_updateRenderBuffers(Renderer*) @cname("RSGL_renderer_updateRenderbuffers");
+extern fn void renderer_renderBuffers(Renderer*) @cname("RSGL_renderer_renderBuffers");
+extern fn void renderer_free(Renderer*) @cname("RSGL_renderer_free");
+extern fn void renderer_setRotate(Renderer*, Vec3D) @cname("RSGL_renderer_setRotate");
+extern fn void renderer_setTexture(Renderer*, Texture) @cname("RSGL_renderer_setTexture");
+extern fn void renderer_setTextureSource(Renderer*, Texture, Rect) @cname("RSGL_renderer_setTextureSource");
+extern fn void renderer_setColor(Renderer*, Color) @cname("RSGL_renderer_setColor");
+extern fn void renderer_setProgram(Renderer*, ProgramInfo*) @cname("RSGL_renderer_setProgram");
+extern fn void renderer_setFramebuffer(Renderer*, Framebuffer) @cname("RSGL_renderer_setFramebuffer");
+extern fn void renderer_setRenderBuffers(Renderer*, RenderBuffers*) @cname("RSGL_renderer_setRenderBuffers");
+extern fn void renderer_setGradient(Renderer*, float*, usz) @cname("RSGL_renderer_setGradient");
+extern fn void renderer_setCenter(Renderer*, Vec3D) @cname("RSGL_renderer_setCenter");
+extern fn void renderer_setOverflow(Renderer*, bool) @cname("RSGL_renderer_setOverflow");
+extern fn void renderer_clearArgs(Renderer*) @cname("RSGL_renderer_clearArgs");
+extern fn Mat4 renderer_initDrawMatrix(Renderer*, Vec3D) @cname("RSGL_renderer_initDrawMatrix");
+extern fn void renderer_clear(Renderer*, Color) @cname("RSGL_renderer_clear");
+extern fn void renderer_viewport(Renderer*, Rect) @cname("RSGL_renderer_viewport");
+extern fn Texture renderer_createTexture(Renderer*, TextureBlob*) @cname("RSGL_renderer_createTexture");
+extern fn void renderer_copyToTexture(Renderer*, Texture, usz, usz, TextureBlob*) @cname("RSGL_renderer_copyToTexture");
+extern fn void renderer_deleteTexture(Renderer*, Texture) @cname("RSGL_renderer_deleteTexture");
+extern fn Framebuffer renderer_createFramebuffer(Renderer*, usz, usz) @cname("RSGL_renderer_createFramebuffer");
+extern fn void renderer_attachFramebuffer(
+ Renderer*,
+ Framebuffer,
+ Texture,
+ char,
+ char
+) @cname("RSGL_renderer_attachFramebuffer");
+extern fn void renderer_deleteFramebuffer(Renderer*, Framebuffer) @cname("RSGL_renderer_deleteFramebuffer");
+extern fn void renderer_scissorStart(Renderer*, Rect, int) @cname("RSGL_renderer_scissorStart");
+extern fn void renderer_scissorEnd(Renderer*) @cname("RSGL_renderer_scissorEnd");
+extern fn ProgramBlob renderer_defaultBlob(Renderer*) @cname("RSGL_renderer_defaultBlob");
+extern fn ProgramInfo renderer_createProgram(Renderer*, ProgramBlob*) @cname("RSGL_renderer_createProgram");
+extern fn void renderer_deleteProgram(Renderer*, ProgramInfo*) @cname("RSGL_renderer_deleteProgram");
+extern fn usz renderer_findShaderVariable(
+ Renderer*,
+ ProgramInfo*,
+ ZString,
+ usz
+) @cname("RSGL_renderer_findShaderVariable");
+extern fn void renderer_updateShaderVariable(
+ Renderer*,
+ ProgramInfo*,
+ usz,
+ float*,
+ char
+) @cname("RSGL_renderer_updateShaderVariable");
+extern fn void renderer_forceBatch(Renderer*) @cname("RSGL_renderer_forceBatch");
+extern fn void renderer_setPerspectiveMatrix(Renderer*, Mat4) @cname("RSGL_renderer_setPerspectiveMatrix");
+extern fn void renderer_setDefaultPerspectiveMatrix(
+ Renderer*,
+ Mat4
+) @cname("RSGL_renderer_setDefaultPerspectiveMatrix");
+extern fn void renderer_setModelMatrix(Renderer*, Mat4) @cname("RSGL_renderer_setModelMatrix");
+extern fn void renderer_resetModelMatrix(Renderer*) @cname("RSGL_renderer_resetModelMatrix");
+extern fn ProgramInfo renderer_createComputeProgram(Renderer*, ZString) @cname("RSGL_renderer_createComputeProgram");
+extern fn void renderer_dispatchComputeProgram(
+ Renderer*,
+ ProgramInfo*,
+ uint,
+ uint,
+ uint
+) @cname("RSGL_renderer_dispatchComputeProgram");
+extern fn void renderer_bindComputeTexture(Renderer*, uint, char) @cname("RSGL_renderer_bindComputeTexture");
constdef DrawType
{
- TRIANGLES = 0,
- POINTS = 1,
- LINES = 2,
+ TRIANGLES = 0,
+ POINTS = 1,
+ LINES = 2,
}
struct RawVerts
{
- DrawType type;
- float* verts;
- float* texCoords;
- ushort* elements;
- usz elmCount;
- usz vert_count;
+ DrawType type;
+ float* verts;
+ float* texCoords;
+ ushort* elements;
+ usz elmCount;
+ usz vert_count;
}
extern fn int drawRawVerts(Renderer*, RawVerts*) @cname("RSGL_drawRawVerts");
-extern fn int drawPoint(Renderer*, Vec2D) @cname("RSGL_drawPoint") @if($feature(HIGHLEVEL));
-extern fn int drawRect(Renderer*, Rect) @cname("RSGL_drawRect") @if($feature(HIGHLEVEL));
-extern fn int drawRoundRect(Renderer*, Rect, Vec2D) @cname("RSGL_drawRoundRect") @if($feature(HIGHLEVEL));
-extern fn int drawPolygon(Renderer*, Rect, uint) @cname("RSGL_drawPolygon") @if($feature(HIGHLEVEL));
-extern fn int drawArc(Renderer*, Rect, Vec2D) @cname("RSGL_drawArc") @if($feature(HIGHLEVEL));
-extern fn int drawOval(Renderer*, Rect) @cname("RSGL_drawOval") @if($feature(HIGHLEVEL));
-extern fn int drawLine(Renderer*, Vec2D, Vec2D, uint) @cname("RSGL_drawLine") @if($feature(HIGHLEVEL));
-extern fn int drawTriangle(Renderer*, Vec3D[3]) @cname("RSGL_drawTriangle") @if($feature(HIGHLEVEL));
-extern fn int drawPoint3D(Renderer*, Vec3D) @cname("RSGL_drawPoint3D") @if($feature(HIGHLEVEL));
-extern fn int drawLine3D(Renderer*, Vec3D, Vec3D, uint) @cname("RSGL_drawLine3D") @if($feature(HIGHLEVEL));
-extern fn int drawCube(Renderer*, Cube) @cname("RSGL_drawCube") @if($feature(HIGHLEVEL));
-extern fn int drawTriangleOutline(Renderer*, Vec3D[3], uint) @cname("RSGL_drawTriangleOutline") @if($feature(HIGHLEVEL));
-extern fn int drawRectOutline(Renderer*, Rect, uint) @cname("RSGL_drawRectOutline") @if($feature(HIGHLEVEL));
-extern fn int drawRoundRectOutline(Renderer*, Rect, Vec2D, uint) @cname("RSGL_drawRoundRectOutline") @if($feature(HIGHLEVEL));
-extern fn int drawPolygonOutline(Renderer*, Rect, uint, uint) @cname("RSGL_drawPolygonOutline") @if($feature(HIGHLEVEL));
-extern fn int drawArcOutline(Renderer*, Rect, Vec2D, uint) @cname("RSGL_drawArcOutline") @if($feature(HIGHLEVEL));
-extern fn int drawOvalOutline(Renderer*, Rect, uint) @cname("RSGL_drawovalOutline") @if($feature(HIGHLEVEL));
+extern fn int drawPoint(Renderer*, Vec2D) @cname("RSGL_drawPoint") @if($feature(HIGHLEVEL));
+extern fn int drawRect(Renderer*, Rect) @cname("RSGL_drawRect") @if($feature(HIGHLEVEL));
+extern fn int drawRoundRect(Renderer*, Rect, Vec2D) @cname("RSGL_drawRoundRect") @if($feature(HIGHLEVEL));
+extern fn int drawPolygon(Renderer*, Rect, uint) @cname("RSGL_drawPolygon") @if($feature(HIGHLEVEL));
+extern fn int drawArc(Renderer*, Rect, Vec2D) @cname("RSGL_drawArc") @if($feature(HIGHLEVEL));
+extern fn int drawOval(Renderer*, Rect) @cname("RSGL_drawOval") @if($feature(HIGHLEVEL));
+extern fn int drawLine(Renderer*, Vec2D, Vec2D, uint) @cname("RSGL_drawLine") @if($feature(HIGHLEVEL));
+extern fn int drawTriangle(Renderer*, Vec3D[3]) @cname("RSGL_drawTriangle") @if($feature(HIGHLEVEL));
+extern fn int drawPoint3D(Renderer*, Vec3D) @cname("RSGL_drawPoint3D") @if($feature(HIGHLEVEL));
+extern fn int drawLine3D(Renderer*, Vec3D, Vec3D, uint) @cname("RSGL_drawLine3D") @if($feature(HIGHLEVEL));
+extern fn int drawCube(Renderer*, Cube) @cname("RSGL_drawCube") @if($feature(HIGHLEVEL));
+extern fn int drawTriangleOutline(
+ Renderer*,
+ Vec3D[3],
+ uint
+) @cname("RSGL_drawTriangleOutline") @if($feature(HIGHLEVEL));
+extern fn int drawRectOutline(Renderer*, Rect, uint) @cname("RSGL_drawRectOutline") @if($feature(HIGHLEVEL));
+extern fn int drawRoundRectOutline(
+ Renderer*,
+ Rect,
+ Vec2D,
+ uint
+) @cname("RSGL_drawRoundRectOutline") @if($feature(HIGHLEVEL));
+extern fn int drawPolygonOutline(
+ Renderer*,
+ Rect,
+ uint,
+ uint
+) @cname("RSGL_drawPolygonOutline") @if($feature(HIGHLEVEL));
+extern fn int drawArcOutline(Renderer*, Rect, Vec2D, uint) @cname("RSGL_drawArcOutline") @if($feature(HIGHLEVEL));
+extern fn int drawOvalOutline(Renderer*, Rect, uint) @cname("RSGL_drawovalOutline") @if($feature(HIGHLEVEL));
constdef ViewType @if($feature(HIGHLEVEL))
{
- NONE = 0,
- TWO_D,
- THREE_D,
+ NONE = 0,
+ TWO_D,
+ THREE_D,
}
struct View2D @if($feature(HIGHLEVEL))
{
- ViewType type;
- Vec3D offset;
- Vec3D target;
- float rotation;
- float zoom;
+ ViewType type;
+ Vec3D offset;
+ Vec3D target;
+ float rotation;
+ float zoom;
}
struct View3D @if($feature(HIGHLEVEL))
{
- ViewType type;
- Vec3D pos;
- Vec3D target;
- Vec3D up;
+ ViewType type;
+ Vec3D pos;
+ Vec3D target;
+ Vec3D up;
}
union View @if($feature(HIGHLEVEL))
{
- ViewType type;
- View2D view2D;
- View3D view3D;
+ ViewType type;
+ View2D view2D;
+ View3D view3D;
}
extern fn Mat4 view_getMatrix(View*) @cname("RSGL_view_getMatrix") @if($feature(HIGHLEVEL));
@@ -448,16 +530,16 @@ module rsgl::gl @if($feature(OPENGL));
struct GlRenderer
{
- uint vao;
+ uint vao;
}
extern fn RendererProc rendererProc() @cname("RSGL_GL_rendererProc");
-extern fn usz size() @cname("RSGL_GL_size");
+extern fn usz size() @cname("RSGL_GL_size");
module rsgl::rfont @if($feature(RFONT));
import rfont;
-extern fn rfont::Renderer_proc renderer_proc() @cname("RFont_RSGL_renderer_proc");
-extern fn rfont::Renderer* renderer_init(rsgl::Renderer*) @cname("RFont_RSGL_renderer_init");
-extern fn void renderer_initPtr(rsgl::Renderer*, rfont::Renderer*) @cname("RFont_RSGL_renderer_initPtr");
-extern fn void renderer_free(rfont::Renderer*) @cname("RFont_RSGL_renderer_free");
+extern fn rfont::Renderer_proc renderer_proc() @cname("RFont_RSGL_renderer_proc");
+extern fn rfont::Renderer* renderer_init(rsgl::Renderer*) @cname("RFont_RSGL_renderer_init");
+extern fn void renderer_initPtr(rsgl::Renderer*, rfont::Renderer*) @cname("RFont_RSGL_renderer_initPtr");
+extern fn void renderer_free(rfont::Renderer*) @cname("RFont_RSGL_renderer_free"); \ No newline at end of file
diff --git a/uefi.c3l b/uefi.c3l
new file mode 160000
+Subproject 1001e0785fa3d132e9e3ab54d6ff192f179d927