[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41507] trunk/blender/source/blender: utility function to find the biggest area: BKE_screen_find_big_area(...), was being done with static functions that were copied about.

Campbell Barton ideasman42 at gmail.com
Fri Nov 4 02:15:05 CET 2011


Revision: 41507
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41507
Author:   campbellbarton
Date:     2011-11-04 01:15:04 +0000 (Fri, 04 Nov 2011)
Log Message:
-----------
utility function to find the biggest area: BKE_screen_find_big_area(...), was being done with static functions that were copied about. 

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_screen.h
    trunk/blender/source/blender/blenkernel/intern/screen.c
    trunk/blender/source/blender/editors/interface/interface_ops.c
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/editors/render/render_view.c
    trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c

Modified: trunk/blender/source/blender/blenkernel/BKE_screen.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_screen.h	2011-11-04 00:27:18 UTC (rev 41506)
+++ trunk/blender/source/blender/blenkernel/BKE_screen.h	2011-11-04 01:15:04 UTC (rev 41507)
@@ -34,22 +34,23 @@
  */
 
 struct ARegion;
-struct bContext;
-struct bContextDataResult;
-struct bScreen;
+struct Header;
 struct ListBase;
+struct Menu;
 struct Panel;
-struct Header;
-struct Menu;
+struct Scene;
 struct ScrArea;
 struct SpaceType;
-struct Scene;
+struct View3D;
+struct bContext;
+struct bContextDataResult;
+struct bScreen;
+struct uiLayout;
+struct uiMenuItem;
+struct wmKeyConfig;
 struct wmNotifier;
 struct wmWindow;
 struct wmWindowManager;
-struct wmKeyConfig;
-struct uiLayout;
-struct uiMenuItem;
 
 #include "RNA_types.h"
 
@@ -239,6 +240,7 @@
 void	BKE_screen_area_free(struct ScrArea *sa);
 
 struct ARegion *BKE_area_find_region_type(struct ScrArea *sa, int type);
+struct ScrArea *BKE_screen_find_big_area(struct bScreen *sc, const int spacetype, const short min);
 
 void BKE_screen_view3d_sync(struct View3D *v3d, struct Scene *scene);
 void BKE_screen_view3d_scene_sync(struct bScreen *sc);

Modified: trunk/blender/source/blender/blenkernel/intern/screen.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/screen.c	2011-11-04 00:27:18 UTC (rev 41506)
+++ trunk/blender/source/blender/blenkernel/intern/screen.c	2011-11-04 01:15:04 UTC (rev 41507)
@@ -351,6 +351,29 @@
 	return NULL;
 }
 
