Blender V5.0
screen_intern.hh File Reference
#include "DNA_space_types.h"

Go to the source code of this file.

Macros

#define SCREEN_DIR_IS_VERTICAL(dir)
#define SCREEN_DIR_IS_HORIZONTAL(dir)
#define AZONEFADEIN   (5.0f * U.widget_unit) /* when #AZone is totally visible */
#define AZONEFADEOUT   (6.5f * U.widget_unit) /* when we start seeing the #AZone */
#define AREAJOINTOLERANCEX   (AREAMINX * UI_SCALE_FAC)
#define AREAJOINTOLERANCEY   (HEADERY * UI_SCALE_FAC)
#define BORDERPADDING   (U.border_width * UI_SCALE_FAC + 3.0f * UI_SCALE_FAC)
#define EDITORRADIUS   (6.0f * UI_SCALE_FAC)
#define BORDERPADDING_GLOBAL   (3.0f * UI_SCALE_FAC)
#define AREA_CLOSE_FADEOUT   0.15f /* seconds */
#define AREA_DOCK_FADEOUT   0.15f /* seconds */
#define AREA_DOCK_FADEIN   0.15f /* seconds */
#define AREA_JOIN_FADEOUT   0.15f /* seconds */
#define AREA_SPLIT_FADEOUT   0.15f /* seconds */
#define AREA_MOVE_LINE_FADEIN   0.1f /* seconds */
#define AREA_MOVE_LINE_FADEOUT   0.15f /* seconds */

Enumerations

enum  eScreenDir {
  SCREEN_DIR_NONE = -1 , SCREEN_DIR_W = 0 , SCREEN_DIR_N = 1 , SCREEN_DIR_E = 2 ,
  SCREEN_DIR_S = 3
}
enum  eScreenAxis { SCREEN_AXIS_H = 'h' , SCREEN_AXIS_V = 'v' }
enum class  AreaDockTarget {
  None , Right , Left , Top ,
  Bottom , Center
}

Functions

