Blender  V2.93
Functions
screen_edit.c File Reference
#include <math.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_userdef_types.h"
#include "DNA_workspace_types.h"
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_icons.h"
#include "BKE_image.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_scene.h"
#include "BKE_screen.h"
#include "BKE_sound.h"
#include "BKE_workspace.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_clip.h"
#include "ED_node.h"
#include "ED_screen.h"
#include "ED_screen_types.h"
#include "UI_interface.h"
#include "WM_message.h"
#include "DEG_depsgraph_query.h"
#include "screen_intern.h"

Go to the source code of this file.

Functions

static ScrAreascreen_addarea_ex (ScrAreaMap *area_map, ScrVert *bottom_left, ScrVert *top_left, ScrVert *top_right, ScrVert *bottom_right, short spacetype)
 
static ScrAreascreen_addarea (bScreen *screen, ScrVert *left_bottom, ScrVert *left_top, ScrVert *right_top, ScrVert *right_bottom, short spacetype)
 
static void screen_delarea (bContext *C, bScreen *screen, ScrArea *area)
 
ScrAreaarea_split (const wmWindow *win, bScreen *screen, ScrArea *area, char dir, float fac, int merge)
 
bScreenscreen_add (Main *bmain, const char *name, const rcti *rect)
 
void screen_data_copy (bScreen *to, bScreen *from)
 
void screen_new_activate_prepare (const wmWindow *win, bScreen *screen_new)
 
int area_getorientation (ScrArea *area, ScrArea *sb)
 
static void screen_verts_halign (const wmWindow *win, const bScreen *screen, const short from_x, const short to_x)
 
static void screen_verts_valign (const wmWindow *win, const bScreen *screen, const short from_y, const short to_y)
 
static void screen_areas_align (bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2, const int dir)
 
