예제 #1
0
파일: imp.go 프로젝트: CaptainSoOmA/Uni
func (x *Imp) Write(N, N1 node.Node, directed, vis, inv bool) {
	//
	n, n1 := N.(*node.Imp), N1.(*node.Imp)
	if inv {
		_, _, x1, y1, ok := x.pos(n, n1, directed)
		if !ok {
			return
		}
		scr.InfLineInv(int(x.x), int(x.y), int(x.x1), int(x.y1))
		if directed {
			scr.CircleInv(int(x1), int(y1), r0)
		}
		return
	}
	b := col.ScreenB
	if vis {
		b = Farbe[0]
	}
	bx.ColourF(b)
	if vis {
		scr.Colour(col.ScreenB)
		x.aus(n, n, directed)
	}
	scr.Colour(b)
	x.aus(n, n1, directed)
}
예제 #2
0
파일: imp.go 프로젝트: CaptainSoOmA/Uni
func (f *Imp) invert1() {
	//
	switch f.sort {
	case InfLine:
		scr.InfLineInv(f.x[0], f.y[0], f.x[1], f.y[1])
	case Rectangle:
		scr.RectangleInv(f.x[0], f.y[0], f.x[1], f.y[1])
	default:
		scr.EllipseInv(f.x[0], f.y[0], uint(f.x[1]), uint(f.y[1]))
	}
}
예제 #3
0
파일: imp.go 프로젝트: CaptainSoOmA/Uni
func (f *Imp) Invert() {
	//
	if f.Empty() {
		return
	}
	switch f.sort {
	case Pointset:
		scr.PointsetInv(f.x, f.y)
	case Segments:
		scr.SegmentsInv(f.x, f.y)
	case Polygon:
		if f.filled {
			scr.PolygonInv /* TODO Full */ (f.x, f.y)
		} else {
			scr.PolygonInv(f.x, f.y)
		}
	case Curve:
		scr.CurveInv(f.x, f.y)
		if f.filled {
			n := len(f.x) - 1
			scr.CircleInv(f.x[n], f.y[n], 4)
		}
	case InfLine:
		scr.InfLineInv(f.x[0], f.y[0], f.x[1], f.y[1])
	case Rectangle:
		if f.filled {
			scr.RectangleFullInv(f.x[0], f.y[0], f.x[1], f.y[1])
		} else {
			scr.RectangleInv(f.x[0], f.y[0], f.x[1], f.y[1])
		}
	case Circle:
		if f.filled {
			scr.CircleFullInv(f.x[0], f.y[0], uint(f.x[1]))
		} else {
			scr.CircleInv(f.x[0], f.y[0], uint(f.x[1]))
		}
	case Ellipse:
		if f.filled {
			scr.EllipseFullInv(f.x[0], f.y[0], uint(f.x[1]), uint(f.y[1]))
		} else {
			scr.EllipseInv(f.x[0], f.y[0], uint(f.x[1]), uint(f.y[1]))
		}
	case Text:
		// >>>  sollte in bx integriert werden:
		//  bx.WriteInvGr (tx, x[0], y[0])
		scr.SwitchTransparence(true)
		scr.WriteInvGr(f.tx, f.x[0], f.y[0])
	case Image:
		scr.RectangleInv(f.x[0], f.y[0], f.x[1], f.y[1])
	}
}