72 switch (
data->action) {
109 const float co[2] = {
float(scene_framenr), val};
115 if (
data->has_prev) {
118 if (
data->track ==
nullptr || dist_sq < data->min_dist_sq) {
120 data->min_dist_sq = dist_sq;
121 data->value_source = value_source;
126 data->has_prev =
true;
135 data->has_prev =
false;
146 const float mdiff[2] = {scene_framenr -
data->mouse_co[0], val -
data->mouse_co[1]};
153 if (
data->marker ==
nullptr || dist_sq < data->min_dist_sq) {
154 const float co[2] = {
float(scene_framenr), val};
157 data->marker = marker;
158 data->min_dist_sq = dist_sq;
159 data->value_source = value_source;
181 static const int delta = 6;
195 (
abs(x2 - x1) <= delta &&
abs(y2 - y1) <= delta))
249 if (userdata.
track) {
251 if (active_track == userdata.
track) {
254 active_track =
nullptr;
257 else if (active_track != userdata.
track) {
325 ot->description =
"Select graph curves";
326 ot->idname =
"CLIP_OT_graph_select";
344 "Mouse location to select nearest entity",
351 "Extend selection rather than clearing the existing selection");
390 data->changed =
true;
392 else if (!
data->extend) {
408 if (active_track ==
nullptr) {
421 sc, active_track, &userdata,
box_select_cb,
nullptr,
nullptr);
435 ot->name =
"Box Select";
436 ot->description =
"Select curve points using box selection";
437 ot->idname =
"CLIP_OT_graph_select_box";
469 for (
int a = 0; a < active_track->
markersnr; a++) {
479 for (
int a = 0; a < active_track->
markersnr; a++) {
503 ot->name =
"(De)select All Markers";
504 ot->description =
"Change selection of all markers of active track";
505 ot->idname =
"CLIP_OT_graph_select_all_markers";
540 IFACE_(
"Delete track corresponding to the selected curve?"),
552 ot->name =
"Delete Curve";
553 ot->description =
"Delete track corresponding to the selected curve";
554 ot->idname =
"CLIP_OT_graph_delete_curve";
578 while (a < active_track->markersnr) {
596 ot->name =
"Delete Knot";
597 ot->description =
"Delete curve knots";
598 ot->idname =
"CLIP_OT_graph_delete_knot";
623 data->min = std::min(val,
data->min);
624 data->max = std::max(val,
data->max);
651 if (userdata.
min < userdata.
max) {
677 ot->name =
"Frame All";
678 ot->description =
"View all curves in editor";
679 ot->idname =
"CLIP_OT_graph_view_all";
713 ot->name =
"Center Current Frame";
714 ot->description =
"Scroll view so current frame would be centered";
715 ot->idname =
"CLIP_OT_graph_center_current_frame";
736 for (
int a = 0; a < active_track->
markersnr; a++) {
743 else if (action == 1) {
762 {0,
"DISABLE", 0,
"Disable",
"Disable selected markers"},
763 {1,
"ENABLE", 0,
"Enable",
"Enable selected markers"},
764 {2,
"TOGGLE", 0,
"Toggle",
"Toggle disabled flag for selected markers"},
765 {0,
nullptr, 0,
nullptr,
nullptr},
769 ot->name =
"Disable Markers";
770 ot->description =
"Disable/enable selected markers";
771 ot->idname =
"CLIP_OT_graph_disable_markers";
781 RNA_def_enum(
ot->srna,
"action", actions_items, 0,
"Action",
"Disable action to execute");
Scene * CTX_data_scene(const bContext *C)
SpaceClip * CTX_wm_space_clip(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
void BKE_tracking_track_select(struct ListBase *tracksbase, struct MovieTrackingTrack *track, int area, bool extend)
float dist_squared_to_line_segment_v2(const float p[2], const float l1[2], const float l2[2])
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v2_v2(float r[2], const float a[2])
bool BLI_rctf_isect_pt(const struct rctf *rect, float x, float y)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
void DEG_id_tag_update(ID *id, unsigned int flags)
@ SC_SHOW_GRAPH_TRACKS_MOTION
@ SC_SHOW_GRAPH_TRACKS_ERROR
MovieClip * ED_space_clip_get_clip(const SpaceClip *sc)
bool ED_space_clip_tracking_poll(bContext *C)
void ED_region_tag_redraw(ARegion *region)
bool UI_view2d_view_to_region_clip(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst) ATTR_NONNULL()
BMesh const char void * data
static wmOperatorStatus graph_disable_markers_exec(bContext *C, wmOperator *op)
static void find_nearest_tracking_segment_cb(void *userdata, MovieTrackingTrack *track, MovieTrackingMarker *, eClipCurveValueSource value_source, int scene_framenr, float val)
static wmOperatorStatus box_select_graph_exec(bContext *C, wmOperator *op)
void CLIP_OT_graph_delete_knot(wmOperatorType *ot)
static bool mouse_select_curve(bContext *C, const float co[2], bool extend)
static wmOperatorStatus delete_curve_invoke(bContext *C, wmOperator *op, const wmEvent *)
static bool mouse_select_knot(bContext *C, const float co[2], bool extend)
static void find_nearest_tracking_knot_cb(void *userdata, MovieTrackingTrack *track, MovieTrackingMarker *marker, eClipCurveValueSource value_source, int scene_framenr, float val)
static void toggle_selection_cb(void *userdata, MovieTrackingMarker *marker)
static void view_all_cb(void *userdata, MovieTrackingTrack *, MovieTrackingMarker *, eClipCurveValueSource, int, float val)
static wmOperatorStatus delete_knot_exec(bContext *C, wmOperator *)
static wmOperatorStatus select_exec(bContext *C, wmOperator *op)
static bool space_clip_graph_poll(bContext *C)
void CLIP_OT_graph_center_current_frame(wmOperatorType *ot)
static wmOperatorStatus delete_curve_exec(bContext *C, wmOperator *)
void CLIP_OT_graph_delete_curve(wmOperatorType *ot)
void CLIP_OT_graph_select_all_markers(wmOperatorType *ot)
static void box_select_cb(void *userdata, MovieTrackingTrack *, MovieTrackingMarker *marker, eClipCurveValueSource value_source, int scene_framenr, float val)
static wmOperatorStatus select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void ED_clip_graph_center_current_frame(Scene *scene, ARegion *region)
static void find_nearest_tracking_segment_end_cb(void *userdata, eClipCurveValueSource)
void CLIP_OT_graph_select(wmOperatorType *ot)
static wmOperatorStatus center_current_frame_exec(bContext *C, wmOperator *)
void CLIP_OT_graph_select_box(wmOperatorType *ot)
static void mouse_select_init_data(bContext *C, MouseSelectUserData *userdata, const float co[2])
static bool clip_graph_knots_poll(bContext *C)
void CLIP_OT_graph_view_all(wmOperatorType *ot)
static wmOperatorStatus mouse_select(bContext *C, float co[2], bool extend)
void CLIP_OT_graph_disable_markers(wmOperatorType *ot)
static wmOperatorStatus view_all_exec(bContext *C, wmOperator *)
static wmOperatorStatus graph_select_all_markers_exec(bContext *C, wmOperator *op)
void clip_graph_tracking_values_iterate_track(SpaceClip *sc, MovieTrackingTrack *track, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
bool clip_graph_value_visible(SpaceClip *sc, eClipCurveValueSource value_source)
void clip_delete_marker(bContext *C, MovieClip *clip, MovieTrackingTrack *track, MovieTrackingMarker *marker)
void clip_graph_tracking_values_iterate(SpaceClip *sc, bool selected_only, bool include_hidden, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
void clip_graph_tracking_iterate(SpaceClip *sc, bool selected_only, bool include_hidden, void *userdata, void(*func)(void *userdata, MovieTrackingMarker *marker))
@ CLIP_VALUE_SOURCE_SPEED_Y
@ CLIP_VALUE_SOURCE_SPEED_X
void clip_delete_track(bContext *C, MovieClip *clip, MovieTrackingTrack *track)
static wmOperatorStatus select_exec(bContext *C, wmOperator *op)
static wmOperatorStatus select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
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_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_flag(PropertyRNA *prop, PropertyFlag flag)
eClipCurveValueSource value_source
MovieTrackingTrack * track
MovieTrackingMarker * marker
struct MovieTracking tracking
MovieTrackingTrack * active_track
MovieTrackingMarker * markers
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
wmOperatorStatus WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmOperatorStatus WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_operator_properties_confirm_or_exec(wmOperatorType *ot)
void WM_operator_properties_border_to_rctf(wmOperator *op, rctf *r_rect)
void WM_operator_properties_gesture_box_select(wmOperatorType *ot)
void WM_operator_properties_select_all(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)