Blender V4.3
COM_CalculateMeanOperation.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
8#include "DNA_node_types.h"
9#include <functional>
10
11namespace blender::compositor {
12
18 public:
19 struct PixelsSum {
20 float sum;
22 };
23
24 protected:
28 std::function<float(const float *elem)> setting_func_;
29
30 public:
32
33 void init_execution() override;
34
35 void set_setting(int setting);
36
37 void get_area_of_interest(int input_idx, const rcti &output_area, rcti &r_input_area) override;
38 void determine_canvas(const rcti &preferred_area, rcti &r_area) override;
39
40 const float *get_constant_elem() override;
42 const rcti &area,
43 Span<MemoryBuffer *> inputs) override;
44
45 protected:
46 /* Calculate value which will be written to the single-element output in the
47 * update_memory_buffer().
48 * The caller takes care of checking the value is only calculated once. */
49 virtual float calculate_value(const MemoryBuffer *input) const;
50
51 float calculate_mean(const MemoryBuffer *input) const;
52
53 private:
54 PixelsSum calc_area_sum(const MemoryBuffer *input, const rcti &area) const;
55};
56
57} // namespace blender::compositor
base class of CalculateMean, implementing the simple CalculateMean
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 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
virtual float calculate_value(const MemoryBuffer *input) const
a MemoryBuffer contains access to the data
draw_view in_light_buf[] float