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 }