[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17949] branches/blender2.5/blender/source /blender: 2.5

Ton Roosendaal ton at blender.org
Fri Dec 19 15:14:50 CET 2008


Revision: 17949
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17949
Author:   ton
Date:     2008-12-19 15:14:43 +0100 (Fri, 19 Dec 2008)

Log Message:
-----------
2.5

All of the view3d drawing code is now 'Context' free.
The idea is:

- ED_region_do_draw() sets and freezes drawing context
- regiontype draw() callback then can pass on other relevant 
  context stuff as function args.

Also cleaned up the WM opengl wrappers, to mimic opengl state;
no reason to give window pointer anymore.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/screen/area.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawmesh.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_view.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_gesture.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_subwindow.c
    branches/blender2.5/blender/source/blender/windowmanager/wm_subwindow.h

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2008-12-19 12:55:50 UTC (rev 17948)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2008-12-19 14:14:43 UTC (rev 17949)
@@ -37,6 +37,7 @@
 struct wmWindow;
 struct wmNotifier;
 struct wmEvent;
+struct bContext;
 struct SpaceType;
 struct AreagionType;
 struct uiBlock;
@@ -45,7 +46,7 @@
 void	ED_region_do_listen(ARegion *ar, struct wmNotifier *note);
 void	ED_region_do_draw(struct bContext *C, struct ARegion *ar);
 void	ED_region_exit(struct bContext *C, struct ARegion *ar);
-void	ED_region_pixelspace(const struct bContext *C, struct ARegion *ar);
+void	ED_region_pixelspace(struct ARegion *ar);
 void	ED_region_init(struct bContext *C, struct ARegion *ar);
 void	ED_region_tag_redraw(struct ARegion *ar);
 
@@ -53,7 +54,7 @@
 void	ED_spacetypes_init(void);
 void	ED_spacetypes_keymap(struct wmWindowManager *wm);
 struct	ARegionType *ED_regiontype_from_id(struct SpaceType *st, int regionid);
-int		ED_area_header_standardbuttons(const bContext *C, struct uiBlock *block, int yco);
+int		ED_area_header_standardbuttons(const struct bContext *C, struct uiBlock *block, int yco);
 void	ED_area_overdraw(struct bContext *C);
 void	ED_area_overdraw_flush(struct bContext *C);
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c	2008-12-19 12:55:50 UTC (rev 17948)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c	2008-12-19 14:14:43 UTC (rev 17949)
@@ -693,7 +693,7 @@
 	ED_region_init(C, ar);
 
 	/* get winmat now that we actually have the subwindow */
-	wm_subwindow_set(window, ar->swinid);
+	wmSubWindowSet(window, ar->swinid);
 	wm_subwindow_getmatrix(window, ar->swinid, block->winmat);
 	
 	/* notify change and redraw */

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-19 12:55:50 UTC (rev 17948)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-19 14:14:43 UTC (rev 17949)
@@ -637,7 +637,6 @@
 /* Set view matrices to use 'cur' rect as viewing frame for View2D drawing */
 void UI_view2d_view_ortho(const bContext *C, View2D *v2d)
 {
-	wmWindow *window= CTX_wm_window(C);
 	rctf curmasked;
 	float xofs, yofs;
 	
@@ -651,10 +650,10 @@
 	view2d_map_cur_using_mask(v2d, &curmasked);
 	
 	/* set matrix on all appropriate axes */
-	wmOrtho2(window, curmasked.xmin-xofs, curmasked.xmax-xofs, curmasked.ymin-yofs, curmasked.ymax-yofs);
+	wmOrtho2(curmasked.xmin-xofs, curmasked.xmax-xofs, curmasked.ymin-yofs, curmasked.ymax-yofs);
 	
 	/* XXX is this necessary? */
-	wmLoadIdentity(window);
+	wmLoadIdentity();
 }
 
 /* Set view matrices to only use one axis of 'cur' only
@@ -662,7 +661,6 @@
  */
 void UI_view2d_view_orthoSpecial(const bContext *C, View2D *v2d, short xaxis)
 {
-	wmWindow *window= CTX_wm_window(C);
 	ARegion *ar= CTX_wm_region(C);
 	rctf curmasked;
 	float xofs, yofs;
@@ -678,19 +676,19 @@
 	
 	/* only set matrix with 'cur' coordinates on relevant axes */
 	if (xaxis)
-		wmOrtho2(window, curmasked.xmin-xofs, curmasked.xmax-xofs, -yofs, ar->winy-yofs);
+		wmOrtho2(curmasked.xmin-xofs, curmasked.xmax-xofs, -yofs, ar->winy-yofs);
 	else
-		wmOrtho2(window, -xofs, ar->winx-xofs, curmasked.ymin-yofs, curmasked.ymax-yofs);
+		wmOrtho2(-xofs, ar->winx-xofs, curmasked.ymin-yofs, curmasked.ymax-yofs);
 		
 	/* XXX is this necessary? */
-	wmLoadIdentity(window);
+	wmLoadIdentity();
 } 
 
 
 /* Restore view matrices after drawing */
 void UI_view2d_view_restore(const bContext *C)
 {
-	ED_region_pixelspace(C, CTX_wm_region(C));
+	ED_region_pixelspace(CTX_wm_region(C));
 }
 
 /* *********************************************************************** */

