Krita Source Code Documentation
Loading...
Searching...
No Matches
KoPathMergeUtils.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include "KoPathMergeUtils.h"
8
9#include "KoPathPoint.h"
10
11boost::optional<QPointF> KritaUtils::fetchControlPoint(KoPathPoint *pt, bool takeFirst)
12{
13 boost::optional<QPointF> result;
14
15 if (takeFirst) {
16 if (pt->activeControlPoint1()) {
17 result = pt->controlPoint1();
18 }
19 } else {
20 if (pt->activeControlPoint2()) {
21 result = pt->controlPoint2();
22 }
23 }
24
25 return result;
26}
27
28void KritaUtils::makeSymmetric(KoPathPoint *pt, bool copyFromFirst)
29{
30 if (copyFromFirst) {
31 if (pt->activeControlPoint1()) {
32 pt->setControlPoint2(2.0 * pt->point() - pt->controlPoint1());
33 }
34 } else {
35 if (pt->activeControlPoint2()) {
36 pt->setControlPoint1(2.0 * pt->point() - pt->controlPoint2());
37 }
38 }
39
41}
42
43void KritaUtils::restoreControlPoint(KoPathPoint *pt, bool restoreFirst, boost::optional<QPointF> savedPoint)
44{
45 if (restoreFirst) {
46 if (savedPoint) {
47 pt->setControlPoint1(*savedPoint);
48 } else {
50 }
51 } else {
52 if (savedPoint) {
53 pt->setControlPoint2(*savedPoint);
54 } else {
56 }
57 }
58}
A KoPathPoint represents a point in a path.
void setControlPoint1(const QPointF &point)
Set the control point 1.
QPointF point
void setProperty(PointProperty property)
Sets a single property of a point.
void setControlPoint2(const QPointF &point)
Set the control point 2.
void removeControlPoint1()
Removes the first control point.
QPointF controlPoint1
@ IsSymmetric
it is symmetric, like smooth but control points have same distance to point
Definition KoPathPoint.h:42
bool activeControlPoint1
void removeControlPoint2()
Removes the second control point.
bool activeControlPoint2
QPointF controlPoint2
void makeSymmetric(KoPathPoint *pt, bool copyFromFirst)
void restoreControlPoint(KoPathPoint *pt, bool restoreFirst, boost::optional< QPointF > savedPoint)
boost::optional< QPointF > fetchControlPoint(KoPathPoint *pt, bool takeFirst)