290 lines
13 KiB
Plaintext
290 lines
13 KiB
Plaintext
module sdl3::sdl;
|
|
|
|
const char ALPHA_OPAQUE = 255;
|
|
const char ALPHA_TRANSPARENT = 0;
|
|
const float ALPHA_OPAQUE_FLOAT = 1.0;
|
|
const float ALPHA_TRANSPARENT_FLOAT = 0.0;
|
|
|
|
enum PixelType : inline CInt {
|
|
PIXELTYPE_UNKNOWN,
|
|
PIXELTYPE_INDEX1,
|
|
PIXELTYPE_INDEX4,
|
|
PIXELTYPE_INDEX8,
|
|
PIXELTYPE_PACKED8,
|
|
PIXELTYPE_PACKED16,
|
|
PIXELTYPE_PACKED32,
|
|
PIXELTYPE_ARRAYU8,
|
|
PIXELTYPE_ARRAYU16,
|
|
PIXELTYPE_ARRAYU32,
|
|
PIXELTYPE_ARRAYF16,
|
|
PIXELTYPE_ARRAYF32,
|
|
PIXELTYPE_INDEX2
|
|
}
|
|
|
|
enum SDL_BitmapOrder : inline CInt {
|
|
BITMAPORDER_NONE,
|
|
BITMAPORDER_4321,
|
|
BITMAPORDER_1234
|
|
}
|
|
|
|
enum PackedOrder : inline CInt {
|
|
PACKEDORDER_NONE,
|
|
PACKEDORDER_XRGB,
|
|
PACKEDORDER_RGBX,
|
|
PACKEDORDER_ARGB,
|
|
PACKEDORDER_RGBA,
|
|
PACKEDORDER_XBGR,
|
|
PACKEDORDER_BGRX,
|
|
PACKEDORDER_ABGR,
|
|
PACKEDORDER_BGRA
|
|
}
|
|
|
|
enum ArrayOrder : inline CInt {
|
|
ARRAYORDER_NONE,
|
|
ARRAYORDER_RGB,
|
|
ARRAYORDER_RGBA,
|
|
ARRAYORDER_ARGB,
|
|
ARRAYORDER_BGR,
|
|
ARRAYORDER_BGRA,
|
|
ARRAYORDER_ABGR
|
|
}
|
|
|
|
enum PackedLayout : inline CInt {
|
|
PACKEDLAYOUT_NONE,
|
|
PACKEDLAYOUT_332,
|
|
PACKEDLAYOUT_4444,
|
|
PACKEDLAYOUT_1555,
|
|
PACKEDLAYOUT_5551,
|
|
PACKEDLAYOUT_565,
|
|
PACKEDLAYOUT_8888,
|
|
PACKEDLAYOUT_2101010,
|
|
PACKEDLAYOUT_1010102
|
|
}
|
|
|
|
// TODO: a bunch of pixleformat related macros here i don't want to bother implementing
|
|
|
|
typedef PixelFormat = CInt;
|
|
|
|
const PixelFormat PIXELFORMAT_UNKNOWN @builtin = 0;
|
|
const PixelFormat PIXELFORMAT_INDEX1LSB @builtin = 0x11100100;
|
|
const PixelFormat PIXELFORMAT_INDEX1MSB @builtin = 0x11200100;
|
|
const PixelFormat PIXELFORMAT_INDEX2LSB @builtin = 0x1c100200;
|
|
const PixelFormat PIXELFORMAT_INDEX2MSB @builtin = 0x1c200200;
|
|
const PixelFormat PIXELFORMAT_INDEX4LSB @builtin = 0x12100400;
|
|
const PixelFormat PIXELFORMAT_INDEX4MSB @builtin = 0x12200400;
|
|
const PixelFormat PIXELFORMAT_INDEX8 @builtin = 0x13000801;
|
|
const PixelFormat PIXELFORMAT_RGB332 @builtin = 0x14110801;
|
|
const PixelFormat PIXELFORMAT_XRGB4444 @builtin = 0x15120c02;
|
|
const PixelFormat PIXELFORMAT_XBGR4444 @builtin = 0x15520c02;
|
|
const PixelFormat PIXELFORMAT_XRGB1555 @builtin = 0x15130f02;
|
|
const PixelFormat PIXELFORMAT_XBGR1555 @builtin = 0x15530f02;
|
|
const PixelFormat PIXELFORMAT_ARGB4444 @builtin = 0x15321002;
|
|
const PixelFormat PIXELFORMAT_RGBA4444 @builtin = 0x15421002;
|
|
const PixelFormat PIXELFORMAT_ABGR4444 @builtin = 0x15721002;
|
|
const PixelFormat PIXELFORMAT_BGRA4444 @builtin = 0x15821002;
|
|
const PixelFormat PIXELFORMAT_ARGB1555 @builtin = 0x15331002;
|
|
const PixelFormat PIXELFORMAT_RGBA5551 @builtin = 0x15441002;
|
|
const PixelFormat PIXELFORMAT_ABGR1555 @builtin = 0x15731002;
|
|
const PixelFormat PIXELFORMAT_BGRA5551 @builtin = 0x15841002;
|
|
const PixelFormat PIXELFORMAT_RGB565 @builtin = 0x15151002;
|
|
const PixelFormat PIXELFORMAT_BGR565 @builtin = 0x15551002;
|
|
const PixelFormat PIXELFORMAT_RGB24 @builtin = 0x17101803;
|
|
const PixelFormat PIXELFORMAT_BGR24 @builtin = 0x17401803;
|
|
const PixelFormat PIXELFORMAT_XRGB8888 @builtin = 0x16161804;
|
|
const PixelFormat PIXELFORMAT_RGBX8888 @builtin = 0x16261804;
|
|
const PixelFormat PIXELFORMAT_XBGR8888 @builtin = 0x16561804;
|
|
const PixelFormat PIXELFORMAT_BGRX8888 @builtin = 0x16661804;
|
|
const PixelFormat PIXELFORMAT_ARGB8888 @builtin = 0x16362004;
|
|
const PixelFormat PIXELFORMAT_RGBA8888 @builtin = 0x16462004;
|
|
const PixelFormat PIXELFORMAT_ABGR8888 @builtin = 0x16762004;
|
|
const PixelFormat PIXELFORMAT_BGRA8888 @builtin = 0x16862004;
|
|
const PixelFormat PIXELFORMAT_XRGB2101010 @builtin = 0x16172004;
|
|
const PixelFormat PIXELFORMAT_XBGR2101010 @builtin = 0x16572004;
|
|
const PixelFormat PIXELFORMAT_ARGB2101010 @builtin = 0x16372004;
|
|
const PixelFormat PIXELFORMAT_ABGR2101010 @builtin = 0x16772004;
|
|
const PixelFormat PIXELFORMAT_RGB48 @builtin = 0x18103006;
|
|
const PixelFormat PIXELFORMAT_BGR48 @builtin = 0x18403006;
|
|
const PixelFormat PIXELFORMAT_RGBA64 @builtin = 0x18204008;
|
|
const PixelFormat PIXELFORMAT_ARGB64 @builtin = 0x18304008;
|
|
const PixelFormat PIXELFORMAT_BGRA64 @builtin = 0x18504008;
|
|
const PixelFormat PIXELFORMAT_ABGR64 @builtin = 0x18604008;
|
|
const PixelFormat PIXELFORMAT_RGB48_FLOAT @builtin = 0x1a103006;
|
|
const PixelFormat PIXELFORMAT_BGR48_FLOAT @builtin = 0x1a403006;
|
|
const PixelFormat PIXELFORMAT_RGBA64_FLOAT @builtin = 0x1a204008;
|
|
const PixelFormat PIXELFORMAT_ARGB64_FLOAT @builtin = 0x1a304008;
|
|
const PixelFormat PIXELFORMAT_BGRA64_FLOAT @builtin = 0x1a504008;
|
|
const PixelFormat PIXELFORMAT_ABGR64_FLOAT @builtin = 0x1a604008;
|
|
const PixelFormat PIXELFORMAT_RGB96_FLOAT @builtin = 0x1b10600c;
|
|
const PixelFormat PIXELFORMAT_BGR96_FLOAT @builtin = 0x1b40600c;
|
|
const PixelFormat PIXELFORMAT_RGBA128_FLOAT @builtin = 0x1b208010;
|
|
const PixelFormat PIXELFORMAT_ARGB128_FLOAT @builtin = 0x1b308010;
|
|
const PixelFormat PIXELFORMAT_BGRA128_FLOAT @builtin = 0x1b508010;
|
|
const PixelFormat PIXELFORMAT_ABGR128_FLOAT @builtin = 0x1b608010;
|
|
const PixelFormat PIXELFORMAT_YV12 @builtin = 0x32315659;
|
|
const PixelFormat PIXELFORMAT_IYUV @builtin = 0x56555949;
|
|
const PixelFormat PIXELFORMAT_YUY2 @builtin = 0x32595559;
|
|
const PixelFormat PIXELFORMAT_UYVY @builtin = 0x59565955;
|
|
const PixelFormat PIXELFORMAT_YVYU @builtin = 0x55595659;
|
|
const PixelFormat PIXELFORMAT_NV12 @builtin = 0x3231564e;
|
|
const PixelFormat PIXELFORMAT_NV21 @builtin = 0x3132564e;
|
|
const PixelFormat PIXELFORMAT_P010 @builtin = 0x30313050;
|
|
const PixelFormat PIXELFORMAT_EXTERNAL_OES @builtin = 0x2053454f;
|
|
const PixelFormat PIXELFORMAT_MJPG @builtin = 0x47504a4d;
|
|
// FIXME: this only works in little-endian systems
|
|
const PixelFormat PIXELFORMAT_RGBA32 @builtin = PIXELFORMAT_ABGR8888;
|
|
const PixelFormat PIXELFORMAT_ARGB32 @builtin = PIXELFORMAT_BGRA8888;
|
|
const PixelFormat PIXELFORMAT_BGRA32 @builtin = PIXELFORMAT_ARGB8888;
|
|
const PixelFormat PIXELFORMAT_ABGR32 @builtin = PIXELFORMAT_RGBA8888;
|
|
const PixelFormat PIXELFORMAT_RGBX32 @builtin = PIXELFORMAT_XBGR8888;
|
|
const PixelFormat PIXELFORMAT_XRGB32 @builtin = PIXELFORMAT_BGRX8888;
|
|
const PixelFormat PIXELFORMAT_BGRX32 @builtin = PIXELFORMAT_XRGB8888;
|
|
const PixelFormat PIXELFORMAT_XBGR32 @builtin = PIXELFORMAT_RGBX8888;
|
|
|
|
|
|
enum ColorType : inline CInt {
|
|
COLOR_TYPE_UNKNOWN,
|
|
COLOR_TYPE_RGB,
|
|
COLOR_TYPE_YCBCR
|
|
}
|
|
|
|
enum ColorRange : inline CInt {
|
|
COLOR_RANGE_UNKNOWN,
|
|
COLOR_RANGE_LIMITED,
|
|
COLOR_RANGE_FULL
|
|
}
|
|
|
|
typedef ColorPrimaries = CInt;
|
|
|
|
const ColorPrimaries COLOR_PRIMARIES_UNKNOWN @builtin = 0;
|
|
const ColorPrimaries COLOR_PRIMARIES_BT709 @builtin = 1;
|
|
const ColorPrimaries COLOR_PRIMARIES_UNSPECIFIED @builtin = 2;
|
|
const ColorPrimaries COLOR_PRIMARIES_BT470M @builtin = 4;
|
|
const ColorPrimaries COLOR_PRIMARIES_BT470BG @builtin = 5;
|
|
const ColorPrimaries COLOR_PRIMARIES_BT601 @builtin = 6;
|
|
const ColorPrimaries COLOR_PRIMARIES_SMPTE240 @builtin = 7;
|
|
const ColorPrimaries COLOR_PRIMARIES_GENERIC_FILM @builtin = 8;
|
|
const ColorPrimaries COLOR_PRIMARIES_BT2020 @builtin = 9;
|
|
const ColorPrimaries COLOR_PRIMARIES_XYZ @builtin = 10;
|
|
const ColorPrimaries COLOR_PRIMARIES_SMPTE431 @builtin = 11;
|
|
const ColorPrimaries COLOR_PRIMARIES_SMPTE432 @builtin = 12;
|
|
const ColorPrimaries COLOR_PRIMARIES_EBU3213 @builtin = 22;
|
|
const ColorPrimaries COLOR_PRIMARIES_CUSTOM @builtin = 31;
|
|
|
|
typedef TransferCharacteristics = CInt;
|
|
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_UNKNOWN @builtin = 0;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_BT709 @builtin = 1;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_UNSPECIFIED @builtin = 2;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_GAMMA22 @builtin = 4;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_GAMMA28 @builtin = 5;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_BT601 @builtin = 6;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_SMPTE240 @builtin = 7;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_LINEAR @builtin = 8;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_LOG100 @builtin = 9;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_LOG100_SQRT10 @builtin = 10;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_IEC61966 @builtin = 11;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_BT1361 @builtin = 12;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_SRGB @builtin = 13;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_BT2020_10BIT @builtin = 14;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_BT2020_12BIT @builtin = 15;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_PQ @builtin = 16;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_SMPTE428 @builtin = 17;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_HLG @builtin = 18;
|
|
const TransferCharacteristics TRANSFER_CHARACTERISTICS_CUSTOM @builtin = 31;
|
|
|
|
typedef MatrixCoefficients = CInt;
|
|
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_IDENTITY @builtin = 0;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_BT709 @builtin = 1;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_UNSPECIFIED @builtin = 2;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_FCC @builtin = 4;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_BT470BG @builtin = 5;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_BT601 @builtin = 6;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_SMPTE240 @builtin = 7;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_YCGCO @builtin = 8;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_BT2020_NCL @builtin = 9;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_BT2020_CL @builtin = 10;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_SMPTE2085 @builtin = 11;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_CHROMA_DERIVED_NCL @builtin = 12;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_CHROMA_DERIVED_CL @builtin = 13;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_ICTCP @builtin = 14;
|
|
const MatrixCoefficients MATRIX_COEFFICIENTS_CUSTOM @builtin = 31;
|
|
|
|
|
|
typedef ChromaLocation = CInt;
|
|
|
|
const ChromaLocation CHROMA_LOCATION_NONE @builtin = 0;
|
|
const ChromaLocation CHROMA_LOCATION_LEFT @builtin = 1;
|
|
const ChromaLocation CHROMA_LOCATION_CENTER @builtin = 2;
|
|
const ChromaLocation CHROMA_LOCATION_TOPLEFT @builtin = 3;
|
|
|
|
// TODO: a bunch color space related macros are omitted
|
|
|
|
typedef Colorspace = CInt;
|
|
|
|
const Colorspace COLORSPACE_UNKNOWN @builtin = 0;
|
|
const Colorspace COLORSPACE_SRGB @builtin = 0x120005a0;
|
|
const Colorspace COLORSPACE_SRGB_LINEAR @builtin = 0x12000500;
|
|
const Colorspace COLORSPACE_HDR10 @builtin = 0x12002600;
|
|
const Colorspace COLORSPACE_JPEG @builtin = 0x220004c6;
|
|
const Colorspace COLORSPACE_BT601_LIMITED @builtin = 0x211018c6;
|
|
const Colorspace COLORSPACE_BT601_FULL @builtin = 0x221018c6;
|
|
const Colorspace COLORSPACE_BT709_LIMITED @builtin = 0x21100421;
|
|
const Colorspace COLORSPACE_BT709_FULL @builtin = 0x22100421;
|
|
const Colorspace COLORSPACE_BT2020_LIMITED @builtin = 0x21102609;
|
|
const Colorspace COLORSPACE_BT2020_FULL @builtin = 0x22102609;
|
|
const Colorspace COLORSPACE_RGB_DEFAULT @builtin = COLORSPACE_SRGB;
|
|
const Colorspace COLORSPACE_YUV_DEFAULT @builtin = COLORSPACE_JPEG;
|
|
|
|
struct Color {
|
|
char r;
|
|
char g;
|
|
char b;
|
|
char a;
|
|
}
|
|
|
|
struct FColor {
|
|
float r;
|
|
float g;
|
|
float b;
|
|
float a;
|
|
}
|
|
|
|
struct Palette {
|
|
int ncolors;
|
|
Color* colors;
|
|
uint version;
|
|
int refcount;
|
|
}
|
|
|
|
struct PixelFormatDetails {
|
|
PixelFormat format;
|
|
char bits_per_pixel;
|
|
char bytes_per_pixel;
|
|
char[2] padding;
|
|
uint rmask;
|
|
uint gmask;
|
|
uint bmask;
|
|
uint amask;
|
|
char rbits;
|
|
char gbits;
|
|
char bbits;
|
|
char abits;
|
|
char rshift;
|
|
char gshift;
|
|
char bshift;
|
|
char ashift;
|
|
}
|
|
|
|
extern fn ZString get_pixel_format_name(PixelFormat format) @extern("SDL_GetPixelFormatName");
|
|
extern fn bool get_masks_for_pixel_format(PixelFormat format, int *bpp, uint *rmask, uint *gmask, uint *bmask, uint *amask) @extern("SDL_GetMasksForPixelFormat");
|
|
extern fn PixelFormat get_pixel_format_for_masks(int bpp, uint rmask, uint gmask, uint bmask, uint amask) @extern("SDL_GetPixelFormatForMasks");
|
|
extern fn PixelFormatDetails* get_pixel_format_details(PixelFormat format) @extern("SDL_GetPixelFormatDetails");
|
|
extern fn Palette* create_palette(int ncolors) @extern("SDL_CreatePalette");
|
|
extern fn bool set_palette_colors(Palette* palette, Color* colors, int firstcolor, int ncolors) @extern("SDL_SetPaletteColors");
|
|
extern fn void destroy_palette(Palette* palette) @extern("SDL_DestroyPalette");
|
|
extern fn uint map_rgb(PixelFormatDetails *format, Palette* palette, char r, char g, char b) @extern("SDL_MapRGB");
|
|
extern fn uint map_rgba(PixelFormatDetails *format, Palette* palette, char r, char g, char b, char a) @extern("SDL_MapRGBA");
|
|
extern fn void get_rgb(uint pixel, PixelFormatDetails *format, Palette* palette, char *r, char *g, char *b) @extern("SDL_GetRGB");
|
|
extern fn void get_rgba(uint pixel, PixelFormatDetails *format, Palette* palette, char *r, char *g, char *b, char *a) @extern("SDL_GetRGBA");
|