public void MouseDown(Position.VirtualMousePosition mouseMove) { m_startPt = (PointD) mouseMove.GetPhysicalPoint(); m_virtualDelta = new List<PointD>(); m_realDelta = new List<PointD>(); // initial movement is nothing m_virtualDelta.Add(PointD.Empty); m_realDelta.Add(PointD.Empty); }
// called very frequently public void MouseMoved(Position.VirtualMousePosition mouseMove) { m_virtualDelta.Add(mouseMove.GetVirtualPointD() - mouseMove.GetLastVirtualPointD()); m_realDelta.Add(new PointD (mouseMove.GetPhysicalPoint().X - mouseMove.GetLastPhysicalPoint().X, mouseMove.GetPhysicalPoint().Y - mouseMove.GetLastPhysicalPoint().Y)); if (m_virtualDelta.Count > MouseLogger.TAIL_LENGTH) { // BUG: sometimes mouseMoved gets fired with no movement of the mouse, // flooding the event queue with many points of data estimated to be // > 40,000 points. Remove first half of the point data when such a // condition may occur. m_virtualDelta.RemoveRange(0, MouseLogger.TAIL_LENGTH / 2); m_realDelta.RemoveRange(0, MouseLogger.TAIL_LENGTH / 2); } }