32 template<
typename ImageT,
typename MaskSampler>
35 image += y_range.
first() * image_x * 4;
66 const float brightness = bcmd->
bright / 100.0f;
67 const float contrast = bcmd->
contrast;
68 float delta = contrast / 200.0f;
71 op.
mul = 1.0f - delta * 2.0f;
73 op.
add = op.
mul * (brightness - delta);
77 op.
mul =
max_ff(1.0f - delta * 2.0f, 0.0f);
78 op.
add = op.
mul * brightness + delta;
95 C,
ptr,
"open_mask_input_panel",
IFACE_(
"Mask Input")))
109 "BrightContrastModifierData",
MINLINE float max_ff(float a, float b)
#define CTX_N_(context, msgid)
#define BLT_I18NCONTEXT_ID_SEQUENCE
@ eSeqModifierType_BrightContrast
PointerRNA * UI_panel_custom_data_get(const Panel *panel)
constexpr int64_t first() const
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
void store_pixel_raw(float4 pix, uchar *ptr)
void draw_mask_input_type_settings(const bContext *C, uiLayout *layout, PointerRNA *ptr)
void apply_modifier_op(T &op, ImBuf *ibuf, const ImBuf *mask, const float3x3 &mask_transform)
StripModifierTypeInfo seqModifierType_BrightContrast
static void brightcontrast_register(ARegionType *region_type)
float4 load_pixel_raw(const uchar *ptr)
static void brightcontrast_panel_draw(const bContext *C, Panel *panel)
static void brightcontrast_apply(ModifierApplyContext &context, StripModifierData *smd, ImBuf *mask)
PanelType * modifier_panel_register(ARegionType *region_type, const eStripModifierType type, PanelDrawFn draw)
VecBase< float, 4 > float4
void apply(ImageT *image, MaskSampler &mask, int image_x, IndexRange y_range)
PanelLayout panel_prop(const bContext *C, PointerRNA *open_prop_owner, blender::StringRefNull open_prop_name)
void use_property_split_set(bool value)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)