[Bf-blender-cvs] [4ccddec] wiggly-widgets: Cleanup: Move functions to proper place; naming

Julian Eisel noreply at git.blender.org
Thu Mar 3 18:43:11 CET 2016


Commit: 4ccddec767484c2794b5c6b323a32c91d41b76f0
Author: Julian Eisel
Date:   Thu Mar 3 18:42:14 2016 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB4ccddec767484c2794b5c6b323a32c91d41b76f0

Cleanup: Move functions to proper place; naming

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

M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/widgets/intern/wm_widget.c
M	source/blender/windowmanager/widgets/intern/wm_widgetmap.c
M	source/blender/windowmanager/widgets/wm_widget_wmapi.h

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

diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 56c0119..9cc9af5 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2116,11 +2116,11 @@ static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers
 				/* handle widget highlighting */
 				if (event->type == MOUSEMOVE && !wm_widgetmap_get_active_widget(wmap)) {
 					if (wm_widgetmap_is_3d(wmap)) {
-						widget = wm_widget_find_highlighted_3D(wmap, C, event, &part);
+						widget = wm_widgetmap_find_highlighted_3D(wmap, C, event, &part);
 						wm_widgetmap_set_highlighted_widget(wmap, C, widget, part);
 					}
 					else {
-						widget = wm_widget_find_highlighted(wmap, C, event, &part);
+						widget = wm_widgetmap_find_highlighted_widget(wmap, C, event, &part);
 						wm_widgetmap_set_highlighted_widget(wmap, C, widget, part);
 					}
 				}
diff --git a/source/blender/windowmanager/widgets/intern/wm_widget.c b/source/blender/windowmanager/widgets/intern/wm_widget.c
index 71ea2fe..e60535d 100644
--- a/source/blender/windowmanager/widgets/intern/wm_widget.c
+++ b/source/blender/windowmanager/widgets/intern/wm_widget.c
@@ -38,7 +38,6 @@
 #include "ED_view3d.h"
 
 #include "GL/glew.h"
-#include "GPU_select.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -399,111 +398,3 @@ void wm_widget_calculate_scale(wmWidget *widget, const bContext *C)
 	widget->scale = scale * widget->user_scale;
 }
 
