mirror of
https://github.com/odin-lang/Odin.git
synced 2026-07-11 02:19:30 +00:00
Correct numerous issues with SDL3 and add missing procedures
This commit is contained in:
18
vendor/sdl3/sdl3_audio.odin
vendored
18
vendor/sdl3/sdl3_audio.odin
vendored
@@ -38,14 +38,14 @@ AudioFormat :: enum c.int {
|
||||
F32 = F32LE when BYTEORDER == LIL_ENDIAN else F32BE,
|
||||
}
|
||||
|
||||
@(require_results) AUDIO_BITSIZE :: proc "c" (x: AudioFormat) -> Uint16 { return (Uint16(x) & AUDIO_MASK_BITSIZE) }
|
||||
@(require_results) AUDIO_BYTESIZE :: proc "c" (x: AudioFormat) -> Uint16 { return AUDIO_BITSIZE(x) / 8 }
|
||||
@(require_results) AUDIO_ISFLOAT :: proc "c" (x: AudioFormat) -> bool { return (Uint16(x) & AUDIO_MASK_FLOAT) != 0 }
|
||||
@(require_results) AUDIO_ISBIGENDIAN :: proc "c" (x: AudioFormat) -> bool { return (Uint16(x) & AUDIO_MASK_BIG_ENDIAN) != 0 }
|
||||
@(require_results) AUDIO_ISLITTLEENDIAN :: proc "c" (x: AudioFormat) -> bool { return !AUDIO_ISBIGENDIAN(x) }
|
||||
@(require_results) AUDIO_ISSIGNED :: proc "c" (x: AudioFormat) -> bool { return (Uint16(x) & AUDIO_MASK_SIGNED) != 0 }
|
||||
@(require_results) AUDIO_ISINT :: proc "c" (x: AudioFormat) -> bool { return !AUDIO_ISFLOAT(x) }
|
||||
@(require_results) AUDIO_ISUNSIGNED :: proc "c" (x: AudioFormat) -> bool { return !AUDIO_ISSIGNED(x) }
|
||||
@(require_results) AUDIO_BITSIZE :: #force_inline proc "c" (x: AudioFormat) -> Uint16 { return (Uint16(x) & AUDIO_MASK_BITSIZE) }
|
||||
@(require_results) AUDIO_BYTESIZE :: #force_inline proc "c" (x: AudioFormat) -> Uint16 { return AUDIO_BITSIZE(x) / 8 }
|
||||
@(require_results) AUDIO_ISFLOAT :: #force_inline proc "c" (x: AudioFormat) -> bool { return (Uint16(x) & AUDIO_MASK_FLOAT) != 0 }
|
||||
@(require_results) AUDIO_ISBIGENDIAN :: #force_inline proc "c" (x: AudioFormat) -> bool { return (Uint16(x) & AUDIO_MASK_BIG_ENDIAN) != 0 }
|
||||
@(require_results) AUDIO_ISLITTLEENDIAN :: #force_inline proc "c" (x: AudioFormat) -> bool { return !AUDIO_ISBIGENDIAN(x) }
|
||||
@(require_results) AUDIO_ISSIGNED :: #force_inline proc "c" (x: AudioFormat) -> bool { return (Uint16(x) & AUDIO_MASK_SIGNED) != 0 }
|
||||
@(require_results) AUDIO_ISINT :: #force_inline proc "c" (x: AudioFormat) -> bool { return !AUDIO_ISFLOAT(x) }
|
||||
@(require_results) AUDIO_ISUNSIGNED :: #force_inline proc "c" (x: AudioFormat) -> bool { return !AUDIO_ISSIGNED(x) }
|
||||
|
||||
|
||||
AudioDeviceID :: distinct Uint32
|
||||
@@ -60,7 +60,7 @@ AudioSpec :: struct {
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
AUDIO_FRAMESIZE :: proc "c" (x: AudioSpec) -> c.int {
|
||||
AUDIO_FRAMESIZE :: #force_inline proc "c" (x: AudioSpec) -> c.int {
|
||||
return c.int(AUDIO_BYTESIZE(x.format)) * x.channels
|
||||
}
|
||||
|
||||
|
||||
4
vendor/sdl3/sdl3_hints.odin
vendored
4
vendor/sdl3/sdl3_hints.odin
vendored
@@ -20,6 +20,7 @@ HINT_AUDIO_DEVICE_APP_ICON_NAME :: "SDL_AUDIO_DEVICE_APP_ICON_NAME"
|
||||
HINT_AUDIO_DEVICE_SAMPLE_FRAMES :: "SDL_AUDIO_DEVICE_SAMPLE_FRAMES"
|
||||
HINT_AUDIO_DEVICE_STREAM_NAME :: "SDL_AUDIO_DEVICE_STREAM_NAME"
|
||||
HINT_AUDIO_DEVICE_STREAM_ROLE :: "SDL_AUDIO_DEVICE_STREAM_ROLE"
|
||||
HINT_AUDIO_DEVICE_RAW_STREAM :: "SDL_AUDIO_DEVICE_RAW_STREAM"
|
||||
HINT_AUDIO_DISK_INPUT_FILE :: "SDL_AUDIO_DISK_INPUT_FILE"
|
||||
HINT_AUDIO_DISK_OUTPUT_FILE :: "SDL_AUDIO_DISK_OUTPUT_FILE"
|
||||
HINT_AUDIO_DISK_TIMESCALE :: "SDL_AUDIO_DISK_TIMESCALE"
|
||||
@@ -36,6 +37,7 @@ HINT_CPU_FEATURE_MASK :: "SDL_CPU_FEATURE_MASK"
|
||||
HINT_JOYSTICK_DIRECTINPUT :: "SDL_JOYSTICK_DIRECTINPUT"
|
||||
HINT_FILE_DIALOG_DRIVER :: "SDL_FILE_DIALOG_DRIVER"
|
||||
HINT_DISPLAY_USABLE_BOUNDS :: "SDL_DISPLAY_USABLE_BOUNDS"
|
||||
HINT_INVALID_PARAM_CHECKS :: "SDL_INVALID_PARAM_CHECKS"
|
||||
HINT_EMSCRIPTEN_ASYNCIFY :: "SDL_EMSCRIPTEN_ASYNCIFY"
|
||||
HINT_EMSCRIPTEN_CANVAS_SELECTOR :: "SDL_EMSCRIPTEN_CANVAS_SELECTOR"
|
||||
HINT_EMSCRIPTEN_KEYBOARD_ELEMENT :: "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
|
||||
@@ -56,6 +58,7 @@ HINT_GDK_TEXTINPUT_MAX_LENGTH :: "SDL_GDK_TEXTINPUT_MAX_LENGTH"
|
||||
HINT_GDK_TEXTINPUT_SCOPE :: "SDL_GDK_TEXTINPUT_SCOPE"
|
||||
HINT_GDK_TEXTINPUT_TITLE :: "SDL_GDK_TEXTINPUT_TITLE"
|
||||
HINT_HIDAPI_LIBUSB :: "SDL_HIDAPI_LIBUSB"
|
||||
HINT_HIDAPI_LIBUSB_GAMECUBE :: "SDL_HIDAPI_LIBUSB_GAMECUBE"
|
||||
HINT_HIDAPI_LIBUSB_WHITELIST :: "SDL_HIDAPI_LIBUSB_WHITELIST"
|
||||
HINT_HIDAPI_UDEV :: "SDL_HIDAPI_UDEV"
|
||||
HINT_GPU_DRIVER :: "SDL_GPU_DRIVER"
|
||||
@@ -247,6 +250,7 @@ HINT_WINDOWS_ENABLE_MENU_MNEMONICS :: "SDL_WINDOWS_ENABLE_MENU_MNEMONI
|
||||
HINT_WINDOWS_ENABLE_MESSAGELOOP :: "SDL_WINDOWS_ENABLE_MESSAGELOOP"
|
||||
HINT_WINDOWS_GAMEINPUT :: "SDL_WINDOWS_GAMEINPUT"
|
||||
HINT_WINDOWS_RAW_KEYBOARD :: "SDL_WINDOWS_RAW_KEYBOARD"
|
||||
HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYS :: "SDL_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYS"
|
||||
HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL :: "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL"
|
||||
HINT_WINDOWS_INTRESOURCE_ICON :: "SDL_WINDOWS_INTRESOURCE_ICON"
|
||||
HINT_WINDOWS_INTRESOURCE_ICON_SMALL :: "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
|
||||
|
||||
2
vendor/sdl3/sdl3_main.odin
vendored
2
vendor/sdl3/sdl3_main.odin
vendored
@@ -3,7 +3,7 @@ package sdl3
|
||||
|
||||
import "core:c"
|
||||
|
||||
main_func :: #type proc(argc: c.int, argv: [^]cstring)
|
||||
main_func :: #type proc "c" (argc: c.int, argv: [^]cstring) -> c.int
|
||||
|
||||
@(default_calling_convention="c", link_prefix="SDL_")
|
||||
foreign lib {
|
||||
|
||||
27
vendor/sdl3/sdl3_mutex.odin
vendored
27
vendor/sdl3/sdl3_mutex.odin
vendored
@@ -1,8 +1,24 @@
|
||||
package sdl3
|
||||
|
||||
import "core:c"
|
||||
|
||||
Mutex :: struct {}
|
||||
RWLock :: struct {}
|
||||
Semaphore :: struct {}
|
||||
Condition :: struct {}
|
||||
|
||||
InitStatus :: enum c.int {
|
||||
UNINITIALIZED,
|
||||
INITIALIZING,
|
||||
INITIALIZED,
|
||||
UNINITIALIZING,
|
||||
}
|
||||
|
||||
InitState :: struct {
|
||||
status: AtomicInt,
|
||||
thread: ThreadID,
|
||||
reserved: rawptr,
|
||||
}
|
||||
|
||||
@(default_calling_convention="c", link_prefix="SDL_", require_results)
|
||||
foreign lib {
|
||||
@@ -27,4 +43,15 @@ foreign lib {
|
||||
TryWaitSemaphore :: proc(sem: ^Semaphore) -> bool ---
|
||||
WaitSemaphore :: proc(sem: ^Semaphore) ---
|
||||
WaitSemaphoreTimeout :: proc(sem: ^Semaphore, timeout_ms: Sint32) ---
|
||||
|
||||
CreateCondition :: proc() -> ^Condition ---
|
||||
DestroyCondition :: proc(cond: ^Condition) ---
|
||||
SignalCondition :: proc(cond: ^Condition) ---
|
||||
BroadcastCondition :: proc(cond: ^Condition) ---
|
||||
WaitCondition :: proc(cond: ^Condition, mutex: ^Mutex) ---
|
||||
WaitConditionTimeout :: proc(cond: ^Condition, mutex: ^Mutex, timeout_ms: Sint32) -> bool ---
|
||||
|
||||
ShouldInit :: proc(state: ^InitState) -> bool ---
|
||||
ShouldQuit :: proc(state: ^InitState) -> bool ---
|
||||
SetInitialized :: proc(state: ^InitState, initialized: bool) ---
|
||||
}
|
||||
|
||||
50
vendor/sdl3/sdl3_pixels.odin
vendored
50
vendor/sdl3/sdl3_pixels.odin
vendored
@@ -75,20 +75,20 @@ DEFINE_PIXELFORMAT :: #force_inline proc "c" (type: PixelType, order: PackedOrde
|
||||
return PixelFormat(((1 << 28) | (Uint32(type) << 24) | (Uint32(order) << 20) | (Uint32(layout) << 16) | (Uint32(bits) << 8) | (Uint32(bytes) << 0)))
|
||||
}
|
||||
|
||||
@(require_results) PIXELFLAG :: proc "c" (format: PixelFormat) -> Uint32 { return ((Uint32(format) >> 28) & 0x0F) }
|
||||
@(require_results) PIXELTYPE :: proc "c" (format: PixelFormat) -> PixelType { return PixelType((Uint32(format) >> 24) & 0x0F) }
|
||||
@(require_results) PIXELORDER :: proc "c" (format: PixelFormat) -> PackedOrder { return PackedOrder((Uint32(format) >> 20) & 0x0F) }
|
||||
@(require_results) PIXELLAYOUT :: proc "c" (format: PixelFormat) -> PackedLayout { return PackedLayout((Uint32(format) >> 16) & 0x0F) }
|
||||
@(require_results) PIXELARRAYORDER :: proc "c" (format: PixelFormat) -> ArrayOrder { return ArrayOrder((Uint32(format) >> 20) & 0x0F) }
|
||||
@(require_results) PIXELFLAG :: #force_inline proc "c" (format: PixelFormat) -> Uint32 { return ((Uint32(format) >> 28) & 0x0F) }
|
||||
@(require_results) PIXELTYPE :: #force_inline proc "c" (format: PixelFormat) -> PixelType { return PixelType((Uint32(format) >> 24) & 0x0F) }
|
||||
@(require_results) PIXELORDER :: #force_inline proc "c" (format: PixelFormat) -> PackedOrder { return PackedOrder((Uint32(format) >> 20) & 0x0F) }
|
||||
@(require_results) PIXELLAYOUT :: #force_inline proc "c" (format: PixelFormat) -> PackedLayout { return PackedLayout((Uint32(format) >> 16) & 0x0F) }
|
||||
@(require_results) PIXELARRAYORDER :: #force_inline proc "c" (format: PixelFormat) -> ArrayOrder { return ArrayOrder((Uint32(format) >> 20) & 0x0F) }
|
||||
|
||||
|
||||
@(require_results)
|
||||
BITSPERPIXEL :: proc "c" (format: PixelFormat) -> Uint32 {
|
||||
BITSPERPIXEL :: #force_inline proc "c" (format: PixelFormat) -> Uint32 {
|
||||
return ISPIXELFORMAT_FOURCC(format) ? 0 : ((Uint32(format) >> 8) & 0xFF)
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISPIXELFORMAT_INDEXED :: proc "c" (format: PixelFormat) -> bool {
|
||||
ISPIXELFORMAT_INDEXED :: #force_inline proc "c" (format: PixelFormat) -> bool {
|
||||
return (!ISPIXELFORMAT_FOURCC(format) &&
|
||||
((PIXELTYPE(format) == .INDEX1) ||
|
||||
(PIXELTYPE(format) == .INDEX2) ||
|
||||
@@ -98,7 +98,7 @@ ISPIXELFORMAT_INDEXED :: proc "c" (format: PixelFormat) -> bool {
|
||||
|
||||
|
||||
@(require_results)
|
||||
ISPIXELFORMAT_PACKED :: proc "c" (format: PixelFormat) -> bool {
|
||||
ISPIXELFORMAT_PACKED :: #force_inline proc "c" (format: PixelFormat) -> bool {
|
||||
return (!ISPIXELFORMAT_FOURCC(format) &&
|
||||
((PIXELTYPE(format) == .PACKED8) ||
|
||||
(PIXELTYPE(format) == .PACKED16) ||
|
||||
@@ -106,7 +106,7 @@ ISPIXELFORMAT_PACKED :: proc "c" (format: PixelFormat) -> bool {
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISPIXELFORMAT_ARRAY :: proc "c" (format: PixelFormat) -> bool {
|
||||
ISPIXELFORMAT_ARRAY :: #force_inline proc "c" (format: PixelFormat) -> bool {
|
||||
return (!ISPIXELFORMAT_FOURCC(format) &&
|
||||
((PIXELTYPE(format) == .ARRAYU8) ||
|
||||
(PIXELTYPE(format) == .ARRAYU16) ||
|
||||
@@ -116,21 +116,21 @@ ISPIXELFORMAT_ARRAY :: proc "c" (format: PixelFormat) -> bool {
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISPIXELFORMAT_10BIT :: proc "c" (format: PixelFormat) -> bool {
|
||||
ISPIXELFORMAT_10BIT :: #force_inline proc "c" (format: PixelFormat) -> bool {
|
||||
return (!ISPIXELFORMAT_FOURCC(format) &&
|
||||
((PIXELTYPE(format) == .PACKED32) &&
|
||||
(PIXELLAYOUT(format) == .LAYOUT_2101010)))
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISPIXELFORMAT_FLOAT :: proc "c" (format: PixelFormat) -> bool {
|
||||
ISPIXELFORMAT_FLOAT :: #force_inline proc "c" (format: PixelFormat) -> bool {
|
||||
return (!ISPIXELFORMAT_FOURCC(format) &&
|
||||
((PIXELTYPE(format) == .ARRAYF16) ||
|
||||
(PIXELTYPE(format) == .ARRAYF32)))
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISPIXELFORMAT_ALPHA :: proc "c" (format: PixelFormat) -> bool {
|
||||
ISPIXELFORMAT_ALPHA :: #force_inline proc "c" (format: PixelFormat) -> bool {
|
||||
return ((ISPIXELFORMAT_PACKED(format) &&
|
||||
((PIXELORDER(format) == .ARGB) ||
|
||||
(PIXELORDER(format) == .RGBA) ||
|
||||
@@ -144,7 +144,7 @@ ISPIXELFORMAT_ALPHA :: proc "c" (format: PixelFormat) -> bool {
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISPIXELFORMAT_FOURCC :: proc "c" (format: PixelFormat) -> bool {
|
||||
ISPIXELFORMAT_FOURCC :: #force_inline proc "c" (format: PixelFormat) -> bool {
|
||||
return format != nil && PIXELFLAG(format) != 1
|
||||
}
|
||||
|
||||
@@ -369,63 +369,63 @@ ChromaLocation :: enum c.int {
|
||||
|
||||
|
||||
@(require_results)
|
||||
DEFINE_COLORSPACE :: proc "c" (type: ColorType, range: ColorRange, primaries: ColorPrimaries, transfer: TransferCharacteristics, matrix_: MatrixCoefficients, chroma: ChromaLocation) -> Colorspace {
|
||||
DEFINE_COLORSPACE :: #force_inline proc "c" (type: ColorType, range: ColorRange, primaries: ColorPrimaries, transfer: TransferCharacteristics, matrix_: MatrixCoefficients, chroma: ChromaLocation) -> Colorspace {
|
||||
return Colorspace((Uint32(type) << 28) | (Uint32(range) << 24) | (Uint32(chroma) << 20) |
|
||||
(Uint32(primaries) << 10) | (Uint32(transfer) << 5) | (Uint32(matrix_) << 0))
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
COLORSPACETYPE :: proc "c" (cspace: Colorspace) -> ColorType {
|
||||
COLORSPACETYPE :: #force_inline proc "c" (cspace: Colorspace) -> ColorType {
|
||||
return ColorType((Uint32(cspace) >> 28) & 0x0F)
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
COLORSPACERANGE :: proc "c" (cspace: Colorspace) -> ColorRange {
|
||||
COLORSPACERANGE :: #force_inline proc "c" (cspace: Colorspace) -> ColorRange {
|
||||
return ColorRange((Uint32(cspace) >> 24) & 0x0F)
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
COLORSPACECHROMA :: proc "c" (cspace: Colorspace) -> ChromaLocation {
|
||||
COLORSPACECHROMA :: #force_inline proc "c" (cspace: Colorspace) -> ChromaLocation {
|
||||
return ChromaLocation((Uint32(cspace) >> 20) & 0x0F)
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
COLORSPACEPRIMARIES :: proc "c" (cspace: Colorspace) -> ColorPrimaries {
|
||||
COLORSPACEPRIMARIES :: #force_inline proc "c" (cspace: Colorspace) -> ColorPrimaries {
|
||||
return ColorPrimaries((Uint32(cspace) >> 10) & 0x1F)
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
COLORSPACETRANSFER :: proc "c" (cspace: Colorspace) -> TransferCharacteristics {
|
||||
COLORSPACETRANSFER :: #force_inline proc "c" (cspace: Colorspace) -> TransferCharacteristics {
|
||||
return TransferCharacteristics((Uint32(cspace) >> 5) & 0x1F)
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
COLORSPACEMATRIX :: proc "c" (cspace: Colorspace) -> MatrixCoefficients {
|
||||
COLORSPACEMATRIX :: #force_inline proc "c" (cspace: Colorspace) -> MatrixCoefficients {
|
||||
return MatrixCoefficients(Uint32(cspace) & 0x1F)
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISCOLORSPACE_MATRIX_BT601 :: proc "c" (cspace: Colorspace) -> bool {
|
||||
ISCOLORSPACE_MATRIX_BT601 :: #force_inline proc "c" (cspace: Colorspace) -> bool {
|
||||
return COLORSPACEMATRIX(cspace) == .BT601 || COLORSPACEMATRIX(cspace) == .BT470BG
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISCOLORSPACE_MATRIX_BT709 :: proc "c" (cspace: Colorspace) -> bool {
|
||||
ISCOLORSPACE_MATRIX_BT709 :: #force_inline proc "c" (cspace: Colorspace) -> bool {
|
||||
return COLORSPACEMATRIX(cspace) == .BT709
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISCOLORSPACE_MATRIX_BT2020_NCL :: proc "c" (cspace: Colorspace) -> bool {
|
||||
ISCOLORSPACE_MATRIX_BT2020_NCL :: #force_inline proc "c" (cspace: Colorspace) -> bool {
|
||||
return COLORSPACEMATRIX(cspace) == .BT2020_NCL
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISCOLORSPACE_LIMITED_RANGE :: proc "c" (cspace: Colorspace) -> bool {
|
||||
ISCOLORSPACE_LIMITED_RANGE :: #force_inline proc "c" (cspace: Colorspace) -> bool {
|
||||
return COLORSPACERANGE(cspace) != .FULL
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
ISCOLORSPACE_FULL_RANGE :: proc "c" (cspace: Colorspace) -> bool {
|
||||
ISCOLORSPACE_FULL_RANGE :: #force_inline proc "c" (cspace: Colorspace) -> bool {
|
||||
return COLORSPACERANGE(cspace) == .FULL
|
||||
}
|
||||
|
||||
|
||||
25
vendor/sdl3/sdl3_rect.odin
vendored
25
vendor/sdl3/sdl3_rect.odin
vendored
@@ -24,38 +24,51 @@ RectToFRect :: #force_inline proc "c" (rect: Rect, frect: ^FRect) {
|
||||
|
||||
|
||||
@(require_results)
|
||||
PointInRect :: proc "c" (p: Point, r: Rect) -> bool {
|
||||
PointInRect :: #force_inline proc "c" (p: Point, r: Rect) -> bool {
|
||||
return ( (p.x >= r.x) && (p.x < (r.x + r.w)) &&
|
||||
(p.y >= r.y) && (p.y < (r.y + r.h)) )
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
PointInRectFloat :: proc "c" (p: FPoint, r: FRect) -> bool {
|
||||
PointInRectFloat :: #force_inline proc "c" (p: FPoint, r: FRect) -> bool {
|
||||
return ( (p.x >= r.x) && (p.x <= (r.x + r.w)) &&
|
||||
(p.y >= r.y) && (p.y <= (r.y + r.h)) )
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
RectEmpty :: proc "c" (r: Rect) -> bool {
|
||||
RectEmpty :: #force_inline proc "c" (r: Rect) -> bool {
|
||||
return r.w <= 0 || r.h <= 0
|
||||
}
|
||||
|
||||
|
||||
@(require_results)
|
||||
RectEqual :: proc "c" (a, b: Rect) -> bool {
|
||||
RectEqual :: #force_inline proc "c" (a, b: Rect) -> bool {
|
||||
return a == b
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
RectsEqualEpsilon :: #force_inline proc "c" (a, b: FRect, epsilon: f32) -> bool {
|
||||
return abs(a.x - b.x) <= epsilon &&
|
||||
abs(a.y - b.y) <= epsilon &&
|
||||
abs(a.w - b.w) <= epsilon &&
|
||||
abs(a.h - b.h) <= epsilon
|
||||
}
|
||||
|
||||
@(require_results)
|
||||
RectsEqualFloat :: #force_inline proc "c" (a, b: FRect) -> bool {
|
||||
return RectsEqualEpsilon(a, b, FLT_EPSILON)
|
||||
}
|
||||
|
||||
@(default_calling_convention="c", link_prefix="SDL_", require_results)
|
||||
foreign lib {
|
||||
HasRectIntersection :: proc(#by_ptr A, B: Rect) -> bool ---
|
||||
GetRectIntersection :: proc(#by_ptr A, B: Rect, result: ^Rect) -> bool ---
|
||||
GetRectUnion :: proc(#by_ptr A, B: Rect, result: ^Rect) -> bool ---
|
||||
GetRectEnclosingPoints :: proc(points: [^]Point, count: c.int, #by_ptr clip: Rect, result: ^Rect) -> bool ---
|
||||
GetRectEnclosingPoints :: proc(points: [^]Point, count: c.int, clip: Maybe(^Rect), result: ^Rect) -> bool ---
|
||||
GetRectAndLineIntersection :: proc(#by_ptr rect: Rect, X1, Y1, X2, Y2: ^c.int) -> bool ---
|
||||
HasRectIntersectionFloat :: proc(#by_ptr A, B: FRect) -> bool ---
|
||||
GetRectIntersectionFloat :: proc(#by_ptr A, B: FRect, result: ^FRect) -> bool ---
|
||||
GetRectUnionFloat :: proc(#by_ptr A, B: FRect, result: ^FRect) -> bool ---
|
||||
GetRectEnclosingPointsFloat :: proc(points: [^]FPoint, count: c.int, #by_ptr clip: FRect, result: ^FRect) -> bool ---
|
||||
GetRectEnclosingPointsFloat :: proc(points: [^]FPoint, count: c.int, clip: Maybe(^FRect), result: ^FRect) -> bool ---
|
||||
GetRectAndLineIntersectionFloat :: proc(#by_ptr rect: FRect, X1, Y1, X2, Y2: ^f32) -> bool ---
|
||||
}
|
||||
2
vendor/sdl3/sdl3_render.odin
vendored
2
vendor/sdl3/sdl3_render.odin
vendored
@@ -276,5 +276,5 @@ foreign lib {
|
||||
CreateGPURenderState :: proc(renderer: ^Renderer, #by_ptr createinfo: GPURenderStateCreateInfo) -> ^GPURenderState ---
|
||||
SetGPURenderStateFragmentUniforms :: proc(state: ^GPURenderState, slot_index: Uint32, data: rawptr, length: Uint32) -> bool ---
|
||||
SetGPURenderState :: proc(renderer: ^Renderer, state: ^GPURenderState) -> bool ---
|
||||
DestroyGPURenderState :: proc(renderer: ^Renderer) ---
|
||||
DestroyGPURenderState :: proc(renderer: ^GPURenderer) ---
|
||||
}
|
||||
|
||||
9
vendor/sdl3/sdl3_system.odin
vendored
9
vendor/sdl3/sdl3_system.odin
vendored
@@ -6,7 +6,7 @@ import "core:c"
|
||||
|
||||
import win32 "core:sys/windows"
|
||||
|
||||
WindowsMessageHook :: #type proc(userdata: rawptr, msg: ^win32.MSG) -> bool
|
||||
WindowsMessageHook :: #type proc "c" (userdata: rawptr, msg: ^win32.MSG) -> bool
|
||||
|
||||
@(default_calling_convention="c", link_prefix="SDL_")
|
||||
foreign lib {
|
||||
@@ -46,6 +46,11 @@ foreign lib {
|
||||
|
||||
RequestAndroidPermissionCallback :: #type proc "c" (userdata: rawptr, permission: cstring, granted: bool)
|
||||
|
||||
AndroidExternalStorageFlags :: distinct bit_set[AndroidExternalStorageFlag; Uint32]
|
||||
AndroidExternalStorageFlag :: enum Uint32 {
|
||||
Read,
|
||||
Write,
|
||||
}
|
||||
|
||||
@(default_calling_convention="c", link_prefix="SDL_", require_results)
|
||||
foreign lib {
|
||||
@@ -56,7 +61,7 @@ foreign lib {
|
||||
IsDeXMode :: proc() -> bool ---
|
||||
SendAndroidBackButton :: proc() ---
|
||||
GetAndroidInternalStoragePath :: proc() -> cstring ---
|
||||
GetAndroidExternalStorageState :: proc() -> Uint32 ---
|
||||
GetAndroidExternalStorageState :: proc() -> AndroidExternalStorageFlags ---
|
||||
GetAndroidExternalStoragePath :: proc() -> cstring ---
|
||||
GetAndroidCachePath :: proc() -> cstring ---
|
||||
RequestAndroidPermission :: proc(permission: cstring, cb: RequestAndroidPermissionCallback, userdata: rawptr) -> bool ---
|
||||
|
||||
5
vendor/sdl3/sdl3_video.odin
vendored
5
vendor/sdl3/sdl3_video.odin
vendored
@@ -151,7 +151,7 @@ EGLSurface :: distinct rawptr
|
||||
EGLAttrib :: distinct uintptr
|
||||
EGLint :: distinct c.int
|
||||
|
||||
EGLAttribArrayCallback :: #type proc "c" (userdata: rawptr) -> ^EGLint
|
||||
EGLAttribArrayCallback :: #type proc "c" (userdata: rawptr) -> [^]EGLint
|
||||
EGLIntArrayCallback :: #type proc "c" (userdata: rawptr, display: EGLDisplay, config: EGLConfig) -> [^]EGLint
|
||||
|
||||
GLAttr :: enum c.int {
|
||||
@@ -256,9 +256,12 @@ GL_CONTEXT_RESET_LOSE_CONTEXT :: GLContextResetNotification{.LOSE_CONTEXT}
|
||||
|
||||
PROP_DISPLAY_HDR_ENABLED_BOOLEAN :: "SDL.display.HDR_enabled"
|
||||
PROP_DISPLAY_KMSDRM_PANEL_ORIENTATION_NUMBER :: "SDL.display.KMSDRM.panel_orientation"
|
||||
PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER :: "SDL.display.wayland.wl_output"
|
||||
PROP_DISPLAY_WINDOWS_HMONITOR_POINTER :: "SDL.display.windows.hmonitor"
|
||||
|
||||
PROP_WINDOW_CREATE_ALWAYS_ON_TOP_BOOLEAN :: "SDL.window.create.always_on_top"
|
||||
PROP_WINDOW_CREATE_BORDERLESS_BOOLEAN :: "SDL.window.create.borderless"
|
||||
PROP_WINDOW_CREATE_CONSTRAIN_POPUP_BOOLEAN :: "SDL.window.create.constrain_popup"
|
||||
PROP_WINDOW_CREATE_FOCUSABLE_BOOLEAN :: "SDL.window.create.focusable"
|
||||
PROP_WINDOW_CREATE_EXTERNAL_GRAPHICS_CONTEXT_BOOLEAN :: "SDL.window.create.external_graphics_context"
|
||||
PROP_WINDOW_CREATE_FLAGS_NUMBER :: "SDL.window.create.flags"
|
||||
|
||||
Reference in New Issue
Block a user