package main import "os" import "image" import _ "image/png" import "git.tebibyte.media/sashakoshka/stone" import _ "git.tebibyte.media/sashakoshka/stone/backends/x" var application = &stone.Application { } var mousePressed bool func main () { application.SetTitle("drawing canvas") application.SetSize(32, 16) iconFile16, err := os.Open("assets/scaffold16.png") if err != nil { panic(err) } icon16, _, err := image.Decode(iconFile16) if err != nil { panic(err) } iconFile16.Close() iconFile32, err := os.Open("assets/scaffold32.png") if err != nil { panic(err) } icon32, _, err := image.Decode(iconFile32) if err != nil { panic(err) } iconFile16.Close() application.SetIcon([]image.Image { icon16, icon32 }) application.OnPress(onPress) application.OnRelease(onRelease) application.OnMouseMove(onMouseMove) err = application.Run() if err != nil { panic(err) } } func onPress (button stone.Button, modifiers stone.Modifiers) { if button == stone.MouseButtonLeft { mousePressed = true application.SetRune(0, 0, '+') application.Draw() } } func onRelease (button stone.Button) { if button == stone.MouseButtonLeft { mousePressed = false application.SetRune(0, 0, 0) application.Draw() } } func onMouseMove (x, y int) { if mousePressed { application.SetRune(x, y, '#') application.Draw() } }