(use (prefix glfw3 glfw:) (prefix opengl-glew gl:) (prefix nuklear nk:)) (require-library nuklear-glfw-opengl2) (import (prefix nuklear-glfw-opengl2 backend:)) (define width 250) (define height 150) (glfw:init) (glfw:make-window width height "Hello World") (glfw:make-context-current (glfw:window)) (set!-values (width height) (glfw:get-window-size (glfw:window))) (define context (backend:init! (glfw:window) #t)) (backend:init-font!) (define quit? #f) (define show-greeting? #f) (define layout (nk:make-panel)) (define popup-layout (nk:make-panel)) (define garbage #f) (let loop () (when (and (not (glfw:window-should-close (glfw:window))) (not quit?)) (glfw:poll-events) (backend:new-frame) (when (nk:window-begin context layout "Hello World!" (nk:make-rect 10 10 192 100) '(border no-scrollbar movable)) (when (= 0 (random 10)) (print* "GC") (gc #t) (when (= 0 (random 2)) (print* "2") (set! garbage (make-blob (random 100000))) (gc #t))) (nk:layout-row-dynamic context 30 2) (when (nk:button-label context "Click Me!") (printf "Yay\n") (set! show-greeting? #t)) (when (nk:button-label context "Quit") (set! quit? #t)) (when show-greeting? (if (nk:popup-begin context popup-layout #f "Greeting" '(dynamic) (nk:make-rect 15 50 200 150)) (begin (nk:layout-row-dynamic context 25 1) (nk:label context "Hello World!" 'centered) (nk:layout-row-dynamic context 25 1) (when (nk:button-label context "OK") (set! show-greeting? #f) (nk:popup-close context)) (nk:popup-end context)) (set! show-greeting? #f)))) (nk:window-end context) (let-values (((width height) (glfw:get-window-size (glfw:window)))) (gl:viewport 0 0 width height)) (gl:clear gl:+color-buffer-bit+) (gl:clear-color (/ 28 255) (/ 48 255) (/ 62 255) 0) (backend:render!) (glfw:swap-buffers (glfw:window)) (loop))) (backend:shutdown!) (glfw:terminate) ;; $ hg diff hello-world.scm ;; diff -r 980803bb2342 4/nuklear/examples/hello-world/hello-world.scm ;; --- a/4/nuklear/examples/hello-world/hello-world.scm Sun Jan 20 09:19:01 2019 +0200 ;; +++ b/4/nuklear/examples/hello-world/hello-world.scm Sat Feb 09 16:20:48 2019 +0200 ;; @@ -21,6 +21,7 @@ ;; ;; (define layout (nk:make-panel)) ;; (define popup-layout (nk:make-panel)) ;; +(define garbage #f) ;; ;; (let loop () ;; (when (and (not (glfw:window-should-close (glfw:window))) (not quit?)) ;; @@ -30,6 +31,10 @@ ;; (when (nk:window-begin context layout "Hello World!" ;; (nk:make-rect 10 10 192 100) ;; '(border no-scrollbar movable)) ;; + (when (= 0 (random 10)) (print* "GC") (gc #t) ;; + (when (= 0 (random 2)) (print* "2") ;; + (set! garbage (make-blob (random 100000))) ;; + (gc #t))) ;; (nk:layout-row-dynamic context 30 2) ;; (when (nk:button-label context "Click Me!") ;; (printf "Yay\n")