Files
hakorune/examples/wasm/01_drawing_app.nyash

84 lines
2.2 KiB
Plaintext
Raw Normal View History

// 🎨 Drawing App Demo - CanvasEventBox + WebCanvasBox
// Interactive drawing application demonstrating Everything is Box philosophy
print("🎨 === Drawing App Demo Starting ===")
// Initialize drawing components
local canvas, events, timer
canvas = new WebCanvasBox("demo-canvas", 800, 600)
events = new CanvasEventBox("demo-canvas")
timer = new TimerBox()
// Drawing state
local isDrawing, currentColor, brushSize
isDrawing = false
currentColor = "black"
brushSize = 3
// Set up canvas
canvas.clear()
canvas.setFillStyle("white")
canvas.fillRect(0, 0, 800, 600)
// Draw UI - color palette at top
local colors
colors = ["black", "red", "blue", "green", "yellow", "purple", "orange"]
local i, color, x
i = 0
loop(i < 7) {
color = colors[i]
x = 50 + i * 80
// Color swatch
canvas.setFillStyle(color)
canvas.fillRect(x, 10, 60, 30)
// White border
canvas.setStrokeStyle("white")
canvas.setLineWidth(2)
canvas.strokeRect(x, 10, 60, 30)
i = i + 1
}
// Draw instructions
canvas.setFillStyle("black")
canvas.fillText("Click and drag to draw • Click colors to change", 50, 70, "14px Arial", "black")
// Mouse event handlers using simplified approach for demo
print("🖱️ Setting up mouse events...")
// Note: For this demo, we'll use a simplified event handling approach
// In a full implementation, the CanvasEventBox would have proper callback support
print("🎨 Drawing App Ready!")
print("• Canvas size: 800x600")
print("• Colors available: black, red, blue, green, yellow, purple, orange")
print("• Click and drag to draw")
print("• Open your browser to see the interactive drawing canvas")
// Timer-based drawing simulation for demo purposes
local demoTime
demoTime = timer.now()
// Draw a sample doodle to show the app works
canvas.setStrokeStyle("red")
canvas.setLineWidth(5)
canvas.beginPath()
canvas.moveTo(200, 200)
canvas.lineTo(250, 150)
canvas.lineTo(300, 200)
canvas.lineTo(350, 150)
canvas.stroke()
// Draw a circle
canvas.setFillStyle("blue")
canvas.fillCircle(400, 300, 40)
// Draw text
canvas.setFillStyle("green")
canvas.fillText("Nyash Drawing Demo!", 200, 400, "24px Arial", "green")
print("✅ Drawing App Demo Complete!")
print("🌐 Everything is Box - even artistic expression!")