Beispiel #1
0
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)
}
Beispiel #2
0
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)
				}
			}
		}
	}
}
Beispiel #3
0
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)
}
Beispiel #4
0
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)
}
Beispiel #5
0
// 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()

}
Beispiel #6
0
// 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()
}
Beispiel #7
0
func cairo_context(cr *cairo.Context) *C.cairo_t {
	return (*C.cairo_t)(cr.GetCContext())
}
Beispiel #8
0
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()
	}
}
Beispiel #9
0
// 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
}
Beispiel #10
0
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()
}
Beispiel #11
0
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()
}