Blender  V3.3
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, const eScreenAxis dir_axis, 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 
)

◆ 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 62 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_aligned().

◆ 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,
int  mx,
int  my 
)

Need win size to make sure not to include edges along screen edge.

Definition at line 109 of file screen_geometry.c.

References AREAMAP_FROM_SCREEN, wmWindow::global_areas, NULL, screen_geom_area_map_find_active_scredge(), USER_APP_LOCK_EDGE_RESIZE, WM_window_rect_calc(), and WM_window_screen_rect_calc().

Referenced by area_move_init(), and screen_cursor_set().

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

References blender::compositor::area(), AREAMINX, CLAMP, ED_area_headersize(), round_fl_to_short(), SCREEN_AXIS_H, SCREEN_AXIS_V, 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 348 of file screen_geometry.c.

References ED_screen_verts_iter, bScreen::edgebase, LISTBASE_FOREACH, SCREEN_AXIS_H, SCREEN_AXIS_V, and WM_window_get_active_screen().

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 46 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 233 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