Commit: 60927ae2e0f394a0efa9d2061caa624a6690ab13
Author: Antony Riakiotakis
Date:   Mon Feb 9 17:52:39 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB60927ae2e0f394a0efa9d2061caa624a6690ab13

WIP code to use in scene drawing for widgets.

===================================================================

M       source/blender/editors/space_node/node_draw.c
M       source/blender/editors/space_sequencer/sequencer_draw.c
M       source/blender/editors/space_view3d/view3d_draw.c
M       source/blender/windowmanager/WM_api.h
M       source/blender/windowmanager/intern/wm_widgets.c
M       source/blender/windowmanager/wm.h

===================================================================

diff --git a/source/blender/editors/space_node/node_draw.c 
b/source/blender/editors/space_node/node_draw.c
index 85b2186..6298ac2 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -1354,7 +1354,7 @@ void drawnodespace(const bContext *C, ARegion *ar)
                        glaDefine2DArea(&ar->winrct);
                        wmOrtho2_pixelspace(ar->winx, ar->winy);
 
-                       WM_widgets_draw(C, ar->widgetmaps.first);
+                       WM_widgets_draw(C, ar->widgetmaps.first, false);
 
                        glMatrixMode(GL_PROJECTION);
                        glPopMatrix();
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c 
b/source/blender/editors/space_sequencer/sequencer_draw.c
index 69efffe..f899867 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -1582,7 +1582,7 @@ void draw_timeline_seq(const bContext *C, ARegion *ar)
        UI_view2d_view_restore(C);
        
        /* finally draw any widgets here */
-       WM_widgets_draw(C, ar->widgetmaps.first);       
+       WM_widgets_draw(C, ar->widgetmaps.first, false);
 
        /* scrollers */
        unit = (sseq->flag & SEQ_DRAWFRAMES) ? V2D_UNIT_FRAMES : 
V2D_UNIT_SECONDS;
diff --git a/source/blender/editors/space_view3d/view3d_draw.c 
b/source/blender/editors/space_view3d/view3d_draw.c
index 4a6718e..b04188f 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -3615,9 +3615,9 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
        if (v3d->drawtype == OB_RENDER)
                view3d_main_area_draw_engine(C, scene, ar, v3d, clip_border, 
&border_rect);
        
-       view3d_main_area_setup_view(scene, v3d, ar, NULL, NULL);        
+       view3d_main_area_setup_view(scene, v3d, ar, NULL, NULL);
        glClear(GL_DEPTH_BUFFER_BIT);
-       WM_widgets_draw(C, ar->widgetmaps.first);
+       WM_widgets_draw(C, ar->widgetmaps.first, false);
        BIF_draw_manipulator(C);
        ED_region_pixelspace(ar);
        
diff --git a/source/blender/windowmanager/WM_api.h 
b/source/blender/windowmanager/WM_api.h
index abd9260..a9e7807 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -478,13 +478,14 @@ struct wmWidget *WM_widget_new(void (*draw)(struct 
wmWidget *, const struct bCon
 
 void WM_widget_property(struct wmWidget *, int slot, struct PointerRNA *ptr, 
const char *propname);
 struct PointerRNA *WM_widget_operator(struct wmWidget *, const char *opname);
-void WM_widgets_draw(const struct bContext *C, struct wmWidgetMap *wmap);
+void WM_widgets_draw(const struct bContext *C, struct wmWidgetMap *wmap, bool 
in_scene);
 void WM_event_add_area_widgetmap_handlers(struct ARegion *ar);
 void WM_modal_handler_attach_widgetgroup(struct bContext *C, struct 
wmEventHandler *handler, struct wmWidgetGroupType *wgrouptype, struct 
wmOperator *op);
 
 void WM_widget_set_origin(struct wmWidget *widget, float origin[3]);
 void WM_widget_set_3d_scale(struct wmWidget *widget, bool scale);
 void WM_widget_set_draw_on_hover_only(struct wmWidget *widget, bool draw);
+void WM_widget_set_scene_depth(struct wmWidget *widget, bool scene);
 void WM_widget_set_scale(struct wmWidget *widget, float scale);
 
 struct wmWidgetMapType *WM_widgetmaptype_find(const char *idname, int spaceid, 
int regionid, bool is_3d, bool create);
diff --git a/source/blender/windowmanager/intern/wm_widgets.c 
b/source/blender/windowmanager/intern/wm_widgets.c
index bb6e6c5..cd72945 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -257,7 +257,7 @@ static bool widgets_compare(wmWidget *widget, wmWidget 
*widget2)
 }
 
 
-void WM_widgets_draw(const bContext *C, wmWidgetMap *wmap)
+void WM_widgets_draw(const bContext *C, wmWidgetMap *wmap, bool in_scene)
 {
        wmWidget *widget;
        bool use_lighting;
@@ -285,7 +285,7 @@ void WM_widgets_draw(const bContext *C, wmWidgetMap *wmap)
 
        widget = wmap->active_widget;
 
-       if (widget) {
+       if (widget && in_scene == ((widget->flag & WM_WIDGET_SCENE_DEPTH)!= 0)) 
{
                widget_calculate_scale(widget, C);
                /* notice that we don't update the widgetgroup, widget is now 
on its own, it should have all
                 * relevant data to update itself */
@@ -435,6 +435,17 @@ void WM_widget_set_draw_on_hover_only(struct wmWidget 
*widget, bool draw)
        }
 }
 
+void WM_widget_set_scene_depth(struct wmWidget *widget, bool scene)
+{
+       if (scene) {
+               widget->flag |= WM_WIDGET_SCENE_DEPTH;
+       }
+       else {
+               widget->flag &= ~WM_WIDGET_SCENE_DEPTH;
+       }
+}
+
+
 void WM_widget_set_scale(struct wmWidget *widget, float scale)
 {
        widget->user_scale = scale;
diff --git a/source/blender/windowmanager/wm.h 
b/source/blender/windowmanager/wm.h
index 1509509..811d5ca 100644
--- a/source/blender/windowmanager/wm.h
+++ b/source/blender/windowmanager/wm.h
@@ -111,12 +111,13 @@ typedef struct wmWidget {
 /* wmWidget->flag */
 enum widgetflags {
        /* states */
-       WM_WIDGET_HIGHLIGHT  = (1 << 0),
-       WM_WIDGET_ACTIVE     = (1 << 1),
+       WM_WIDGET_HIGHLIGHT   = (1 << 0),
+       WM_WIDGET_ACTIVE      = (1 << 1),
 
-       WM_WIDGET_DRAW_HOVER = (1 << 2),
+       WM_WIDGET_DRAW_HOVER  = (1 << 2),
 
-       WM_WIDGET_SCALE_3D   = (1 << 3),
+       WM_WIDGET_SCALE_3D    = (1 << 3),
+       WM_WIDGET_SCENE_DEPTH = (1 << 4) /* widget is depth culled with scene 
objects*/
 };
 
 extern void wm_close_and_free(bContext *C, wmWindowManager *);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to