예제 #1
0
        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;
        }
예제 #2
0
        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;
        }