-static void widget_find_active_3D_loop(const bContext *C, ListBase *visible_widgets)
-{
-	int selectionbase = 0;
-	wmWidget *widget;
-
-	for (LinkData *link = visible_widgets->first; link; link = link->next) {
-		widget = link->data;
-		/* pass the selection id shifted by 8 bits. Last 8 bits are used for selected widget part id */
-		widget->render_3d_intersection(C, widget, selectionbase << 8);
-
-		selectionbase++;
-	}
-}
-
-static int wm_widget_find_highlighted_3D_intern(
-        ListBase *visible_widgets, const bContext *C, const wmEvent *event, const float hotspot)
-{
-	ScrArea *sa = CTX_wm_area(C);
-	ARegion *ar = CTX_wm_region(C);
-	View3D *v3d = sa->spacedata.first;
-	RegionView3D *rv3d = ar->regiondata;
-	rctf rect, selrect;
-	GLuint buffer[64];      // max 4 items per select, so large enuf
-	short hits;
-	const bool do_passes = GPU_select_query_check_active();
-
-	extern void view3d_winmatrix_set(ARegion *ar, View3D *v3d, rctf *rect);
-
-
-	rect.xmin = event->mval[0] - hotspot;
-	rect.xmax = event->mval[0] + hotspot;
-	rect.ymin = event->mval[1] - hotspot;
-	rect.ymax = event->mval[1] + hotspot;
-
-	selrect = rect;
-
-	view3d_winmatrix_set(ar, v3d, &rect);
-	mul_m4_m4m4(rv3d->persmat, rv3d->winmat, rv3d->viewmat);
-
-	if (do_passes)
-		GPU_select_begin(buffer, ARRAY_SIZE(buffer), &selrect, GPU_SELECT_NEAREST_FIRST_PASS, 0);
-	else
-		GPU_select_begin(buffer, ARRAY_SIZE(buffer), &selrect, GPU_SELECT_ALL, 0);
-	/* do the drawing */
-	widget_find_active_3D_loop(C, visible_widgets);
-
-	hits = GPU_select_end();
-
-	if (do_passes) {
-		GPU_select_begin(buffer, ARRAY_SIZE(buffer), &selrect, GPU_SELECT_NEAREST_SECOND_PASS, hits);
-		widget_find_active_3D_loop(C, visible_widgets);
-		GPU_select_end();
-	}
-
-	view3d_winmatrix_set(ar, v3d, NULL);
-	mul_m4_m4m4(rv3d->persmat, rv3d->winmat, rv3d->viewmat);
-
-	return hits > 0 ? buffer[3] : -1;
-}
-
-static void wm_prepare_visible_widgets_3D(wmWidgetMap *wmap, ListBase *visible_widgets, bContext *C)
-{
-	wmWidget *widget;
-
-	for (wmWidgetGroup *wgroup = wmap->widgetgroups.first; wgroup; wgroup = wgroup->next) {
-		if (!wgroup->type->poll || wgroup->type->poll(C, wgroup->type)) {
-			for (widget = wgroup->widgets.first; widget; widget = widget->next) {
-				if (widget->render_3d_intersection && (widget->flag & WM_WIDGET_HIDDEN) == 0) {
-					BLI_addhead(visible_widgets, BLI_genericNodeN(widget));
-				}
-			}
-		}
-	}
-}
-
-wmWidget *wm_widget_find_highlighted_3D(wmWidgetMap *wmap, bContext *C, const wmEvent *event, unsigned char *part)
-{
-	wmWidget *result = NULL;
-	ListBase visible_widgets = {0};
-	const float hotspot = 14.0f;
-	int ret;
-
-	wm_prepare_visible_widgets_3D(wmap, &visible_widgets, C);
-
-	*part = 0;
-	/* set up view matrices */
-	view3d_operator_needs_opengl(C);
-
-	ret = wm_widget_find_highlighted_3D_intern(&visible_widgets, C, event, 0.5f * hotspot);
-
-	if (ret != -1) {
-		LinkData *link;
-		int retsec;
-		retsec = wm_widget_find_highlighted_3D_intern(&visible_widgets, C, event, 0.2f * hotspot);
-
-		if (retsec != -1)
-			ret = retsec;
-
-		link = BLI_findlink(&visible_widgets, ret >> 8);
-		*part = ret & 255;
-		result = link->data;
-	}
-
-	BLI_freelistN(&visible_widgets);
-
-	return result;
-}
-
diff --git a/source/blender/windowmanager/widgets/intern/wm_widgetmap.c b/source/blender/windowmanager/widgets/intern/wm_widgetmap.c
index 310522d..b136200 100644
--- a/source/blender/windowmanager/widgets/intern/wm_widgetmap.c
+++ b/source/blender/windowmanager/widgets/intern/wm_widgetmap.c
@@ -32,12 +32,15 @@
 #include "BKE_context.h"
 
 #include "BLI_listbase.h"
+#include "BLI_math.h"
 #include "BLI_string.h"
 #include "BLI_ghash.h"
 
 #include "ED_screen.h"
+#include "ED_view3d.h"
 
 #include "GL/glew.h"
+#include "GPU_select.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -341,6 +344,114 @@ void WM_widgetmap_widgets_draw(
 	}
 }
 
