33 QPointF snappedPoint = mousePosition;
34 qreal minXDistance = std::numeric_limits<qreal>::max();
35 qreal minYDistance = std::numeric_limits<qreal>::max();
37 Q_FOREACH (qreal line,
m_d->horizontalLines) {
38 const qreal dist = qAbs(mousePosition.y() - line);
40 if (dist < maxSnapDistance && dist < minYDistance) {
42 snappedPoint.ry() = line;
46 Q_FOREACH (qreal line,
m_d->verticalLines) {
47 const qreal dist = qAbs(mousePosition.x() - line);
49 if (dist < maxSnapDistance && dist < minXDistance) {
51 snappedPoint.rx() = line;
55 if (
kisDistance(snappedPoint, mousePosition) > maxSnapDistance) {
56 if (minXDistance < minYDistance) {
57 snappedPoint.ry() = mousePosition.y();
59 snappedPoint.rx() = mousePosition.x();
63 const SnapType snapType = minXDistance < std::numeric_limits<qreal>::max() &&
64 minYDistance < std::numeric_limits<qreal>::max() ?
ToPoint :
ToLine;
68 minXDistance < std::numeric_limits<qreal>::max() ||
69 minYDistance < std::numeric_limits<qreal>::max();