[Bf-blender-cvs] [e56c68c] soc-2016-multiview: separating panning fields to RegionSpaceClip

Tianwei Shen noreply at git.blender.org
Thu Aug 4 09:37:36 CEST 2016


Commit: e56c68cdcb86f64f7cc0079a0eefb957f77fdc06
Author: Tianwei Shen
Date:   Wed Aug 3 15:55:18 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBe56c68cdcb86f64f7cc0079a0eefb957f77fdc06

separating panning fields to RegionSpaceClip

- each sub-region now has its own zoom and panning
- leave stabilization fields in SpaceClip as-is.

===================================================================

M	source/blender/blenkernel/intern/context.c
M	source/blender/editors/include/ED_clip.h
M	source/blender/editors/space_clip/clip_editor.c
M	source/blender/editors/space_clip/clip_intern.h
M	source/blender/editors/space_clip/clip_ops.c
M	source/blender/editors/space_clip/clip_utils.c
M	source/blender/editors/space_clip/space_clip.c
M	source/blender/editors/space_clip/tracking_ops.c
M	source/blender/editors/space_clip/tracking_select.c
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesrna/intern/rna_space.c

===================================================================

diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 1855f0a..49b7eaf 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -690,7 +690,7 @@ RegionSpaceClip *CTX_wm_region_clip(const bContext *C)
 	ScrArea *sa = CTX_wm_area(C);
 	ARegion *ar_curr = CTX_wm_region(C);
 
-	if (sa && sa->spacetype == SPACE_CLIP)
+	if (sa && sa->spacetype == SPACE_CLIP) {
 		/* only RGN_TYPE_WINDOW has regiondata */
 		if (ar_curr && ar_curr->regiontype == RGN_TYPE_WINDOW) {
 			return ar_curr->regiondata;
@@ -712,6 +712,7 @@ RegionSpaceClip *CTX_wm_region_clip(const bContext *C)
 				ar = ar->next;
 			}
 		}
+	}
 	return NULL;
 }
 
diff --git a/source/blender/editors/include/ED_clip.h b/source/blender/editors/include/ED_clip.h
index 83b6b66..b24c1b0 100644
--- a/source/blender/editors/include/ED_clip.h
+++ b/source/blender/editors/include/ED_clip.h
@@ -84,6 +84,8 @@ void ED_space_clip_set_clip(struct bContext *C, struct bScreen *screen, struct S
 void ED_space_clip_set_secondary_clip(struct bContext *C, struct bScreen *screen, struct SpaceClip *sc, struct MovieClip *secondary_clip);
 void ED_clip_update_correspondence_mode(struct bContext *C, struct SpaceClip *sc);
 
+void ED_space_clip_region_set_lock_zero(struct bContext *C);
+
 struct Mask *ED_space_clip_get_mask(struct SpaceClip *sc);
 void ED_space_clip_set_mask(struct bContext *C, struct SpaceClip *sc, struct Mask *mask);
 
diff --git a/source/blender/editors/space_clip/clip_editor.c b/source/blender/editors/space_clip/clip_editor.c
index 5f9cfea..e601187 100644
--- a/source/blender/editors/space_clip/clip_editor.c
+++ b/source/blender/editors/space_clip/clip_editor.c
@@ -431,8 +431,8 @@ bool ED_clip_view_selection(const bContext *C, ARegion *ar, bool fit)
 		return false;
 
 	/* center view */
-	clip_view_center_to_point(sc, (max[0] + min[0]) / (2 * frame_width),
-	                              (max[1] + min[1]) / (2 * frame_height));
+	clip_view_center_to_point(sc, rsc, (max[0] + min[0]) / (2 * frame_width),
+	                                   (max[1] + min[1]) / (2 * frame_height));
 
 	w = max[0] - min[0];
 	h = max[1] - min[1];
@@ -792,6 +792,16 @@ void ED_clip_update_correspondence_mode(bContext *C, SpaceClip *sc)
 	}
 }
 
+/* ******** space clip region functions ******** */
+
+void ED_space_clip_region_set_lock_zero(bContext *C)
+{
+	RegionSpaceClip *rsc = CTX_wm_region_clip(C);
+
+	rsc->xlockof = 0.f;
+	rsc->ylockof = 0.f;
+}
+
 /* ******** masking editing functions ******** */
 
 Mask *ED_space_clip_get_mask(SpaceClip *sc)
diff --git a/source/blender/editors/space_clip/clip_intern.h b/source/blender/editors/space_clip/clip_intern.h
index 91f394e..994dc30 100644
--- a/source/blender/editors/space_clip/clip_intern.h
+++ b/source/blender/editors/space_clip/clip_intern.h
@@ -40,6 +40,7 @@ struct MovieTrackingTrack;
 struct Scene;
 struct ScrArea;
 struct SpaceClip;
+struct RegionSpaceClip;
 struct wmOperatorType;
 
 /* channel heights */
