58 #define UI_TIP_PAD_FAC 1.3f
59 #define UI_TIP_PADDING (int)(UI_TIP_PAD_FAC * UI_UNIT_Y)
60 #define UI_TIP_MAXWIDTH 600
62 #define UI_TIP_STR_MAX 1024
101 #define UI_TIP_LC_MAX 6
108 data->fields_len += 1;
110 return &
data->fields[
data->fields_len - 1];
124 static void rgb_tint(
float col[3],
float h,
float h_strength,
float v,
float v_strength)
126 float col_hsv_from[3];
132 col_hsv_to[1] = h_strength;
133 col_hsv_to[2] = (col_hsv_from[2] * (1.0f - v_strength)) + (
v * v_strength);
145 uchar drawcol[4] = {0, 0, 0, 255};
147 float *main_color = tip_colors[UI_TIP_LC_MAIN];
148 float *value_color = tip_colors[UI_TIP_LC_VALUE];
149 float *active_color = tip_colors[UI_TIP_LC_ACTIVE];
150 float *normal_color = tip_colors[UI_TIP_LC_NORMAL];
151 float *python_color = tip_colors[UI_TIP_LC_PYTHON];
152 float *alert_color = tip_colors[UI_TIP_LC_ALERT];
154 float background_color[3];
178 rgb_tint(value_color, 0.0f, 0.0f, tone_bg, 0.2f);
179 rgb_tint(active_color, 0.6f, 0.2f, tone_bg, 0.2f);
180 rgb_tint(normal_color, 0.0f, 0.0f, tone_bg, 0.4f);
181 rgb_tint(python_color, 0.0f, 0.0f, tone_bg, 0.5f);
182 rgb_tint(alert_color, 0.0f, 0.8f, tone_bg, 0.1f);
188 bbox.
xmin += 0.5f * pad_px;
189 bbox.
ymax -= 0.25f * pad_px;
191 for (
int i = 0; i <
data->fields_len; i++) {
222 else if (field->
format.
style == UI_TIP_STYLE_MONO) {
264 for (
int i = 0; i <
data->fields_len; i++) {
302 const int fields_len_init =
data->fields_len;
312 .style = UI_TIP_STYLE_NORMAL,
313 .color_id = UI_TIP_LC_MAIN,
322 .style = UI_TIP_STYLE_NORMAL,
323 .color_id = UI_TIP_LC_NORMAL,
336 .style = UI_TIP_STYLE_NORMAL,
337 .color_id = UI_TIP_LC_PYTHON,
346 return (fields_len_init !=
data->fields_len);
377 bool has_valid_context =
true;
378 const char *has_valid_context_error =
IFACE_(
"Unsupported context");
382 has_valid_context =
false;
388 if (space_type_prop !=
area->spacetype) {
389 has_valid_context =
false;
405 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
408 "bl_ui.space_toolsystem_common.item_from_id("
410 "bpy.context.space_data.type, "
413 char *expr_result =
NULL;
414 bool is_error =
false;
416 if (has_valid_context ==
false) {
417 expr_result =
BLI_strdup(has_valid_context_error);
420 if (
STREQ(expr_result,
"")) {
432 if (expr_result !=
NULL) {
436 if (label_str == expr_result) {
437 label_str =
IFACE_(expr_result);
440 if (label_str != expr_result) {
447 .style = UI_TIP_STYLE_NORMAL,
448 .color_id = UI_TIP_LC_MAIN,
451 field->
text = expr_result;
460 if (is_label ==
false) {
461 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
464 "bl_ui.space_toolsystem_common.description_from_id("
466 "bpy.context.space_data.type, "
470 char *expr_result =
NULL;
471 bool is_error =
false;
473 if (has_valid_context ==
false) {
474 expr_result =
BLI_strdup(has_valid_context_error);
477 if (
STREQ(expr_result,
".")) {
489 if (expr_result !=
NULL) {
492 .style = UI_TIP_STYLE_NORMAL,
493 .color_id = UI_TIP_LC_MAIN,
496 field->
text = expr_result;
505 const bool show_shortcut = is_label ==
false &&
518 char *shortcut =
NULL;
526 if (shortcut ==
NULL) {
529 if (tool_attr !=
NULL) {
531 const char *tool_id_lstrip = strrchr(tool_id,
'.');
532 const int tool_id_offset = tool_id_lstrip ? ((tool_id_lstrip - tool_id) + 1) : 0;
542 char shortcut_brush[128] =
"";
557 if (shortcut ==
NULL) {
559 char shortcut_toolbar[128] =
"";
569 const char *expr_imports[] = {
570 "bpy",
"bl_keymap_utils",
"bl_keymap_utils.keymap_from_toolbar",
NULL};
573 "bl_keymap_utils.keymap_from_toolbar.generate("
575 "bpy.context.space_data.type), "
576 "'as_pointer', lambda: 0)()");
580 if (has_valid_context ==
false) {
581 shortcut =
BLI_strdup(has_valid_context_error);
584 if (expr_result != 0) {
590 if (
STREQ(tool_id, tool_id_test)) {
593 shortcut =
BLI_sprintfN(
"%s, %s", shortcut_toolbar, buf);
606 if (shortcut !=
NULL) {
609 .style = UI_TIP_STYLE_NORMAL,
610 .color_id = UI_TIP_LC_VALUE,
630 char *expr_result =
NULL;
631 size_t expr_result_len;
634 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
638 "item.idname for item in bl_ui.space_toolsystem_common.item_group_from_id("
640 "bpy.context.space_data.type, '%s', coerce=True) "
641 "if item is not None)",
644 if (has_valid_context ==
false) {
648 C, expr_imports, expr,
NULL, &expr_result, &expr_result_len)) {
653 if (expr_result !=
NULL) {
658 char shortcut[128] =
"";
660 const char *item_end = expr_result + expr_result_len;
661 const char *item_step = expr_result;
663 while (item_step < item_end) {
674 item_step += strlen(item_step) + 1;
680 if (shortcut[0] !=
'\0') {
683 .style = UI_TIP_STYLE_NORMAL,
684 .color_id = UI_TIP_LC_VALUE,
696 .style = UI_TIP_STYLE_NORMAL,
697 .color_id = UI_TIP_LC_PYTHON,
709 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
713 "bl_ui.space_toolsystem_common.keymap_from_id("
715 "bpy.context.space_data.type, "
717 "'as_pointer', lambda: 0)()",
722 if (has_valid_context ==
false) {
726 if (expr_result != 0) {
730 .style = UI_TIP_STYLE_NORMAL,
731 .color_id = UI_TIP_LC_NORMAL,
737 ui_tooltip_data_append_from_keymap(
C,
data, keymap);
745 UNUSED_VARS(is_label, has_valid_context, has_valid_context_error);
748 if (
data->fields_len == 0) {
801 .style = UI_TIP_STYLE_HEADER,
802 .color_id = UI_TIP_LC_NORMAL,
812 .style = UI_TIP_STYLE_HEADER,
813 .color_id = UI_TIP_LC_NORMAL,
828 .style = UI_TIP_STYLE_NORMAL,
829 .color_id = UI_TIP_LC_NORMAL,
838 .style = UI_TIP_STYLE_NORMAL,
839 .color_id = UI_TIP_LC_VALUE,
849 .style = UI_TIP_STYLE_NORMAL,
850 .color_id = UI_TIP_LC_VALUE,
860 .style = UI_TIP_STYLE_NORMAL,
861 .color_id = UI_TIP_LC_VALUE,
875 .style = UI_TIP_STYLE_NORMAL,
876 .color_id = UI_TIP_LC_VALUE,
895 .style = UI_TIP_STYLE_NORMAL,
896 .color_id = UI_TIP_LC_VALUE,
906 .style = UI_TIP_STYLE_NORMAL,
907 .color_id = UI_TIP_LC_NORMAL,
918 .style = UI_TIP_STYLE_NORMAL,
919 .color_id = UI_TIP_LC_NORMAL,
939 .style = UI_TIP_STYLE_MONO,
940 .color_id = UI_TIP_LC_PYTHON,
951 const char *disabled_msg =
NULL;
952 bool disabled_msg_free =
false;
968 if (disabled_msg && disabled_msg[0]) {
971 .style = UI_TIP_STYLE_NORMAL,
972 .color_id = UI_TIP_LC_ALERT,
976 if (disabled_msg_free) {
985 .style = UI_TIP_STYLE_MONO,
986 .color_id = UI_TIP_LC_PYTHON,
1002 .style = UI_TIP_STYLE_MONO,
1003 .color_id = UI_TIP_LC_PYTHON,
1046 if (
data->fields_len == 0) {
1065 } gzop_actions[] = {
1076 for (
int i = 0; i <
ARRAY_SIZE(gzop_actions); i++) {
1087 if (gzop_actions[i].prefix !=
NULL) {
1088 text =
BLI_sprintfN(
"%s: %s", gzop_actions[i].prefix, info);
1095 .style = UI_TIP_STYLE_HEADER,
1096 .color_id = UI_TIP_LC_VALUE,
1111 .style = UI_TIP_STYLE_NORMAL,
1112 .color_id = UI_TIP_LC_VALUE,
1130 if (info && info[0]) {
1133 .style = UI_TIP_STYLE_NORMAL,
1134 .color_id = UI_TIP_LC_VALUE,
1143 if (
data->fields_len == 0) {
1152 const float init_position[2],
1153 const rcti *init_rect_overlap,
1189 #define TIP_BORDER_X (16.0f / aspect)
1190 #define TIP_BORDER_Y (6.0f / aspect)
1194 int i, fonth, fontw;
1195 for (i = 0, fontw = 0, fonth = 0; i <
data->fields_len; i++) {
1209 font_id =
data->fstyle.uifont_id;
1220 fonth += h * info.lines;
1243 rect_fl.
xmax = rect_fl.
xmin + fontw + pad_px;
1258 if (init_rect_overlap !=
NULL) {
1259 const int pad =
max_ff(1.0f,
U.pixelsize) * 5;
1260 const rcti init_rect = {
1262 .xmax = init_rect_overlap->
xmax +
pad,
1263 .ymin = init_rect_overlap->
ymin -
pad,
1264 .ymax = init_rect_overlap->
ymax +
pad,
1266 const rcti rect_clamp = {
1276 #ifdef USE_ALIGN_Y_CENTER
1288 r.xmin = init_rect.
xmax;
1289 r.xmax =
r.xmin + size_x;
1290 #ifdef USE_ALIGN_Y_CENTER
1291 r.ymin = cent_overlap_y - (size_y / 2);
1292 r.ymax =
r.ymin + size_y;
1295 r.ymax = init_rect.
ymax;
1303 r.xmin = init_rect.
xmin - size_x;
1304 r.xmax =
r.xmin + size_x;
1305 #ifdef USE_ALIGN_Y_CENTER
1306 r.ymin = cent_overlap_y - (size_y / 2);
1307 r.ymax =
r.ymin + size_y;
1310 r.ymax = init_rect.
ymax;
1318 r.xmin = cent_overlap_x - (size_x / 2);
1319 r.xmax =
r.xmin + size_x;
1320 r.ymin = init_rect.
ymax;
1321 r.ymax =
r.ymin + size_y;
1326 r.xmin = cent_overlap_x - (size_x / 2);
1327 r.xmax =
r.xmin + size_x;
1328 r.ymin = init_rect.
ymin - size_y;
1329 r.ymax =
r.ymin + size_y;
1334 for (
int j = 0; j < 4; j++) {
1335 const rcti *
r = (&rect.xpos) + j;
1344 int offset_dummy[2];
1350 const int pad =
max_ff(1.0f,
U.pixelsize) * 5;
1351 const rcti rect_clamp = {
1357 int offset_dummy[2];
1362 #undef USE_ALIGN_Y_CENTER
1371 if (init_rect_overlap !=
NULL) {
1375 data->bbox.xmin = margin;
1377 data->bbox.ymin = margin;
1408 float init_position[2];
1433 if (is_no_overlap) {
1434 rctf overlap_rect_fl;
1442 overlap_rect_fl = but->
rect;
1457 C,
data, init_position, is_no_overlap ? &init_rect :
NULL, aspect);
1470 const float aspect = 1.0f;
1485 init_position[0] =
bounds.xmin;
1486 init_position[1] =
bounds.ymin;
1501 .style = UI_TIP_STYLE_HEADER,
1502 .color_id = UI_TIP_LC_NORMAL,
1508 if (item_tooltip_data->
name && item_tooltip_data->
name[0]) {
1511 .style = UI_TIP_STYLE_NORMAL,
1512 .color_id = UI_TIP_LC_VALUE,
1517 if (item_tooltip_data->
hint[0]) {
1520 .style = UI_TIP_STYLE_NORMAL,
1521 .color_id = UI_TIP_LC_NORMAL,
1527 if (
data->fields_len == 0) {
1536 const ARegion *searchbox_region,
1537 const rcti *item_rect,
1545 const float aspect = 1.0f;
1547 float init_position[2];
struct ScrArea * CTX_wm_area(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
const char * CTX_wm_operator_poll_msg_get(struct bContext *C, bool *r_free)
struct SpaceLink * CTX_wm_space_data(const bContext *C)
void CTX_wm_operator_poll_msg_clear(struct bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
ePaintMode BKE_paintmode_get_active_from_context(const struct bContext *C)
const struct EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(ePaintMode mode)
const char * BKE_paint_get_tool_prop_id_from_paintmode(ePaintMode mode)
void BLF_disable(int fontid, int option)
float BLF_width(int fontid, const char *str, size_t str_len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
float BLF_width_ex(int fontid, const char *str, size_t str_len, struct ResultBLF *r_info) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
void BLF_enable(int fontid, int option)
int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_size(int fontid, float size, int dpi)
void BLF_wordwrap(int fontid, int wrap_width)
#define LISTBASE_FOREACH(type, var, list)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
void hsv_to_rgb_v(const float hsv[3], float r_rgb[3])
void rgb_to_hsv_v(const float rgb[3], float r_hsv[3])
MINLINE float rgb_to_grayscale(const float rgb[3])
void rgb_uchar_to_float(float r_col[3], const unsigned char col_ub[3])
void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE float BLI_rctf_cent_y(const struct rctf *rct)
BLI_INLINE float BLI_rctf_cent_x(const struct rctf *rct)
void BLI_rcti_rctf_copy_round(struct rcti *dst, const struct rctf *src)
void BLI_rcti_translate(struct rcti *rect, int x, int y)
void BLI_rcti_resize(struct rcti *rect, int x, int y)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE int BLI_rcti_cent_y(const struct rcti *rct)
void BLI_rcti_rctf_copy(struct rcti *dst, const struct rctf *src)
bool BLI_rcti_inside_rcti(const rcti *rct_a, const rcti *rct_b)
bool BLI_rcti_clamp(struct rcti *rect, const struct rcti *rect_bounds, int r_xy[2])
BLI_INLINE int BLI_rcti_cent_x(const struct rcti *rct)
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
#define SNPRINTF(dst, format,...)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define CTX_TIP_(context, msgid)
bool bool bool BPY_run_string_as_string_and_size(struct bContext *C, const char *imports[], const char *expr, struct BPy_RunErrInfo *err_info, char **r_value, size_t *r_value_size) ATTR_NONNULL(1
bool bool BPY_run_string_as_intptr(struct bContext *C, const char *imports[], const char *expr, struct BPy_RunErrInfo *err_info, intptr_t *r_value) ATTR_NONNULL(1
bool bool bool bool BPY_run_string_as_string(struct bContext *C, const char *imports[], const char *expr, struct BPy_RunErrInfo *err_info, char **r_value) ATTR_NONNULL(1
#define ID_IS_LINKED(_id)
void ED_region_floating_init(struct ARegion *region)
void ED_region_tag_redraw(struct ARegion *region)
_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 GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_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
Read Guarded memory(de)allocation.
#define MEM_recallocN(vmemh, len)
void UI_fontstyle_set(const struct uiFontStyle *fs)
struct PointerRNA * UI_but_operator_ptr_get(uiBut *but)
struct PointerRNA * UI_but_extra_operator_icon_opptr_get(struct uiButExtraOpIcon *extra_icon)
int UI_but_unit_type_get(const uiBut *but)
const struct uiStyle * UI_style_get(void)
void UI_fontstyle_draw(const struct uiFontStyle *fs, const struct rcti *rect, const char *str, size_t str_len, const uchar col[4], const struct uiFontStyleDraw_Params *fs_params)
@ BUT_GET_RNASTRUCT_IDENTIFIER
@ BUT_GET_RNAPROP_IDENTIFIER
void UI_but_extra_icon_string_info_get(struct bContext *C, uiButExtraOpIcon *extra_icon,...) ATTR_SENTINEL(0)
bool UI_but_is_tool(const uiBut *but)
void UI_but_string_info_get(struct bContext *C, uiBut *but,...) ATTR_SENTINEL(0)
bool UI_but_has_tooltip_label(const uiBut *but)
struct wmOperatorType * UI_but_extra_operator_icon_optype_get(struct uiButExtraOpIcon *extra_icon)
@ UI_BLOCK_SHOW_SHORTCUT_ALWAYS
@ WM_OP_INVOKE_REGION_WIN
int pad[32 - sizeof(int)]
ATTR_WARN_UNUSED_RESULT const BMVert * v
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
void ui_block_to_window_rctf(const ARegion *region, uiBlock *block, rctf *rct_dst, const rctf *rct_src)
bool ui_but_context_poll_operator_ex(bContext *C, const uiBut *but, const wmOperatorCallParams *optype_params)
void ui_but_string_get(uiBut *but, char *str, const size_t maxlen)
void ui_fontscale(float *points, float aspect)
void ui_block_to_window_fl(const ARegion *region, uiBlock *block, float *r_x, float *r_y)
bool ui_but_anim_expression_get(uiBut *but, char *str, size_t maxlen)
const struct uiWidgetColors * ui_tooltip_get_theme(void)
void ui_draw_tooltip_background(const struct uiStyle *style, uiBlock *block, rcti *rect)
void ui_region_temp_remove(bContext *C, bScreen *screen, ARegion *region)
ARegion * ui_region_temp_add(bScreen *screen)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_array_check(PropertyRNA *prop)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
int RNA_enum_from_name(const EnumPropertyItem *item, const char *name)
float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
PropertyType RNA_property_type(PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_property_flag(PropertyRNA *prop)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
const char * RNA_property_ui_description(const PropertyRNA *prop)
char * RNA_path_full_struct_py(Main *bmain, const PointerRNA *ptr)
char * RNA_path_full_property_py_ex(Main *bmain, const PointerRNA *ptr, PropertyRNA *prop, int index, bool use_fallback)
struct ARegionType * type
wmOperatorCallContext opcontext
const char * disabled_info
uiButToolTipFunc tip_func
struct PointerRNA * opptr
struct wmOperatorType * optype
char drawstr[UI_MAX_DRAW_STR]
struct PropertyRNA * rnaprop
struct PointerRNA rnapoin
struct wmOperatorType * type
wmGizmoFnScreenBoundsGet screen_bounds_get
int target_property_defs_len
const struct wmGizmoType * type
wmOperatorCallContext opcontext
struct wmEvent * eventstate
struct wmGizmoOpElem * WM_gizmo_operator_get(wmGizmo *gz, int part_index)
wmGizmoProperty * WM_gizmo_target_property_array(wmGizmo *gz)
int WM_keymap_item_to_string(const wmKeyMapItem *kmi, const bool compact, char *result, const int result_len)
char * WM_key_event_operator_string(const bContext *C, const char *opname, wmOperatorCallContext opcontext, IDProperty *properties, const bool is_strict, char *result, const int result_len)
char * WM_operatortype_description_or_name(struct bContext *C, struct wmOperatorType *ot, struct PointerRNA *properties)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
bool WM_operator_pystring_abbreviate(char *str, int str_len_max)
char * WM_operator_pystring_ex(bContext *C, wmOperator *op, const bool all_args, const bool macro_args, wmOperatorType *ot, PointerRNA *opptr)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)
void WM_operator_properties_sanitize(PointerRNA *ptr, const bool no_context)
void wmOrtho2_region_pixelspace(const ARegion *region)
int WM_window_pixels_y(const wmWindow *win)
int WM_window_pixels_x(const wmWindow *win)