97 float color[4] = {0.0f, 0.0f, 0.0f, 0.25f};
170 if (
params->area->type &&
params->area->type->listener) {
179 if (
area->type &&
area->type->refresh) {
182 area->do_refresh =
false;
193 ICON_FULLSCREEN_EXIT,
214 const float size = 0.2f *
U.widget_unit;
215 const float l = 1.0f;
216 const float s = 0.25f;
217 const float hl =
l / 2.0f;
218 const float points[6][2] = {
219 {0, -hl}, {
l, hl}, {
l - s, hl + s}, {0, s + s - hl}, {s -
l, hl + s}, {-
l, hl}};
220 const float center[2] = {(x1 +
x2) / 2, (
y1 + y2) / 2};
256 for (
int i = 0; i < 6; i++) {
292 const float color[4] = {0.05f, 0.05f, 0.05f,
alpha};
296 .xmax = (
float)az->
x2,
298 .ymax = (
float)az->
y2,
342 if (az->alpha > 0.0f) {
378 const float y1 = pad;
379 const float y2 = region->
winy - pad;
383 float color[4] = {0.0f, 0.0f, 0.0f, 0.5f};
419 while (region && region->
prev) {
420 region = region->
prev;
422 for (; region; region = region->
next) {
454 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
464 const char *panel_category_tool =
"Tool";
467 bool update_region =
false;
468 if (category &&
STREQ(category, panel_category_tool)) {
469 update_region =
true;
475 STREQ(panel->type->category, panel_category_tool)) {
476 update_region =
true;
489 mbus, &workspace->
id, workspace,
WorkSpace, tools, &msg_sub_value_region_tag_redraw);
501 return (
area->winx < 3) || (
area->winy < 3);
574 if (
G.debug_value == 888) {
604 float color[4] = {0.0f, 0.0f, 0.0f, 0.8f};
652 .workspace = workspace,
767 if (region->regiontype == regiontype) {
777 area->do_refresh =
true;
825 if (region->headerstr ==
NULL) {
831 else if (region->headerstr) {
833 region->headerstr =
NULL;
846 if (workspace ==
NULL) {
893 const float coords[4][4] = {
895 {
area->totrct.xmin -
U.pixelsize,
896 area->totrct.ymin -
U.pixelsize,
901 area->totrct.ymin -
U.pixelsize,
902 area->totrct.xmax +
U.pixelsize,
905 {
area->totrct.xmin -
U.pixelsize,
908 area->totrct.ymax +
U.pixelsize},
912 area->totrct.xmax +
U.pixelsize,
913 area->totrct.ymax +
U.pixelsize},
916 for (
int i = 0; i < 4; i++) {
920 ((coords[i][0] == 0 && coords[i][1] == 0) ||
932 az->
x1 = coords[i][0];
933 az->
y1 = coords[i][1];
934 az->
x2 = coords[i][2];
935 az->
y2 = coords[i][3];
967 #define AZONEPAD_EDGE (0.1f * U.widget_unit)
968 #define AZONEPAD_ICON (0.45f * U.widget_unit)
1003 float edge_offset = 1.0f;
1004 const float tab_size_x = 0.7f *
U.widget_unit;
1005 const float tab_size_y = 0.4f *
U.widget_unit;
1009 if (azt->edge == az->
edge) {
1017 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1019 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1024 az->
x1 = region->
winrct.
xmax - ((edge_offset + 1.0f) * tab_size_x);
1026 az->
x2 = region->
winrct.
xmax - (edge_offset * tab_size_x);
1031 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1033 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1037 az->
y1 = region->
winrct.
ymax - ((edge_offset + 1.0f) * tab_size_x);
1039 az->
y2 = region->
winrct.
ymax - (edge_offset * tab_size_x);
1050 if (is_hidden && is_fullscreen) {
1063 const bool is_fullscreen)
1094 az->region = region;
1095 az->direction = direction;
1101 az->region->v2d.alpha_hor = 0;
1129 const int alignment,
1130 const bool is_fullscreen)
1167 if (is_fullscreen) {
1194 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1205 if (align1 != align) {
1239 for (region_iter = region->
prev; region_iter; region_iter = region_iter->
prev) {
1248 if ((region_iter->
alignment != align) &&
1271 if (
ELEM(regiontype,
1288 rcti *remainder_prev = remainder;
1290 if (region ==
NULL) {
1294 int prev_winx = region->
winx;
1295 int prev_winy = region->
winy;
1369 rcti overlap_remainder_margin = *overlap_remainder;
1389 rcti winrct_test = {
1395 BLI_rcti_isect(&winrct_test, &overlap_remainder_margin, &winrct_test);
1401 else if (
rct_fits(remainder,
'v', 1) < 0 ||
rct_fits(remainder,
'h', 1) < 0) {
1407 region->
winrct = *remainder;
1411 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1413 if ((prefsizey == 0) || (
rct_fits(winrct,
'v', prefsizey) < 0)) {
1417 int fac =
rct_fits(winrct,
'v', prefsizey);
1423 region->
winrct = *winrct;
1437 rcti *winrct = (region->
overlap) ? overlap_remainder : remainder;
1439 if ((prefsizex == 0) || (
rct_fits(winrct,
'h', prefsizex) < 0)) {
1443 int fac =
rct_fits(winrct,
'h', prefsizex);
1449 region->
winrct = *winrct;
1464 region->
winrct = *remainder;
1467 if (
rct_fits(remainder,
'h', prefsizex) > 4) {
1476 if (
rct_fits(remainder,
'v', prefsizey) > 4) {
1486 region->
winrct = *remainder;
1493 while (region_test) {
1495 region_test = region_test->
next;
1503 printf(
"region quadsplit failed\n");
1515 else if (
quad == 2) {
1519 else if (
quad == 3) {
1543 if (region->
winx > 1) {
1546 if (region->
winy > 1) {
1557 region->
winrct = (region->
overlap) ? *overlap_remainder : *remainder;
1559 switch (alignment) {
1585 remainder = remainder_prev;
1594 *overlap_remainder = *remainder;
1602 if (region->
winx != prev_winx || region->
winy != prev_winy) {
1619 short px = (short)
U.pixelsize;
1621 area->totrct.xmin =
area->v1->vec.x;
1622 area->totrct.xmax =
area->v4->vec.x;
1623 area->totrct.ymin =
area->v1->vec.y;
1624 area->totrct.ymax =
area->v2->vec.y;
1628 area->totrct.xmin += px;
1630 if (
area->totrct.xmax < (window_rect->
xmax - 1)) {
1631 area->totrct.xmax -= px;
1633 if (
area->totrct.ymin > window_rect->
ymin) {
1634 area->totrct.ymin += px;
1636 if (
area->totrct.ymax < (window_rect->
ymax - 1)) {
1637 area->totrct.ymax -= px;
1764 wm->
defaultconf,
"Grease Pencil Stroke Curve Edit Mode", 0, 0);
1768 wm->
defaultconf,
"Grease Pencil Stroke Edit Mode", 0, 0);
1772 wm->
defaultconf,
"Grease Pencil Stroke Paint Mode", 0, 0);
1776 wm->
defaultconf,
"Grease Pencil Stroke Paint (Draw brush)", 0, 0);
1780 wm->
defaultconf,
"Grease Pencil Stroke Paint (Erase)", 0, 0);
1784 wm->
defaultconf,
"Grease Pencil Stroke Paint (Fill)", 0, 0);
1788 wm->
defaultconf,
"Grease Pencil Stroke Paint (Tint)", 0, 0);
1792 wm->
defaultconf,
"Grease Pencil Stroke Sculpt Mode", 0, 0);
1796 wm->
defaultconf,
"Grease Pencil Stroke Vertex Mode", 0, 0);
1800 wm->
defaultconf,
"Grease Pencil Stroke Vertex (Draw)", 0, 0);
1804 wm->
defaultconf,
"Grease Pencil Stroke Vertex (Blur)", 0, 0);
1808 wm->
defaultconf,
"Grease Pencil Stroke Vertex (Average)", 0, 0);
1812 wm->
defaultconf,
"Grease Pencil Stroke Vertex (Smear)", 0, 0);
1816 wm->
defaultconf,
"Grease Pencil Stroke Vertex (Replace)", 0, 0);
1820 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Smooth)", 0, 0);
1824 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Thickness)", 0, 0);
1828 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Strength)", 0, 0);
1832 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Grab)", 0, 0);
1836 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Push)", 0, 0);
1840 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Twist)", 0, 0);
1844 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Pinch)", 0, 0);
1848 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Randomize)", 0, 0);
1852 wm->
defaultconf,
"Grease Pencil Stroke Sculpt (Clone)", 0, 0);
1856 wm->
defaultconf,
"Grease Pencil Stroke Weight Mode", 0, 0);
1860 wm->
defaultconf,
"Grease Pencil Stroke Weight (Draw)", 0, 0);
1878 rcti overlap_rect = rect;
1888 if (region->type->init) {
1889 region->type->init(wm, region);
1936 rcti overlap_rect = rect;
1943 if (
area->type->init) {
1954 if (region->visible) {
1958 if (region->type->init) {
1959 region->type->init(wm, region);
1979 area->runtime.is_tool_set =
true;
2014 if (region !=
NULL) {
2049 if (do_fade && region->
overlap) {
2069 const char spacetype = area_dst->
spacetype;
2075 area_dst->
flag = (area_dst->
flag & ~flag_copy) | (area_src->
flag & flag_copy);
2143 const int index = region->regiontype;
2167 if ((tool_header_alignment != -1) &&
2169 ((tool_header_hidden ==
false) ||
2173 (header_hidden && tool_header_hidden))) {
2174 return tool_header_alignment;
2176 if (header_alignment != -1) {
2177 return header_alignment;
2211 const short tool_header_alignment_src =
2217 region_align_info_src, -1);
2220 if (primary_header_alignment_src == -1) {
2225 const short tool_header_alignment_dst =
2232 short header_alignment_sync = -1;
2233 short tool_header_alignment_sync = -1;
2234 short footer_alignment_sync = -1;
2238 if (((header_alignment_src != -1) == (header_alignment_dst != -1)) &&
2239 ((tool_header_alignment_src != -1) == (tool_header_alignment_dst != -1)) &&
2240 (tool_header_hidden_src == tool_header_hidden_dst)) {
2241 if (header_alignment_dst != -1) {
2242 header_alignment_sync = header_alignment_src;
2244 if (tool_header_alignment_dst != -1) {
2245 tool_header_alignment_sync = tool_header_alignment_src;
2251 region_align_info_dst, -1);
2253 if (primary_header_alignment_src != primary_header_alignment_dst) {
2254 if ((header_alignment_dst != -1) && (tool_header_alignment_dst != -1)) {
2255 if (header_alignment_dst == tool_header_alignment_dst) {
2257 tool_header_alignment_sync = primary_header_alignment_src;
2258 header_alignment_sync = primary_header_alignment_src;
2262 tool_header_alignment_sync = primary_header_alignment_src;
2270 if (header_alignment_dst != -1) {
2271 header_alignment_sync = primary_header_alignment_src;
2273 if (tool_header_alignment_dst != -1) {
2274 tool_header_alignment_sync = primary_header_alignment_src;
2280 if (footer_alignment_dst != -1) {
2281 if ((header_alignment_dst != -1) && (header_alignment_dst == footer_alignment_dst)) {
2283 footer_alignment_sync = primary_header_alignment_src;
2287 footer_alignment_sync = (primary_header_alignment_src ==
RGN_ALIGN_BOTTOM) ?
2294 if (header_alignment_sync != -1) {
2296 if (region !=
NULL) {
2302 if (tool_header_alignment_sync != -1) {
2304 if (region !=
NULL) {
2310 if (footer_alignment_sync != -1) {
2312 if (region !=
NULL) {
2324 const int index = region->regiontype;
2326 region_by_type[index] = region;
2336 region_align_info_src, ®ion_align_info_dst, region_by_type);
2382 void *area_exit =
area->type ?
area->type->exit :
NULL;
2394 bool sync_header_alignment =
false;
2398 sync_header_alignment =
true;
2403 if (skip_region_exit &&
area->type) {
2410 if (skip_region_exit &&
area->type) {
2411 area->type->exit = area_exit;
2426 if (sl_iter->spacetype ==
type) {
2474 if (sync_header_alignment) {
2545 int xco = 0.4 *
U.widget_unit;
2555 1.6 *
U.widget_unit,
2566 return xco + 1.7 *
U.widget_unit;
2602 GPU_clear_color(back[3] * back[0], back[3] * back[1], back[3] * back[2], back[3]);
2611 for (
uint i = 0; arr[i]; i++) {
2612 if (
STREQ(arr[i], s)) {
2635 char *unique_panel_str,
2636 const char *search_filter)
2644 if (unique_panel_str !=
NULL) {
2653 const bool search_filter_active = search_filter !=
NULL && search_filter[0] !=
'\0';
2656 int xco, yco, h = 0;
2715 if (open || search_filter_active) {
2754 if (open || search_filter_active) {
2759 if (child_pt->
draw && (!child_pt->
poll || child_pt->
poll(
C, child_pt))) {
2781 const char *contexts[],
2782 const char *category_override,
2786 if (panel_type->
parent) {
2790 if (category_override) {
2811 if (panel_type->
poll && !panel_type->
poll(
C, panel_type)) {
2829 bool *use_category_tabs)
2834 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
2847 *use_category_tabs =
false;
2859 const char *contexts[],
2860 const char *category_override)
2878 const char *category =
NULL;
2882 bool update_tot_size =
true;
2891 if (use_category_tabs) {
2894 if (use_category_tabs) {
2895 margin_x = category_tabs_width;
2913 bool has_instanced_panel =
false;
2914 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
2918 has_instanced_panel =
true;
2931 update_tot_size =
false;
2946 if (has_instanced_panel) {
2948 if (panel->type ==
NULL) {
2954 if (use_category_tabs && panel->type->category[0] &&
2955 !
STREQ(category, panel->type->category)) {
2961 update_tot_size =
false;
2985 if (region_layout_based) {
2990 if (panel !=
NULL) {
2991 const int size_dyn[2] = {
2996 if ((region->
sizex != size_dyn[0]) || (region->
sizey != size_dyn[1])) {
2997 region->
sizex = size_dyn[0];
2998 region->
sizey = size_dyn[1];
3007 if (v2d->
cur.
ymax < -FLT_EPSILON) {
3020 if (update_tot_size) {
3025 if (use_category_tabs) {
3065 bool use_mask =
false;
3109 const char *search_filter)
3119 if (panel ==
NULL) {
3139 panel_type->
draw(
C, panel);
3151 PanelType *panel_type_child = link->data;
3152 if (!panel_type_child->
poll || panel_type_child->
poll(
C, panel_type_child)) {
3172 const char *contexts[],
3173 const char *category_override)
3187 const char *category =
NULL;
3189 if (use_category_tabs) {
3194 bool has_result =
true;
3195 bool has_instanced_panel =
false;
3196 for (
LinkNode *pt_link = panel_types_stack; pt_link; pt_link = pt_link->
next) {
3200 has_instanced_panel =
true;
3204 if (use_category_tabs) {
3219 if (!has_result && has_instanced_panel) {
3225 if (use_category_tabs) {
3226 if (panel->type->category[0] && !
STREQ(category, panel->type->category)) {
3257 int yco = buttony + (region->
winy - buttony) / 2;
3271 if (ht->poll && !ht->poll(
C, ht)) {
3279 if (buttony_scale != 1.0f) {
3287 ht->draw(
C, &header);
3308 if (region_layout_based && (region->
sizex != new_sizex)) {
3312 region->
sizex = new_sizex;
3323 if (!region_layout_based) {
3417 for (
ScrArea *area_iter =
area->next; area_iter; area_iter = area_iter->next) {
3438 const char *text_array[],
3439 float fill_color[4],
3440 const bool full_redraw)
3453 const char **text = &text_array[0];
3457 1.2f *
U.widget_unit);
3464 const char **text = &text_array[0];
3471 rect.
ymin = rect.
ymax - header_height * num_lines;
3490 int offset = num_lines - 1;
3492 const char **text = &text_array[0];
3495 rect.
xmin + 0.6f *
U.widget_unit,
3496 rect.
ymin + 0.3f *
U.widget_unit + offset * header_height,
3507 GPU_scissor(scissor[0], scissor[1], scissor[2], scissor[3]);
3512 float fill_color[4],
3513 const bool full_redraw)
3515 const char *text_array[2] = {text,
NULL};
3527 uiItemL(row, field, ICON_NONE);
3528 uiItemL(row, value, ICON_NONE);
3558 float gridsize = 0.5f * (zoomx + zoomy);
3559 float gridstep = 1.0f / 32.0f;
3560 if (gridsize <= 0.0f) {
3564 if (gridsize < 1.0f) {
3565 while (gridsize < 1.0f) {
3571 while (gridsize >= 4.0f) {
3577 float blendfac = 0.25f * gridsize -
floorf(0.25f * gridsize);
3578 CLAMP(blendfac, 0.0f, 1.0f);
3580 int count_fine = 1.0f / gridstep;
3581 int count_large = 1.0f / (4.0f * gridstep);
3583 if (count_fine > 0) {
3591 float theme_color[3];
3596 for (
int i = 0; i < count_fine; i++) {
3608 if (count_large > 0) {
3613 for (
int i = 0; i < count_large; i++) {
3622 fac += 4.0f * gridstep;
3635 ARegion *region_iter = region;
3638 while (region_iter->
prev) {
3639 region_iter = region_iter->
prev;
3645 for (; region_iter; region_iter = region_iter->
next) {
3646 if (region != region_iter && region_iter->
overlap) {
3674 BLI_assert(!
"Region overlap with unknown alignment");
3685 if (rect->
xmin == 0 && rect->
ymin == 0 && rect->
xmax == 0 && rect->
ymax == 0) {
3697 const int region_bottom = rect_visible->
ymin;
3712 float font_dims[2] = {0.0f, 0.0f};
3715 BLF_size(fontid, 11.0f *
U.pixelsize,
U.dpi);
3724 immRecti(
pos,
x,
y,
x + font_dims[0] + 6.0f,
y + font_dims[1] + 4.0f);
3729 BLF_draw(fontid, numstr,
sizeof(numstr));
3733 ARegion *region,
const int num_segments,
const int *points,
const int sfra,
const int efra)
3738 const int region_bottom = rect_visible->
ymin;
3745 for (
int a = 0;
a < num_segments;
a++) {
3746 float x1 = (
float)(points[
a * 2] - sfra) / (efra - sfra + 1) * region->
winx;
3747 float x2 = (
float)(points[
a * 2 + 1] - sfra + 1) / (efra - sfra + 1) * region->
winx;
3782 const int snap_match_threshold = 16;
3785 snap_match_threshold)
3788 snap_match_threshold)
3796 bool changed =
false;
3798 if (snap_flag & (1 << 0)) {
3800 if (snap_size != region->
sizex) {
3801 region->
sizex = snap_size;
3805 if (snap_flag & (1 << 1)) {
3807 if (snap_size != region->
sizey) {
3808 region->
sizey = snap_size;
typedef float(TangentPoint)[2]
struct WorkSpace * CTX_wm_workspace(const bContext *C)
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
void BKE_screen_area_free(struct ScrArea *area)
void BKE_area_region_panels_free(struct ListBase *panels)
struct ARegionType * BKE_regiontype_from_id_or_first(const struct SpaceType *st, int regionid)
void BKE_spacedata_copylist(ListBase *lb1, ListBase *lb2)
void BKE_spacedata_freelist(ListBase *lb)
void BKE_area_region_free(struct SpaceType *st, struct ARegion *region)
struct ARegion * BKE_area_region_copy(const struct SpaceType *st, const struct ARegion *region)
struct SpaceType * BKE_spacetype_from_id(int spaceid)
@ PANEL_TYPE_LAYOUT_VERT_BAR
@ PANEL_TYPE_HEADER_EXPAND
bool BKE_workspace_owner_id_check(const struct WorkSpace *workspace, const char *owner_id) ATTR_NONNULL()
struct bScreen * BKE_workspace_active_screen_get(const struct WorkSpaceInstanceHook *hook) GETTER_ATTRS
float BLF_width(int fontid, const char *str, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLF_width_and_height(int fontid, const char *str, size_t len, float *r_width, float *r_height) ATTR_NONNULL()
void BLF_draw(int fontid, const char *str, size_t len) ATTR_NONNULL(2)
#define BLF_DRAW_STR_DUMMY_MAX
void BLF_disable(int fontid, int option)
void BLF_size(int fontid, int size, int dpi)
void BLF_enable(int fontid, int option)
void BLF_clipping(int fontid, float xmin, float ymin, float xmax, float ymax)
int BLF_set_default(void)
void BLF_position(int fontid, float x, float y, float z)
#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 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
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_union(struct rcti *rct1, const struct rcti *rct2)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
bool BLI_rcti_isect_pt(const struct rcti *rect, const int x, const int y)
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()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
#define SET_FLAG_FROM_TEST(value, test, flag)
#define RGN_ALIGN_ENUM_FROM_MASK(align)
@ AREA_FLAG_ACTIVE_TOOL_UPDATE
@ AREA_FLAG_REGION_SIZE_UPDATE
@ AREA_FLAG_STACKED_FULLSCREEN
@ AREA_FLAG_ACTIONZONES_UPDATE
@ RGN_DRAW_EDITOR_OVERLAYS
#define RGN_TYPE_HAS_CATEGORY_MASK
@ RGN_FLAG_SEARCH_FILTER_UPDATE
@ RGN_FLAG_PREFSIZE_OR_HIDDEN
@ RGN_FLAG_SEARCH_FILTER_ACTIVE
#define RGN_ALIGN_FLAG_FROM_MASK(align)
@ SPACE_FLAG_TYPE_WAS_ACTIVE
@ SPACE_FLAG_TYPE_TEMPORARY
@ USER_APP_LOCK_UI_LAYOUT
@ V2D_SCROLL_VERTICAL_HANDLES
@ V2D_SCROLL_HORIZONTAL_HANDLES
void ED_region_visibility_change_update_animated(struct bContext *C, struct ScrArea *area, struct ARegion *region)
void ED_area_exit(struct bContext *C, struct ScrArea *area)
struct AZone * ED_area_azones_update(ScrArea *area, const int mouse_xy[])
int ED_screen_area_active(const struct bContext *C)
void ED_region_draw_cb_draw(const struct bContext *, struct ARegion *, int)
#define REGION_DRAW_POST_PIXEL
NSNotificationCenter * center
struct GPUFrameBuffer GPUFrameBuffer
GPUFrameBuffer * GPU_framebuffer_active_get(void)
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble x2
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
void GPU_matrix_pop(void)
void GPU_matrix_push(void)
void GPU_matrix_identity_set(void)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_2D_UNIFORM_COLOR
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_2D_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])
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera CLAMP
void UI_panel_category_clear_all(struct ARegion *region)
void UI_blocklist_free(const struct bContext *C, struct ListBase *lb)
void UI_panel_category_draw_all(struct ARegion *region, const char *category_id_active)
void UI_panels_begin(const struct bContext *C, struct ARegion *region)
const struct uiStyle * UI_style_get_dpi(void)
void UI_panel_header_buttons_begin(struct Panel *panel)
bool UI_block_apply_search_filter(uiBlock *block, const char *search_filter)
void UI_panel_label_offset(const struct uiBlock *block, int *r_x, int *r_y)
void uiLayoutSetScaleY(uiLayout *layout, float scale)
void UI_blocklist_update_window_matrix(const struct bContext *C, const struct ListBase *lb)
const char * UI_panel_category_active_get(struct ARegion *region, bool set_fallback)
int UI_panel_size_y(const struct Panel *panel)
void uiItemL(uiLayout *layout, const char *name, int icon)
const struct uiStyle * UI_style_get(void)
void UI_blocklist_free_inactive(const struct bContext *C, struct ListBase *lb)
struct Panel * UI_panel_find_by_type(struct ListBase *lb, const struct PanelType *pt)
void UI_draw_roundbox_corner_set(int type)
void uiItemS(uiLayout *layout)
void UI_region_message_subscribe(struct ARegion *region, struct wmMsgBus *mbus)
struct PanelCategoryDyn * UI_panel_category_find(const struct ARegion *region, const char *idname)
bool UI_panel_is_active(const struct Panel *panel)
void UI_panel_end(struct Panel *panel, int width, int height)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void UI_list_panel_unique_str(struct Panel *panel, char *r_name)
void UI_panels_free_instanced(const struct bContext *C, struct ARegion *region)
void UI_panel_category_add(struct ARegion *region, const char *name)
void UI_block_end(const struct bContext *C, uiBlock *block)
uiBut * uiDefButR(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, struct PointerRNA *ptr, const char *propname, int index, float min, float max, float a1, float a2, const char *tip)
#define UI_PANEL_BOX_STYLE_MARGIN
uiLayout * UI_block_layout(uiBlock *block, int dir, int type, int x, int y, int size, int em, int padding, const struct uiStyle *style)
void UI_panel_header_buttons_end(struct Panel *panel)
void UI_panels_end(const struct bContext *C, struct ARegion *region, int *r_x, int *r_y)
#define UI_PANEL_CATEGORY_MARGIN_WIDTH
bool UI_panel_category_is_visible(const struct ARegion *region)
int uiLayoutGetWidth(uiLayout *layout)
void UI_draw_roundbox_aa(const struct rctf *rect, bool filled, float rad, const float color[4])
uiBlock * UI_block_begin(const struct bContext *C, struct ARegion *region, const char *name, eUIEmbossType emboss)
void UI_block_layout_free(uiBlock *block)
void UI_blocklist_draw(const struct bContext *C, const struct ListBase *lb)
void UI_panels_draw(const struct bContext *C, struct ARegion *region)
void UI_block_layout_resolve(uiBlock *block, int *r_x, int *r_y)
void UI_region_handlers_add(struct ListBase *handlers)
struct Panel * UI_panel_begin(struct ARegion *region, struct ListBase *lb, uiBlock *block, struct PanelType *pt, struct Panel *panel, bool *r_open)
void UI_block_translate(uiBlock *block, int x, int y)
#define INSTANCED_PANEL_UNIQUE_STR_LEN
bool UI_panel_is_closed(const struct Panel *panel)
void UI_block_set_search_only(uiBlock *block, bool search_only)
bool UI_panel_is_dragging(const struct Panel *panel)
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], const bool mono_border)
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)
#define UI_MARKER_MARGIN_Y
void UI_view2d_region_reinit(struct View2D *v2d, short type, int winx, int winy)
void UI_view2d_totRect_set(struct View2D *v2d, int width, int height)
void UI_view2d_view_restore(const struct bContext *C)
void UI_view2d_view_ortho(const struct View2D *v2d)
void UI_view2d_view_to_region(const struct View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
void UI_view2d_mask_from_win(const struct View2D *v2d, struct rcti *r_mask)
void UI_view2d_scrollers_draw(struct View2D *v2d, const struct rcti *mask_custom)
@ V2D_COMMONVIEW_PANELS_UI
void ED_area_do_mgs_subscribe_for_tool_header(const wmRegionMessageSubscribeParams *params)
void ED_area_tag_redraw(ScrArea *area)
const char * ED_area_region_search_filter_get(const ScrArea *area, const ARegion *region)
static void region_align_info_from_area(ScrArea *area, struct RegionTypeAlignInfo *r_align_info)
int ED_region_snap_size_test(const ARegion *region)
ScrArea * ED_screen_areas_iter_first(const wmWindow *win, const bScreen *screen)
bool ED_area_has_shared_border(struct ScrArea *a, struct ScrArea *b)
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)
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)
void ED_region_do_listen(wmRegionListenerParams *params)
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 bool region_uses_category_tabs(const ScrArea *area, const ARegion *region)
struct MetadataPanelDrawContext MetadataPanelDrawContext
static void area_azone_tag_update(ScrArea *area)
int ED_area_global_min_size_y(const ScrArea *area)
static int rct_fits(const rcti *rect, char dir, int size)
void ED_region_tag_redraw_editor_overlays(struct ARegion *region)
void ED_region_floating_init(ARegion *region)
ScrArea * ED_screen_areas_iter_next(const bScreen *screen, const ScrArea *area)
static short region_alignment_from_header_and_tool_header_state(const struct RegionTypeAlignInfo *region_align_info, const short fallback)
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_info_draw(ARegion *region, const char *text, float fill_color[4], const bool full_redraw)
void region_toggle_hidden(bContext *C, ARegion *region, const bool do_fade)
void ED_region_header(const bContext *C, ARegion *region)
static void region_overlap_fix(ScrArea *area, ARegion *region)
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)
void ED_region_do_msg_notify_tag_redraw(bContext *UNUSED(C), wmMsgSubscribeKey *UNUSED(msg_key), wmMsgSubscribeValue *msg_val)
int ED_area_headersize(void)
void ED_region_cache_draw_cached_segments(ARegion *region, const int num_segments, const int *points, const int sfra, const int efra)
void ED_region_header_init(ARegion *region)
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)
static void region_draw_emboss(const ARegion *region, const rcti *scirct, int sides)
static void area_calc_totrct(ScrArea *area, const rcti *window_rect)
void ED_area_data_copy(ScrArea *area_dst, ScrArea *area_src, const bool do_free)
static void region_align_info_to_area(ScrArea *area, const struct RegionTypeAlignInfo region_align_info_src[RGN_TYPE_LEN])
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)
void ED_area_tag_redraw_regiontype(ScrArea *area, int regiontype)
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 const char * region_panels_collect_categories(ARegion *region, LinkNode *panel_types_stack, bool *use_category_tabs)
static void region_azone_scrollbar_init(ScrArea *area, ARegion *region, AZScrollDirection direction)
static void region_visible_rect_calc(ARegion *region, rcti *rect)
void ED_area_do_msg_notify_tag_refresh(bContext *UNUSED(C), wmMsgSubscribeKey *UNUSED(msg_key), wmMsgSubscribeValue *msg_val)
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)
static void area_draw_azone_fullscreen(short UNUSED(x1), short UNUSED(y1), short x2, short y2, float alpha)
Corner widget use for quitting fullscreen.
void ED_region_pixelspace(ARegion *region)
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)
void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *area)
void ED_area_tag_refresh(ScrArea *area)
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)
int ED_area_footersize(void)
void ED_area_do_refresh(bContext *C, ScrArea *area)
static void region_azone_edge(AZone *az, ARegion *region)
static void region_clear_color(const bContext *C, const ARegion *region, ThemeColorID colorid)
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)
void ED_region_image_metadata_panel_draw(ImBuf *ibuf, uiLayout *layout)
static bool event_in_markers_region(const ARegion *region, const wmEvent *event)
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)
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)
static void region_subwindow(ARegion *region)
static ThemeColorID region_background_color_id(const bContext *C, const ARegion *region)
void ED_region_do_draw(bContext *C, ARegion *region)
void ED_region_tag_redraw(ARegion *region)
void ED_region_panels_layout_ex(const bContext *C, ARegion *region, ListBase *paneltypes, const char *contexts[], const char *category_override)
void ED_region_message_subscribe(wmRegionMessageSubscribeParams *params)
static void region_align_info_to_area_for_headers(const struct RegionTypeAlignInfo *region_align_info_src, const struct RegionTypeAlignInfo *region_align_info_dst, ARegion *region_by_type[RGN_TYPE_LEN])
void ED_region_grid_draw(ARegion *region, float zoomx, float zoomy, float x0, float y0)
static void region_draw_status_text(ScrArea *area, ARegion *region)
static SpaceLink * area_get_prevspace(ScrArea *area)
static void fullscreen_azone_init(ScrArea *area, ARegion *region)
void ED_area_prevspace(bContext *C, ScrArea *area)
static bool area_is_pseudo_minimized(const ScrArea *area)
static void area_draw_azone(short UNUSED(x1), short UNUSED(y1), short UNUSED(x2), short UNUSED(y2))
Corner widgets use for dragging and splitting the view.
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)
int ED_region_global_size_y(void)
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)
void ED_region_panels_ex(const bContext *C, ARegion *region, const char *contexts[])
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)
void ED_region_header_layout(const bContext *C, ARegion *region)
void ED_region_info_draw_multiline(ARegion *region, const char *text_array[], float fill_color[4], const bool full_redraw)
const rcti * ED_region_visible_rect(ARegion *region)
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 CCL_NAMESPACE_BEGIN const double alpha
void GPU_clear_color(float red, float green, float blue, float alpha)
BLI_INLINE float fb(float length, float L)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void add(GHash *messages, MemArena *memarena, const Message *msg)
static void area(int d1, int d2, int e1, int e2, float weights[2])
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
int area_getorientation(ScrArea *area, ScrArea *sb)
void(* draw)(const struct bContext *C, struct ARegion *region)
void(* message_subscribe)(const wmRegionMessageSubscribeParams *params)
void(* cursor)(struct wmWindow *win, struct ScrArea *area, struct ARegion *region)
int(* snap_size)(const struct ARegion *region, int size, int axis)
void(* listener)(const wmRegionListenerParams *params)
void(* layout)(const struct bContext *C, struct ARegion *region)
short do_draw_paintcursor
struct wmGizmoMap * gizmo_map
struct ARegionType * type
char owner_id[BKE_ST_MAXNAME]
void(* draw)(const struct bContext *C, struct Panel *panel)
void(* draw_header_preset)(const struct bContext *C, struct Panel *panel)
bool(* poll)(const struct bContext *C, struct PanelType *pt)
void(* draw_header)(const struct bContext *C, struct Panel *panel)
char idname[BKE_ST_MAXNAME]
char context[BKE_ST_MAXNAME]
char category[BKE_ST_MAXNAME]
struct PanelType * parent
struct RegionTypeAlignInfo::@482 by_type[RGN_TYPE_LEN]
ScrGlobalAreaData * global
void(* free)(struct SpaceLink *sl)
struct SpaceLink *(* create)(const struct ScrArea *area, const struct Scene *scene)
const struct bContext * context
struct wmMsgBus * message_bus
struct wmKeyConfig * defaultconf
struct wmEvent * eventstate
struct WorkSpaceInstanceHook * workspace_hook
bool ED_time_scrub_event_in_region(const ARegion *region, const wmEvent *event)
__forceinline const avxi abs(const avxi &a)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
void WM_cursor_set(wmWindow *win, int curs)
bool WM_cursor_set_from_tool(struct wmWindow *win, const ScrArea *area, const ARegion *region)
bool WM_region_use_viewport(ScrArea *area, ARegion *region)
struct wmEventHandler_Keymap * WM_event_add_keymap_handler_dynamic(ListBase *handlers, wmEventHandler_KeymapDynamicFn *keymap_fn, void *user_data)
wmKeyMap * WM_event_get_keymap_from_toolsystem_fallback(wmWindowManager *wm, wmEventHandler_Keymap *handler)
wmEventHandler_Keymap * WM_event_add_keymap_handler_poll(ListBase *handlers, wmKeyMap *keymap, EventHandlerPoll poll)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
wmKeyMap * WM_event_get_keymap_from_toolsystem(wmWindowManager *wm, wmEventHandler_Keymap *handler)
wmEventHandler_Keymap * WM_event_add_keymap_handler(ListBase *handlers, wmKeyMap *keymap)
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, struct wmMsgBus *mbus)
wmGizmoMap * WM_gizmomap_new_from_type(const struct wmGizmoMapType_Params *gzmap_params)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
void WM_msgbus_clear_by_owner(struct wmMsgBus *mbus, void *owner)
#define WM_msg_subscribe_rna_prop(mbus, id_, data_, type_, prop_, value)
void WM_msg_subscribe_rna(struct 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)
bScreen * WM_window_get_active_screen(const wmWindow *win)
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)
WorkSpace * WM_window_get_active_workspace(const wmWindow *win)
void WM_window_rect_calc(const wmWindow *win, rcti *r_rect)
int WM_window_pixels_x(const wmWindow *win)
Scene * WM_window_get_active_scene(const wmWindow *win)