private bool ScribbleDelete(Stroke stroke) { starPadSDK.Inq.Stroq stroq = new starPadSDK.Inq.Stroq(stroke); bool canBeScribble = stroq.OldPolylineCusps().Length > 4; if (stroq.OldPolylineCusps().Length == 4) { int[] pcusps = stroq.OldPolylineCusps(); Deg a1 = fpdangle(stroq[0], stroq[pcusps[1]], stroq[pcusps[2]] - stroq[pcusps[1]]); Deg a2 = fpdangle(stroq[pcusps[1]], stroq[pcusps[1]], stroq[pcusps[3]] - stroq[pcusps[1]]); if (a1 < 35 && a2 < 35) canBeScribble = stroq.BackingStroke.HitTest(stroq.ConvexHull().First(), 1); } if (canBeScribble) { //BOKANG bool removeCurrentStroke = CheckRemoveGate(stroke); IEnumerable<starPadSDK.Geom.Pt> hull = stroq.ConvexHull(); List<Point> hullTemp = new List<Point>(); foreach (starPadSDK.Geom.Pt pt in hull) { hullTemp.Add(new Point(pt.X, pt.Y)); } StrokeCollection stks = circuitInkCanvas.Strokes.HitTest(hullTemp, 50); //StroqCollection stqs = inqCanvas.Stroqs.HitTest(hull, 1); if (stks.Count > 1) { //inqCanvas.Stroqs.Remove(stqs); circuitInkCanvas.Strokes.Remove(stks); if (stks.Contains(stroke)) { stks.Remove(stroke); } if(circuitInkCanvas.Strokes.Contains(stroke)) { circuitInkCanvas.Strokes.Remove(stroke); } //inqCanvas.Stroqs.Remove(stroq); return true; } if (removeCurrentStroke) { if(circuitInkCanvas.Strokes.Contains(stroke)) { circuitInkCanvas.Strokes.Remove(stroke); } } } return false; }
private bool ScribbleDelete(Stroke stroke) { starPadSDK.Inq.Stroq stroq = new starPadSDK.Inq.Stroq(stroke); bool canBeScribble = stroq.OldPolylineCusps().Length > 4; if (stroq.OldPolylineCusps().Length == 4) { int[] pcusps = stroq.OldPolylineCusps(); Deg a1 = fpdangle(stroq[0], stroq[pcusps[1]], stroq[pcusps[2]] - stroq[pcusps[1]]); Deg a2 = fpdangle(stroq[pcusps[1]], stroq[pcusps[1]], stroq[pcusps[3]] - stroq[pcusps[1]]); if (a1 < 35 && a2 < 35) canBeScribble = stroq.BackingStroke.HitTest(stroq.ConvexHull().First(), 1); } if (canBeScribble) { IEnumerable<starPadSDK.Geom.Pt> hull = stroq.ConvexHull(); List<Point> hullTemp = new List<Point>(); foreach (starPadSDK.Geom.Pt pt in hull) { hullTemp.Add(new Point(pt.X, pt.Y)); } StrokeCollection stks = this.Strokes.HitTest(hullTemp, 50); if (stks.Count > 1) { //inqCanvas.Stroqs.Remove(stqs); this.Strokes.Remove(stks); if (stks.Contains(stroke)) { stks.Remove(stroke); } this.Strokes.Remove(stroke); _inkAnalyzer.RemoveStrokes(stks); // AnalyzedRegion.Strokes.Remove(stks); } //if (this.Strokes.Contains(stroke)) //{ //{ // this.Strokes.Remove(stroke); //AnalyzedRegion.Strokes.Remove(stroke); //} this.ShowInkAnalysisFeedback = false; return true; } return false; }