16 for(GList *iter = g_list_first(pipe->
nodes); iter; iter = g_list_next(iter))
19 if(!candidate)
continue;
20 if(candidate->module == target_module)
break;
21 if(candidate->
enabled && !strcmp(candidate->module->op,
"detailmask"))
22 detailmask_piece = candidate;
53 gboolean valid =
FALSE;
55 GList *source_iter = NULL;
56 for(GList *iter = g_list_first(pipe->
nodes); iter; iter = g_list_next(iter))
59 if(candidate->module == target_module) target_piece = candidate;
60 if((
IS_NULL_PTR(source_iter)) && (!strcmp(candidate->module->op,
"detailmask")) && candidate->
enabled)
67 if(!valid)
return NULL;
80 for(GList *iter = g_list_next(source_iter); iter; iter = g_list_next(iter))
86 if(module->module->distort_mask
87 && !(!strcmp(module->module->op,
"finalscale")
88 && module->roi_in.width == 0
89 && module->roi_in.height == 0))
92 (
size_t)module->roi_out.width * module->roi_out.height, 0);
94 module->roi_in.width, module->roi_in.height,
95 module->roi_out.width, module->roi_out.height);
96 module->module->distort_mask(module->module, (dt_dev_pixelpipe_t *)pipe, module, inmask, tmp,
97 &module->roi_in, &module->roi_out);
101 current_roi =
module->roi_out;
103 else if(!module->module->distort_mask
104 && (module->roi_in.width != module->roi_out.width
105 || module->roi_in.height != module->roi_out.height
106 || module->roi_in.x != module->roi_out.x
107 || module->roi_in.y != module->roi_out.y))
108 fprintf(stderr,
"FIXME: module `%s' changed the roi from %d x %d @ %d / %d to %d x %d | %d / %d but doesn't have "
109 "distort_mask() implemented!\n", module->module->op, module->roi_in.width,
110 module->roi_in.height, module->roi_in.x, module->roi_in.y,
111 module->roi_out.width, module->roi_out.height, module->roi_out.x,
114 if(module->module == target_module)
break;
123 || current_roi.
x != target_piece->
roi_out.
x
124 || current_roi.
y != target_piece->
roi_out.
y))
#define TRUE
Definition ashift_lsd.c:162
#define FALSE
Definition ashift_lsd.c:158
void dt_vprint(dt_debug_thread_t thread, const char *msg,...)
Definition darktable.c:1473
darktable_t darktable
Definition darktable.c:173
@ DT_DEBUG_MASKS
Definition darktable.h:726
#define dt_pixelpipe_cache_alloc_align_float_cache(pixels, id)
Definition darktable.h:447
#define dt_pixelpipe_cache_free_align(mem)
Definition darktable.h:453
#define IS_NULL_PTR(p)
C is way too permissive with !=, == and if(var) checks, which can mean too many things depending on w...
Definition darktable.h:281
gboolean dt_dev_pixelpipe_activemodule_disables_currentmodule(struct dt_develop_t *dev, struct dt_iop_module_t *current_module)
Definition dev_pixelpipe.c:341
const struct dt_interpolation * dt_interpolation_new(enum dt_interpolation_type type)
Definition interpolation.c:648
void dt_interpolation_resample_roi_1c(const struct dt_interpolation *itor, float *out, const dt_iop_roi_t *const roi_out, const float *const in, const dt_iop_roi_t *const roi_in)
Definition interpolation.c:1470
@ DT_INTERPOLATION_USERPREF_WARP
Definition interpolation.h:48
uint64_t dt_dev_pixelpipe_rawdetail_mask_hash(const dt_dev_pixelpipe_iop_t *piece)
Definition pixelpipe.c:50
void dt_dev_clear_rawdetail_mask(dt_dev_pixelpipe_t *pipe)
Release the side-band detail mask cache reference currently owned by the pipeline.
Definition pixelpipe.c:63
void dt_dev_pixelpipe_cache_ref_count_entry(dt_dev_pixelpipe_cache_t *cache, gboolean lock, dt_pixel_cache_entry_t *cache_entry)
Increase/Decrease the reference count on the cache line as to prevent LRU item removal....
Definition pixelpipe_cache.c:2225
gboolean dt_dev_pixelpipe_cache_peek(dt_dev_pixelpipe_cache_t *cache, const uint64_t hash, void **data, dt_pixel_cache_entry_t **entry, const int preferred_devid, void **cl_mem_output)
Non-owning lookup of an existing cache line.
Definition pixelpipe_cache.c:2052
dt_pixel_cache_entry_t * dt_dev_pixelpipe_cache_get_entry(dt_dev_pixelpipe_cache_t *cache, const uint64_t hash)
Get an internal reference to the cache entry matching hash. If you are going to access this entry mor...
Definition pixelpipe_cache.c:144
#define DT_PIXELPIPE_CACHE_HASH_INVALID
Definition pixelpipe_cache.h:42
float * dt_dev_distort_detail_mask(const dt_dev_pixelpipe_t *pipe, float *src, const dt_iop_module_t *target_module)
Definition pixelpipe_rawdetail.c:49
float * dt_dev_retrieve_rawdetail_mask(const dt_dev_pixelpipe_t *pipe, const dt_iop_module_t *target_module)
Definition pixelpipe_rawdetail.c:13
unsigned __int64 uint64_t
Definition strptime.c:75
struct dt_dev_pixelpipe_cache_t * pixelpipe_cache
Definition darktable.h:789
Definition pixelpipe_hb.h:96
gboolean enabled
Definition pixelpipe_hb.h:111
struct dt_iop_module_t *void * data
Definition pixelpipe_hb.h:97
dt_iop_roi_t roi_out
Definition pixelpipe_hb.h:132
Definition pixelpipe_hb.h:218
GList * nodes
Definition pixelpipe_hb.h:245
uint64_t rawdetail_mask_hash
Definition pixelpipe_hb.h:266
struct dt_iop_roi_t rawdetail_mask_roi
Definition pixelpipe_hb.h:267
int devid
Definition pixelpipe_hb.h:308
Definition interpolation.h:60
GModule *dt_dev_operation_t op
Definition imageop.h:256
Region of interest passed through the pixelpipe.
Definition imageop.h:72
int x
Definition imageop.h:73
double scale
Definition imageop.h:74
int width
Definition imageop.h:73
int height
Definition imageop.h:73
int y
Definition imageop.h:73
Definition pixelpipe_cache.h:87