private void ProcessInk(MapInkLine line) {
     MapInkLine l = this._inkManager.Lines.FirstOrDefault(k => k.UniqueId == line.UniqueId);
     if (l == null) {
         this._inkManager.Lines.Add(line);
     }
     else {
         this._inkManager.Lines.Remove(l);
         this._inkManager.Lines.Add(line);
         this._inkManager.Render();
     }
 }
 private void AddPoint(PointerRoutedEventArgs e)
 {
     if (!this.IsEnabled) { return; }
     MapInkLine line = this.Lines.FirstOrDefault(l => l.Id == e.Pointer.PointerId && !l.IsClosed);
     if (line == null) {
         line = new MapInkLine(e.Pointer.PointerId, this.InkColor);
         this.Lines.Add(line);
     }
     line.Points.Add(this._map.ScreenToMap(e.GetCurrentPoint(this._map).Position));
     this.OnLineChanged(new MapInkLineEventArgs(line));
 }
        private async Task SendInk(MapInkLine line) {
            if (!this.ToggleButtonConnect.IsChecked.Value) { return; }
            if (!this.Map.Layers[0].IsInitialized) { return; }
            if (this._peers.Count == 0) { return; }

            foreach (MapPeer peer in this._peers) {
                // Send extent message
                await this.PeerSend(peer, MessageType.Ink, line.ToJson());
            }
        }
 public MapInkLineEventArgs(MapInkLine line)
 {
     this.MapInkLine = line;
 }