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]) } }
func (f *Imp) invertN() { // switch f.sort { case Pointset: scr.PointsetInv(f.x, f.y) case Segments: scr.SegmentsInv(f.x, f.y) case Polygon: 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) } } }