Blender V5.0
interface_region_tooltip.cc File Reference
#include <algorithm>
#include <cstdarg>
#include <cstdlib>
#include <cstring>
#include <memory>
#include <fmt/format.h>
#include "AS_essentials_library.hh"
#include "MEM_guardedalloc.h"
#include "DNA_userdef_types.h"
#include "BLI_fileops.h"
#include "BLI_listbase.h"
#include "BLI_math_color.h"
#include "BLI_math_vector.h"
#include "BLI_path_utils.hh"
#include "BLI_rect.h"
#include "BLI_string_utf8.h"
#include "BLI_utildefines.h"
#include "BKE_context.hh"
#include "BKE_idtype.hh"
#include "BKE_image.hh"
#include "BKE_library.hh"
#include "BKE_main.hh"
#include "BKE_paint.hh"
#include "BKE_path_templates.hh"
#include "BKE_screen.hh"
#include "BKE_vfont.hh"
#include "BIF_glutil.hh"
#include "DNA_vfont_types.h"
#include "GPU_immediate.hh"
#include "GPU_immediate_util.hh"
#include "GPU_state.hh"
#include "IMB_colormanagement.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "IMB_thumbs.hh"
#include "MOV_read.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "RNA_access.hh"
#include "RNA_path.hh"
#include "RNA_prototypes.hh"
#include "BLF_api.hh"
#include "BLT_translation.hh"
#include "ED_screen.hh"
#include "interface_intern.hh"
#include "interface_regions_intern.hh"

Go to the source code of this file.

Classes

struct  uiTooltipFormat
struct  uiTooltipField
struct  uiTooltipData

Macros

#define UI_TIP_SPACER   0.3f
#define UI_TIP_PADDING_X   1.95f
#define UI_TIP_PADDING_Y   1.28f
#define UI_TIP_MAXWIDTH   600

Functions

 BLI_STATIC_ASSERT (int(UI_TIP_LC_MAX)==int(UI_TIP_LC_ALERT)+1, "invalid lc-max")
void UI_tooltip_text_field_add (uiTooltipData &data, std::string text, std::string suffix, const uiTooltipStyle style, const uiTooltipColorID color_id, const bool is_pad)
void UI_tooltip_image_field_add (uiTooltipData &data, const uiTooltipImage &image_data)
ToolTip Callbacks (Draw & Free)
static void color_blend_f3_f3 (float dest[3], const float source[3], const float fac)
static void ui_tooltip_region_draw_cb (const bContext *, ARegion *region)
static void ui_tooltip_region_free_cb (ARegion *region)
ToolTip Creation Utility Functions
static std::string ui_tooltip_text_python_from_op (bContext *C, wmOperatorType *ot, PointerRNA *opptr)
ToolTip Creation
static bool ui_tooltip_period_needed (blender::StringRef tip)
static std::unique_ptr< uiTooltipDataui_tooltip_data_from_tool (bContext *C, uiBut *but, bool is_quick_tip)
static std::string ui_tooltip_color_string (const blender::float4 &color, const blender::StringRefNull title, const int max_title_len, const bool show_alpha, const bool show_hex=false)
void UI_tooltip_color_field_add (uiTooltipData &data, const blender::float4 &original_color, const bool has_alpha, const bool is_gamma, const ColorManagedDisplay *display, const uiTooltipColorID color_id)
void UI_tooltip_uibut_python_add (uiTooltipData &data, bContext &C, uiBut &but, uiButExtraOpIcon *extra_icon)
static std::unique_ptr< uiTooltipDataui_tooltip_data_from_button_or_extra_icon (bContext *C, uiBut *but, uiButExtraOpIcon *extra_icon, const bool is_quick_tip)
static std::unique_ptr< uiTooltipDataui_tooltip_data_from_gizmo (bContext *C, wmGizmo *gz)
static std::unique_ptr< uiTooltipDataui_tooltip_data_from_custom_func (bContext *C, uiBut *but)
static ARegionui_tooltip_create_with_data (bContext *C, std::unique_ptr< uiTooltipData > data_uptr, const float init_position[2], const rcti *init_rect_overlap)
ToolTip Public API
ARegionUI_tooltip_create_from_button_or_extra_icon (bContext *C, ARegion *butregion, uiBut *but, uiButExtraOpIcon *extra_icon, bool is_quick_tip)
ARegionUI_tooltip_create_from_button (bContext *C, ARegion *butregion, uiBut *but, bool is_quick_tip)
ARegionUI_tooltip_create_from_gizmo (bContext *C, wmGizmo *gz)
static void ui_tooltip_from_image (Image &ima, uiTooltipData &data)
static void ui_tooltip_from_clip (MovieClip &clip, uiTooltipData &data)
static void ui_tooltip_from_vfont (const VFont &font, uiTooltipData &data)
static std::unique_ptr< uiTooltipDataui_tooltip_data_from_search_item_tooltip_data (ID *id)
ARegionUI_tooltip_create_from_search_item_generic (bContext *C, const ARegion *searchbox_region, const rcti *item_rect, ID *id)
void UI_tooltip_free (bContext *C, bScreen *screen, ARegion *region)

