63 area->
v1 = bottom_left;
66 area->v4 = bottom_right;
67 area->spacetype = space_type;
104 if (area ==
nullptr) {
220 to->flag = from->flag;
228 for (
ScrVert *s1 =
static_cast<ScrVert *
>(from->vertbase.first); s1;
235 se->v1 = se->v1->
newv;
236 se->v2 = se->v2->
newv;
240 ScrArea *from_area =
static_cast<ScrArea *
>(from->areabase.first);
242 area->
v1 = area->v1->
newv;
243 area->v2 = area->v2->
newv;
244 area->v3 = area->v3->
newv;
245 area->v4 = area->v4->
newv;
254 from_area = from_area->
next;
272 if (sa_a ==
nullptr || sa_b ==
nullptr || sa_a == sa_b) {
276 short left_a = sa_a->
v1->
vec.
x;
277 short right_a = sa_a->
v3->
vec.
x;
278 short top_a = sa_a->
v3->
vec.
y;
279 short bottom_a = sa_a->
v1->
vec.
y;
281 short left_b = sa_b->
v1->
vec.
x;
282 short right_b = sa_b->
v3->
vec.
x;
283 short top_b = sa_b->
v3->
vec.
y;
284 short bottom_b = sa_b->
v1->
vec.
y;
287 short overlapx = std::min(right_a, right_b) - std::max(left_a, left_b);
288 short overlapy = std::min(top_a, top_b) - std::max(bottom_a, bottom_b);
294 if (top_a == bottom_b && overlapx >= minx) {
297 if (bottom_a == top_b && overlapx >= minx) {
300 if (left_a == right_b && overlapy >= miny) {
303 if (right_a == left_b && overlapy >= miny) {
313 if (sa_a ==
nullptr || sa_b ==
nullptr) {
314 *r_offset1 = INT_MAX;
315 *r_offset2 = INT_MAX;
335 *r_offset1 = INT_MAX;
336 *r_offset2 = INT_MAX;
348 if (v1->vec.x == from_x) {
362 if (v1->vec.y == from_y) {
380 if ((
abs(offset1) >= tolerance) || (
abs(offset2) >= tolerance)) {
387 const short xmin = std::min(sa1->
v1->
vec.
x, sa2->
v1->
vec.
x);
388 const short xmax = std::max(sa1->
v3->
vec.
x, sa2->
v3->
vec.
x);
390 if (
ELEM(area, sa1, sa2)) {
393 if (area->v3->vec.x - area->v1->vec.x < tolerance &&
394 (area->v1->vec.x == xmin || area->v3->vec.x == xmax))
402 const short ymin = std::min(sa1->
v1->
vec.
y, sa2->
v1->
vec.
y);
403 const short ymax = std::max(sa1->
v3->
vec.
y, sa2->
v3->
vec.
y);
405 if (
ELEM(area, sa1, sa2)) {
408 if (area->v3->vec.y - area->v1->vec.y < tolerance &&
409 (area->v1->vec.y == ymin || area->v3->vec.y == ymax))
514 float fac =
abs(size) /
float(vertical ? ((*area)->v3->vec.x - (*area)->v1->vec.x) :
515 ((*area)->v3->vec.y - (*area)->v1->vec.y));
516 fac = (reverse == vertical) ? 1.0f - fac : fac;
521 if (((fac > 0.5f) == vertical) != reverse) {
552 if (close_all_remainders || offset1 < 0 || offset2 > 0) {
569 if (area ==
nullptr) {
574 float best_alignment = 0.0f;
582 const int area_length = vertical ? (area->v3->vec.x - area->v1->vec.x) :
583 (area->v3->vec.y - area->v1->vec.y);
584 const int ar_length = vertical ? (neighbor->v3->vec.x - neighbor->v1->vec.x) :
585 (neighbor->v3->vec.y - neighbor->v1->vec.y);
587 float alignment = std::min(area_length, ar_length) /
float(std::max(area_length, ar_length));
588 if (alignment > best_alignment) {
589 best_alignment = alignment;
616 if (win->
tag_cursor_refresh || swin_changed || (region->type && region->type->event_cursor)) {
628 if (region == screen->active_region) {
645 screen->do_draw =
true;
649 screen->do_draw =
true;
653 screen->do_draw = screen->do_refresh =
true;
669 if (!region->type || !region->type->poll) {
680 return region->type->poll(&
params);
694 bool any_changed =
false;
699 const int old_region_flag = region->flag;
701 region->flag &= ~RGN_FLAG_POLL_FAILED;
704 if (
region_poll(C, screen, area, region) ==
false) {
707 else if (region->type && region->type->on_poll_success) {
708 region->type->on_poll_success(C, region);
711 if (old_region_flag != region->flag) {
715 region->v2d.flag &= ~V2D_IS_INIT;
735 const bool force_full_refresh)
738 bool do_refresh = screen->do_refresh;
745 if (!force_full_refresh && !do_refresh) {
769 if (screen->animtimer) {
775 printf(
"%s: set screen\n", __func__);
777 screen->do_refresh =
false;
779 screen->winid = win->
winid;
798 if (win->eventstate) {
813 const bool force_full_refresh =
false;
832 if (region->type && region->type->exit) {
833 region->type->exit(wm, region);
854 region->visible =
false;
858 if (region->regiontimer) {
860 region->regiontimer =
nullptr;
874 if (area->type && area->type->exit) {
875 area->type->exit(wm, area);
897 if (screen->animtimer) {
905 screen->animtimer =
nullptr;
906 screen->scrubbing =
false;
908 screen->active_region =
nullptr;
936 if (area->type && area->type->space_name_get) {
937 return area->type->space_name_get(area);
947 if (area->type && area->type->space_icon_get) {
948 return area->type->space_icon_get(area);
1008 if (screen ==
nullptr) {
1013 ARegion *region_prev = screen->active_region;
1033 screen->active_region = region;
1039 screen->active_region =
nullptr;
1042 if (region_prev != screen->active_region || !screen->active_region) {
1047 if (region_prev != screen->active_region) {
1050 bool do_draw =
false;
1054 if (region == region_prev && area_iter->
type && area_iter->type->deactivate) {
1055 area_iter->type->deactivate(area_iter);
1058 if (region == region_prev && region != screen->active_region) {
1067 if (
ELEM(region, region_prev, screen->active_region)) {
1082 const int mval[2] = {-1, -1};
1089 if (screen->active_region ==
nullptr) {
1096 if (region_prev != screen->active_region) {
1113 if (win && screen && area) {
1121 if (region == screen->active_region) {
1147 return screen_addarea_ex(area_map, bottom_left, top_left, top_right, bottom_right, space_type);
1152 area->v1->vec.x = rect->
xmin;
1153 area->v1->vec.y = rect->
ymin;
1154 area->v2->vec.x = rect->
xmin;
1155 area->v2->vec.y = rect->
ymax;
1156 area->v3->vec.x = rect->
xmax;
1157 area->v3->vec.y = rect->
ymax;
1158 area->v4->vec.x = rect->
xmax;
1159 area->v4->vec.y = rect->
ymin;
1167 const short height_cur,
1168 const short height_min,
1169 const short height_max)
1178 if (area_iter->spacetype == space_type) {
1193 area->global->
size_max = height_max;
1194 area->global->size_min = height_min;
1195 area->global->align = align;
1198 if (area->global->cur_fixed_height != height_cur) {
1200 area->global->cur_fixed_height = height_cur;
1201 screen->do_refresh =
true;
1216 BLI_rcti_init(&rect, 0, win_size[0] - 1, 0, win_size[1] - 1);
1226 const short size_min = 1;
1231 BLI_rcti_init(&rect, 0, win_size[0] - 1, 0, win_size[1] - 1);
1244 screen->flag &= ~SCREEN_COLLAPSE_STATUSBAR;
1247 if (area->global->cur_fixed_height == area->global->size_min) {
1259 if ((win->
parent !=
nullptr) || screen->temp) {
1261 screen->do_refresh =
true;
1280 if (screen_old != screen_new) {
1331 bmain, workspace, layout, layout, win);
1336 if (screen_old != screen_new) {
1362 if (v3d == area->spacedata.first) {
1363 regionbase = &area->regionbase;
1384 const bool refresh_toolsystem)
1402 if (view_layer_old) {
1423 if (refresh_toolsystem) {
1434 if (!area || area->full ==
nullptr) {
1547 screen->state =
state;
1549 screen->temp = oldscreen->
temp;
1550 screen->flag = oldscreen->
flag;
1553 screen->animtimer = oldscreen->
animtimer;
1556 newa = (
ScrArea *)screen->areabase.first;
1571 region->flagfullscreen = region->flag;
1573 if (
ELEM(region->regiontype,
1590 toggle_area->
full = oldscreen;
1592 newa->
full = oldscreen;
1615 if (region->regiontimer) {
1617 region->regiontimer =
nullptr;
1626 if (area && area->full) {
1629 screen = area->full;
1636 screen->flag = oldscreen->
flag;
1642 if (old->full && !fullsa) {
1647 old->
full =
nullptr;
1650 area->full =
nullptr;
1655 glob_area->global->
flag &= ~GLOBAL_AREA_IS_HIDDEN;
1659 region->flag = region->flagfullscreen;
1669 screen->animtimer = oldscreen->
animtimer;
1680 screen->skip_handling =
true;
1687 if (!toggle_area || toggle_area->
global) {
1708 return static_cast<ScrArea *
>(screen->areabase.first);
1713 const rcti *rect_unscaled,
1720 switch (display_type) {
1739 if (ctx_area !=
nullptr && ctx_area->
full) {
1779 if (scene->r.psfra > scene->r.cfra) {
1780 sad->
sfra = scene->r.cfra;
1781 scene->r.cfra = scene->r.psfra;
1784 sad->
sfra = scene->r.cfra;
1788 if (scene->r.sfra > scene->r.cfra) {
1789 sad->
sfra = scene->r.cfra;
1790 scene->r.cfra = scene->r.sfra;
1793 sad->
sfra = scene->r.cfra;
1802 char spacetype = -1;
1805 spacetype = area->spacetype;
1810 screen->animtimer->customdata = sad;
1823 ARegion *region_top_left =
nullptr;
1830 if (region->winrct.xmin - region->winrct.ymin <
min) {
1831 region_top_left = region;
1839 return region_top_left;
1844 if (screen && screen->animtimer) {
1845 wmTimer *wt = screen->animtimer;
1862#ifdef DURIAN_CAMERA_SWITCH
1863 void *camera = BKE_scene_camera_switch_find(scene);
1864 if (camera && scene->camera != camera) {
1882 const bool is_multiview = (scene->r.scemode &
R_MULTIVIEW) != 0;
1885 switch (area->spacetype) {
1889 if (!is_multiview) {
1893 v3d =
static_cast<View3D *
>(area->spacedata.first);
1911 sima =
static_cast<SpaceImage *
>(area->spacedata.first);
1922 if (!is_multiview) {
1926 snode =
static_cast<SpaceNode *
>(area->spacedata.first);
1935 if (!is_multiview) {
1939 sseq =
static_cast<SpaceSeq *
>(area->spacedata.first);
1975 const bool only_visible)
1979 if (area->spacedata.first == sl) {
WorkSpace * CTX_wm_workspace(const bContext *C)
bScreen * CTX_wm_screen(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
void CTX_data_scene_set(bContext *C, Scene *scene)
Scene * CTX_data_scene(const bContext *C)
void CTX_wm_window_set(bContext *C, wmWindow *win)
Main * CTX_data_main(const bContext *C)
void CTX_wm_area_set(bContext *C, ScrArea *area)
void CTX_wm_region_set(bContext *C, ARegion *region)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_icon_changed(int icon_id)
bool BKE_image_is_stereo(const Image *ima)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_camera_find(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
Base * BKE_view_layer_base_find(ViewLayer *view_layer, Object *ob)
void * BKE_libblock_alloc(Main *bmain, short type, const char *name, int flag) ATTR_WARN_UNUSED_RESULT
void BKE_scene_graph_update_for_newframe(Depsgraph *depsgraph)
void BKE_screen_remove_unused_scredges(bScreen *screen)
void BKE_screen_remove_double_scrverts(bScreen *screen)
void BKE_screen_sort_scrvert(ScrVert **v1, ScrVert **v2)
void BKE_screen_area_free(ScrArea *area)
void BKE_screen_area_map_free(ScrAreaMap *area_map) ATTR_NONNULL()
SpaceType * BKE_spacetype_from_id(int spaceid)
void BKE_screen_header_alignment_reset(bScreen *screen)
void BKE_area_region_free(SpaceType *st, ARegion *region)
void BKE_screen_view3d_scene_sync(bScreen *screen, Scene *scene)
void BKE_screen_remove_double_scredges(bScreen *screen)
void BKE_screen_view3d_sync(View3D *v3d, Scene *scene)
void BKE_screen_free_data(bScreen *screen)
void BKE_sound_stop_scene(struct Scene *scene)
WorkSpaceLayout * BKE_workspace_layout_find(const WorkSpace *workspace, const bScreen *screen) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bScreen * BKE_workspace_layout_screen_get(const WorkSpaceLayout *layout) GETTER_ATTRS
void BKE_workspace_layout_remove(Main *bmain, WorkSpace *workspace, WorkSpaceLayout *layout) ATTR_NONNULL()
bScreen * BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
WorkSpace * BKE_workspace_active_get(WorkSpaceInstanceHook *hook) GETTER_ATTRS
void BKE_workspace_active_set(WorkSpaceInstanceHook *hook, WorkSpace *workspace) SETTER_ATTRS
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
#define SNPRINTF(dst, format,...)
#define UNUSED_VARS_NDEBUG(...)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_time_tag_update(Main *bmain)
Scene * DEG_get_input_scene(const Depsgraph *graph)
ID * DEG_get_evaluated_id(const Depsgraph *depsgraph, ID *id)
Object is a sort of wrapper for general info.
@ AREA_FLAG_STACKED_FULLSCREEN
#define AREAMAP_FROM_SCREEN(screen)
@ RGN_TYPE_ASSET_SHELF_HEADER
@ SCREEN_COLLAPSE_STATUSBAR
@ GLOBAL_AREA_ALIGN_BOTTOM
@ SEQ_VIEW_SEQUENCE_PREVIEW
@ SPACE_FLAG_TYPE_WAS_ACTIVE
@ SPACE_FLAG_TYPE_TEMPORARY
@ USER_TEMP_SPACE_DISPLAY_FULLSCREEN
@ USER_TEMP_SPACE_DISPLAY_WINDOW
void ED_clip_update_frame(const Main *mainp, int cfra)
bool ED_node_is_compositor(const SpaceNode *snode)
void ED_area_tag_redraw(ScrArea *area)
void ED_area_newspace(bContext *C, ScrArea *area, int type, bool skip_region_exit)
WorkSpaceLayout * ED_workspace_layout_add(Main *bmain, WorkSpace *workspace, wmWindow *win, const char *name) ATTR_NONNULL()
void ED_region_cursor_set(wmWindow *win, ScrArea *area, ARegion *region)
#define ED_screen_verts_iter(win, screen, vert_name)
bool ED_region_contains_xy(const ARegion *region, const int event_xy[2])
#define ED_screen_areas_iter(win, screen, area_name)
void ED_area_status_text(ScrArea *area, const char *str)
void ED_region_tag_redraw_no_rebuild(ARegion *region)
WorkSpaceLayout * ED_workspace_screen_change_ensure_unused_layout(Main *bmain, WorkSpace *workspace, WorkSpaceLayout *layout_new, const WorkSpaceLayout *layout_fallback_base, wmWindow *win) ATTR_NONNULL()
void ED_region_visibility_change_update(bContext *C, ScrArea *area, ARegion *region)
bScreen * ED_screen_animation_playing(const wmWindowManager *wm)
void ED_area_tag_refresh(ScrArea *area)
AZone * ED_area_azones_update(ScrArea *area, const int mouse_xy[2])
void ED_workspace_status_text(bContext *C, const char *str)
void ED_area_prevspace(bContext *C, ScrArea *area)
void ED_area_init(wmWindowManager *wm, wmWindow *win, ScrArea *area)
Read Guarded memory(de)allocation.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between camera
void UI_blocklist_free(const bContext *C, ARegion *region)
void UI_screen_free_active_but_highlight(const bContext *C, bScreen *screen)
@ WIN_ALIGN_LOCATION_CENTER
void ED_area_data_copy(ScrArea *area_dst, ScrArea *area_src, const bool do_free)
void ED_area_data_swap(ScrArea *area_dst, ScrArea *area_src)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const Depsgraph * depsgraph
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
OrientationBounds merge(const OrientationBounds &cone_a, const OrientationBounds &cone_b)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
int RNA_enum_from_value(const EnumPropertyItem *item, const int value)
const EnumPropertyItem rna_enum_space_type_items[]
int ed_screen_context(const bContext *C, const char *member, bContextDataResult *result)
int ED_area_icon(const ScrArea *area)
void ED_screen_global_areas_sync(wmWindow *win)
static bool screen_areas_can_align(bScreen *screen, ScrArea *sa1, ScrArea *sa2, eScreenDir dir)
static ScrArea * screen_addarea_ex(ScrAreaMap *area_map, ScrVert *bottom_left, ScrVert *top_left, ScrVert *top_right, ScrVert *bottom_right, const eSpace_Type space_type)
int ED_screen_area_active(const bContext *C)
bool ED_screen_stereo3d_required(const bScreen *screen, const Scene *scene)
wmWindow * ED_screen_window_find(const bScreen *screen, const wmWindowManager *wm)
static void screen_global_area_refresh(wmWindow *win, bScreen *screen, const eSpace_Type space_type, GlobalAreaAlign align, const rcti *rect, const short height_cur, const short height_min, const short height_max)
static void screen_set_3dview_camera(Scene *scene, ViewLayer *view_layer, ScrArea *area, View3D *v3d)
Scene * ED_screen_scene_find(const bScreen *screen, const wmWindowManager *wm)
static void screen_area_set_geometry_rect(ScrArea *area, const rcti *rect)
void screen_change_prepare(bScreen *screen_old, bScreen *screen_new, Main *bmain, bContext *C, wmWindow *win)
static void screen_refresh(bContext *C, wmWindowManager *wm, wmWindow *win, const bool force_full_refresh)
static ScrArea * screen_area_create_with_geometry(ScrAreaMap *area_map, const rcti *rect, eSpace_Type space_type)
void ED_screen_ensure_updated(bContext *C, wmWindowManager *wm, wmWindow *win)
void screen_new_activate_prepare(const wmWindow *win, bScreen *screen_new)
ScrArea * ED_screen_state_toggle(bContext *C, wmWindow *win, ScrArea *area, const short state)
ScrArea * ED_screen_area_find_with_spacedata(const bScreen *screen, const SpaceLink *sl, const bool only_visible)
void area_getoffsets(ScrArea *sa_a, ScrArea *sa_b, const eScreenDir dir, int *r_offset1, int *r_offset2)
static void region_cursor_set(wmWindow *win, bool swin_changed)
void ED_screen_refresh(bContext *C, wmWindowManager *wm, wmWindow *win)
void ED_screen_full_restore(bContext *C, ScrArea *area)
static void screen_verts_halign(const wmWindow *win, const bScreen *screen, const short from_x, const short to_x)
static bool region_poll(const bContext *C, const bScreen *screen, const ScrArea *area, const ARegion *region)
eScreenDir area_getorientation(ScrArea *sa_a, ScrArea *sa_b)
ScrArea * ED_screen_full_newspace(bContext *C, ScrArea *area, int type)
static void screen_global_statusbar_area_refresh(wmWindow *win, bScreen *screen)
int screen_area_join(bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
void ED_screen_do_listen(bContext *C, const wmNotifier *note)
void ED_screens_init(bContext *C, Main *bmain, wmWindowManager *wm)
static bool screen_area_join_ex(bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2, bool close_all_remainders)
static void screen_delarea(bContext *C, bScreen *screen, ScrArea *area)
void ED_screen_global_areas_refresh(wmWindow *win)
bool ED_screen_change(bContext *C, bScreen *screen)
Change the active screen.
bScreen * ED_screen_state_maximized_create(bContext *C)
void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable)
void ED_screen_restore_temp_type(bContext *C, ScrArea *area)
ScrArea * area_split(const wmWindow *win, bScreen *screen, ScrArea *area, const eScreenAxis dir_axis, const float fac, const bool merge)
static bool screen_area_join_aligned(bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
void screen_change_update(bContext *C, wmWindow *win, bScreen *screen)
static void screen_verts_valign(const wmWindow *win, const bScreen *screen, const short from_y, const short to_y)
void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen)
bool screen_area_close(bContext *C, bScreen *screen, ScrArea *area)
void ED_area_exit(bContext *C, ScrArea *area)
static ScrArea * screen_addarea(bScreen *screen, ScrVert *left_bottom, ScrVert *left_top, ScrVert *right_top, ScrVert *right_bottom, const eSpace_Type space_type)
static void screen_global_topbar_area_refresh(wmWindow *win, bScreen *screen)
ScrArea * ED_screen_temp_space_open(bContext *C, const char *title, const rcti *rect_unscaled, eSpace_Type space_type, int display_type, bool dialog)
static bScreen * screen_state_to_nonnormal(bContext *C, wmWindow *win, ScrArea *toggle_area, int state)
void ED_screen_animation_timer_update(bScreen *screen, int redraws)
void ED_screen_set_active_region(bContext *C, wmWindow *win, const int xy[2])
blender::StringRefNull ED_area_name(const ScrArea *area)
static bool screen_areas_align(bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2, const eScreenDir dir)
void ED_update_for_newframe(Main *bmain, Depsgraph *depsgraph)
static void screen_cursor_set(wmWindow *win, const int xy[2])
void screen_data_copy(bScreen *to, bScreen *from)
static bool screen_regions_poll(bContext *C, wmWindow *win, const bScreen *screen)
void ED_screen_scene_change(bContext *C, wmWindow *win, Scene *scene, const bool refresh_toolsystem)
static ScrArea * screen_area_trim(bContext *C, bScreen *screen, ScrArea **area, int size, eScreenDir dir, bool reverse)
static ARegion * time_top_left_3dwindow(bScreen *screen)
void ED_region_remove(bContext *C, ScrArea *area, ARegion *region)
static int screen_global_header_size()
bScreen * screen_add(Main *bmain, const char *name, const rcti *rect)
void ED_region_exit(bContext *C, ARegion *region)
static void region_cursor_set_ex(wmWindow *win, ScrArea *area, ARegion *region, bool swin_changed)
void ED_screen_full_prevspace(bContext *C, ScrArea *area)
Scene * ED_screen_scene_find_with_window(const bScreen *screen, const wmWindowManager *wm, wmWindow **r_window)
void screen_area_spacelink_add(const Scene *scene, ScrArea *area, eSpace_Type space_type)
ScrVert * screen_geom_vertex_add(bScreen *screen, short x, short y)
ScrEdge * screen_geom_edge_add_ex(ScrAreaMap *area_map, ScrVert *v1, ScrVert *v2)
ScrVert * screen_geom_vertex_add_ex(ScrAreaMap *area_map, short x, short y)
ScrEdge * screen_geom_find_active_scredge(const wmWindow *win, const bScreen *screen, const int mx, const int my)
ScrEdge * screen_geom_edge_add(bScreen *screen, ScrVert *v1, ScrVert *v2)
bool screen_geom_edge_is_horizontal(ScrEdge *se)
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, const eScreenAxis dir_axis, float fac)
#define SCREEN_DIR_IS_HORIZONTAL(dir)
AZone * ED_area_actionzone_find_xy(ScrArea *area, const int xy[2])
#define SCREEN_DIR_IS_VERTICAL(dir)
#define AREAJOINTOLERANCEX
#define AREAJOINTOLERANCEY
struct wmGizmoMap * gizmo_map
struct ARegionType * type
ScrGlobalAreaData * global
SpaceLink *(* create)(const ScrArea *area, const Scene *scene)
struct wmTimer * animtimer
struct wmMsgBus * message_bus
struct wmEvent * eventstate
struct WorkSpaceInstanceHook * workspace_hook
ccl_device_inline int abs(int x)
void WM_cursor_set(wmWindow *win, int curs)
void WM_draw_region_free(ARegion *region)
bool WM_cursor_test_motion_and_update(const int mval[2])
void WM_window_status_area_tag_redraw(wmWindow *win)
void WM_event_remove_area_handler(ListBase *handlers, void *area)
void WM_report(eReportType type, const char *message)
void WM_event_modal_handler_region_replace(wmWindow *win, const ARegion *old_region, ARegion *new_region)
void WM_event_modal_handler_area_replace(wmWindow *win, const ScrArea *old_area, ScrArea *new_area)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_event_ui_handler_region_popup_replace(wmWindow *win, const ARegion *old_region, ARegion *new_region)
void WM_event_remove_handlers(bContext *C, ListBase *handlers)
void WM_event_add_mousemove(wmWindow *win)
bool WM_gizmo_highlight_set(wmGizmoMap *gzmap, wmGizmo *gz)
void WM_msgbus_clear_by_owner(wmMsgBus *mbus, void *owner)
blender::int2 WM_window_native_pixel_size(const wmWindow *win)
void WM_window_ensure_active_view_layer(wmWindow *win)
WorkSpaceLayout * WM_window_get_active_layout(const wmWindow *win)
void WM_event_timer_sleep(wmWindowManager *wm, wmWindow *, wmTimer *timer, bool do_sleep)
void WM_window_set_active_screen(wmWindow *win, WorkSpace *workspace, bScreen *screen)
void WM_window_set_dpi(const wmWindow *win)
wmWindow * WM_window_open(bContext *C, const char *title, const rcti *rect_unscaled, int space_type, bool toplevel, bool dialog, bool temp, eWindowAlignment alignment, void(*area_setup_fn)(bScreen *screen, ScrArea *area, void *user_data), void *area_setup_user_data)
bool WM_window_is_temp_screen(const wmWindow *win)
void WM_window_rect_calc(const wmWindow *win, rcti *r_rect)
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)
Scene * WM_window_get_active_scene(const wmWindow *win)
void WM_event_timer_remove(wmWindowManager *wm, wmWindow *, wmTimer *timer)
WorkSpace * WM_window_get_active_workspace(const wmWindow *win)
wmTimer * WM_event_timer_add(wmWindowManager *wm, wmWindow *win, const int event_type, const double time_step)
bScreen * WM_window_get_active_screen(const wmWindow *win)