46 if (plane_track ==
nullptr) {
71 ot->name =
"Create Plane Track";
72 ot->description =
"Create new plane track out of selected point tracks";
73 ot->idname =
"CLIP_OT_create_plane_track";
120 if (r_corner !=
nullptr) {
139 if (width == 0 || height == 0) {
157 customdata->
width = width;
158 customdata->
height = height;
223 float dx, dy, mdelta[2];
224 int next_corner_index, prev_corner_index, diag_corner_index;
225 const float *next_corner, *prev_corner, *diag_corner;
226 float next_edge[2], prev_edge[2], next_diag_edge[2], prev_diag_edge[2];
228 switch (event->
type) {
238 mdelta[0] =
event->mval[0] -
data->previous_mval[0];
239 mdelta[1] =
event->mval[1] -
data->previous_mval[1];
241 dx = mdelta[0] /
data->width / sc->
zoom;
242 dy = mdelta[1] /
data->height / sc->
zoom;
244 if (
data->accurate) {
249 data->corner[0] =
data->previous_corner[0] + dx;
250 data->corner[1] =
data->previous_corner[1] + dy;
268 next_corner_index = (
data->corner_index + 1) % 4;
269 prev_corner_index = (
data->corner_index + 3) % 4;
270 diag_corner_index = (
data->corner_index + 2) % 4;
272 next_corner =
data->plane_marker->corners[next_corner_index];
273 prev_corner =
data->plane_marker->corners[prev_corner_index];
274 diag_corner =
data->plane_marker->corners[diag_corner_index];
278 sub_v2_v2v2(next_diag_edge, prev_corner, diag_corner);
279 sub_v2_v2v2(prev_diag_edge, diag_corner, next_corner);
281 if (
cross_v2v2(prev_edge, next_edge) < 0.0f) {
285 if (
cross_v2v2(next_diag_edge, prev_edge) < 0.0f) {
289 if (
cross_v2v2(next_edge, prev_diag_edge) < 0.0f) {
293 data->previous_mval[0] =
event->mval[0];
294 data->previous_mval[1] =
event->mval[1];
343 ot->name =
"Slide Plane Marker";
344 ot->description =
"Slide plane marker areas";
345 ot->idname =
"CLIP_OT_slide_plane_marker";
SpaceClip * CTX_wm_space_clip(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
void BKE_report(ReportList *reports, eReportType type, const char *message)
struct MovieTrackingPlaneTrack * BKE_tracking_plane_track_add(struct MovieTracking *tracking, struct ListBase *plane_tracks_base, struct ListBase *tracks, int framenr)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
void BKE_tracking_track_plane_from_existing_motion(struct MovieTrackingPlaneTrack *plane_track, int start_frame)
void BKE_tracking_tracks_deselect_all(struct ListBase *tracksbase)
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_ensure(struct MovieTrackingPlaneTrack *plane_track, int framenr)
float closest_to_line_v2(float r_close[2], const float p[2], const float l1[2], const float l2[2])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE float cross_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
void DEG_id_tag_update(ID *id, unsigned int flags)
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)
bool ED_space_clip_tracking_poll(bContext *C)
Read Guarded memory(de)allocation.
BMesh const char void * data
CCL_NAMESPACE_BEGIN struct Options options
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
struct MovieTracking tracking
MovieTrackingPlaneTrack * active_plane_track
MovieTrackingTrack * active_track
MovieTrackingPlaneTrack * plane_track
MovieTrackingPlaneTrack * plane_track
MovieTrackingPlaneMarker * plane_marker
struct ReportList * reports
PlaneTrackPick ed_tracking_pick_plane_track(const TrackPickOptions *options, struct bContext *C, const float co[2])
BLI_INLINE bool ed_tracking_plane_track_pick_empty(const PlaneTrackPick *pick)
void clip_tracking_hide_cursor(bContext *C)
void clip_tracking_show_cursor(bContext *C)
bool ed_tracking_plane_track_pick_can_slide(const PlaneTrackPick *pick)
BLI_INLINE TrackPickOptions ed_tracking_pick_options_defaults()
void CLIP_OT_create_plane_track(wmOperatorType *ot)
static MovieTrackingPlaneTrack * tracking_plane_marker_check_slide(bContext *C, const wmEvent *event, int *r_corner)
static void slide_plane_marker_update_homographies(SpaceClip *sc, SlidePlaneMarkerData *data)
static wmOperatorStatus slide_plane_marker_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void CLIP_OT_slide_plane_marker(wmOperatorType *ot)
static wmOperatorStatus create_plane_track_tracks_exec(bContext *C, wmOperator *op)
static void cancel_mouse_slide_plane_marker(SlidePlaneMarkerData *data)
static void free_slide_plane_marker_data(SlidePlaneMarkerData *data)
static wmOperatorStatus slide_plane_marker_modal(bContext *C, wmOperator *op, const wmEvent *event)
static SlidePlaneMarkerData * slide_plane_marker_customdata(bContext *C, const wmEvent *event)
int WM_userdef_event_type_from_keymap_type(int kmitype)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)