github.com/as/shiny@v0.8.2/driver/gldriver/prog/prog.go (about) 1 package main 2 3 import ( 4 "image" 5 "image/color" 6 "image/draw" 7 "log" 8 9 "github.com/as/shiny/event/paint" 10 "github.com/as/shiny/screen" 11 "github.com/as/ui" 12 ) 13 14 func main() { 15 dev, err := ui.Init(&screen.NewWindowOptions{Width: 1024, Height: 768}) 16 if err != nil { 17 panic(err) 18 } 19 win := dev.Window() 20 D := screen.Dev 21 buf, _ := dev.NewBuffer(image.Pt(512, 512)) 22 red := image.NewUniform(color.RGBA{255, 0, 0, 255}) 23 blue := image.NewUniform(color.RGBA{0, 0, 255, 255}) 24 draw.Draw(buf.RGBA(), buf.RGBA().Bounds(), blue, image.ZP, draw.Src) 25 for { 26 select { 27 case m := <-D.Mouse: 28 r := image.ZR.Inset(-4).Add(image.Pt(int(m.X), int(m.Y))) 29 draw.Draw(buf.RGBA(), r, red, image.ZP, draw.Src) 30 select { 31 case D.Paint <- paint.Event{}: 32 log.Println("painted") 33 default: 34 log.Println("miss") 35 } 36 case <-D.Key: 37 log.Println("key") 38 case <-D.Lifecycle: 39 log.Println("life") 40 case <-D.Paint: 41 log.Println("paint") 42 win.Upload(image.ZP, buf, buf.Bounds()) 43 win.Publish() 44 case <-D.Size: 45 log.Println("size") 46 buf, _ = dev.NewBuffer(image.Pt(512, 512)) 47 draw.Draw(buf.RGBA(), buf.RGBA().Bounds(), blue, image.ZP, draw.Src) 48 49 } 50 } 51 52 }