void ED_area_data_copy (ScrArea *area_dst, ScrArea *area_src, bool do_free)
void ED_area_data_swap (ScrArea *area_dst, ScrArea *area_src)
void region_toggle_hidden (bContext *C, ARegion *region, bool do_fade)
void screen_draw_join_highlight (const wmWindow *win, ScrArea *sa1, ScrArea *sa2, eScreenDir dir, float anim_factor)
void screen_draw_dock_preview (const wmWindow *win, ScrArea *source, ScrArea *target, AreaDockTarget dock_target, float factor, int x, int y, float anim_factor)
void screen_draw_split_preview (ScrArea *area, eScreenAxis dir_axis, float factor)
void screen_draw_move_highlight (const wmWindow *win, bScreen *screen, eScreenAxis dir_axis, float anim_factor)
void screen_draw_region_scale_highlight (ARegion *region)
void screen_animate_area_highlight (wmWindow *win, bScreen *screen, const rcti *rect, float inner[4], float outline[4], float seconds)
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)
void screen_change_update (bContext *C, wmWindow *win, bScreen *screen)
void screen_change_prepare (bScreen *screen_old, bScreen *screen_new, Main *bmain, bContext *C, wmWindow *win)
ScrAreaarea_split (const wmWindow *win, bScreen *screen, ScrArea *area, eScreenAxis dir_axis, float fac, bool merge)
int screen_area_join (bContext *C, ReportList *reports, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
eScreenDir area_getorientation (ScrArea *sa_a, ScrArea *sa_b)
void area_getoffsets (ScrArea *sa_a, ScrArea *sa_b, eScreenDir dir, int *r_offset1, int *r_offset2)
bool screen_area_close (bContext *C, ReportList *reports, bScreen *screen, ScrArea *area)
void screen_area_spacelink_add (const Scene *scene, ScrArea *area, eSpace_Type space_type)
AZoneED_area_actionzone_find_xy (ScrArea *area, const int xy[2])
bool area_regions_poll (bContext *C, const bScreen *screen, ScrArea *area)
int screen_geom_area_height (const ScrArea *area)
int screen_geom_area_width (const ScrArea *area)
ScrVertscreen_geom_vertex_add_ex (ScrAreaMap *area_map, short x, short y)
ScrVertscreen_geom_vertex_add (bScreen *screen, short x, short y)
ScrEdgescreen_geom_edge_add_ex (ScrAreaMap *area_map, ScrVert *v1, ScrVert *v2)
ScrEdgescreen_geom_edge_add (bScreen *screen, ScrVert *v1, ScrVert *v2)
bool screen_geom_edge_is_horizontal (ScrEdge *se)
ScrEdgescreen_geom_area_map_find_active_scredge (const ScrAreaMap *area_map, const rcti *bounds_rect, int mx, int my, int safety=BORDERPADDING)
ScrEdgescreen_geom_find_active_scredge (const wmWindow *win, const bScreen *screen, int mx, int my)
void screen_geom_vertices_scale (const wmWindow *win, bScreen *screen)
 Main screen-layout calculation function.
short screen_geom_find_area_split_point (const ScrArea *area, const rcti *window_rect, eScreenAxis dir_axis, float fac)
void screen_geom_select_connected_edge (const wmWindow *win, ScrEdge *edge)
int ed_screen_context (const bContext *C, const char *member, bContextDataResult *result)
void SCREEN_OT_screenshot (wmOperatorType *ot)
void SCREEN_OT_screenshot_area (wmOperatorType *ot)
bool workspace_layout_set_poll (const WorkSpaceLayout *layout)

Variables

const char * screen_context_dir []

Macro Definition Documentation

◆ AREA_CLOSE_FADEOUT

#define AREA_CLOSE_FADEOUT   0.15f /* seconds */

Definition at line 83 of file screen_intern.hh.

Referenced by area_close_exec(), area_docking_apply(), and screen_area_join_ex().

◆ AREA_DOCK_FADEIN

#define AREA_DOCK_FADEIN   0.15f /* seconds */

Definition at line 85 of file screen_intern.hh.

Referenced by area_join_init(), and area_join_update_data().

◆ AREA_DOCK_FADEOUT

#define AREA_DOCK_FADEOUT   0.15f /* seconds */

Definition at line 84 of file screen_intern.hh.

Referenced by area_docking_apply().

◆ AREA_JOIN_FADEOUT

#define AREA_JOIN_FADEOUT   0.15f /* seconds */

Definition at line 86 of file screen_intern.hh.

Referenced by area_join_apply().

◆ AREA_MOVE_LINE_FADEIN

#define AREA_MOVE_LINE_FADEIN   0.1f /* seconds */

Definition at line 88 of file screen_intern.hh.

Referenced by area_move_init().

◆ AREA_MOVE_LINE_FADEOUT

#define AREA_MOVE_LINE_FADEOUT   0.15f /* seconds */

Definition at line 89 of file screen_intern.hh.

Referenced by area_move_exit().

◆ AREA_SPLIT_FADEOUT

#define AREA_SPLIT_FADEOUT   0.15f /* seconds */

Definition at line 87 of file screen_intern.hh.

Referenced by area_join_modal(), and area_split_modal().

◆ AREAJOINTOLERANCEX

#define AREAJOINTOLERANCEX   (AREAMINX * UI_SCALE_FAC)

Definition at line 67 of file screen_intern.hh.

Referenced by area_getorientation(), screen_area_trim(), and screen_areas_can_align().

◆ AREAJOINTOLERANCEY

#define AREAJOINTOLERANCEY   (HEADERY * UI_SCALE_FAC)

Definition at line 68 of file screen_intern.hh.

Referenced by area_getorientation(), screen_area_trim(), and screen_areas_can_align().

◆ AZONEFADEIN

#define AZONEFADEIN   (5.0f * U.widget_unit) /* when #AZone is totally visible */

Definition at line 63 of file screen_intern.hh.

Referenced by area_actionzone_refresh_xy().

◆ AZONEFADEOUT

#define AZONEFADEOUT   (6.5f * U.widget_unit) /* when we start seeing the #AZone */

Definition at line 64 of file screen_intern.hh.

Referenced by area_actionzone_refresh_xy(), and fullscreen_azone_init().

◆ BORDERPADDING

#define BORDERPADDING   (U.border_width * UI_SCALE_FAC + 3.0f * UI_SCALE_FAC)

Expanded interaction influence of area borders.

Definition at line 73 of file screen_intern.hh.

Referenced by ED_screen_set_active_region(), and screen_geom_find_active_scredge().

◆ BORDERPADDING_GLOBAL

#define BORDERPADDING_GLOBAL   (3.0f * UI_SCALE_FAC)

Definition at line 81 of file screen_intern.hh.

Referenced by screen_geom_find_active_scredge().

◆ EDITORRADIUS

◆ SCREEN_DIR_IS_HORIZONTAL

#define SCREEN_DIR_IS_HORIZONTAL ( dir)
Value:
#define ELEM(...)
@ SCREEN_DIR_W
@ SCREEN_DIR_E

Definition at line 45 of file screen_intern.hh.

Referenced by screen_areas_align(), and screen_areas_can_align().

◆ SCREEN_DIR_IS_VERTICAL

#define SCREEN_DIR_IS_VERTICAL ( dir)

Enumeration Type Documentation

◆ AreaDockTarget

enum class AreaDockTarget
strong
Enumerator
None 
Right 
Left 
Top 
Bottom 
Center 

Definition at line 54 of file screen_intern.hh.

◆ eScreenAxis

Enumerator
SCREEN_AXIS_H 

Horizontal.

SCREEN_AXIS_V 

Vertical.

Definition at line 47 of file screen_intern.hh.

◆ eScreenDir

enum eScreenDir
Enumerator
SCREEN_DIR_NONE 

This can mean unset, unknown or invalid.

SCREEN_DIR_W 

West/Left.

SCREEN_DIR_N 

North/Up.

SCREEN_DIR_E 

East/Right.

SCREEN_DIR_S 

South/Down.

Definition at line 31 of file screen_intern.hh.

Function Documentation

◆ area_getoffsets()

void area_getoffsets ( ScrArea * sa_a,
ScrArea * sa_b,
eScreenDir dir,
int * r_offset1,
int * r_offset2 )

◆ area_getorientation()

eScreenDir area_getorientation ( ScrArea * sa_a,
ScrArea * sa_b )

◆ area_regions_poll()

bool area_regions_poll ( bContext * C,
const bScreen * screen,
ScrArea * area )

◆ area_split()

◆ ED_area_actionzone_find_xy()

AZone * ED_area_actionzone_find_xy ( ScrArea * area,
const int xy[2] )

◆ ED_area_data_copy()

◆ ED_area_data_swap()

void ED_area_data_swap ( ScrArea * area_dst,
ScrArea * area_src )

◆ ed_screen_context()

◆ region_toggle_hidden()

◆ screen_add()

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

◆ screen_animate_area_highlight()

void screen_animate_area_highlight ( wmWindow * win,
bScreen * screen,
const rcti * rect,
float inner[4],
float outline[4],
float seconds )

◆ screen_area_close()

bool screen_area_close ( bContext * C,
ReportList * reports,
bScreen * screen,
ScrArea * area )

◆ screen_area_join()

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

Join any two neighboring areas. Might involve complex changes.

Definition at line 599 of file screen_edit.cc.

References C, and screen_area_join_ex().

Referenced by area_docking_apply(), area_join_apply(), and area_split_cancel().

◆ screen_area_spacelink_add()

◆ screen_change_prepare()

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

◆ screen_change_update()

◆ screen_data_copy()

◆ screen_draw_dock_preview()

◆ screen_draw_join_highlight()

void screen_draw_join_highlight ( const wmWindow * win,
ScrArea * sa1,
ScrArea * sa2,
eScreenDir dir,
float anim_factor )

Visual indication of the two areas involved in a proposed join.

Parameters
sa1Area from which the resultant originates.
sa2Target area that will be replaced.

Definition at line 378 of file screen_draw.cc.

References area_getoffsets(), EDITORRADIUS, wmWindow::eventstate, IFACE_, SCREEN_DIR_IS_VERTICAL, SCREEN_DIR_NONE, screen_draw_area_closed(), screen_draw_area_drag_tip(), ScrArea::totrct, U, UI_CNR_ALL, UI_draw_roundbox_4fv_ex(), UI_draw_roundbox_corner_set(), rctf::xmax, rcti::xmax, rctf::xmin, rcti::xmin, wmEvent::xy, rctf::ymax, rcti::ymax, rctf::ymin, and rcti::ymin.

Referenced by area_join_draw_cb().

◆ screen_draw_move_highlight()

◆ screen_draw_region_scale_highlight()

◆ screen_draw_split_preview()

◆ screen_geom_area_height()

int screen_geom_area_height ( const ScrArea * area)

◆ screen_geom_area_map_find_active_scredge()

ScrEdge * screen_geom_area_map_find_active_scredge ( const ScrAreaMap * area_map,
const rcti * bounds_rect,
int mx,
int my,
int safety = BORDERPADDING )
Parameters
bounds_rectEither window or screen bounds. Used to exclude edges along window/screen edges.

Definition at line 74 of file screen_geometry.cc.

References abs, CLAMP_MIN, ScrAreaMap::edgebase, LISTBASE_FOREACH, max, min, screen_geom_edge_is_horizontal(), rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by actionzone_modal(), area_split_invoke(), screen_area_edge_from_cursor(), and screen_geom_find_active_scredge().

◆ screen_geom_area_width()

int screen_geom_area_width ( const ScrArea * area)

Definition at line 34 of file screen_geometry.cc.

References ScrArea::v1, ScrArea::v4, ScrVert::vec, and vec2s::x.

Referenced by screen_geom_find_area_split_point().

◆ screen_geom_edge_add()

ScrEdge * screen_geom_edge_add ( bScreen * screen,
ScrVert * v1,
ScrVert * v2 )

◆ screen_geom_edge_add_ex()

ScrEdge * screen_geom_edge_add_ex ( ScrAreaMap * area_map,
ScrVert * v1,
ScrVert * v2 )

◆ screen_geom_edge_is_horizontal()

◆ screen_geom_find_active_scredge()

ScrEdge * screen_geom_find_active_scredge ( const wmWindow * win,
const bScreen * screen,
int mx,
int my )

◆ screen_geom_find_area_split_point()

short screen_geom_find_area_split_point ( const ScrArea * area,
const rcti * window_rect,
eScreenAxis dir_axis,
float fac )
Returns
0 if no split is possible, otherwise the screen-coordinate at which to split.

Definition at line 297 of file screen_geometry.cc.

References AREAMINX, CLAMP, ED_area_headersize(), round_fl_to_short(), SCREEN_AXIS_H, SCREEN_AXIS_V, screen_geom_area_height(), screen_geom_area_width(), U, UI_SCALE_FAC, ScrArea::v1, ScrArea::v2, ScrArea::v4, ScrVert::vec, vec2s::x, x, rcti::xmax, rcti::xmin, vec2s::y, y, rcti::ymax, and rcti::ymin.

Referenced by area_split().

◆ screen_geom_select_connected_edge()

void screen_geom_select_connected_edge ( const wmWindow * win,
ScrEdge * edge )

Select all edges that are directly or indirectly connected to edge.

Definition at line 365 of file screen_geometry.cc.

References ED_screen_verts_iter, bScreen::edgebase, ScrVert::flag, LISTBASE_FOREACH, SCREEN_AXIS_H, SCREEN_AXIS_V, ScrEdge::v1, ScrEdge::v2, ScrVert::vec, WM_window_get_active_screen(), and vec2s::x.

Referenced by area_move_init(), and screen_geom_vertices_scale_pass().

◆ screen_geom_vertex_add()

ScrVert * screen_geom_vertex_add ( bScreen * screen,
short x,
short y )

Definition at line 48 of file screen_geometry.cc.

References AREAMAP_FROM_SCREEN, screen_geom_vertex_add_ex(), x, and y.

Referenced by area_split(), and screen_add().

◆ screen_geom_vertex_add_ex()

ScrVert * screen_geom_vertex_add_ex ( ScrAreaMap * area_map,
short x,
short y )

◆ screen_geom_vertices_scale()

void screen_geom_vertices_scale ( const wmWindow * win,
bScreen * screen )

Main screen-layout calculation function.

  • Scale areas nicely on window size and DPI changes.
  • Ensure areas have a minimum height.
  • Correctly set global areas to their fixed height.

Definition at line 250 of file screen_geometry.cc.

References ScrAreaMap::areabase, ED_area_global_size_y(), GLOBAL_AREA_ALIGN_BOTTOM, GLOBAL_AREA_ALIGN_TOP, GLOBAL_AREA_IS_HIDDEN, wmWindow::global_areas, LISTBASE_FOREACH, screen_geom_vertices_scale_pass(), U, WM_window_rect_calc(), WM_window_screen_rect_calc(), rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by screen_refresh_if_needed().

◆ 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 268 of file screen_edit.cc.

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

◆ SCREEN_OT_screenshot()

void SCREEN_OT_screenshot ( wmOperatorType * ot)

Definition at line 260 of file screendump.cc.

References ot, and screen_screenshot_impl().

Referenced by ED_operatortypes_screen().

◆ SCREEN_OT_screenshot_area()

void SCREEN_OT_screenshot_area ( wmOperatorType * ot)

Definition at line 271 of file screendump.cc.

References OPTYPE_DEPENDS_ON_CURSOR, ot, and screen_screenshot_impl().

Referenced by ED_operatortypes_screen().

◆ workspace_layout_set_poll()

Variable Documentation

◆ screen_context_dir

const char* screen_context_dir[]

Definition at line 238 of file screen_intern.hh.