Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-06-20 14:54:56 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-06-20 14:54:56 +0400
commit470ad6fc0e729e335718d1152e2348db159e4514 (patch)
tree60ab5ebe8ce11cc193e28d9b599da5cbdd072d65
parentb07edbc6d6f3796fbf3d036582a1beec35e08a59 (diff)
Do not check result of BKE_tracking_marker_get -- it shall always
return valid marker. If not -- let blender crash, because that means something went really bad and silencing this isn't good idea. Also made mask parenting to tracking data aware of clip's start frame.
-rw-r--r--source/blender/blenkernel/BKE_movieclip.h4
-rw-r--r--source/blender/blenkernel/intern/mask.c3
-rw-r--r--source/blender/blenkernel/intern/movieclip.c8
-rw-r--r--source/blender/editors/mask/mask_relationships.c13
-rw-r--r--source/blender/editors/space_clip/clip_draw.c6
5 files changed, 19 insertions, 15 deletions
diff --git a/source/blender/blenkernel/BKE_movieclip.h b/source/blender/blenkernel/BKE_movieclip.h
index 221ae99a0ec..739b63ca174 100644
--- a/source/blender/blenkernel/BKE_movieclip.h
+++ b/source/blender/blenkernel/BKE_movieclip.h
@@ -63,8 +63,8 @@ void BKE_movieclip_get_cache_segments(struct MovieClip *clip, struct MovieClipUs
void BKE_movieclip_build_proxy_frame(struct MovieClip *clip, int clip_flag, struct MovieDistortion *distortion,
int cfra, int *build_sizes, int build_count, int undistorted);
-int BKE_movieclip_remap_scene_to_clip_frame(struct MovieClip *clip, int framenr);
-int BKE_movieclip_remap_clip_to_scene_frame(struct MovieClip *clip, int framenr);
+float BKE_movieclip_remap_scene_to_clip_frame(struct MovieClip *clip, float framenr);
+float BKE_movieclip_remap_clip_to_scene_frame(struct MovieClip *clip, float framenr);
/* cacheing flags */
#define MOVIECLIP_CACHE_SKIP (1 << 0)
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 48db916b4ba..c80a240f7e3 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -1160,12 +1160,13 @@ static int BKE_mask_evaluate_parent(MaskParent *parent, float ctime, float r_co[
if (ob) {
MovieTrackingTrack *track = BKE_tracking_track_get_named(tracking, ob, parent->sub_parent);
+ float clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, ctime);
MovieClipUser user = {0};
user.framenr = ctime;
if (track) {
- MovieTrackingMarker *marker = BKE_tracking_marker_get(track, ctime);
+ MovieTrackingMarker *marker = BKE_tracking_marker_get(track, clip_framenr);
float marker_pos_ofs[2];
add_v2_v2v2(marker_pos_ofs, marker->pos, track->offset);
BKE_mask_coord_from_movieclip(clip, &user, r_co, marker_pos_ofs);
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index 04edc58157b..44169cd3d6a 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -1270,12 +1270,12 @@ void BKE_movieclip_unlink(Main *bmain, MovieClip *clip)
clip->id.us = 0;
}
-int BKE_movieclip_remap_scene_to_clip_frame(MovieClip *clip, int framenr)
+float BKE_movieclip_remap_scene_to_clip_frame(MovieClip *clip, float framenr)
{
- return framenr - clip->start_frame + 1;
+ return framenr - (float) clip->start_frame + 1.0f;
}
-int BKE_movieclip_remap_clip_to_scene_frame(MovieClip *clip, int framenr)
+float BKE_movieclip_remap_clip_to_scene_frame(MovieClip *clip, float framenr)
{
- return framenr + clip->start_frame - 1;
+ return framenr + (float) clip->start_frame - 1.0f;
}
diff --git a/source/blender/editors/mask/mask_relationships.c b/source/blender/editors/mask/mask_relationships.c
index 7ba3c27e18d..a1f2539ce7c 100644
--- a/source/blender/editors/mask/mask_relationships.c
+++ b/source/blender/editors/mask/mask_relationships.c
@@ -44,6 +44,7 @@
#include "WM_types.h"
#include "ED_screen.h"
+#include "ED_clip.h" /* frame remapping functions */
#include "ED_mask.h" /* own include */
#include "mask_intern.h" /* own include */
@@ -104,21 +105,25 @@ static int mask_parent_set_exec(bContext *C, wmOperator *UNUSED(op))
MovieClip *clip;
MovieTrackingTrack *track;
MovieTrackingMarker *marker;
- MovieTrackingObject *tracking;
+ MovieTrackingObject *tracking_object;
/* done */
+ int framenr;
+
float marker_pos_ofs[2];
float parmask_pos[2];
if ((NULL == (sc = CTX_wm_space_clip(C))) ||
(NULL == (clip = sc->clip)) ||
(NULL == (track = clip->tracking.act_track)) ||
- (NULL == (marker = BKE_tracking_marker_get(track, sc->user.framenr))) ||
- (NULL == (tracking = BKE_tracking_object_get_active(&clip->tracking))))
+ (NULL == (tracking_object = BKE_tracking_object_get_active(&clip->tracking))))
{
return OPERATOR_CANCELLED;
}
+ framenr = ED_space_clip_get_clip_frame_number(sc);
+ marker = BKE_tracking_marker_get(track, framenr);
+
add_v2_v2v2(marker_pos_ofs, marker->pos, track->offset);
BKE_mask_coord_from_movieclip(clip, &sc->user, parmask_pos, marker_pos_ofs);
@@ -138,7 +143,7 @@ static int mask_parent_set_exec(bContext *C, wmOperator *UNUSED(op))
if (MASKPOINT_ISSEL_ANY(point)) {
point->parent.id_type = ID_MC;
point->parent.id = &clip->id;
- strcpy(point->parent.parent, tracking->name);
+ strcpy(point->parent.parent, tracking_object->name);
strcpy(point->parent.sub_parent, track->name);
copy_v2_v2(point->parent.parent_orig, parmask_pos);
diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c
index 5d187680b38..37da40e11b3 100644
--- a/source/blender/editors/space_clip/clip_draw.c
+++ b/source/blender/editors/space_clip/clip_draw.c
@@ -1497,11 +1497,9 @@ void clip_draw_grease_pencil(bContext *C, int onlyv2d)
if (track) {
int framenr = ED_space_clip_get_clip_frame_number(sc);
- /* don't get the exact marker since it may not exist for the frame */
MovieTrackingMarker *marker = BKE_tracking_marker_get(track, framenr);
- if (marker) {
- glTranslatef(marker->pos[0], marker->pos[1], 0.0f);
- }
+
+ glTranslatef(marker->pos[0], marker->pos[1], 0.0f);
}
}