start coding one line canvas

This commit is contained in:
Travis Shears 2025-07-05 15:37:14 +02:00
parent 5ae4550865
commit a845fe1582

59
one_line/main.fnl Normal file
View file

@ -0,0 +1,59 @@
(tset _G :img-width 88)
(tset _G :img-height 31)
(local scale 6)
(tset _G :canvas-width (* scale (. _G :img-width)))
(tset _G :canvas-height (* scale (. _G :img-height)))
(lambda set-center-origin []
(let [(w h f) (love.window.getMode)
x (/ w 2)
y (/ h 2)
]
; (print (.. "setting orgin to middle of window: " x "," y))
(love.graphics.push)
(love.graphics.translate x y)))
(fn love.load []
;; 480p 720×480
(love.window.setMode 720 480)
; (set-center-origin)
; (love.graphics.pop)
;; start a thread listening on stdin
(: (love.thread.newThread "require('love.event')
while 1 do love.event.push('stdin', io.read('*line')) end") :start))
(fn love.handlers.stdin [line]
; evaluate lines read from stdin as fennel code
(let [(ok val) (pcall fennel.eval line)]
(print (if ok (fennel.view val) val))))
(lambda draw-static-bg []
(let [
canvas-w (* scale 88)
canvas-h (* scale 31)
canvas-x (* -1 (/ canvas-w 2))
canvas-y (* -1 (/ canvas-h 2))
]
; canvas
(love.graphics.print "Canvas:" canvas-x (- canvas-y 20))
(love.graphics.rectangle "line" canvas-x canvas-y canvas-w canvas-h)
; preview
(love.graphics.print "Preview:" canvas-x (- canvas-y 80))
(love.graphics.rectangle "line" canvas-x (- canvas-y 60) 89 32)
)
)
(fn love.draw []
(set-center-origin)
(love.graphics.setBackgroundColor (love.math.colorFromBytes 192 192 192))
(love.graphics.setColor (love.math.colorFromBytes 29 29 29))
(draw-static-bg)
(love.graphics.pop))
(fn love.keypressed [key]
(love.event.quit))