+/* note, using this function is generally a last resort, you really want to be
+ * using the context when you can - campbell
+ * -1 for any type */
+struct ScrArea *BKE_screen_find_big_area(struct bScreen *sc, const int spacetype, const short min)
+{
+	ScrArea *sa, *big= NULL;
+	int size, maxsize= 0;
+
+	for(sa= sc->areabase.first; sa; sa= sa->next) {
+		if ((spacetype == -1) || sa->spacetype == spacetype) {
+			if (min >= sa->winx && min >= sa->winy) {
+				size= sa->winx*sa->winy;
+				if (size > maxsize) {
+					maxsize= size;
+					big= sa;
+				}
+			}
+		}
+	}
+
+	return big;
+}
+
 void BKE_screen_view3d_sync(struct View3D *v3d, struct Scene *scene)
 {
 	int bit;

Modified: trunk/blender/source/blender/editors/interface/interface_ops.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_ops.c	2011-11-04 00:27:18 UTC (rev 41506)
+++ trunk/blender/source/blender/editors/interface/interface_ops.c	2011-11-04 01:15:04 UTC (rev 41507)
@@ -43,6 +43,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_context.h"
+#include "BKE_screen.h"
 #include "BKE_global.h"
 #include "BKE_text.h" /* for UI_OT_reports_to_text */
 #include "BKE_report.h"
@@ -577,24 +578,6 @@
 
 /* editsource operator component */
 
-static ScrArea *biggest_text_view(bContext *C)
-{
-	bScreen *sc= CTX_wm_screen(C);
-	ScrArea *sa, *big= NULL;
-	int size, maxsize= 0;
-
-	for(sa= sc->areabase.first; sa; sa= sa->next) {
-		if(sa->spacetype==SPACE_TEXT) {
-			size= sa->winx * sa->winy;
-			if(size > maxsize) {
-				maxsize= size;
-				big= sa;
-			}
-		}
-	}
-	return big;
-}
-
 static int editsource_text_edit(bContext *C, wmOperator *op,
                                 char filepath[240], int line)
 {
@@ -619,7 +602,7 @@
 	else {
 		/* naughty!, find text area to set, not good behavior
 		 * but since this is a dev tool lets allow it - campbell */
-		ScrArea *sa= biggest_text_view(C);
+		ScrArea *sa= BKE_screen_find_big_area(CTX_wm_screen(C), SPACE_TEXT, 0);
 		if(sa) {
 			SpaceText *st= sa->spacedata.first;
 			st->text= text;

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2011-11-04 00:27:18 UTC (rev 41506)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2011-11-04 01:15:04 UTC (rev 41507)
@@ -54,6 +54,7 @@
 #include "BLI_math_geom.h"
 
 #include "BKE_blender.h"
+#include "BKE_screen.h"
 #include "BKE_context.h"
 #include "BKE_global.h"
 #include "BKE_image.h"
@@ -1202,24 +1203,6 @@
 	return G.afbreek;
 }
 
-static ScrArea *biggest_image_area(bScreen *screen)
-{
-	ScrArea *sa, *big= NULL;
-	int size, maxsize= 0;
-
-	for(sa= screen->areabase.first; sa; sa= sa->next) {
-		if(sa->spacetype==SPACE_IMAGE) {
-			size= sa->winx*sa->winy;
-			if(sa->winx > 10 && sa->winy > 10 && size > maxsize) {
-				maxsize= size;
-				big= sa;
-			}
-		}
-	}
-	return big;
-}
-
-
 typedef struct BakeRender {
 	Render *re;
 	Main *main;
@@ -1270,7 +1253,7 @@
 	/* get editmode results */
 	ED_object_exit_editmode(C, 0);  /* 0 = does not exit editmode */
 
-	bkr->sa= biggest_image_area(CTX_wm_screen(C)); /* can be NULL */
+	bkr->sa= BKE_screen_find_big_area(CTX_wm_screen(C), SPACE_IMAGE, 10); /* can be NULL */
 	bkr->main= CTX_data_main(C);
 	bkr->scene= scene;
 	bkr->actob= (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL;

Modified: trunk/blender/source/blender/editors/render/render_view.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_view.c	2011-11-04 00:27:18 UTC (rev 41506)
+++ trunk/blender/source/blender/editors/render/render_view.c	2011-11-04 01:15:04 UTC (rev 41507)
@@ -58,6 +58,7 @@
 
 /* returns biggest area that is not uv/image editor. Note that it uses buttons */
 /* window as the last possible alternative.									   */
+/* would use BKE_screen_find_big_area(...) but this is too specific            */
 static ScrArea *biggest_non_image_area(bContext *C)
 {
 	bScreen *sc= CTX_wm_screen(C);
@@ -85,22 +86,6 @@
 	return big;
 }
 
-static ScrArea *biggest_area(bContext *C)
-{
-	bScreen *sc= CTX_wm_screen(C);
-	ScrArea *sa, *big= NULL;
-	int size, maxsize= 0;
-
-	for(sa= sc->areabase.first; sa; sa= sa->next) {
-		size= sa->winx*sa->winy;
-		if(size > maxsize) {
-			maxsize= size;
-			big= sa;
-		}
-	}
-	return big;
-}
-
 static ScrArea *find_area_showing_r_result(bContext *C, wmWindow **win)
 {
 	wmWindowManager *wm= CTX_wm_manager(C);
@@ -206,7 +191,7 @@
 			}
 			else {
 				/* use any area of decent size */
-				sa= biggest_area(C);
+				sa= BKE_screen_find_big_area(CTX_wm_screen(C), -1, 0);
 				if(sa->spacetype!=SPACE_IMAGE) {
 					// XXX newspace(sa, SPACE_IMAGE);
 					sima= sa->spacedata.first;

Modified: trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c	2011-11-04 00:27:18 UTC (rev 41506)
+++ trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c	2011-11-04 01:15:04 UTC (rev 41507)
@@ -212,24 +212,6 @@
 	}
 }
 
-static ScrArea *biggest_view3d(bContext *C)
-{
-	bScreen *sc= CTX_wm_screen(C);
-	ScrArea *sa, *big= NULL;
-	int size, maxsize= 0;
-
-	for(sa= sc->areabase.first; sa; sa= sa->next) {
-		if(sa->spacetype==SPACE_VIEW3D) {
-			size= sa->winx * sa->winy;
-			if(size > maxsize) {
-				maxsize= size;
-				big= sa;
-			}
-		}
-	}
-	return big;
-}
-
 int WM_init_game(bContext *C)
 {
 	wmWindowManager *wm= CTX_wm_manager(C);
@@ -252,7 +234,7 @@
 	if(win)
 		CTX_wm_window_set(C, win);
 
-	sa = biggest_view3d(C);
+	sa = BKE_screen_find_big_area(CTX_wm_screen(C), SPACE_VIEW3D, 0);
 	ar= BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
 
 	// if we have a valid 3D view




More information about the Bf-blender-cvs mailing list