Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_bspline_1d.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_BSPLINE_1D_H
8#define __KIS_BSPLINE_1D_H
9
10#include <kritaimage_export.h>
11
12#include <QScopedPointer>
13#include <QVector>
14
15#include "kis_bspline.h"
16
17
18namespace KisBSplines {
19
20class KRITAIMAGE_EXPORT KisBSpline1D
21{
22public:
23 KisBSpline1D(float gridStart, float gridEnd, int numSamples, BorderCondition bc);
24 ~KisBSpline1D();
25
26 template <class FunctionOp>
27 inline void initializeSpline() {
28
29 FunctionOp op;
30 float step = (m_gridEnd - m_gridStart) / (m_numSamples - 1);
31 QVector<float> values(m_numSamples);
32
33 for (int i = 0; i < m_numSamples; i++) {
34 float x = m_gridStart + i * step;
35 float y = op(x);
36
37 values[i] = y;
38 }
39
40 initializeSplineImpl(values);
41 }
42
43 float value(float x) const;
44
45 inline float gridStart() const {
46 return m_gridStart;
47 }
48
49 inline float gridEnd() const {
50 return m_gridEnd;
51 }
52
53private:
54 void initializeSplineImpl(const QVector<float> &values);
55
56private:
57 struct Private;
58 const QScopedPointer<Private> m_d;
59
65 float m_gridEnd;
67};
68
69}
70
71#endif /* __KIS_BSPLINE_1D_H */
float value(const T *src, size_t ch)
const QScopedPointer< Private > m_d