Blender
V4.3
source
blender
compositor
operations
COM_TranslateOperation.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_utildefines.h
"
8
#include "
COM_ConstantOperation.h
"
9
#include "
COM_MultiThreadedOperation.h
"
10
11
#include <mutex>
12
13
namespace
blender::compositor
{
14
15
class
TranslateOperation
:
public
MultiThreadedOperation
{
16
protected
:
17
static
constexpr
int
IMAGE_INPUT_INDEX
= 0;
18
static
constexpr
int
X_INPUT_INDEX
= 1;
19
static
constexpr
int
Y_INPUT_INDEX
= 2;
20
21
private
:
22
float
delta_x_;
23
float
delta_y_;
24
bool
is_delta_set_;
25
bool
is_relative_;
26
PixelSampler
sampler_;
27
28
std::mutex mutex_;
29
30
protected
:
31
MemoryBufferExtend
x_extend_mode_
;
32
MemoryBufferExtend
y_extend_mode_
;
33
34
public
:
35
TranslateOperation
();
36
TranslateOperation
(
DataType
data_type,
ResizeMode
mode =
ResizeMode::Center
);
37
38
float
get_delta_x
()
39
{
40
BLI_assert
(is_delta_set_);
41
return
delta_x_;
42
}
43
float
get_delta_y
()
44
{
45
BLI_assert
(is_delta_set_);
46
return
delta_y_;
47
}
48
49
void
set_is_relative
(
const
bool
is_relative)
50
{
51
is_relative_ = is_relative;
52
}
53
bool
get_is_relative
()
54
{
55
return
is_relative_;
56
}
57
58
PixelSampler
get_sampler
()
59
{
60
return
sampler_;
61
}
62
void
set_sampler
(
PixelSampler
sampler
)
63
{
64
sampler_ =
sampler
;
65
}
66
67
inline
void
ensure_delta
()
68
{
69
if
(!is_delta_set_) {
70
std::unique_lock
lock
(mutex_);
71
if
(is_delta_set_) {
72
return
;
73
}
74
75
delta_x_ =
get_input_operation
(
X_INPUT_INDEX
)->
get_constant_value_default
(0.0f);
76
delta_y_ =
get_input_operation
(
Y_INPUT_INDEX
)->
get_constant_value_default
(0.0f);
77
if
(
get_is_relative
()) {
78
const
int
input_width =
BLI_rcti_size_x
(
79
&
get_input_operation
(
IMAGE_INPUT_INDEX
)->
get_canvas
());
80
const
int
input_height =
BLI_rcti_size_y
(
81
&
get_input_operation
(
IMAGE_INPUT_INDEX
)->
get_canvas
());
82
delta_x_ *= input_width;
83
delta_y_ *= input_height;
84
}
85
86
is_delta_set_ =
true
;
87
}
88
}
89
void
set_wrapping
(
int
wrapping_type);
90
91
void
get_area_of_interest
(
int
input_idx,
const
rcti
&output_area,
rcti
&r_input_area)
override
;
92
93
void
update_memory_buffer_started
(
MemoryBuffer
*
output
,
94
const
rcti
&area,
95
Span<MemoryBuffer *>
inputs
)
override
;
96
void
update_memory_buffer_partial
(
MemoryBuffer
*
output
,
97
const
rcti
&area,
98
Span<MemoryBuffer *>
inputs
)
override
;
99
};
100
101
class
TranslateCanvasOperation
:
public
TranslateOperation
{
102
public
:
103
TranslateCanvasOperation
();
104
void
determine_canvas
(
const
rcti
&preferred_area,
rcti
&r_area)
override
;
105
};
106
107
}
// namespace blender::compositor
BLI_assert
#define BLI_assert(a)
Definition
BLI_assert.h:50
BLI_rcti_size_y
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
Definition
BLI_rect.h:193
BLI_rcti_size_x
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
Definition
BLI_rect.h:189
BLI_utildefines.h
COM_ConstantOperation.h
COM_MultiThreadedOperation.h
lock
volatile int lock
Definition
atomic_ops_unix.h:0
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::MultiThreadedOperation::MultiThreadedOperation
MultiThreadedOperation()
Definition
COM_MultiThreadedOperation.cc:10
blender::compositor::NodeOperation::get_constant_value_default
float get_constant_value_default(float default_value)
Definition
COM_NodeOperation.cc:25
blender::compositor::NodeOperation::get_canvas
const rcti & get_canvas() const
Definition
COM_NodeOperation.cc:169
blender::compositor::NodeOperation::get_input_operation
NodeOperation * get_input_operation(int index)
Definition
COM_NodeOperation.cc:185
blender::compositor::TranslateCanvasOperation::TranslateCanvasOperation
TranslateCanvasOperation()
Definition
COM_TranslateOperation.cc:128
blender::compositor::TranslateCanvasOperation::determine_canvas
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
Definition
COM_TranslateOperation.cc:133
blender::compositor::TranslateOperation::update_memory_buffer_started
void update_memory_buffer_started(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_TranslateOperation.cc:44
blender::compositor::TranslateOperation::get_delta_y
float get_delta_y()
Definition
COM_TranslateOperation.h:43
blender::compositor::TranslateOperation::IMAGE_INPUT_INDEX
static constexpr int IMAGE_INPUT_INDEX
Definition
COM_TranslateOperation.h:17
blender::compositor::TranslateOperation::y_extend_mode_
MemoryBufferExtend y_extend_mode_
Definition
COM_TranslateOperation.h:32
blender::compositor::TranslateOperation::set_is_relative
void set_is_relative(const bool is_relative)
Definition
COM_TranslateOperation.h:49
blender::compositor::TranslateOperation::x_extend_mode_
MemoryBufferExtend x_extend_mode_
Definition
COM_TranslateOperation.h:31
blender::compositor::TranslateOperation::X_INPUT_INDEX
static constexpr int X_INPUT_INDEX
Definition
COM_TranslateOperation.h:18
blender::compositor::TranslateOperation::update_memory_buffer_partial
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_TranslateOperation.cc:85
blender::compositor::TranslateOperation::set_sampler
void set_sampler(PixelSampler sampler)
Definition
COM_TranslateOperation.h:62
blender::compositor::TranslateOperation::get_delta_x
float get_delta_x()
Definition
COM_TranslateOperation.h:38
blender::compositor::TranslateOperation::Y_INPUT_INDEX
static constexpr int Y_INPUT_INDEX
Definition
COM_TranslateOperation.h:19
blender::compositor::TranslateOperation::set_wrapping
void set_wrapping(int wrapping_type)
Definition
COM_TranslateOperation.cc:26
blender::compositor::TranslateOperation::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_TranslateOperation.cc:51
blender::compositor::TranslateOperation::ensure_delta
void ensure_delta()
Definition
COM_TranslateOperation.h:67
blender::compositor::TranslateOperation::get_is_relative
bool get_is_relative()
Definition
COM_TranslateOperation.h:53
blender::compositor::TranslateOperation::get_sampler
PixelSampler get_sampler()
Definition
COM_TranslateOperation.h:58
blender::compositor::TranslateOperation::TranslateOperation
TranslateOperation()
Definition
COM_TranslateOperation.cc:9
sampler
local_group_size(16, 16) .push_constant(Type local_group_size(16, 16) .push_constant(Type input_tx sampler(1, ImageType::FLOAT_2D, "matte_tx") .image(0
blender::compositor::DataType
DataType
possible data types for sockets
Definition
COM_defines.h:21
blender::compositor::ResizeMode
ResizeMode
Resize modes of inputsockets How are the input and working resolutions matched.
Definition
COM_NodeOperation.h:47
blender::compositor::ResizeMode::Center
@ Center
Center the input image to the center of the working area of the node, no resizing occurs.
Definition
COM_NodeOperation.h:50
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
blender::compositor::PixelSampler
PixelSampler
Definition
COM_Enums.h:39
blender::compositor::MemoryBufferExtend
MemoryBufferExtend
Definition
COM_MemoryBuffer.h:26
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