Get the latest Blender, older versions, or experimental builds.
Stay up-to-date with the new features in the latest Blender releases.
Access production assets and knowledge from the open movies.
Documentation on the usage and features in Blender.
Latest development updates, by Blender developers.
Guidelines, release notes and development docs.
A platform to collect and share results of the Blender Benchmark.
The yearly event that brings the community together.
Support core development with a monthly contribution.
Perform a single donation with more payment options available.
/**
* blenlib/BKE_screen.h (mar-2001 nzc)
*
* $Id$
* ***** BEGIN GPL LICENSE BLOCK *****
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
* All rights reserved.
* The Original Code is: all of this file.
* Contributor(s): none yet.
* ***** END GPL LICENSE BLOCK *****
*/
#ifndef BKE_SCREEN_H
#define BKE_SCREEN_H
struct SpaceType;
struct ScrArea;
struct bScreen;
struct ARegion;
struct wmNotifier;
struct wmWindowManager;
struct ListBase;
/* spacetype has everything stored to get an editor working, it gets initialized via
spacetypes_init() in editors/area/spacetypes.c */
/* an editor in Blender is a combined ScrArea + SpaceType + SpaceData */
typedef struct SpaceType {
struct SpaceType *next, *prev;
char name[32]; /* for menus */
int spaceid; /* unique space identifier */
int iconid; /* icon lookup for menus */
/* calls init too */
struct SpaceLink *(*new)(void);
/* not free spacelink itself */
void (*free)(struct SpaceLink *);
/* init is to cope with internal contextual changes, adds handlers,
* sets screarea regions */
void (*init)(struct wmWindowManager *, struct ScrArea *);
/* refresh is for external bContext changes */
void (*refresh)(struct bContext *, struct ScrArea *);
/* after a spacedata copy, an init should result in exact same situation */
struct SpaceLink *(*duplicate)(struct SpaceLink *);
/* register operator types on startup */
void (*operatortypes)(void);
/* add default items to keymap */
void (*keymap)(struct wmWindowManager *);
/* read and write... */
} SpaceType;
/* region type gets allocated and freed in spacetype init/free callback */
/* data storage for regions is in space struct (also width/height of regions!) */
typedef struct ARegionType {
void (*init)(const struct bContext *, struct ARegion *); /* add handlers, stuff you only do once or on area/region changes */
void (*refresh)(const struct bContext *, struct ARegion *); /* refresh to match contextual changes */
void (*draw)(const struct bContext *, struct ARegion *); /* draw entirely, windowsize changes should be handled here */
void (*listener)(struct ARegion *, struct wmNotifier *);
} ARegionType;
void BKE_screen_area_free(struct ScrArea *sa);
void free_screen(struct bScreen *sc);
struct SpaceType *BKE_spacetype_from_id(int spaceid);
const struct ListBase *BKE_spacetypes_list(void);
void BKE_spacetype_register(struct SpaceType *st);
void BKE_spacedata_freelist(ListBase *lb);
void BKE_spacedata_copylist(ListBase *lb1, ListBase *lb2);
#endif