37 b.add_output<
decl::Color>(
"Image").structure_type(StructureType::Dynamic);
38 b.add_output<
decl::Float>(
"Alpha").structure_type(StructureType::Dynamic);
102 if (!movie_clip_buffer) {
103 result.allocate_invalid();
107 const int2 size =
int2(movie_clip_buffer->
x, movie_clip_buffer->
y);
128 if (!movie_clip_buffer) {
129 result.allocate_single_value();
130 result.set_single_value(1.0f);
134 const int2 size =
int2(movie_clip_buffer->
x, movie_clip_buffer->
y);
141 int64_t input_pixel_index = pixel_index * 4;
142 alpha_values[pixel_index] = movie_clip_buffer->
float_buffer.
data[input_pixel_index + 3];
157 if (!movie_clip_buffer) {
160 result.allocate_single_value();
161 result.set_single_value(0.0f);
165 result.allocate_single_value();
166 result.set_single_value(0.0f);
170 result.allocate_single_value();
171 result.set_single_value(1.0f);
175 result.allocate_single_value();
176 result.set_single_value(0.0f);
184 const int width = movie_clip_buffer->
x;
185 const int height = movie_clip_buffer->
y;
192 movie_clip, frame_number, width, height, offset, &scale, &
angle);
196 result.allocate_single_value();
197 result.set_single_value(offset.x);
201 result.allocate_single_value();
202 result.set_single_value(offset.y);
206 result.allocate_single_value();
207 result.set_single_value(scale);
211 result.allocate_single_value();
229 if (!movie_clip_buffer) {
234 return movie_clip_buffer;
243 return movie_clip_buffer;
273 "Input image or movie from a movie clip data-block, typically used for motion tracking";
276 ntype.
declare = file_ns::cmp_node_movieclip_declare;
277 ntype.
draw_buttons = file_ns::node_composit_buts_movieclip;
Scene * CTX_data_scene(const bContext *C)
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
struct ImBuf * BKE_movieclip_get_ibuf(struct MovieClip *clip, const struct MovieClipUser *user)
#define CMP_NODE_MOVIECLIP
void BKE_tracking_stabilization_data_get(struct MovieClip *clip, int framenr, int width, int height, float translation[2], float *scale, float *angle)
#define DNA_struct_default_alloc(struct_name)
void GPU_texture_update(blender::gpu::Texture *texture, eGPUDataFormat data_format, const void *data)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
void IMB_freeImBuf(ImBuf *ibuf)
void IMB_float_from_byte(ImBuf *ibuf)
#define NOD_REGISTER_NODE(REGISTER_FUNC)
void uiTemplateID(uiLayout *layout, const bContext *C, PointerRNA *ptr, blender::StringRefNull propname, const char *newop, const char *openop, const char *unlinkop, int filter=UI_TEMPLATE_ID_FILTER_ALL, bool live_icon=false, std::optional< blender::StringRef > text=std::nullopt)
void uiTemplateColorspaceSettings(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const bNode & bnode() const
bool should_compute_output(StringRef identifier)
NodeOperation(Context &context, DNode node)
Result & get_result(StringRef identifier)
Context & context() const
void compute_stabilization_data(ImBuf *movie_clip_buffer)
void compute_image(ImBuf *movie_clip_buffer)
void compute_alpha(ImBuf *movie_clip_buffer)
ImBuf * get_movie_clip_buffer()
MovieClipUser * get_movie_clip_user()
MovieClip * get_movie_clip()
NodeOperation(Context &context, DNode node)
void node_register_type(bNodeType &ntype)
void node_type_storage(bNodeType &ntype, std::optional< StringRefNull > storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
void parallel_for(const int2 range, const Function &function)
static void cmp_node_movieclip_declare(NodeDeclarationBuilder &b)
static void node_composit_buts_movieclip_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
static NodeOperation * get_compositor_operation(Context &context, DNode node)
static void node_composit_buts_movieclip(uiLayout *layout, bContext *C, PointerRNA *ptr)
VecBase< float, 4 > float4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
static void register_node_type_cmp_movieclip()
void cmp_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
void node_free_standard_storage(bNode *node)
void node_copy_standard_storage(bNodeTree *, bNode *dest_node, const bNode *src_node)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
ImBufFloatBuffer float_buffer
std::string ui_description
NodeGetCompositorOperationFunction get_compositor_operation
void(* draw_buttons_ex)(uiLayout *, bContext *C, PointerRNA *ptr)
const char * enum_name_legacy
void(* draw_buttons)(uiLayout *, bContext *C, PointerRNA *ptr)
NodeDeclareFunction declare
void(* initfunc_api)(const bContext *C, PointerRNA *ptr)