int screen_area_join (bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
 
static void region_cursor_set_ex (wmWindow *win, ScrArea *area, ARegion *region, bool swin_changed)
 
static void region_cursor_set (wmWindow *win, bool swin_changed)
 
void ED_screen_do_listen (bContext *C, wmNotifier *note)
 
void ED_screen_refresh (wmWindowManager *wm, wmWindow *win)
 
void ED_screens_init (Main *bmain, wmWindowManager *wm)
 
void ED_screen_ensure_updated (wmWindowManager *wm, wmWindow *win, bScreen *screen)
 
void ED_region_remove (bContext *C, ScrArea *area, ARegion *region)
 
void ED_region_exit (bContext *C, ARegion *region)
 
void ED_area_exit (bContext *C, ScrArea *area)
 
void ED_screen_exit (bContext *C, wmWindow *window, bScreen *screen)
 
static void screen_cursor_set (wmWindow *win, const int xy[2])
 
void ED_screen_set_active_region (bContext *C, wmWindow *win, const int xy[2])
 
int ED_screen_area_active (const bContext *C)
 
static ScrAreascreen_area_create_with_geometry (ScrAreaMap *area_map, const rcti *rect, short spacetype)
 
static void screen_area_set_geometry_rect (ScrArea *area, const rcti *rect)
 
static void screen_global_area_refresh (wmWindow *win, bScreen *screen, eSpace_Type space_type, GlobalAreaAlign align, const rcti *rect, const short height_cur, const short height_min, const short height_max)
 
static int screen_global_header_size (void)
 
static void screen_global_topbar_area_refresh (wmWindow *win, bScreen *screen)
 
static void screen_global_statusbar_area_refresh (wmWindow *win, bScreen *screen)
 
void ED_screen_global_areas_sync (wmWindow *win)
 
void ED_screen_global_areas_refresh (wmWindow *win)
 
void screen_change_prepare (bScreen *screen_old, bScreen *screen_new, Main *bmain, bContext *C, wmWindow *win)
 
void screen_change_update (bContext *C, wmWindow *win, bScreen *screen)
 
bool ED_screen_change (bContext *C, bScreen *screen)
 Change the active screen. More...
 
static void screen_set_3dview_camera (Scene *scene, ViewLayer *view_layer, ScrArea *area, View3D *v3d)
 
void ED_screen_scene_change (bContext *C, wmWindow *win, Scene *scene)
 
ScrAreaED_screen_full_newspace (bContext *C, ScrArea *area, int type)
 
void ED_screen_full_prevspace (bContext *C, ScrArea *area)
 
void ED_screen_restore_temp_type (bContext *C, ScrArea *area)
 
void ED_screen_full_restore (bContext *C, ScrArea *area)
 
static bScreenscreen_state_to_nonnormal (bContext *C, wmWindow *win, ScrArea *toggle_area, int state)
 
ScrAreaED_screen_state_maximized_create (bContext *C)
 
ScrAreaED_screen_state_toggle (bContext *C, wmWindow *win, ScrArea *area, const short state)
 
ScrAreaED_screen_temp_space_open (bContext *C, const char *title, int x, int y, int sizex, int sizey, eSpace_Type space_type, int display_type, bool dialog)
 
void ED_refresh_viewport_fps (bContext *C)
 
void ED_screen_animation_timer (bContext *C, int redraws, int sync, int enable)
 
static ARegiontime_top_left_3dwindow (bScreen *screen)
 
void ED_screen_animation_timer_update (bScreen *screen, int redraws)
 
void ED_update_for_newframe (Main *bmain, Depsgraph *depsgraph)
 
bool ED_screen_stereo3d_required (const bScreen *screen, const Scene *scene)
 
SceneED_screen_scene_find_with_window (const bScreen *screen, const wmWindowManager *wm, struct wmWindow **r_window)
 
ScrAreaED_screen_area_find_with_spacedata (const bScreen *screen, const SpaceLink *sl, const bool only_visible)
 
SceneED_screen_scene_find (const bScreen *screen, const wmWindowManager *wm)
 
wmWindowED_screen_window_find (const bScreen *screen, const wmWindowManager *wm)
 

Function Documentation

◆ area_getorientation()

int area_getorientation ( ScrArea area,
ScrArea sb 
)

◆ area_split()

ScrArea* area_split ( const wmWindow win,
bScreen screen,
ScrArea area,
char  dir,
float  fac,
int  merge 
)

◆ ED_area_exit()

void ED_area_exit ( bContext C,
ScrArea area 
)

◆ ED_refresh_viewport_fps()

void ED_refresh_viewport_fps ( bContext C)

◆ ED_region_exit()

void ED_region_exit ( bContext C,
ARegion region 
)

◆ ED_region_remove()

void ED_region_remove ( bContext C,
ScrArea area,
ARegion region 
)

Utility to exit and free an area-region. Screen level regions (menus/popups) need to be treated slightly differently, see ui_region_temp_remove().

Definition at line 563 of file screen_edit.c.

References blender::compositor::area(), BKE_area_region_free(), BLI_freelinkN(), C, and ED_region_exit().

Referenced by file_ensure_valid_region_state(), and region_quadview_exec().

◆ ED_screen_animation_timer()

void ED_screen_animation_timer ( bContext C,
int  redraws,
int  sync,
int  enable 
)

◆ ED_screen_animation_timer_update()

void ED_screen_animation_timer_update ( bScreen screen,
int  redraws 
)

◆ ED_screen_area_active()

int ED_screen_area_active ( const bContext C)

◆ ED_screen_area_find_with_spacedata()

ScrArea* ED_screen_area_find_with_spacedata ( const bScreen screen,
const SpaceLink sl,
const bool  only_visible 
)

◆ ED_screen_change()

bool ED_screen_change ( bContext C,
bScreen screen 
)

◆ ED_screen_do_listen()

void ED_screen_do_listen ( bContext C,
wmNotifier note 
)

◆ ED_screen_ensure_updated()

void ED_screen_ensure_updated ( wmWindowManager wm,
wmWindow win,
bScreen screen 
)

Definition at line 552 of file screen_edit.c.

References bScreen::do_refresh, and ED_screen_refresh().

Referenced by wm_draw_update().

◆ ED_screen_exit()

void ED_screen_exit ( bContext C,
wmWindow window,
bScreen screen 
)

◆ ED_screen_full_newspace()

ScrArea* ED_screen_full_newspace ( bContext C,
ScrArea area,
int  type 
)

◆ ED_screen_full_prevspace()

void ED_screen_full_prevspace ( bContext C,
ScrArea area 
)

◆ ED_screen_full_restore()

void ED_screen_full_restore ( bContext C,
ScrArea area 
)

◆ ED_screen_global_areas_refresh()

void ED_screen_global_areas_refresh ( wmWindow win)

◆ ED_screen_global_areas_sync()

void ED_screen_global_areas_sync ( wmWindow win)

◆ ED_screen_refresh()

void ED_screen_refresh ( wmWindowManager wm,
wmWindow win 
)

◆ ED_screen_restore_temp_type()

void ED_screen_restore_temp_type ( bContext C,
ScrArea area 
)

◆ ED_screen_scene_change()

void ED_screen_scene_change ( bContext C,
wmWindow win,
Scene scene 
)

◆ ED_screen_scene_find()

Scene* ED_screen_scene_find ( const bScreen screen,
const wmWindowManager wm 
)

Definition at line 1762 of file screen_edit.c.

References ED_screen_scene_find_with_window(), and NULL.

◆ ED_screen_scene_find_with_window()

Scene* ED_screen_scene_find_with_window ( const bScreen screen,
const wmWindowManager wm,
struct wmWindow **  r_window 
)

Find the scene displayed in screen.

Note
Assumes screen to be visible/active!

Definition at line 1724 of file screen_edit.c.

References LISTBASE_FOREACH, NULL, wmWindowManager::windows, WM_window_get_active_scene(), and WM_window_get_active_screen().

Referenced by ED_screen_scene_find().

◆ ED_screen_set_active_region()

void ED_screen_set_active_region ( bContext C,
wmWindow win,
const int  xy[2] 
)

◆ ED_screen_state_maximized_create()

ScrArea* ED_screen_state_maximized_create ( bContext C)

Create a new temporary screen with a maximized, empty area. This can be closed with ED_screen_state_toggle().

Use this to just create a new maximized screen/area, rather than maximizing an existing one. Otherwise, maximize with ED_screen_state_toggle().

Definition at line 1308 of file screen_edit.c.

References bScreen::areabase, C, CTX_wm_window(), ListBase::first, NULL, screen_state_to_nonnormal(), and SCREENMAXIMIZED.

Referenced by ED_screen_full_newspace().

◆ ED_screen_state_toggle()

ScrArea* ED_screen_state_toggle ( bContext C,
wmWindow win,
ScrArea area,
const short  state 
)

◆ ED_screen_stereo3d_required()

bool ED_screen_stereo3d_required ( const bScreen screen,
const Scene scene 
)

◆ ED_screen_temp_space_open()

ScrArea* ED_screen_temp_space_open ( bContext C,
const char *  title,
int  x,
int  y,
int  sizex,
int  sizey,
eSpace_Type  space_type,
int  display_type,
bool  dialog 
)

Wrapper to open a temporary space either as fullscreen space, or as separate window, as defined by display_type.

Parameters
titleTitle to set for the window, if a window is spawned.
x,yPosition of the window, if a window is spawned.
sizex,sizeyDimensions of the window, if a window is spawned.

Definition at line 1438 of file screen_edit.c.

References blender::compositor::area(), AREA_FLAG_STACKED_FULLSCREEN, C, CTX_wm_area(), ED_area_newspace(), ED_screen_full_newspace(), ScrArea::full, NULL, SPACE_FLAG_TYPE_TEMPORARY, USER_TEMP_SPACE_DISPLAY_FULLSCREEN, USER_TEMP_SPACE_DISPLAY_WINDOW, WIN_ALIGN_LOCATION_CENTER, WM_window_open(), x, and y.

Referenced by wm_handler_fileselect_do().

◆ ED_screen_window_find()

wmWindow* ED_screen_window_find ( const bScreen screen,
const wmWindowManager wm 
)

◆ ED_screens_init()

void ED_screens_init ( Main bmain,
wmWindowManager wm 
)

◆ ED_update_for_newframe()

void ED_update_for_newframe ( Main bmain,
Depsgraph depsgraph 
)

◆ region_cursor_set()

static void region_cursor_set ( wmWindow win,
bool  swin_changed 
)
static

◆ region_cursor_set_ex()

static void region_cursor_set_ex ( wmWindow win,
ScrArea area,
ARegion region,
bool  swin_changed 
)
static

◆ screen_add()

bScreen* screen_add ( Main bmain,
const char *  name,
const rcti rect 
)

◆ screen_addarea()

static ScrArea* screen_addarea ( bScreen screen,
ScrVert left_bottom,
ScrVert left_top,
ScrVert right_top,
ScrVert right_bottom,
short  spacetype 
)
static

Definition at line 85 of file screen_edit.c.

References AREAMAP_FROM_SCREEN, and screen_addarea_ex().

Referenced by area_split(), and screen_add().

◆ screen_addarea_ex()

static ScrArea* screen_addarea_ex ( ScrAreaMap area_map,
ScrVert bottom_left,
ScrVert top_left,
ScrVert top_right,
ScrVert bottom_right,
short  spacetype 
)
static

◆ screen_area_create_with_geometry()

static ScrArea* screen_area_create_with_geometry ( ScrAreaMap area_map,
const rcti rect,
short  spacetype 
)
static

Add an area and geometry (screen-edges and -vertices) for it to area_map, with coordinates/dimensions matching rect.

Definition at line 836 of file screen_edit.c.

References screen_addarea_ex(), screen_geom_edge_add_ex(), screen_geom_vertex_add_ex(), rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by screen_global_area_refresh().

◆ screen_area_join()

int screen_area_join ( bContext C,
bScreen screen,
ScrArea sa1,
ScrArea sa2 
)

◆ screen_area_set_geometry_rect()

static void screen_area_set_geometry_rect ( ScrArea area,
const rcti rect 
)
static

◆ screen_areas_align()

static void screen_areas_align ( bContext C,
bScreen screen,
ScrArea sa1,
ScrArea sa2,
const int  dir 
)
static

◆ screen_change_prepare()

void screen_change_prepare ( bScreen screen_old,
bScreen screen_new,
Main bmain,
bContext C,
wmWindow win 
)

◆ screen_change_update()

void screen_change_update ( bContext C,
wmWindow win,
bScreen screen 
)

◆ screen_cursor_set()

static void screen_cursor_set ( wmWindow win,
const int  xy[2] 
)
static

◆ screen_data_copy()

void screen_data_copy ( bScreen to,
bScreen from 
)

◆ screen_delarea()

static void screen_delarea ( bContext C,
bScreen screen,
ScrArea area 
)
static

◆ screen_global_area_refresh()

static void screen_global_area_refresh ( wmWindow win,
bScreen screen,
eSpace_Type  space_type,
GlobalAreaAlign  align,
const rcti rect,
const short  height_cur,
const short  height_min,
const short  height_max 
)
static

◆ screen_global_header_size()

static int screen_global_header_size ( void  )
static

◆ screen_global_statusbar_area_refresh()

static void screen_global_statusbar_area_refresh ( wmWindow win,
bScreen screen 
)
static

◆ screen_global_topbar_area_refresh()

static void screen_global_topbar_area_refresh ( wmWindow win,
bScreen screen 
)
static

◆ screen_new_activate_prepare()

void screen_new_activate_prepare ( const wmWindow win,
bScreen screen_new 
)

Prepare a newly created screen for initializing it as active screen.

Definition at line 275 of file screen_edit.c.

References bScreen::do_draw, bScreen::do_refresh, bScreen::winid, and wmWindow::winid.

◆ screen_set_3dview_camera()

static void screen_set_3dview_camera ( Scene scene,
ViewLayer view_layer,
ScrArea area,
View3D v3d 
)
static

◆ screen_state_to_nonnormal()

static bScreen* screen_state_to_nonnormal ( bContext C,
wmWindow win,
ScrArea toggle_area,
int  state 
)
static

◆ screen_verts_halign()

static void screen_verts_halign ( const wmWindow win,
const bScreen screen,
const short  from_x,
const short  to_x 
)
static

Definition at line 331 of file screen_edit.c.

References ED_screen_verts_iter, and v1.

Referenced by screen_areas_align().

◆ screen_verts_valign()

static void screen_verts_valign ( const wmWindow win,
const bScreen screen,
const short  from_y,
const short  to_y 
)
static

Definition at line 345 of file screen_edit.c.

References ED_screen_verts_iter, and v1.

Referenced by screen_areas_align().

◆ time_top_left_3dwindow()

static ARegion* time_top_left_3dwindow ( bScreen screen)
static