shithub: lua9

Download patch

ref: 83e76c9cc25485002c380194331f8e946ac9db36
parent: 0c8d266d976d73cac18783fd727cd4c149efa0d8
author: telephil9 <telephil9@gmail.com>
date: Tue Oct 27 03:57:06 EDT 2020

New samples/ directory

	Demo moved to samples.
	Added a clock to demo the use of event.timer()

diff: cannot open b/samples//null: file does not exist: 'b/samples//null'
--- a/demo.lua
+++ /dev/null
@@ -1,166 +1,0 @@
-#!/bin/ape/lua9
-
-local pt = g.pt
-local rect = g.rect
-local ZP = g.ZP
-
-function intro()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "lua9 libdraw demo")
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.string(screen, p, display.black, nil, font, "Select a demo from the right-click menu")
-end
-
-function lines()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "draw.line(screen, p0, p1, draw.END_SQUARE, draw.END_ARROW, 2, display.black, ZP)")
-	p = g.addpt(p, pt(0, 50))
-	draw.line(screen, p, g.addpt(p, pt(200, 0)), draw.END_SQUARE, draw.END_ARROW, 2, display.black, ZP)
-end
-
-function polys()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "draw.poly(screen, { p0, p1, p2, p0 }, draw.END_SQUARE, draw.END_SQUARE, 1, display.black, ZP)")
-	p = g.addpt(p, pt(0, 50))
-	p1 = g.addpt(p, pt(200, 200))
-	p2 = g.addpt(p, pt(0, 200))
-	draw.poly(screen, { p, p1, p2, p }, draw.END_SQUARE, draw.END_SQUARE, 0, display.black, ZP)
-	p = g.addpt(p, pt(0, 250))
-	draw.string(screen, p, display.black, nil, font, "draw.fillpoly(screen, { p0, p1, p2, p3, p4, p0 }, 3, display.black, ZP)")
-	p = g.addpt(p, pt(50, 50))
-	p1 = g.addpt(p, pt(200, 100))
-	p2 = g.addpt(p, pt(100, 150))
-	p3 = g.addpt(p, pt(50, 200))
-	p4 = g.addpt(p, pt(-50, 50))
-	draw.fillpoly(screen, { p, p1, p2, p3, p4, p }, 3, display.black, ZP)
-end
-
-function beziers()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "draw.bezier(screen, p0, p1, p2, p3, draw.END_DISC, draw.END_DISC, 1, display.black, ZP)")
-	p = g.addpt(p, pt(0, 50))
-	p1 = g.addpt(p, pt(200, 100))
-	p2 = g.addpt(p, pt(50, 150))
-	p3 = g.addpt(p, pt(20, 75))
-	draw.bezier(screen, p, p1, p2, p3, draw.END_DISC, draw.END_DISC, 1, display.black, ZP)
-	p = g.addpt(p, pt(0, 150))
-	draw.string(screen, p, display.black, nil, font, "draw.fillbezier(screen, p0, p1, p2, p3, 5, display.black, ZP)")
-	p = g.addpt(p, pt(0, 50))
-	p1 = g.addpt(p, pt(100, 50))
-	p2 = g.addpt(p, pt(50, 150))
-	p3 = g.addpt(p, pt(200, 75))
-	draw.fillbezier(screen, p, p1, p2, p3, 5, display.black, ZP)
-end
-
-function bezsplines()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "draw.bezspline(screen, { p0, p1, p2, p0 }, draw.END_SQUARE, draw.END_SQUARE, 3, display.black, ZP)")
-	p = g.addpt(p, pt(0, 0))
-	p1 = g.addpt(p, pt(200, 200))
-	p2 = g.addpt(p, pt(0, 200))
-	draw.bezspline(screen, { p, p1, p2, p }, draw.END_SQUARE, draw.END_SQUARE, 3, display.black, ZP)
-	p = g.addpt(p, pt(0, 250))
-	draw.string(screen, p, display.black, nil, font, "draw.fillbezspline(screen, { p0, p1, p2, p3, p4, p0 }, 3, display.black, ZP)")
-	p = g.addpt(p, pt(50, 50))
-	p1 = g.addpt(p, pt(200, 100))
-	p2 = g.addpt(p, pt(100, 150))
-	p3 = g.addpt(p, pt(50, 200))
-	p4 = g.addpt(p, pt(-50, 50))
-	draw.fillbezspline(screen, { p, p1, p2, p3, p4, p }, 3, display.black, ZP)
-end
-
-function ellipses()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "draw.ellipse(screen, p, 200, 50, 2, display.black, ZP)")
-	p1 = g.addpt(p, pt(200, 100))
-	draw.ellipse(screen, p1, 200, 50, 2, display.black, ZP)
-	p = g.addpt(p, pt(0, 200))
-	draw.string(screen, p, display.black, nil, font, "draw.fillellipse(screen, p, 50, 50, display.black, ZP)")
-	p1 = g.addpt(p, pt(50, 100))
-	draw.fillellipse(screen, p1, 50, 50, display.black, ZP)
-end
-
-function arcs()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "draw.arc(screen, p, 200, 50, 2, display.black, ZP, 30, 260)")
-	p1 = g.addpt(p, pt(200, 100))
-	draw.arc(screen, p1, 200, 50, 2, display.black, ZP, 30, 260)
-	p = g.addpt(p, pt(0, 200))
-	draw.string(screen, p, display.black, nil, font, "draw.fillarc(screen, p, 50, 50, display.black, ZP, 10, 145)")
-	p1 = g.addpt(p, pt(50, 100))
-	draw.fillarc(screen, p1, 50, 50, display.black, ZP, 10, 145)
-end
-
-function strings()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "draw.string(screen, p, display.black, ZP, font, 'Hello LUA')")
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.string(screen, p, display.black, ZP, font, 'Hello LUA')
-	p = g.addpt(p, pt(0, 2 * font.height + 2))
-	draw.string(screen, p, display.black, nil, font, "draw.stringn(screen, p, display.black, ZP, font, 'Hello LUA', 5)")
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.stringn(screen, p, display.black, ZP, font, 'Hello LUA', 5)
-	p = g.addpt(p, pt(0, 2 * font.height + 2))
-	draw.string(screen, p, display.black, nil, font, "draw.stringbg(screen, p, display.white, ZP, font, 'Hello LUA', display.black, ZP)")
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.stringbg(screen, p, display.white, ZP, font, 'Hello LUA', display.black, ZP)
-	p = g.addpt(p, pt(0, 2 * font.height + 2))
-	draw.string(screen, p, display.black, nil, font, "draw.stringnbg(screen, p, display.white, ZP, font, 'Hello LUA', 5, display.black, ZP)")
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.stringnbg(screen, p, display.white, ZP, font, 'Hello LUA', 5, display.black, ZP)
-end
-
-function colors()
-	local p = g.addpt(screen.r.min, pt(10, 10))
-	draw.draw(screen, screen.r, display.white, nil, ZP)
-	draw.string(screen, p, display.black, nil, font, "red = draw.allocimage(display, rect(0,0,1,1), screen.chan, 1, color.RED)")
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.string(screen, p, display.black, nil, font, "draw.draw(screen, r, red, nil, ZP)")
-	local red = draw.allocimage(display, rect(0,0,1,1), screen.chan, 1, color.RED)
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.draw(screen, g.rectaddpt(rect(0,0,50,50), p), red, nil, ZP)
-	p = g.addpt(p, pt(0, font.height + 2 + 50))
-	draw.string(screen, p, display.black, nil, font, "draw.allocimagemix(display, color.BLUE, color.YELLOW)")
-	local c = draw.allocimagemix(display, color.BLUE, color.YELLOW)
-	p = g.addpt(p, pt(0, font.height + 2))
-	draw.draw(screen, g.rectaddpt(rect(0,0,50,50), p), c, nil, ZP)
-end
-
-local index = nil
-local menu = { "line", "poly", "bezier", "bezspline", "ellipse", "arc", "string", "colors", "exit" }
-local demos = { lines, polys, beziers, bezsplines, ellipses, arcs, strings, colors, os.exit }
-
-function eresized()
-	if index then
-		demos[index]()
-	else
-		intro()
-	end
-end
-
-draw.init("lua9 demo")
-event.init(event.MOUSE|event.KEYBOARD)
-eresized()
-while true do
-	local e, ev = event.event()
-	if e == event.MOUSE then
-		if ev.mouse.buttons == 4 then
-			index = event.menuhit(3, ev.mouse, menu)
-			if index then
-				demos[index]()
-			end
-		end	
-	elseif e == event.KEYBOARD then
-		if key.eq(ev.kbdc, 'q') or ev.kbdc == key.DEL then
-			os.exit()
-		end
-	end
-end
--- /dev/null
+++ b/samples/clock.lua
@@ -1,0 +1,26 @@
+#!/bin/ape/lua9
+
+local pt = g.pt
+local ZP = g.ZP
+
+function eresized()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	local s = os.date()
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, ZP, font, s)
+end
+
+draw.init("clock")
+event.init(event.KEYBOARD)
+local t = event.timer(0, 1000)
+eresized()
+while true do
+	local e, ev = event.event()
+	if e == t then
+		eresized()
+	elseif e == event.KEYBOARD then
+		if ev.kbdc == key.DEL then
+			os.exit()
+		end
+	end
+end
--- /dev/null
+++ b/samples/demo.lua
@@ -1,0 +1,166 @@
+#!/bin/ape/lua9
+
+local pt = g.pt
+local rect = g.rect
+local ZP = g.ZP
+
+function intro()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "lua9 libdraw demo")
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.string(screen, p, display.black, nil, font, "Select a demo from the right-click menu")
+end
+
+function lines()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "draw.line(screen, p0, p1, draw.END_SQUARE, draw.END_ARROW, 2, display.black, ZP)")
+	p = g.addpt(p, pt(0, 50))
+	draw.line(screen, p, g.addpt(p, pt(200, 0)), draw.END_SQUARE, draw.END_ARROW, 2, display.black, ZP)
+end
+
+function polys()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "draw.poly(screen, { p0, p1, p2, p0 }, draw.END_SQUARE, draw.END_SQUARE, 1, display.black, ZP)")
+	p = g.addpt(p, pt(0, 50))
+	p1 = g.addpt(p, pt(200, 200))
+	p2 = g.addpt(p, pt(0, 200))
+	draw.poly(screen, { p, p1, p2, p }, draw.END_SQUARE, draw.END_SQUARE, 0, display.black, ZP)
+	p = g.addpt(p, pt(0, 250))
+	draw.string(screen, p, display.black, nil, font, "draw.fillpoly(screen, { p0, p1, p2, p3, p4, p0 }, 3, display.black, ZP)")
+	p = g.addpt(p, pt(50, 50))
+	p1 = g.addpt(p, pt(200, 100))
+	p2 = g.addpt(p, pt(100, 150))
+	p3 = g.addpt(p, pt(50, 200))
+	p4 = g.addpt(p, pt(-50, 50))
+	draw.fillpoly(screen, { p, p1, p2, p3, p4, p }, 3, display.black, ZP)
+end
+
+function beziers()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "draw.bezier(screen, p0, p1, p2, p3, draw.END_DISC, draw.END_DISC, 1, display.black, ZP)")
+	p = g.addpt(p, pt(0, 50))
+	p1 = g.addpt(p, pt(200, 100))
+	p2 = g.addpt(p, pt(50, 150))
+	p3 = g.addpt(p, pt(20, 75))
+	draw.bezier(screen, p, p1, p2, p3, draw.END_DISC, draw.END_DISC, 1, display.black, ZP)
+	p = g.addpt(p, pt(0, 150))
+	draw.string(screen, p, display.black, nil, font, "draw.fillbezier(screen, p0, p1, p2, p3, 5, display.black, ZP)")
+	p = g.addpt(p, pt(0, 50))
+	p1 = g.addpt(p, pt(100, 50))
+	p2 = g.addpt(p, pt(50, 150))
+	p3 = g.addpt(p, pt(200, 75))
+	draw.fillbezier(screen, p, p1, p2, p3, 5, display.black, ZP)
+end
+
+function bezsplines()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "draw.bezspline(screen, { p0, p1, p2, p0 }, draw.END_SQUARE, draw.END_SQUARE, 3, display.black, ZP)")
+	p = g.addpt(p, pt(0, 0))
+	p1 = g.addpt(p, pt(200, 200))
+	p2 = g.addpt(p, pt(0, 200))
+	draw.bezspline(screen, { p, p1, p2, p }, draw.END_SQUARE, draw.END_SQUARE, 3, display.black, ZP)
+	p = g.addpt(p, pt(0, 250))
+	draw.string(screen, p, display.black, nil, font, "draw.fillbezspline(screen, { p0, p1, p2, p3, p4, p0 }, 3, display.black, ZP)")
+	p = g.addpt(p, pt(50, 50))
+	p1 = g.addpt(p, pt(200, 100))
+	p2 = g.addpt(p, pt(100, 150))
+	p3 = g.addpt(p, pt(50, 200))
+	p4 = g.addpt(p, pt(-50, 50))
+	draw.fillbezspline(screen, { p, p1, p2, p3, p4, p }, 3, display.black, ZP)
+end
+
+function ellipses()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "draw.ellipse(screen, p, 200, 50, 2, display.black, ZP)")
+	p1 = g.addpt(p, pt(200, 100))
+	draw.ellipse(screen, p1, 200, 50, 2, display.black, ZP)
+	p = g.addpt(p, pt(0, 200))
+	draw.string(screen, p, display.black, nil, font, "draw.fillellipse(screen, p, 50, 50, display.black, ZP)")
+	p1 = g.addpt(p, pt(50, 100))
+	draw.fillellipse(screen, p1, 50, 50, display.black, ZP)
+end
+
+function arcs()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "draw.arc(screen, p, 200, 50, 2, display.black, ZP, 30, 260)")
+	p1 = g.addpt(p, pt(200, 100))
+	draw.arc(screen, p1, 200, 50, 2, display.black, ZP, 30, 260)
+	p = g.addpt(p, pt(0, 200))
+	draw.string(screen, p, display.black, nil, font, "draw.fillarc(screen, p, 50, 50, display.black, ZP, 10, 145)")
+	p1 = g.addpt(p, pt(50, 100))
+	draw.fillarc(screen, p1, 50, 50, display.black, ZP, 10, 145)
+end
+
+function strings()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "draw.string(screen, p, display.black, ZP, font, 'Hello LUA')")
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.string(screen, p, display.black, ZP, font, 'Hello LUA')
+	p = g.addpt(p, pt(0, 2 * font.height + 2))
+	draw.string(screen, p, display.black, nil, font, "draw.stringn(screen, p, display.black, ZP, font, 'Hello LUA', 5)")
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.stringn(screen, p, display.black, ZP, font, 'Hello LUA', 5)
+	p = g.addpt(p, pt(0, 2 * font.height + 2))
+	draw.string(screen, p, display.black, nil, font, "draw.stringbg(screen, p, display.white, ZP, font, 'Hello LUA', display.black, ZP)")
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.stringbg(screen, p, display.white, ZP, font, 'Hello LUA', display.black, ZP)
+	p = g.addpt(p, pt(0, 2 * font.height + 2))
+	draw.string(screen, p, display.black, nil, font, "draw.stringnbg(screen, p, display.white, ZP, font, 'Hello LUA', 5, display.black, ZP)")
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.stringnbg(screen, p, display.white, ZP, font, 'Hello LUA', 5, display.black, ZP)
+end
+
+function colors()
+	local p = g.addpt(screen.r.min, pt(10, 10))
+	draw.draw(screen, screen.r, display.white, nil, ZP)
+	draw.string(screen, p, display.black, nil, font, "red = draw.allocimage(display, rect(0,0,1,1), screen.chan, 1, color.RED)")
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.string(screen, p, display.black, nil, font, "draw.draw(screen, r, red, nil, ZP)")
+	local red = draw.allocimage(display, rect(0,0,1,1), screen.chan, 1, color.RED)
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.draw(screen, g.rectaddpt(rect(0,0,50,50), p), red, nil, ZP)
+	p = g.addpt(p, pt(0, font.height + 2 + 50))
+	draw.string(screen, p, display.black, nil, font, "draw.allocimagemix(display, color.BLUE, color.YELLOW)")
+	local c = draw.allocimagemix(display, color.BLUE, color.YELLOW)
+	p = g.addpt(p, pt(0, font.height + 2))
+	draw.draw(screen, g.rectaddpt(rect(0,0,50,50), p), c, nil, ZP)
+end
+
+local index = nil
+local menu = { "line", "poly", "bezier", "bezspline", "ellipse", "arc", "string", "colors", "exit" }
+local demos = { lines, polys, beziers, bezsplines, ellipses, arcs, strings, colors, os.exit }
+
+function eresized()
+	if index then
+		demos[index]()
+	else
+		intro()
+	end
+end
+
+draw.init("lua9 demo")
+event.init(event.MOUSE|event.KEYBOARD)
+eresized()
+while true do
+	local e, ev = event.event()
+	if e == event.MOUSE then
+		if ev.mouse.buttons == 4 then
+			index = event.menuhit(3, ev.mouse, menu)
+			if index then
+				demos[index]()
+			end
+		end	
+	elseif e == event.KEYBOARD then
+		if key.eq(ev.kbdc, 'q') or ev.kbdc == key.DEL then
+			os.exit()
+		end
+	end
+end