81 float color[4] = {0.0f, 0.0f, 0.0f, 0.25f};
153 if (list->type && list->type->listener) {
154 list->type->listener(list,
params);
162 if (
params->area->type &&
params->area->type->listener) {
183 ICON_FULLSCREEN_EXIT,
205 const float size = 0.2f *
U.widget_unit;
206 const float l = 1.0f;
207 const float s = 0.25f;
208 const float hl =
l / 2.0f;
209 const float points[6][2] = {
210 {0, -hl}, {
l, hl}, {
l - s, hl + s}, {0, s + s - hl}, {s -
l, hl + s}, {-
l, hl}};
211 const float center[2] = {(x1 + x2) / 2, (y1 + y2) / 2};
245 for (
int i = 0; i < 6; i++) {
281 const float color[4] = {0.05f, 0.05f, 0.05f, alpha};
327 if (az->alpha > 0.0f) {
344 float header_color[4];
351 if (header_color[3] > 0.0f) {
361 if (header_color[3] < 0.3f) {
365 const float x1 =
x -
pad;
366 const float x2 =
x + width +
pad;
369 float color[4] = {0.0f, 0.0f, 0.0f, 0.3f};
372 const rctf rect = {x1, x2, y1, y2};
393 while (region && region->
prev) {
394 region = region->
prev;
396 for (; region; region = region->
next) {
422 msg_sub_value_region_tag_redraw.
owner = region;
423 msg_sub_value_region_tag_redraw.
user_data = region;
426 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
436 const char *panel_category_tool =
"Tool";
439 bool update_region =
false;
440 if (category &&
STREQ(category, panel_category_tool)) {
441 update_region =
true;
447 STREQ(panel->type->category, panel_category_tool))
449 update_region =
true;
457 msg_sub_value_region_tag_redraw.
owner = region;
458 msg_sub_value_region_tag_redraw.
user_data = region;
461 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
473 return (area->
winx < 3) || (area->
winy < 3);
544 if (
G.debug_value == 888) {
574 float color[4] = {0.0f, 0.0f, 0.0f, 0.8f};
611 msg_sub_value_region_tag_redraw.
owner = region;
612 msg_sub_value_region_tag_redraw.
user_data = region;
618 message_subscribe_params.
context =
C;
620 message_subscribe_params.
workspace = workspace;
621 message_subscribe_params.
scene = scene;
622 message_subscribe_params.
screen = screen;
623 message_subscribe_params.
area = area;
624 message_subscribe_params.
region = region;
730 if (region->regiontype == regiontype) {
759 for (
ARegion *following_region = changed_region->
next; following_region;
760 following_region = following_region->
next)
764 if (changed_region->
overlap != following_region->overlap) {
797 search_filter[0] !=
'\0',
806 if (area ==
nullptr) {
843 const float space_factor = 0.0f,
844 const bool inverted =
false)
847 if (workspace ==
nullptr) {
852 item.
text = std::move(text);
856 workspace->
runtime->status.append(std::move(item));
891 const bool inverted =
false)
895 if (icon >= ICON_MOUSE_LMB && icon <= ICON_MOUSE_MMB_SCROLL) {
997 const float coords[4][4] = {
1020 for (
int i = 0; i < 4; i++) {
1024 ((coords[i][0] == 0 && coords[i][1] == 0) ||
1037 az->
x1 = coords[i][0];
1038 az->
y1 = coords[i][1];
1039 az->
x2 = coords[i][2];
1040 az->
y2 = coords[i][3];
1089 return back[3] < 50;
1094 const int azonepad_edge = (0.1f *
U.widget_unit);
1098 const int overlap_padding =
1105 int(0.4f *
U.widget_unit) :
1111 az->
y1 = region->
winrct.
ymax - azonepad_edge - overlap_padding;
1113 az->
y2 = region->
winrct.
ymax + azonepad_edge - overlap_padding;
1117 az->
y1 = region->
winrct.
ymin + azonepad_edge + overlap_padding;
1119 az->
y2 = region->
winrct.
ymin - azonepad_edge + overlap_padding;
1122 az->
x1 = region->
winrct.
xmin - azonepad_edge + overlap_padding;
1124 az->
x2 = region->
winrct.
xmin + azonepad_edge + overlap_padding;
1128 az->
x1 = region->
winrct.
xmax + azonepad_edge - overlap_padding;
1130 az->
x2 = region->
winrct.
xmax - azonepad_edge - overlap_padding;
1140 float edge_offset = 1.0f;
1141 const float tab_size_x = 0.7f *
U.widget_unit;
1142 const float tab_size_y = 0.4f *
U.widget_unit;
1147 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1149 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1154 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1156 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1161 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1163 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1167 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1169 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1191 if (is_hidden && is_fullscreen) {
1212 const bool is_fullscreen)
1273 const int alignment,
1274 const bool is_fullscreen)
1311 if (is_fullscreen) {
1338 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1351 align1 = align_iter;
1353 if (align1 != align) {
1386 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1424 if (
ELEM(regiontype,
1437 if (
ELEM(regiontype,
1458 rcti *remainder_prev = remainder;
1460 if (region ==
nullptr) {
1464 int prev_winx = region->
winx;
1465 int prev_winy = region->
winy;
1543 rcti overlap_remainder_margin = *overlap_remainder;
1569 BLI_rcti_isect(&winrct_test, &overlap_remainder_margin, &winrct_test);
1582 region->
winrct = *remainder;
1586 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1598 region->
winrct = *winrct;
1612 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1624 region->
winrct = *winrct;
1639 region->
winrct = *remainder;
1661 region->
winrct = *remainder;
1668 while (region_test) {
1670 region_test = region_test->
next;
1678 printf(
"region quadsplit failed\n");
1690 else if (
quad == 2) {
1694 else if (
quad == 3) {
1718 if (region->
winx > 1) {
1721 if (region->
winy > 1) {
1732 region->
winrct = (region->
overlap) ? *overlap_remainder : *remainder;
1734 switch (alignment) {
1760 remainder = remainder_prev;
1769 *overlap_remainder = *remainder;
1777 if (region->
winx != prev_winx || region->
winy != prev_winy) {
1794 short px = short(
U.pixelsize);
1972 rcti overlap_rect = rect;
1986 if (region->type->init) {
1987 region->type->init(
wm, region);
2014 if (sl_iter->spacetype == space_type) {
2021 if (
LIKELY(sl != sl_old)) {
2040 if (area->
type ==
nullptr) {
2049 BLI_assert_msg(region->type !=
nullptr,
"Region type not valid for this space type");
2074 rcti overlap_rect = rect;
2093 if (region->visible) {
2097 if (region->type->init) {
2098 region->type->init(
wm, region);
2165 if (region->type && region->type->exit) {
2166 region->type->exit(
wm, region);
2171 region->visible =
false;
2175 if (region->regiontimer) {
2177 region->regiontimer =
nullptr;
2180 if (
wm->message_bus) {
2222 if (region !=
nullptr) {
2261 const bool do_init =
true;
2271 if (do_fade && region->
overlap) {
2287 const char spacetype = area_dst->
spacetype;
2293 area_dst->
flag = (area_dst->
flag & ~flag_copy) | (area_src->
flag & flag_copy);
2321 std::swap(area_dst->
type, area_src->
type);
2365 const int index = region->regiontype;
2389 if ((tool_header_alignment != -1) &&
2391 ((tool_header_hidden ==
false) ||
2395 (header_hidden && tool_header_hidden)))
2397 return tool_header_alignment;
2399 if (header_alignment != -1) {
2400 return header_alignment;
2433 const short tool_header_alignment_src =
2439 region_align_info_src, -1);
2442 if (primary_header_alignment_src == -1) {
2447 const short tool_header_alignment_dst =
2454 short header_alignment_sync = -1;
2455 short tool_header_alignment_sync = -1;
2456 short footer_alignment_sync = -1;
2460 if (((header_alignment_src != -1) == (header_alignment_dst != -1)) &&
2461 ((tool_header_alignment_src != -1) == (tool_header_alignment_dst != -1)) &&
2462 (tool_header_hidden_src == tool_header_hidden_dst))
2464 if (header_alignment_dst != -1) {
2465 header_alignment_sync = header_alignment_src;
2467 if (tool_header_alignment_dst != -1) {
2468 tool_header_alignment_sync = tool_header_alignment_src;
2474 region_align_info_dst, -1);
2476 if (primary_header_alignment_src != primary_header_alignment_dst) {
2477 if ((header_alignment_dst != -1) && (tool_header_alignment_dst != -1)) {
2478 if (header_alignment_dst == tool_header_alignment_dst) {
2480 tool_header_alignment_sync = primary_header_alignment_src;
2481 header_alignment_sync = primary_header_alignment_src;
2485 tool_header_alignment_sync = primary_header_alignment_src;
2493 if (header_alignment_dst != -1) {
2494 header_alignment_sync = primary_header_alignment_src;
2496 if (tool_header_alignment_dst != -1) {
2497 tool_header_alignment_sync = primary_header_alignment_src;
2503 if (footer_alignment_dst != -1) {
2504 if ((header_alignment_dst != -1) && (header_alignment_dst == footer_alignment_dst)) {
2506 footer_alignment_sync = primary_header_alignment_src;
2510 footer_alignment_sync = (primary_header_alignment_src ==
RGN_ALIGN_BOTTOM) ?
2517 if (header_alignment_sync != -1) {
2519 if (region !=
nullptr) {
2525 if (tool_header_alignment_sync != -1) {
2527 if (region !=
nullptr) {
2533 if (footer_alignment_sync != -1) {
2535 if (region !=
nullptr) {
2547 const int index = region->regiontype;
2549 region_by_type[index] = region;
2560 region_align_info_src, ®ion_align_info_dst, region_by_type);
2616 bool sync_header_alignment =
false;
2620 sync_header_alignment =
true;
2625 if (skip_region_exit && area->
type) {
2632 if (skip_region_exit && area->
type) {
2646 if (sl_iter->spacetype == type) {
2681 sl = st->
create(area, scene);
2694 if (sync_header_alignment) {
2774 int xco = 0.4 *
U.widget_unit;
2784 1.6 *
U.widget_unit,
2793 return xco + 1.7 *
U.widget_unit;
2819 GPU_clear_color(back[3] * back[0], back[3] * back[1], back[3] * back[2], back[3]);
2836 for (
uint i = 0; arr[i]; i++) {
2837 if (
STREQ(arr[i], s)) {
2860 char *unique_panel_str,
2861 const char *search_filter,
2868 if (unique_panel_str) {
2881 const bool search_filter_active = search_filter !=
nullptr && search_filter[0] !=
'\0';
2884 int xco, yco, h = 0;
2947 if (open || search_filter_active) {
2985 if (!ends_with_layout_panel_header) {
2995 if (open || search_filter_active) {
3000 if (child_pt->
draw && (!child_pt->
poll || child_pt->
poll(
C, child_pt))) {
3023 const char *contexts[],
3024 const char *category_override,
3028 if (panel_type->
parent) {
3032 if (category_override) {
3039 if (contexts !=
nullptr && panel_type->
context[0]) {
3053 if (panel_type->
poll && !panel_type->
poll(
C, panel_type)) {
3071 bool *use_category_tabs)
3076 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3089 *use_category_tabs =
false;
3095 const int max_width)
3107 const char *contexts[],
3108 const char *category_override)
3112 LinkNode *panel_types_stack =
nullptr;
3124 bool use_category_tabs = (category_override ==
nullptr) &&
3127 const char *category =
nullptr;
3131 bool update_tot_size =
true;
3140 if (use_category_tabs) {
3143 if (use_category_tabs) {
3144 margin_x = category_tabs_width;
3160 bool has_instanced_panel =
false;
3161 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3165 has_instanced_panel =
true;
3171 if ((panel ==
nullptr) || ((panel->
flag &
PNL_PIN) == 0)) {
3179 update_tot_size =
false;
3183 C, region, ®ion->
panels, pt, panel, width, em,
nullptr, search_filter, op_context);
3187 if (has_instanced_panel) {
3189 if (panel->type ==
nullptr) {
3195 if (use_category_tabs && panel->type->category[0] && !
STREQ(category, panel->type->category))
3203 update_tot_size =
false;
3228 if (region_layout_based) {
3233 if (panel !=
nullptr) {
3234 const int size_dyn[2] = {
3239 if ((region->
sizex != size_dyn[0]) || (region->
sizey != size_dyn[1])) {
3240 region->
sizex = size_dyn[0];
3241 region->
sizey = size_dyn[1];
3250 if (v2d->
cur.
ymax < -FLT_EPSILON) {
3265 if (update_tot_size) {
3270 if (use_category_tabs) {
3311 bool use_mask =
false;
3322 bool use_full_hide =
false;
3325 use_full_hide =
true;
3333 const char *contexts[])
3367 const char *search_filter)
3377 if (panel ==
nullptr) {
3397 panel_type->
draw(
C, panel);
3410 if (!panel_type_child->
poll || panel_type_child->
poll(
C, panel_type_child)) {
3426 const char *contexts[],
3427 const char *category_override)
3434 LinkNode *panel_types_stack =
nullptr;
3441 const char *category =
nullptr;
3442 bool use_category_tabs = (category_override ==
nullptr) &&
3444 if (use_category_tabs) {
3449 bool has_result =
true;
3450 bool has_instanced_panel =
false;
3451 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3455 has_instanced_panel =
true;
3459 if (use_category_tabs) {
3474 if (!has_result && has_instanced_panel) {
3480 if (use_category_tabs) {
3481 if (panel->type->category[0] && !
STREQ(category, panel->type->category)) {
3537 int yco = buttony + (region->
winy - buttony) / 2;
3548 if (ht->poll && !ht->poll(
C, ht)) {
3556 if (buttony_scale != 1.0f) {
3560 Header header = {
nullptr};
3564 ht->draw(
C, &header);
3585 if (region_layout_based && (region->
sizex != new_sizex)) {
3589 region->
sizex = new_sizex;
3600 if (!region_layout_based) {
3699 return area->
global !=
nullptr;
3716 int event_xy_other[2];
3718 if (win_other && win_other != win) {
3725 if (!area && !win->
parent) {
3748 if (area->
global ==
nullptr) {
3752 for (
ScrArea *area_iter = area->
next; area_iter; area_iter = area_iter->
next) {
3767 const char *text_array[],
3768 const float fill_color[4],
3769 const bool full_redraw)
3785 const char **
text = &text_array[0];
3789 1.2f *
U.widget_unit);
3796 const char **
text = &text_array[0];
3803 rect.
ymin = rect.
ymax - header_height * num_lines;
3822 int offset = num_lines - 1;
3824 const char **
text = &text_array[0];
3827 rect.
xmin + 0.6f *
U.widget_unit,
3828 rect.
ymin + 0.3f *
U.widget_unit + offset * header_height,
3839 GPU_scissor(scissor[0], scissor[1], scissor[2], scissor[3]);
3844 const float fill_color[4],
3845 const bool full_redraw)
3847 const char *text_array[2] = {
text,
nullptr};
3859 uiItemL(row, field, ICON_NONE);
3860 uiItemL(row, value, ICON_NONE);
3890 float gridsize = 0.5f * (zoomx + zoomy);
3891 float gridstep = 1.0f / 32.0f;
3892 if (gridsize <= 0.0f) {
3896 if (gridsize < 1.0f) {
3897 while (gridsize < 1.0f) {
3903 while (gridsize >= 4.0f) {
3909 float blendfac = 0.25f * gridsize -
floorf(0.25f * gridsize);
3910 CLAMP(blendfac, 0.0f, 1.0f);
3912 int count_fine = 1.0f / gridstep;
3913 int count_large = 1.0f / (4.0f * gridstep);
3915 if (count_fine > 0) {
3923 float theme_color[3];
3928 for (
int i = 0; i < count_fine; i++) {
3940 if (count_large > 0) {
3945 for (
int i = 0; i < count_large; i++) {
3954 fac += 4.0f * gridstep;
3967 ARegion *region_iter = region;
3970 while (region_iter->
prev) {
3971 region_iter = region_iter->
prev;
3977 for (; region_iter; region_iter = region_iter->
next) {
3978 if (region != region_iter && region_iter->
overlap) {
4017 if (rect->
xmin == 0 && rect->
ymin == 0 && rect->
xmax == 0 && rect->
ymax == 0) {
4029 const int region_bottom = rect_visible->
ymin;
4044 float font_dims[2] = {0.0f, 0.0f};
4056 immRecti(
pos,
x,
y,
x + font_dims[0] + 6.0f,
y + font_dims[1] + 4.0f);
4061 BLF_draw(fontid, numstr,
sizeof(numstr));
4065 ARegion *region,
const int num_segments,
const int *points,
const int sfra,
const int efra)
4070 const int region_bottom = rect_visible->
ymin;
4077 for (
int a = 0; a < num_segments; a++) {
4078 float x1 =
float(points[a * 2] - sfra) / (efra - sfra + 1) * region->
winx;
4079 float x2 =
float(points[a * 2 + 1] - sfra + 1) / (efra - sfra + 1) * region->
winx;
4111 const int snap_match_threshold = 16;
4115 return (((
abs(region->
sizex - snap_size_x) <= snap_match_threshold) << 0) |
4116 ((
abs(region->
sizey - snap_size_y) <= snap_match_threshold) << 1));
4123 bool changed =
false;
4125 if (snap_flag & (1 << 0)) {
4127 if (snap_size != region->
sizex) {
4128 region->
sizex = snap_size;
4132 if (snap_flag & (1 << 1)) {
4134 if (snap_size != region->
sizey) {
4135 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)
@ PANEL_TYPE_LAYOUT_VERT_BAR
@ PANEL_TYPE_HEADER_EXPAND
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)
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)
BLI_LINKSTACK_*** wrapper macros for using a LinkNode to store a stack of pointers,...
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
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)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const 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)
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)
float BLI_thread_frand(int thread) ATTR_WARN_UNUSED_RESULT
void BLI_rcti_union(struct rcti *rct_a, const struct rcti *rct_b)
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
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 int BLI_rcti_cent_x(const struct rcti *rct)
void BLI_str_rstrip(char *str) ATTR_NONNULL(1)
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
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_ALIGN_HIDE_WITH_PREV
@ RGN_DRAW_EDITOR_OVERLAYS
@ AREA_FLAG_ACTIVE_TOOL_UPDATE
@ AREA_FLAG_REGION_SIZE_UPDATE
@ AREA_FLAG_STACKED_FULLSCREEN
@ AREA_FLAG_ACTIONZONES_UPDATE
@ RGN_FLAG_SEARCH_FILTER_UPDATE
@ RGN_FLAG_SEARCH_FILTER_ACTIVE
@ RGN_TYPE_ASSET_SHELF_HEADER
#define RGN_TYPE_HAS_CATEGORY_MASK
#define RGN_TYPE_IS_HEADER_ANY(regiontype)
#define RGN_ALIGN_FLAG_FROM_MASK(align)
@ SPACE_FLAG_TYPE_WAS_ACTIVE
@ SPACE_FLAG_TYPE_TEMPORARY
@ USER_APP_HIDE_REGION_TOGGLE
@ USER_APP_LOCK_CORNER_SPLIT
@ USER_APP_LOCK_EDGE_RESIZE
@ V2D_SCROLL_VERTICAL_HANDLES
@ V2D_SCROLL_HORIZONTAL_HANDLES
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_clear_color(float red, float green, float blue, float alpha)
void GPU_framebuffer_bind(GPUFrameBuffer *framebuffer)
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.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
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
bool UI_block_apply_search_filter(uiBlock *block, const char *search_filter)
void UI_blocklist_free(const bContext *C, ARegion *region)
void uiLayoutSetScaleY(uiLayout *layout, float scale)
void uiItemL(uiLayout *layout, const char *name, int icon)
Panel * UI_panel_find_by_type(ListBase *lb, const PanelType *pt)
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)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
uiLayout * UI_block_layout(uiBlock *block, int dir, int type, int x, int y, int size, int em, int padding, const uiStyle *style)
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)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, eUIEmbossType emboss)
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)
void uiItemS(uiLayout *layout)
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)
int uiLayoutGetWidth(uiLayout *layout)
void UI_blocklist_draw(const bContext *C, const ListBase *lb)
void UI_block_layout_free(uiBlock *block)
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_block_layout_resolve(uiBlock *block, int *r_x, int *r_y)
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 uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
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)
uiBut * uiDefButR(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, PointerRNA *ptr, const char *propname, int index, float min, float max, const char *tip)
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)
bool uiLayoutEndsWithPanelHeader(const uiLayout &layout)
#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)
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_FontThemeColor(int fontid, int colorid)
void UI_SetTheme(int spacetype, int regionid)
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
#define UI_MARKER_MARGIN_Y
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()
void UI_view2d_scrollers_draw_ex(View2D *v2d, const rcti *mask_custom, bool use_full_hide)
float UI_view2d_scale_get_x(const View2D *v2d)
@ 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_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)
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 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])
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)
static void area_calc_totrct(ScrArea *area, const rcti *window_rect)
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)
static void area_azone_init(wmWindow *win, const bScreen *screen, ScrArea *area)
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)
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 bool region_azone_edge_poll(const ARegion *region, const bool is_fullscreen)
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)
static bool event_in_markers_region(const ARegion *region, const wmEvent *event)
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)
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 layout_coordinates_correct_for_drawable_rect(const wmWindow *win, const ScrArea *area, const ARegion *region, int *, int *r_yco)
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_area_init(wmWindowManager *wm, wmWindow *win, ScrArea *area)
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.
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)
local_group_size(16, 16) .push_constant(Type b
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
blender::gpu::Batch * quad
BLI_INLINE float fb(float length, float L)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 mask, const float4 a)
static void add(blender::Map< std::string, std::string > &messages, Message &msg)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
eScreenDir area_getorientation(ScrArea *sa_a, ScrArea *sa_b)
void screen_area_spacelink_add(const Scene *scene, ScrArea *area, eSpace_Type space_type)
void(* message_subscribe)(const wmRegionMessageSubscribeParams *params)
void(* cursor)(wmWindow *win, ScrArea *area, ARegion *region)
void(* listener)(const wmRegionListenerParams *params)
void(* draw)(const bContext *C, ARegion *region)
void(* layout)(const bContext *C, ARegion *region)
int(* snap_size)(const ARegion *region, int size, int axis)
short do_draw_paintcursor
struct wmGizmoMap * gizmo_map
struct ARegionType * type
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::@120171350042037242361125204277245336203176340102 by_type[RGN_TYPE_NUM]
short butspacetype_subtype
ScrGlobalAreaData * global
void(* free)(SpaceLink *sl)
void(* refresh)(const bContext *C, 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
struct wmMsgBus * message_bus
struct wmEvent * eventstate
struct WorkSpaceInstanceHook * workspace_hook
bool ED_time_scrub_event_in_region(const ARegion *region, const wmEvent *event)
ccl_device_inline int abs(int x)
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)
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])
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)
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)