From 62a03ea1b6ef84ac80e40ab092393214c6032b88 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Fri, 19 Dec 2008 14:14:43 +0000 Subject: 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. --- source/blender/editors/include/ED_screen.h | 5 +- .../blender/editors/interface/interface_regions.c | 2 +- source/blender/editors/interface/view2d.c | 14 +-- source/blender/editors/screen/area.c | 14 +-- source/blender/editors/screen/screen_edit.c | 2 +- source/blender/editors/space_view3d/drawmesh.c | 1 - source/blender/editors/space_view3d/drawobject.c | 77 ++++++------- source/blender/editors/space_view3d/space_view3d.c | 2 +- source/blender/editors/space_view3d/view3d_draw.c | 79 +++++++------ source/blender/editors/space_view3d/view3d_edit.c | 9 +- .../blender/editors/space_view3d/view3d_intern.h | 13 +-- source/blender/editors/space_view3d/view3d_view.c | 27 +++-- source/blender/windowmanager/WM_api.h | 44 +++---- source/blender/windowmanager/intern/wm_gesture.c | 2 +- source/blender/windowmanager/intern/wm_subwindow.c | 128 +++++++++++---------- source/blender/windowmanager/wm_subwindow.h | 1 - 16 files changed, 210 insertions(+), 210 deletions(-) (limited to 'source') diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 7b4dd41e4a8..6eafc07bcda 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -37,6 +37,7 @@ struct wmWindowManager; struct wmWindow; struct wmNotifier; struct wmEvent; +struct bContext; struct SpaceType; struct AreagionType; struct uiBlock; @@ -45,7 +46,7 @@ struct uiBlock; 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_region_tag_redraw(struct ARegion *ar); 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); diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index c60bf374e6d..d5b49fa801d 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -693,7 +693,7 @@ uiMenuBlockHandle *ui_menu_block_create(bContext *C, ARegion *butregion, uiBut * 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 */ diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c index e0e60f67fcb..0d479478f9b 100644 --- a/source/blender/editors/interface/view2d.c +++ b/source/blender/editors/interface/view2d.c @@ -637,7 +637,6 @@ static void view2d_map_cur_using_mask(View2D *v2d, rctf *curmasked) /* 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 @@ void UI_view2d_view_ortho(const bContext *C, View2D *v2d) 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_ortho(const bContext *C, View2D *v2d) */ 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 @@ void UI_view2d_view_orthoSpecial(const bContext *C, View2D *v2d, short xaxis) /* 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)); } /* *********************************************************************** */ diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index cec34155610..3f7ca19c1f0 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -92,14 +92,13 @@ static void region_draw_emboss(ARegion *ar) 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 @@ void ED_area_overdraw(bContext *C) 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 @@ void ED_region_do_draw(bContext *C, ARegion *ar) 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 @@ void ED_region_do_draw(bContext *C, ARegion *ar) 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; } diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 6f1b0558851..cef98a7e901 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -934,7 +934,7 @@ void ED_screen_draw(wmWindow *win) 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; diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index 01740d2b3b4..a0a76bb6d15 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -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" diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index f5a2cd9df00..4c621c6ec63 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -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 @@ static void spotvolume(float *lvec, float *vvec, float inp) 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 @@ static void drawlamp(const bContext *C, Scene *scene, View3D *v3d, Object *ob) /* 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 @@ static void drawlamp(const bContext *C, Scene *scene, View3D *v3d, Object *ob) } /* 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 @@ static void draw_focus_cross(float dist, float size) } /* 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 @@ static void drawcamera(const bContext *C, Scene *scene, View3D *v3d, Object *ob, 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 @@ static int drawDispList(Scene *scene, View3D *v3d, Base *base, int dt) /* 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 @@ static void draw_new_particle_system(const bContext *C, View3D *v3d, Base *base, 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 @@ static void draw_new_particle_system(const bContext *C, View3D *v3d, Base *base, 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) +static void draw_particle_edit(Scene *scene, View3D *v3d, Object *ob, ParticleSystem *psys, int dt) { ParticleEdit *edit = psys->edit; ParticleData *pa; @@ -3534,7 +3533,7 @@ static void draw_particle_edit(const bContext *C, Scene *scene, View3D *v3d, Obj if((v3d->flag & V3D_ZBUF_SELECT)==0) glDisable(GL_DEPTH_TEST); - wmLoadMatrix(CTX_wm_window(C), v3d->viewmat); + wmLoadMatrix(v3d->viewmat); /* get selection theme colors */ UI_GetThemeColor3ubv(TH_VERTEX_SELECT, sel); @@ -3684,7 +3683,7 @@ static void draw_particle_edit(const bContext *C, Scene *scene, View3D *v3d, Obj glEnable(GL_DEPTH_TEST); glLineWidth(1.0f); - wmMultMatrix(CTX_wm_window(C), ob->obmat); // bring back local matrix for dtx + wmMultMatrix(ob->obmat); // bring back local matrix for dtx glPointSize(1.0); } @@ -4164,7 +4163,7 @@ static void drawcone(float *vec, float radius, float height, float tmat[][4]) glEnd(); } /* return 1 if nothing was drawn */ -static int drawmball(const bContext *C, Scene *scene, View3D *v3d, Base *base, int dt) +static int drawmball(Scene *scene, View3D *v3d, Base *base, int dt) { Object *ob= base->object; MetaBall *mb; @@ -4194,7 +4193,7 @@ static int drawmball(const bContext *C, Scene *scene, View3D *v3d, Base *base, i } else UI_ThemeColor(TH_WIRE); - wmGetMatrix(CTX_wm_window(C), tmat); + wmGetMatrix(tmat); Mat4Invert(imat, tmat); Normalize(imat[0]); Normalize(imat[1]); @@ -4230,7 +4229,7 @@ static int drawmball(const bContext *C, Scene *scene, View3D *v3d, Base *base, i return 0; } -static void draw_forcefield(const bContext *C, Scene *scene, Object *ob) +static void draw_forcefield(Scene *scene, Object *ob) { PartDeflect *pd= ob->pd; float imat[4][4], tmat[4][4]; @@ -4252,7 +4251,7 @@ static void draw_forcefield(const bContext *C, Scene *scene, Object *ob) else size = 1.0; /* calculus here, is reused in PFIELD_FORCE */ - wmGetMatrix(CTX_wm_window(C), tmat); + wmGetMatrix(tmat); Mat4Invert(imat, tmat); // Normalize(imat[0]); // we don't do this because field doesnt scale either... apart from wind! // Normalize(imat[1]); @@ -4687,7 +4686,7 @@ void drawRBpivot(bRigidBodyJointConstraint *data) } /* flag can be DRAW_PICKING and/or DRAW_CONSTCOLOR, DRAW_SCENESET */ -void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) +void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) { static int warning_recursive= 0; Object *ob; @@ -4756,7 +4755,7 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base base->flag= 0; where_is_object_time(ob, (scene->r.cfra)); - draw_object(C, scene, ar, v3d, base, 0); + draw_object(scene, ar, v3d, base, 0); } ce= ce->next; } @@ -4770,7 +4769,7 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base base->flag= SELECT; where_is_object_time(ob, (scene->r.cfra)); - draw_object(C, scene, ar, v3d, base, 0); + draw_object(scene, ar, v3d, base, 0); } ce= ce->next; } @@ -4798,7 +4797,7 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base /* patch? children objects with a timeoffs change the parents. How to solve! */ /* if( ((int)ob->ctime) != F_(scene->r.cfra)) where_is_object(ob); */ - wmMultMatrix(CTX_wm_window(C), ob->obmat); + wmMultMatrix(ob->obmat); /* which wire color */ if((flag & DRAW_CONSTCOLOR) == 0) { @@ -5015,21 +5014,21 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base break; case OB_MBALL: if(ob==G.obedit) - drawmball(C, scene, v3d, base, dt); + drawmball(scene, v3d, base, dt); else if(dt==OB_BOUNDBOX) draw_bounding_volume(ob); else - empty_object= drawmball(C, scene, v3d, base, dt); + empty_object= drawmball(scene, v3d, base, dt); break; case OB_EMPTY: drawaxes(ob->empty_drawsize, flag, ob->empty_drawtype); break; case OB_LAMP: - drawlamp(C, scene, v3d, ob); - if(dtx || (base->flag & SELECT)) wmMultMatrix(CTX_wm_window(C), ob->obmat); + drawlamp(scene, v3d, ob); + if(dtx || (base->flag & SELECT)) wmMultMatrix(ob->obmat); break; case OB_CAMERA: - drawcamera(C, scene, v3d, ob, flag); + drawcamera(scene, v3d, ob, flag); break; case OB_LATTICE: drawlattice(v3d, ob); @@ -5042,7 +5041,7 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base default: drawaxes(1.0, flag, OB_ARROWS); } - if(ob->pd && ob->pd->forcefield) draw_forcefield(C, scene, ob); + if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob); /* code for new particle system */ if( (warning_recursive==0) && @@ -5055,12 +5054,12 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base glDepthMask(GL_FALSE); for(psys=ob->particlesystem.first; psys; psys=psys->next) - draw_new_particle_system(C, v3d, base, psys, dt); + draw_new_particle_system(v3d, base, psys, dt); if(G.f & G_PARTICLEEDIT && ob==OBACT) { psys= NULL; // XXX PE_get_current(ob); if(psys && !G.obedit && psys_in_edit_mode(psys)) - draw_particle_edit(C, scene, v3d, ob, psys, dt); + draw_particle_edit(scene, v3d, ob, psys, dt); } glDepthMask(GL_TRUE); if(col) cpack(col); @@ -5108,7 +5107,7 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base float tmat[4][4], imat[4][4], vec[3]; vec[0]= vec[1]= vec[2]= 0.0; - wmGetMatrix(CTX_wm_window(C), tmat); + wmGetMatrix(tmat); Mat4Invert(imat, tmat); setlinestyle(2); @@ -5117,7 +5116,7 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base } } - wmLoadMatrix(CTX_wm_window(C), v3d->viewmat); + wmLoadMatrix(v3d->viewmat); if(zbufoff) glDisable(GL_DEPTH_TEST); @@ -5215,7 +5214,7 @@ void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base free_old_images(); } -void draw_object_ext(const bContext *C, ARegion *ar, View3D *v3d, Scene *scene, Base *base) +void draw_object_ext(ARegion *ar, View3D *v3d, Scene *scene, Base *base) { if(v3d==NULL || base==NULL) return; @@ -5233,7 +5232,7 @@ void draw_object_ext(const bContext *C, ARegion *ar, View3D *v3d, Scene *scene, if(v3d->flag & V3D_CLIPPING) view3d_set_clipping(v3d); - draw_object(C, scene, ar, v3d, base, 0); + draw_object(scene, ar, v3d, base, 0); if(v3d->flag & V3D_CLIPPING) view3d_clr_clipping(); @@ -5362,10 +5361,10 @@ static void bbs_mesh_solid(Object *ob) dm->release(dm); } -void draw_object_backbufsel(const bContext *C, Scene *scene, View3D *v3d, Object *ob) +void draw_object_backbufsel(Scene *scene, View3D *v3d, Object *ob) { - wmMultMatrix(CTX_wm_window(C), ob->obmat); + wmMultMatrix(ob->obmat); glClearDepth(1.0); glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); @@ -5403,7 +5402,7 @@ void draw_object_backbufsel(const bContext *C, Scene *scene, View3D *v3d, Object break; } - wmLoadMatrix(CTX_wm_window(C), v3d->viewmat); + wmLoadMatrix(v3d->viewmat); } diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 218c55edd53..b279e888bea 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -192,7 +192,7 @@ static void view3d_main_area_draw(const bContext *C, ARegion *ar) ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; /* XXX get from region */ - drawview3dspace(C, ar, v3d); + drawview3dspace(CTX_data_scene(C), ar, v3d); } diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index d03681d6a59..a4134aac449 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -50,7 +50,6 @@ #include "BLI_rand.h" #include "BKE_anim.h" -#include "BKE_context.h" #include "BKE_image.h" #include "BKE_ipo.h" #include "BKE_key.h" @@ -1170,7 +1169,7 @@ void add_view3d_after(View3D *v3d, Base *base, int type, int flag) } /* clears zbuffer and draws it over */ -static void view3d_draw_xray(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int clear) +static void view3d_draw_xray(Scene *scene, ARegion *ar, View3D *v3d, int clear) { View3DAfter *v3da, *next; int doit= 0; @@ -1185,7 +1184,7 @@ static void view3d_draw_xray(const bContext *C, Scene *scene, ARegion *ar, View3 for(v3da= v3d->afterdraw.first; v3da; v3da= next) { next= v3da->next; if(v3da->type==V3D_XRAY) { - draw_object(C, scene, ar, v3d, v3da->base, v3da->flag); + draw_object(scene, ar, v3d, v3da->base, v3da->flag); BLI_remlink(&v3d->afterdraw, v3da); MEM_freeN(v3da); } @@ -1195,7 +1194,7 @@ static void view3d_draw_xray(const bContext *C, Scene *scene, ARegion *ar, View3 } /* disables write in zbuffer and draws it over */ -static void view3d_draw_transp(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d) +static void view3d_draw_transp(Scene *scene, ARegion *ar, View3D *v3d) { View3DAfter *v3da, *next; @@ -1205,7 +1204,7 @@ static void view3d_draw_transp(const bContext *C, Scene *scene, ARegion *ar, Vie for(v3da= v3d->afterdraw.first; v3da; v3da= next) { next= v3da->next; if(v3da->type==V3D_TRANSP) { - draw_object(C, scene, ar, v3d, v3da->base, v3da->flag); + draw_object(scene, ar, v3d, v3da->base, v3da->flag); BLI_remlink(&v3d->afterdraw, v3da); MEM_freeN(v3da); } @@ -1223,7 +1222,7 @@ static void view3d_draw_transp(const bContext *C, Scene *scene, ARegion *ar, Vie draw_dupli_objects_color was added because when drawing set dupli's we need to force the color */ -static void draw_dupli_objects_color(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base *base, int color) +static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int color) { ListBase *lb; DupliObject *dob; @@ -1276,7 +1275,7 @@ static void draw_dupli_objects_color(const bContext *C, Scene *scene, ARegion *a displist= glGenLists(1); glNewList(displist, GL_COMPILE); - draw_object(C, scene, ar, v3d, &tbase, DRAW_CONSTCOLOR); + draw_object(scene, ar, v3d, &tbase, DRAW_CONSTCOLOR); glEndList(); use_displist= 1; @@ -1284,14 +1283,14 @@ static void draw_dupli_objects_color(const bContext *C, Scene *scene, ARegion *a } } if(use_displist) { - wmMultMatrix(CTX_wm_window(C), dob->mat); + wmMultMatrix(dob->mat); if(boundbox_clip(v3d, dob->mat, bb)) glCallList(displist); - wmLoadMatrix(CTX_wm_window(C), v3d->viewmat); + wmLoadMatrix(v3d->viewmat); } else { Mat4CpyMat4(dob->ob->obmat, dob->mat); - draw_object(C, scene, ar, v3d, &tbase, DRAW_CONSTCOLOR); + draw_object(scene, ar, v3d, &tbase, DRAW_CONSTCOLOR); } tbase.object->dt= dt; @@ -1308,7 +1307,7 @@ static void draw_dupli_objects_color(const bContext *C, Scene *scene, ARegion *a glDeleteLists(displist, 1); } -static void draw_dupli_objects(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base *base) +static void draw_dupli_objects(Scene *scene, ARegion *ar, View3D *v3d, Base *base) { /* define the color here so draw_dupli_objects_color can be called * from the set loop */ @@ -1318,7 +1317,7 @@ static void draw_dupli_objects(const bContext *C, Scene *scene, ARegion *ar, Vie if(base->object->dup_group && base->object->dup_group->id.us<1) color= TH_REDALERT; - draw_dupli_objects_color(C, scene, ar, v3d, base, color); + draw_dupli_objects_color(scene, ar, v3d, base, color); } @@ -1351,7 +1350,7 @@ void view3d_update_depths(ARegion *ar, View3D *v3d) } /* Enable sculpting in wireframe mode by drawing sculpt object only to the depth buffer */ -static void draw_sculpt_depths(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d) +static void draw_sculpt_depths(Scene *scene, ARegion *ar, View3D *v3d) { Object *ob = OBACT; @@ -1370,7 +1369,7 @@ static void draw_sculpt_depths(const bContext *C, Scene *scene, ARegion *ar, Vie glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glEnable(GL_DEPTH_TEST); - draw_object(C, scene, ar, v3d, BASACT, 0); + draw_object(scene, ar, v3d, BASACT, 0); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); if(!depth_on) glDisable(GL_DEPTH_TEST); @@ -1381,7 +1380,7 @@ static void draw_sculpt_depths(const bContext *C, Scene *scene, ARegion *ar, Vie } } -void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *)) +void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *)) { Base *base; Scene *sce; @@ -1397,7 +1396,7 @@ void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int ( U.glalphaclip = 0.5; /* not that nice but means we wont zoom into billboards */ v3d->flag &= ~V3D_SELECT_OUTLINE; - setwinmatrixview3d(CTX_wm_window(C), v3d, ar->winx, ar->winy, NULL); /* 0= no pick rect */ + setwinmatrixview3d(v3d, ar->winx, ar->winy, NULL); /* 0= no pick rect */ setviewmatrixview3d(v3d); /* note: calls where_is_object for camera... */ Mat4MulMat4(v3d->persmat, v3d->viewmat, v3d->winmat); @@ -1406,7 +1405,7 @@ void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int ( glClear(GL_DEPTH_BUFFER_BIT); - wmLoadMatrix(CTX_wm_window(C), v3d->viewmat); + wmLoadMatrix(v3d->viewmat); // persp(PERSP_STORE); // store correct view for persp(PERSP_VIEW) calls if(v3d->flag & V3D_CLIPPING) { @@ -1421,9 +1420,9 @@ void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int ( for(SETLOOPER(scene->set, base)) { if(v3d->lay & base->lay) { if (func == NULL || func(base)) { - draw_object(C, scene, ar, v3d, base, 0); + draw_object(scene, ar, v3d, base, 0); if(base->object->transflag & OB_DUPLI) { - draw_dupli_objects_color(C, scene, ar, v3d, base, TH_WIRE); + draw_dupli_objects_color(scene, ar, v3d, base, TH_WIRE); } } } @@ -1435,9 +1434,9 @@ void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int ( if (func == NULL || func(base)) { /* dupli drawing */ if(base->object->transflag & OB_DUPLI) { - draw_dupli_objects(C, scene, ar, v3d, base); + draw_dupli_objects(scene, ar, v3d, base); } - draw_object(C, scene, ar, v3d, base, 0); + draw_object(scene, ar, v3d, base, 0); } } } @@ -1452,7 +1451,7 @@ void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int ( for(v3da= v3d->afterdraw.first; v3da; v3da= next) { next= v3da->next; if(v3da->type==V3D_XRAY) { - draw_object(C, scene, ar, v3d, v3da->base, 0); + draw_object(scene, ar, v3d, v3da->base, 0); num++; } /* dont remove this time */ @@ -1468,7 +1467,7 @@ void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int ( v3d->xray= FALSE; v3d->transp= TRUE; } - draw_object(C, scene, ar, v3d, v3da->base, 0); /* Draw Xray or Transp objects normally */ + draw_object(scene, ar, v3d, v3da->base, 0); /* Draw Xray or Transp objects normally */ BLI_remlink(&v3d->afterdraw, v3da); MEM_freeN(v3da); } @@ -1561,11 +1560,11 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d) } -void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) +void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d) { + Scene *sce; Base *base; Object *ob; - Scene *scene= CTX_data_scene(C), *sce; char retopo= 0, sculptparticle= 0; Object *obact = OBACT; @@ -1587,7 +1586,7 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) if(draw_glsl_material(scene, NULL, v3d, v3d->drawtype)) gpu_update_lamps_shadows(scene, v3d); - setwinmatrixview3d(CTX_wm_window(C), v3d, ar->winx, ar->winy, NULL); /* 0= no pick rect */ + setwinmatrixview3d(v3d, ar->winx, ar->winy, NULL); /* 0= no pick rect */ setviewmatrixview3d(v3d); /* note: calls where_is_object for camera... */ Mat4MulMat4(v3d->persmat, v3d->viewmat, v3d->winmat); @@ -1625,7 +1624,7 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); } - wmLoadMatrix(CTX_wm_window(C), v3d->viewmat); + wmLoadMatrix(v3d->viewmat); if(v3d->flag & V3D_CLIPPING) view3d_draw_clipping(v3d); @@ -1652,13 +1651,13 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) } } else { - ED_region_pixelspace(C, ar); + ED_region_pixelspace(ar); drawgrid(ar, v3d); /* XXX make function? replaces persp(1) */ glMatrixMode(GL_PROJECTION); - wmLoadMatrix(CTX_wm_window(C), v3d->winmat); + wmLoadMatrix(v3d->winmat); glMatrixMode(GL_MODELVIEW); - wmLoadMatrix(CTX_wm_window(C), v3d->viewmat); + wmLoadMatrix(v3d->viewmat); if(v3d->flag & V3D_DISPBGPIC) { draw_bgpic(scene, ar, v3d); @@ -1675,10 +1674,10 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) if(v3d->lay & base->lay) { UI_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f); - draw_object(C, scene, ar, v3d, base, DRAW_CONSTCOLOR|DRAW_SCENESET); + draw_object(scene, ar, v3d, base, DRAW_CONSTCOLOR|DRAW_SCENESET); if(base->object->transflag & OB_DUPLI) { - draw_dupli_objects_color(C, scene, ar, v3d, base, TH_WIRE); + draw_dupli_objects_color(scene, ar, v3d, base, TH_WIRE); } } } @@ -1692,11 +1691,11 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) /* dupli drawing */ if(base->object->transflag & OB_DUPLI) { - draw_dupli_objects(C, scene, ar, v3d, base); + draw_dupli_objects(scene, ar, v3d, base); } if((base->flag & SELECT)==0) { if(base->object!=G.obedit) - draw_object(C, scene, ar, v3d, base, 0); + draw_object(scene, ar, v3d, base, 0); } } } @@ -1710,13 +1709,13 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) for(base= scene->base.first; base; base= base->next) { if(v3d->lay & base->lay) { if (base->object==G.obedit || ( base->flag & SELECT) ) - draw_object(C, scene, ar, v3d, base, 0); + draw_object(scene, ar, v3d, base, 0); } } if(!retopo && sculptparticle && !(obact && (obact->dtx & OB_DRAWXRAY))) { if(G.f & G_SCULPTMODE) - draw_sculpt_depths(C, scene, ar, v3d); + draw_sculpt_depths(scene, ar, v3d); view3d_update_depths(ar, v3d); } @@ -1732,12 +1731,12 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) // if(scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID); /* Transp and X-ray afterdraw stuff */ - view3d_draw_transp(C, scene, ar, v3d); - view3d_draw_xray(C, scene, ar, v3d, 1); // clears zbuffer if it is used! + view3d_draw_transp(scene, ar, v3d); + view3d_draw_xray(scene, ar, v3d, 1); // clears zbuffer if it is used! if(!retopo && sculptparticle && (obact && (OBACT->dtx & OB_DRAWXRAY))) { if(G.f & G_SCULPTMODE) - draw_sculpt_depths(C, scene, ar, v3d); + draw_sculpt_depths(scene, ar, v3d); view3d_update_depths(ar, v3d); } @@ -1755,7 +1754,7 @@ void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d) // if (v3d->flag2 & V3D_DISPGP) // draw_gpencil_3dview(ar, 1); - ED_region_pixelspace(C, ar); + ED_region_pixelspace(ar); /* Draw Sculpt Mode brush XXX (removed) */ diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 77c3476c8cf..aa2f58ba4a2 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -49,7 +49,6 @@ #include "BLI_rand.h" #include "BKE_action.h" -#include "BKE_context.h" #include "BKE_object.h" #include "BKE_global.h" #include "BKE_scene.h" @@ -335,7 +334,7 @@ void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode) } /* Zooms in on a border drawn by the user */ -static int view_autodist(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, short *mval, float mouse_worldloc[3] ) //, float *autodist ) +static int view_autodist(Scene *scene, ARegion *ar, View3D *v3d, short *mval, float mouse_worldloc[3] ) //, float *autodist ) { rcti rect; /* ZBuffer depth vars */ @@ -357,7 +356,7 @@ static int view_autodist(const bContext *C, Scene *scene, ARegion *ar, View3D *v /* Get Z Depths, needed for perspective, nice for ortho */ bgl_get_mats(&mats); - draw_depth(C, scene, ar, v3d, NULL); + draw_depth(scene, ar, v3d, NULL); /* force updating */ if (v3d->depths) { @@ -453,7 +452,7 @@ static void view_zoom_mouseloc(ARegion *ar, View3D *v3d, float dfac, short *mous #define COS45 0.70710678118654746 #define SIN45 COS45 -void viewmove(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int mode) +void viewmove(Scene *scene, ARegion *ar, View3D *v3d, int mode) { static float lastofs[3] = {0,0,0}; Object *ob = OBACT; @@ -524,7 +523,7 @@ void viewmove(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int mod VecMulf(obofs, -1.0f); } else if (U.uiflag & USER_ORBIT_ZBUF) { - if ((use_sel= view_autodist(C, scene, ar, v3d, mval, obofs))) { + if ((use_sel= view_autodist(scene, ar, v3d, mval, obofs))) { if (v3d->persp==V3D_PERSP) { float my_origin[3]; /* original v3d->ofs */ float my_pivot[3]; /* view */ diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 331b5553869..6c0a978f088 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -30,7 +30,6 @@ /* internal exports only */ -struct wmWindow; struct BoundBox; struct Object; struct DerivedMesh; @@ -55,18 +54,18 @@ typedef struct ViewDepths { #define IS_CLIPPED 12000 /* view3d_header.c */ -void view3d_header_buttons(const bContext *C, ARegion *ar); +void view3d_header_buttons(const struct bContext *C, ARegion *ar); /* drawobject.c */ -void draw_object(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag); +void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag); int draw_glsl_material(Scene *scene, Object *ob, View3D *v3d, int dt); /* drawmesh.c */ void draw_mesh_textured(Scene *scene, View3D *v3d, Object *ob, struct DerivedMesh *dm, int faceselect); /* view3d_draw.c */ -void drawview3dspace(const bContext *C, ARegion *ar, View3D *v3d); -void draw_depth(const bContext *C, Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *)); +void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d); +void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *)); int view3d_test_clipping(View3D *v3d, float *vec); void view3d_clr_clipping(void); void view3d_set_clipping(View3D *v3d); @@ -103,7 +102,7 @@ int get_view3d_viewplane(View3D *v3d, int winxi, int winyi, rctf *viewplane, flo void view_settings_from_ob(Object *ob, float *ofs, float *quat, float *dist, float *lens); void obmat_to_viewmat(View3D *v3d, Object *ob, short smooth); -short view3d_opengl_select(bContext *C, Scene *scene, ARegion *ar, View3D *v3d, unsigned int *buffer, unsigned int bufsize, rcti *input); +short view3d_opengl_select(Scene *scene, ARegion *ar, View3D *v3d, unsigned int *buffer, unsigned int bufsize, rcti *input); void initlocalview(Scene *scene, ARegion *ar, View3D *v3d); void restore_localviewdata(View3D *vd); void endlocalview(Scene *scene, ScrArea *sa); @@ -116,7 +115,7 @@ void view3d_align_axis_to_vector(View3D *v3d, int axisidx, float vec[3]); void smooth_view(View3D *v3d, float *ofs, float *quat, float *dist, float *lens); void smooth_view_to_camera(View3D *v3d); -void setwinmatrixview3d(struct wmWindow *win, View3D *v3d, int winx, int winy, rctf *rect); /* rect: for picking */ +void setwinmatrixview3d(View3D *v3d, int winx, int winy, rctf *rect); /* rect: for picking */ void setviewmatrixview3d(View3D *v3d); #endif /* ED_VIEW3D_INTERN_H */ diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index a7d8360157d..f7a1206c164 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -51,7 +51,6 @@ #include "BKE_anim.h" #include "BKE_action.h" -#include "BKE_context.h" #include "BKE_object.h" #include "BKE_global.h" #include "BKE_main.h" @@ -536,7 +535,7 @@ int get_view3d_viewplane(View3D *v3d, int winxi, int winyi, rctf *viewplane, flo /* important to not set windows active in here, can be renderwin for example */ -void setwinmatrixview3d(wmWindow *win, View3D *v3d, int winx, int winy, rctf *rect) /* rect: for picking */ +void setwinmatrixview3d(View3D *v3d, int winx, int winy, rctf *rect) /* rect: for picking */ { rctf viewplane; float clipsta, clipend, x1, y1, x2, y2; @@ -559,18 +558,18 @@ void setwinmatrixview3d(wmWindow *win, View3D *v3d, int winx, int winy, rctf *re rect->ymax/= (float)winy; rect->ymax= y1+rect->ymax*(y2-y1); - if(orth) wmOrtho(win, rect->xmin, rect->xmax, rect->ymin, rect->ymax, -clipend, clipend); - else wmFrustum(win, rect->xmin, rect->xmax, rect->ymin, rect->ymax, clipsta, clipend); + if(orth) wmOrtho(rect->xmin, rect->xmax, rect->ymin, rect->ymax, -clipend, clipend); + else wmFrustum(rect->xmin, rect->xmax, rect->ymin, rect->ymax, clipsta, clipend); } else { - if(orth) wmOrtho(win, x1, x2, y1, y2, clipsta, clipend); - else wmFrustum(win, x1, x2, y1, y2, clipsta, clipend); + if(orth) wmOrtho(x1, x2, y1, y2, clipsta, clipend); + else wmFrustum(x1, x2, y1, y2, clipsta, clipend); } /* not sure what this was for? (ton) */ glMatrixMode(GL_PROJECTION); - wmGetMatrix(win, v3d->winmat); + wmGetMatrix(v3d->winmat); glMatrixMode(GL_MODELVIEW); } @@ -751,7 +750,7 @@ void setcameratoview3d(View3D *v3d) * This is an error, "Too many objects in select buffer" * and no action should be taken (can crash blender) if this happens */ -short view3d_opengl_select(bContext *C, Scene *scene, ARegion *ar, View3D *v3d, unsigned int *buffer, unsigned int bufsize, rcti *input) +short view3d_opengl_select(Scene *scene, ARegion *ar, View3D *v3d, unsigned int *buffer, unsigned int bufsize, rcti *input) { rctf rect; short code, hits; @@ -773,7 +772,7 @@ short view3d_opengl_select(bContext *C, Scene *scene, ARegion *ar, View3D *v3d, } /* get rid of overlay button matrix XXX ?*/ - setwinmatrixview3d(CTX_wm_window(C), v3d, ar->winx, ar->winy, &rect); + setwinmatrixview3d(v3d, ar->winx, ar->winy, &rect); Mat4MulMat4(v3d->persmat, v3d->viewmat, v3d->winmat); if(v3d->drawtype > OB_WIRE) { @@ -791,10 +790,10 @@ short view3d_opengl_select(bContext *C, Scene *scene, ARegion *ar, View3D *v3d, code= 1; if(G.obedit && G.obedit->type==OB_MBALL) { - draw_object(C, scene, ar, v3d, BASACT, DRAW_PICKING|DRAW_CONSTCOLOR); + draw_object(scene, ar, v3d, BASACT, DRAW_PICKING|DRAW_CONSTCOLOR); } else if ((G.obedit && G.obedit->type==OB_ARMATURE)) { - draw_object(C, scene, ar, v3d, BASACT, DRAW_PICKING|DRAW_CONSTCOLOR); + draw_object(scene, ar, v3d, BASACT, DRAW_PICKING|DRAW_CONSTCOLOR); } else { Base *base; @@ -808,7 +807,7 @@ short view3d_opengl_select(bContext *C, Scene *scene, ARegion *ar, View3D *v3d, else { base->selcol= code; glLoadName(code); - draw_object(C, scene, ar, v3d, base, DRAW_PICKING|DRAW_CONSTCOLOR); + draw_object(scene, ar, v3d, base, DRAW_PICKING|DRAW_CONSTCOLOR); /* we draw group-duplicators for selection too */ if((base->object->transflag & OB_DUPLI) && base->object->dup_group) { @@ -823,7 +822,7 @@ short view3d_opengl_select(bContext *C, Scene *scene, ARegion *ar, View3D *v3d, tbase.object= dob->ob; Mat4CpyMat4(dob->ob->obmat, dob->mat); - draw_object(C, scene, ar, v3d, &tbase, DRAW_PICKING|DRAW_CONSTCOLOR); + draw_object(scene, ar, v3d, &tbase, DRAW_PICKING|DRAW_CONSTCOLOR); Mat4CpyMat4(dob->ob->obmat, dob->omat); } @@ -840,7 +839,7 @@ short view3d_opengl_select(bContext *C, Scene *scene, ARegion *ar, View3D *v3d, hits= glRenderMode(GL_RENDER); G.f &= ~G_PICKSEL; - setwinmatrixview3d(CTX_wm_window(C), v3d, ar->winx, ar->winy, NULL); + setwinmatrixview3d(v3d, ar->winx, ar->winy, NULL); Mat4MulMat4(v3d->persmat, v3d->viewmat, v3d->winmat); if(v3d->drawtype > OB_WIRE) { diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 222982fb05f..8ee67a12790 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -73,7 +73,7 @@ ListBase *WM_keymap_listbase (wmWindowManager *wm, const char *nameid, int spaceid, int regionid); char *WM_key_event_string(short type); -char *WM_key_event_operator_string(bContext *C, char *opname, int opcontext, char *str, int len); +char *WM_key_event_operator_string(struct bContext *C, char *opname, int opcontext, char *str, int len); /* handlers */ @@ -83,19 +83,19 @@ struct wmEventHandler *WM_event_add_keymap_handler_bb(ListBase *handlers, ListBa void WM_event_remove_keymap_handler(ListBase *handlers, ListBase *keymap); -struct wmEventHandler *WM_event_add_ui_handler(bContext *C, ListBase *handlers, - int (*func)(bContext *C, struct wmEvent *event, void *userdata), - void (*remove)(bContext *C, void *userdata), void *userdata); +struct wmEventHandler *WM_event_add_ui_handler(struct bContext *C, ListBase *handlers, + int (*func)(struct bContext *C, struct wmEvent *event, void *userdata), + void (*remove)(struct bContext *C, void *userdata), void *userdata); void WM_event_remove_ui_handler(ListBase *handlers, - int (*func)(bContext *C, struct wmEvent *event, void *userdata), - void (*remove)(bContext *C, void *userdata), void *userdata); + int (*func)(struct bContext *C, struct wmEvent *event, void *userdata), + void (*remove)(struct bContext *C, void *userdata), void *userdata); -struct wmEventHandler *WM_event_add_modal_handler(bContext *C, ListBase *handlers, wmOperator *op); -void WM_event_remove_handlers(bContext *C, ListBase *handlers); +struct wmEventHandler *WM_event_add_modal_handler(struct bContext *C, ListBase *handlers, wmOperator *op); +void WM_event_remove_handlers(struct bContext *C, ListBase *handlers); -void WM_event_add_mousemove(bContext *C); +void WM_event_add_mousemove(struct bContext *C); -void WM_event_add_notifier(bContext *C, int type, int value, void *data); +void WM_event_add_notifier(struct bContext *C, int type, int value, void *data); void wm_event_add (wmWindow *win, struct wmEvent *event_to_add); /* XXX only for warning */ @@ -126,17 +126,19 @@ void WM_OT_tweak_gesture(wmOperatorType *ot); struct wmGesture *WM_gesture_new(struct bContext *C, struct wmEvent *event, int type); void WM_gesture_end(struct bContext *C, struct wmGesture *gesture); - /* OpenGL wrappers, mimicing opengl syntax */ -void wmLoadMatrix (wmWindow *win, float mat[][4]); -void wmGetMatrix (wmWindow *win, float mat[][4]); -void wmMultMatrix (wmWindow *win, float mat[][4]); -void wmGetSingleMatrix (wmWindow *win, float mat[][4]); -void wmScale (wmWindow *win, float x, float y, float z); -void wmLoadIdentity (wmWindow *win); /* note: old name clear_view_mat */ - -void wmFrustum (wmWindow *win, float x1, float x2, float y1, float y2, float n, float f); -void wmOrtho (wmWindow *win, float x1, float x2, float y1, float y2, float n, float f); -void wmOrtho2 (wmWindow *win, float x1, float x2, float y1, float y2); + /* OpenGL wrappers, mimicking opengl syntax */ +void wmSubWindowSet (wmWindow *win, int swinid); + +void wmLoadMatrix (float mat[][4]); +void wmGetMatrix (float mat[][4]); +void wmMultMatrix (float mat[][4]); +void wmGetSingleMatrix (float mat[][4]); +void wmScale (float x, float y, float z); +void wmLoadIdentity (void); /* note: old name clear_view_mat */ + +void wmFrustum (float x1, float x2, float y1, float y2, float n, float f); +void wmOrtho (float x1, float x2, float y1, float y2, float n, float f); +void wmOrtho2 (float x1, float x2, float y1, float y2); /* utilities */ void WM_set_framebuffer_index_color(int index); diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c index e6e5186f8b1..c5953310783 100644 --- a/source/blender/windowmanager/intern/wm_gesture.c +++ b/source/blender/windowmanager/intern/wm_gesture.c @@ -186,7 +186,7 @@ void wm_gesture_draw(wmWindow *win) for(; gt; gt= gt->next) { /* all in subwindow space */ - wm_subwindow_set(win, gt->swinid); + wmSubWindowSet(win, gt->swinid); if(gt->type==WM_GESTURE_RECT) wm_gesture_draw_rect(win, gt); diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c index 7477cb35a6d..d19944bcf1a 100644 --- a/source/blender/windowmanager/intern/wm_subwindow.c +++ b/source/blender/windowmanager/intern/wm_subwindow.c @@ -135,31 +135,6 @@ void wm_subwindow_getmatrix(wmWindow *win, int swinid, float mat[][4]) Mat4MulMat4(mat, swin->viewmat, swin->winmat); } -void wm_subwindow_set(wmWindow *win, int swinid) -{ - wmSubWindow *swin= swin_from_swinid(win, swinid); - int width, height; - - if(swin==NULL) { - printf("wm_subwindow_set %d: doesn't exist\n", swinid); - return; - } - - win->curswin= swin; - wm_subwindow_getsize(win, swinid, &width, &height); - - glViewport(swin->winrct.xmin, swin->winrct.ymin, width, height); - glScissor(swin->winrct.xmin, swin->winrct.ymin, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadMatrixf(&swin->winmat[0][0]); - glMatrixMode(GL_MODELVIEW); - glLoadMatrixf(&swin->viewmat[0][0]); - - glFlush(); - -} - /* always sets pixel-precise 2D window/view matrices */ /* coords is in whole pixels. xmin = 15, xmax= 16: means window is 2 pix big */ int wm_subwindow_open(wmWindow *win, rcti *winrct) @@ -183,12 +158,12 @@ int wm_subwindow_open(wmWindow *win, rcti *winrct) Mat4One(swin->winmat); /* and we appy it all right away */ - wm_subwindow_set(win, swin->swinid); + wmSubWindowSet(win, swin->swinid); /* extra service */ wm_subwindow_getsize(win, swin->swinid, &width, &height); - 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(); return swin->swinid; } @@ -240,9 +215,9 @@ void wm_subwindow_position(wmWindow *win, int swinid, rcti *winrct) swin->winrct.ymax= win->sizey-1; /* extra service */ - wm_subwindow_set(win, swinid); + wmSubWindowSet(win, swinid); wm_subwindow_getsize(win, swinid, &width, &height); - wmOrtho2(win, -0.375, (float)width-0.375, -0.375, (float)height-0.375); + wmOrtho2(-0.375, (float)width-0.375, -0.375, (float)height-0.375); } else { printf("wm_subwindow_position: Internal error, bad winid: %d\n", swinid); @@ -252,106 +227,137 @@ void wm_subwindow_position(wmWindow *win, int swinid, rcti *winrct) /* ---------------- WM versions of OpenGL calls, using glBlah() syntax ------------------------ */ /* ----------------- exported in WM_api.h ------------------------------------------------------ */ +/* internal state, no threaded opengl! XXX */ +static wmWindow *_curwindow= NULL; +static wmSubWindow *_curswin= NULL; -void wmLoadMatrix(wmWindow *win, float mat[][4]) +/* enable the WM versions of opengl calls */ +void wmSubWindowSet(wmWindow *win, int swinid) { - if(win->curswin==NULL) return; + _curswin= swin_from_swinid(win, swinid); + int width, height; + + if(_curswin==NULL) { + printf("wmSubWindowSet %d: doesn't exist\n", swinid); + return; + } + + win->curswin= _curswin; + _curwindow= win; + + width= _curswin->winrct.xmax - _curswin->winrct.xmin + 1; + height= _curswin->winrct.ymax - _curswin->winrct.ymin + 1; + glViewport(_curswin->winrct.xmin, _curswin->winrct.ymin, width, height); + glScissor(_curswin->winrct.xmin, _curswin->winrct.ymin, width, height); + + glMatrixMode(GL_PROJECTION); + glLoadMatrixf(&_curswin->winmat[0][0]); + glMatrixMode(GL_MODELVIEW); + glLoadMatrixf(&_curswin->viewmat[0][0]); + + glFlush(); + +} + +void wmLoadMatrix(float mat[][4]) +{ + if(_curswin==NULL) return; glLoadMatrixf(mat); if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW) - Mat4CpyMat4(win->curswin->viewmat, mat); + Mat4CpyMat4(_curswin->viewmat, mat); else - Mat4CpyMat4(win->curswin->winmat, mat); + Mat4CpyMat4(_curswin->winmat, mat); } -void wmGetMatrix(wmWindow *win, float mat[][4]) +void wmGetMatrix(float mat[][4]) { - if(win->curswin==NULL) return; + if(_curswin==NULL) return; if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW) { - Mat4CpyMat4(mat, win->curswin->viewmat); + Mat4CpyMat4(mat, _curswin->viewmat); } else { - Mat4CpyMat4(mat, win->curswin->winmat); + Mat4CpyMat4(mat, _curswin->winmat); } } -void wmMultMatrix(wmWindow *win, float mat[][4]) +void wmMultMatrix(float mat[][4]) { - if(win->curswin==NULL) return; + if(_curswin==NULL) return; glMultMatrixf((float*) mat); if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW) - glGetFloatv(GL_MODELVIEW_MATRIX, (float *)win->curswin->viewmat); + glGetFloatv(GL_MODELVIEW_MATRIX, (float *)_curswin->viewmat); else - glGetFloatv(GL_MODELVIEW_MATRIX, (float *)win->curswin->winmat); + glGetFloatv(GL_MODELVIEW_MATRIX, (float *)_curswin->winmat); } -void wmGetSingleMatrix(wmWindow *win, float mat[][4]) +void wmGetSingleMatrix(float mat[][4]) { - if(win->curswin) - Mat4MulMat4(mat, win->curswin->viewmat, win->curswin->winmat); + if(_curswin) + Mat4MulMat4(mat, _curswin->viewmat, _curswin->winmat); } -void wmScale(wmWindow *win, float x, float y, float z) +void wmScale(float x, float y, float z) { - if(win->curswin==NULL) return; + if(_curswin==NULL) return; glScalef(x, y, z); if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW) - glGetFloatv(GL_MODELVIEW_MATRIX, (float *)win->curswin->viewmat); + glGetFloatv(GL_MODELVIEW_MATRIX, (float *)_curswin->viewmat); else - glGetFloatv(GL_MODELVIEW_MATRIX, (float *)win->curswin->winmat); + glGetFloatv(GL_MODELVIEW_MATRIX, (float *)_curswin->winmat); } -void wmLoadIdentity(wmWindow *win) +void wmLoadIdentity(void) { - if(win->curswin==NULL) return; + if(_curswin==NULL) return; if (glaGetOneInteger(GL_MATRIX_MODE)==GL_MODELVIEW) - Mat4One(win->curswin->viewmat); + Mat4One(_curswin->viewmat); else - Mat4One(win->curswin->winmat); + Mat4One(_curswin->winmat); glLoadIdentity(); } -void wmFrustum(wmWindow *win, float x1, float x2, float y1, float y2, float n, float f) +void wmFrustum(float x1, float x2, float y1, float y2, float n, float f) { - if(win->curswin) { + if(_curswin) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(x1, x2, y1, y2, n, f); - glGetFloatv(GL_PROJECTION_MATRIX, (float *)win->curswin->winmat); + glGetFloatv(GL_PROJECTION_MATRIX, (float *)_curswin->winmat); glMatrixMode(GL_MODELVIEW); } } -void wmOrtho(wmWindow *win, float x1, float x2, float y1, float y2, float n, float f) +void wmOrtho(float x1, float x2, float y1, float y2, float n, float f) { - if(win->curswin) { + if(_curswin) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(x1, x2, y1, y2, n, f); - glGetFloatv(GL_PROJECTION_MATRIX, (float *)win->curswin->winmat); + glGetFloatv(GL_PROJECTION_MATRIX, (float *)_curswin->winmat); glMatrixMode(GL_MODELVIEW); } } -void wmOrtho2(wmWindow *win, float x1, float x2, float y1, float y2) +void wmOrtho2(float x1, float x2, float y1, float y2) { /* prevent opengl from generating errors */ if(x1==x2) x2+=1.0; if(y1==y2) y2+=1.0; - wmOrtho(win, x1, x2, y1, y2, -100, 100); + wmOrtho(x1, x2, y1, y2, -100, 100); } diff --git a/source/blender/windowmanager/wm_subwindow.h b/source/blender/windowmanager/wm_subwindow.h index 0e8c76a8eec..c0c492018ff 100644 --- a/source/blender/windowmanager/wm_subwindow.h +++ b/source/blender/windowmanager/wm_subwindow.h @@ -36,7 +36,6 @@ void wm_subwindows_free(wmWindow *win); int wm_subwindow_open(wmWindow *win, rcti *winrct); -void wm_subwindow_set(wmWindow *win, int swinid); /* set drawable */ void wm_subwindow_close(wmWindow *win, int swinid); int wm_subwindow_get(wmWindow *win); /* returns id */ -- cgit v1.2.3