Detailed Description

ToolTip Region and Construction

Definition in file interface_region_tooltip.cc.

Macro Definition Documentation

◆ UI_TIP_MAXWIDTH

#define UI_TIP_MAXWIDTH   600

Definition at line 92 of file interface_region_tooltip.cc.

Referenced by ui_tooltip_create_with_data().

◆ UI_TIP_PADDING_X

#define UI_TIP_PADDING_X   1.95f

◆ UI_TIP_PADDING_Y

#define UI_TIP_PADDING_Y   1.28f

◆ UI_TIP_SPACER

#define UI_TIP_SPACER   0.3f

Function Documentation

◆ BLI_STATIC_ASSERT()

BLI_STATIC_ASSERT ( int(UI_TIP_LC_MAX) = =int(UI_TIP_LC_ALERT)+1,
"invalid lc-max"  )

References UI_TIP_LC_ALERT, and UI_TIP_LC_MAX.

◆ color_blend_f3_f3()

void color_blend_f3_f3 ( float dest[3],
const float source[3],
const float fac )
static

Definition at line 155 of file interface_region_tooltip.cc.

Referenced by ui_tooltip_region_draw_cb().

◆ UI_tooltip_color_field_add()

◆ ui_tooltip_color_string()

std::string ui_tooltip_color_string ( const blender::float4 & color,
const blender::StringRefNull title,
const int max_title_len,
const bool show_alpha,
const bool show_hex = false )
static

◆ UI_tooltip_create_from_button()

ARegion * UI_tooltip_create_from_button ( bContext * C,
ARegion * butregion,
uiBut * but,
bool is_quick_tip )
Parameters
is_quick_tipSee UI_but_func_quick_tooltip_set for what a quick tooltip is.

Definition at line 1714 of file interface_region_tooltip.cc.

References C, and UI_tooltip_create_from_button_or_extra_icon().

Referenced by ui_search_menu_create_tooltip().

◆ UI_tooltip_create_from_button_or_extra_icon()

◆ UI_tooltip_create_from_gizmo()

◆ UI_tooltip_create_from_search_item_generic()

ARegion * UI_tooltip_create_from_search_item_generic ( bContext * C,
const ARegion * searchbox_region,
const rcti * item_rect,
ID * id )

Create a tooltip from search-item tooltip data item_tooltip data. To be called from a callback set with UI_but_func_search_set_tooltip().

Parameters
item_rectRectangle of the search item in search region space (ui_searchbox_butrect()) which is passed to the tooltip callback.

Definition at line 1957 of file interface_region_tooltip.cc.

References C, CTX_wm_window(), data, wmWindow::eventstate, UI_POPUP_MARGIN, ui_tooltip_create_with_data(), ui_tooltip_data_from_search_item_tooltip_data(), ARegion::winrct, wmEvent::xy, and rcti::ymin.

Referenced by template_ID_search_menu_item_tooltip().

◆ ui_tooltip_create_with_data()

ARegion * ui_tooltip_create_with_data ( bContext * C,
std::unique_ptr< uiTooltipData > data_uptr,
const float init_position[2],
const rcti * init_rect_overlap )
static

Definition at line 1392 of file interface_region_tooltip.cc.

References BLF_disable(), BLF_DRAW_STR_DUMMY_MAX, BLF_enable(), BLF_height_max(), blf_mono_font, BLF_NONE, BLF_size(), BLF_width(), BLF_WORD_WRAP, BLF_wordwrap(), BLI_rcti_cent_x(), BLI_rcti_cent_y(), BLI_rcti_clamp(), BLI_rcti_inside_rcti(), BLI_rcti_pad(), BLI_rcti_rctf_copy(), BLI_rcti_size_x(), BLI_rcti_size_y(), BLI_rcti_translate(), C, CTX_wm_screen(), CTX_wm_window(), data, ARegionType::draw, ED_region_floating_init(), ED_region_tag_redraw(), uiTooltipField::format, ARegionType::free, uiTooltipField::geom, HardLimit, i, uiTooltipField::image, ResultBLF::lines, uiTooltipField::lines, max_ff(), max_ii(), min_ii(), pad, Path, ARegion::regiondata, ARegionType::regionid, RGN_TYPE_TEMPORARY, round, ARegion::runtime, uiTooltipFormat::style, uiTooltipField::text, uiTooltipField::text_suffix, uiStyle::tooltip, Typographical, U, UI_fontstyle_set(), UI_POPUP_MARGIN, ui_region_temp_add(), UI_SCALE_FAC, UI_style_get(), UI_TIP_MAXWIDTH, UI_TIP_PADDING_X, UI_TIP_PADDING_Y, UI_TIP_SPACER, UI_TIP_STYLE_IMAGE, UI_TIP_STYLE_MONO, UI_TIP_STYLE_SPACER, ui_tooltip_region_draw_cb(), ui_tooltip_region_free_cb(), w(), ResultBLF::width, ARegion::winrct, WM_window_native_pixel_size(), uiTooltipField::x_pos, rctf::xmax, rcti::xmax, rctf::xmin, rcti::xmin, rctf::ymax, rcti::ymax, rctf::ymin, and rcti::ymin.

