aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormateusmd <mikomdias@yahoo.com>2023-01-23 18:22:23 -0300
committerDrew DeVault <sir@cmpwn.com>2023-03-16 09:56:03 +0100
commit1e5cfa30a7e90b1e1efeb60d1ca0ec12aef75d8e (patch)
tree6cfdc318e4dd536246320ba6486d73513e4d881a
parentSwap io::{read,write}items for io::{read,write}all (diff)
downloadhare-chip8-1e5cfa30a7e90b1e1efeb60d1ca0ec12aef75d8e.tar.gz
added some missing bindings
-rw-r--r--sdl2/render.ha139
1 files changed, 127 insertions, 12 deletions
diff --git a/sdl2/render.ha b/sdl2/render.ha
index 2b0dd07..545aae5 100644
--- a/sdl2/render.ha
+++ b/sdl2/render.ha
@@ -6,6 +6,39 @@ export type SDL_Renderer = void;
// An efficient driver-specific representation of pixel data. (Opaque)
export type SDL_Texture = void;
+export type SDLPixelFormatValues = enum u32 {
+ SDL_PIXELFORMAT_UNKNOWN,
+ SDL_PIXELFORMAT_INDEX1LSB,
+ SDL_PIXELFORMAT_INDEX1MSB,
+ SDL_PIXELFORMAT_INDEX4LSB,
+ SDL_PIXELFORMAT_INDEX4MSB,
+ SDL_PIXELFORMAT_INDEX8,
+ SDL_PIXELFORMAT_RGB332,
+ SDL_PIXELFORMAT_RGB444,
+ SDL_PIXELFORMAT_RGB555,
+ SDL_PIXELFORMAT_BGR555,
+ SDL_PIXELFORMAT_ARGB4444,
+ SDL_PIXELFORMAT_RGBA4444,
+ SDL_PIXELFORMAT_ABGR4444,
+ SDL_PIXELFORMAT_BGRA4444,
+ SDL_PIXELFORMAT_ARGB1555,
+ SDL_PIXELFORMAT_RGBA5551,
+ SDL_PIXELFORMAT_ABGR1555,
+ SDL_PIXELFORMAT_BGRA5551,
+ SDL_PIXELFORMAT_RGB565,
+ SDL_PIXELFORMAT_BGR565,
+ SDL_PIXELFORMAT_RGB24,
+ SDL_PIXELFORMAT_BGR24,
+ SDL_PIXELFORMAT_RGB888,
+ SDL_PIXELFORMAT_RGBX8888,
+ SDL_PIXELFORMAT_BGR888,
+ SDL_PIXELFORMAT_BGRX8888,
+ SDL_PIXELFORMAT_ARGB8888,
+ SDL_PIXELFORMAT_RGBA8888,
+ SDL_PIXELFORMAT_ABGR8888,
+ SDL_PIXELFORMAT_BGRA8888,
+};
+
// Flags used when creating a rendering context.
export type SDL_RendererFlags = enum u32 {
NONE = 0,
@@ -15,6 +48,19 @@ export type SDL_RendererFlags = enum u32 {
TARGETTEXTURE = 0x00000008,
};
+export type SDL_RendererFlip = enum u32 {
+ SDL_FLIP_NONE,
+ SDL_FLIP_HORIZONTAL,
+ SDL_FLIP_VERTICAL,
+ SDL_FLIP_BOTH,
+};
+
+export type SDL_TextureAccess = enum {
+ SDL_TEXTUREACCESS_STATIC,
+ SDL_TEXTUREACCESS_STREAMING,
+ SDL_TEXTUREACCESS_TARGET,
+};
+
@symbol("SDL_CreateWindowAndRenderer") fn _SDL_CreateWindowAndRenderer(
width: int, height: int, SDL_WindowFlags: SDL_WindowFlags,
window: nullable **SDL_Window, renderer: nullable **SDL_Renderer) int;
@@ -161,6 +207,21 @@ export fn SDL_SetRenderDrawBlendMode(
return wrapvoid(_SDL_SetRenderDrawBlendMode(renderer, mode));
};
+@symbol("SDL_RenderDrawPoint") fn _SDL_RenderDrawPoint(
+ renderer: *SDL_Renderer,
+ x: int,
+ y: int,
+) int;
+
+// Draws a point (pixel) at the given coordinates
+export fn SDL_RenderDrawPoint(
+ renderer: *SDL_Renderer,
+ x: int,
+ y: int,
+) (void | error) = {
+ return wrapvoid(_SDL_RenderDrawPoint(renderer, x, y));
+};
+
@symbol("SDL_RenderCopy") fn _SDL_RenderCopy(renderer: *SDL_Renderer,
texture: *SDL_Texture, srcrect: nullable *SDL_Rect, dstrect: nullable *SDL_Rect) int;
@@ -174,6 +235,31 @@ export fn SDL_RenderCopy(
return wrapvoid(_SDL_RenderCopy(renderer, texture, srcrect, dstrect));
};
+@symbol("SDL_RenderCopyEx") fn _SDL_RenderCopyEx(
+ renderer: *SDL_Renderer,
+ texture: *SDL_Texture,
+ srcrect: nullable *SDL_Rect,
+ dstrect: nullable *SDL_Rect,
+ angle : f64,
+ center: nullable *SDL_Point,
+ flip: SDL_RendererFlip,
+) int;
+
+// Sets the rendering pixel scale
+export fn SDL_RenderCopyEx(
+ renderer: *SDL_Renderer,
+ texture: *SDL_Texture,
+ srcrect: nullable *SDL_Rect,
+ dstrect: nullable *SDL_Rect,
+ angle : f64,
+ center: nullable *SDL_Point,
+ flip: SDL_RendererFlip,
+) (void | error) = {
+ return wrapvoid(_SDL_RenderCopyEx(
+ renderer, texture, srcrect, dstrect, angle, center, flip)
+ );
+};
+
@symbol("SDL_RenderDrawRect") fn _SDL_RenderDrawRect(
renderer: *SDL_Renderer, rect: const nullable *SDL_Rect) int;
@@ -196,13 +282,37 @@ export fn SDL_RenderFillRect(
return wrapvoid(_SDL_RenderFillRect(renderer, rect));
};
-@symbol("SDL_CreateTexture") fn _SDL_CreateTexture(renderer: *SDL_Renderer,
- format: u32, access: int, w: int, h: int) *SDL_Texture;
+@symbol("SDL_RenderSetLogicalSize") fn _SDL_RenderSetLogicalSize(
+ renderer: *SDL_Renderer, w: int, h: int) int;
-// Create a texture for a rendering context.
-export fn SDL_CreateTexture(renderer: *SDL_Renderer,
- format: u32, access: int, w: int, h: int) (*SDL_Texture | error) = {
- return wrapptr(_SDL_CreateTexture(renderer, format, access, w, h))?: *SDL_Texture;
+// Sets the rendering pixel scale
+export fn SDL_RenderSetLogicalSize(
+ renderer: *SDL_Renderer,
+ w: int,
+ h: int,
+) (void | error) = {
+ return wrapvoid(_SDL_RenderSetLogicalSize(
+ renderer, w, h)
+ );
+};
+
+@symbol("SDL_CreateTexture") fn _SDL_CreateTexture(
+ renderer: *SDL_Renderer,
+ format: u32,
+ access: int,
+ w: int,
+ h: int) nullable *SDL_Texture;
+
+export fn SDL_CreateTexture(
+ renderer: *SDL_Renderer,
+ format: u32,
+ access: int,
+ w: int,
+ h: int
+) (*SDL_Texture | error) = {
+ return wrapptr(_SDL_CreateTexture(
+ renderer, format, access, w, h)
+ )?: *SDL_Texture;
};
@symbol("SDL_UpdateTexture") fn _SDL_UpdateTexture(texture: *SDL_Texture,
@@ -228,9 +338,14 @@ export fn SDL_LockTexture(texture: *SDL_Texture,
// Unlock a texture, uploading the changes to video memory, if needed.
export @symbol("SDL_UnlockTexture") fn SDL_UnlockTexture(texture: *SDL_Texture) void;
-// An enumeration of texture access patterns.
-export type SDL_TextureAccess = enum int {
- STATIC,
- STREAMING,
- TARGET
-};
+@symbol("SDL_RenderSetScale") fn _SDL_RenderSetScale(
+ renderer: *SDL_Renderer, scaleX: f32, scaleY: f32) int;
+
+// Sets the rendering pixel scale
+export fn SDL_RenderSetScale(
+ renderer: *SDL_Renderer,
+ scaleX: f32,
+ scaleY: f32,
+) (void | error) = {
+ return wrapvoid(_SDL_RenderSetScale(renderer, scaleX, scaleY));
+}; \ No newline at end of file