Notes and cleanup for gui/val

This commit is contained in:
Jay McCarthy 2014-11-20 20:15:50 -08:00
parent bb1567f481
commit f1a4039c55
2 changed files with 26 additions and 32 deletions

View File

@ -1,32 +1,30 @@
#lang racket/base
(require racket/class
racket/draw
racket/fixnum
racket/contract/base
pict
pict/convert)
;; xxx maybe draw to a bitmap and blit
(define (make-gui/val #:scale? [scale? #t])
(define last-val #f)
(define (output-val o)
(unless (eq? o last-val)
(set! last-val o)
(define p (pict-convert o))
(λ (w h dc)
(parameterize ([dc-for-text-size dc])
(send dc set-background "black")
(send dc clear)
(define sp
(if scale?
(scale-to-fit p w h)
p))
(define spw (pict-width sp))
(define left (/ (- w spw) 2))
(define sph (pict-height sp))
(define top (/ (- h sph) 2))
(send dc set-brush "white" 'solid)
(send dc draw-rectangle left top spw sph)
(draw-pict sp dc left top)))))
output-val)
(λ (o)
(define p (pict-convert o))
(λ (w h dc)
(parameterize ([dc-for-text-size dc])
(send dc set-background "black")
(send dc clear)
(define sp
(if scale?
(scale-to-fit p w h)
p))
(define spw (pict-width sp))
(define left (/ (- w spw) 2))
(define sph (pict-height sp))
(define top (/ (- h sph) 2))
(send dc set-brush "white" 'solid)
(send dc draw-rectangle left top spw sph)
(draw-pict sp dc left top)))))
(provide
(contract-out

View File

@ -11,7 +11,11 @@
lux/chaos/gui/key)
(define MODES
'(pict image))
(list (pict:arrowhead 30 0)
(image:add-line
(image:rectangle 100 100 "solid" "darkolivegreen")
25 25 75 75
(image:make-pen "goldenrod" 30 "solid" "round" "round"))))
(struct demo
(g/v mode)
@ -20,15 +24,7 @@
(lux-standard-label "Values" ft))
(define (word-output w)
(match-define (demo g/v mode-n) w)
(g/v
(match (list-ref MODES mode-n)
['pict
(pict:arrowhead 30 0)]
['image
(image:add-line
(image:rectangle 100 100 "solid" "darkolivegreen")
25 25 75 75
(image:make-pen "goldenrod" 30 "solid" "round" "round"))])))
(g/v (list-ref MODES mode-n)))
(define (word-event w e)
(match-define (demo g/v mode-n) w)
(define closed? #f)
@ -45,5 +41,5 @@
(module+ main
(call-with-chaos
(make-gui 60.0)
(make-gui 60.0)
(λ () (fiat-lux (demo (make-gui/val) 0)))))