private static void MessageWindow_PointsIntercepted(object sender, Common.Input.RawPointsDataMessageEventArgs e) { if (!_pipeClient.IsConnected) { return; } try { const int size = 16; const int offset = 8; int rawDataCount = e.RawData.Count; byte[] buffer = new byte[rawDataCount * size + offset]; BitConverter.GetBytes(e.RawData.Count).CopyTo(buffer, 0); BitConverter.GetBytes((int)e.SourceDevice).CopyTo(buffer, 4); for (int i = 0; i < rawDataCount; i++) { var current = e.RawData[i]; BitConverter.GetBytes(current.Tip).CopyTo(buffer, offset + i * size); BitConverter.GetBytes(current.ContactIdentifier).CopyTo(buffer, offset + 4 + i * size); BitConverter.GetBytes(current.RawPoints.X).CopyTo(buffer, offset + 4 * 2 + i * size); BitConverter.GetBytes(current.RawPoints.Y).CopyTo(buffer, offset + 4 * 3 + i * size); } _pipeClient.Write(buffer, 0, buffer.Length); _pipeClient.Flush(); _pipeClient.WaitForPipeDrain(); } catch (Exception exception) { Logging.LogException(exception); } }
private static void MessageWindow_PointsIntercepted(object sender, Common.Input.RawPointsDataMessageEventArgs e) { if (!_pipeClient.IsConnected) { return; } try { _binaryWriter.Write(e.RawTouchsData.Count); foreach (var touchData in e.RawTouchsData) { _binaryWriter.Write(touchData.Tip); _binaryWriter.Write(touchData.ContactIdentifier); _binaryWriter.Write(touchData.RawPoints.X); _binaryWriter.Write(touchData.RawPoints.Y); } _pipeClient.Flush(); _pipeClient.WaitForPipeDrain(); } catch (Exception exception) { Logging.LogException(exception); } }