[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57241] trunk/blender/source/blender: fix [#35629] Incorrect Rendered Viewport Horizontal Splitting

Campbell Barton ideasman42 at gmail.com
Tue Jun 4 23:23:33 CEST 2013


Revision: 57241
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57241
Author:   campbellbarton
Date:     2013-06-04 21:23:32 +0000 (Tue, 04 Jun 2013)
Log Message:
-----------
fix [#35629] Incorrect Rendered Viewport Horizontal Splitting

previously the order didnt matter but with viewport render, its noticable.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_edit.c
    trunk/blender/source/blender/makesdna/DNA_screen_types.h

Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c	2013-06-04 20:26:58 UTC (rev 57240)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c	2013-06-04 21:23:32 UTC (rev 57241)
@@ -370,6 +370,10 @@
 	split = testsplitpoint(sa, dir, fac);
 	if (split == 0) return NULL;
 	
+	/* note regarding (fac > 0.5f) checks below.
+	 * notmally it shouldn't matter which is used since the copy should match the original
+	 * however with viewport rendering and python console this isn't the case. - campbell */
+
 	if (dir == 'h') {
 		/* new vertices */
 		sv1 = screen_addvert(sc, sa->v1->vec.x, split);
@@ -382,14 +386,25 @@
 		screen_addedge(sc, sv2, sa->v4);
 		screen_addedge(sc, sv1, sv2);
 		
-		/* new areas: top */
-		newa = screen_addarea(sc, sv1, sa->v2, sa->v3, sv2, sa->headertype, sa->spacetype);
+		if (fac > 0.5f) {
+			/* new areas: top */
+			newa = screen_addarea(sc, sv1, sa->v2, sa->v3, sv2, sa->headertype, sa->spacetype);
+
+			/* area below */
+			sa->v2 = sv1;
+			sa->v3 = sv2;
+		}
+		else {
+			/* new areas: bottom */
+			newa = screen_addarea(sc, sa->v1, sv1, sv2, sa->v4, sa->headertype, sa->spacetype);
+
+			/* area above */
+			sa->v1 = sv1;
+			sa->v4 = sv2;
+		}
+
 		area_copy_data(newa, sa, 0);
 		
-		/* area below */
-		sa->v2 = sv1;
-		sa->v3 = sv2;
-		
 	}
 	else {
 		/* new vertices */
@@ -403,13 +418,24 @@
 		screen_addedge(sc, sv2, sa->v3);
 		screen_addedge(sc, sv1, sv2);
 		
-		/* new areas: left */
-		newa = screen_addarea(sc, sa->v1, sa->v2, sv2, sv1, sa->headertype, sa->spacetype);
+		if (fac > 0.5f) {
+			/* new areas: right */
+			newa = screen_addarea(sc, sv1, sv2, sa->v3, sa->v4, sa->headertype, sa->spacetype);
+
+			/* area left */
+			sa->v3 = sv2;
+			sa->v4 = sv1;
+		}
+		else {
+			/* new areas: left */
+			newa = screen_addarea(sc, sa->v1, sa->v2, sv2, sv1, sa->headertype, sa->spacetype);
+
+			/* area right */
+			sa->v1 = sv1;
+			sa->v2 = sv2;
+		}
+
 		area_copy_data(newa, sa, 0);
-		
-		/* area right */
-		sa->v1 = sv1;
-		sa->v2 = sv2;
 	}
 	
 	/* remove double vertices en edges */

Modified: trunk/blender/source/blender/makesdna/DNA_screen_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_screen_types.h	2013-06-04 20:26:58 UTC (rev 57240)
+++ trunk/blender/source/blender/makesdna/DNA_screen_types.h	2013-06-04 21:23:32 UTC (rev 57241)
@@ -133,7 +133,7 @@
 typedef struct ScrArea {
 	struct ScrArea *next, *prev;
 	
-	ScrVert *v1, *v2, *v3, *v4;
+	ScrVert *v1, *v2, *v3, *v4;		/* ordered (bl, tl, tr, br) */
 	bScreen *full;			/* if area==full, this is the parent */
 
 	rcti totrct;			/* rect bound by v1 v2 v3 v4 */




More information about the Bf-blender-cvs mailing list