[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