1 /*
2     This file is part of darktable,
3     Copyright (C) 2017-2020 darktable developers.
4 
5     darktable 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 3 of the License, or
8     (at your option) any later version.
9 
10     darktable 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 darktable.  If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef DT_DEVELOP_HEAL_H
20 #define DT_DEVELOP_HEAL_H
21 
22 /* heals dest_buffer using src_buffer as a reference and mask_buffer to define the area to be healed
23  * the 3 buffers must have the same size, but mask_buffer is 1 channel and is tested for != 0.f
24  */
25 void dt_heal(const float *const src_buffer, float *dest_buffer, const float *const mask_buffer, const int width,
26              const int height, const int ch, const int use_sse);
27 
28 #ifdef HAVE_OPENCL
29 
30 typedef struct dt_heal_cl_global_t
31 {
32   int kernel_dummy;
33 } dt_heal_cl_global_t;
34 
35 typedef struct heal_params_cl_t
36 {
37   dt_heal_cl_global_t *global;
38   int devid;
39 } heal_params_cl_t;
40 
41 dt_heal_cl_global_t *dt_heal_init_cl_global(void);
42 void dt_heal_free_cl_global(dt_heal_cl_global_t *g);
43 
44 heal_params_cl_t *dt_heal_init_cl(const int devid);
45 void dt_heal_free_cl(heal_params_cl_t *p);
46 
47 cl_int dt_heal_cl(heal_params_cl_t *p, cl_mem dev_src, cl_mem dev_dest, const float *const mask_buffer,
48                   const int width, const int height);
49 
50 #endif
51 #endif
52