[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41094] branches/soc-2011-tomato/source/ blender: Camera tracking integration
Sergey Sharybin
g.ulairi at gmail.com
Mon Oct 17 17:57:20 CEST 2011
Revision: 41094
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41094
Author: nazgul
Date: 2011-10-17 15:57:20 +0000 (Mon, 17 Oct 2011)
Log Message:
-----------
Camera tracking integration
===========================
Allow offset from locked position.
Modified Paths:
--------------
branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c
branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c
Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c 2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c 2011-10-17 15:57:20 UTC (rev 41094)
@@ -300,8 +300,9 @@
typedef struct ViewPanData {
float x, y;
- float xof, yof;
+ float xof, yof, xorig, yorig;
int event_type;
+ float *vec;
} ViewPanData;
static void view_pan_init(bContext *C, wmOperator *op, wmEvent *event)
@@ -314,8 +315,13 @@
vpd->x= event->x;
vpd->y= event->y;
- vpd->xof= sc->xof;
- vpd->yof= sc->yof;
+
+ if(sc->flag&SC_LOCK_SELECTION) vpd->vec= &sc->xlockof;
+ else vpd->vec= &sc->xof;
+
+ copy_v2_v2(&vpd->xof, vpd->vec);
+ copy_v2_v2(&vpd->xorig, &vpd->xof);
+
vpd->event_type= event->type;
WM_event_add_modal_handler(C, op);
@@ -327,8 +333,8 @@
ViewPanData *vpd= op->customdata;
if(cancel) {
- sc->xof= vpd->xof;
- sc->yof= vpd->yof;
+ copy_v2_v2(vpd->vec, &vpd->xorig);
+
ED_region_tag_redraw(CTX_wm_region(C));
}
@@ -342,9 +348,15 @@
float offset[2];
RNA_float_get_array(op->ptr, "offset", offset);
- sc->xof += offset[0];
- sc->yof += offset[1];
+ if(sc->flag&SC_LOCK_SELECTION) {
+ sc->xlockof+= offset[0];
+ sc->ylockof+= offset[1];
+ } else {
+ sc->xof+= offset[0];
+ sc->yof+= offset[1];
+ }
+
ED_region_tag_redraw(CTX_wm_region(C));
return OPERATOR_FINISHED;
@@ -358,6 +370,7 @@
offset[0]= (event->x - event->prevx)/sc->zoom;
offset[1]= (event->y - event->prevy)/sc->zoom;
+
RNA_float_set_array(op->ptr, "offset", offset);
view_pan_exec(C, op);
@@ -377,8 +390,7 @@
switch(event->type) {
case MOUSEMOVE:
- sc->xof= vpd->xof;
- sc->yof= vpd->yof;
+ copy_v2_v2(vpd->vec, &vpd->xorig);
offset[0]= (vpd->x - event->x)/sc->zoom;
offset[1]= (vpd->y - event->y)/sc->zoom;
RNA_float_set_array(op->ptr, "offset", offset);
@@ -727,6 +739,9 @@
SpaceClip *sc= CTX_wm_space_clip(C);
ARegion *ar= CTX_wm_region(C);
+ sc->xlockof= 0.f;
+ sc->ylockof= 0.f;
+
ED_clip_view_selection(sc, ar, 1);
ED_region_tag_redraw(CTX_wm_region(C));
Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c 2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c 2011-10-17 15:57:20 UTC (rev 41094)
@@ -564,6 +564,9 @@
ED_clip_view_selection(sc, ar, 0);
+ sc->xof+= sc->xlockof;
+ sc->yof+= sc->ylockof;
+
if(tmpibuf)
IMB_freeImBuf(tmpibuf);
}
Modified: branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
===================================================================
--- branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h 2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h 2011-10-17 15:57:20 UTC (rev 41094)
@@ -571,6 +571,7 @@
int spacetype;
float xof, yof; /* user defined offset, image is centered */
+ float xlockof, ylockof; /* user defined offset from locked position */
float zoom; /* user defined zoom level */
struct MovieClipUser user; /* user of clip */
Modified: branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c
===================================================================
--- branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c 2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c 2011-10-17 15:57:20 UTC (rev 41094)
@@ -956,6 +956,14 @@
sc->scopes.ok= 0;
}
+static void rna_SpaceClipEditor_lock_selection_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
+{
+ SpaceClip *sc= (SpaceClip*)(ptr->data);
+
+ sc->xlockof= 0.f;
+ sc->ylockof= 0.f;
+}
+
#else
static void rna_def_space(BlenderRNA *brna)
@@ -2786,7 +2794,7 @@
prop= RNA_def_property(srna, "lock_selection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_ui_text(prop, "Lock to Selection", "Lock viewport to selected markers during playback");
RNA_def_property_boolean_sdna(prop, NULL, "flag", SC_LOCK_SELECTION);
- RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CLIP, NULL);
+ RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CLIP, "rna_SpaceClipEditor_lock_selection_update");
/* show markers pathes */
prop= RNA_def_property(srna, "show_track_path", PROP_BOOLEAN, PROP_NONE);
More information about the Bf-blender-cvs
mailing list