29 template<
typename ImageT,
typename MaskSampler>
32 image += y_range.
first() * image_x * 4;
36 float m =
mask.load_mask_min();
38 if constexpr (std::is_same_v<ImageT, uchar>) {
41 image[3] =
uchar(image[3] * m);
43 else if constexpr (std::is_same_v<ImageT, float>) {
48 *
reinterpret_cast<float4 *
>(image) = pix;
60 if (
mask ==
nullptr || (
mask->byte_buffer.data ==
nullptr &&
mask->float_buffer.data ==
nullptr))
88 "SequencerMaskModifierData",
#define CTX_N_(context, msgid)
#define BLT_I18NCONTEXT_ID_SEQUENCE
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 draw_mask_input_type_settings(const bContext *C, uiLayout *layout, PointerRNA *ptr)
static void maskmodifier_register(ARegionType *region_type)
void apply_modifier_op(T &op, ImBuf *ibuf, const ImBuf *mask, const float3x3 &mask_transform)
static void maskmodifier_panel_draw(const bContext *C, Panel *panel)
static void maskmodifier_apply(ModifierApplyContext &context, StripModifierData *, ImBuf *mask)
PanelType * modifier_panel_register(ARegionType *region_type, const eStripModifierType type, PanelDrawFn draw)
StripModifierTypeInfo seqModifierType_Mask
VecBase< float, 4 > float4
void apply(ImageT *image, MaskSampler &mask, int image_x, IndexRange y_range)