Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-11-04 05:15:04 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-11-04 05:15:04 +0400
commit2d787e6e015e54e760086266415d66cad5d1edec (patch)
tree61371a53d945e133aba83063e7f32f47b8637e89 /source/blender/blenkernel
parent29575c9ac8c08ae264f06b6ce34fa606bb09bdab (diff)
utility function to find the biggest area: BKE_screen_find_big_area(...), was being done with static functions that were copied about.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_screen.h20
-rw-r--r--source/blender/blenkernel/intern/screen.c23
2 files changed, 34 insertions, 9 deletions
diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h
index 5b6d7e3cd96..77a351d534e 100644
--- a/source/blender/blenkernel/BKE_screen.h
+++ b/source/blender/blenkernel/BKE_screen.h
@@ -34,22 +34,23 @@
*/
struct ARegion;
-struct bContext;
-struct bContextDataResult;
-struct bScreen;
-struct ListBase;
-struct Panel;
struct Header;
+struct ListBase;
struct Menu;
+struct Panel;
+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_area_region_free(struct SpaceType *st, struct ARegion *ar);
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);
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index 02e6fe945f3..b7f49bbab47 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -351,6 +351,29 @@ ARegion *BKE_area_find_region_type(ScrArea *sa, int type)
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;