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