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 /source/blender
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.
Diffstat (limited to 'source/blender')
-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);
}
}