@@ -139,7 +140,7 @@ void clip_graph_tracking_iterate(struct SpaceClip *sc, bool selected_only, bool
 void clip_delete_track(struct bContext *C, struct MovieClip *clip, struct MovieTrackingTrack *track);
 void clip_delete_marker(struct bContext *C, struct MovieClip *clip, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker);
 
-void clip_view_center_to_point(SpaceClip *sc, float x, float y);
+void clip_view_center_to_point(SpaceClip *sc, RegionSpaceClip *rsc, float x, float y);
 
 void clip_draw_cfra(struct SpaceClip *sc, struct ARegion *ar, struct Scene *scene);
 void clip_draw_sfra_efra(struct View2D *v2d, struct Scene *scene);
diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c
index 924cd71..876ef3e 100644
--- a/source/blender/editors/space_clip/clip_ops.c
+++ b/source/blender/editors/space_clip/clip_ops.c
@@ -117,16 +117,16 @@ static void sclip_zoom_set(const bContext *C, float zoom, float location[2])
 
 		ED_space_clip_get_size(sc, &width, &height);
 
-		dx = ((location[0] - 0.5f) * width - sc->xof) * (rsc->zoom - oldzoom) / rsc->zoom;
-		dy = ((location[1] - 0.5f) * height - sc->yof) * (rsc->zoom - oldzoom) / rsc->zoom;
+		dx = ((location[0] - 0.5f) * width - rsc->xof) * (rsc->zoom - oldzoom) / rsc->zoom;
+		dy = ((location[1] - 0.5f) * height - rsc->yof) * (rsc->zoom - oldzoom) / rsc->zoom;
 
 		if (sc->flag & SC_LOCK_SELECTION) {
-			sc->xlockof += dx;
-			sc->ylockof += dy;
+			rsc->xlockof += dx;
+			rsc->ylockof += dy;
 		}
 		else {
-			sc->xof += dx;
-			sc->yof += dy;
+			rsc->xof += dx;
+			rsc->yof += dy;
 		}
 	}
 }