Referenced by UI_tooltip_create_from_button_or_extra_icon(), UI_tooltip_create_from_gizmo(), and UI_tooltip_create_from_search_item_generic().

◆ ui_tooltip_data_from_button_or_extra_icon()

std::unique_ptr< uiTooltipData > ui_tooltip_data_from_button_or_extra_icon ( bContext * C,
uiBut * but,
uiButExtraOpIcon * extra_icon,
const bool is_quick_tip )
static

Definition at line 979 of file interface_region_tooltip.cc.

References BKE_build_template_variables_for_prop(), BKE_path_contains_template_syntax(), BKE_path_template_error_to_string(), BKE_path_validate_template(), BLI_assert, BLI_path_contains(), BLI_path_is_rel(), uiBut::block, C, blender::StringRefNull::c_str(), Color, CTX_wm_operator_poll_msg_clear(), CTX_wm_operator_poll_msg_get(), data, uiBut::disabled_info, uiBut::drawstr, ELEM, error(), blender::asset_system::essentials_directory_path(), Library::filepath, uiBut::flag, ID_IS_LINKED, blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), ID::lib, MEM_freeN(), nullptr, uiBut::opcontext, wmOperatorCallParams::opcontext, uiBut::optype, wmOperatorCallParams::optype, uiButExtraOpIcon::optype_params, PointerRNA::owner_id, PROP_DIRPATH, PROP_ENUM_FLAG, PROP_FILENAME, PROP_FILEPATH, PROP_FLOAT, PROP_NONE, PROP_PASSWORD, PROP_PATH_SUPPORTS_BLEND_RELATIVE, PROP_PATH_SUPPORTS_TEMPLATES, PROP_UNIT_ROTATION, RNA_property_array_check(), RNA_property_array_length(), RNA_property_flag(), RNA_property_float_get(), RNA_property_float_get_index(), RNA_property_string_get(), RNA_property_subtype(), RNA_property_type(), uiBut::rnaindex, uiBut::rnapoin, uiBut::rnaprop, Row, SearchMenu, blender::StringRefBase::size(), blender::StringRefBase::startswith(), blender::StringRefBase::substr(), Text, TIP_, uiBut::tip_func, uiBut::type, U, ui_block_is_menu(), ui_block_is_pie_menu(), ui_but_anim_expression_get(), UI_but_cm_display_get(), ui_but_context_poll_operator_ex(), UI_BUT_DISABLED, UI_BUT_DRIVEN, UI_but_extra_icon_string_get_label(), UI_but_extra_icon_string_get_operator_keymap(), UI_but_extra_icon_string_get_tooltip(), UI_but_extra_operator_icon_optype_get(), ui_but_is_color_gamma(), UI_BUT_REDALERT, UI_but_rna_enum_item_get(), ui_but_string_get(), UI_but_string_get_label(), UI_but_string_get_operator_keymap(), UI_but_string_get_property_keymap(), UI_but_string_get_rna_property_identifier(), UI_but_string_get_rna_struct_identifier(), UI_but_string_get_tooltip(), UI_but_string_get_tooltip_label(), UI_but_unit_type_get(), ui_but_v3_get(), UI_TIP_LC_ALERT, UI_TIP_LC_NORMAL, UI_TIP_LC_VALUE, UI_TIP_STYLE_HEADER, UI_TIP_STYLE_NORMAL, UI_TIP_STYLE_SPACER, UI_tooltip_color_field_add(), ui_tooltip_period_needed(), UI_tooltip_text_field_add(), UI_tooltip_uibut_python_add(), and USER_TOOLTIPS_PYTHON.

Referenced by UI_tooltip_create_from_button_or_extra_icon().

◆ ui_tooltip_data_from_custom_func()

std::unique_ptr< uiTooltipData > ui_tooltip_data_from_custom_func ( bContext * C,
uiBut * but )
static

