Blender  V2.93
Functions
screen_geometry.c File Reference

Functions for screen vertices and edges. More...

#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_rect.h"
#include "BKE_screen.h"
#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
#include "ED_screen.h"
#include "MEM_guardedalloc.h"
#include "WM_api.h"
#include "screen_intern.h"

Go to the source code of this file.

Functions

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, const int mx, const int my)
 
ScrEdgescreen_geom_find_active_scredge (const wmWindow *win, const bScreen *screen, const int mx, const int my)
 
static bool screen_geom_vertices_scale_pass (const wmWindow *win, const bScreen *screen, const rcti *screen_rect)
 
void screen_geom_vertices_scale (const wmWindow *win, bScreen *screen)
 Main screen-layout calculation function. More...
 
short screen_geom_find_area_split_point (const ScrArea *area, const rcti *window_rect, char dir, float fac)
 
void screen_geom_select_connected_edge (const wmWindow *win, ScrEdge *edge)
 

Detailed Description

Functions for screen vertices and edges.

Screen geometry refers to the vertices (ScrVert) and edges (ScrEdge) through which the flexible screen-layout system of Blender is established.

Definition in file screen_geometry.c.

Function Documentation

◆ 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,
const int  mx,
const int  my 
)
Parameters
bounds_rectEither window or screen bounds. Used to exclude edges along window/screen edges.

Definition at line 90 of file screen_geometry.c.

References abs(), BORDERPADDING, CLAMP_MIN, ScrAreaMap::edgebase, LISTBASE_FOREACH, max, MAX2, min, MIN2, NULL, 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)

◆ screen_geom_edge_add()

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

Definition at line 76 of file screen_geometry.c.

References AREAMAP_FROM_SCREEN, screen_geom_edge_add_ex(), v1, and v2.

Referenced by area_split(), screen_add(), and screen_area_join().

◆ screen_geom_edge_add_ex()

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

◆ screen_geom_edge_is_horizontal()

bool screen_geom_edge_is_horizontal ( ScrEdge se)

◆ screen_geom_find_active_scredge()

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

◆ screen_geom_find_area_split_point()

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

Definition at line 305 of file screen_geometry.c.

References blender::compositor::area(), AREAMINX, CLAMP, ED_area_headersize(), round_fl_to_short(), screen_geom_area_height(), screen_geom_area_width(), x, rcti::xmax, rcti::xmin, 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 372 of file screen_geometry.c.

References ED_screen_verts_iter, bScreen::edgebase, ScrVert::flag, LISTBASE_FOREACH, 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 60 of file screen_geometry.c.

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 255 of file screen_geometry.c.

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

Referenced by ED_screen_refresh().

◆ screen_geom_vertices_scale_pass()

static bool screen_geom_vertices_scale_pass ( const wmWindow win,
const bScreen screen,
const rcti screen_rect 
)
static