Blender
V4.3
source
blender
compositor
operations
COM_FlipOperation.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_FlipOperation.h
"
6
7
namespace
blender::compositor
{
8
9
FlipOperation::FlipOperation
()
10
{
11
this->
add_input_socket
(
DataType::Color
,
ResizeMode::None
);
12
this->
add_output_socket
(
DataType::Color
);
13
this->
set_canvas_input_index
(0);
14
flip_x_ =
true
;
15
flip_y_ =
false
;
16
flags_
.can_be_constant =
true
;
17
}
18
19
void
FlipOperation::get_area_of_interest
(
const
int
input_idx,
20
const
rcti
&
/*output_area*/
,
21
rcti
&r_input_area)
22
{
23
BLI_assert
(input_idx == 0);
24
UNUSED_VARS_NDEBUG
(input_idx);
25
26
/* The full input image should be flipped to avoid cropping effects caused by previous scaling or
27
* translating, or a smaller output area. */
28
r_input_area =
get_canvas
();
29
}
30
31
void
FlipOperation::update_memory_buffer_partial
(
MemoryBuffer
*
output
,
32
const
rcti
&area,
33
Span<MemoryBuffer *>
inputs
)
34
{
35
const
MemoryBuffer
*input_img =
inputs
[0];
36
if
(input_img->
is_a_single_elem
()) {
37
copy_v4_v4
(
output
->get_elem(0, 0), input_img->
get_elem
(0, 0));
38
return
;
39
}
40
const
int
input_offset_x = input_img->
get_rect
().
xmin
;
41
const
int
input_offset_y = input_img->
get_rect
().
ymin
;
42
for
(
BuffersIterator<float>
it =
output
->iterate_with({}, area); !it.is_end(); ++it) {
43
const
int
nx = flip_x_ ? (
int
(this->
get_width
()) - 1) - it.x : it.x;
44
const
int
ny = flip_y_ ? (
int
(this->
get_height
()) - 1) - it.y : it.y;
45
input_img->
read_elem
(input_offset_x + nx, input_offset_y + ny, it.out);
46
}
47
}
48
49
}
// namespace blender::compositor
BLI_assert
#define BLI_assert(a)
Definition
BLI_assert.h:50
copy_v4_v4
MINLINE void copy_v4_v4(float r[4], const float a[4])
Definition
math_vector_inline.c:57
UNUSED_VARS_NDEBUG
#define UNUSED_VARS_NDEBUG(...)
Definition
BLI_utildefines.h:537
COM_FlipOperation.h
output
#define output
blender::Span
Definition
BLI_span.hh:75
blender::compositor::FlipOperation::FlipOperation
FlipOperation()
Definition
COM_FlipOperation.cc:9
blender::compositor::FlipOperation::update_memory_buffer_partial
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_FlipOperation.cc:31
blender::compositor::FlipOperation::get_area_of_interest
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.
Definition
COM_FlipOperation.cc:19
blender::compositor::MemoryBuffer
a MemoryBuffer contains access to the data
Definition
COM_MemoryBuffer.h:35
blender::compositor::MemoryBuffer::get_rect
const rcti & get_rect() const
get the rect of this MemoryBuffer
Definition
COM_MemoryBuffer.h:590
blender::compositor::MemoryBuffer::is_a_single_elem
bool is_a_single_elem() const
Definition
COM_MemoryBuffer.h:131
blender::compositor::MemoryBuffer::get_elem
float * get_elem(int x, int y)
Definition
COM_MemoryBuffer.h:161
blender::compositor::MemoryBuffer::read_elem
void read_elem(int x, int y, float *out) const
Definition
COM_MemoryBuffer.h:186
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_canvas
const rcti & get_canvas() const
Definition
COM_NodeOperation.cc:169
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
int
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
Definition
eevee_lightprobe_volume_info.hh:143
blender::compositor::DataType::Color
@ Color
Color data type.
Definition
COM_defines.h:27
blender::compositor::ResizeMode::None
@ None
Definition
COM_NodeOperation.h:52
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
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
rcti::ymin
int ymin
Definition
DNA_vec_types.h:70
rcti::xmin
int xmin
Definition
DNA_vec_types.h:69
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0