64 if (width == 0 || height == 0) {
119 ot->name =
"Add Marker";
120 ot->idname =
"CLIP_OT_add_marker";
121 ot->description =
"Place new marker at specified location";
139 "Location of marker on frame",
168 switch (event->
type) {
209 ot->name =
"Add Marker at Click";
210 ot->idname =
"CLIP_OT_add_marker_at_click";
211 ot->description =
"Place new marker at the desired (clicked) position";
233 bool changed =
false;
264 IFACE_(
"Delete selected tracks?"),
276 ot->name =
"Delete Track";
277 ot->idname =
"CLIP_OT_delete_track";
278 ot->description =
"Delete selected tracks";
302 bool changed =
false;
307 if (marker !=
nullptr) {
319 if (plane_marker !=
nullptr) {
320 if (plane_track->markersnr == 1) {
346 IFACE_(
"Delete marker for current frame from selected tracks?"),
358 ot->name =
"Delete Marker";
359 ot->idname =
"CLIP_OT_delete_marker";
360 ot->description =
"Delete marker for current frame from selected tracks";
407 add_v2_v2v2(r_slider, pattern_corners[1], pattern_corners[2]);
426 data->action = action;
428 data->marker = marker;
447 data->mval[0] =
event->mval[0];
448 data->mval[1] =
event->mval[1];
451 data->height = height;
469 const float p[2] = {0.0f, 0.0f};
475 for (
int i = 0;
i < 4;
i++) {
478 int next = (
i + 1) % 4;
479 int prev = (4 +
i - 1) % 4;
486 if (
fabsf(cur_cross) > FLT_EPSILON) {
490 else if (
cross * cur_cross < 0.0f) {
568 return track_pick.
track;
591 if (width == 0 || height == 0) {
598 if (track !=
nullptr) {
601 sc, track, marker, event, area, corner, action, width, height);
610 if (slidedata !=
nullptr) {
641 if (
data->old_markers !=
nullptr) {
642 for (
int a = 0; a <
data->track->markersnr; a++) {
668 if (
data->old_markers !=
nullptr) {
679 float dx, dy, mdelta[2];
681 switch (event->
type) {
697 mdelta[0] =
event->mval[0] -
data->mval[0];
698 mdelta[1] =
event->mval[1] -
data->mval[1];
700 dx = mdelta[0] /
data->width / sc->
zoom;
703 dy = -dx /
data->height *
data->width;
706 dy = mdelta[1] /
data->height / sc->
zoom;
709 if (
data->accurate) {
737 const float delta[2] = {dx, dy};
749 start_px[0] *=
data->width;
750 start_px[1] *=
data->height;
757 end_px[0] *=
data->width;
758 end_px[1] *=
data->height;
771 for (
int a = 0; a < 4; a++) {
777 vec[0] *=
data->width;
778 vec[1] *=
data->height;
798 const float delta[2] = {dx, dy};
847 ot->name =
"Slide Marker";
848 ot->description =
"Slide marker areas";
849 ot->idname =
"CLIP_OT_slide_marker";
867 "Offset in floating-point units, 1.0 is the width and height of the image",
909 {
TRACK_CLEAR_UPTO,
"UPTO", 0,
"Clear Up To",
"Clear path up to current frame"},
914 "Clear path at remaining frames (after current)"},
916 {0,
nullptr, 0,
nullptr,
nullptr},
920 ot->name =
"Clear Track Path";
921 ot->description =
"Clear tracks after/before current position or clear the whole track";
922 ot->idname =
"CLIP_OT_clear_track_path";
937 "Clear action to execute");
942 "Clear active track only instead of all selected tracks");
994 {
MARKER_OP_TOGGLE,
"TOGGLE", 0,
"Toggle",
"Toggle disabled flag for selected markers"},
995 {0,
nullptr, 0,
nullptr,
nullptr},
999 ot->name =
"Disable Markers";
1000 ot->description =
"Disable/enable selected markers";
1001 ot->idname =
"CLIP_OT_disable_markers";
1011 RNA_def_enum(
ot->srna,
"action", actions_items, 0,
"Action",
"Disable action to execute");
1045 if (unselected == 0 && plane_track->flag &
SELECT) {
1048 else if (unselected == 1 && (plane_track->flag &
SELECT) == 0) {
1054 if (active_plane_track !=
nullptr && active_plane_track->
flag &
TRACK_HIDDEN) {
1067 ot->name =
"Hide Tracks";
1068 ot->description =
"Hide selected tracks";
1069 ot->idname =
"CLIP_OT_hide_tracks";
1079 RNA_def_boolean(
ot->srna,
"unselected",
false,
"Unselected",
"Hide unselected tracks");
1114 ot->name =
"Hide Tracks Clear";
1115 ot->description =
"Clear hide selected tracks";
1116 ot->idname =
"CLIP_OT_hide_tracks_clear";
1135 return space_clip !=
nullptr;
1150 if (active_track ==
nullptr) {
1154 delta =
pos == 1 ? 1 : -1;
1171 delta =
pos == 3 ? 1 : -1;
1174 while (framenr + delta >= scene->
r.
sfra && framenr + delta <= scene->r.efra) {
1176 tracking, tracking_object, framenr);
1178 if (cam ==
nullptr) {
1203 {0,
"PATHSTART", 0,
"Path Start",
"Jump to start of current path"},
1204 {1,
"PATHEND", 0,
"Path End",
"Jump to end of current path"},
1205 {2,
"FAILEDPREV", 0,
"Previous Failed",
"Jump to previous failed frame"},
1206 {2,
"FAILNEXT", 0,
"Next Failed",
"Jump to next failed frame"},
1207 {0,
nullptr, 0,
nullptr,
nullptr},
1211 ot->name =
"Jump to Frame";
1212 ot->description =
"Jump to special frame";
1213 ot->idname =
"CLIP_OT_frame_jump";
1223 RNA_def_enum(
ot->srna,
"position", position_items, 0,
"Position",
"Position to jump to");
1239 bool update_stabilization =
false;
1242 if (active_track ==
nullptr) {
1254 update_stabilization =
true;
1264 update_stabilization =
true;
1278 point_tracks.
add(plane_track);
1288 if (update_stabilization) {
1307 ot->name =
"Join Tracks";
1308 ot->description =
"Join selected tracks";
1309 ot->idname =
"CLIP_OT_join_tracks";
1333 int num_source_tracks;
1335 tracking, &num_source_tracks);
1336 if (num_source_tracks == 0) {
1343 &tracking_object->
tracks);
1349 if (!keep_original) {
1350 for (
int i = 0;
i < num_source_tracks;
i++) {
1386 if (num_selected_tracks == 1) {
1397 ot->name =
"Average Tracks";
1398 ot->description =
"Average selected tracks into active";
1399 ot->idname =
"CLIP_OT_average_tracks";
1412 prop =
RNA_def_boolean(
ot->srna,
"keep_original",
true,
"Keep Original",
"Keep original tracks");
1463 {0,
nullptr, 0,
nullptr,
nullptr},
1467 ot->name =
"Lock Tracks";
1468 ot->description =
"Lock/unlock selected tracks";
1469 ot->idname =
"CLIP_OT_lock_tracks";
1479 RNA_def_enum(
ot->srna,
"action", actions_items, 0,
"Action",
"Lock action to execute");
1519 {0,
nullptr, 0,
nullptr,
nullptr},
1523 ot->name =
"Set Solver Keyframe";
1524 ot->description =
"Set keyframe used by solver";
1525 ot->idname =
"CLIP_OT_set_solver_keyframe";
1535 RNA_def_enum(
ot->srna,
"keyframe", keyframe_items, 0,
"Keyframe",
"Keyframe to set");
1551 if (active_track ==
nullptr) {
1574 ot->name =
"Copy Color";
1575 ot->description =
"Copy color to all selected tracks";
1576 ot->idname =
"CLIP_OT_track_copy_color";
1595 int prev = -1,
count = 0;
1597 int start_disabled = 0;
1604 for (
int a = 0; a < markersnr; a++) {
1617 end = a == markersnr - 1;
1618 end |= (a < markersnr - 1) && (markers[a].framenr != markers[a + 1].framenr - 1 ||
1623 int segok = 1,
len = 0;
1625 if (a != prev && markers[a].framenr != markers[a - 1].framenr + 1) {
1655 if (start_disabled) {
1657 new_markers[
count].framenr--;
1680 if (del &&
count == 0) {
1736 if (track && track->markersnr == 0) {
1784 "Delete unclean segments of tracks"},
1785 {0,
nullptr, 0,
nullptr,
nullptr},
1789 ot->name =
"Clean Tracks";
1790 ot->description =
"Clean tracks with high error values or few frames";
1791 ot->idname =
"CLIP_OT_clean_tracks";
1808 "Affect tracks which are tracked less than the "
1809 "specified number of frames",
1817 "Reprojection Error",
1818 "Affect tracks which have a larger reprojection error",
1821 RNA_def_enum(
ot->srna,
"action", actions_items, 0,
"Action",
"Cleanup action to execute");
1847 ot->name =
"Add Tracking Object";
1848 ot->description =
"Add new object for tracking";
1849 ot->idname =
"CLIP_OT_tracking_object_new";
1888 ot->name =
"Remove Tracking Object";
1889 ot->description =
"Remove object for tracking";
1890 ot->idname =
"CLIP_OT_tracking_object_remove";
1923 ot->name =
"Copy Tracks";
1924 ot->description =
"Copy the selected tracks to the internal clipboard";
1925 ot->idname =
"CLIP_OT_copy_tracks";
1968 ot->name =
"Paste Tracks";
1969 ot->description =
"Paste tracks from the internal clipboard";
1970 ot->idname =
"CLIP_OT_paste_tracks";
2001 if (marker !=
nullptr) {
2044 ot->name =
"Insert Keyframe";
2045 ot->description =
"Insert a keyframe to selected tracks at current frame";
2046 ot->idname =
"CLIP_OT_keyframe_insert";
2071 ot->name =
"Delete Keyframe";
2072 ot->description =
"Delete a keyframe from selected tracks at current frame";
2073 ot->idname =
"CLIP_OT_keyframe_delete";
2102 if (frame_ibuf ==
nullptr) {
2140 if (plane_ibuf ==
nullptr) {
2156 ot->name =
"New Image from Plane Marker";
2157 ot->description =
"Create new image from the content of the plane marker";
2158 ot->idname =
"CLIP_OT_new_image_from_plane_marker";
2198 if (plane_ibuf ==
nullptr) {
2217 ot->name =
"Update Image from Plane Marker";
2219 "Update current image used by plane marker from the content of the plane marker";
2220 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)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(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)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
void IMB_freeImBuf(ImBuf *ibuf)
Read Guarded memory(de)allocation.
BMesh const char void * data
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
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
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)
static wmOperatorStatus frame_jump_exec(bContext *C, wmOperator *op)
struct MovieTracking tracking
float pattern_corners[4][2]
MovieTrackingPlaneTrack * active_plane_track
MovieTrackingReconstruction reconstruction
MovieTrackingTrack * active_track
MovieTrackingMarker * markers
MovieTrackingStabilization stabilization
MovieTrackingSettings settings
eTrackPickAreaDetail area_detail
MovieTrackingTrack * track
MovieTrackingTrack * track
MovieTrackingMarker * marker
struct MovieClipUser user
struct ReportList * reports
void CLIP_OT_paste_tracks(wmOperatorType *ot)
static wmOperatorStatus hide_tracks_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 wmOperatorStatus slide_marker_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus add_marker_exec(bContext *C, wmOperator *op)
static bool add_marker(const bContext *C, float x, float y)
static wmOperatorStatus delete_track_exec(bContext *C, wmOperator *)
static bool slide_check_corners(float(*corners)[2])
void CLIP_OT_track_copy_color(wmOperatorType *ot)
static wmOperatorStatus clear_track_path_exec(bContext *C, wmOperator *op)
void CLIP_OT_hide_tracks_clear(wmOperatorType *ot)
void CLIP_OT_keyframe_delete(wmOperatorType *ot)
static wmOperatorStatus add_marker_at_click_modal(bContext *C, wmOperator *, const wmEvent *event)
static wmOperatorStatus delete_track_invoke(bContext *C, wmOperator *op, const wmEvent *)
static SlideMarkerData * slide_marker_customdata(bContext *C, const wmEvent *event)
static wmOperatorStatus clean_tracks_exec(bContext *C, wmOperator *op)
static bool frame_jump_poll(bContext *C)
static bool new_image_from_plane_marker_poll(bContext *C)
static wmOperatorStatus clean_tracks_invoke(bContext *C, wmOperator *op, const wmEvent *)
void CLIP_OT_hide_tracks(wmOperatorType *ot)
static void free_slide_data(SlideMarkerData *data)
static wmOperatorStatus tracking_object_remove_exec(bContext *C, wmOperator *op)
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 wmOperatorStatus copy_tracks_exec(bContext *C, wmOperator *)
static wmOperatorStatus paste_tracks_exec(bContext *C, wmOperator *)
static wmOperatorStatus keyframe_delete_exec(bContext *C, wmOperator *)
static wmOperatorStatus update_image_from_plane_marker_exec(bContext *C, wmOperator *)
static wmOperatorStatus join_tracks_exec(bContext *C, wmOperator *op)
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)
static wmOperatorStatus delete_marker_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus frame_jump_exec(bContext *C, wmOperator *op)
void CLIP_OT_copy_tracks(wmOperatorType *ot)
static void apply_mouse_slide(bContext *C, SlideMarkerData *data)
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 wmOperatorStatus delete_marker_exec(bContext *C, wmOperator *)
void CLIP_OT_add_marker_at_click(wmOperatorType *ot)
void CLIP_OT_clean_tracks(wmOperatorType *ot)
void CLIP_OT_join_tracks(wmOperatorType *ot)
static wmOperatorStatus add_marker_at_click_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus add_marker_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus average_tracks_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus keyframe_insert_exec(bContext *C, wmOperator *)
void CLIP_OT_delete_track(wmOperatorType *ot)
void CLIP_OT_add_marker(wmOperatorType *ot)
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 wmOperatorStatus track_copy_color_exec(bContext *C, wmOperator *)
static wmOperatorStatus average_tracks_exec(bContext *C, wmOperator *op)
static bool paste_tracks_poll(bContext *C)
static wmOperatorStatus slide_marker_modal(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus new_image_from_plane_marker_exec(bContext *C, wmOperator *)
void CLIP_OT_update_image_from_plane_marker(wmOperatorType *ot)
static wmOperatorStatus lock_tracks_exec(bContext *C, wmOperator *op)
static wmOperatorStatus tracking_object_new_exec(bContext *C, wmOperator *)
void CLIP_OT_tracking_object_remove(wmOperatorType *ot)
void CLIP_OT_disable_markers(wmOperatorType *ot)
static wmOperatorStatus set_solver_keyframe_exec(bContext *C, wmOperator *op)
static bool is_track_clean(MovieTrackingTrack *track, int frames, int del)
void CLIP_OT_new_image_from_plane_marker(wmOperatorType *ot)
static wmOperatorStatus disable_markers_exec(bContext *C, wmOperator *op)
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])
void CLIP_OT_frame_jump(wmOperatorType *ot)
static wmOperatorStatus hide_tracks_clear_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)
wmOperatorStatus WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)