[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46742] branches/soc-2011-tomato/source/ blender/editors/space_clip/tracking_ops.c: Tomato: sliding corner with Ctrl holded down would have scaling behavior
Sergey Sharybin
sergey.vfx at gmail.com
Thu May 17 18:45:03 CEST 2012
Revision: 46742
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46742
Author: nazgul
Date: 2012-05-17 16:45:02 +0000 (Thu, 17 May 2012)
Log Message:
-----------
Tomato: sliding corner with Ctrl holded down would have scaling behavior
Modified Paths:
--------------
branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c 2012-05-17 15:52:56 UTC (rev 46741)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c 2012-05-17 16:45:02 UTC (rev 46742)
@@ -264,7 +264,7 @@
float smin[2], smax[2], spos[2], soff[2], scorners[4][2];
float (*smarkers)[2];
- int lock, accurate;
+ int lock, accurate, scale;
} SlideMarkerData;
static SlideMarkerData *create_slide_marker_data(SpaceClip *sc, MovieTrackingTrack *track,
@@ -636,6 +636,10 @@
if (ELEM(event->type, LEFTCTRLKEY, RIGHTCTRLKEY))
data->lock = event->val == KM_RELEASE;
+ if (data->action == SLIDE_ACTION_POS)
+ if (ELEM(event->type, LEFTCTRLKEY, RIGHTCTRLKEY))
+ data->scale = event->val == KM_PRESS;
+
if (ELEM(event->type, LEFTSHIFTKEY, RIGHTSHIFTKEY))
data->accurate = event->val == KM_PRESS;
@@ -718,15 +722,31 @@
BKE_tracking_clamp_track(data->track, CLAMP_SEARCH_POS);
}
else if (data->action == SLIDE_ACTION_POS) {
- float spos[2];
+ if (data->scale) {
+ float scale = 1.0f + 10.0f * (dx - dy);
- copy_v2_v2(spos, data->pos);
+ if (scale > 0.0f) {
+ int a;
- data->pos[0] = data->spos[0] + dx;
- data->pos[1] = data->spos[1] + dy;
+ for (a = 0; a < 4; a++) {
+ mul_v2_v2fl(data->corners[a], data->scorners[a], scale);
+ }
+ }
+ }
+ else {
+ float spos[2];
- if (!slide_check_corners(data->corners)) {
- copy_v2_v2(data->pos, spos);
+ copy_v2_v2(spos, data->pos);
+
+ /* corners might've been scaled before, restore their original position */
+ memcpy(data->corners, data->scorners, sizeof(data->scorners));
+
+ data->pos[0] = data->spos[0] + dx;
+ data->pos[1] = data->spos[1] + dy;
+
+ if (!slide_check_corners(data->corners)) {
+ copy_v2_v2(data->pos, spos);
+ }
}
/* currently only patterns are allowed to have such combination of event and data */
More information about the Bf-blender-cvs
mailing list