/* * Redraws the world. (What world we have.) * This is the "view" code. */ func redraw(d *draw.Display, resized bool) { if resized { if err := d.Attach(draw.Refmesg); err != nil { log.Fatalf("can't reattach to window: %v", err) } } // draw coloured rects at mouse positions // first param is the clip rectangle. which can be 0. meaning no clip? var clipr image.Rectangle fmt.Printf("empty clip? %v\n", clipr) d.ScreenImage.Draw(clipr, d.White, nil, image.ZP) d.Flush(true) }
func (w *awin) fixfont() { ctl := make([]byte, 1000) w.Seek("ctl", 0, 0) n, err := w.Read("ctl", ctl) if err != nil { return } f := strings.Fields(string(ctl[:n])) if len(f) < 8 { return } w.tab, _ = strconv.Atoi(f[7]) if w.tab == 0 { return } name := f[6] if w.fontName == name { return } all.Lock() defer all.Unlock() if font := all.f[name]; font != nil { w.font = font w.fontName = name return } var disp *draw.Display = nil font, err := disp.OpenFont(name) if err != nil { return } if all.f == nil { all.f = make(map[string]*draw.Font) } all.f[name] = font w.font = font }
func Play(pp []Piece, d *draw.Display) { pieces = pp N = len(pieces[0].d) initPieces() display = d screen = d.ScreenImage mousectl = d.InitMouse() kbdctl = d.InitKeyboard() rand.Seed(int64(time.Now().UnixNano() % (1e9 - 1))) for i, col := range txpix { tx[i], _ = d.AllocImage(image.Rect(0, 0, 1, 1), screen.Pix, true, col) } whitemask, _ = display.AllocImage(image.Rect(0, 0, 1, 1), draw.ARGB32, true, 0x7F7F7F7F) tsleep = 50 timerc = time.Tick(time.Duration(tsleep/2) * time.Millisecond) suspc = make(chan bool) mousec = make(chan draw.Mouse) kbdc = make(chan rune) go suspproc() redraw(false) play() }
func (m *SpacewarPDP1) Init(d *draw.Display) { m.disp = d m.mc = d.InitMouse() m.kc = d.InitKeyboard() m.screen = d.ScreenImage m.dx = m.screen.R.Dx() m.dy = m.screen.R.Dy() m.pix = make([][]uint8, m.dy) m.oldpix = make([][]uint8, m.dy) for i := range m.pix { m.pix[i] = make([]uint8, m.dx) m.oldpix[i] = make([]uint8, m.dx) } m.cmap = make([]*draw.Image, 256) for i := range m.cmap { var r, g, b draw.Color r = draw.Color(min(0, 255)) g = draw.Color(min(i*2, 255)) b = draw.Color(min(0, 255)) m.cmap[i], _ = d.AllocImage(image.Rect(0, 0, 1, 1), d.ScreenImage.Pix, true, r<<24|g<<16|b<<8|0xff) } m.screen.Draw(m.screen.R, d.Black, nil, image.ZP) }