77 transparent[3] = 0.0f;
119 if (list->type && list->type->listener) {
120 list->type->listener(list,
params);
128 if (
params->area->type &&
params->area->type->listener) {
149 ICON_FULLSCREEN_EXIT,
182 const float size = 0.2f *
U.widget_unit;
183 const float l = 1.0f;
184 const float s = 0.25f;
185 const float hl =
l / 2.0f;
186 const float points[6][2] = {
187 {0, -hl}, {
l, hl}, {
l - s, hl + s}, {0, s + s - hl}, {s -
l, hl + s}, {-
l, hl}};
188 const float center[2] = {(x1 + x2) / 2, (y1 + y2) / 2};
222 for (
int i = 0;
i < 6;
i++) {
258 const float color[4] = {0.05f, 0.05f, 0.05f, alpha};
305 if (az->alpha > 0.0f) {
322 float header_color[4];
343 x = (region->
winx - width) / 2.0f;
345 const float x1 =
x -
pad;
346 const float x2 =
x + width +
pad;
350 header_color[3] = std::max(header_color[3], 0.6f);
352 const rctf rect = {x1, x2, y1, y2};
373 while (region && region->
prev) {
374 region = region->
prev;
376 for (; region; region = region->
next) {
402 msg_sub_value_region_tag_redraw.
owner = region;
403 msg_sub_value_region_tag_redraw.
user_data = region;
406 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
416 const char *panel_category_tool =
"Tool";
419 bool update_region =
false;
420 if (category &&
STREQ(category, panel_category_tool)) {
421 update_region =
true;
427 STREQ(panel->type->category, panel_category_tool))
429 update_region =
true;
437 msg_sub_value_region_tag_redraw.
owner = region;
438 msg_sub_value_region_tag_redraw.
user_data = region;
441 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
453 return (area->
winx < 3) || (area->
winy < 3);
505 if (region->
runtime->headerstr) {
525 if (
G.debug_value == 888) {
558 float color[4] = {0.0f, 0.0f, 0.0f, 0.8f};
595 msg_sub_value_region_tag_redraw.
owner = region;
596 msg_sub_value_region_tag_redraw.
user_data = region;
602 message_subscribe_params.
context =
C;
604 message_subscribe_params.
workspace = workspace;
605 message_subscribe_params.
scene = scene;
606 message_subscribe_params.
screen = screen;
607 message_subscribe_params.
area = area;
608 message_subscribe_params.
region = region;
684 region->
runtime->drawrct = *rct;
715 if (region->regiontype == regiontype) {
744 for (
ARegion *following_region = changed_region->
next; following_region;
745 following_region = following_region->
next)
749 if (changed_region->
overlap != following_region->overlap) {
772 dist = region->
winy + scale_region->
winy -
U.pixelsize;
776 dist = region->
winx + scale_region->
winx -
U.pixelsize;
790 if (region == scale_region) {
795 dist -= region->winx;
798 dist -= region->winx;
807 dist -= region->winy;
816 dist -= region->winy;
845 search_filter[0] !=
'\0',
854 if (area ==
nullptr) {
861 if (region->regiontype ==
RGN_TYPE_HEADER && region->runtime->visible) {
873 if (ar->
runtime->headerstr ==
nullptr) {
891 const float space_factor = 0.0f,
892 const bool inverted =
false)
895 if (workspace ==
nullptr) {
900 item.
text = std::move(text);
904 workspace->
runtime->status.append(std::move(item));
941 const bool inverted =
false)
945 if (icon >= ICON_MOUSE_LMB && icon <= ICON_MOUSE_MMB_SCROLL) {
1060 const float coords[4][4] = {
1083 for (
int i = 0;
i < 4;
i++) {
1087 ((coords[
i][0] == 0 && coords[
i][1] == 0) ||
1100 az->
x1 = coords[
i][0];
1101 az->
y1 = coords[
i][1];
1102 az->
x2 = coords[
i][2];
1103 az->
y2 = coords[
i][3];
1152 return back[3] < 50;
1160 const bool transparent = !is_narrow && region->
overlap &&
1168 const int pad_out = (is_narrow ? 2.0f : 3.0f) *
UI_SCALE_FAC;
1169 const int pad_in = (is_narrow ? 1.0f : (transparent ? 8.0f : 4.0f)) *
UI_SCALE_FAC / aspect;
1203 float edge_offset = 1.0f;
1204 const float tab_size_x = 1.0f *
U.widget_unit;
1205 const float tab_size_y = 0.5f *
U.widget_unit;
1210 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1212 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1217 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1219 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1224 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1226 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1230 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1232 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1241 const bool is_fullscreen)
1260 if (is_hidden && is_fullscreen) {
1285 const bool is_fullscreen)
1344 const int alignment,
1345 const bool is_fullscreen)
1382 if (is_fullscreen) {
1409 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1422 align1 = align_iter;
1424 if (align1 != align) {
1457 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1485 if (
ELEM(regiontype,
1500 if (
ELEM(regiontype,
1513 if (
ELEM(regiontype,
1534 rcti *remainder_prev = remainder;
1536 if (region ==
nullptr) {
1540 int prev_winx = region->
winx;
1541 int prev_winy = region->
winy;
1571 if ((region->
sizex == 0) && (region->
runtime->type->prefsizex == 0)) {
1574 if ((region->
sizey == 0) && (region->
runtime->type->prefsizey == 0)) {
1581 ((region->
sizex > 1) ? region->
sizex + 0.5f : region->
runtime->type->prefsizex);
1619 rcti overlap_remainder_margin = *overlap_remainder;
1645 BLI_rcti_isect(&winrct_test, &overlap_remainder_margin, &winrct_test);
1658 region->
winrct = *remainder;
1662 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1674 region->
winrct = *winrct;
1688 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1700 region->
winrct = *winrct;
1715 region->
winrct = *remainder;
1737 region->
winrct = *remainder;
1744 while (region_test) {
1746 region_test = region_test->
next;
1754 printf(
"region quadsplit failed\n");
1766 else if (
quad == 2) {
1770 else if (
quad == 3) {
1799 if (region->
winx > 1) {
1802 if (region->
winy > 1) {
1813 region->
winrct = (region->
overlap) ? *overlap_remainder : *remainder;
1815 switch (alignment) {
1841 remainder = remainder_prev;
1850 *overlap_remainder = *remainder;
1858 if (region->
winx != prev_winx || region->
winy != prev_winy) {
1933 region->
runtime->visible = !hidden;
1963 if (region->
runtime->gizmo_map ==
nullptr) {
2059 rcti overlap_rect = rect;
2073 if (region->runtime->type->init) {
2074 region->runtime->type->init(
wm, region);
2101 if (sl_iter->spacetype == space_type) {
2108 if (
LIKELY(sl != sl_old)) {
2127 if (area->
type ==
nullptr) {
2136 BLI_assert_msg(region->runtime->type !=
nullptr,
"Region type not valid for this space type");
2164 rcti overlap_rect = rect;
2183 if (region->runtime->visible) {
2186 wm, area, region, ®ion->
runtime->handlers, region->runtime->type->keymapflag);
2188 if (region->runtime->type->init) {
2189 region->runtime->type->init(
wm, region);
2256 if (region->runtime->type && region->runtime->type->exit) {
2257 region->runtime->type->exit(
wm, region);
2262 region->runtime->visible =
false;
2266 if (region->runtime->regiontimer) {
2268 region->runtime->regiontimer =
nullptr;
2271 if (
wm->runtime->message_bus) {
2313 if (region !=
nullptr) {
2314 if ((region->
runtime->gizmo_map !=
nullptr) &&
2319 if (area && region->
runtime->type && region->
runtime->type->cursor) {
2320 region->
runtime->type->cursor(win, area, region);
2354 const bool do_init =
true;
2380 const char spacetype = area_dst->
spacetype;
2386 area_dst->
flag = (area_dst->
flag & ~flag_copy) | (area_src->
flag & flag_copy);
2414 std::swap(area_dst->
type, area_src->
type);
2458 const int index = region->regiontype;
2482 if ((tool_header_alignment != -1) &&
2484 ((tool_header_hidden ==
false) ||
2488 (header_hidden && tool_header_hidden)))
2490 return tool_header_alignment;
2492 if (header_alignment != -1) {
2493 return header_alignment;
2526 const short tool_header_alignment_src =
2532 region_align_info_src, -1);
2535 if (primary_header_alignment_src == -1) {
2540 const short tool_header_alignment_dst =
2547 short header_alignment_sync = -1;
2548 short tool_header_alignment_sync = -1;
2549 short footer_alignment_sync = -1;
2553 if (((header_alignment_src != -1) == (header_alignment_dst != -1)) &&
2554 ((tool_header_alignment_src != -1) == (tool_header_alignment_dst != -1)) &&
2555 (tool_header_hidden_src == tool_header_hidden_dst))
2557 if (header_alignment_dst != -1) {
2558 header_alignment_sync = header_alignment_src;
2560 if (tool_header_alignment_dst != -1) {
2561 tool_header_alignment_sync = tool_header_alignment_src;
2567 region_align_info_dst, -1);
2569 if (primary_header_alignment_src != primary_header_alignment_dst) {
2570 if ((header_alignment_dst != -1) && (tool_header_alignment_dst != -1)) {
2571 if (header_alignment_dst == tool_header_alignment_dst) {
2573 tool_header_alignment_sync = primary_header_alignment_src;
2574 header_alignment_sync = primary_header_alignment_src;
2578 tool_header_alignment_sync = primary_header_alignment_src;
2586 if (header_alignment_dst != -1) {
2587 header_alignment_sync = primary_header_alignment_src;
2589 if (tool_header_alignment_dst != -1) {
2590 tool_header_alignment_sync = primary_header_alignment_src;
2596 if (footer_alignment_dst != -1) {
2597 if ((header_alignment_dst != -1) && (header_alignment_dst == footer_alignment_dst)) {
2599 footer_alignment_sync = primary_header_alignment_src;
2603 footer_alignment_sync = (primary_header_alignment_src ==
RGN_ALIGN_BOTTOM) ?
2610 if (header_alignment_sync != -1) {
2612 if (region !=
nullptr) {
2618 if (tool_header_alignment_sync != -1) {
2620 if (region !=
nullptr) {
2626 if (footer_alignment_sync != -1) {
2628 if (region !=
nullptr) {
2642 region_by_type[index] = region;
2653 region_align_info_src, ®ion_align_info_dst, region_by_type);
2686 screen->active_region =
nullptr;
2719 bool sync_header_alignment =
false;
2723 sync_header_alignment =
true;
2728 if (skip_region_exit && area->
type) {
2735 if (skip_region_exit && area->
type) {
2749 if (sl_iter->spacetype == type) {
2784 sl = st->
create(area, scene);
2797 if (sync_header_alignment) {
2833 if (!
G.background) {
2896 int xco = 0.4 *
U.widget_unit;
2906 1.6 *
U.widget_unit,
2915 return xco + 1.7 *
U.widget_unit;
2941 GPU_clear_color(back[3] * back[0], back[3] * back[1], back[3] * back[2], back[3]);
2958 for (
uint i = 0; arr[
i];
i++) {
2982 char *unique_panel_str,
2983 const char *search_filter,
2990 if (unique_panel_str) {
3003 const bool search_filter_active = search_filter !=
nullptr && search_filter[0] !=
'\0';
3077 if (open || search_filter_active) {
3115 if (!ends_with_layout_panel_header) {
3125 if (open || search_filter_active) {
3130 if (child_pt->
draw && (!child_pt->
poll || child_pt->
poll(
C, child_pt))) {
3153 const char *contexts[],
3154 const char *category_override,
3158 if (panel_type->
parent) {
3162 if (category_override) {
3169 if (contexts !=
nullptr && panel_type->
context[0]) {
3183 if (panel_type->
poll && !panel_type->
poll(
C, panel_type)) {
3201 bool *use_category_tabs)
3206 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3219 *use_category_tabs =
false;
3225 const int max_width)
3237 const char *contexts[],
3238 const char *category_override)
3242 LinkNode *panel_types_stack =
nullptr;
3249 region->
runtime->category =
nullptr;
3254 bool use_category_tabs = (category_override ==
nullptr) &&
3257 const char *category =
nullptr;
3261 bool update_tot_size =
true;
3278 if (use_category_tabs) {
3281 if (use_category_tabs) {
3282 margin_x = category_tabs_width;
3287 const int em = (region->
runtime->type->prefsizex) ? 10 : 20;
3298 bool has_instanced_panel =
false;
3299 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3303 has_instanced_panel =
true;
3309 if ((panel ==
nullptr) || ((panel->
flag &
PNL_PIN) == 0)) {
3317 update_tot_size =
false;
3321 C, region, ®ion->
panels, pt, panel, width, em,
nullptr, search_filter, op_context);
3325 if (has_instanced_panel) {
3327 if (panel->type ==
nullptr) {
3333 if (use_category_tabs && panel->type->category[0] && !
STREQ(category, panel->type->category))
3337 if (!
panel_add_check(
C, workspace, contexts, category_override, panel->type)) {
3345 update_tot_size =
false;
3370 if (region_layout_based) {
3375 if (panel !=
nullptr) {
3376 const int size_dyn[2] = {
3381 if ((region->
sizex != size_dyn[0]) || (region->
sizey != size_dyn[1])) {
3382 region->
sizex = size_dyn[0];
3383 region->
sizey = size_dyn[1];
3392 if (v2d->
cur.
ymax < -FLT_EPSILON) {
3407 if (update_tot_size) {
3412 if (use_category_tabs) {
3413 region->
runtime->category = category;
3426 const float gradient_width = (narrow ? 4.0f : 16.0f) *
UI_SCALE_FAC;
3448 float offset_x =
mask->xmin;
3449 float offset_y =
mask->ymin;
3462 float transparent[4];
3464 transparent[3] = 0.0f;
3465 float grad_color[4];
3471 rect.
xmax = offset_x + width;
3472 rect.
xmin = offset_x + rect.
xmax - gradient_width;
3473 rect.
ymin = offset_y;
3481 rect.
xmin = offset_x;
3485 rect.
xmax = rect.
xmin + gradient_width;
3486 rect.
ymin = offset_y;
3499 rect.
xmin = offset_x;
3500 rect.
xmax = offset_x + width;
3501 rect.
ymax = offset_y + height;
3502 rect.
ymin = rect.
ymax - gradient_width;
3509 rect.
xmin = offset_x;
3510 rect.
xmax = offset_x + width;
3511 rect.
ymin = offset_y;
3512 rect.
ymax = rect.
ymin + gradient_width;
3523 ®ion->
runtime->type->paneltypes,
3554 std::min(region->
runtime->type->prefsizex, 20);
3563 if (region->
runtime->category) {
3568 bool use_mask =
false;
3579 mask.xmax -= category_width;
3582 mask.xmin += category_width;
3601 const char *contexts[])
3605 C, region, ®ion->
runtime->type->paneltypes, op_context, contexts,
nullptr);
3646 const char *search_filter)
3656 if (panel ==
nullptr) {
3697 panel_type->
draw(
C, panel);
3710 if (!panel_type_child->
poll || panel_type_child->
poll(
C, panel_type_child)) {
3726 const char *contexts[],
3727 const char *category_override)
3734 LinkNode *panel_types_stack =
nullptr;
3741 const char *category =
nullptr;
3742 bool use_category_tabs = (category_override ==
nullptr) &&
3744 if (use_category_tabs) {
3749 bool has_result =
true;
3750 bool has_instanced_panel =
false;
3751 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3755 has_instanced_panel =
true;
3759 if (use_category_tabs) {
3774 if (!has_result && has_instanced_panel) {
3780 if (use_category_tabs) {
3781 if (panel->type->category[0] && !
STREQ(category, panel->type->category)) {
3822 if (ht->poll && !ht->poll(
C, ht)) {
3837 if (buttony_scale != 1.0f) {
3841 Header header = {
nullptr};
3845 ht->draw(
C, &header);
3851 co.x = layout.
width();
3852 maxco = std::max(co.x, maxco);
3858 maxco = std::max(co.x, maxco);
3862 if (region_layout_based && (region->
sizex != new_sizex)) {
3866 region->
sizex = new_sizex;
3877 if (!region_layout_based) {
3985 return area->
global !=
nullptr;
4002 int event_xy_other[2];
4004 if (win_other && win_other != win) {
4011 if (!area && !win->
parent) {
4034 if (area->
global ==
nullptr) {
4038 for (
ScrArea *area_iter = area->
next; area_iter; area_iter = area_iter->
next) {
4053 const char *text_array[],
4054 const float fill_color[4],
4055 const bool full_redraw)
4071 const char **
text = &text_array[0];
4075 1.2f *
U.widget_unit);
4082 const char **
text = &text_array[0];
4089 rect.
ymin = rect.
ymax - header_height * num_lines;
4108 int offset = num_lines - 1;
4110 const char **
text = &text_array[0];
4113 rect.
xmin + 0.6f *
U.widget_unit,
4114 rect.
ymin + 0.3f *
U.widget_unit + offset * header_height,
4125 GPU_scissor(scissor[0], scissor[1], scissor[2], scissor[3]);
4130 const float fill_color[4],
4131 const bool full_redraw)
4133 const char *text_array[2] = {
text,
nullptr};
4145 row->
label(field, ICON_NONE);
4146 row->
label(value, ICON_NONE);
4176 float gridsize = 0.5f * (zoomx + zoomy);
4177 float gridstep = 1.0f / 32.0f;
4178 if (gridsize <= 0.0f) {
4182 if (gridsize < 1.0f) {
4183 while (gridsize < 1.0f) {
4189 while (gridsize >= 4.0f) {
4195 float blendfac = 0.25f * gridsize -
floorf(0.25f * gridsize);
4196 CLAMP(blendfac, 0.0f, 1.0f);
4198 int count_fine = 1.0f / gridstep;
4199 int count_large = 1.0f / (4.0f * gridstep);
4201 if (count_fine > 0) {
4205 format,
"color", blender::gpu::VertAttrType::SFLOAT_32_32_32);
4210 float theme_color[3];
4215 for (
int i = 0;
i < count_fine;
i++) {
4227 if (count_large > 0) {
4232 for (
int i = 0;
i < count_large;
i++) {
4241 fac += 4.0f * gridstep;
4254 ARegion *region_iter = region;
4257 while (region_iter->
prev) {
4258 region_iter = region_iter->
prev;
4264 for (; region_iter; region_iter = region_iter->
next) {
4265 if (region != region_iter && region_iter->
overlap) {
4304 if (rect->
xmin == 0 && rect->
ymin == 0 && rect->
xmax == 0 && rect->
ymax == 0) {
4316 const int region_bottom = rect_visible->
ymin;
4337 float2 text_dims = {0.0f, 0.0f};
4354 &rect, bg_color,
nullptr, 1.0f, outline_color,
U.pixelsize, 3 *
UI_SCALE_FAC);
4359 BLF_draw(fontid, numstr,
sizeof(numstr));
4363 ARegion *region,
const int num_segments,
const int *points,
const int sfra,
const int efra)
4368 const int region_bottom = rect_visible->
ymin;
4375 for (
int a = 0; a < num_segments; a++) {
4376 float x1 =
float(points[a * 2] - sfra) / (efra - sfra + 1) * region->
winx;
4377 float x2 =
float(points[a * 2 + 1] - sfra + 1) / (efra - sfra + 1) * region->
winx;
4393 if (region->
runtime->gizmo_map !=
nullptr) {
4401 if (region->
runtime->type->message_subscribe !=
nullptr) {
4409 const int snap_match_threshold = 16;
4410 if (region->
runtime->type->snap_size !=
nullptr) {
4411 const int snap_size_x = region->
runtime->type->snap_size(region, region->
sizex, 0);
4412 const int snap_size_y = region->
runtime->type->snap_size(region, region->
sizey, 1);
4413 return (((
abs(region->
sizex - snap_size_x) <= snap_match_threshold) << 0) |
4414 ((
abs(region->
sizey - snap_size_y) <= snap_match_threshold) << 1));
4421 bool changed =
false;
4422 if (region->
runtime->type->snap_size !=
nullptr) {
4423 if (snap_flag & (1 << 0)) {
4424 short snap_size = region->
runtime->type->snap_size(region, region->
sizex, 0);
4425 if (snap_size != region->
sizex) {
4426 region->
sizex = snap_size;
4430 if (snap_flag & (1 << 1)) {
4431 short snap_size = region->
runtime->type->snap_size(region, region->
sizey, 1);
4432 if (snap_size != region->
sizey) {
4433 region->
sizey = snap_size;
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)
Scene * CTX_data_scene(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_spacedata_copylist(ListBase *lb_dst, ListBase *lb_src)
void BKE_spacedata_freelist(ListBase *lb)
ScrArea ScrArea * BKE_screen_find_area_xy(const bScreen *screen, int spacetype, const int xy[2]) ATTR_NONNULL(1
void BKE_screen_area_free(ScrArea *area)
SpaceType * BKE_spacetype_from_id(int spaceid)
ARegionType * BKE_regiontype_from_id(const SpaceType *st, int regionid)
void BKE_area_region_free(SpaceType *st, ARegion *region)
@ PANEL_TYPE_LAYOUT_VERT_BAR
@ PANEL_TYPE_HEADER_EXPAND
ARegion * BKE_area_region_copy(const SpaceType *st, const ARegion *region)
void BKE_area_region_panels_free(ListBase *panels)
void BKE_workspace_status_clear(WorkSpace *workspace)
bool BKE_workspace_owner_id_check(const WorkSpace *workspace, const char *owner_id) ATTR_NONNULL()
bScreen * BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
void BLF_size(int fontid, float size)
void BLF_enable(int fontid, FontFlags flag)
void BLF_clipping(int fontid, int xmin, int ymin, int xmax, int ymax)
void BLF_width_and_height(int fontid, const char *str, size_t str_len, float *r_width, float *r_height) ATTR_NONNULL()
#define BLF_DRAW_STR_DUMMY_MAX
void BLF_draw(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
float BLF_width(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
void BLF_disable(int fontid, FontFlags flag)
void BLF_position(int fontid, float x, float y, float z)
#define BLI_assert_msg(a, msg)
#define BLI_linklist_prepend_alloca(listp, ptr)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_freelinkN(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_addhead(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const ListBase *lb)
MINLINE int round_fl_to_int(float a)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
void BLI_rcti_union(struct rcti *rct_a, const struct rcti *rct_b)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
bool BLI_rcti_is_valid(const struct rcti *rect)
void BLI_rcti_translate(struct rcti *rect, int x, int y)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
void BLI_rcti_resize(struct rcti *rect, int x, int y)
void BLI_rcti_sanitize(struct rcti *rect)
bool BLI_rcti_isect(const struct rcti *src1, const struct rcti *src2, struct rcti *dest)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE int BLI_rcti_cent_y(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
BLI_INLINE int BLI_rcti_cent_x(const struct rcti *rct)
void BLI_str_rstrip(char *str) ATTR_NONNULL(1)
#define SNPRINTF_UTF8(dst, format,...)
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
#define BLI_string_join(...)
#define SET_FLAG_FROM_TEST(value, test, flag)
@ AREA_FLAG_ACTIVE_TOOL_UPDATE
@ AREA_FLAG_REGION_SIZE_UPDATE
@ AREA_FLAG_STACKED_FULLSCREEN
@ AREA_FLAG_ACTIONZONES_UPDATE
#define RGN_ALIGN_ENUM_FROM_MASK(align)
@ RGN_DRAW_EDITOR_OVERLAYS
@ RGN_ALIGN_HIDE_WITH_PREV
@ RGN_TYPE_ASSET_SHELF_HEADER
#define RGN_TYPE_HAS_CATEGORY_MASK
@ RGN_FLAG_SEARCH_FILTER_UPDATE
@ RGN_FLAG_INDICATE_OVERFLOW
@ RGN_FLAG_SEARCH_FILTER_ACTIVE
#define RGN_TYPE_IS_HEADER_ANY(regiontype)
#define RGN_ALIGN_FLAG_FROM_MASK(align)
@ SPACE_FLAG_TYPE_WAS_ACTIVE
@ SPACE_FLAG_TYPE_TEMPORARY
@ USER_AREA_CORNER_HANDLE
@ USER_APP_HIDE_REGION_TOGGLE
@ USER_APP_LOCK_CORNER_SPLIT
@ USER_APP_LOCK_EDGE_RESIZE
void ED_area_tag_redraw(ScrArea *area)
void ED_region_visibility_change_update_animated(bContext *C, ScrArea *area, ARegion *region)
void ED_area_exit(bContext *C, ScrArea *area)
AZone * ED_area_azones_update(ScrArea *area, const int mouse_xy[2])
void ED_region_do_msg_notify_tag_redraw(bContext *C, wmMsgSubscribeKey *msg_key, wmMsgSubscribeValue *msg_val)
void ED_region_draw_cb_draw(const bContext *C, ARegion *region, int type)
#define REGION_DRAW_POST_PIXEL
void GPU_clear_color(float red, float green, float blue, float alpha)
void GPU_framebuffer_bind(blender::gpu::FrameBuffer *fb)
blender::gpu::FrameBuffer * GPU_framebuffer_active_get()
void GPU_matrix_identity_set()
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_3D_FLAT_COLOR
void GPU_line_width(float width)
void GPU_blend(GPUBlend blend)
void GPU_scissor(int x, int y, int width, int height)
void GPU_scissor_get(int coords[4])
Read Guarded memory(de)allocation.
void UI_region_button_sections_draw(const ARegion *region, int colorid, uiButtonSectionsAlign align)
void UI_blocklist_update_window_matrix(const bContext *C, const ListBase *lb)
bool UI_panel_is_closed(const Panel *panel)
uiBut * uiDefButR(uiBlock *block, ButType type, int retval, std::optional< blender::StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, blender::StringRefNull propname, int index, float min, float max, std::optional< blender::StringRef > tip)
void UI_draw_roundbox_4fv(const rctf *rect, bool filled, float rad, const float col[4])
void UI_panel_category_draw_all(ARegion *region, const char *category_id_active)
PanelCategoryDyn * UI_panel_category_find(const ARegion *region, const char *idname)
#define INSTANCED_PANEL_UNIQUE_STR_SIZE
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, blender::ui::EmbossType emboss)
void UI_blocklist_free(const bContext *C, ARegion *region)
#define UI_PANEL_CATEGORY_MIN_WIDTH
Panel * UI_panel_find_by_type(ListBase *lb, const PanelType *pt)
void UI_draw_roundbox_4fv_ex(const rctf *rect, const float inner1[4], const float inner2[4], float shade_dir, const float outline[4], float outline_width, float rad)
void UI_blocklist_update_view_for_buttons(const bContext *C, const ListBase *lb)
void UI_panel_header_buttons_begin(Panel *panel)
void UI_panels_free_instanced(const bContext *C, ARegion *region)
const uiStyle * UI_style_get_dpi()
bool UI_panel_category_is_visible(const ARegion *region)
void UI_block_listen(const uiBlock *block, const wmRegionListenerParams *listener_params)
void UI_block_translate(uiBlock *block, float x, float y)
void UI_draw_roundbox_corner_set(int type)
#define UI_PANEL_MARGIN_X
void UI_panels_begin(const bContext *C, ARegion *region)
Panel * UI_panel_begin(ARegion *region, ListBase *lb, uiBlock *block, PanelType *pt, Panel *panel, bool *r_open)
int UI_panel_size_y(const Panel *panel)
void UI_panels_end(const bContext *C, ARegion *region, int *r_x, int *r_y)
void UI_region_message_subscribe(ARegion *region, wmMsgBus *mbus)
bool UI_panel_is_active(const Panel *panel)
const uiStyle * UI_style_get()
bool UI_panel_should_show_background(const ARegion *region, const PanelType *panel_type)
#define UI_AZONESPOTW_RIGHT
void UI_draw_roundbox_3fv_alpha(const rctf *rect, bool filled, float rad, const float col[3], float alpha)
void UI_panel_category_clear_all(ARegion *region)
#define UI_PANEL_CATEGORY_MARGIN_WIDTH
void UI_blocklist_free_inactive(const bContext *C, ARegion *region)
void UI_blocklist_draw(const bContext *C, const ListBase *lb)
void UI_panel_label_offset(const uiBlock *block, int *r_x, int *r_y)
int UI_icon_from_event_type(short event_type, short event_value)
void UI_panel_end(Panel *panel, int width, int height)
void UI_panel_header_buttons_end(Panel *panel)
bool UI_panel_is_dragging(const Panel *panel)
void UI_panels_draw(const bContext *C, ARegion *region)
void UI_draw_roundbox_aa(const rctf *rect, bool filled, float rad, const float color[4])
void UI_list_panel_unique_str(Panel *panel, char *r_name)
void UI_panel_category_add(ARegion *region, const char *name)
void UI_region_handlers_add(ListBase *handlers)
void UI_block_end(const bContext *C, uiBlock *block)
#define UI_AZONESPOTW_LEFT
void UI_block_set_search_only(uiBlock *block, bool search_only)
const char * UI_panel_category_active_get(ARegion *region, bool set_fallback)
void UI_region_free_active_but_all(bContext *C, ARegion *region)
void UI_icon_draw_alpha(float x, float y, int icon_id, float alpha)
#define UI_NO_ICON_OVERLAY_TEXT
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], bool mono_border, const IconTextOverlay *text_overlay, const bool inverted=false)
bool UI_block_apply_search_filter(uiBlock *block, const char *search_filter)
bool uiLayoutEndsWithPanelHeader(const uiLayout &layout)
void UI_Theme_Store(bThemeState *theme_state)
void UI_Theme_Restore(const bThemeState *theme_state)
void UI_GetThemeColor3fv(int colorid, float col[3])
void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3])
void UI_ThemeClearColor(int colorid)
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
void UI_FontThemeColor(int fontid, int colorid)
void UI_SetTheme(int spacetype, int regionid)
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom)
void UI_view2d_view_restore(const bContext *C)
void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
void UI_view2d_totRect_set(View2D *v2d, int width, int height)
void UI_view2d_view_ortho(const View2D *v2d)
void UI_view2d_mask_from_win(const View2D *v2d, rcti *r_mask)
@ V2D_COMMONVIEW_PANELS_UI
void UI_view2d_view_to_region(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
float UI_view2d_scale_get_x(const View2D *v2d)
@ WM_CAPABILITY_WINDOW_DECORATION_STYLES
ScrArea * ED_screen_areas_iter_next(const bScreen *screen, const ScrArea *area)
void ED_area_do_mgs_subscribe_for_tool_header(const wmRegionMessageSubscribeParams *params)
static void ed_panel_draw(const bContext *C, ARegion *region, ListBase *lb, PanelType *pt, Panel *panel, int w, int em, char *unique_panel_str, const char *search_filter, blender::wm::OpCallContext op_context)
void ED_area_tag_redraw(ScrArea *area)
int ED_region_snap_size_test(const ARegion *region)
static constexpr float STATUS_MOUSE_ICON_PAD
static void area_draw_azone(ScrArea *area, ARegion *region, AZone *az)
Corner widgets use for dragging and splitting the view.
bool ED_region_property_search(const bContext *C, ARegion *region, ListBase *paneltypes, const char *contexts[], const char *category_override)
void ED_region_tag_refresh_ui(ARegion *region)
void ED_area_init(bContext *C, const wmWindow *win, ScrArea *area)
void ED_area_do_mgs_subscribe_for_tool_ui(const wmRegionMessageSubscribeParams *params)
void ED_region_update_rect(ARegion *region)
ScrArea * ED_screen_areas_iter_first(const wmWindow *win, const bScreen *screen)
BLI_INLINE bool streq_array_any(const char *s, const char *arr[])
static bool panel_add_check(const bContext *C, const WorkSpace *workspace, const char *contexts[], const char *category_override, PanelType *panel_type)
void ED_region_cursor_set(wmWindow *win, ScrArea *area, ARegion *region)
const char * ED_area_region_search_filter_get(const ScrArea *area, const ARegion *region)
void ED_region_clear(const bContext *C, const ARegion *region, const int colorid)
void ED_region_draw_overflow_indication(const ScrArea *area, ARegion *region, rcti *mask)
void ED_region_do_listen(wmRegionListenerParams *params)
int ED_area_max_regionsize(const ScrArea *area, const ARegion *scale_region, const AZEdge edge)
static void region_evaulate_visibility(ARegion *region)
int ED_area_global_size_y(const ScrArea *area)
void ED_region_search_filter_update(const ScrArea *area, ARegion *region)
void ED_region_toggle_hidden(bContext *C, ARegion *region)
static void area_calc_totrct(const bScreen *screen, ScrArea *area, const rcti *window_rect)
static int panel_draw_width_from_max_width_get(const ARegion *region, const PanelType *panel_type, const int max_width)
static void region_draw_blocks_in_view2d(const bContext *C, const ARegion *region)
static bool region_uses_category_tabs(const ScrArea *area, const ARegion *region)
static SpaceLink * area_get_prevspace(ScrArea *area)
static void area_azone_tag_update(ScrArea *area)
int ED_area_global_min_size_y(const ScrArea *area)
ScrArea * ED_area_find_under_cursor(const bContext *C, int spacetype, const int event_xy[2])
static void area_azone_init(const wmWindow *win, const bScreen *screen, ScrArea *area)
static void region_draw_gradient(const ARegion *region)
void ED_area_and_region_types_init(ScrArea *area)
void ED_region_floating_init(ARegion *region)
void ED_area_status_text(ScrArea *area, const char *str)
static void region_draw_azones(ScrArea *area, ARegion *region)
void ED_area_tag_redraw_no_rebuild(ScrArea *area)
int ED_area_global_max_size_y(const ScrArea *area)
void ED_region_panels(const bContext *C, ARegion *region)
void ED_region_do_msg_notify_tag_redraw(bContext *, wmMsgSubscribeKey *, wmMsgSubscribeValue *msg_val)
void region_toggle_hidden(bContext *C, ARegion *region, const bool do_fade)
static void ed_workspace_status_icon_item(WorkSpace *workspace, const int icon, const bool inverted=false)
void ED_region_header(const bContext *C, ARegion *region)
static void region_overlap_fix(ScrArea *area, ARegion *region)
const rcti * ED_region_visible_rect(ARegion *region)
static void area_offscreen_exit(wmWindowManager *wm, wmWindow *win, ScrArea *area)
static void ed_workspace_status_space(WorkSpace *workspace, const float space_factor)
void ED_area_do_listen(wmSpaceTypeListenerParams *params)
static bool panel_property_search(const bContext *C, ARegion *region, const uiStyle *style, Panel *panel, PanelType *panel_type, const char *search_filter)
static const char * region_panels_collect_categories(ARegion *region, LinkNode *panel_types_stack, bool *use_category_tabs)
void ED_region_cache_draw_cached_segments(ARegion *region, const int num_segments, const int *points, const int sfra, const int efra)
static void region_align_info_from_area(ScrArea *area, RegionTypeAlignInfo *r_align_info)
void ED_region_header_init(ARegion *region)
static constexpr float STATUS_AFTER_TEXT
void ED_region_header_with_button_sections(const bContext *C, ARegion *region, const uiButtonSectionsAlign align)
bool ED_area_is_global(const ScrArea *area)
void ED_region_cache_draw_background(ARegion *region)
void ED_area_swapspace(bContext *C, ScrArea *sa1, ScrArea *sa2)
void ED_region_header_draw_with_button_sections(const bContext *C, const ARegion *region, const uiButtonSectionsAlign align)
static void ed_workspace_status_text_item(WorkSpace *workspace, std::string text)
void ED_region_pixelspace(const ARegion *region)
void ED_area_offscreen_free(wmWindowManager *wm, wmWindow *win, ScrArea *area)
void ED_area_data_copy(ScrArea *area_dst, ScrArea *area_src, const bool do_free)
void ED_region_header_draw(const bContext *C, ARegion *region)
static void region_azone_edge_init(ScrArea *area, ARegion *region, AZEdge edge, const bool is_fullscreen)
void ED_region_tag_redraw_no_rebuild(ARegion *region)
ScrArea * ED_area_offscreen_create(wmWindow *win, eSpace_Type space_type)
void ED_area_tag_redraw_regiontype(ScrArea *area, int regiontype)
bool ED_area_has_shared_border(ScrArea *a, ScrArea *b)
static void region_azone_edge(const ScrArea *area, AZone *az, const ARegion *region)
bool ED_region_snap_size_apply(ARegion *region, int snap_flag)
bool ED_region_is_overlap(int spacetype, int regiontype)
static void metadata_panel_draw_field(const char *field, const char *value, void *ctx_v)
void ED_region_tag_redraw_partial(ARegion *region, const rcti *rct, bool rebuild)
static void region_azone_scrollbar_init(ScrArea *area, ARegion *region, AZScrollDirection direction)
void ED_region_panels_ex(const bContext *C, ARegion *region, blender::wm::OpCallContext op_context, const char *contexts[])
void ED_area_tag_region_size_update(ScrArea *area, ARegion *changed_region)
static void region_visible_rect_calc(ARegion *region, rcti *rect)
static void region_clear_fully_transparent(const bContext *C)
static void region_azones_add(const bScreen *screen, ScrArea *area, ARegion *region)
void ED_region_visibility_change_update(bContext *C, ScrArea *area, ARegion *region)
void ED_region_do_layout(bContext *C, ARegion *region)
void ED_region_tag_redraw_cursor(ARegion *region)
void ED_area_newspace(bContext *C, ScrArea *area, int type, const bool skip_region_exit)
void ED_region_cache_draw_curfra_label(const int framenr, const float x, const float y)
void ED_area_data_swap(ScrArea *area_dst, ScrArea *area_src)
static void region_draw_status_text(ScrArea *, ARegion *region)
static bool region_background_is_transparent(const ScrArea *area, const ARegion *region)
void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *area)
void ED_area_tag_refresh(ScrArea *area)
static bool region_azone_edge_poll(const ScrArea *area, const ARegion *region, const bool is_fullscreen)
void ED_region_info_draw_multiline(ARegion *region, const char *text_array[], const float fill_color[4], const bool full_redraw)
int ED_region_global_size_y()
static void region_azone_tab_plus(ScrArea *area, AZone *az, ARegion *region)
static void ed_default_handlers(wmWindowManager *wm, ScrArea *area, ARegion *region, ListBase *handlers, int flag)
static short region_alignment_from_header_and_tool_header_state(const RegionTypeAlignInfo *region_align_info, const short fallback)
void ED_area_do_refresh(bContext *C, ScrArea *area)
static void region_align_info_to_area_for_headers(const RegionTypeAlignInfo *region_align_info_src, const RegionTypeAlignInfo *region_align_info_dst, ARegion *region_by_type[RGN_TYPE_NUM])
void ED_region_panels_layout(const bContext *C, ARegion *region)
void ED_region_panels_init(wmWindowManager *wm, ARegion *region)
void ED_workspace_status_text(bContext *C, const char *str)
static void area_init_type_fallback(ScrArea *area, eSpace_Type space_type)
void ED_region_image_metadata_panel_draw(ImBuf *ibuf, uiLayout *layout)
void ED_region_tag_redraw_editor_overlays(ARegion *region)
static void region_draw_azone_tab_arrow(ScrArea *area, ARegion *region, AZone *az)
static void region_update_rect(ARegion *region)
int ED_area_header_switchbutton(const bContext *C, uiBlock *block, int yco)
void ED_region_info_draw(ARegion *region, const char *text, const float fill_color[4], const bool full_redraw)
void ED_region_visibility_change_update_ex(bContext *C, ScrArea *area, ARegion *region, bool is_hidden, bool do_init)
static void area_offscreen_init(ScrArea *area)
static constexpr float STATUS_BEFORE_TEXT
void ED_area_do_msg_notify_tag_refresh(bContext *, wmMsgSubscribeKey *, wmMsgSubscribeValue *msg_val)
static void ed_workspace_status_item(WorkSpace *workspace, std::string text, const int icon, const float space_factor=0.0f, const bool inverted=false)
void ED_region_do_draw(bContext *C, ARegion *region)
void ED_region_panels_layout_ex(const bContext *C, ARegion *region, ListBase *paneltypes, blender::wm::OpCallContext op_context, const char *contexts[], const char *category_override)
void ED_region_tag_redraw(ARegion *region)
static void region_align_info_to_area(ScrArea *area, const RegionTypeAlignInfo region_align_info_src[RGN_TYPE_NUM])
void ED_region_message_subscribe(wmRegionMessageSubscribeParams *params)
void ED_region_grid_draw(ARegion *region, float zoomx, float zoomy, float x0, float y0)
static ThemeColorID region_background_color_id(const bContext *, const ARegion *region)
static void fullscreen_azone_init(ScrArea *area, ARegion *region)
void ED_area_prevspace(bContext *C, ScrArea *area)
static void area_draw_azone_fullscreen(short, short, short x2, short y2, float alpha)
Corner widget use for quitting full-screen.
static bool area_is_pseudo_minimized(const ScrArea *area)
static void region_rect_recursive(ScrArea *area, ARegion *region, rcti *remainder, rcti *overlap_remainder, int quad)
static void draw_azone_arrow(float x1, float y1, float x2, float y2, AZEdge edge)
Edge widgets to show hidden panels such as the toolbar and headers.
static void region_azones_scrollbars_init(ScrArea *area, ARegion *region)
static void region_azones_add_edge(ScrArea *area, ARegion *region, const int alignment, const bool is_fullscreen)
void ED_region_panels_draw(const bContext *C, ARegion *region)
static int rct_fits(const rcti *rect, const eScreenAxis dir_axis, int size)
void ED_region_header_layout(const bContext *C, ARegion *region)
int pad[32 - sizeof(int)]
ATTR_WARN_UNUSED_RESULT const BMLoop * l
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
static RandomNumberGenerator from_random_seed()
void range(std::string text, int icon1, int icon2)
void separator(float factor=1.0f)
void item_bool(std::string text, bool inverted, int icon1, int icon2=0)
WorkspaceStatus(bContext *C)
void item(std::string text, int icon1, int icon2=0)
void opmodal(std::string text, const wmOperatorType *ot, int propvalue, bool inverted=false)
blender::gpu::Batch * quad
BLI_INLINE float fb(float length, float L)
void * MEM_callocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
static void add(blender::Map< std::string, std::string > &messages, Message &msg)
int2 block_layout_resolve(uiBlock *block)
void block_layout_free(uiBlock *block)
uiLayout & block_layout(uiBlock *block, LayoutDirection direction, LayoutType type, int x, int y, int size, int em, int padding, const uiStyle *style)
VecBase< int32_t, 2 > int2
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
bool area_regions_poll(bContext *C, const bScreen *screen, ScrArea *area)
eScreenDir area_getorientation(ScrArea *sa_a, ScrArea *sa_b)
void screen_area_spacelink_add(const Scene *scene, ScrArea *area, eSpace_Type space_type)
void(* draw)(const bContext *C, ARegion *region)
void(* layout)(const bContext *C, ARegion *region)
ListBase panels_category_active
ARegionRuntimeHandle * runtime
AZScrollDirection direction
void(* draw)(const bContext *C, Panel *panel)
char idname[BKE_ST_MAXNAME]
bool(* poll)(const bContext *C, PanelType *pt)
char context[BKE_ST_MAXNAME]
char category[BKE_ST_MAXNAME]
void(* draw_header_preset)(const bContext *C, Panel *panel)
void(* draw_header)(const bContext *C, Panel *panel)
LayoutPanels layout_panels
struct Panel_Runtime * runtime
struct RegionTypeAlignInfo::@241167160041050015211272272215127257032251326366 by_type[RGN_TYPE_NUM]
short butspacetype_subtype
ScrGlobalAreaData * global
void(* free)(SpaceLink *sl)
void(* refresh)(const bContext *C, ScrArea *area)
int(* space_subtype_get)(ScrArea *area)
SpaceLink *(* create)(const ScrArea *area, const Scene *scene)
void(* exit)(wmWindowManager *wm, ScrArea *area)
void(* init)(wmWindowManager *wm, ScrArea *area)
void(* space_subtype_item_extend)(bContext *C, EnumPropertyItem **item, int *totitem)
void(* space_subtype_set)(ScrArea *area, int value)
WorkSpaceRuntimeHandle * runtime
void scale_y_set(float scale)
void operator_context_set(blender::wm::OpCallContext opcontext)
void label(blender::StringRef name, int icon)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
uiLayout & row(bool align)
WindowRuntimeHandle * runtime
struct wmEvent * eventstate
struct WorkSpaceInstanceHook * workspace_hook
bool ED_time_scrub_event_in_region_poll(const wmWindow *, const ScrArea *, const ARegion *region, const wmEvent *event)
void WM_cursor_set(wmWindow *win, int curs)
bool WM_cursor_set_from_tool(wmWindow *win, const ScrArea *area, const ARegion *region)
ListBase * WM_dropboxmap_find(const char *idname, int spaceid, int regionid)
static ListBase dropboxes
bool WM_region_use_viewport(ScrArea *area, ARegion *region)
void WM_draw_region_free(ARegion *region)
wmEventHandler_Dropbox * WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes)
wmEventHandler_Keymap * WM_event_add_keymap_handler_poll(ListBase *handlers, wmKeyMap *keymap, EventHandlerPoll poll)
wmEventHandler_Keymap * WM_event_add_keymap_handler(ListBase *handlers, wmKeyMap *keymap)
bool WM_event_handler_region_marker_poll(const wmWindow *win, const ScrArea *area, const ARegion *region, const wmEvent *event)
void WM_event_get_keymap_from_toolsystem(wmWindowManager *wm, wmWindow *win, wmEventHandler_Keymap *handler, wmEventHandler_KeymapResult *km_result)
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)
wmEventHandler_Keymap * WM_event_add_keymap_handler_dynamic(ListBase *handlers, wmEventHandler_KeymapDynamicFn keymap_fn, void *user_data)
ScrArea * WM_window_status_area_find(wmWindow *win, bScreen *screen)
void WM_event_get_keymap_from_toolsystem_with_gizmos(wmWindowManager *wm, wmWindow *win, wmEventHandler_Keymap *handler, wmEventHandler_KeymapResult *km_result)
void WM_event_remove_handlers(bContext *C, ListBase *handlers)
void WM_event_add_mousemove(wmWindow *win)
bool WM_gizmomap_cursor_set(const wmGizmoMap *gzmap, wmWindow *win)
void WM_gizmomap_add_handlers(ARegion *region, wmGizmoMap *gzmap)
void WM_gizmomap_message_subscribe(const bContext *C, wmGizmoMap *gzmap, ARegion *region, wmMsgBus *mbus)
wmGizmoMap * WM_gizmomap_new_from_type(const wmGizmoMapType_Params *gzmap_params)
const wmKeyMapItem * WM_modalkeymap_find_propvalue(const wmKeyMap *km, const int propvalue)
wmKeyMap * WM_keymap_active(const wmWindowManager *wm, wmKeyMap *keymap)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
void WM_msgbus_clear_by_owner(wmMsgBus *mbus, void *owner)
#define WM_msg_subscribe_rna_prop(mbus, id_, data_, type_, prop_, value)
void WM_msg_subscribe_rna(wmMsgBus *mbus, PointerRNA *ptr, const PropertyRNA *prop, const wmMsgSubscribeValue *msg_val_params, const char *id_repr)
void wmPartialViewport(rcti *drawrct, const rcti *winrct, const rcti *partialrct)
void wmOrtho2_region_pixelspace(const ARegion *region)
bool WM_window_is_fullscreen(const wmWindow *win)
int WM_window_native_pixel_x(const wmWindow *win)
wmWindow * WM_window_find_under_cursor(wmWindow *win, const int event_xy[2], int r_event_xy_other[2])
eWM_CapabilitiesFlag WM_capabilities_flag()
void WM_window_screen_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)
void WM_window_title(wmWindowManager *wm, wmWindow *win, const char *title)
WorkSpace * WM_window_get_active_workspace(const wmWindow *win)
bScreen * WM_window_get_active_screen(const wmWindow *win)