aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/affine.lisp
diff options
context:
space:
mode:
authorColin Okay <colin@cicadas.surf>2022-06-30 09:29:28 -0500
committerColin Okay <colin@cicadas.surf>2022-06-30 09:29:28 -0500
commit98b5811d8b50d20f8c15e9b202f0d3f0457df58b (patch)
tree6562850bbd01236cac901208d528ca2dacf83dc0 /src/core/affine.lisp
parent642c0c594a8abe05be1cb887110ed3e602cd0e48 (diff)
[modify] affine fns are generic; [add] safe-slot util
Diffstat (limited to 'src/core/affine.lisp')
-rw-r--r--src/core/affine.lisp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/core/affine.lisp b/src/core/affine.lisp
index cabe17c..4585a81 100644
--- a/src/core/affine.lisp
+++ b/src/core/affine.lisp
@@ -15,7 +15,9 @@
(setf (cached-model affine) nil
(cached-projected-matrix affine) nil))))
-(defun scale-by (affine amount)
+
+
+(defmethod scale-by ((affine affine) amount)
(with-slots (scale-x scale-y) affine
(setf scale-x (* amount scale-x)
scale-y (* amount scale-y))))
@@ -26,19 +28,19 @@
(defun set-height-preserve-aspect (affine new-height)
(scale-by affine (/ new-height (height affine) )))
-(defun width (affine)
+(defmethod width ((affine affine))
(with-slots (scale-x base-width) affine
(* scale-x base-width)))
-(defun height (affine)
+(defmethod height ((affine affine))
(with-slots (scale-y base-height) affine
(* scale-y base-height)))
-(defun (setf width) (newval affine)
+(defmethod (setf width) (newval (affine affine))
(with-slots (scale-x base-width) affine
(setf scale-x (coerce (/ newval base-width) 'single-float))))
-(defun (setf height) (newval affine)
+(defmethod (setf height) (newval (affine affine))
(with-slots (scale-y base-height) affine
(setf scale-y (coerce (/ newval base-height) 'single-float))))