func (v *platformView) DrawCallback(area DrawArea, context *cairo.Context) { context.Scale(v.parent.Scale(), v.parent.Scale()) x1, y1, x2, y2 := context.ClipExtents() r := image.Rect(int(x1), int(y1), int(x2), int(y2)) v.drawArch(context, r) v.drawChannels(context, r) }
func (v *mappingView) drawChannels(context *cairo.Context, r image.Rectangle) { for _, a := range v.arch { for _, pr := range a.Processes() { for _, c := range pr.UserObj().OutChannels() { link := c.Link() lpr := link.Process() la := lpr.Arch() if la.Name() != a.Name() { var a2 graph.ArchIf for _, a2 = range v.arch { if a2.UserObj() == la { break } } p1 := a.ChannelPort(c) p2 := a2.ChannelPort(link) if p1 == nil || p2 == nil { log.Printf("mappingView.drawChannels error: invalid nil port (%s - %s).\n", a.Name(), la.Name()) continue } r, g, b, _ := graph.ColorOption(graph.NormalLine) context.SetLineWidth(2) context.SetSourceRGB(r, g, b) pos1 := p1.Position().Add(image.Point{5, 5}) pos2 := p2.Position().Add(image.Point{5, 5}) graph.DrawLine(context, pos1, pos2) } } } } }
func (v *signalGraphView) DrawCallback(area DrawArea, context *cairo.Context) { context.Scale(v.parent.Scale(), v.parent.Scale()) x1, y1, x2, y2 := context.ClipExtents() r := image.Rect(int(x1), int(y1), int(x2), int(y2)) v.drawNodes(context, r) v.drawConnections(context, r) }
func (v *mappingView) DrawCallback(area DrawArea, context *cairo.Context) { context.Scale(v.parent.Scale(), v.parent.Scale()) x1, y1, x2, y2 := context.ClipExtents() r := image.Rect(int(x1), int(y1), int(x2), int(y2)) if r.Overlaps(v.unmapped.BBox()) { v.unmapped.Draw(context) } v.drawArch(context, r) v.drawNodes(context, r) v.drawChannels(context, r) v.drawConnections(context, r) }
// draw the piece on the canvas func (self *MainWindow) DrawSelector(cr *cairo.Context, x, y float64) { cr.SetSourceRGBA(0.2, 0.8, 0.2, 0.8) cr.SetLineWidth(5) cr.Rectangle(x*self.tileWidth, y*self.tileHeight, self.tileWidth, self.tileHeight) cr.Stroke() }
// draw the piece on the canvas func (self *MainWindow) DrawPiece(cr *cairo.Context, x, y float64, color []float64) { x, y = self.getPiecePosition(x, y) x = x + 40 y = y + 30 cr.Arc(x, y, 20, 0, 2*3.14) cr.SetSourceRGB(color[0], color[1], color[2]) cr.Fill() }
func cairo_context(cr *cairo.Context) *C.cairo_t { return (*C.cairo_t)(cr.GetCContext()) }
func drawTable(area *gtk.DrawingArea, cr *cairo.Context, side int, cells []int) { u := w.cellSize.GetValue() w := area.GetAllocatedWidth() h := area.GetAllocatedHeight() bg := cellColor[cellPrevious] cr.SetSourceRGB(bg[0], bg[1], bg[2]) cr.Rectangle(1, 1, float64(w-2), float64(h-2)) cr.Fill() for k, cell := range cells[1:] { color := cellColor[cell] x, y := float64(k/side), float64(k%side) cr.SetSourceRGB(color[0], color[1], color[2]) cr.Rectangle(2+x*u, 2+y*u, u, u) cr.Fill() } }
// Draws and re-draws the board func (self *MainWindow) drawBoard(da *gtk.DrawingArea, cr *cairo.Context) bool { for i := 0; i < self.boardSize; i++ { for j := 0; j < self.boardSize; j++ { x := float64(j) * self.tileWidth y := float64(i) * self.tileHeight if (i % 2) == (j % 2) { cr.Rectangle(x, y, self.tileWidth, self.tileHeight) cr.SetSourceRGB(0.5, 0.3, 0) cr.Fill() } else { cr.Rectangle(x, y, self.tileWidth, self.tileHeight) cr.SetSourceRGB(0.2, 0, 0) cr.Fill() } } } // Draw pieces for i, row := range self.Board.Places { for j, col := range row { if col != nil { if col.Selected { self.DrawSelector(cr, float64(i), float64(j)) } if col.Team == board.RED { self.DrawPiece(cr, float64(i), float64(j), RED) } else { self.DrawPiece(cr, float64(i), float64(j), BLACK) } } } } self.drawScores() return false }
func DrawAccLine(gc *cairo.Context, x1, y1 float64, p2 image.Point) { gc.MoveTo(x1, y1) gc.LineTo(float64(p2.X), float64(p2.Y)) gc.Stroke() }
func DrawLine(gc *cairo.Context, p1, p2 image.Point) { gc.MoveTo(float64(p1.X), float64(p1.Y)) gc.LineTo(float64(p2.X), float64(p2.Y)) gc.Stroke() }