83 float color[4] = {0.0f, 0.0f, 0.0f, 0.25f};
155 if (list->type && list->type->listener) {
156 list->type->listener(list,
params);
164 if (
params->area->type &&
params->area->type->listener) {
185 ICON_FULLSCREEN_EXIT,
207 const float size = 0.2f *
U.widget_unit;
208 const float l = 1.0f;
209 const float s = 0.25f;
210 const float hl =
l / 2.0f;
211 const float points[6][2] = {
212 {0, -hl}, {
l, hl}, {
l - s, hl + s}, {0, s + s - hl}, {s -
l, hl + s}, {-
l, hl}};
213 const float center[2] = {(x1 + x2) / 2, (y1 + y2) / 2};
247 for (
int i = 0;
i < 6;
i++) {
283 const float color[4] = {0.05f, 0.05f, 0.05f, alpha};
286 rect.
xmin = float(az->
x1) +
U.pixelsize;
287 rect.
xmax = float(az->
x2) -
U.pixelsize;
288 rect.
ymin = float(az->
y1) +
U.pixelsize;
289 rect.
ymax = float(az->
y2) -
U.pixelsize;
330 if (az->alpha > 0.0f) {
347 float header_color[4];
354 if (header_color[3] > 0.0f) {
355 const rctf rect = {0.0f, float(region->
winx), 0.0f, float(region->
winy)};
364 if (header_color[3] < 0.3f) {
368 const float x1 =
x -
pad;
369 const float x2 =
x + width +
pad;
372 float color[4] = {0.0f, 0.0f, 0.0f, 0.3f};
375 const rctf rect = {x1, x2, y1, y2};
396 while (region && region->
prev) {
397 region = region->
prev;
399 for (; region; region = region->
next) {
425 msg_sub_value_region_tag_redraw.
owner = region;
426 msg_sub_value_region_tag_redraw.
user_data = region;
429 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
439 const char *panel_category_tool =
"Tool";
442 bool update_region =
false;
443 if (category &&
STREQ(category, panel_category_tool)) {
444 update_region =
true;
450 STREQ(panel->type->category, panel_category_tool))
452 update_region =
true;
460 msg_sub_value_region_tag_redraw.
owner = region;
461 msg_sub_value_region_tag_redraw.
user_data = region;
464 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
476 return (area->
winx < 3) || (area->
winy < 3);
528 if (region->
runtime->headerstr) {
548 if (
G.debug_value == 888) {
579 float color[4] = {0.0f, 0.0f, 0.0f, 0.8f};
616 msg_sub_value_region_tag_redraw.
owner = region;
617 msg_sub_value_region_tag_redraw.
user_data = region;
623 message_subscribe_params.
context =
C;
625 message_subscribe_params.
workspace = workspace;
626 message_subscribe_params.
scene = scene;
627 message_subscribe_params.
screen = screen;
628 message_subscribe_params.
area = area;
629 message_subscribe_params.
region = region;
705 region->
runtime->drawrct = *rct;
736 if (region->regiontype == regiontype) {
765 for (
ARegion *following_region = changed_region->
next; following_region;
766 following_region = following_region->
next)
770 if (changed_region->
overlap != following_region->overlap) {
793 dist = region->
winy + scale_region->
winy -
U.pixelsize;
797 dist = region->
winx + scale_region->
winx -
U.pixelsize;
811 if (region == scale_region) {
816 dist -= region->winx;
819 dist -= region->winx;
828 dist -= region->winy;
837 dist -= region->winy;
866 search_filter[0] !=
'\0',
875 if (area ==
nullptr) {
882 if (region->regiontype ==
RGN_TYPE_HEADER && region->runtime->visible) {
894 if (ar->
runtime->headerstr ==
nullptr) {
912 const float space_factor = 0.0f,
913 const bool inverted =
false)
916 if (workspace ==
nullptr) {
921 item.
text = std::move(text);
925 workspace->
runtime->status.append(std::move(item));
962 const bool inverted =
false)
966 if (icon >= ICON_MOUSE_LMB && icon <= ICON_MOUSE_MMB_SCROLL) {
1007 const int propvalue,
1008 const bool inverted)
1076 const float coords[4][4] = {
1099 for (
int i = 0;
i < 4;
i++) {
1103 ((coords[
i][0] == 0 && coords[
i][1] == 0) ||
1116 az->
x1 = coords[
i][0];
1117 az->
y1 = coords[
i][1];
1118 az->
x2 = coords[
i][2];
1119 az->
y2 = coords[
i][3];
1168 return back[3] < 50;
1176 const bool transparent = !is_narrow && region->
overlap &&
1184 const int pad_out = (is_narrow ? 2.0f : 3.0f) *
UI_SCALE_FAC;
1185 const int pad_in = (is_narrow ? 1.0f : (transparent ? 8.0f : 4.0f)) *
UI_SCALE_FAC / aspect;
1219 float edge_offset = 1.0f;
1220 const float tab_size_x = 1.0f *
U.widget_unit;
1221 const float tab_size_y = 0.5f *
U.widget_unit;
1226 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1228 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1233 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1235 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1240 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1242 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1246 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1248 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1257 const bool is_fullscreen)
1272 if (is_hidden && is_fullscreen) {
1297 const bool is_fullscreen)
1356 const int alignment,
1357 const bool is_fullscreen)
1394 if (is_fullscreen) {
1421 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1434 align1 = align_iter;
1436 if (align1 != align) {
1469 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1507 if (
ELEM(regiontype,
1520 if (
ELEM(regiontype,
1541 rcti *remainder_prev = remainder;
1543 if (region ==
nullptr) {
1547 int prev_winx = region->
winx;
1548 int prev_winy = region->
winy;
1578 if ((region->
sizex == 0) && (region->
runtime->type->prefsizex == 0)) {
1581 if ((region->
sizey == 0) && (region->
runtime->type->prefsizey == 0)) {
1588 ((region->
sizex > 1) ? region->
sizex + 0.5f : region->
runtime->type->prefsizex);
1626 rcti overlap_remainder_margin = *overlap_remainder;
1652 BLI_rcti_isect(&winrct_test, &overlap_remainder_margin, &winrct_test);
1665 region->
winrct = *remainder;
1669 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1681 region->
winrct = *winrct;
1695 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1707 region->
winrct = *winrct;
1722 region->
winrct = *remainder;
1744 region->
winrct = *remainder;
1751 while (region_test) {
1753 region_test = region_test->
next;
1761 printf(
"region quadsplit failed\n");
1773 else if (
quad == 2) {
1777 else if (
quad == 3) {
1801 if (region->
winx > 1) {
1804 if (region->
winy > 1) {
1815 region->
winrct = (region->
overlap) ? *overlap_remainder : *remainder;
1817 switch (alignment) {
1843 remainder = remainder_prev;
1852 *overlap_remainder = *remainder;
1860 if (region->
winx != prev_winx || region->
winy != prev_winy) {
1900 const short px_min = short(
U.pixelsize * 2.0f);
1940 region->
runtime->visible = !hidden;
1970 if (region->
runtime->gizmo_map ==
nullptr) {
2063 rcti overlap_rect = rect;
2077 if (region->runtime->type->init) {
2078 region->runtime->type->init(
wm, region);
2105 if (sl_iter->spacetype == space_type) {
2112 if (
LIKELY(sl != sl_old)) {
2131 if (area->
type ==
nullptr) {
2140 BLI_assert_msg(region->runtime->type !=
nullptr,
"Region type not valid for this space type");
2168 rcti overlap_rect = rect;
2187 if (region->runtime->visible) {
2190 wm, area, region, ®ion->
runtime->handlers, region->runtime->type->keymapflag);
2192 if (region->runtime->type->init) {
2193 region->runtime->type->init(
wm, region);
2260 if (region->runtime->type && region->runtime->type->exit) {
2261 region->runtime->type->exit(
wm, region);
2266 region->runtime->visible =
false;
2270 if (region->runtime->regiontimer) {
2272 region->runtime->regiontimer =
nullptr;
2275 if (
wm->message_bus) {
2317 if (region !=
nullptr) {
2318 if ((region->
runtime->gizmo_map !=
nullptr) &&
2323 if (area && region->
runtime->type && region->
runtime->type->cursor) {
2324 region->
runtime->type->cursor(win, area, region);
2358 const bool do_init =
true;
2368 if (do_fade && region->
overlap) {
2384 const char spacetype = area_dst->
spacetype;
2390 area_dst->
flag = (area_dst->
flag & ~flag_copy) | (area_src->
flag & flag_copy);
2418 std::swap(area_dst->
type, area_src->
type);
2462 const int index = region->regiontype;
2486 if ((tool_header_alignment != -1) &&
2488 ((tool_header_hidden ==
false) ||
2492 (header_hidden && tool_header_hidden)))
2494 return tool_header_alignment;
2496 if (header_alignment != -1) {
2497 return header_alignment;
2530 const short tool_header_alignment_src =
2536 region_align_info_src, -1);
2539 if (primary_header_alignment_src == -1) {
2544 const short tool_header_alignment_dst =
2551 short header_alignment_sync = -1;
2552 short tool_header_alignment_sync = -1;
2553 short footer_alignment_sync = -1;
2557 if (((header_alignment_src != -1) == (header_alignment_dst != -1)) &&
2558 ((tool_header_alignment_src != -1) == (tool_header_alignment_dst != -1)) &&
2559 (tool_header_hidden_src == tool_header_hidden_dst))
2561 if (header_alignment_dst != -1) {
2562 header_alignment_sync = header_alignment_src;
2564 if (tool_header_alignment_dst != -1) {
2565 tool_header_alignment_sync = tool_header_alignment_src;
2571 region_align_info_dst, -1);
2573 if (primary_header_alignment_src != primary_header_alignment_dst) {
2574 if ((header_alignment_dst != -1) && (tool_header_alignment_dst != -1)) {
2575 if (header_alignment_dst == tool_header_alignment_dst) {
2577 tool_header_alignment_sync = primary_header_alignment_src;
2578 header_alignment_sync = primary_header_alignment_src;
2582 tool_header_alignment_sync = primary_header_alignment_src;
2590 if (header_alignment_dst != -1) {
2591 header_alignment_sync = primary_header_alignment_src;
2593 if (tool_header_alignment_dst != -1) {
2594 tool_header_alignment_sync = primary_header_alignment_src;
2600 if (footer_alignment_dst != -1) {
2601 if ((header_alignment_dst != -1) && (header_alignment_dst == footer_alignment_dst)) {
2603 footer_alignment_sync = primary_header_alignment_src;
2607 footer_alignment_sync = (primary_header_alignment_src ==
RGN_ALIGN_BOTTOM) ?
2614 if (header_alignment_sync != -1) {
2616 if (region !=
nullptr) {
2622 if (tool_header_alignment_sync != -1) {
2624 if (region !=
nullptr) {
2630 if (footer_alignment_sync != -1) {
2632 if (region !=
nullptr) {
2646 region_by_type[index] = region;
2657 region_align_info_src, ®ion_align_info_dst, region_by_type);
2713 bool sync_header_alignment =
false;
2717 sync_header_alignment =
true;
2722 if (skip_region_exit && area->
type) {
2729 if (skip_region_exit && area->
type) {
2743 if (sl_iter->spacetype == type) {
2778 sl = st->
create(area, scene);
2791 if (sync_header_alignment) {
2827 if (!
G.background) {
2890 int xco = 0.4 *
U.widget_unit;
2900 1.6 *
U.widget_unit,
2909 return xco + 1.7 *
U.widget_unit;
2935 GPU_clear_color(back[3] * back[0], back[3] * back[1], back[3] * back[2], back[3]);
2952 for (
uint i = 0; arr[
i];
i++) {
2976 char *unique_panel_str,
2977 const char *search_filter,
2984 if (unique_panel_str) {
2997 const bool search_filter_active = search_filter !=
nullptr && search_filter[0] !=
'\0';
3000 int xco, yco, h = 0;
3063 if (open || search_filter_active) {
3101 if (!ends_with_layout_panel_header) {
3111 if (open || search_filter_active) {
3116 if (child_pt->
draw && (!child_pt->
poll || child_pt->
poll(
C, child_pt))) {
3139 const char *contexts[],
3140 const char *category_override,
3144 if (panel_type->
parent) {
3148 if (category_override) {
3155 if (contexts !=
nullptr && panel_type->
context[0]) {
3169 if (panel_type->
poll && !panel_type->
poll(
C, panel_type)) {
3187 bool *use_category_tabs)
3192 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3205 *use_category_tabs =
false;
3211 const int max_width)
3223 const char *contexts[],
3224 const char *category_override)
3228 LinkNode *panel_types_stack =
nullptr;
3235 region->
runtime->category =
nullptr;
3240 bool use_category_tabs = (category_override ==
nullptr) &&
3243 const char *category =
nullptr;
3247 bool update_tot_size =
true;
3264 if (use_category_tabs) {
3267 if (use_category_tabs) {
3268 margin_x = category_tabs_width;
3273 const int em = (region->
runtime->type->prefsizex) ? 10 : 20;
3284 bool has_instanced_panel =
false;
3285 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3289 has_instanced_panel =
true;
3295 if ((panel ==
nullptr) || ((panel->
flag &
PNL_PIN) == 0)) {
3303 update_tot_size =
false;
3307 C, region, ®ion->
panels, pt, panel, width, em,
nullptr, search_filter, op_context);
3311 if (has_instanced_panel) {
3313 if (panel->type ==
nullptr) {
3319 if (use_category_tabs && panel->type->category[0] && !
STREQ(category, panel->type->category))
3327 update_tot_size =
false;
3352 if (region_layout_based) {
3357 if (panel !=
nullptr) {
3358 const int size_dyn[2] = {
3363 if ((region->
sizex != size_dyn[0]) || (region->
sizey != size_dyn[1])) {
3364 region->
sizex = size_dyn[0];
3365 region->
sizey = size_dyn[1];
3374 if (v2d->
cur.
ymax < -FLT_EPSILON) {
3389 if (update_tot_size) {
3394 if (use_category_tabs) {
3395 region->
runtime->category = category;
3432 if (region->
runtime->category) {
3437 bool use_mask =
false;
3439 if (region->
runtime->category &&
3454 const char *contexts[])
3458 C, region, ®ion->
runtime->type->paneltypes, op_context, contexts,
nullptr);
3499 const char *search_filter)
3509 if (panel ==
nullptr) {
3529 panel_type->
draw(
C, panel);
3542 if (!panel_type_child->
poll || panel_type_child->
poll(
C, panel_type_child)) {
3558 const char *contexts[],
3559 const char *category_override)
3566 LinkNode *panel_types_stack =
nullptr;
3573 const char *category =
nullptr;
3574 bool use_category_tabs = (category_override ==
nullptr) &&
3576 if (use_category_tabs) {
3581 bool has_result =
true;
3582 bool has_instanced_panel =
false;
3583 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3587 has_instanced_panel =
true;
3591 if (use_category_tabs) {
3606 if (!has_result && has_instanced_panel) {
3612 if (use_category_tabs) {
3613 if (panel->type->category[0] && !
STREQ(category, panel->type->category)) {
3640 const float buttony_scale = buttony / float(
UI_UNIT_Y);
3644 int yco = buttony + (region->
winy - buttony) / 2;
3652 if (ht->poll && !ht->poll(
C, ht)) {
3660 if (buttony_scale != 1.0f) {
3664 Header header = {
nullptr};
3668 ht->draw(
C, &header);
3675 maxco = std::max(xco, maxco);
3681 maxco = std::max(xco, maxco);
3685 if (region_layout_based && (region->
sizex != new_sizex)) {
3689 region->
sizex = new_sizex;
3700 if (!region_layout_based) {
3799 return area->
global !=
nullptr;
3816 int event_xy_other[2];
3818 if (win_other && win_other != win) {
3825 if (!area && !win->
parent) {
3848 if (area->
global ==
nullptr) {
3852 for (
ScrArea *area_iter = area->
next; area_iter; area_iter = area_iter->
next) {
3867 const char *text_array[],
3868 const float fill_color[4],
3869 const bool full_redraw)
3885 const char **
text = &text_array[0];
3889 1.2f *
U.widget_unit);
3896 const char **
text = &text_array[0];
3903 rect.
ymin = rect.
ymax - header_height * num_lines;
3922 int offset = num_lines - 1;
3924 const char **
text = &text_array[0];
3927 rect.
xmin + 0.6f *
U.widget_unit,
3928 rect.
ymin + 0.3f *
U.widget_unit + offset * header_height,
3939 GPU_scissor(scissor[0], scissor[1], scissor[2], scissor[3]);
3944 const float fill_color[4],
3945 const bool full_redraw)
3947 const char *text_array[2] = {
text,
nullptr};
3959 row->
label(field, ICON_NONE);
3960 row->
label(value, ICON_NONE);
3990 float gridsize = 0.5f * (zoomx + zoomy);
3991 float gridstep = 1.0f / 32.0f;
3992 if (gridsize <= 0.0f) {
3996 if (gridsize < 1.0f) {
3997 while (gridsize < 1.0f) {
4003 while (gridsize >= 4.0f) {
4009 float blendfac = 0.25f * gridsize -
floorf(0.25f * gridsize);
4010 CLAMP(blendfac, 0.0f, 1.0f);
4012 int count_fine = 1.0f / gridstep;
4013 int count_large = 1.0f / (4.0f * gridstep);
4015 if (count_fine > 0) {
4023 float theme_color[3];
4028 for (
int i = 0;
i < count_fine;
i++) {
4040 if (count_large > 0) {
4045 for (
int i = 0;
i < count_large;
i++) {
4054 fac += 4.0f * gridstep;
4067 ARegion *region_iter = region;
4070 while (region_iter->
prev) {
4071 region_iter = region_iter->
prev;
4077 for (; region_iter; region_iter = region_iter->
next) {
4078 if (region != region_iter && region_iter->
overlap) {
4117 if (rect->
xmin == 0 && rect->
ymin == 0 && rect->
xmax == 0 && rect->
ymax == 0) {
4129 const int region_bottom = rect_visible->
ymin;
4149 float2 text_dims = {0.0f, 0.0f};
4166 &rect, bg_color,
nullptr, 1.0f, outline_color,
U.pixelsize, 3 *
UI_SCALE_FAC);
4171 BLF_draw(fontid, numstr,
sizeof(numstr));
4175 ARegion *region,
const int num_segments,
const int *points,
const int sfra,
const int efra)
4180 const int region_bottom = rect_visible->
ymin;
4186 for (
int a = 0; a < num_segments; a++) {
4187 float x1 = float(points[a * 2] - sfra) / (efra - sfra + 1) * region->
winx;
4188 float x2 = float(points[a * 2 + 1] - sfra + 1) / (efra - sfra + 1) * region->
winx;
4204 if (region->
runtime->gizmo_map !=
nullptr) {
4212 if (region->
runtime->type->message_subscribe !=
nullptr) {
4220 const int snap_match_threshold = 16;
4221 if (region->
runtime->type->snap_size !=
nullptr) {
4222 const int snap_size_x = region->
runtime->type->snap_size(region, region->
sizex, 0);
4223 const int snap_size_y = region->
runtime->type->snap_size(region, region->
sizey, 1);
4224 return (((
abs(region->
sizex - snap_size_x) <= snap_match_threshold) << 0) |
4225 ((
abs(region->
sizey - snap_size_y) <= snap_match_threshold) << 1));
4232 bool changed =
false;
4233 if (region->
runtime->type->snap_size !=
nullptr) {
4234 if (snap_flag & (1 << 0)) {
4235 short snap_size = region->
runtime->type->snap_size(region, region->
sizex, 0);
4236 if (snap_size != region->
sizex) {
4237 region->
sizex = snap_size;
4241 if (snap_flag & (1 << 1)) {
4242 short snap_size = region->
runtime->type->snap_size(region, region->
sizey, 1);
4243 if (snap_size != region->
sizey) {
4244 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)
@ PANEL_TYPE_LAYOUT_VERT_BAR
@ PANEL_TYPE_HEADER_EXPAND
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)
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_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_disable(int fontid, int option)
void BLF_draw(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
void BLF_enable(int fontid, int option)
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_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)
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(dst, format,...)
char * STRNCPY(char(&dst)[N], const char *src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define BLI_string_join(...)
#define SET_FLAG_FROM_TEST(value, test, flag)
#define RGN_ALIGN_ENUM_FROM_MASK(align)
@ RGN_FLAG_SEARCH_FILTER_UPDATE
@ RGN_FLAG_SEARCH_FILTER_ACTIVE
@ RGN_TYPE_ASSET_SHELF_HEADER
#define RGN_TYPE_HAS_CATEGORY_MASK
@ RGN_DRAW_EDITOR_OVERLAYS
@ RGN_ALIGN_HIDE_WITH_PREV
#define RGN_TYPE_IS_HEADER_ANY(regiontype)
#define RGN_ALIGN_FLAG_FROM_MASK(align)
@ AREA_FLAG_ACTIVE_TOOL_UPDATE
@ AREA_FLAG_REGION_SIZE_UPDATE
@ AREA_FLAG_STACKED_FULLSCREEN
@ AREA_FLAG_ACTIONZONES_UPDATE
@ SPACE_FLAG_TYPE_WAS_ACTIVE
@ SPACE_FLAG_TYPE_TEMPORARY
@ USER_APP_HIDE_REGION_TOGGLE
@ USER_APP_LOCK_CORNER_SPLIT
@ USER_APP_LOCK_EDGE_RESIZE
void ED_area_tag_redraw(ScrArea *area)
bool ED_area_is_global(const 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
GPUFrameBuffer * GPU_framebuffer_active_get()
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
void GPU_clear_color(float red, float green, float blue, float alpha)
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_blend(eGPUBlend blend)
void GPU_line_width(float width)
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)
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)
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)
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)
uiBut * uiDefButR(uiBlock *block, int 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_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)
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)
#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)
void uiLayoutSetScaleY(uiLayout *layout, float scale)
uiLayout * UI_block_layout(uiBlock *block, int dir, int type, int x, int y, int size, int em, int padding, const uiStyle *style)
int uiLayoutGetWidth(uiLayout *layout)
void UI_block_layout_free(uiBlock *block)
void UI_block_layout_resolve(uiBlock *block, int *r_x, int *r_y)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
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
@ WM_OP_INVOKE_REGION_WIN
ScrArea * ED_screen_areas_iter_next(const bScreen *screen, const ScrArea *area)
void ED_area_do_mgs_subscribe_for_tool_header(const wmRegionMessageSubscribeParams *params)
void ED_area_tag_redraw(ScrArea *area)
int ED_region_snap_size_test(const ARegion *region)
static constexpr float STATUS_MOUSE_ICON_PAD
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_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)
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 region_draw_emboss(const ARegion *region, const rcti *scirct, int sides)
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)
void ED_region_panels_layout_ex(const bContext *C, ARegion *region, ListBase *paneltypes, wmOperatorCallContext op_context, const char *contexts[], const char *category_override)
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)
static void area_draw_azone(short, short, short, short)
Corner widgets use for dragging and splitting the view.
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_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_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)
void ED_region_panels_ex(const bContext *C, ARegion *region, wmOperatorCallContext op_context, const char *contexts[])
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)
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, wmOperatorCallContext op_context)
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 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
VecBase< float, 4 > float4
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)
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)
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::@375167011012175274231163302145063336101142324357 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 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)