73 r_area = preferred_area;
109 [=](
const rcti &
split) {
return calc_area_sum(input, split); },
112 join.sum += chunk.sum;
113 join.num_pixels += chunk.num_pixels;
115 return total.
num_pixels == 0 ? 0.0f : total.sum / total.num_pixels;
122 for (
const float *elem : input->get_buffer_area(area)) {
123 if (elem[3] <= 0.0f) {
#define BLI_YUV_ITU_BT709
void rgb_to_yuv(float r, float g, float b, float *r_y, float *r_u, float *r_v, int colorspace)
static void split(const char *text, const char *seps, char ***str, int *count)
BLI_INLINE float IMB_colormanagement_get_luminance(const float rgb[3])
const float * get_constant_elem() override
void update_memory_buffer(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
float calculate_mean(const MemoryBuffer *input) const
std::function< float(const float *elem)> setting_func_
void set_setting(int setting)
void get_area_of_interest(int input_idx, const rcti &output_area, rcti &r_input_area) override
Get input operation area being read by this operation on rendering given output area.
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
void init_execution() override
virtual float calculate_value(const MemoryBuffer *input) const
bool needs_canvas_to_get_constant_
void execute_work(const rcti &work_rect, std::function< void(const rcti &split_rect)> work_func)
a MemoryBuffer contains access to the data
void add_output_socket(DataType datatype)
NodeOperationFlags flags_
const rcti & get_canvas() const
NodeOperation * get_input_operation(int index)
ExecutionSystem * exec_system_
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
virtual void determine_canvas(const rcti &preferred_area, rcti &r_area)
bool is_constant_operation