73 #define UI_TIP_PAD_FAC 1.3f
74 #define UI_TIP_PADDING (int)(UI_TIP_PAD_FAC * UI_UNIT_Y)
75 #define UI_TIP_MAXWIDTH 600
114 #define UI_TIP_LC_MAX 6
121 data->fields_len += 1;
123 return &
data->fields[
data->fields_len - 1];
137 static void rgb_tint(
float col[3],
float h,
float h_strength,
float v,
float v_strength)
139 float col_hsv_from[3];
145 col_hsv_to[1] = h_strength;
146 col_hsv_to[2] = (col_hsv_from[2] * (1.0f - v_strength)) + (
v * v_strength);
158 uchar drawcol[4] = {0, 0, 0, 255};
160 float *main_color = tip_colors[UI_TIP_LC_MAIN];
161 float *value_color = tip_colors[UI_TIP_LC_VALUE];
162 float *active_color = tip_colors[UI_TIP_LC_ACTIVE];
163 float *normal_color = tip_colors[UI_TIP_LC_NORMAL];
164 float *python_color = tip_colors[UI_TIP_LC_PYTHON];
165 float *alert_color = tip_colors[UI_TIP_LC_ALERT];
167 float background_color[3];
191 rgb_tint(value_color, 0.0f, 0.0f, tone_bg, 0.2f);
192 rgb_tint(active_color, 0.6f, 0.2f, tone_bg, 0.2f);
193 rgb_tint(normal_color, 0.0f, 0.0f, tone_bg, 0.4f);
194 rgb_tint(python_color, 0.0f, 0.0f, tone_bg, 0.5f);
195 rgb_tint(alert_color, 0.0f, 0.8f, tone_bg, 0.1f);
201 bbox.
xmin += 0.5f * pad_px;
202 bbox.
ymax -= 0.25f * pad_px;
204 for (
int i = 0; i <
data->fields_len; i++) {
234 else if (field->
format.
style == UI_TIP_STYLE_MONO) {
276 for (
int i = 0; i <
data->fields_len; i++) {
314 const int fields_len_init =
data->fields_len;
324 .style = UI_TIP_STYLE_NORMAL,
325 .color_id = UI_TIP_LC_MAIN,
334 .style = UI_TIP_STYLE_NORMAL,
335 .color_id = UI_TIP_LC_NORMAL,
348 .style = UI_TIP_STYLE_NORMAL,
349 .color_id = UI_TIP_LC_PYTHON,
358 return (fields_len_init !=
data->fields_len);
389 bool has_valid_context =
true;
390 const char *has_valid_context_error =
IFACE_(
"Unsupported context");
394 has_valid_context =
false;
400 if (space_type_prop !=
area->spacetype) {
401 has_valid_context =
false;
417 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
420 "bl_ui.space_toolsystem_common.item_from_id("
422 "bpy.context.space_data.type, "
425 char *expr_result =
NULL;
426 bool is_error =
false;
428 if (has_valid_context ==
false) {
429 expr_result =
BLI_strdup(has_valid_context_error);
432 if (
STREQ(expr_result,
"")) {
444 if (expr_result !=
NULL) {
448 if (label_str == expr_result) {
449 label_str =
IFACE_(expr_result);
452 if (label_str != expr_result) {
459 .style = UI_TIP_STYLE_NORMAL,
460 .color_id = UI_TIP_LC_MAIN,
463 field->
text = expr_result;
472 if (is_label ==
false) {
473 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
476 "bl_ui.space_toolsystem_common.description_from_id("
478 "bpy.context.space_data.type, "
482 char *expr_result =
NULL;
483 bool is_error =
false;
485 if (has_valid_context ==
false) {
486 expr_result =
BLI_strdup(has_valid_context_error);
489 if (
STREQ(expr_result,
".")) {
501 if (expr_result !=
NULL) {
504 .style = UI_TIP_STYLE_NORMAL,
505 .color_id = UI_TIP_LC_MAIN,
508 field->
text = expr_result;
517 const bool show_shortcut = is_label ==
false &&
530 char *shortcut =
NULL;
538 if (shortcut ==
NULL) {
541 if (tool_attr !=
NULL) {
551 char shortcut_brush[128] =
"";
566 if (shortcut ==
NULL) {
568 char shortcut_toolbar[128] =
"";
578 const char *expr_imports[] = {
579 "bpy",
"bl_keymap_utils",
"bl_keymap_utils.keymap_from_toolbar",
NULL};
582 "bl_keymap_utils.keymap_from_toolbar.generate("
584 "bpy.context.space_data.type), "
585 "'as_pointer', lambda: 0)()");
589 if (has_valid_context ==
false) {
590 shortcut =
BLI_strdup(has_valid_context_error);
593 if (expr_result != 0) {
599 if (
STREQ(tool_id, tool_id_test)) {
602 shortcut =
BLI_sprintfN(
"%s, %s", shortcut_toolbar, buf);
615 if (shortcut !=
NULL) {
618 .style = UI_TIP_STYLE_NORMAL,
619 .color_id = UI_TIP_LC_VALUE,
639 char *expr_result =
NULL;
640 size_t expr_result_len;
643 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
647 "item.idname for item in bl_ui.space_toolsystem_common.item_group_from_id("
649 "bpy.context.space_data.type, '%s', coerce=True) "
650 "if item is not None)",
653 if (has_valid_context ==
false) {
657 C, expr_imports, expr,
NULL, &expr_result, &expr_result_len)) {
662 if (expr_result !=
NULL) {
667 char shortcut[128] =
"";
669 const char *item_end = expr_result + expr_result_len;
670 const char *item_step = expr_result;
672 while (item_step < item_end) {
683 item_step += strlen(item_step) + 1;
689 if (shortcut[0] !=
'\0') {
692 .style = UI_TIP_STYLE_NORMAL,
693 .color_id = UI_TIP_LC_VALUE,
705 .style = UI_TIP_STYLE_NORMAL,
706 .color_id = UI_TIP_LC_PYTHON,
718 const char *expr_imports[] = {
"bpy",
"bl_ui",
NULL};
722 "bl_ui.space_toolsystem_common.keymap_from_id("
724 "bpy.context.space_data.type, "
726 "'as_pointer', lambda: 0)()",
731 if (has_valid_context ==
false) {
735 if (expr_result != 0) {
739 .style = UI_TIP_STYLE_NORMAL,
740 .color_id = UI_TIP_LC_NORMAL,
746 ui_tooltip_data_append_from_keymap(
C,
data, keymap);
754 UNUSED_VARS(is_label, has_valid_context, has_valid_context_error);
757 if (
data->fields_len == 0) {
797 .style = UI_TIP_STYLE_HEADER,
798 .color_id = UI_TIP_LC_NORMAL,
808 .style = UI_TIP_STYLE_HEADER,
809 .color_id = UI_TIP_LC_NORMAL,
825 .style = UI_TIP_STYLE_NORMAL,
826 .color_id = UI_TIP_LC_NORMAL,
835 .style = UI_TIP_STYLE_NORMAL,
836 .color_id = UI_TIP_LC_VALUE,
846 .style = UI_TIP_STYLE_NORMAL,
847 .color_id = UI_TIP_LC_VALUE,
857 .style = UI_TIP_STYLE_NORMAL,
858 .color_id = UI_TIP_LC_VALUE,
872 .style = UI_TIP_STYLE_NORMAL,
873 .color_id = UI_TIP_LC_VALUE,
893 .style = UI_TIP_STYLE_NORMAL,
894 .color_id = UI_TIP_LC_VALUE,
904 .style = UI_TIP_STYLE_NORMAL,
905 .color_id = UI_TIP_LC_NORMAL,
916 .style = UI_TIP_STYLE_NORMAL,
917 .color_id = UI_TIP_LC_NORMAL,
937 .style = UI_TIP_STYLE_MONO,
938 .color_id = UI_TIP_LC_PYTHON,
949 const char *disabled_msg =
NULL;
962 if (disabled_msg && disabled_msg[0]) {
965 .style = UI_TIP_STYLE_NORMAL,
966 .color_id = UI_TIP_LC_ALERT,
976 .style = UI_TIP_STYLE_MONO,
977 .color_id = UI_TIP_LC_PYTHON,
993 .style = UI_TIP_STYLE_MONO,
994 .color_id = UI_TIP_LC_PYTHON,
1037 if (
data->fields_len == 0) {
1056 } gzop_actions[] = {
1067 for (
int i = 0; i <
ARRAY_SIZE(gzop_actions); i++) {
1078 if (gzop_actions[i].prefix !=
NULL) {
1079 text =
BLI_sprintfN(
"%s: %s", gzop_actions[i].prefix, info);
1086 .style = UI_TIP_STYLE_HEADER,
1087 .color_id = UI_TIP_LC_VALUE,
1102 .style = UI_TIP_STYLE_NORMAL,
1103 .color_id = UI_TIP_LC_VALUE,
1121 if (info && info[0]) {
1124 .style = UI_TIP_STYLE_NORMAL,
1125 .color_id = UI_TIP_LC_VALUE,
1134 if (
data->fields_len == 0) {
1143 const float init_position[2],
1144 const rcti *init_rect_overlap,
1174 if (
data->fstyle.kerning == 1) {
1183 #define TIP_BORDER_X (16.0f / aspect)
1184 #define TIP_BORDER_Y (6.0f / aspect)
1188 int i, fonth, fontw;
1189 for (i = 0, fontw = 0, fonth = 0; i <
data->fields_len; i++) {
1203 font_id =
data->fstyle.uifont_id;
1214 fonth += h * info.lines;
1237 rect_fl.
xmax = rect_fl.
xmin + fontw + pad_px;
1252 if (init_rect_overlap !=
NULL) {
1253 const int pad =
max_ff(1.0f,
U.pixelsize) * 5;
1254 const rcti init_rect = {
1255 .
xmin = init_rect_overlap->
xmin - pad,
1256 .xmax = init_rect_overlap->
xmax + pad,
1257 .ymin = init_rect_overlap->
ymin - pad,
1258 .ymax = init_rect_overlap->
ymax + pad,
1260 const rcti rect_clamp = {
1270 #ifdef USE_ALIGN_Y_CENTER
1282 r.xmin = init_rect.
xmax;
1283 r.xmax =
r.xmin + size_x;
1284 #ifdef USE_ALIGN_Y_CENTER
1285 r.ymin = cent_overlap_y - (size_y / 2);
1286 r.ymax =
r.ymin + size_y;
1289 r.ymax = init_rect.
ymax;
1297 r.xmin = init_rect.
xmin - size_x;
1298 r.xmax =
r.xmin + size_x;
1299 #ifdef USE_ALIGN_Y_CENTER
1300 r.ymin = cent_overlap_y - (size_y / 2);
1301 r.ymax =
r.ymin + size_y;
1304 r.ymax = init_rect.
ymax;
1312 r.xmin = cent_overlap_x - (size_x / 2);
1313 r.xmax =
r.xmin + size_x;
1314 r.ymin = init_rect.
ymax;
1315 r.ymax =
r.ymin + size_y;
1320 r.xmin = cent_overlap_x - (size_x / 2);
1321 r.xmax =
r.xmin + size_x;
1322 r.ymin = init_rect.
ymin - size_y;
1323 r.ymax =
r.ymin + size_y;
1328 for (
int j = 0; j < 4; j++) {
1329 const rcti *
r = (&rect.xpos) + j;
1338 int offset_dummy[2];
1344 const int pad =
max_ff(1.0f,
U.pixelsize) * 5;
1345 const rcti rect_clamp = {
1351 int offset_dummy[2];
1356 #undef USE_ALIGN_Y_CENTER
1365 if (init_rect_overlap !=
NULL) {
1369 data->bbox.xmin = margin;
1371 data->bbox.ymin = margin;
1405 float init_position[2];
1426 if (is_no_overlap) {
1427 rctf overlap_rect_fl;
1435 overlap_rect_fl = but->
rect;
1450 C,
data, init_position, is_no_overlap ? &init_rect :
NULL, aspect);
1458 const float aspect = 1.0f;
1473 init_position[0] =
bounds.xmin;
1474 init_position[1] =
bounds.ymin;
1489 .style = UI_TIP_STYLE_HEADER,
1490 .color_id = UI_TIP_LC_NORMAL,
1496 if (item_tooltip_data->
name && item_tooltip_data->
name[0]) {
1499 .style = UI_TIP_STYLE_NORMAL,
1500 .color_id = UI_TIP_LC_VALUE,
1505 if (item_tooltip_data->
hint[0]) {
1508 .style = UI_TIP_STYLE_NORMAL,
1509 .color_id = UI_TIP_LC_NORMAL,
1515 if (
data->fields_len == 0) {
1531 const ARegion *searchbox_region,
1532 const rcti *item_rect,
1540 const float aspect = 1.0f;
1542 float init_position[2];
struct ScrArea * CTX_wm_area(const bContext *C)
const char * CTX_wm_operator_poll_msg_get(struct bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct SpaceLink * CTX_wm_space_data(const bContext *C)
void CTX_wm_operator_poll_msg_set(struct bContext *C, const char *msg)
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)
#define BLF_KERNING_DEFAULT
float BLF_width(int fontid, const char *str, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define BLF_DRAW_STR_DUMMY_MAX
void BLF_disable(int fontid, int option)
float BLF_width_ex(int fontid, const char *str, size_t len, struct ResultBLF *r_info) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
void BLF_size(int fontid, int size, int dpi)
void BLF_enable(int fontid, int option)
int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT
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 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)
bool BPY_run_string_as_intptr(struct bContext *C, const char *imports[], const char *expr, struct BPy_RunErrInfo *err_info, intptr_t *r_value)
bool BPY_run_string_as_string(struct bContext *C, const char *imports[], const char *expr, struct BPy_RunErrInfo *err_info, char **r_value)
#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)
int UI_but_unit_type_get(const uiBut *but)
const struct uiStyle * UI_style_get(void)
@ UI_BLOCK_SHOW_SHORTCUT_ALWAYS
@ BUT_GET_RNASTRUCT_IDENTIFIER
@ BUT_GET_RNAPROP_IDENTIFIER
void UI_fontstyle_draw(const struct uiFontStyle *fs, const struct rcti *rect, const char *str, const uchar col[4], const struct uiFontStyleDraw_Params *fs_params)
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)
@ WM_OP_INVOKE_REGION_WIN
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)
void ui_but_string_get(uiBut *but, char *str, const size_t maxlen)
void ui_block_to_window_fl(const ARegion *region, uiBlock *block, float *r_x, float *r_y)
void ui_fontscale(short *points, float aspect)
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)
char * RNA_path_full_property_py_ex(Main *bmain, PointerRNA *ptr, PropertyRNA *prop, int index, bool use_fallback)
int RNA_property_flag(PropertyRNA *prop)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
char * RNA_path_full_struct_py(Main *bmain, struct PointerRNA *ptr)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
const char * RNA_property_ui_description(const PropertyRNA *prop)
struct ARegionType * type
const char * disabled_info
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
struct wmEvent * eventstate
bool WM_operator_poll_context(bContext *C, wmOperatorType *ot, short context)
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, int 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)