From b42af64ccfe6a0c3b374dfb1aa3527ad45b6b4f9 Mon Sep 17 00:00:00 2001 From: treeform Date: Mon, 25 May 2026 13:35:54 -0700 Subject: [PATCH 1/2] Use qualified external value objects --- bindings/bindings.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bindings/bindings.nim b/bindings/bindings.nim index 118959da..446ae524 100644 --- a/bindings/bindings.nim +++ b/bindings/bindings.nim @@ -1,4 +1,4 @@ -import genny, pixie, pixie/internal, unicode +import genny, pixie, pixie/internal, unicode, bumpy, chroma var lastError: ref PixieError @@ -81,10 +81,10 @@ exportObject Matrix3: procs: mul(Matrix3, Matrix3) -exportObject Rect: +exportObject bumpy.Rect: discard -exportObject Color: +exportObject chroma.Color: discard exportObject ColorStop: From 4d8005fe9742ff5994bd9515eebf6bd102d065b2 Mon Sep 17 00:00:00 2001 From: treeform Date: Mon, 25 May 2026 14:35:10 -0700 Subject: [PATCH 2/2] Define vmath value bindings --- bindings/bindings.nim | 63 ++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/bindings/bindings.nim b/bindings/bindings.nim index 446ae524..a4b58780 100644 --- a/bindings/bindings.nim +++ b/bindings/bindings.nim @@ -1,4 +1,4 @@ -import genny, pixie, pixie/internal, unicode, bumpy, chroma +import genny, pixie, pixie/internal, unicode, bumpy, chroma, vmath var lastError: ref PixieError @@ -9,30 +9,14 @@ proc takeError(): string = proc checkError(): bool = result = lastError != nil -type - Vector2* {.bycopy.} = object - x*, y*: float32 +proc translate(x, y: float32): Mat3 = + vmath.translate(vec2(x, y)) - Matrix3* {.bycopy.} = object - values*: array[9, float32] +proc rotate(angle: float32): Mat3 = + vmath.rotate(angle) -proc matrix3(): Matrix3 = - cast[Matrix3](mat3()) - -proc mul(a, b: Matrix3): Matrix3 = - cast[Matrix3](cast[Mat3](a) * cast[Mat3](b)) - -proc translate(x, y: float32): Matrix3 = - cast[Matrix3](translate(vec2(x, y))) - -proc rotate(angle: float32): Matrix3 = - cast[Matrix3](rotate(angle)) - -proc scale(x, y: float32): Matrix3 = - cast[Matrix3](scale(vec2(x, y))) - -proc inverse(m: Matrix3): Matrix3 = - cast[Matrix3](inverse(cast[Mat3](m))) +proc scale(x, y: float32): Mat3 = + vmath.scale(vec2(x, y)) proc parseColor(s: string): Color {.raises: [PixieError]} = try: @@ -72,14 +56,33 @@ exportProcs: checkError takeError -exportObject Vector2: - discard - -exportObject Matrix3: +exportObject vmath.Vec2: + fields: + x: float32 + y: float32 + procs: + `+`(Vec2, Vec2) + `-`(Vec2, Vec2) + `*`(Vec2, Vec2) + `/`(Vec2, Vec2) + `*`(Vec2, float32) + `/`(Vec2, float32) + length(Vec2) + normalize(Vec2) + dot(Vec2, Vec2) + dist(Vec2, Vec2) + +exportObject vmath.Mat3: + fields: + values: array[9, float32] constructor: - matrix3 + mat3() procs: - mul(Matrix3, Matrix3) + `*`(Mat3, Mat3) + `*`(Mat3, Vec2) + inverse(Mat3) + transpose(Mat3) + determinant(Mat3) exportObject bumpy.Rect: discard @@ -306,7 +309,7 @@ exportProcs: translate(float32, float32) rotate(float32) scale(float32, float32) - inverse(Matrix3) + inverse(Mat3) snapToPixels mix(Color, Color, float32)