Blender V4.3
COM_DoubleEdgeMaskOperation.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
7#include "BLI_span.hh"
8
10
11namespace blender::compositor {
12
14 private:
15 bool include_all_inner_edges_;
16 bool include_edges_of_image_;
17
18 bool is_output_rendered_;
19
20 public:
22
23 void compute_boundary(const float *inner_mask,
24 const float *outer_mask,
25 MutableSpan<int2> inner_boundary,
26 MutableSpan<int2> outer_boundary);
27
28 void compute_gradient(const float *inner_mask_buffer,
29 const float *outer_mask_buffer,
30 MutableSpan<int2> flooded_inner_boundary,
31 MutableSpan<int2> flooded_outer_boundary,
32 float *output_mask);
33
34 void compute_double_edge_mask(const float *inner_mask,
35 const float *outer_mask,
36 float *output_mask);
37
38 void set_include_all_inner_edges(bool include_all_inner_edges)
39 {
40 include_all_inner_edges_ = include_all_inner_edges;
41 }
42 void set_include_edges_of_image(bool include_edges_of_image)
43 {
44 include_edges_of_image_ = include_edges_of_image;
45 }
46
47 void get_area_of_interest(int input_idx, const rcti &output_area, rcti &r_input_area) override;
48
50 const rcti &area,
51 Span<MemoryBuffer *> inputs) override;
52};
53
54} // namespace blender::compositor
void update_memory_buffer(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void compute_double_edge_mask(const float *inner_mask, const float *outer_mask, float *output_mask)
void compute_boundary(const float *inner_mask, const float *outer_mask, MutableSpan< int2 > inner_boundary, MutableSpan< int2 > outer_boundary)
void set_include_all_inner_edges(bool include_all_inner_edges)
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 compute_gradient(const float *inner_mask_buffer, const float *outer_mask_buffer, MutableSpan< int2 > flooded_inner_boundary, MutableSpan< int2 > flooded_outer_boundary, float *output_mask)
void set_include_edges_of_image(bool include_edges_of_image)
a MemoryBuffer contains access to the data
NodeOperation contains calculation logic.