File indexing completed on 2025-02-02 04:14:48
0001 /* 0002 * SPDX-FileCopyrightText: 2018 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KoPathMergeUtils.h" 0008 0009 #include "KoPathPoint.h" 0010 0011 boost::optional<QPointF> KritaUtils::fetchControlPoint(KoPathPoint *pt, bool takeFirst) 0012 { 0013 boost::optional<QPointF> result; 0014 0015 if (takeFirst) { 0016 if (pt->activeControlPoint1()) { 0017 result = pt->controlPoint1(); 0018 } 0019 } else { 0020 if (pt->activeControlPoint2()) { 0021 result = pt->controlPoint2(); 0022 } 0023 } 0024 0025 return result; 0026 } 0027 0028 void KritaUtils::makeSymmetric(KoPathPoint *pt, bool copyFromFirst) 0029 { 0030 if (copyFromFirst) { 0031 if (pt->activeControlPoint1()) { 0032 pt->setControlPoint2(2.0 * pt->point() - pt->controlPoint1()); 0033 } 0034 } else { 0035 if (pt->activeControlPoint2()) { 0036 pt->setControlPoint1(2.0 * pt->point() - pt->controlPoint2()); 0037 } 0038 } 0039 0040 pt->setProperty(KoPathPoint::IsSymmetric); 0041 } 0042 0043 void KritaUtils::restoreControlPoint(KoPathPoint *pt, bool restoreFirst, boost::optional<QPointF> savedPoint) 0044 { 0045 if (restoreFirst) { 0046 if (savedPoint) { 0047 pt->setControlPoint1(*savedPoint); 0048 } else { 0049 pt->removeControlPoint1(); 0050 } 0051 } else { 0052 if (savedPoint) { 0053 pt->setControlPoint2(*savedPoint); 0054 } else { 0055 pt->removeControlPoint2(); 0056 } 0057 } 0058 }