File indexing completed on 2025-02-23 04:09:03
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KisSnapPointStrategy.h" 0008 0009 #include <QPainterPath> 0010 #include "kis_global.h" 0011 0012 struct KisSnapPointStrategy::Private 0013 { 0014 QList<QPointF> points; 0015 }; 0016 0017 KisSnapPointStrategy::KisSnapPointStrategy(KoSnapGuide::Strategy type) 0018 : KoSnapStrategy(type), 0019 m_d(new Private) 0020 { 0021 } 0022 0023 KisSnapPointStrategy::~KisSnapPointStrategy() 0024 { 0025 } 0026 0027 bool KisSnapPointStrategy::snap(const QPointF &mousePosition, KoSnapProxy *proxy, qreal maxSnapDistance) 0028 { 0029 Q_UNUSED(proxy); 0030 0031 QPointF snappedPoint = mousePosition; 0032 qreal minDistance = std::numeric_limits<qreal>::max(); 0033 0034 Q_FOREACH (const QPointF &pt, m_d->points) { 0035 const qreal dist = kisDistance(mousePosition, pt); 0036 0037 if (dist < maxSnapDistance && dist < minDistance) { 0038 minDistance = dist; 0039 snappedPoint = pt; 0040 } 0041 } 0042 0043 setSnappedPosition(snappedPoint); 0044 return minDistance < std::numeric_limits<qreal>::max(); 0045 } 0046 0047 QPainterPath KisSnapPointStrategy::decoration(const KoViewConverter &converter) const 0048 { 0049 Q_UNUSED(converter); 0050 return QPainterPath(); 0051 } 0052 0053 void KisSnapPointStrategy::addPoint(const QPointF &pt) 0054 { 0055 m_d->points << pt; 0056 } 0057