62 if (width == 0 || height == 0) {
117 ot->name =
"Add Marker";
118 ot->idname =
"CLIP_OT_add_marker";
119 ot->description =
"Place new marker at specified location";
137 "Location of marker on frame",
160 switch (event->
type) {
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";
267 ot->description =
"Delete selected tracks";
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]);
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;
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++) {
655 if (
data->old_markers !=
nullptr) {
666 float dx, dy, mdelta[2];
668 switch (event->
type) {
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;
785 const float delta[2] = {dx, dy};
831 ot->name =
"Slide Marker";
832 ot->description =
"Slide marker areas";
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");
978 {
MARKER_OP_TOGGLE,
"TOGGLE", 0,
"Toggle",
"Toggle disabled flag for selected markers"},
979 {0,
nullptr, 0,
nullptr,
nullptr},
983 ot->name =
"Disable Markers";
984 ot->description =
"Disable/enable selected 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";
1052 ot->description =
"Hide selected tracks";
1053 ot->idname =
"CLIP_OT_hide_tracks";
1063 RNA_def_boolean(
ot->srna,
"unselected",
false,
"Unselected",
"Hide unselected tracks");
1098 ot->name =
"Hide Tracks Clear";
1099 ot->description =
"Clear hide selected tracks";
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";
1196 ot->description =
"Jump to special frame";
1197 ot->idname =
"CLIP_OT_frame_jump";
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;
1248 update_stabilization =
true;
1272 if (update_stabilization) {
1295 ot->name =
"Join Tracks";
1296 ot->description =
"Join selected 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";
1384 ot->description =
"Average selected tracks into active";
1385 ot->idname =
"CLIP_OT_average_tracks";
1398 prop =
RNA_def_boolean(
ot->srna,
"keep_original",
true,
"Keep Original",
"Keep original tracks");
1449 {0,
nullptr, 0,
nullptr,
nullptr},
1453 ot->name =
"Lock Tracks";
1454 ot->description =
"Lock/unlock selected 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";
1510 ot->description =
"Set keyframe used by solver";
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) {
1560 ot->name =
"Copy Color";
1561 ot->description =
"Copy color to all selected tracks";
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) {
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";
1834 ot->description =
"Add new object for tracking";
1835 ot->idname =
"CLIP_OT_tracking_object_new";
1874 ot->name =
"Remove Tracking Object";
1875 ot->description =
"Remove object for tracking";
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";
1987 if (marker !=
nullptr) {
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)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
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)
input_tx image(0, GPU_RGBA16F, Qualifier::WRITE, ImageType::FLOAT_2D, "preview_img") .compute_source("compositor_compute_preview.glsl") .do_static_compilation(true)
CCL_NAMESPACE_BEGIN struct Options options
draw_view in_light_buf[] float
void IMB_freeImBuf(ImBuf *)
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)
static int 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 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)