33 template<
typename ImageT,
typename MaskSampler>
36 image += y_range.
first() * image_x * 4;
48 for (
int i = 0;
i < 3;
i++) {
86 C,
ptr,
"open_mask_input_panel",
IFACE_(
"Mask Input")))
100 "WhiteBalanceModifierData",
MINLINE float max_ff(float a, float b)
MINLINE void mul_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_fl(float r[3], float f)
#define CTX_N_(context, msgid)
#define BLT_I18NCONTEXT_ID_SEQUENCE
@ eSeqModifierType_WhiteBalance
PointerRNA * UI_panel_custom_data_get(const Panel *panel)
BMesh const char void * data
constexpr int64_t first() const
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
StripModifierTypeInfo seqModifierType_WhiteBalance
static void whiteBalance_init_data(StripModifierData *smd)
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)
void store_pixel_premul(float4 pix, uchar *ptr)
float4 load_pixel_premul(const uchar *ptr)
static void whiteBalance_register(ARegionType *region_type)
static void whiteBalance_panel_draw(const bContext *C, Panel *panel)
PanelType * modifier_panel_register(ARegionType *region_type, const eStripModifierType type, PanelDrawFn draw)
static void whiteBalance_apply(ModifierApplyContext &context, StripModifierData *smd, ImBuf *mask)
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)