This commit is contained in:
agra
2026-02-11 20:41:43 +02:00
parent 94b0296fd5
commit 9d96f05d3b
13 changed files with 460 additions and 70 deletions

View File

@@ -1,29 +1,8 @@
#import "modules/std.sx";
List :: struct ($T: Type) {
items: [*]T = null;
len: s64 = 0;
cap: s64 = 0;
}
append :: (list: *List($T), item: T) {
if list.len >= list.cap {
new_cap := if list.cap == 0 then 4 else list.cap * 2;
new_items : [*]T = xx malloc(new_cap * size_of(T));
if list.len > 0 {
memcpy(new_items, list.items, list.len * size_of(T));
free(list.items);
}
list.items = new_items;
list.cap = new_cap;
}
list.items[list.len] = item;
list.len += 1;
}
main :: () {
list := List(s32).{};
append(list, 3);
append(list, 1);
list.append(3);

19
examples/27-graphics.sx Normal file
View File

@@ -0,0 +1,19 @@
#import "modules/raylib.sx";
main :: () {
InitWindow(800, 600, "sx - Triangle");
while !WindowShouldClose() {
BeginDrawing();
ClearBackground(Color.{50, 50, 50, 255});
v1 := Vector2.{400.0, 100.0};
v2 := Vector2.{200.0, 500.0};
v3 := Vector2.{600.0, 500.0};
DrawTriangle(v1, v2, v3, Color.{230, 41, 55, 255});
EndDrawing();
}
CloseWindow();
}

View File

@@ -0,0 +1,17 @@
#library "raylib";
Color :: struct {
r, g, b, a: u8;
}
Vector2 :: struct {
x, y: f32;
}
InitWindow :: (width: s32, height: s32, title: [:0]u8) -> void #foreign;
CloseWindow :: () -> void #foreign;
WindowShouldClose :: () -> bool #foreign;
BeginDrawing :: () -> void #foreign;
EndDrawing :: () -> void #foreign;
ClearBackground :: (color: Color) -> void #foreign;
DrawTriangle :: (v1: Vector2, v2: Vector2, v3: Vector2, color: Color) -> void #foreign;

View File

@@ -305,3 +305,24 @@ build_print :: (fmt: string) -> string {
print :: ($fmt: string, args: ..Any) {
#insert build_print(fmt);
}
List :: struct ($T: Type) {
items: [*]T = null;
len: s64 = 0;
cap: s64 = 0;
}
append :: (list: *List($T), item: T) {
if list.len >= list.cap {
new_cap := if list.cap == 0 then 4 else list.cap * 2;
new_items : [*]T = xx malloc(new_cap * size_of(T));
if list.len > 0 {
memcpy(new_items, list.items, list.len * size_of(T));
free(list.items);
}
list.items = new_items;
list.cap = new_cap;
}
list.items[list.len] = item;
list.len += 1;
}