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  }