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  }