Example #1
0
 private void ReviewAllEvent()
 {
     if (borderTouch)
     {
         BorderTouch?.Invoke();
         borderTouch = false;
     }
 }
Example #2
0
        private void ProcessStylusEvent(StylusEventArgs e, [CallerMemberName] string callerName = null)
        {
            DebugMessage($"{callerName}");

            if (strokeMouse != null)
            {
                return;
            }

            if (callerName == nameof(HandleEventSignaturePadCanvasPreviewStylusDown))
            {
                if (lStroke?.Count == 0)
                {
                    RecordingStarted?.Invoke();
                }

                strokeStylus = new InkStroke(InkSource.Stylus);
                foreach (var sp in e.GetStylusPoints(canvasSignaturePad))
                {
                    var ip = new InkPoint(sp.ToPoint(), sp.PressureFactor, null, GetCurrentTimestamp());
                    DebugInkPoint(callerName, strokeStylus.Points.Count, ip);

                    if (ip.Position.X < 0 || ip.Position.X > Width || ip.Position.Y < 0 || ip.Position.Y > Height)
                    {
                        borderTouch = true;
                        return;
                    }

                    strokeStylus.Points.Add(ip);
                }
            }
            else if (strokeStylus != null)
            {
                var tsNow = GetCurrentTimestamp();
                var sps   = e.GetStylusPoints(canvasSignaturePad);
                if (sps.Count > 1)
                {
                    var tsLast = strokeStylus.Points.Last().Timestamp;

                    for (var idxSp = 0; idxSp < sps.Count; idxSp++)
                    {
                        var sp            = sps[idxSp];
                        var tsPointApprox = TimeSpan.FromTicks((tsNow.Ticks - tsLast.Ticks) * (idxSp + 1) / sps.Count + tsLast.Ticks);
                        var ip            = new InkPoint(sp.ToPoint(), sp.PressureFactor, null, tsPointApprox);
                        DebugInkPoint(callerName, strokeStylus.Points.Count, ip);

                        if (ip.Position.X < 0 || ip.Position.X > Width || ip.Position.Y < 0 || ip.Position.Y > Height)
                        {
                            borderTouch = true;
                            return;
                        }

                        strokeStylus.Points.Add(ip);
                    }
                }
                else if (sps.Count > 0)
                {
                    var ip = new InkPoint(sps[0].ToPoint(), sps[0].PressureFactor, null, tsNow);
                    DebugInkPoint(callerName, strokeStylus.Points.Count, ip);

                    if (ip.Position.X < 0 || ip.Position.X > Width || ip.Position.Y < 0 || ip.Position.Y > Height)
                    {
                        BorderTouch?.Invoke();
                        return;
                    }

                    strokeStylus.Points.Add(ip);
                }

                if (callerName == nameof(HandleEventSignaturePadCanvasPreviewStylusUp))
                {
                    DebugMessage($"StrokeCaptured: #{lStroke.Count} Src = {strokeStylus.Source}, Count = {strokeStylus.Points.Count} @ {strokeStylus.Timestamp}");
                    lStroke.Add(strokeStylus);
                    strokeStylus = null;
                }
            }
        }