diff options
author | Ton Roosendaal <ton@blender.org> | 2009-01-09 18:04:52 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-01-09 18:04:52 +0300 |
commit | 2fe5005bbb6b81831eba33f3d6a93c4719b912a0 (patch) | |
tree | 9acfe689896396844f5466bafab10cfa91e47ab6 /source/blender/editors/space_view3d/view3d_draw.c | |
parent | c7fa55eebdd74812c5bd993e8ec54ec5b04197f2 (diff) |
2.5
New: Custom region draw callbacks.
For Martin: an example is now in space_view3d/view3d_edit.c
On middlemouse rotate view, it draws a small square in center.
It works likes this:
#include "ED_space_api.h"
handle= ED_region_draw_cb_activate(region->type, drawfunc, type)
and to stop it:
ED_region_draw_cb_exit(region->type, handle)
drawfunc is of type (const bContext *C, ARegion *ar)
currently it gets called only as type REGION_DRAW_POST, later we
can add more (PRE, POST_XRAY, POST_2D, etc).
For correct usage, these calls should return leaving view transform
unaltered.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_draw.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 48fb6d76703..4fc64782fe8 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -51,6 +51,7 @@ #include "BLI_rand.h" #include "BKE_anim.h" +#include "BKE_context.h" #include "BKE_customdata.h" #include "BKE_image.h" #include "BKE_ipo.h" @@ -76,6 +77,7 @@ #include "ED_keyframing.h" #include "ED_mesh.h" #include "ED_screen.h" +#include "ED_space_api.h" #include "ED_util.h" #include "ED_types.h" @@ -1835,10 +1837,11 @@ static CustomDataMask get_viewedit_datamask(bScreen *screen) return mask; } - - -void drawview3dspace(bScreen *screen, Scene *scene, ARegion *ar, View3D *v3d) +void view3d_main_area_draw(const bContext *C, ARegion *ar) { + Scene *scene= CTX_data_scene(C); + ScrArea *sa= CTX_wm_area(C); + View3D *v3d= sa->spacedata.first; /* XXX get from region */ Scene *sce; Base *base; Object *ob; @@ -1846,7 +1849,7 @@ void drawview3dspace(bScreen *screen, Scene *scene, ARegion *ar, View3D *v3d) Object *obact = OBACT; /* from now on all object derived meshes check this */ - v3d->customdata_mask= get_viewedit_datamask(screen); + v3d->customdata_mask= get_viewedit_datamask(CTX_wm_screen(C)); /* update all objects, ipos, matrices, displists, etc. Flags set by depgraph or manual, no layer check here, gets correct flushed */ @@ -1999,12 +2002,7 @@ void drawview3dspace(bScreen *screen, Scene *scene, ARegion *ar, View3D *v3d) view3d_update_depths(ar, v3d); } - if(G.moving) { -// BIF_drawConstraint(); -// if(obedit || (G.f & G_PARTICLEEDIT)) -// BIF_drawPropCircle(); // only editmode and particles have proportional edit -// BIF_drawSnap(); - } + ED_region_draw_cb_draw(C, ar, REGION_DRAW_POST); // REEB_draw(); |