Blender V4.3
interface_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include <functional>
12
13#include "BLI_compiler_attrs.h"
15#include "BLI_rect.h"
16#include "BLI_string_ref.hh"
17#include "BLI_vector.hh"
18
19#include "BKE_fcurve.hh"
20
21#include "DNA_listBase.h"
22#include "RNA_types.hh"
23#include "UI_interface.hh"
24#include "UI_resources.hh"
25
27struct ARegion;
28struct bContext;
29struct bContextStore;
31struct CurveMapping;
32struct CurveProfile;
33namespace blender::gpu {
34class Batch;
35}
36struct IconTextOverlay;
37struct ID;
38struct ImBuf;
40struct Main;
41struct Scene;
43struct uiLayout;
44struct uiListType;
45struct uiStyle;
46struct uiUndoStack_Text;
47struct uiWidgetColors;
48struct UnitSettings;
49struct wmEvent;
50struct wmKeyConfig;
51struct wmOperatorType;
52struct wmTimer;
53
54/* ****************** general defines ************** */
55
56#define RNA_NO_INDEX -1
57#define RNA_ENUM_VALUE -2
58
59#define UI_MENU_PADDING (int)(0.2f * UI_UNIT_Y)
60
61#define UI_MENU_WIDTH_MIN (UI_UNIT_Y * 9)
63#define UI_MENU_SUBMENU_PADDING (6 * UI_SCALE_FAC)
64
65/* menu scrolling */
66#define UI_MENU_SCROLL_ARROW (12 * UI_SCALE_FAC)
67#define UI_MENU_SCROLL_MOUSE (UI_MENU_SCROLL_ARROW + 2 * UI_SCALE_FAC)
68#define UI_MENU_SCROLL_PAD (4 * UI_SCALE_FAC)
69
71#define UI_POPOVER_WIDTH_UNITS 10
72
74enum {
76 UI_SELECT = (1 << 0),
78 UI_SCROLLED = (1 << 1),
86 UI_HOVER = (1 << 2),
87 UI_HAS_ICON = (1 << 3),
88 UI_HIDDEN = (1 << 4),
90 UI_SELECT_DRAW = (1 << 5),
93
98
99 /* WARNING: rest of #uiBut.flag in UI_interface.hh */
100};
101
114
116#define UI_RADIAL_DIRECTION_NEXT(dir) RadialDirection((int(dir) + 1) % (int(UI_RADIAL_NW) + 1))
118#define UI_RADIAL_DIRECTION_PREV(dir) \
119 RadialDirection(((int(dir) + int(UI_RADIAL_NW))) % (int(UI_RADIAL_NW) + 1))
120
122#define UI_RADIAL_MASK_ALL_DIAGONAL \
123 ((1 << int(UI_RADIAL_NE)) | (1 << int(UI_RADIAL_SE)) | (1 << int(UI_RADIAL_SW)) | \
124 (1 << int(UI_RADIAL_NW)))
125#define UI_RADIAL_MASK_ALL_AXIS_ALIGNED \
126 ((1 << int(UI_RADIAL_N)) | (1 << int(UI_RADIAL_S)) | (1 << int(UI_RADIAL_E)) | \
127 (1 << int(UI_RADIAL_W)))
128
129extern const char ui_radial_dir_order[8];
130extern const char ui_radial_dir_to_numpad[8];
131extern const short ui_radial_dir_to_angle[8];
132
133/* internal panel drawing defines */
134#define PNL_HEADER (UI_UNIT_Y * 1.25) /* 24 default */
135
136/* bit button defines */
137/* Bit operations */
138#define UI_BITBUT_TEST(a, b) (((a) & (1 << (b))) != 0)
139#define UI_BITBUT_VALUE_TOGGLED(a, b) ((a) ^ (1 << (b)))
140#define UI_BITBUT_VALUE_ENABLED(a, b) ((a) | (1 << (b)))
141#define UI_BITBUT_VALUE_DISABLED(a, b) ((a) & ~(1 << (b)))
142
143/* bit-row */
144#define UI_BITBUT_ROW(min, max) \
145 (((max) >= 31 ? 0xFFFFFFFF : (1 << ((max) + 1)) - 1) - ((min) ? ((1 << (min)) - 1) : 0))
146
148#define USE_NUMBUTS_LR_ALIGN
149
151#define USE_UIBUT_SPATIAL_ALIGN
152
154enum {
167};
168
169#define PIE_CLICK_THRESHOLD_SQ 50.0f
170
172#define PIE_MAX_ITEMS 8
173
174struct uiBut {
175 uiBut *next = nullptr, *prev = nullptr;
176
178 uiLayout *layout = nullptr;
179 int flag = 0;
180 int flag2 = 0;
181 int drawflag = 0;
184 short bit = 0, bitnr = 0, retval = 0, strwidth = 0, alignnr = 0;
185 short ofs = 0, pos = 0, selsta = 0, selend = 0;
186
187 std::string str;
188
189 std::string drawstr;
190
191 char *placeholder = nullptr;
192
193 rctf rect = {}; /* block relative coords */
194
195 char *poin = nullptr;
196 float hardmin = 0, hardmax = 0, softmin = 0, softmax = 0;
197
202 uchar col[4] = {0};
203
206
208 void *func_arg1 = nullptr;
209 void *func_arg2 = nullptr;
214 std::function<void(bContext &)> apply_func;
215
217 void *func_argN = nullptr;
220
221 const bContextStore *context = nullptr;
222
224 void *autofunc_arg = nullptr;
225
227 void *rename_arg1 = nullptr;
228 void *rename_orig = nullptr;
229
230 /* When defined, and the button edits a string RNA property, the new name is _not_ set at all,
231 * instead this function is called with the new name. */
232 std::function<void(std::string &new_name)> rename_full_func = nullptr;
233 std::string rename_full_new = "";
234
237 void *hold_argN = nullptr;
238
239 const char *tip = nullptr;
241 void *tip_arg = nullptr;
244 std::function<std::string(const uiBut *)> tip_label_func;
245
247
249 const char *disabled_info = nullptr;
250
251 BIFIconID icon = ICON_NONE;
257 bool changed = false;
260 short iconadd = 0;
261
263 float search_weight = 0.0f;
264
267
270
272
273 /* RNA data */
276 int rnaindex = 0;
277
278 /* Operator data */
280 PointerRNA *opptr = nullptr;
287
290
291 ListBase extra_op_icons = {nullptr, nullptr};
292
294 short dragflag = 0;
295 void *dragpoin = nullptr;
296 const ImBuf *imb = nullptr;
297 float imb_scale = 0;
298
316
318 void *custom_data = nullptr;
319
320 char *editstr = nullptr;
321 double *editval = nullptr;
322 float *editvec = nullptr;
323
324 std::function<bool(const uiBut &)> pushed_state_func;
325
328
329 /* pointer back */
330 uiBlock *block = nullptr;
331
332 uiBut() = default;
334 uiBut(const uiBut &other) = default;
336 uiBut &operator=(const uiBut &other) = default;
337};
338
340struct uiButNumber : public uiBut {
341 float step_size = 0.0f;
342 float precision = 0.0f;
343};
344
346struct uiButNumberSlider : public uiBut {
347 float step_size = 0.0f;
348 float precision = 0.0f;
349};
350
352struct uiButColor : public uiBut {
353 bool is_pallete_color = false;
355};
356
358struct uiButTab : public uiBut {
359 MenuType *menu = nullptr;
360};
361
391
401
409
411struct uiButSeparatorLine : public uiBut {
413};
414
416struct uiButLabel : public uiBut {
417 float alpha_factor = 1.0f;
418};
419
421struct uiButScrollBar : public uiBut {
423 float visual_height = -1.0f;
424};
425
426struct uiButViewItem : public uiBut {
427 /* The view item this button was created for. */
429 /* Some items want to have a fixed size for drawing, differing from the interaction rectangle
430 * (e.g. so highlights are drawn smaller). */
431 int draw_width = 0;
432 int draw_height = 0;
433};
434
439
441struct uiButColorBand : public uiBut {
443};
444
446struct uiButCurveProfile : public uiBut {
448};
449
455
457struct uiButHotkeyEvent : public uiBut {
458 short modifier_key = 0;
459};
460
473
476
484
489
495
496 /* Alpha component. */
498};
499
503
506 const char *title;
507 int icon;
508
511 float pie_dir[2];
514 float last_pos[2];
516 int flags;
519 float alphafac;
520};
521
528
529/* #uiButtonGroup.flag. */
537
548
554
555struct uiBlock {
557
561
564
566
569
571
576
577 ListBase dynamic_listeners; /* #uiBlockDynamicListener */
578
579 std::string name;
580
581 float winmat[4][4];
582
584 float aspect;
585
588
592
597
600
603
606
608 std::function<void(const bContext *, rcti *)> drawextra;
609
610 int flag;
611 short alignnr;
615 short content_hints; /* #eBlockContentHints */
616
623 char _pad[5];
625
626 const char *lockstr;
627
628 bool lock;
630 bool active;
635
642
647
649
654
656 void *evil_C;
657
663
666
672
674};
675
681
682/* `interface.cc` */
683
684void ui_fontscale(float *points, float aspect);
685
687void ui_but_to_pixelrect(rcti *rect,
688 const ARegion *region,
689 const uiBlock *block,
690 const uiBut *but);
691rcti ui_to_pixelrect(const ARegion *region, const uiBlock *block, const rctf *src_rect);
692
693void ui_block_to_region_fl(const ARegion *region, const uiBlock *block, float *x, float *y);
694void ui_block_to_window_fl(const ARegion *region, const uiBlock *block, float *x, float *y);
695void ui_block_to_window(const ARegion *region, const uiBlock *block, int *x, int *y);
696void ui_block_to_region_rctf(const ARegion *region,
697 const uiBlock *block,
698 rctf *rct_dst,
699 const rctf *rct_src);
700void ui_block_to_window_rctf(const ARegion *region,
701 const uiBlock *block,
702 rctf *rct_dst,
703 const rctf *rct_src);
704float ui_block_to_window_scale(const ARegion *region, const uiBlock *block);
708void ui_window_to_block_fl(const ARegion *region, const uiBlock *block, float *x, float *y);
709void ui_window_to_block(const ARegion *region, const uiBlock *block, int *x, int *y);
710void ui_window_to_block_rctf(const ARegion *region,
711 const uiBlock *block,
712 rctf *rct_dst,
713 const rctf *rct_src);
714void ui_window_to_region(const ARegion *region, int *x, int *y);
715void ui_window_to_region_rcti(const ARegion *region, rcti *rect_dst, const rcti *rct_src);
716void ui_window_to_region_rctf(const ARegion *region, rctf *rect_dst, const rctf *rct_src);
717void ui_region_to_window(const ARegion *region, int *x, int *y);
722void ui_region_winrct_get_no_margin(const ARegion *region, rcti *r_rect);
723
726 void (*listener_func)(const wmRegionListenerParams *params));
727
735uiBut *ui_but_change_type(uiBut *but, eButType new_type);
736
737double ui_but_value_get(uiBut *but);
738void ui_but_value_set(uiBut *but, double value);
742void ui_but_hsv_set(uiBut *but);
746void ui_but_v3_get(uiBut *but, float vec[3]);
747void ui_but_v3_set(uiBut *but, const float vec[3]);
748void ui_but_v4_get(uiBut *but, float vec[4]);
749void ui_but_v4_set(uiBut *but, const float vec[4]);
750
752 const rcti *rect, float mx, float my, float *r_val_rad, float *r_val_dist);
757 const ColorPicker *cpicker, const rcti *rect, const float *hsv, float *r_xpos, float *r_ypos);
759 const uiButHSVCube *hsv_but, const rcti *rect, const float *hsv, float *r_xp, float *r_yp);
760
768 char *str,
769 size_t str_maxncpy,
770 int float_precision,
771 bool use_exp_float,
772 bool *r_use_exp_float) ATTR_NONNULL(1, 2);
773void ui_but_string_get(uiBut *but, char *str, size_t str_maxncpy) ATTR_NONNULL();
780char *ui_but_string_get_dynamic(uiBut *but, int *r_str_size);
784void ui_but_convert_to_unit_alt_name(uiBut *but, char *str, size_t str_maxncpy) ATTR_NONNULL();
785bool ui_but_string_set(bContext *C, uiBut *but, const char *str) ATTR_NONNULL();
786bool ui_but_string_eval_number(bContext *C, const uiBut *but, const char *str, double *r_value)
787 ATTR_NONNULL();
798void ui_but_set_string_interactive(bContext *C, uiBut *but, const char *value);
800
804const char *ui_but_placeholder_get(uiBut *but);
805
806void ui_def_but_icon(uiBut *but, int icon, int flag);
811
813
814void ui_but_rna_menu_convert_to_panel_type(uiBut *but, const char *panel_type);
815void ui_but_rna_menu_convert_to_menu_type(uiBut *but, const char *menu_type);
816bool ui_but_menu_draw_as_popover(const uiBut *but);
817
820
828 const uiBut *but,
829 const wmOperatorCallParams *optype_params);
830
831void ui_but_update(uiBut *but);
832void ui_but_update_edited(uiBut *but);
840bool ui_but_is_compatible(const uiBut *but_a, const uiBut *but_b) ATTR_WARN_UNUSED_RESULT;
846
852int ui_but_is_pushed_ex(uiBut *but, double *value) ATTR_WARN_UNUSED_RESULT;
854
855void ui_but_override_flag(Main *bmain, uiBut *but);
856
857void ui_block_bounds_calc(uiBlock *block);
858
860void ui_block_cm_to_display_space_v3(uiBlock *block, float pixel[3]);
861
862/* `interface_regions.cc` */
863
868 int event_xy[2];
869};
870
871using uiBlockHandleCreateFunc = uiBlock *(*)(bContext *C, uiPopupBlockHandle *handle, void *arg1);
872
885
887 /* internal */
889
891 float towards_xy[2];
894
895 bool popup;
896 void (*popup_func)(bContext *C, void *arg, int event);
897 void (*cancel_func)(bContext *C, void *arg);
899
910
913
915
916 /* for operator popups */
920
921 /* return values */
925 float retvec[4];
926
929
930 /* Previous values so we don't resize or reposition on refresh. */
935
936 /* Maximum estimated size to avoid having to reposition on refresh. */
938
939 /* #ifdef USE_DRAG_POPUP */
942 /* #endif */
943
944 char menu_idname[64];
945};
946
947/* -------------------------------------------------------------------- */
948/* interface_region_*.c */
949
950/* `interface_region_tooltip.cc` */
951
952/* exposed as public API in UI_interface.hh */
953
954/* `interface_region_color_picker.cc` */
955
956void ui_color_picker_rgb_to_hsv_compat(const float rgb[3], float r_cp[3]);
957void ui_color_picker_rgb_to_hsv(const float rgb[3], float r_cp[3]);
958void ui_color_picker_hsv_to_rgb(const float r_cp[3], float rgb[3]);
959
965
970
971void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3]);
972void ui_perceptual_to_scene_linear_space(uiBut *but, float rgb[3]);
973
974uiBlock *ui_block_func_COLOR(bContext *C, uiPopupBlockHandle *handle, void *arg_but);
976
977/* `interface_region_search.cc` */
978
985
989bool ui_searchbox_inside(ARegion *region, const int xy[2]) ATTR_NONNULL(1, 2);
990int ui_searchbox_find_index(ARegion *region, const char *name);
994void ui_searchbox_update(bContext *C, ARegion *region, uiBut *but, bool reset);
995int ui_searchbox_autocomplete(bContext *C, ARegion *region, uiBut *but, char *str);
997 bContext *C, ARegion *region, uiBut *but, ARegion *butregion, const wmEvent *event);
1001bool ui_searchbox_apply(uiBut *but, ARegion *region);
1002void ui_searchbox_free(bContext *C, ARegion *region);
1007
1008/* `interface_region_menu_popup.cc` */
1009
1010int ui_but_menu_step(uiBut *but, int direction);
1011bool ui_but_menu_step_poll(const uiBut *but);
1013void ui_popup_menu_memory_set(uiBlock *block, uiBut *but);
1014
1019 uiPopupBlockHandle *handle,
1020 ARegion *butregion,
1021 uiBut *but);
1022
1024 ARegion *butregion,
1025 uiBut *but,
1027 uiBlockHandleCreateFunc handle_create_func,
1028 void *arg,
1029 uiFreeArgFunc arg_free,
1030 bool can_refresh);
1032 bContext *C, ARegion *butregion, uiBut *but, uiMenuCreateFunc menu_func, void *arg);
1033
1034/* `interface_region_popover.cc` */
1035
1036using uiPopoverCreateFunc = std::function<void(bContext *, uiLayout *, PanelType *)>;
1037
1039 ARegion *butregion,
1040 uiBut *but,
1041 uiPopoverCreateFunc popover_func,
1042 const PanelType *panel_type);
1043
1044/* `interface_region_menu_pie.cc` */
1045
1051 const char *propname,
1052 IDProperty *properties,
1053 const EnumPropertyItem *items,
1054 int totitem,
1055 wmOperatorCallContext context,
1057
1058/* `interface_region_popup.cc` */
1059
1063void ui_popup_translate(ARegion *region, const int mdiff[2]);
1066
1067/* end interface_region_*.c */
1068
1069/* `interface_panel.cc` */
1070
1077 const wmEvent *event,
1078 ARegion *region,
1079 const uiBut *active_but);
1083void ui_draw_aligned_panel(const ARegion *region,
1084 const uiStyle *style,
1085 const uiBlock *block,
1086 const rcti *rect,
1087 bool show_pin,
1088 bool show_background,
1089 bool region_search_filter_active);
1090void ui_draw_layout_panels_backdrop(const ARegion *region,
1091 const Panel *panel,
1092 const float radius,
1093 float subpanel_backcolor[4]);
1094void ui_panel_drag_collapse_handler_add(const bContext *C, const bool was_open);
1100void ui_layout_panel_popup_scroll_apply(Panel *panel, const float dy);
1101
1105void ui_draw_gradient(const rcti *rect, const float hsv[3], eButGradientType type, float alpha);
1106
1113void ui_draw_rounded_corners_inverted(const rcti &rect,
1114 const float rad,
1115 const blender::float4 color);
1116
1117/* based on UI_draw_roundbox_gl_mode,
1118 * check on making a version which allows us to skip some sides */
1119void ui_draw_but_TAB_outline(const rcti *rect,
1120 float rad,
1121 uchar highlight[3],
1122 uchar highlight_fade[3]);
1123void ui_draw_but_HISTOGRAM(ARegion *region,
1124 uiBut *but,
1125 const uiWidgetColors *wcol,
1126 const rcti *recti);
1127void ui_draw_but_WAVEFORM(ARegion *region,
1128 uiBut *but,
1129 const uiWidgetColors *wcol,
1130 const rcti *recti);
1131void ui_draw_but_VECTORSCOPE(ARegion *region,
1132 uiBut *but,
1133 const uiWidgetColors *wcol,
1134 const rcti *recti);
1135void ui_draw_but_COLORBAND(uiBut *but, const uiWidgetColors *wcol, const rcti *rect);
1136void ui_draw_but_UNITVEC(uiBut *but, const uiWidgetColors *wcol, const rcti *rect, float radius);
1137void ui_draw_but_CURVE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect);
1142 uiBut *but,
1143 const uiWidgetColors *wcol,
1144 const rcti *rect);
1145void ui_draw_but_IMAGE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect);
1147 uiBut *but,
1148 const uiWidgetColors *wcol,
1149 const rcti *recti);
1150
1151/* `interface_undo.cc` */
1152
1165void ui_textedit_undo_push(uiUndoStack_Text *stack, const char *text, int cursor_index);
1166const char *ui_textedit_undo(uiUndoStack_Text *stack, int direction, int *r_cursor_index);
1167
1168/* interface_handlers.cc */
1169
1174void ui_pan_to_scroll(const wmEvent *event, int *type, int *val);
1180void ui_but_activate_event(bContext *C, ARegion *region, uiBut *but);
1187void ui_but_activate_over(bContext *C, ARegion *region, uiBut *but);
1188void ui_but_execute_begin(bContext *C, ARegion *region, uiBut *but, void **active_back);
1189void ui_but_execute_end(bContext *C, ARegion *region, uiBut *but, void *active_back);
1190void ui_but_active_free(const bContext *C, uiBut *but);
1191void ui_but_semi_modal_state_free(const bContext *C, uiBut *but);
1196void ui_but_update_view_for_active(const bContext *C, const uiBlock *block);
1198void ui_but_text_password_hide(char password_str[128], uiBut *but, bool restore);
1204uiBut *ui_but_find_select_in_enum(uiBut *but, int direction);
1205bool ui_but_is_editing(const uiBut *but);
1206float ui_block_calc_pie_segment(uiBlock *block, const float event_xy[2]);
1207
1208/* XXX, this code will shorten any allocated string to 'UI_MAX_NAME_STR'
1209 * since this is really long its unlikely to be an issue,
1210 * but this could be supported */
1211void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, bool do_strip);
1213bool ui_but_rna_equals(const uiBut *a, const uiBut *b);
1214bool ui_but_rna_equals_ex(const uiBut *but,
1215 const PointerRNA *ptr,
1216 const PropertyRNA *prop,
1217 int index);
1218uiBut *ui_but_find_old(uiBlock *block_old, const uiBut *but_new);
1219uiBut *ui_but_find_new(uiBlock *block_new, const uiBut *but_old);
1220
1221#ifdef WITH_INPUT_IME
1222void ui_but_ime_reposition(uiBut *but, int x, int y, bool complete);
1223const wmIMEData *ui_but_ime_data_get(uiBut *but);
1224#endif
1225
1226/* interface_widgets.cc */
1227
1228/* Widget shader parameters, must match the shader layout. */
1231 float radi, rad;
1232 float facxi, facyi;
1236 float color_tria[4];
1240 /* We pack alpha check and discard factor in alpha_discard.
1241 * If the value is negative then we do alpha check.
1242 * The absolute value itself is the discard factor.
1243 * Initialize value to 1.0f if you don't want discard. */
1246 float _pad[3];
1247};
1248
1249enum {
1257
1258 ROUNDBOX_TRIA_MAX, /* don't use */
1259};
1260
1261blender::gpu::Batch *ui_batch_roundbox_widget_get();
1262blender::gpu::Batch *ui_batch_roundbox_shadow_get();
1263
1264void ui_draw_menu_back(uiStyle *style, uiBlock *block, const rcti *rect);
1265void ui_draw_popover_back(ARegion *region, uiStyle *style, uiBlock *block, const rcti *rect);
1266void ui_draw_pie_center(uiBlock *block);
1268
1269void ui_draw_widget_menu_back_color(const rcti *rect, bool use_shadow, const float color[4]);
1270void ui_draw_widget_menu_back(const rcti *rect, bool use_shadow);
1271void ui_draw_tooltip_background(const uiStyle *style, uiBlock *block, const rcti *rect);
1272
1276void ui_draw_but(const bContext *C, ARegion *region, uiStyle *style, uiBut *but, rcti *rect);
1277
1292
1301void ui_draw_menu_item(const uiFontStyle *fstyle,
1302 rcti *rect,
1303 const char *name,
1304 int iconid,
1305 int but_flag,
1306 uiMenuItemSeparatorType separator_type,
1307 int *r_xmax);
1308void ui_draw_preview_item(const uiFontStyle *fstyle,
1309 rcti *rect,
1310 const char *name,
1311 int iconid,
1312 int but_flag,
1313 eFontStyle_Align text_align);
1323 rcti *rect,
1324 blender::StringRef name,
1325 int iconid,
1326 const uchar text_col[4],
1327 eFontStyle_Align text_align,
1328 bool draw_as_icon = false);
1329
1330#define UI_TEXT_MARGIN_X 0.4f
1331#define UI_POPUP_MARGIN (UI_SCALE_FAC * 12)
1336#define UI_POPUP_MENU_TOP (int)(10 * UI_SCALE_FAC)
1337
1338#define UI_PIXEL_AA_JITTER 8
1339extern const float ui_pixel_jitter[UI_PIXEL_AA_JITTER][2];
1340
1341/* `interface_style.cc` */
1342
1347void uiStyleInit();
1348
1349/* interface_icons.cc */
1350
1351void ui_icon_ensure_deferred(const bContext *C, int icon_id, bool big);
1352int ui_id_icon_get(const bContext *C, ID *id, bool big);
1353
1354/* interface_icons_event.cc */
1355
1356float ui_event_icon_offset(int icon_id);
1357
1359 float x, float y, int w, int h, int icon_id, float aspect, float alpha, bool inverted);
1360
1361/* resources.cc */
1362
1363void ui_resources_init();
1364void ui_resources_free();
1365
1366/* interface_layout.cc */
1367
1368void ui_layout_add_but(uiLayout *layout, uiBut *but);
1369void ui_layout_remove_but(uiLayout *layout, const uiBut *but);
1373bool ui_layout_replace_but_ptr(uiLayout *layout, const void *old_but_ptr, uiBut *new_but);
1379 PointerRNA *ptr,
1380 PropertyRNA *prop,
1381 PointerRNA *searchptr,
1382 PropertyRNA *searchprop,
1383 bool results_are_suggestions);
1390/* menu callback */
1391void ui_item_menutype_func(bContext *C, uiLayout *layout, void *arg_mt);
1392void ui_item_paneltype_func(bContext *C, uiLayout *layout, void *arg_pt);
1393
1394/* interface_button_group.cc */
1395
1401void ui_button_group_add_but(uiBlock *block, uiBut *but);
1402void ui_button_group_replace_but_ptr(uiBlock *block, const uiBut *old_but_ptr, uiBut *new_but);
1403
1404/* interface_drag.cc */
1405
1406void ui_but_drag_free(uiBut *but);
1407bool ui_but_drag_is_draggable(const uiBut *but);
1408void ui_but_drag_start(bContext *C, uiBut *but);
1409
1410/* interface_align.cc */
1411
1421void ui_block_align_calc(uiBlock *block, const ARegion *region);
1422
1423/* `interface_anim.cc` */
1424
1425void ui_but_anim_flag(uiBut *but, const AnimationEvalContext *anim_eval_context);
1432bool ui_but_anim_expression_get(uiBut *but, char *str, size_t str_maxncpy);
1433bool ui_but_anim_expression_set(uiBut *but, const char *str);
1437bool ui_but_anim_expression_create(uiBut *but, const char *str);
1438void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra);
1439
1440void ui_but_anim_decorate_cb(bContext *C, void *arg_but, void *arg_dummy);
1442
1443/* `interface_query.cc` */
1444
1453bool ui_but_is_interactive_ex(const uiBut *but, const bool labeledit, const bool for_tooltip);
1454bool ui_but_is_interactive(const uiBut *but, bool labeledit) ATTR_WARN_UNUSED_RESULT;
1457int ui_but_icon(const uiBut *but);
1458void ui_but_pie_dir(RadialDirection dir, float vec[2]);
1459
1461
1462bool ui_but_contains_pt(const uiBut *but, float mx, float my) ATTR_WARN_UNUSED_RESULT;
1463bool ui_but_contains_rect(const uiBut *but, const rctf *rect);
1464bool ui_but_contains_point_px_icon(const uiBut *but,
1465 ARegion *region,
1466 const wmEvent *event) ATTR_WARN_UNUSED_RESULT;
1467bool ui_but_contains_point_px(const uiBut *but, const ARegion *region, const int xy[2])
1469
1471 const wmEvent *event) ATTR_WARN_UNUSED_RESULT;
1472uiBut *ui_list_find_from_row(const ARegion *region, const uiBut *row_but) ATTR_WARN_UNUSED_RESULT;
1473uiBut *ui_list_row_find_mouse_over(const ARegion *region, const int xy[2])
1475uiBut *ui_list_row_find_index(const ARegion *region,
1476 int index,
1478uiBut *ui_view_item_find_mouse_over(const ARegion *region, const int xy[2]) ATTR_NONNULL(1, 2);
1479uiBut *ui_view_item_find_active(const ARegion *region);
1481
1482using uiButFindPollFn = bool (*)(const uiBut *but, const void *customdata);
1487 const int xy[2],
1488 bool labeledit,
1489 bool for_tooltip,
1490 const uiButFindPollFn find_poll,
1491 const void *find_custom_data)
1494uiBut *ui_but_find_rect_over(const ARegion *region, const rcti *rect_px) ATTR_WARN_UNUSED_RESULT;
1495
1496uiBut *ui_list_find_mouse_over_ex(const ARegion *region, const int xy[2])
1498
1500
1503size_t ui_but_tip_len_only_first_line(const uiBut *but);
1504
1509
1515
1516uiBlock *ui_block_find_mouse_over_ex(const ARegion *region, const int xy[2], bool only_clip)
1517 ATTR_NONNULL(1, 2);
1518uiBlock *ui_block_find_mouse_over(const ARegion *region, const wmEvent *event, bool only_clip);
1519
1520uiBut *ui_region_find_first_but_test_flag(ARegion *region, int flag_include, int flag_exclude);
1522bool ui_region_contains_point_px(const ARegion *region, const int xy[2])
1524bool ui_region_contains_rect_px(const ARegion *region, const rcti *rect_px);
1525
1531
1532/* interface_context_menu.cc */
1533
1534bool ui_popup_context_menu_for_button(bContext *C, uiBut *but, const wmEvent *event);
1539
1540/* `interface_eyedropper.cc` */
1541
1544
1545/* interface_eyedropper_color.c */
1546
1548
1549/* interface_eyedropper_colorband.c */
1550
1551namespace blender::ui {
1552void UI_OT_eyedropper_colorramp(wmOperatorType *ot);
1553void UI_OT_eyedropper_colorramp_point(wmOperatorType *ot);
1554
1555void UI_OT_eyedropper_bone(wmOperatorType *ot);
1556
1557} // namespace blender::ui
1558
1559/* interface_eyedropper_datablock.c */
1560
1562
1563/* interface_eyedropper_depth.c */
1564
1566
1567/* interface_eyedropper_driver.c */
1568
1570
1571/* eyedropper_grease_pencil_color.cc */
1572
1574
1575/* interface_template_asset_shelf_popover.cc */
1576std::optional<blender::StringRefNull> UI_asset_shelf_idname_from_button_context(const uiBut *but);
1577
1578/* interface_template_asset_view.cc */
1579
1581
1588
1591
1593 /* Let UI_butstore_ API update search_but pointer above over redraws. */
1595 /* Block has to be stored for freeing butstore (uiBut.block doesn't work with undo). */
1597};
1599 const bContext *C, void *arg, const char *str, uiSearchItems *items, bool is_first);
1600
1601/* `interface_ops.cc` */
1602
1604
1605/* interface_queries.c */
1606
1608
1609/* interface_view.cc */
1610
1611void ui_block_free_views(uiBlock *block);
1612void ui_block_views_bounds_calc(const uiBlock *block);
1613void ui_block_views_listen(const uiBlock *block, const wmRegionListenerParams *listener_params);
1614void ui_block_views_draw_overlays(const ARegion *region, const uiBlock *block);
1616 const uiBlock &new_block, const blender::ui::AbstractView &new_view);
1617
1619 const uiBlock &new_block, const blender::ui::AbstractViewItem &new_item);
1620
1621/* abstract_view_item.cc */
1622
1625
1626/* interface_templates.cc */
1627
1629
1631 bContext *C, Main *bmain, ID *owner_id, ID *id, const char **r_undo_push_label);
1632
1633/* Functions in this namespace are only exposed for unit testing purposes, and
1634 * should not be used outside of the files where they are defined. */
1636
1658 PointerRNA *ptr, PropertyRNA *prop, bool get_all, int index, bool *r_is_array_prop);
1659
1683 bool is_array_prop,
1684 PointerRNA *dst_ptr,
1685 PropertyRNA *dst_prop);
1686
1687} // namespace blender::interface::internal
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
unsigned char uchar
unsigned int uint
#define ENUM_OPERATORS(_type, _max)
These structs are the foundation for all linked lists in the library system.
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
PropertyScaleType
Definition RNA_types.hh:106
#define C
Definition RandGen.cpp:29
void(*)(void *arg) uiFreeArgFunc
eUIEmbossType
@ UI_EMBOSS
std::string(*)(bContext *C, void *argN, const char *tip) uiButToolTipFunc
bool(*)(const uiBut *a, const uiBut *b) uiButIdentityCompareFunc
void(*)(bContext *C, uiLayout *layout, void *arg1) uiMenuCreateFunc
void(*)(const bContext *C, void *arg, const char *str, uiSearchItems *items, bool is_first) uiButSearchUpdateFn
void(*)(bContext *C, void *arg, char *origstr) uiButHandleRenameFunc
eButProgressType
@ UI_BUT_PROGRESS_TYPE_BAR
void *(*)(const void *argN) uiButArgNCopy
void(*)(void *argN) uiButArgNFree
eFontStyle_Align
void(*)(bContext *C, void *arg, int event) uiBlockHandleFunc
eBlockBoundsCalc
bool(*)(bContext *C, void *arg, void *active, const wmEvent *event) uiButSearchContextMenuFn
int(*)(bContext *C, char *str, void *arg) uiButCompleteFunc
ARegion *(*)(bContext *C, ARegion *region, const rcti *item_rect, void *arg, void *active) uiButSearchTooltipFn
void(*)(bContext *C, ARegion *butregion, uiBut *but) uiButHandleHoldFunc
eButGradientType
@ UI_GRAD_SV
void(*)(bContext *C, void *argN, void *arg2) uiButHandleNFunc
void(*)(bContext *C, void *arg1, void *arg2) uiButHandleFunc
ARegion *(*)(bContext *C, ARegion *butregion, uiButSearch *search_but) uiButSearchCreateFn
bool(*)(bContext *C, int direction, void *arg1) uiMenuStepFunc
eButPointerType
@ UI_BUT_POIN_NONE
uiBlock *(*)(bContext *C, ARegion *region, void *arg1) uiBlockCreateFunc
void(*)(bContext &C, uiTooltipData &data, void *argN) uiButToolTipCustomFunc
void(*)(const wmRegionListenerParams *params, void *arg) uiButSearchListenFn
eUI_Item_Flag
int BIFIconID
wmOperatorCallContext
Definition WM_types.hh:216
@ WM_OP_INVOKE_DEFAULT
Definition WM_types.hh:218
eWM_DragDataType
Definition WM_types.hh:1152
@ WM_DRAG_ID
Definition WM_types.hh:1153
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition btQuadWord.h:119
void reset()
clear internal cached data and reset random seed
local_group_size(16, 16) .push_constant(Type b
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
void UI_OT_eyedropper_color(wmOperatorType *ot)
#define str(s)
const short ui_radial_dir_to_angle[8]
const char ui_radial_dir_to_numpad[8]
const char ui_radial_dir_order[8]
void ui_popup_context_menu_for_panel(bContext *C, ARegion *region, Panel *panel)
bool ui_popup_context_menu_for_button(bContext *C, uiBut *but, const wmEvent *event)
wmKeyMap * eyedropper_colorband_modal_keymap(wmKeyConfig *keyconf)
wmKeyMap * eyedropper_modal_keymap(wmKeyConfig *keyconf)
void ui_but_v4_get(uiBut *but, float vec[4])
void ui_but_convert_to_unit_alt_name(uiBut *but, char *str, size_t str_maxncpy) ATTR_NONNULL()
uiBut uiBut * ui_view_item_find_active(const ARegion *region)
const float ui_pixel_jitter[UI_PIXEL_AA_JITTER][2]
uiBut * ui_but_drag_multi_edit_get(uiBut *but)
void ui_but_v4_set(uiBut *but, const float vec[4])
void ui_view_item_swap_button_pointers(blender::ui::AbstractViewItem &a, blender::ui::AbstractViewItem &b)
void ui_but_range_set_hard(uiBut *but)
uiBut * ui_but_find_mouse_over(const ARegion *region, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
bool ui_but_contains_point_px(const uiBut *but, const ARegion *region, const int xy[2]) ATTR_NONNULL(1
ARegion ARegion * ui_screen_region_find_mouse_over(bScreen *screen, const wmEvent *event)
void ui_but_extra_operator_icons_free(uiBut *but)
void void ui_but_string_get(uiBut *but, char *str, size_t str_maxncpy) ATTR_NONNULL()
int ui_but_is_pushed_ex(uiBut *but, double *value) ATTR_WARN_UNUSED_RESULT
uiBut * ui_but_find_new(uiBlock *block_new, const uiBut *but_old)
Definition interface.cc:804
void ui_hsvcircle_vals_from_pos(const rcti *rect, float mx, float my, float *r_val_rad, float *r_val_dist)
bool ui_but_is_cursor_warp(const uiBut *but) ATTR_WARN_UNUSED_RESULT
ID * ui_template_id_liboverride_hierarchy_make(bContext *C, Main *bmain, ID *owner_id, ID *id, const char **r_undo_push_label)
size_t ui_but_drawstr_len_without_sep_char(const uiBut *but)
bool ui_but_is_rna_valid(uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_draw_tooltip_background(const uiStyle *style, uiBlock *block, const rcti *rect)
void ui_window_to_block(const ARegion *region, const uiBlock *block, int *x, int *y)
Definition interface.cc:221
@ UI_SELECT_DRAW
@ UI_HIDDEN
@ UI_HOVER
@ UI_SCROLLED
@ UI_HAS_ICON
@ UI_SELECT
@ UI_SEARCH_FILTER_NO_MATCH
@ UI_BUT_ACTIVE_OVERRIDE
uiBlock * ui_block_find_mouse_over_ex(const ARegion *region, const int xy[2], bool only_clip) ATTR_NONNULL(1
uiBut * ui_popup_menu_memory_get(uiBlock *block)
bool ui_but_is_editing(const uiBut *but)
uiBut * ui_block_active_but_get(const uiBlock *block)
void ui_def_but_icon(uiBut *but, int icon, int flag)
int ui_but_menu_direction(uiBut *but)
void ui_searchbox_update(bContext *C, ARegion *region, uiBut *but, bool reset)
uiBlock *(*)(bContext *C, uiPopupBlockHandle *handle, void *arg1) uiBlockHandleCreateFunc
uiBlock uiBlock * ui_block_find_mouse_over(const ARegion *region, const wmEvent *event, bool only_clip)
void ui_handle_afterfunc_add_operator(wmOperatorType *ot, wmOperatorCallContext opcontext)
bool ui_but_menu_step_poll(const uiBut *but)
void ui_block_views_draw_overlays(const ARegion *region, const uiBlock *block)
void ui_draw_but_HISTOGRAM(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *recti)
ColorPicker * ui_block_colorpicker_create(uiBlock *block)
void ui_perceptual_to_scene_linear_space(uiBut *but, float rgb[3])
void ui_but_range_set_soft(uiBut *but)
void ui_but_update(uiBut *but)
uiButtonGroupFlag
@ UI_BUTTON_GROUP_LOCK
@ UI_BUTTON_GROUP_PANEL_HEADER
void ui_draw_but_WAVEFORM(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *recti)
void ui_but_drag_free(uiBut *but)
void ui_draw_widget_menu_back_color(const rcti *rect, bool use_shadow, const float color[4])
bool ui_but_string_set(bContext *C, uiBut *but, const char *str) ATTR_NONNULL()
void ui_resources_free()
Definition resources.cc:52
uiBut * ui_list_find_from_row(const ARegion *region, const uiBut *row_but) ATTR_WARN_UNUSED_RESULT
RadialDirection
@ UI_RADIAL_W
@ UI_RADIAL_E
@ UI_RADIAL_NONE
@ UI_RADIAL_N
@ UI_RADIAL_SE
@ UI_RADIAL_SW
@ UI_RADIAL_S
@ UI_RADIAL_NE
@ UI_RADIAL_NW
void ui_color_picker_hsv_to_rgb(const float r_cp[3], float rgb[3])
bool ui_block_is_popover(const uiBlock *block) ATTR_WARN_UNUSED_RESULT
uiBut * ui_list_row_find_index(const ARegion *region, int index, uiBut *listbox) ATTR_WARN_UNUSED_RESULT
bool ui_block_is_pie_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT
void ui_item_menutype_func(bContext *C, uiLayout *layout, void *arg_mt)
float ui_block_calc_pie_segment(uiBlock *block, const float event_xy[2])
@ ROUNDBOX_TRIA_CHECK
@ ROUNDBOX_TRIA_DASH
@ ROUNDBOX_TRIA_SCROLL
@ ROUNDBOX_TRIA_MENU
@ ROUNDBOX_TRIA_ARROWS
@ ROUNDBOX_TRIA_NONE
@ ROUNDBOX_TRIA_MAX
@ ROUNDBOX_TRIA_HOLD_ACTION_ARROW
const uiWidgetColors * ui_tooltip_get_theme()
void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, bool do_strip)
bool ui_but_string_eval_number(bContext *C, const uiBut *but, const char *str, double *r_value) ATTR_NONNULL()
void ui_popup_block_scrolltest(uiBlock *block)
bool ui_but_has_array_value(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_def_but_icon_clear(uiBut *but)
bool ui_but_contains_rect(const uiBut *but, const rctf *rect)
void ui_but_search_refresh(uiButSearch *but)
void ui_but_activate_over(bContext *C, ARegion *region, uiBut *but)
void ui_button_group_replace_but_ptr(uiBlock *block, const uiBut *old_but_ptr, uiBut *new_but)
float ui_event_icon_offset(int icon_id)
bool ui_but_context_poll_operator_ex(bContext *C, const uiBut *but, const wmOperatorCallParams *optype_params)
bool int ui_searchbox_find_index(ARegion *region, const char *name)
void ui_but_string_get_ex(uiBut *but, char *str, size_t str_maxncpy, int float_precision, bool use_exp_float, bool *r_use_exp_float) ATTR_NONNULL(1
void ui_draw_preview_item_stateless(const uiFontStyle *fstyle, rcti *rect, blender::StringRef name, int iconid, const uchar text_col[4], eFontStyle_Align text_align, bool draw_as_icon=false)
void ui_block_add_dynamic_listener(uiBlock *block, void(*listener_func)(const wmRegionListenerParams *params))
uiButViewItem * ui_block_view_find_matching_view_item_but_in_old_block(const uiBlock &new_block, const blender::ui::AbstractViewItem &new_item)
size_t ui_but_tip_len_only_first_line(const uiBut *but)
void ui_but_active_string_clear_and_exit(bContext *C, uiBut *but) ATTR_NONNULL()
uiBut * ui_view_item_find_mouse_over(const ARegion *region, const int xy[2]) ATTR_NONNULL(1
void ui_block_to_region_rctf(const ARegion *region, const uiBlock *block, rctf *rct_dst, const rctf *rct_src)
Definition interface.cc:153
void ui_draw_layout_panels_backdrop(const ARegion *region, const Panel *panel, const float radius, float subpanel_backcolor[4])
uiBut * ui_but_add_search(uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop, bool results_are_suggestions)
bool ui_jump_to_target_button_poll(bContext *C)
void ui_hsvcircle_pos_from_vals(const ColorPicker *cpicker, const rcti *rect, const float *hsv, float *r_xpos, float *r_ypos)
bool ui_but_contains_point_px_icon(const uiBut *but, ARegion *region, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
const char * ui_but_placeholder_get(uiBut *but)
bool ui_layout_replace_but_ptr(uiLayout *layout, const void *old_but_ptr, uiBut *new_but)
void ui_block_bounds_calc(uiBlock *block)
Definition interface.cc:436
void ui_interface_tag_script_reload_queries()
bool ui_block_is_popup_any(const uiBlock *block) ATTR_WARN_UNUSED_RESULT
bool ui_layout_panel_toggle_open(const bContext *C, LayoutPanelHeader *header)
void ui_but_override_flag(Main *bmain, uiBut *but)
ARegion * ui_searchbox_create_operator(bContext *C, ARegion *butregion, uiButSearch *search_but)
uiPopupBlockHandle * ui_popup_block_create(bContext *C, ARegion *butregion, uiBut *but, uiBlockCreateFunc create_func, uiBlockHandleCreateFunc handle_create_func, void *arg, uiFreeArgFunc arg_free, bool can_refresh)
void ui_draw_widget_menu_back(const rcti *rect, bool use_shadow)
ARegion * ui_searchbox_create_generic(bContext *C, ARegion *butregion, uiButSearch *search_but)
bool ui_but_is_bool(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void uiStyleInit()
bool ui_but_anim_expression_create(uiBut *but, const char *str)
double ui_but_value_get(uiBut *but)
rcti ui_to_pixelrect(const ARegion *region, const uiBlock *block, const rctf *src_rect)
float ui_block_to_window_scale(const ARegion *region, const uiBlock *block)
Definition interface.cc:173
uiPopupBlockHandle * ui_popup_menu_create(bContext *C, ARegion *butregion, uiBut *but, uiMenuCreateFunc menu_func, void *arg)
void ui_draw_menu_back(uiStyle *style, uiBlock *block, const rcti *rect)
void ui_window_to_region_rcti(const ARegion *region, rcti *rect_dst, const rcti *rct_src)
Definition interface.cc:238
void UI_OT_eyedropper_depth(wmOperatorType *ot)
void ui_but_text_password_hide(char password_str[128], uiBut *but, bool restore)
void UI_OT_eyedropper_driver(wmOperatorType *ot)
int ui_handler_panel_region(bContext *C, const wmEvent *event, ARegion *region, const uiBut *active_but)
void ui_draw_preview_item(const uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int but_flag, eFontStyle_Align text_align)
void ui_color_picker_rgb_to_hsv(const float rgb[3], float r_cp[3])
void ui_hsvcube_pos_from_vals(const uiButHSVCube *hsv_but, const rcti *rect, const float *hsv, float *r_xp, float *r_yp)
ARegion * ui_searchbox_create_menu(bContext *C, ARegion *butregion, uiButSearch *search_but)
void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3])
void ui_draw_rounded_corners_inverted(const rcti &rect, const float rad, const blender::float4 color)
void ui_popup_block_free(bContext *C, uiPopupBlockHandle *handle)
void ui_searchbox_free(bContext *C, ARegion *region)
void UI_OT_eyedropper_grease_pencil_color(wmOperatorType *ot)
void ui_but_active_free(const bContext *C, uiBut *but)
int ui_but_menu_step(uiBut *but, int direction)
void ui_block_free_views(uiBlock *block)
void ui_region_to_window(const ARegion *region, int *x, int *y)
Definition interface.cc:254
uiListType * UI_UL_asset_view()
blender::ui::AbstractView * ui_block_view_find_matching_in_old_block(const uiBlock &new_block, const blender::ui::AbstractView &new_view)
void ui_but_anim_decorate_cb(bContext *C, void *arg_but, void *arg_dummy)
uiBut * ui_but_find_rect_over(const ARegion *region, const rcti *rect_px) ATTR_WARN_UNUSED_RESULT
void ui_window_to_region(const ARegion *region, int *x, int *y)
Definition interface.cc:232
void ui_window_to_block_fl(const ARegion *region, const uiBlock *block, float *x, float *y)
Definition interface.cc:184
bool ui_region_contains_point_px(const ARegion *region, const int xy[2]) ATTR_NONNULL(1
void ui_item_paneltype_func(bContext *C, uiLayout *layout, void *arg_pt)
bool ui_searchbox_apply(uiBut *but, ARegion *region)
void ui_draw_gradient(const rcti *rect, const float hsv[3], eButGradientType type, float alpha)
void ui_draw_but_UNITVEC(uiBut *but, const uiWidgetColors *wcol, const rcti *rect, float radius)
void ui_panel_tag_search_filter_match(Panel *panel)
void ui_but_anim_decorate_update_from_flag(uiButDecorator *but)
bool ui_but_rna_equals(const uiBut *a, const uiBut *b)
Definition interface.cc:703
void ui_popup_translate(ARegion *region, const int mdiff[2])
void ui_block_cm_to_display_space_v3(uiBlock *block, float pixel[3])
bool ui_but_is_toggle(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_pan_to_scroll(const wmEvent *event, int *type, int *val)
bool(*)(const uiBut *but, const void *customdata) uiButFindPollFn
void ui_draw_aligned_panel(const ARegion *region, const uiStyle *style, const uiBlock *block, const rcti *rect, bool show_pin, bool show_background, bool region_search_filter_active)
void ui_draw_menu_item(const uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int but_flag, uiMenuItemSeparatorType separator_type, int *r_xmax)
bool ui_block_is_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT
void ui_but_anim_flag(uiBut *but, const AnimationEvalContext *anim_eval_context)
void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra)
@ UI_PIE_DRAG_STYLE
@ UI_PIE_INVALID_DIR
@ UI_PIE_ANIMATION_FINISHED
@ UI_PIE_CLICK_STYLE
@ UI_PIE_INITIAL_DIRECTION
@ UI_PIE_GESTURE_END_WAIT
uiBut * ui_view_item_find_search_highlight(const ARegion *region)
bool ui_but_menu_draw_as_popover(const uiBut *but)
void ui_but_value_set(uiBut *but, double value)
void ui_block_new_button_group(uiBlock *block, uiButtonGroupFlag flag)
uiBut * ui_region_find_first_but_test_flag(ARegion *region, int flag_include, int flag_exclude)
bool ui_but_rna_equals_ex(const uiBut *but, const PointerRNA *ptr, const PropertyRNA *prop, int index)
Definition interface.cc:708
const char * ui_textedit_undo(uiUndoStack_Text *stack, int direction, int *r_cursor_index)
void ui_layout_list_set_labels_active(uiLayout *layout)
uiBut * ui_list_find_mouse_over_ex(const ARegion *region, const int xy[2]) ATTR_NONNULL(1
void ui_but_hsv_set(uiBut *but)
bool ui_but_is_interactive_ex(const uiBut *but, const bool labeledit, const bool for_tooltip)
void ui_draw_but_CURVE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect)
void ui_draw_but(const bContext *C, ARegion *region, uiStyle *style, uiBut *but, rcti *rect)
bool ui_but_anim_expression_get(uiBut *but, char *str, size_t str_maxncpy)
LayoutPanelHeader * ui_layout_panel_header_under_mouse(const Panel &panel, const int my)
bool ui_searchbox_inside(ARegion *region, const int xy[2]) ATTR_NONNULL(1
void ui_block_views_listen(const uiBlock *block, const wmRegionListenerParams *listener_params)
uiBut * ui_but_find_select_in_enum(uiBut *but, int direction)
std::optional< blender::StringRefNull > UI_asset_shelf_idname_from_button_context(const uiBut *but)
void ui_block_to_region_fl(const ARegion *region, const uiBlock *block, float *x, float *y)
Definition interface.cc:116
uiBut * ui_but_first(uiBlock *block) ATTR_WARN_UNUSED_RESULT
bool ui_but_is_float(const uiBut *but) ATTR_WARN_UNUSED_RESULT
bool ui_but_can_align(const uiBut *but) ATTR_WARN_UNUSED_RESULT
ARegion * ui_screen_region_find_mouse_over_ex(bScreen *screen, const int xy[2]) ATTR_NONNULL(1
void UI_OT_eyedropper_id(wmOperatorType *ot)
void ui_pie_menu_level_create(uiBlock *block, wmOperatorType *ot, const char *propname, IDProperty *properties, const EnumPropertyItem *items, int totitem, wmOperatorCallContext context, eUI_Item_Flag flag)
void ui_but_to_pixelrect(rcti *rect, const ARegion *region, const uiBlock *block, const uiBut *but)
void ui_but_rna_menu_convert_to_panel_type(uiBut *but, const char *panel_type)
uiBut * ui_but_find_old(uiBlock *block_old, const uiBut *but_new)
Definition interface.cc:794
bool ui_but_contains_pt(const uiBut *but, float mx, float my) ATTR_WARN_UNUSED_RESULT
uiBut * ui_list_find_mouse_over(const ARegion *region, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
blender::StringRef ui_but_drawstr_without_sep_char(const uiBut *but) ATTR_NONNULL()
char * ui_but_string_get_dynamic(uiBut *but, int *r_str_size)
bool ui_searchbox_event(bContext *C, ARegion *region, uiBut *but, ARegion *butregion, const wmEvent *event)
void ui_window_to_region_rctf(const ARegion *region, rctf *rect_dst, const rctf *rct_src)
Definition interface.cc:246
void ui_draw_but_VECTORSCOPE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *recti)
void ui_window_to_block_rctf(const ARegion *region, const uiBlock *block, rctf *rct_dst, const rctf *rct_src)
Definition interface.cc:211
void ui_block_to_window_rctf(const ARegion *region, const uiBlock *block, rctf *rct_dst, const rctf *rct_src)
Definition interface.cc:163
bool ui_but_contains_password(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_but_update_edited(uiBut *but)
void ui_but_anim_copy_driver(bContext *C)
void ui_but_anim_paste_driver(bContext *C)
int ui_but_is_pushed(uiBut *but) ATTR_WARN_UNUSED_RESULT
uiBut * ui_but_find_mouse_over_ex(const ARegion *region, const int xy[2], bool labeledit, bool for_tooltip, const uiButFindPollFn find_poll, const void *find_custom_data) ATTR_NONNULL(1
bool ui_but_is_compatible(const uiBut *but_a, const uiBut *but_b) ATTR_WARN_UNUSED_RESULT
void ui_but_v3_set(uiBut *but, const float vec[3])
int ui_id_icon_get(const bContext *C, ID *id, bool big)
bool ui_but_is_editable(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_but_v3_get(uiBut *but, float vec[3])
bool ui_but_supports_cycling(const uiBut *but) ATTR_WARN_UNUSED_RESULT
uiBut * ui_but_change_type(uiBut *but, eButType new_type)
uiBut * ui_list_row_find_mouse_over(const ARegion *region, const int xy[2]) ATTR_NONNULL(1
uiBlock * ui_popup_block_refresh(bContext *C, uiPopupBlockHandle *handle, ARegion *butregion, uiBut *but)
void ui_draw_popover_back(ARegion *region, uiStyle *style, uiBlock *block, const rcti *rect)
int ui_but_string_get_maxncpy(uiBut *but)
void ui_but_clipboard_free()
uiBlock * ui_block_func_COLOR(bContext *C, uiPopupBlockHandle *handle, void *arg_but)
bool ui_but_is_interactive(const uiBut *but, bool labeledit) ATTR_WARN_UNUSED_RESULT
void ui_but_activate_event(bContext *C, ARegion *region, uiBut *but)
void ui_icon_ensure_deferred(const bContext *C, int icon_id, bool big)
void ui_color_picker_rgb_to_hsv_compat(const float rgb[3], float r_cp[3])
void ui_popup_menu_memory_set(uiBlock *block, uiBut *but)
eBlockContentHints
@ UI_BLOCK_CONTAINS_SUBMENU_BUT
void ui_fontscale(float *points, float aspect)
void ui_button_group_add_but(uiBlock *block, uiBut *but)
uiBut * ui_but_last(uiBlock *block) ATTR_WARN_UNUSED_RESULT
bool ui_region_contains_rect_px(const ARegion *region, const rcti *rect_px)
ColorManagedDisplay * ui_block_cm_display_get(uiBlock *block)
void ui_block_to_window(const ARegion *region, const uiBlock *block, int *x, int *y)
Definition interface.cc:142
uiPopupBlockHandle * ui_popover_panel_create(bContext *C, ARegion *butregion, uiBut *but, uiPopoverCreateFunc popover_func, const PanelType *panel_type)
void ui_block_to_window_fl(const ARegion *region, const uiBlock *block, float *x, float *y)
Definition interface.cc:135
uiBut * ui_region_find_active_but(ARegion *region) ATTR_WARN_UNUSED_RESULT
void ui_but_pie_dir(RadialDirection dir, float vec[2])
uiBut * ui_but_next(uiBut *but) ATTR_WARN_UNUSED_RESULT
uiListType * UI_UL_cache_file_layers()
void ui_draw_but_CURVEPROFILE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect)
void ui_textedit_undo_stack_destroy(uiUndoStack_Text *stack)
void ui_block_views_bounds_calc(const uiBlock *block)
int ui_but_align_opposite_to_area_align_get(const ARegion *region) ATTR_WARN_UNUSED_RESULT
PropertyScaleType ui_but_scale_type(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_rna_collection_search_update_fn(const bContext *C, void *arg, const char *str, uiSearchItems *items, bool is_first)
int ui_but_icon(const uiBut *but)
blender::gpu::Batch * ui_batch_roundbox_shadow_get()
void ui_but_update_view_for_active(const bContext *C, const uiBlock *block)
bool ui_but_is_popover_once_compat(const uiBut *but) ATTR_WARN_UNUSED_RESULT
bool ui_but_is_editable_as_text(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_but_set_string_interactive(bContext *C, uiBut *but, const char *value)
uiUndoStack_Text * ui_textedit_undo_stack_create()
bool ui_but_drag_is_draggable(const uiBut *but)
bool ui_but_color_has_alpha(uiBut *but)
void ui_textedit_undo_push(uiUndoStack_Text *stack, const char *text, int cursor_index)
bool ui_but_anim_expression_set(uiBut *but, const char *str)
blender::gpu::Batch * ui_batch_roundbox_widget_get()
void ui_but_rna_menu_convert_to_menu_type(uiBut *but, const char *menu_type)
bool ui_but_is_color_gamma(uiBut *but)
void ui_layout_remove_but(uiLayout *layout, const uiBut *but)
std::function< void(bContext *, uiLayout *, PanelType *)> uiPopoverCreateFunc
void ui_block_align_calc(uiBlock *block, const ARegion *region)
void icon_draw_rect_input(float x, float y, int w, int h, int icon_id, float aspect, float alpha, bool inverted)
void ui_panel_drag_collapse_handler_add(const bContext *C, const bool was_open)
void ui_layout_add_but(uiLayout *layout, uiBut *but)
bool ui_but_is_unit(const uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_but_semi_modal_state_free(const bContext *C, uiBut *but)
uiBut * ui_but_prev(uiBut *but) ATTR_WARN_UNUSED_RESULT
void ui_but_drag_start(bContext *C, uiBut *but)
void ui_but_execute_begin(bContext *C, ARegion *region, uiBut *but, void **active_back)
void ui_but_execute_end(bContext *C, ARegion *region, uiBut *but, void *active_back)
void ui_draw_but_TRACKPREVIEW(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *recti)
int ui_searchbox_autocomplete(bContext *C, ARegion *region, uiBut *but, char *str)
void ui_draw_but_IMAGE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect)
void ui_draw_but_TAB_outline(const rcti *rect, float rad, uchar highlight[3], uchar highlight_fade[3])
#define UI_PIXEL_AA_JITTER
void ui_layout_panel_popup_scroll_apply(Panel *panel, const float dy)
void ui_region_winrct_get_no_margin(const ARegion *region, rcti *r_rect)
Definition interface.cc:334
bool ui_but_context_poll_operator(bContext *C, wmOperatorType *ot, const uiBut *but)
void ui_draw_but_COLORBAND(uiBut *but, const uiWidgetColors *wcol, const rcti *rect)
void ui_resources_init()
Definition resources.cc:47
uiMenuItemSeparatorType
@ UI_MENU_ITEM_SEPARATOR_NONE
@ UI_MENU_ITEM_SEPARATOR_HINT
@ UI_MENU_ITEM_SEPARATOR_SHORTCUT
void ui_draw_pie_center(uiBlock *block)
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
blender::Vector< FCurve * > get_property_drivers(PointerRNA *ptr, PropertyRNA *prop, bool get_all, int index, bool *r_is_array_prop)
int paste_property_drivers(blender::Span< FCurve * > src_drivers, bool is_array_prop, PointerRNA *dst_ptr, PropertyRNA *dst_prop)
VecBase< float, 4 > float4
static PyObject * create_func(PyObject *, PyObject *args)
Definition python.cpp:161
float hsv_perceptual_init[3]
float hsv_scene_linear[3]
ColorPicker * next
float hsv_perceptual[3]
float luminosity_lock_value
ColorPicker * prev
Definition DNA_ID.h:413
float pie_center_spawned[2]
const char * title
float pie_center_init[2]
void(* listener_func)(const wmRegionListenerParams *params)
uiBlockDynamicListener * next
uiBlockDynamicListener * prev
float winmat[4][4]
eUIEmbossType emboss
char display_device[64]
uiBlock * next
ListBase layouts
PieMenuData pie_data
ListBase dynamic_listeners
uiButHandleNFunc funcN
bool is_color_gamma_picker
ColorPickerData color_pickers
ListBase saferct
uiLayout * curlayout
uiBlock * oldblock
uiBlock * prev
uiPopupBlockHandle * handle
uiButArgNFree func_argN_free_fn
uiButArgNCopy func_argN_copy_fn
uiBlockHandleFunc handle_func
double auto_open_last
blender::Vector< std::unique_ptr< bContextStore > > contexts
int bounds_offset[2]
ListBase buttons
const char * lockstr
std::function< void(const bContext *, rcti *)> drawextra
eBlockBoundsCalc bounds_type
uiBlockInteraction_CallbackData custom_interaction_callbacks
bool ui_operator_free
wmOperator * ui_operator
uiButHandleFunc func
void * handle_func_arg
short content_hints
const UnitSettings * unit
ListBase butstore
blender::Vector< uiButtonGroup > button_groups
std::string name
int(* block_event_func)(const bContext *C, uiBlock *, const wmEvent *)
ListBase views
ColorBand * edit_coba
CurveMapping * edit_cumap
eButGradientType gradient_type
CurveProfile * edit_profile
PointerRNA decorated_rnapoin
PropertyRNA * decorated_rnaprop
uiButExtraOpIcon * prev
wmOperatorCallParams * optype_params
uiButExtraOpIcon * next
eButGradientType gradient_type
eButProgressType progress_type
uiButSearchUpdateFn items_update_fn
PropertyRNA * rnasearchprop
uiButSearchListenFn listen_fn
PointerRNA rnasearchpoin
const char * item_sep_string
uiButSearchCreateFn popup_create_fn
uiFreeArgFunc arg_free_fn
uiButSearchTooltipFn item_tooltip_fn
uiButSearchContextMenuFn item_context_menu_fn
MenuType * menu
blender::ui::AbstractViewItem * view_item
wmOperatorCallContext opcontext
uiBut()=default
const char * tip
uiButCompleteFunc autocomplete_func
ListBase extra_op_icons
void * custom_data
uiBut & operator=(const uiBut &other)=default
uiButIdentityCompareFunc identity_cmp_func
uiButHandleNFunc funcN
void * func_arg2
std::function< void(bContext &)> apply_func
RadialDirection pie_dir
IconTextOverlay icon_overlay_text
void * rename_orig
float * editvec
void * dragpoin
PropertyRNA * rnaprop
wmOperatorType * optype
const ImBuf * imb
char * editstr
eButType type
double * editval
bool operator_never_call
uiHandleButtonData * active
uiButHandleFunc func
eButPointerType pointype
const char * disabled_info
uchar unit_type
float search_weight
void * tip_arg
uiBlock * block
eUIEmbossType emboss
PointerRNA * opptr
uiMenuCreateFunc menu_create_func
std::function< void(std::string &new_name)> rename_full_func
std::string rename_full_new
const bContextStore * context
uiButToolTipFunc tip_func
std::string drawstr
uiButArgNFree func_argN_free_fn
uiBut * next
std::function< std::string(const uiBut *)> tip_label_func
void * func_arg1
std::function< bool(const uiBut &)> pushed_state_func
std::string str
uiButHandleHoldFunc hold_func
void * hold_argN
char * placeholder
uiBut * prev
BIFIconID icon
uiButHandleRenameFunc rename_func
uiBlockCreateFunc block_create_func
uiButArgNCopy func_argN_copy_fn
uiFreeArgFunc tip_arg_free
uiBut(const uiBut &other)=default
void * autofunc_arg
eWM_DragDataType dragtype
void * rename_arg1
PointerRNA rnapoin
uiMenuStepFunc menu_step_func
uiHandleButtonData * semi_modal_state
uiLayout * layout
float imb_scale
uiButToolTipCustomFunc tip_custom_func
void * func_argN
uchar col[4]
uiButtonGroupFlag flag
blender::Vector< uiBut * > buttons
uiBlockHandleCreateFunc handle_create_func
uiBlockCreateFunc create_func
void(* popup_func)(bContext *C, void *arg, int event)
void(* cancel_func)(bContext *C, void *arg)
uiPopupBlockCreate popup_create_vars
uiSafetyRct * prev
uiSafetyRct * next
int xy[2]
Definition wm_draw.cc:170
PointerRNA * ptr
Definition wm_files.cc:4126
wmOperatorType * ot
Definition wm_files.cc:4125
uint8_t flag
Definition wm_window.cc:138