Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_duplicateop_p.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2002 Patrick Julien <freak@codepimps.org>
3
* SPDX-FileCopyrightText: 2004-2008 Boudewijn Rempt <boud@valdyas.org>
4
* SPDX-FileCopyrightText: 2004 Clarence Dang <dang@kde.org>
5
* SPDX-FileCopyrightText: 2004 Adrian Page <adrian@pagenet.plus.com>
6
* SPDX-FileCopyrightText: 2004 Cyrille Berger <cberger@cberger.net>
7
*
8
* SPDX-License-Identifier: GPL-2.0-or-later
9
*/
10
11
#ifndef KIS_DUPLICATEOP_P_H_
12
#define KIS_DUPLICATEOP_P_H_
13
14
namespace
DuplicateOpUtils
{
15
16
inline
qreal
minimizeEnergy
(
const
qreal* m, qreal* sol,
int
w,
int
h)
17
{
18
qreal err = 0;
19
20
if
(h < 3 || w < 3) {
21
int
size = 3 * w * h;
22
23
for
(
int
i = 0; i < size; i++) {
24
sol[i] = 1.0;
25
}
26
27
warnKrita
<<
"WARNING: healing width or height are smaller than 3 px. The result will have artifacts!"
;
28
29
}
else
{
30
int
rowstride = 3 * w;
31
32
memcpy(sol, m, 3 *
sizeof
(qreal) * w);
33
m += rowstride;
34
sol += rowstride;
35
for
(
int
i = 1; i < h - 1; i++) {
36
memcpy(sol, m, 3 *
sizeof
(qreal));
37
m += 3; sol += 3;
38
for
(
int
j = 3; j < rowstride - 3; j++) {
39
qreal
tmp
= *sol;
40
*sol = ((*(m - 3) + * (m + 3) + * (m - rowstride) + * (m + rowstride)) + 2 * *m) / 6;
41
qreal diff = *sol -
tmp
;
42
err += diff * diff;
43
m ++; sol ++;
44
}
45
memcpy(sol, m, 3 *
sizeof
(qreal));
46
m += 3; sol += 3;
47
}
48
memcpy(sol, m, 3 *
sizeof
(qreal) * w);
49
}
50
51
return
err;
52
}
53
}
54
55
#endif
// KIS_DUPLICATEOP_P_H_
warnKrita
#define warnKrita
Definition
kis_debug.h:87
DuplicateOpUtils
Definition
kis_duplicateop_p.h:14
DuplicateOpUtils::minimizeEnergy
qreal minimizeEnergy(const qreal *m, qreal *sol, int w, int h)
Definition
kis_duplicateop_p.h:16
tmp
Definition
kis_filter_weights_applicator.h:19
plugins
paintops
defaultpaintops
duplicate
kis_duplicateop_p.h
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52