Add functions for window creation
This commit is contained in:
parent
445e6acb08
commit
7319c93cc0
1 changed files with 27 additions and 0 deletions
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue