Krita Source Code Documentation
Loading...
Searching...
No Matches
bspline_base.h
Go to the documentation of this file.
1
2
// einspline: a library for creating and evaluating B-splines //
3
// Copyright (C) 2007 Kenneth P. Esler, Jr. //
4
// //
5
// This program is free software; you can redistribute it and/or modify //
6
// it under the terms of the GNU General Public License as published by //
7
// the Free Software Foundation; either version 2 of the License, or //
8
// (at your option) any later version. //
9
// //
10
// This program is distributed in the hope that it will be useful, //
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
13
// GNU General Public License for more details. //
14
// //
15
// You should have received a copy of the GNU General Public License //
16
// along with this program; if not, write to the Free Software //
17
// Foundation, Inc., 51 Franklin Street, Fifth Floor, //
18
// Boston, MA 02110-1301 USA //
20
21
#ifndef BSPLINE_BASE_H
22
#define BSPLINE_BASE_H
23
24
//#include "config.h"
25
#include "
local_definitions.h
"
26
27
#ifdef __cplusplus
28
#include <complex>
29
typedef
std::complex<float>
complex_float
;
30
typedef
std::complex<double>
complex_double
;
31
#else
32
#include <complex.h>
33
typedef
complex
float
complex_float
;
34
typedef
complex
double
complex_double
;
35
#endif
36
37
// Conventions:
38
// Postfixes:
39
// s: single precision real
40
// d: double precision real
41
// c: single precision complex
42
// z: double precision complex
43
49
50
typedef
enum
{
PERIODIC
,
DERIV1
,
DERIV2
,
FLAT
,
NATURAL
,
ANTIPERIODIC
}
bc_code
;
51
typedef
enum
{
U1D
,
U2D
,
U3D
,
52
NU1D
,
NU2D
,
NU3D
,
53
MULTI_U1D
,
MULTI_U2D
,
MULTI_U3D
,
54
MULTI_NU1D
,
MULTI_NU2D
,
MULTI_NU3D
}
spline_code
;
55
typedef
enum
{
SINGLE_REAL
,
DOUBLE_REAL
,
SINGLE_COMPLEX
,
DOUBLE_COMPLEX
}
56
type_code
;
57
58
typedef
struct
59
{
60
bc_code
lCode
, rCode;
61
float
lVal
, rVal;
62
}
BCtype_s
;
63
64
typedef
struct
65
{
66
bc_code
lCode
, rCode;
67
double
lVal
, rVal;
68
}
BCtype_d
;
69
70
typedef
struct
71
{
72
bc_code
lCode
, rCode;
73
float
lVal_r,
lVal_i
, rVal_r, rVal_i;
74
}
BCtype_c
;
75
76
typedef
struct
77
{
78
bc_code
lCode
, rCode;
79
double
lVal_r,
lVal_i
, rVal_r, rVal_i;
80
}
BCtype_z
;
81
82
83
typedef
struct
84
{
85
double
start,
end
;
86
int
num
;
87
88
// private
89
double
delta
, delta_inv;
90
}
Ugrid
;
91
92
typedef
struct
93
{
94
spline_code
sp_code
;
95
type_code
t_code
;
96
void
*
restrict
coefs
;
97
}
Bspline
;
98
99
#ifdef __cplusplus
100
extern
"C"
101
#endif
102
void
103
destroy_Bspline
(
void
*spline);
104
105
#endif
complex_float
complex float complex_float
Definition
bspline_base.h:33
type_code
type_code
Definition
bspline_base.h:55
DOUBLE_REAL
@ DOUBLE_REAL
Definition
bspline_base.h:55
SINGLE_REAL
@ SINGLE_REAL
Definition
bspline_base.h:55
DOUBLE_COMPLEX
@ DOUBLE_COMPLEX
Definition
bspline_base.h:55
SINGLE_COMPLEX
@ SINGLE_COMPLEX
Definition
bspline_base.h:55
complex_double
complex double complex_double
Definition
bspline_base.h:34
bc_code
bc_code
Definition
bspline_base.h:50
FLAT
@ FLAT
Definition
bspline_base.h:50
NATURAL
@ NATURAL
Definition
bspline_base.h:50
DERIV1
@ DERIV1
Definition
bspline_base.h:50
ANTIPERIODIC
@ ANTIPERIODIC
Definition
bspline_base.h:50
DERIV2
@ DERIV2
Definition
bspline_base.h:50
PERIODIC
@ PERIODIC
Definition
bspline_base.h:50
spline_code
spline_code
Definition
bspline_base.h:51
MULTI_NU1D
@ MULTI_NU1D
Definition
bspline_base.h:54
NU1D
@ NU1D
Definition
bspline_base.h:52
MULTI_NU2D
@ MULTI_NU2D
Definition
bspline_base.h:54
U1D
@ U1D
Definition
bspline_base.h:51
NU2D
@ NU2D
Definition
bspline_base.h:52
MULTI_U1D
@ MULTI_U1D
Definition
bspline_base.h:53
MULTI_U2D
@ MULTI_U2D
Definition
bspline_base.h:53
MULTI_U3D
@ MULTI_U3D
Definition
bspline_base.h:53
MULTI_NU3D
@ MULTI_NU3D
Definition
bspline_base.h:54
U2D
@ U2D
Definition
bspline_base.h:51
U3D
@ U3D
Definition
bspline_base.h:51
NU3D
@ NU3D
Definition
bspline_base.h:52
destroy_Bspline
void destroy_Bspline(void *spline)
Definition
bspline_create.cpp:1872
local_definitions.h
restrict
#define restrict
Definition
local_definitions.h:4
BCtype_c
Definition
bspline_base.h:71
BCtype_c::lCode
bc_code lCode
Definition
bspline_base.h:72
BCtype_c::lVal_i
float lVal_i
Definition
bspline_base.h:73
BCtype_d
Definition
bspline_base.h:65
BCtype_d::lVal
double lVal
Definition
bspline_base.h:67
BCtype_d::lCode
bc_code lCode
Definition
bspline_base.h:66
BCtype_s
Definition
bspline_base.h:59
BCtype_s::lVal
float lVal
Definition
bspline_base.h:61
BCtype_s::lCode
bc_code lCode
Definition
bspline_base.h:60
BCtype_z
Definition
bspline_base.h:77
BCtype_z::lVal_i
double lVal_i
Definition
bspline_base.h:79
BCtype_z::lCode
bc_code lCode
Definition
bspline_base.h:78
Bspline
Definition
bspline_base.h:93
Bspline::sp_code
spline_code sp_code
Definition
bspline_base.h:94
Bspline::coefs
void *restrict coefs
Definition
bspline_base.h:96
Bspline::t_code
type_code t_code
Definition
bspline_base.h:95
Ugrid
Definition
bspline_base.h:84
Ugrid::end
double end
Definition
bspline_base.h:85
Ugrid::delta
double delta
Definition
bspline_base.h:89
Ugrid::num
int num
Definition
bspline_base.h:86
libs
image
3rdparty
einspline
bspline_base.h
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52