Blender
V4.3
source
blender
compositor
operations
COM_SplitOperation.cc
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
#include "
COM_SplitOperation.h
"
6
7
namespace
blender::compositor
{
8
9
SplitOperation::SplitOperation
()
10
{
11
this->
add_input_socket
(
DataType::Color
);
12
this->
add_input_socket
(
DataType::Color
);
13
this->
add_output_socket
(
DataType::Color
);
14
15
flags_
.can_be_constant =
true
;
16
}
17
18
void
SplitOperation::determine_canvas
(
const
rcti
&preferred_area,
rcti
&r_area)
19
{
20
rcti
unused_area =
COM_AREA_NONE
;
21
22
const
bool
determined = this->
get_input_socket
(0)->
determine_canvas
(
COM_AREA_NONE
, unused_area);
23
this->
set_canvas_input_index
(determined ? 0 : 1);
24
25
NodeOperation::determine_canvas
(preferred_area, r_area);
26
}
27
28
void
SplitOperation::update_memory_buffer_partial
(
MemoryBuffer
*
output
,
29
const
rcti
&area,
30
Span<MemoryBuffer *>
inputs
)
31
{
32
const
int
percent = x_split_ ? split_percentage_ * this->
get_width
() / 100.0f :
33
split_percentage_ * this->
get_height
() / 100.0f;
34
const
size_t
elem_bytes =
COM_data_type_bytes_len
(
get_output_socket
()->get_data_type());
35
for
(
BuffersIterator<float>
it =
output
->iterate_with(
inputs
, area); !it.is_end(); ++it) {
36
const
bool
is_image1 = x_split_ ? it.x >= percent : it.y >= percent;
37
memcpy(it.out, it.in(is_image1 ? 0 : 1), elem_bytes);
38
}
39
}
40
41
}
// namespace blender::compositor
COM_SplitOperation.h
output
#define output
blender::Span
Definition
BLI_span.hh:75
blender::compositor::MemoryBuffer
a MemoryBuffer contains access to the data
Definition
COM_MemoryBuffer.h:35
blender::compositor::NodeOperationInput::determine_canvas
bool determine_canvas(const rcti &preferred_area, rcti &r_area)
Definition
COM_NodeOperation.cc:259
blender::compositor::NodeOperation::get_height
unsigned int get_height() const
Definition
COM_NodeOperation.h:465
blender::compositor::NodeOperation::add_output_socket
void add_output_socket(DataType datatype)
Definition
COM_NodeOperation.cc:102
blender::compositor::NodeOperation::get_width
unsigned int get_width() const
Definition
COM_NodeOperation.h:460
blender::compositor::NodeOperation::flags_
NodeOperationFlags flags_
Definition
COM_NodeOperation.h:295
blender::compositor::NodeOperation::get_output_socket
NodeOperationOutput * get_output_socket(unsigned int index=0)
Definition
COM_NodeOperation.cc:87
blender::compositor::NodeOperation::get_input_socket
NodeOperationInput * get_input_socket(unsigned int index)
Definition
COM_NodeOperation.cc:92
blender::compositor::NodeOperation::add_input_socket
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
Definition
COM_NodeOperation.cc:97
blender::compositor::NodeOperation::set_canvas_input_index
void set_canvas_input_index(unsigned int index)
set the index of the input socket that will determine the canvas of this operation
Definition
COM_NodeOperation.cc:144
blender::compositor::NodeOperation::determine_canvas
virtual void determine_canvas(const rcti &preferred_area, rcti &r_area)
Definition
COM_NodeOperation.cc:107
blender::compositor::SplitOperation::update_memory_buffer_partial
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_SplitOperation.cc:28
blender::compositor::SplitOperation::determine_canvas
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
Definition
COM_SplitOperation.cc:18
blender::compositor::SplitOperation::SplitOperation
SplitOperation()
Definition
COM_SplitOperation.cc:9
blender::compositor::DataType::Color
@ Color
Color data type.
Definition
COM_defines.h:27
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
blender::compositor::COM_data_type_bytes_len
constexpr int COM_data_type_bytes_len(DataType data_type)
Definition
COM_defines.h:50
blender::compositor::COM_AREA_NONE
constexpr rcti COM_AREA_NONE
Definition
COM_defines.h:89
blender::compositor::BuffersIterator
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
Definition
COM_BuffersIterator.h:179
inputs
static blender::bke::bNodeSocketTemplate inputs[]
Definition
node_texture_at.cc:11
rcti
Definition
DNA_vec_types.h:68
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0