@@ -472,6 +472,7 @@ typedef struct ViewPanData {
 static void view_pan_init(bContext *C, wmOperator *op, const wmEvent *event)
 {
 	SpaceClip *sc = CTX_wm_space_clip(C);
+	RegionSpaceClip *rsc = CTX_wm_region_clip(C);
 	ViewPanData *vpd;
 
 	op->customdata = vpd = MEM_callocN(sizeof(ViewPanData), "ClipViewPanData");
@@ -481,9 +482,9 @@ static void view_pan_init(bContext *C, wmOperator *op, const wmEvent *event)
 	vpd->y = event->y;
 
 	if (sc->flag & SC_LOCK_SELECTION)
-		vpd->vec = &sc->xlockof;
+		vpd->vec = &rsc->xlockof;
 	else
-		vpd->vec = &sc->xof;
+		vpd->vec = &rsc->xof;
 
 	copy_v2_v2(&vpd->xof, vpd->vec);
 	copy_v2_v2(&vpd->xorig, &vpd->xof);
@@ -510,17 +511,18 @@ static void view_pan_exit(bContext *C, wmOperator *op, bool cancel)
 static int view_pan_exec(bContext *C, wmOperator *op)
 {
 	SpaceClip *sc = CTX_wm_space_clip(C);
+	RegionSpaceClip *rsc = CTX_wm_region_clip(C);
 	float offset[2];
 
 	RNA_float_get_array(op->ptr, "offset", offset);
 
 	if (sc->flag & SC_LOCK_SELECTION) {
-		sc->xlockof += offset[0];
-		sc->ylockof += offset[1];
+		rsc->xlockof += offset[0];
+		rsc->ylockof += offset[1];
 	}
 	else {
-		sc->xof += offset[0];
-		sc->yof += offset[1];
+		rsc->xof += offset[0];
+		rsc->yof += offset[1];
 	}
 
 	ED_region_tag_redraw(CTX_wm_region(C));
@@ -895,13 +897,13 @@ void CLIP_OT_view_zoom_out(wmOperatorType *ot)
 
 static int view_zoom_ratio_exec(bContext *C, wmOperator *op)
 {
-	SpaceClip *sc = CTX_wm_space_clip(C);
+	RegionSpaceClip *rsc = CTX_wm_region_clip(C);
 
 	sclip_zoom_set(C, RNA_float_get(op->ptr, "ratio"), NULL);
 
 	/* ensure pixel exact locations for draw */
-	sc->xof = (int) sc->xof;
-	sc->yof = (int) sc->yof;
+	rsc->xof = (int) rsc->xof;
+	rsc->yof = (int) rsc->yof;
 
 	ED_region_tag_redraw(CTX_wm_region(C));
 
@@ -937,6 +939,7 @@ static int view_all_exec(bContext *C, wmOperator *op)
 
 	/* retrieve state */
 	sc = CTX_wm_space_clip(C);
+	RegionSpaceClip *rsc = CTX_wm_region_clip(C);
 	ar = CTX_wm_region(C);
 
 	ED_space_clip_get_size(sc, &w, &h);
@@ -969,7 +972,7 @@ static int view_all_exec(bContext *C, wmOperator *op)
 			sclip_zoom_set(C, 1.0f, NULL);
 	}
 
-	sc->xof = sc->yof = 0.0f;
+	rsc->xof = rsc->yof = 0.0f;
 
 	ED_region_tag_redraw(ar);
 
@@ -998,11 +1001,11 @@ void CLIP_OT_view_all(wmOperatorType *ot)
 
 static int view_selected_exec(bContext *C, wmOperator *UNUSED(op))
 {
-	SpaceClip *sc = CTX_wm_space_clip(C);
+	RegionSpaceClip *rsc = CTX_wm_region_clip(C);
 	ARegion *ar = CTX_wm_region(C);
 
-	sc->xlockof = 0.0f;
-	sc->ylockof = 0.0f;
+	rsc->xlockof = 0.0f;
+	rsc->ylockof = 0.0f;
 
 	ED_clip_view_selection(C, ar, 1);
 	ED_region_tag_redraw(ar);
@@ -1552,7 +1555,6 @@ static int clip_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmEv
 	if (event->type != NDOF_MOTION)
 		return OPERATOR_CANCELLED;
 	else {
-		SpaceClip *sc = CTX_wm_space_clip(C);
 		RegionSpaceClip *rsc = CTX_wm_region_clip(C);
 		ARegion *ar = CTX_wm_region(C);
 		float pan_vec[3];
@@ -1566,8 +1568,8 @@ static int clip_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmEv
 		pan_vec[2] *= -ndof->dt;
 
 		sclip_zoom_set_factor(C, 1.0f + pan_vec[2], NULL);
-		sc->xof += pan_vec[0];
-		sc->yof += pan_vec[1];
+		rsc->xof += pan_vec[0];
+		rsc->yof += pan_vec[1];
 
 		ED_region_tag_redraw(ar);
 
diff --git a/source/blender/editors/space_clip/clip_utils.c b/source/blender/editors/space_clip/clip_utils.c
index 5964e9a..0671594 100644
--- a/source/blender/editors/space_clip/clip_utils.c
+++ b/source/blender/editors/space_clip/clip_utils.c
@@ -231,7 +231,7 @@ void clip_delete_marker(bContext *C, MovieClip *clip, MovieTrackingTrack *track,
 	}
 }
 
-void clip_view_center_to_point(SpaceClip *sc, float x, float y)
+void clip_view_center_to_point(SpaceClip *sc, RegionSpaceClip *rsc, float x, float y)
 {
 	int width, height;
 	float aspx, aspy;
@@ -239,8 +239,8 @@ void clip_view_center_to_point(SpaceClip *sc, float x, float y)
 	ED_space_clip_get_size(sc, &width, &height);
 	ED_space_clip_get_aspect(sc, &aspx, &aspy);
 
-	sc->xof = (x - 0.5f) * width * aspx;
-	sc->yof = (y - 0.5f) * height * aspy;
+	rsc->xof = (x - 0.5f) * width * aspx;
+	rsc->yof = (y - 0.5f) * height * aspy;
 }
 
 void clip_draw_cfra(SpaceClip *sc, ARegion *ar, Scene *scene)
diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c
index 2f99e7d..fa2a36d 100644
--- a/source/blender/editors/space_clip/space_clip.c
+++ b/source/blender/editors/space_clip/space_clip.c
@@ -1131,8 +1131,8 @@ static void movieclip_main_area_set_view2d(const bContext *C, ARegion *ar)
 	x1 = ar->winrct.xmin + (winx - rsc->zoom * w) / 2.0f;
 	y1 = ar->winrct.ymin + (winy - rsc->zoom * h) / 2.0f;
 
-	x1 -= rsc->zoom * sc->xof;
-	y1 -= rsc->zoom * sc->yof;
+	x1 -= rsc->zoom * rsc->xof;
+	y1 -= rsc->zoom * rsc->yof;
 
 	/* relative display right */
 	ar->v2d.cur.xmin = (ar->winrct.xmin - (float)x1) / rsc->zoom;
@@ -1179,8 +1179,8 @@ static void movieclip_secondary_clip_set_view2d(const bContext *C, ARegion *ar)
 	x1 = ar->winrct.xmin + (winx - rsc->zoom * w) / 2.0f;
 	y1 = ar->winrct.ymin + (winy - rsc->zoom * h) / 2.0f;
 
-	x1 -= rsc->zoom * sc->xof;
-	y1 -= rsc->zoom * sc->yof;
+	x1 -= rsc->zoom * rsc->xof;
+	y1 -= rsc->zoom * rsc->yof;
 
 	/* relative display right */
 	ar->v2d.cur.xmin = (ar->winrct.xmin - (float)x1) / rsc->zoom;
@@ -1220,6 +1220,7 @@ static void clip_main_region_draw(const bContext *C, ARegion *ar)
 {
 	/* draw entirely, view changes should be handled here */
 	SpaceClip *sc = CTX_wm_space_clip(C);
+	RegionSpaceClip *rsc = 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list