◆ ui_tooltip_data_from_gizmo()

◆ ui_tooltip_data_from_search_item_tooltip_data()

std::unique_ptr< uiTooltipData > ui_tooltip_data_from_search_item_tooltip_data ( ID * id)
static

◆ ui_tooltip_data_from_tool()

◆ UI_tooltip_free()

void UI_tooltip_free ( bContext * C,
bScreen * screen,
ARegion * region )

Definition at line 1975 of file interface_region_tooltip.cc.

References C, and ui_region_temp_remove().

Referenced by WM_tooltip_clear(), WM_tooltip_init(), and WM_tooltip_refresh().

◆ ui_tooltip_from_clip()

◆ ui_tooltip_from_image()

◆ ui_tooltip_from_vfont()

◆ UI_tooltip_image_field_add()

void UI_tooltip_image_field_add ( uiTooltipData & data,
const uiTooltipImage & image_data )
Parameters
imageImage buffer (duplicated, ownership is not transferred to data).
image_sizeDisplay size for the image (pixels without UI scale applied).

Definition at line 142 of file interface_region_tooltip.cc.

References data, uiTooltipField::format, uiTooltipImage::ibuf, uiTooltipField::image, IMB_dupImBuf(), uiTooltipFormat::style, and UI_TIP_STYLE_IMAGE.

Referenced by file_draw_tooltip_custom_func(), UI_tooltip_color_field_add(), ui_tooltip_from_clip(), ui_tooltip_from_image(), ui_tooltip_from_vfont(), and uiTemplateRecentFiles_tooltip_func().

◆ ui_tooltip_period_needed()

◆ ui_tooltip_region_draw_cb()

void ui_tooltip_region_draw_cb ( const bContext * ,
ARegion * region )
static

Definition at line 164 of file interface_region_tooltip.cc.

References uiFontStyleDraw_Params::align, BLF_descender(), BLF_disable(), blf_mono_font, BLF_size(), BLF_WORD_WRAP, BLF_wordwrap(), BLI_assert, Checkerboard_Fixed, Checkerboard_Themed, color_blend_f3_f3(), uiTooltipFormat::color_id, copy_v3_v3(), data, uiTooltipField::format, uiTooltipField::geom, GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_ALPHA_PREMULT, GPU_BLEND_NONE, GPU_SHADER_3D_IMAGE_COLOR, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), HardLimit, i, uiTooltipField::image, imm_draw_box_checker_2d(), imm_draw_box_checker_2d_ex(), imm_draw_box_wire_2d(), immBindBuiltinProgram(), immDrawPixelsTexScaledFullSize(), immDrawPixelsTexSetup(), immUnbindProgram(), immUniformColor4fv(), immVertexFormat(), uiWidgetColors::inner, uiTooltipField::lines, Path, uiFontStyle::points, pos, ARegion::regiondata, rgb_float_to_uchar(), rgb_uchar_to_float(), srgb_to_grayscale(), state, uiTooltipFormat::style, uiTooltipField::text, uiWidgetColors::text, uiTooltipField::text_suffix, TH_BACK, TH_REDALERT, Typographical, U, UI_ALPHA_CHECKER_DARK, UI_ALPHA_CHECKER_LIGHT, ui_draw_tooltip_background(), UI_fontstyle_draw(), UI_fontstyle_set(), UI_GetThemeColor3fv(), UI_GetThemeColor4fv(), UI_SCALE_FAC, UI_style_get(), UI_STYLE_TEXT_LEFT, UI_TIP_LC_ACTIVE, UI_TIP_LC_ALERT, UI_TIP_LC_MAIN, UI_TIP_LC_MAX, UI_TIP_LC_NORMAL, UI_TIP_LC_PYTHON, UI_TIP_LC_VALUE, UI_TIP_PADDING_X, UI_TIP_PADDING_Y, UI_TIP_SPACER, UI_TIP_STYLE_HEADER, UI_TIP_STYLE_IMAGE, UI_TIP_STYLE_MONO, UI_TIP_STYLE_NORMAL, UI_TIP_STYLE_SPACER, ui_tooltip_get_theme(), uiFontStyle::uifont_id, wmOrtho2_region_pixelspace(), uiFontStyleDraw_Params::word_wrap, uiTooltipField::x_pos, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by ui_tooltip_create_with_data().

◆ ui_tooltip_region_free_cb()

void ui_tooltip_region_free_cb ( ARegion * region)
static

◆ UI_tooltip_text_field_add()

◆ ui_tooltip_text_python_from_op()

std::string ui_tooltip_text_python_from_op ( bContext * C,
wmOperatorType * ot,
PointerRNA * opptr )
static

◆ UI_tooltip_uibut_python_add()