Add functions for window creation

This commit is contained in:
BirDt_ 2026-03-29 17:19:32 +08:00
parent 445e6acb08
commit 7319c93cc0

View file

@ -339,5 +339,32 @@
(with-drawing
execute-systems))
;; Utility function for guarding parameter values
(define (guarded-parameter default predicate)
(make-parameter default (lambda (val)
(if (predicate val)
val
default))))
;; Window creation
(export *window-size* *window-title* create-window)
;; Window size to use
(define *window-size* (guarded-parameter '(768 . 576)
(lambda (x)
(and (pair? x)
(integer? (car x))
(integer? (cdr x))))))
;; Window title
(define *window-title* (guarded-parameter "imugi"
string?))
(define (create-window #!key (process next-frame) (close-predicate window-should-close?))
(init-window (car (*window-size*)) (cdr (*window-size*)) (*window-title*))
(let loop ()
(process)
(unless (close-predicate)
(loop)))
(close-window))
)