Blender
V4.3
source
blender
compositor
operations
COM_HueSaturationValueCorrectOperation.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_HueSaturationValueCorrectOperation.h
"
6
7
#include "
BLI_math_vector.h
"
8
9
#include "
BKE_colortools.hh
"
10
11
namespace
blender::compositor
{
12
13
HueSaturationValueCorrectOperation::HueSaturationValueCorrectOperation
()
14
{
15
this->
add_input_socket
(
DataType::Color
);
16
this->
add_output_socket
(
DataType::Color
);
17
}
18
19
void
HueSaturationValueCorrectOperation::update_memory_buffer_partial
(
MemoryBuffer
*
output
,
20
const
rcti
&area,
21
Span<MemoryBuffer *>
inputs
)
22
{
23
float
hsv[4];
24
for
(
BuffersIterator<float>
it =
output
->iterate_with(
inputs
, area); !it.is_end(); ++it) {
25
copy_v4_v4
(hsv, it.in(0));
26
27
/* We parameterize the curve using the hue value. */
28
const
float
parameter = hsv[0];
29
30
/* Adjust hue, scaling returned default 0.5 up to 1. */
31
float
f =
BKE_curvemapping_evaluateF
(
curve_mapping_
, 0, parameter);
32
hsv[0] += f - 0.5f;
33
34
/* Adjust saturation, scaling returned default 0.5 up to 1. */
35
f =
BKE_curvemapping_evaluateF
(
curve_mapping_
, 1, parameter);
36
hsv[1] *= (f * 2.0f);
37
38
/* Adjust value, scaling returned default 0.5 up to 1. */
39
f =
BKE_curvemapping_evaluateF
(
curve_mapping_
, 2, parameter);
40
hsv[2] *= (f * 2.0f);
41
42
hsv[0] = hsv[0] -
floorf
(hsv[0]);
/* Mod 1.0. */
43
CLAMP
(hsv[1], 0.0f, 1.0f);
44
45
copy_v4_v4
(it.out, hsv);
46
}
47
}
48
49
}
// namespace blender::compositor
BKE_colortools.hh
BKE_curvemapping_evaluateF
float BKE_curvemapping_evaluateF(const CurveMapping *cumap, int cur, float value)
Definition
colortools.cc:1073
BLI_math_vector.h
copy_v4_v4
MINLINE void copy_v4_v4(float r[4], const float a[4])
Definition
math_vector_inline.c:57
CLAMP
#define CLAMP(a, b, c)
Definition
BLI_utildefines.h:211
COM_HueSaturationValueCorrectOperation.h
output
#define output
blender::Span
Definition
BLI_span.hh:75
blender::compositor::CurveBaseOperation::curve_mapping_
CurveMapping * curve_mapping_
Definition
COM_CurveBaseOperation.h:15
blender::compositor::HueSaturationValueCorrectOperation::update_memory_buffer_partial
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_HueSaturationValueCorrectOperation.cc:19
blender::compositor::HueSaturationValueCorrectOperation::HueSaturationValueCorrectOperation
HueSaturationValueCorrectOperation()
Definition
COM_HueSaturationValueCorrectOperation.cc:13
blender::compositor::MemoryBuffer
a MemoryBuffer contains access to the data
Definition
COM_MemoryBuffer.h:35
blender::compositor::NodeOperation::add_output_socket
void add_output_socket(DataType datatype)
Definition
COM_NodeOperation.cc:102
blender::compositor::NodeOperation::add_input_socket
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
Definition
COM_NodeOperation.cc:97
floorf
#define floorf(x)
Definition
device/metal/compat.h:293
blender::compositor::DataType::Color
@ Color
Color data type.
Definition
COM_defines.h:27
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
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0