62 if (width == 0 || height == 0) {
137 "Location of marker on frame",
160 switch (event->
type) {
174 event->
xy[0] - region->winrct.xmin,
175 event->
xy[1] - region->winrct.ymin,
198 ot->
name =
"Add Marker at Click";
199 ot->
idname =
"CLIP_OT_add_marker_at_click";
200 ot->
description =
"Place new marker at the desired (clicked) position";
222 bool changed =
false;
253 IFACE_(
"Delete selected tracks?"),
265 ot->
name =
"Delete Track";
266 ot->
idname =
"CLIP_OT_delete_track";
291 bool changed =
false;
296 if (marker !=
nullptr) {
308 if (plane_marker !=
nullptr) {
309 if (plane_track->markersnr == 1) {
333 IFACE_(
"Delete marker for current frame from selected tracks?"),
345 ot->
name =
"Delete Marker";
346 ot->
idname =
"CLIP_OT_delete_marker";
347 ot->
description =
"Delete marker for current frame from selected tracks";
394 add_v2_v2v2(r_slider, pattern_corners[1], pattern_corners[2]);
407 SlideMarkerData *data = MEM_cnew<SlideMarkerData>(
"slide marker data");
413 data->action = action;
415 data->marker = marker;
434 data->mval[0] =
event->mval[0];
435 data->mval[1] =
event->mval[1];
438 data->height = height;
445 memcpy(data->old_corners, marker->
pattern_corners,
sizeof(data->old_corners));
456 const float p[2] = {0.0f, 0.0f};
462 for (
int i = 0; i < 4; i++) {
465 int next = (i + 1) % 4;
466 int prev = (4 + i - 1) % 4;
473 if (
fabsf(cur_cross) > FLT_EPSILON) {
477 else if (
cross * cur_cross < 0.0f) {
555 return track_pick.
track;
578 if (width == 0 || height == 0) {
585 if (track !=
nullptr) {
588 sc, track, marker, event, area, corner, action, width, height);
597 if (slidedata !=
nullptr) {
628 if (data->old_markers !=
nullptr) {
629 for (
int a = 0; a < data->track->markersnr; a++) {
630 copy_v2_v2(data->track->markers[a].pos, data->old_markers[a]);
655 if (data->old_markers !=
nullptr) {
666 float dx, dy, mdelta[2];
668 switch (event->
type) {
680 data->accurate =
event->val ==
KM_PRESS;
684 mdelta[0] =
event->mval[0] - data->mval[0];
685 mdelta[1] =
event->mval[1] - data->mval[1];
687 dx = mdelta[0] / data->width / sc->
zoom;
690 dy = -dx / data->height * data->width;
693 dy = mdelta[1] / data->height / sc->
zoom;
696 if (data->accurate) {
724 const float delta[2] = {dx, dy};
736 start_px[0] *= data->width;
737 start_px[1] *= data->height;
744 end_px[0] *= data->width;
745 end_px[1] *= data->height;
758 for (
int a = 0; a < 4; a++) {
764 vec[0] *= data->width;
765 vec[1] *= data->height;
767 data->corners[a][0] = (vec[0] *
cosf(angle) - vec[1] *
sinf(angle)) / data->width;
768 data->corners[a][1] = (vec[1] *
cosf(angle) + vec[0] *
sinf(angle)) / data->height;
785 const float delta[2] = {dx, dy};
793 data->marker->flag &= ~MARKER_TRACKED;
831 ot->
name =
"Slide Marker";
833 ot->
idname =
"CLIP_OT_slide_marker";
851 "Offset in floating-point units, 1.0 is the width and height of the image",
893 {
TRACK_CLEAR_UPTO,
"UPTO", 0,
"Clear Up To",
"Clear path up to current frame"},
898 "Clear path at remaining frames (after current)"},
900 {0,
nullptr, 0,
nullptr,
nullptr},
904 ot->
name =
"Clear Track Path";
905 ot->
description =
"Clear tracks after/before current position or clear the whole track";
906 ot->
idname =
"CLIP_OT_clear_track_path";
921 "Clear action to execute");
926 "Clear active track only instead of all selected tracks");
957 marker->
flag &= ~MARKER_DISABLED;
978 {
MARKER_OP_TOGGLE,
"TOGGLE", 0,
"Toggle",
"Toggle disabled flag for selected markers"},
979 {0,
nullptr, 0,
nullptr,
nullptr},
983 ot->
name =
"Disable Markers";
985 ot->
idname =
"CLIP_OT_disable_markers";
995 RNA_def_enum(
ot->
srna,
"action", actions_items, 0,
"Action",
"Disable action to execute");
1029 if (unselected == 0 && plane_track->flag &
SELECT) {
1032 else if (unselected == 1 && (plane_track->flag &
SELECT) == 0) {
1038 if (active_plane_track !=
nullptr && active_plane_track->
flag &
TRACK_HIDDEN) {
1051 ot->
name =
"Hide Tracks";
1053 ot->
idname =
"CLIP_OT_hide_tracks";
1080 track->flag &= ~TRACK_HIDDEN;
1085 plane_track->flag &= ~PLANE_TRACK_HIDDEN;
1098 ot->
name =
"Hide Tracks Clear";
1100 ot->
idname =
"CLIP_OT_hide_tracks_clear";
1119 return space_clip !=
nullptr;
1134 if (active_track ==
nullptr) {
1138 delta =
pos == 1 ? 1 : -1;
1155 delta =
pos == 3 ? 1 : -1;
1158 while (framenr + delta >= scene->r.sfra && framenr + delta <= scene->r.efra) {
1160 tracking, tracking_object, framenr);
1162 if (cam ==
nullptr) {
1187 {0,
"PATHSTART", 0,
"Path Start",
"Jump to start of current path"},
1188 {1,
"PATHEND", 0,
"Path End",
"Jump to end of current path"},
1189 {2,
"FAILEDPREV", 0,
"Previous Failed",
"Jump to previous failed frame"},
1190 {2,
"FAILNEXT", 0,
"Next Failed",
"Jump to next failed frame"},
1191 {0,
nullptr, 0,
nullptr,
nullptr},
1195 ot->
name =
"Jump to Frame";
1207 RNA_def_enum(
ot->
srna,
"position", position_items, 0,
"Position",
"Position to jump to");
1223 bool update_stabilization =
false;
1226 if (active_track ==
nullptr) {
1238 update_stabilization =
true;
1243 stabilization->tot_track--;
1248 update_stabilization =
true;
1253 stabilization->tot_rot_track--;
1255 BLI_assert(0 <= stabilization->tot_rot_track);
1272 if (update_stabilization) {
1295 ot->
name =
"Join Tracks";
1297 ot->
idname =
"CLIP_OT_join_tracks";
1321 int num_source_tracks;
1323 tracking, &num_source_tracks);
1324 if (num_source_tracks == 0) {
1331 &tracking_object->
tracks);
1337 if (!keep_original) {
1338 for (
int i = 0; i < num_source_tracks; i++) {
1372 if (num_selected_tracks == 1) {
1383 ot->
name =
"Average Tracks";
1385 ot->
idname =
"CLIP_OT_average_tracks";
1429 track->flag &= ~TRACK_LOCKED;
1449 {0,
nullptr, 0,
nullptr,
nullptr},
1453 ot->
name =
"Lock Tracks";
1455 ot->
idname =
"CLIP_OT_lock_tracks";
1465 RNA_def_enum(
ot->
srna,
"action", actions_items, 0,
"Action",
"Lock action to execute");
1505 {0,
nullptr, 0,
nullptr,
nullptr},
1509 ot->
name =
"Set Solver Keyframe";
1511 ot->
idname =
"CLIP_OT_set_solver_keyframe";
1521 RNA_def_enum(
ot->
srna,
"keyframe", keyframe_items, 0,
"Keyframe",
"Keyframe to set");
1537 if (active_track ==
nullptr) {
1543 track->
flag &= ~TRACK_CUSTOMCOLOR;
1562 ot->
idname =
"CLIP_OT_track_copy_color";
1581 int prev = -1,
count = 0;
1583 int start_disabled = 0;
1587 new_markers = MEM_cnew_array<MovieTrackingMarker>(markersnr,
"track cleaned markers");
1590 for (
int a = 0; a < markersnr; a++) {
1603 end = a == markersnr - 1;
1604 end |= (a < markersnr - 1) && (
markers[a].framenr !=
markers[a + 1].framenr - 1 ||
1609 int segok = 1,
len = 0;
1611 if (a != prev &&
markers[a].framenr !=
markers[a - 1].framenr + 1) {
1641 if (start_disabled) {
1643 new_markers[
count].framenr--;
1666 if (del &&
count == 0) {
1722 if (track && track->markersnr == 0) {
1747 RNA_int_set(op->
ptr,
"frames", clip->tracking.settings.clean_frames);
1755 RNA_enum_set(op->
ptr,
"action", clip->tracking.settings.clean_action);
1770 "Delete unclean segments of tracks"},
1771 {0,
nullptr, 0,
nullptr,
nullptr},
1775 ot->
name =
"Clean Tracks";
1776 ot->
description =
"Clean tracks with high error values or few frames";
1777 ot->
idname =
"CLIP_OT_clean_tracks";
1794 "Affect tracks which are tracked less than the "
1795 "specified number of frames",
1803 "Reprojection Error",
1804 "Affect tracks which have a larger reprojection error",
1807 RNA_def_enum(
ot->
srna,
"action", actions_items, 0,
"Action",
"Cleanup action to execute");
1833 ot->
name =
"Add Tracking Object";
1835 ot->
idname =
"CLIP_OT_tracking_object_new";
1874 ot->
name =
"Remove Tracking Object";
1876 ot->
idname =
"CLIP_OT_tracking_object_remove";
1909 ot->
name =
"Copy Tracks";
1910 ot->
description =
"Copy the selected tracks to the internal clipboard";
1911 ot->
idname =
"CLIP_OT_copy_tracks";
1954 ot->
name =
"Paste Tracks";
1955 ot->
description =
"Paste tracks from the internal clipboard";
1956 ot->
idname =
"CLIP_OT_paste_tracks";
1983 marker->
flag &= ~MARKER_TRACKED;
1987 if (marker !=
nullptr) {
2000 plane_marker->
flag &= ~PLANE_MARKER_TRACKED;
2030 ot->
name =
"Insert Keyframe";
2031 ot->
description =
"Insert a keyframe to selected tracks at current frame";
2032 ot->
idname =
"CLIP_OT_keyframe_insert";
2057 ot->
name =
"Delete Keyframe";
2058 ot->
description =
"Delete a keyframe from selected tracks at current frame";
2059 ot->
idname =
"CLIP_OT_keyframe_delete";
2088 if (frame_ibuf ==
nullptr) {
2126 if (plane_ibuf ==
nullptr) {
2142 ot->
name =
"New Image from Plane Marker";
2143 ot->
description =
"Create new image from the content of the plane marker";
2144 ot->
idname =
"CLIP_OT_new_image_from_plane_marker";
2184 if (plane_ibuf ==
nullptr) {
2203 ot->
name =
"Update Image from Plane Marker";
2205 "Update current image used by plane marker from the content of the plane marker";
2206 ot->
idname =
"CLIP_OT_update_image_from_plane_marker";
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
SpaceClip * CTX_wm_space_clip(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
Image * BKE_image_add_from_imbuf(Main *bmain, ImBuf *ibuf, const char *name)
void BKE_image_replace_imbuf(Image *image, ImBuf *ibuf)
void BKE_image_partial_update_mark_full_update(Image *image)
Mark the whole image to be updated.
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
float BKE_movieclip_remap_clip_to_scene_frame(const struct MovieClip *clip, float framenr)
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_tracking_track_path_clear(struct MovieTrackingTrack *track, int ref_frame, eTrackClearAction action)
void BKE_tracking_plane_track_free(struct MovieTrackingPlaneTrack *plane_track)
void BKE_tracking_plane_track_replace_point_track(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingTrack *old_track, struct MovieTrackingTrack *new_track)
void BKE_tracking_clipboard_copy_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object)
void BKE_tracking_plane_marker_delete(struct MovieTrackingPlaneTrack *plane_track, int framenr)
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get_exact(struct MovieTrackingPlaneTrack *plane_track, int framenr)
void BKE_tracking_retrack_plane_from_existing_motion_at_segment(struct MovieTrackingPlaneTrack *plane_track, int start_frame)
struct MovieTrackingMarker * BKE_tracking_marker_ensure(struct MovieTrackingTrack *track, int framenr)
#define PLANE_TRACK_VIEW_SELECTED(plane_track)
void BKE_tracking_tracks_average(struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack **src_tracks, int num_src_tracks)
struct MovieTrackingTrack * BKE_tracking_track_add_empty(struct MovieTracking *tracking, struct ListBase *tracks_list)
void BKE_tracking_plane_tracks_deselect_all(struct ListBase *plane_tracks_base)
void BKE_tracking_track_flag_set(struct MovieTrackingTrack *track, int area, int flag)
void BKE_tracking_clipboard_paste_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object)
void BKE_tracking_tracks_join(struct MovieTracking *tracking, struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack *src_track)
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
void BKE_tracking_marker_clamp_search_position(struct MovieTrackingMarker *marker)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
bool BKE_tracking_object_delete(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object)
void BKE_tracking_dopesheet_tag_update(struct MovieTracking *tracking)
struct MovieTrackingMarker * BKE_tracking_marker_get_exact(struct MovieTrackingTrack *track, int framenr)
void BKE_tracking_track_free(struct MovieTrackingTrack *track)
void BKE_tracking_track_plane_from_existing_motion(struct MovieTrackingPlaneTrack *plane_track, int start_frame)
void BKE_tracking_tracks_deselect_all(struct ListBase *tracksbase)
void BKE_tracking_track_select(struct ListBase *tracksbase, struct MovieTrackingTrack *track, int area, bool extend)
struct MovieTrackingTrack * BKE_tracking_track_add(struct MovieTracking *tracking, struct ListBase *tracksbase, float x, float y, int framenr, int width, int height)
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_ensure(struct MovieTrackingPlaneTrack *plane_track, int framenr)
struct ImBuf * BKE_tracking_get_plane_imbuf(const struct ImBuf *frame_ibuf, const struct MovieTrackingPlaneMarker *plane_marker)
struct MovieTrackingObject * BKE_tracking_object_add(struct MovieTracking *tracking, const char *name)
struct MovieTrackingTrack ** BKE_tracking_selected_tracks_in_active_object(struct MovieTracking *tracking, int *r_num_tracks)
void BKE_tracking_marker_clamp_search_size(struct MovieTrackingMarker *marker)
#define TRACK_VIEW_SELECTED(sc, track)
int BKE_tracking_count_selected_tracks_in_active_object(struct MovieTracking *tracking)
bool BKE_tracking_clipboard_has_tracks(void)
bool BKE_tracking_plane_track_has_point_track(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingTrack *track)
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get(struct MovieTrackingPlaneTrack *plane_track, int framenr)
struct MovieReconstructedCamera * BKE_tracking_camera_get_reconstructed(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, int framenr)
#define BLI_assert_msg(a, msg)
GSet * BLI_gset_ptr_new(const char *info)
void BLI_gset_insert(GSet *gs, void *key)
BLI_INLINE void * BLI_gsetIterator_getKey(GSetIterator *gsi)
#define GSET_ITER(gs_iter_, gset_)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
int isect_point_quad_v2(const float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2])
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void add_v2_v2(float r[2], const float a[2])
float angle_signed_v2v2(const float v1[2], const float v2[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float cross_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
#define BLT_I18NCONTEXT_ID_MOVIECLIP
void DEG_id_tag_update(ID *id, unsigned int flags)
@ TRACKING_CLEAN_DELETE_SEGMENT
@ TRACKING_CLEAN_DELETE_TRACK
void ED_clip_view_lock_state_restore_no_jump(const bContext *C, const ClipViewLockState *state)
void ED_clip_point_stable_pos(const SpaceClip *sc, const ARegion *region, float x, float y, float *xr, float *yr)
MovieClip * ED_space_clip_get_clip(const SpaceClip *sc)
void ED_clip_mouse_pos(const SpaceClip *sc, const ARegion *region, const int mval[2], float r_co[2])
void ED_space_clip_get_size(const SpaceClip *sc, int *r_width, int *r_height)
int ED_space_clip_get_clip_frame_number(const SpaceClip *sc)
void ED_clip_view_lock_state_store(const bContext *C, ClipViewLockState *state)
ImBuf * ED_space_clip_get_buffer(const SpaceClip *sc)
bool ED_space_clip_tracking_poll(bContext *C)
void ED_workspace_status_text(bContext *C, const char *str)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMVert * v2
void clip_delete_marker(bContext *C, MovieClip *clip, MovieTrackingTrack *track, MovieTrackingMarker *marker)
void clip_delete_plane_track(bContext *C, MovieClip *clip, MovieTrackingPlaneTrack *plane_track)
void clip_delete_track(bContext *C, MovieClip *clip, MovieTrackingTrack *track)
CCL_NAMESPACE_BEGIN struct Options options
draw_view in_light_buf[] float
void IMB_freeImBuf(ImBuf *)
const vector< Marker > & markers
void MEM_freeN(void *vmemh)
ccl_device_inline float cross(const float2 a, const float2 b)
static void error(const char *str)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
int RNA_int_get(PointerRNA *ptr, const char *name)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
float RNA_float_get(PointerRNA *ptr, const char *name)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
float pattern_corners[4][2]
MovieTrackingPlaneTrack * active_plane_track
MovieTrackingReconstruction reconstruction
MovieTrackingTrack * active_track
MovieTrackingMarker * markers
eTrackPickAreaDetail area_detail
MovieTrackingTrack * track
MovieTrackingTrack * track
MovieTrackingMarker * marker
struct MovieClipUser user
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void CLIP_OT_paste_tracks(wmOperatorType *ot)
static int delete_marker_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int disable_markers_exec(bContext *C, wmOperator *op)
MovieTrackingTrack * tracking_find_slidable_track_in_proximity(bContext *C, const float co[2])
void CLIP_OT_delete_marker(wmOperatorType *ot)
static bool update_image_from_plane_marker_poll(bContext *C)
static int frame_jump_exec(bContext *C, wmOperator *op)
static int tracking_object_remove_exec(bContext *C, wmOperator *op)
static bool add_marker(const bContext *C, float x, float y)
static bool slide_check_corners(float(*corners)[2])
static int new_image_from_plane_marker_exec(bContext *C, wmOperator *)
static int hide_tracks_exec(bContext *C, wmOperator *op)
void CLIP_OT_track_copy_color(wmOperatorType *ot)
void CLIP_OT_hide_tracks_clear(wmOperatorType *ot)
void CLIP_OT_keyframe_delete(wmOperatorType *ot)
static int hide_tracks_clear_exec(bContext *C, wmOperator *)
static int keyframe_delete_exec(bContext *C, wmOperator *)
static SlideMarkerData * slide_marker_customdata(bContext *C, const wmEvent *event)
static int join_tracks_exec(bContext *C, wmOperator *op)
static bool frame_jump_poll(bContext *C)
static int delete_track_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int slide_marker_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int track_copy_color_exec(bContext *C, wmOperator *)
static bool new_image_from_plane_marker_poll(bContext *C)
static int copy_tracks_exec(bContext *C, wmOperator *)
static int tracking_object_new_exec(bContext *C, wmOperator *)
void CLIP_OT_hide_tracks(wmOperatorType *ot)
static void free_slide_data(SlideMarkerData *data)
void CLIP_OT_set_solver_keyframe(wmOperatorType *ot)
void CLIP_OT_lock_tracks(wmOperatorType *ot)
static void keyframe_set_flag(bContext *C, bool set)
void CLIP_OT_average_tracks(wmOperatorType *ot)
static int update_image_from_plane_marker_exec(bContext *C, wmOperator *)
static ImBuf * sample_plane_marker_image_for_operator(bContext *C)
void CLIP_OT_tracking_object_new(wmOperatorType *ot)
void CLIP_OT_keyframe_insert(wmOperatorType *ot)
void CLIP_OT_copy_tracks(wmOperatorType *ot)
static void apply_mouse_slide(bContext *C, SlideMarkerData *data)
static int average_tracks_exec(bContext *C, wmOperator *op)
static void cancel_mouse_slide(SlideMarkerData *data)
static MovieTrackingTrack * tracking_marker_check_slide(bContext *C, const float co[2], int *r_area, eSlideAction *r_action, int *r_corner)
void CLIP_OT_slide_marker(wmOperatorType *ot)
static int keyframe_insert_exec(bContext *C, wmOperator *)
static int add_marker_exec(bContext *C, wmOperator *op)
void CLIP_OT_add_marker_at_click(wmOperatorType *ot)
static int clear_track_path_exec(bContext *C, wmOperator *op)
static int delete_track_exec(bContext *C, wmOperator *)
void CLIP_OT_clean_tracks(wmOperatorType *ot)
void CLIP_OT_join_tracks(wmOperatorType *ot)
static int add_marker_at_click_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int slide_marker_modal(bContext *C, wmOperator *op, const wmEvent *event)
static int lock_tracks_exec(bContext *C, wmOperator *op)
void CLIP_OT_delete_track(wmOperatorType *ot)
void CLIP_OT_add_marker(wmOperatorType *ot)
static int set_solver_keyframe_exec(bContext *C, wmOperator *op)
static SlideMarkerData * create_slide_marker_data(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker, const wmEvent *event, int area, int corner, eSlideAction action, int width, int height)
static bool paste_tracks_poll(bContext *C)
static int average_tracks_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int add_marker_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void CLIP_OT_update_image_from_plane_marker(wmOperatorType *ot)
static int clean_tracks_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int clean_tracks_exec(bContext *C, wmOperator *op)
void CLIP_OT_tracking_object_remove(wmOperatorType *ot)
void CLIP_OT_disable_markers(wmOperatorType *ot)
static bool is_track_clean(MovieTrackingTrack *track, int frames, int del)
void CLIP_OT_new_image_from_plane_marker(wmOperatorType *ot)
static int add_marker_at_click_modal(bContext *C, wmOperator *, const wmEvent *event)
void CLIP_OT_clear_track_path(wmOperatorType *ot)
static void slide_marker_tilt_slider_relative(const float pattern_corners[4][2], float r_slider[2])
static int paste_tracks_exec(bContext *C, wmOperator *)
void CLIP_OT_frame_jump(wmOperatorType *ot)
static int delete_marker_exec(bContext *C, wmOperator *)
@ TRACK_PICK_AREA_DETAIL_POSITION
@ TRACK_PICK_AREA_DETAIL_TILT_SIZE
@ TRACK_PICK_AREA_DETAIL_SIZE
@ TRACK_PICK_AREA_DETAIL_OFFSET
void clip_tracking_clear_invisible_track_selection(SpaceClip *sc, MovieClip *clip)
void clip_tracking_hide_cursor(bContext *C)
void clip_tracking_show_cursor(bContext *C)
BLI_INLINE bool ed_tracking_point_track_pick_empty(const PointTrackPick *pick)
BLI_INLINE TrackPickOptions ed_tracking_pick_options_defaults()
PointTrackPick ed_tracking_pick_point_track(const TrackPickOptions *options, bContext *C, const float co[2])
bool ed_tracking_point_track_pick_can_slide(const SpaceClip *space_clip, const PointTrackPick *pick)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_operator_properties_confirm_or_exec(wmOperatorType *ot)
int WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)