Open Kevinpgalligan opened 5 months ago
As a workaround this could be achieved using the stealth-mixin
library.
(defclass widgets-mixin ...)
(defsketch my-sketch (...)
...)
(stealth-mixin:add-mixin 'widgets-mixin 'my-sketch)
An example:
(defpackage #:sketch-user
(:use #:cl)
(:local-nicknames (#:s #:sketch)))
(in-package #:sketch-user)
(defclass black-background-mixin () ())
(defmethod s:draw :before ((sketch black-background-mixin) &key &allow-other-keys)
(s:background s:+black+))
(s:defsketch test ()
(s:circle 200 200 100))
(make-instance 'test)
(sleep 5)
(stealth-mixin:add-mixin 'black-background-mixin 'test)
It would be nice if we could share functionality between sketches, and also if the sketch could be instantiated with user-supplied parameters. For this I suggest an alternative
defsketch
interface, while keeping the old one for simplicity / backward compatibility.Example
defsketchx
interface (x
is for "extended", maybe?):Then instantiation might look like
(make-instance 'my-sketch :x 70 :y 120)
. Maybesome-mixin-class
hooks intodraw
and always provides a black background.The specific application I have in mind is having a
widgets-window
class that automatically creates a separate window with sliders/buttons to modify thesketch
parameters.