9fans.net/go@v0.0.5/draw/frame/internal/frametest/main.go (about) 1 package main 2 3 import ( 4 "log" 5 6 "9fans.net/go/draw" 7 "9fans.net/go/draw/frame" 8 ) 9 10 var display *draw.Display 11 var cols [frame.NCOL]*draw.Image 12 var f frame.Frame 13 14 func main() { 15 d, err := draw.Init(nil, "", "frametest", "") 16 if err != nil { 17 log.Fatal(err) 18 } 19 display = d 20 21 cols = [...]*draw.Image{ 22 frame.BACK: d.AllocImageMix(draw.PaleBlueGreen, draw.White), 23 frame.HIGH: d.AllocImageMix(draw.PaleGreyGreen, draw.PaleGreyGreen), 24 frame.BORD: d.AllocImageMix(draw.PurpleBlue, draw.PurpleBlue), 25 frame.TEXT: d.Black, 26 frame.HTEXT: d.Black, 27 } 28 mousectl := d.InitMouse() 29 kbdctl := d.InitKeyboard() 30 redraw(true) 31 32 Loop: 33 for { 34 d.Flush() 35 select { 36 case <-mousectl.Resize: 37 redraw(true) 38 case <-mousectl.C: 39 case r := <-kbdctl.C: 40 if r == 'q' { 41 break Loop 42 } 43 } 44 } 45 } 46 47 func redraw(new bool) { 48 d := display 49 if new { 50 if err := d.Attach(draw.RefMesg); err != nil { 51 log.Fatalf("can't reattach to window: %v", err) 52 } 53 } 54 d.Image.Draw(d.Image.R, cols[frame.BACK], display.Opaque, draw.ZP) 55 d.Image.Border(d.Image.R, 4, cols[frame.BORD], draw.ZP) 56 f.Clear(false) 57 f.Init(d.Image.R.Inset(4), d.Font, d.Image, cols[:]) 58 f.Insert([]rune("hello, world!\n\tthis is the time!\nhi"), 0) 59 f.Insert([]rune("curl..."), 7) 60 f.Insert([]rune("EOF"), f.NumChars) 61 }