+static void widget_find_active_3D_loop(const bContext *C, ListBase *visible_widgets)
+{
+	int selectionbase = 0;
+	wmWidget *widget;
+
+	for (LinkData *link = visible_widgets->first; link; link = link->next) {
+		widget = link->data;
+		/* pass the selection id shifted by 8 bits. Last 8 bits are used for selected widget part id */
+		widget->render_3d_intersection(C, widget, selectionbase << 8);
+
+		selectionbase++;
+	}
+}
+
+static int widget_find_highlighted_3D_intern(
+        ListBase *visible_widgets, const bContext *C, const wmEvent *event, const float hotspot)
+{
+	ScrArea *sa = CTX_wm_area(C);
+	ARegion *ar = CTX_wm_region(C);
+	View3D *v3d = sa->spacedata.first;
+	RegionView3D *rv3d = ar->regiondata;
+	rctf rect, selrect;
+	GLuint buffer[64];      // max 4 items per select, so large enuf
+	short hits;
+	const bool do_passes = GPU_select_query_check_active();
+
+	extern void view3d_winmatrix_set(ARegion *ar, View3D *v3d, rctf *rect);
+
+
+	rect.xmin = event->mval[0] - hotspot;
+	rect.xmax = event->mval[0] + hotspot;
+	rect.ymin = event->mval[1] - hotspot;
+	rect.ymax = event->mval[1] + hotspot;
+
+	selrect = rect;
+
+	view3d_winmatrix_set(ar, v3d, &rect);
+	mul_m4_m4m4(rv3d->persmat, rv3d->winmat, rv3d->viewmat);
+
+	if (do_passes)
+		GPU_select_begin(buffer, ARRAY_SIZE(buffer), &selrect, GPU_SELECT_NEAREST_FIRST_PASS, 0);
+	else
+		GPU_select_begin(buffer, ARRAY_SIZE(buffer), &selrect, GPU_SELECT_ALL, 0);
+	/* do the drawing */
+	widget_find_active_3D_loop(C, visible_widgets);
+
+	hits = GPU_select_end();
+
+	if (do_passes) {
+		GPU_select_begin(buffer, ARRAY_SIZE(buffer), &selrect, GPU_SELECT_NEAREST_SECOND_PASS, hits);
+		widget_find_active_3D_loop(C, visible_widgets);
+		GPU_select_end();
+	}
+
+	view3d_winmatrix_set(ar, v3d, NULL);
+	mul_m4_m4m4(rv3d->persmat, rv3d->winmat, rv3d->viewmat);
+
+	return hits > 0 ? buffer[3] : -1;
+}
+
+static void widgets_prepare_visible_3D(wmWidgetMap *wmap, ListBase *visible_widgets, bContext *C)
+{
+	wmWidget *widget;
+
+	for (wmWidgetGroup *wgroup = wmap->widgetgroups.first; wgroup; wgroup = wgroup->next) {
+		if (!wgroup->type->poll || wgroup->type->poll(C, wgroup->type)) {
+			for (widget = wgroup->widgets.first; widget; widget = widget->next) {
+				if (widget->render_3d_intersection && (widget->flag & WM_WIDGET_HIDDEN) == 0) {
+					BLI_addhead(visible_widgets, BLI_genericNodeN(widget));
+				}
+			}
+		}
+	}
+}
+
+wmWidget *wm_widgetmap_find_highlighted_3D(wmWidgetMap *wmap, bContext *C, const wmEvent *event, unsigned char *part)
+{
+	wmWidget *result = NULL;
+	ListBase visible_widgets = {0};
+	const float hotspot = 14.0f;
+	int ret;
+
+	widgets_prepare_visible_3D(wmap, &visible_widgets, C);
+
+	*part = 0;
+	/* set up view matrices */
+	view3d_operator_needs_opengl(C);
+
+	ret = widget_find_highlighted_3D_intern(&visible_widgets, C, event, 0.5f * hotspot);
+
+	if (ret != -1) {
+		LinkData *link;
+		int retsec;
+		retsec = widget_find_highlighted_3D_intern(&visible_widgets, C, event, 0.2f * hotspot);
+
+		if (retsec != -1)
+			ret = retsec;
+
+		link = BLI_findlink(&visible_widgets, ret >> 8);
+		*part = ret & 255;
+		result = link->data;
+	}
+
+	BLI_freelistN(&visible_widgets);
+
+	return result;
+}
+
 void WM_widgetmaps_add_handlers(ARegion *ar)
 {
 	for (wmWidgetMap *wmap = ar->widgetmaps.first; wmap; wmap = wmap->next) {
@@ -525,7 +636,7 @@ void wm_widgetmap_handler_context(bContext *C, wmEventHandler *handler)
 }
 
 
-wmWidget *wm_widget_find_highlighted(wmWidgetMap *wmap, bContext *C, const wmEvent *event, unsigned char *part)
+wmWidget *wm_widgetmap_find_highlighted_widget(wmWidgetMap *wmap, bContext *C, const wmEvent *event, unsigned char *part)
 {
 	wmWidget *widget;
 
diff --git a/source/blender/windowmanager/widgets/wm_widget_wmapi.h b/source/blender/windowmanager/widgets/wm_widget_wmapi.h
index 1d6dc00..8489b03 100644
--- a/source/blender/windowmanager/widgets/wm_widget_wmapi.h
+++ b/source/blender/windowmanager/widgets/wm_widget_wmapi.h
@@ -145,9 +145,9 @@ void wm_widgetmaps_handled_modal_update(
         const struct wmOperatorType *ot);
 void wm_widgetmap_handler_context(bContext *C, struct wmEventHandler *handler);
 
-wmWidget *wm_widget_find_highlighted_3D(struct wmWidgetMap *wmap, bContext *C,
+wmWidget *wm_widgetmap_find_highlighted_3D(struct wmWidgetMap *wmap, bContext *C,
                                         const struct wmEvent *event, unsigned char *part);
-wmWidget *wm_widget_find_highlighted(struct wmWidgetMap *wmap, bContext *C,
+wmWidget *wm_widgetmap_find_highlighted_widget(struct wmWidgetMap *wmap, bContext *C,
                                      const struct wmEvent *event, unsigned char *part);
 void      wm_widgetmap_set_highlighted_widget(struct wmWidgetMap *wmap, bContext *C,
                                               wmWidget *widget, unsigned char part

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list