aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2025-02-04 16:59:38 +0000
committergingerBill <bill@gingerbill.org>2025-02-04 16:59:38 +0000
commita62ce5cc668d6a2cdf2c9254d14f8216552c99a0 (patch)
tree2a6f708a857c6650bb0f34a2be137b289febc93a
parent98271f0073607cee728dcc985d5276725cd3864b (diff)
Add sdl3_tray.odin and sdl3_version.odin
-rw-r--r--vendor/sdl3/sdl3_tray.odin52
-rw-r--r--vendor/sdl3/sdl3_version.odin23
2 files changed, 75 insertions, 0 deletions
diff --git a/vendor/sdl3/sdl3_tray.odin b/vendor/sdl3/sdl3_tray.odin
new file mode 100644
index 000000000..666f811c0
--- /dev/null
+++ b/vendor/sdl3/sdl3_tray.odin
@@ -0,0 +1,52 @@
+package sdl3
+
+import "core:c"
+
+Tray :: struct {}
+TrayMenu :: struct {}
+TrayEntry :: struct {}
+
+TrayEntryFlags :: distinct bit_set[TrayEntryFlag; Uint32]
+TrayEntryFlag :: enum Uint32 {
+ BUTTON = 0, /**< Make the entry a simple button. Required. */
+ CHECKBOX = 1, /**< Make the entry a checkbox. Required. */
+ SUBMENU = 2, /**< Prepare the entry to have a submenu. Required */
+ DISABLED = 31, /**< Make the entry disabled. Optional. */
+ CHECKED = 30, /**< Make the entry checked. This is valid only for checkboxes. Optional. */
+}
+
+TRAYENTRY_BUTTON :: TrayEntryFlags{.BUTTON} /**< Make the entry a simple button. Required. */
+TRAYENTRY_CHECKBOX :: TrayEntryFlags{.CHECKBOX} /**< Make the entry a checkbox. Required. */
+TRAYENTRY_SUBMENU :: TrayEntryFlags{.SUBMENU} /**< Prepare the entry to have a submenu. Required */
+TRAYENTRY_DISABLED :: TrayEntryFlags{.DISABLED} /**< Make the entry disabled. Optional. */
+TRAYENTRY_CHECKED :: TrayEntryFlags{.CHECKED} /**< Make the entry checked. This is valid only for checkboxes. Optional. */
+
+TrayCallback :: #type proc "c" (userdata: rawptr, entry: ^TrayEntry)
+
+
+@(default_calling_convention="c", link_prefix="SDL_", require_results)
+foreign lib {
+ CreateTray :: proc(icon: ^Surface, tooltip: cstring) -> ^Tray ---
+ SetTrayIcon :: proc(tray: ^Tray, icon: ^Surface) ---
+ SetTrayTooltip :: proc(tray: ^Tray, tooltip: cstring) ---
+ CreateTrayMenu :: proc(tray: ^Tray) -> ^TrayMenu ---
+ CreateTraySubmenu :: proc(entry: ^TrayEntry) -> ^TrayMenu ---
+ GetTrayMenu :: proc(tray: ^Tray) -> TrayMenu ---
+ GetTraySubmenu :: proc(entry: ^TrayEntry) -> ^TrayMenu ---
+ GetTrayEntries :: proc(menu: ^TrayMenu, size: ^c.int) -> [^]^TrayEntry ---
+ RemoveTrayEntry :: proc(entry: ^TrayEntry) ---
+ InsertTrayEntryAt :: proc(menu: ^TrayMenu, pos: c.int, label: cstring, flags: TrayEntryFlags) -> ^TrayEntry ---
+ SetTrayEntryLabel :: proc(entry: ^TrayEntry, label: cstring) ---
+ GetTrayEntryLabel :: proc(entry: ^TrayEntry) -> cstring ---
+ SetTrayEntryChecked :: proc(entry: ^TrayEntry, checked: bool) ---
+ GetTrayEntryChecked :: proc(entry: ^TrayEntry) -> bool ---
+ SetTrayEntryEnabled :: proc(entry: ^TrayEntry, enabled: bool) ---
+ GetTrayEntryEnabled :: proc(entry: ^TrayEntry) -> bool ---
+ SetTrayEntryCallback :: proc(entry: ^TrayEntry, callback: TrayCallback, userdata: rawptr) ---
+ ClickTrayEntry :: proc(entry: ^TrayEntry) ---
+ DestroyTray :: proc(tray: ^Tray) ---
+ GetTrayEntryParent :: proc(entry: ^TrayEntry) -> ^TrayMenu ---
+ GetTrayMenuParentEntry :: proc(menu: ^TrayMenu) -> ^TrayEntry ---
+ GetTrayMenuParentTray :: proc(menu: ^TrayMenu) -> ^Tray ---
+ UpdateTrays :: proc() ---
+}
diff --git a/vendor/sdl3/sdl3_version.odin b/vendor/sdl3/sdl3_version.odin
new file mode 100644
index 000000000..b98664c7d
--- /dev/null
+++ b/vendor/sdl3/sdl3_version.odin
@@ -0,0 +1,23 @@
+package sdl3
+
+import "core:c"
+
+MAJOR_VERSION :: 3
+MINOR_VERSION :: 2
+MICRO_VERSION :: 0
+
+@(require_results) VERSIONNUM :: #force_inline proc "c" (major, minor, patch: c.int) -> c.int { return (major * 1000000) + (minor * 1000) + patch }
+@(require_results) VERSIONNUM_MAJOR :: #force_inline proc "c" (version: c.int) -> c.int { return version / 1000000 }
+@(require_results) VERSIONNUM_MINOR :: #force_inline proc "c" (version: c.int) -> c.int { return (version / 1000) % 1000 }
+@(require_results) VERSIONNUM_MICRO :: #force_inline proc "c" (version: c.int) -> c.int { return version % 1000 }
+
+VERSION :: MAJOR_VERSION*1000000 + MINOR_VERSION*1000 + MICRO_VERSION
+
+@(require_results) VERSION_ATLEAST :: proc "c" (X, Y, Z: c.int) -> bool { return VERSION >= VERSIONNUM(X, Y, Z) }
+
+
+@(default_calling_convention="c", link_prefix="SDL_", require_results)
+foreign lib {
+ GetVersion :: proc() -> c.int ---
+ GetRevision :: proc() -> cstring ---
+}