File indexing completed on 2025-02-23 04:09:02
0001 /* 0002 * SPDX-FileCopyrightText: 2019 Kuntal Majumder <hellozee@disroot.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KisSnapPixelStrategy.h" 0008 0009 #include <QPainterPath> 0010 #include "kis_global.h" 0011 #include "kis_canvas2.h" 0012 #include "KoSnapProxy.h" 0013 0014 KisSnapPixelStrategy::KisSnapPixelStrategy(KoSnapGuide::Strategy type): 0015 KoSnapStrategy(type) 0016 { 0017 } 0018 0019 KisSnapPixelStrategy::~KisSnapPixelStrategy() 0020 { 0021 } 0022 0023 bool KisSnapPixelStrategy::snap(const QPointF &mousePosition, KoSnapProxy *proxy, qreal maxSnapDistance) 0024 { 0025 Q_UNUSED(maxSnapDistance); 0026 KisCanvas2 *canvas2 = dynamic_cast<KisCanvas2*>(proxy->canvas()); 0027 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(canvas2, false); 0028 0029 const QPointF imagePos = canvas2->coordinatesConverter()->documentToImage(mousePosition); 0030 const QPointF alignedDocPoint = canvas2->coordinatesConverter()->imageToDocument(imagePos.toPoint()); 0031 setSnappedPosition(alignedDocPoint); 0032 0033 return true; 0034 } 0035 0036 QPainterPath KisSnapPixelStrategy::decoration(const KoViewConverter &converter) const 0037 { 0038 QSizeF unzoomedSize = converter.viewToDocument(QSizeF(5, 5)); 0039 QPainterPath decoration; 0040 decoration.moveTo(snappedPosition() - QPointF(unzoomedSize.width(), 0)); 0041 decoration.lineTo(snappedPosition() + QPointF(unzoomedSize.width(), 0)); 0042 decoration.moveTo(snappedPosition() - QPointF(0, unzoomedSize.height())); 0043 decoration.lineTo(snappedPosition() + QPointF(0, unzoomedSize.height())); 0044 return decoration; 0045 }