Modified: branches/blender2.5/blender/source/blender/editors/screen/area.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/area.c	2008-12-19 12:55:50 UTC (rev 17948)
+++ branches/blender2.5/blender/source/blender/editors/screen/area.c	2008-12-19 14:14:43 UTC (rev 17949)
@@ -92,14 +92,13 @@
 	glDisable( GL_BLEND );
 }
 
-void ED_region_pixelspace(const bContext *C, ARegion *ar)
+void ED_region_pixelspace(ARegion *ar)
 {
-	wmWindow *win= CTX_wm_window(C);
 	int width= ar->winrct.xmax-ar->winrct.xmin+1;
 	int height= ar->winrct.ymax-ar->winrct.ymin+1;
 	
-	wmOrtho2(win, -0.375, (float)width-0.375, -0.375, (float)height-0.375);
-	wmLoadIdentity(win);
+	wmOrtho2(-0.375, (float)width-0.375, -0.375, (float)height-0.375);
+	wmLoadIdentity();
 }
 
 void ED_region_do_listen(ARegion *ar, wmNotifier *note)
@@ -149,7 +148,7 @@
 	ScrArea *sa;
 	
 	/* Draw AZones, in screenspace */
-	wm_subwindow_set(win, screen->mainwin);
+	wmSubWindowSet(win, screen->mainwin);
 
 	glEnable( GL_BLEND );
 	glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
@@ -176,7 +175,8 @@
 	ScrArea *sa= CTX_wm_area(C);
 	ARegionType *at= ar->type;
 	
-	wm_subwindow_set(win, ar->swinid);
+	/* note; this sets state, so we can use wmOrtho and friends */
+	wmSubWindowSet(win, ar->swinid);
 	
 	if(ar->swinid && at->draw) {
 		UI_SetTheme(sa);
@@ -201,7 +201,7 @@
 		region_draw_emboss(ar);
 	
 	/* XXX test: add convention to end regions always in pixel space, for drawing of borders/gestures etc */
-	ED_region_pixelspace(C, ar);
+	ED_region_pixelspace(ar);
 	
 	ar->do_draw= 0;
 }

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2008-12-19 12:55:50 UTC (rev 17948)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c	2008-12-19 14:14:43 UTC (rev 17949)
@@ -934,7 +934,7 @@
 	int dir = -1;
 	int dira = -1;
 
-	wm_subwindow_set(win, win->screen->mainwin);
+	wmSubWindowSet(win, win->screen->mainwin);
 	
 	for(sa= win->screen->areabase.first; sa; sa= sa->next) {
 		if (sa->flag & AREA_FLAG_DRAWJOINFROM) sa1 = sa;

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/drawmesh.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/drawmesh.c	2008-12-19 12:55:50 UTC (rev 17948)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/drawmesh.c	2008-12-19 14:14:43 UTC (rev 17949)
@@ -51,7 +51,6 @@
 #include "DNA_userdef_types.h"
 
 #include "BKE_bmfont.h"
-#include "BKE_context.h"
 #include "BKE_displist.h"
 #include "BKE_DerivedMesh.h"
 #include "BKE_effect.h"

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c	2008-12-19 12:55:50 UTC (rev 17948)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c	2008-12-19 14:14:43 UTC (rev 17949)
@@ -73,7 +73,6 @@
 #include "BLI_rand.h"
 
 #include "BKE_anim.h"			//for the where_on_path function
-#include "BKE_context.h"
 #include "BKE_curve.h"
 #include "BKE_constraint.h" // for the get_constraint_target function
 #include "BKE_DerivedMesh.h"
@@ -662,7 +661,7 @@
 	return;
 }
 
-static void drawlamp(const bContext *C, Scene *scene, View3D *v3d, Object *ob)
+static void drawlamp(Scene *scene, View3D *v3d, Object *ob)
 {
 	Lamp *la;
 	float vec[3], lvec[3], vvec[3], circrad, x,y,z;
@@ -677,7 +676,7 @@
 	
 	/* we first draw only the screen aligned & fixed scale stuff */
 	glPushMatrix();
-	wmLoadMatrix(CTX_wm_window(C), v3d->viewmat);
+	wmLoadMatrix(v3d->viewmat);
 
 	/* lets calculate the scale: */
 	pixsize= v3d->persmat[0][3]*ob->obmat[3][0]+ v3d->persmat[1][3]*ob->obmat[3][1]+ v3d->persmat[2][3]*ob->obmat[3][2]+ v3d->persmat[3][3];
@@ -888,7 +887,7 @@
 	}
 	
 	/* and back to viewspace */
-	wmLoadMatrix(CTX_wm_window(C), v3d->viewmat);
+	wmLoadMatrix(v3d->viewmat);
 	VECCOPY(vec, ob->obmat[3]);
 
 	setlinestyle(0);
@@ -954,7 +953,7 @@
 }
 
 /* flag similar to draw_object() */
-static void drawcamera(const bContext *C, Scene *scene, View3D *v3d, Object *ob, int flag)
+static void drawcamera(Scene *scene, View3D *v3d, Object *ob, int flag)
 {
 	/* a standing up pyramid with (0,0,0) as top */
 	Camera *cam;
@@ -1039,13 +1038,13 @@
 
 	if(flag==0) {
 		if(cam->flag & (CAM_SHOWLIMITS+CAM_SHOWMIST)) {
-			wmLoadMatrix(CTX_wm_window(C), v3d->viewmat);
+			wmLoadMatrix(v3d->viewmat);
 			Mat4CpyMat4(vec, ob->obmat);
 			Mat4Ortho(vec);
-			wmMultMatrix(CTX_wm_window(C), vec);
+			wmMultMatrix(vec);
 
 			MTC_Mat4SwapMat4(v3d->persmat, tmat);
-			wmGetSingleMatrix(CTX_wm_window(C), v3d->persmat);
+			wmGetSingleMatrix(v3d->persmat);
 
 			if(cam->flag & CAM_SHOWLIMITS) {
 				draw_limit_line(cam->clipsta, cam->clipend, 0x77FFFF);
@@ -2827,7 +2826,7 @@
 /* 5. start filling the arrays				*/
 /* 6. draw the arrays						*/
 /* 7. clean up								*/
-static void draw_new_particle_system(const bContext *C, View3D *v3d, Base *base, ParticleSystem *psys, int dt)
+static void draw_new_particle_system(View3D *v3d, Base *base, ParticleSystem *psys, int dt)
 {
 	Object *ob=base->object;
 	ParticleSystemModifierData *psmd;
@@ -2915,12 +2914,12 @@
 
 	timestep= psys_get_timestep(part);
 
-	wmLoadMatrix(CTX_wm_window(C), v3d->viewmat);
+	wmLoadMatrix(v3d->viewmat);
 
 	if( (base->flag & OB_FROMDUPLI) && (ob->flag & OB_FROMGROUP) ) {
 		float mat[4][4];
 		Mat4MulMat4(mat, psys->imat, ob->obmat);
-		wmMultMatrix(CTX_wm_window(C), mat);
+		wmMultMatrix(mat);
 	}
 
 	totpart=psys->totpart;
@@ -3498,11 +3497,11 @@
 		psys->lattice=0;
 	}
 
-	wmLoadMatrix(CTX_wm_window(C), v3d->viewmat);
-	wmMultMatrix(CTX_wm_window(C), ob->obmat);	// bring back local matrix for dtx
+	wmLoadMatrix(v3d->viewmat);
+	wmMultMatrix(ob->obmat);	// bring back local matrix for dtx
 }
 
-static void draw_particle_edit(const bContext *C, Scene *scene, View3D *v3d, Object *ob, ParticleSystem *psys, int dt)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list