15#include <fmt/format.h>
96#include "RNA_prototypes.hh"
113#define TEMPLATE_SEARCH_TEXTBUT_MIN_WIDTH (UI_UNIT_X * 4)
114#define TEMPLATE_SEARCH_TEXTBUT_HEIGHT UI_UNIT_Y
169 const char *
const tip,
170 const bool use_previews,
172 const bool live_icon,
178 static_cast<ID *
>(active_ptr.
data) :
190 const bool use_preview_icon = use_big_size || (
id && (
GS(id->name) !=
ID_SCR));
191 const short width =
UI_UNIT_X * (use_big_size ? 6 : 1.6f);
192 const short height =
UI_UNIT_Y * (use_big_size ? 6 : 1);
212 if (use_preview_icon) {
267 const int preview_rows,
268 const int preview_cols,
271 static char search[256];
283 if (preview_rows > 0 && preview_cols > 0) {
284 const int w = 4 *
U.widget_unit * preview_cols * scale;
285 const int h = 5 *
U.widget_unit * preview_rows * scale;
288 uiDefBut(block,
UI_BTYPE_LABEL, 0,
"", 10, 26,
w, h,
nullptr, 0, 0,
nullptr);
393 if ((id->name[2] ==
'.') && (query[0] !=
'.')) {
408 const bool use_lib_prefix = template_ui->
preview || iconid;
413 int name_prefix_offset;
415 if (!use_lib_prefix) {
448 search.
add(id->name + 2,
id);
454 for (
ID *
id : filtered_ids) {
480 search.
add(id->name + 2,
id);
482 id->tag &= ~ID_TAG_DOIT;
488 for (
ID *
id : filtered_ids) {
506 Scene *scene =
nullptr;
510 scene = (
Scene *)id_from;
528 ID *active_id =
static_cast<ID *
>(active);
537 void (*id_search_update_fn)(
558 active_item_ptr.
data,
584 *r_ptr = template_ui->
ptr;
585 *r_prop = template_ui->
prop;
591 const int parent_level,
593 int *r_parent_level_best)
599 if (parent_level > *r_parent_level_best) {
600 *r_parent_level_best = parent_level;
601 *r_collection_parent_best = collection;
608 if (iter->collection->id.lib != collection->id.lib &&
ID_IS_LINKED(iter->collection)) {
612 iter->collection, parent_level + 1, r_collection_parent_best, r_parent_level_best);
617 Collection *root_collection,
ID *target_id,
const bool do_parents)
640 if (
ID_IS_LINKED(iter->collection) && iter->collection->id.lib != target_id->
lib) {
654 iter->collection, target_id,
false);
659 bContext *C,
Main *bmain,
ID *owner_id,
ID *
id,
const char **r_undo_push_label)
661 const char *undo_push_label;
662 if (r_undo_push_label ==
nullptr) {
663 r_undo_push_label = &undo_push_label;
673 id->override_library->flag &= ~LIBOVERRIDE_FLAG_SYSTEM_DEFINED;
674 *r_undo_push_label =
"Make Library Override Hierarchy Editable";
678 *r_undo_push_label =
"Clear Library Override Hierarchy";
696 if (object_active ==
nullptr &&
GS(owner_id->
name) ==
ID_OB) {
697 object_active = (
Object *)owner_id;
699 if (object_active !=
nullptr) {
705 object_active =
nullptr;
710 object_active =
nullptr;
715 Collection *collection_active = collection_active_context;
716 if (collection_active ==
nullptr &&
GS(owner_id->
name) ==
ID_GR) {
719 if (collection_active !=
nullptr) {
721 if (collection_active->
id.
lib != id->lib ||
726 collection_active =
nullptr;
729 int parent_level_best = -1;
732 collection_active, 0, &collection_parent_best, &parent_level_best);
733 collection_active = collection_parent_best;
738 collection_active =
nullptr;
741 if (collection_active ==
nullptr && object_active !=
nullptr &&
747 if (
ID_IS_LINKED(collection_iter) && collection_iter->id.lib != id->lib) {
756 int parent_level_best = -1;
759 collection_iter, 0, &collection_parent_best, &parent_level_best);
760 collection_active = collection_parent_best;
765 ID *id_override =
nullptr;
768 switch (
GS(id->name)) {
770 if (collection_active !=
nullptr &&
774 if (object_active !=
nullptr) {
782 &collection_active->
id,
787 else if (object_active !=
nullptr && !
ID_IS_LINKED(object_active) &&
803 if (collection_active !=
nullptr &&
807 if (object_active !=
nullptr) {
815 &collection_active->
id,
821 if (object_active !=
nullptr) {
825 bmain, scene, view_layer,
nullptr,
id,
nullptr,
nullptr, &id_override,
false);
843 if (object_active !=
nullptr) {
844 if (collection_active !=
nullptr &&
854 &collection_active->
id,
874 bmain, scene, view_layer,
nullptr,
id,
id,
nullptr, &id_override,
false);
893 if (id_override !=
nullptr) {
900 Object *object_hierarchy_root =
reinterpret_cast<Object *
>(hierarchy_root);
922 *r_undo_push_label =
"Make Library Override Hierarchy";
942 const char **r_undo_push_label)
944 ID *
id =
static_cast<ID *
>(idptr->
data);
948 C, bmain, owner_id,
id, r_undo_push_label);
950 if (id_override !=
nullptr) {
971 ID *
id =
static_cast<ID *
>(idptr.
data);
973 const char *undo_push_label =
nullptr;
983 undo_push_label =
"Rename Data-Block";
987 RNA_warning(
"warning, id event %d shouldn't come here", event);
1003 undo_push_label =
"Delete Data-Block";
1006 undo_push_label =
"Unlink Data-Block";
1018 undo_push_label =
"Fake User";
1036 undo_push_label =
"Make Local";
1039 if (undo_push_label !=
nullptr) {
1057 undo_push_label =
"Make Local";
1063 const bool do_scene_obj = ((
GS(id->name) ==
ID_OB) &&
1064 (template_ui->
ptr.
type == &RNA_LayerObjects));
1080 undo_push_label =
"Make Single User";
1089 if (undo_push_label !=
nullptr) {
1099 return N_(
"Browse Scene to be linked");
1101 return N_(
"Browse Object to be linked");
1103 return N_(
"Browse Mesh Data to be linked");
1105 return N_(
"Browse Curve Data to be linked");
1107 return N_(
"Browse Metaball Data to be linked");
1109 return N_(
"Browse Material to be linked");
1111 return N_(
"Browse Texture to be linked");
1113 return N_(
"Browse Image to be linked");
1115 return N_(
"Browse Line Style Data to be linked");
1117 return N_(
"Browse Lattice Data to be linked");
1119 return N_(
"Browse Light Data to be linked");
1121 return N_(
"Browse Camera Data to be linked");
1123 return N_(
"Browse World Settings to be linked");
1125 return N_(
"Choose Screen layout");
1127 return N_(
"Browse Text to be linked");
1129 return N_(
"Browse Speaker Data to be linked");
1131 return N_(
"Browse Sound to be linked");
1133 return N_(
"Browse Armature data to be linked");
1135 return N_(
"Browse Action to be linked");
1137 return N_(
"Browse Node Tree to be linked");
1139 return N_(
"Browse Brush to be linked");
1141 return N_(
"Browse Particle Settings to be linked");
1143 return N_(
"Browse Grease Pencil Data to be linked");
1145 return N_(
"Browse Movie Clip to be linked");
1147 return N_(
"Browse Mask to be linked");
1149 return N_(
"Browse Palette Data to be linked");
1151 return N_(
"Browse Paint Curve Data to be linked");
1153 return N_(
"Browse Cache Files to be linked");
1155 return N_(
"Browse Workspace to be linked");
1157 return N_(
"Browse LightProbe to be linked");
1159 return N_(
"Browse Curves Data to be linked");
1161 return N_(
"Browse Point Cloud Data to be linked");
1163 return N_(
"Browse Volume Data to be linked");
1165 return N_(
"Browse Grease Pencil v3 Data to be linked");
1177 return N_(
"Browse ID data to be linked");
1194 "WORKSPACE_OT_scene_pin_toggle",
1204#ifdef WITH_INTERNATIONAL
1213# define template_id_context(type) 0
1220 const char *
const newop,
1221 const bool editable,
1223 const bool use_tab_but,
1270 const int icon = (
id && !use_tab_but) ? ICON_DUPLICATE : ICON_ADD;
1292 MEM_new<TemplateID>(__func__, template_ui),
1299 block, but_type, 0, icon, button_text, 0, 0,
w, but_height,
nullptr, 0, 0,
nullptr);
1302 MEM_new<TemplateID>(__func__, template_ui),
1312#ifndef WITH_INTERNATIONAL
1326 const char *unlinkop,
1328 const bool live_icon,
1329 const bool hide_buttons)
1336 ID *
id =
static_cast<ID *
>(idptr.
data);
1350 if (text && text[0]) {
1362 MEM_new<TemplateID>(__func__, template_ui),
1374 const bool user_alert = (
id->us <= 0);
1412 MEM_new<TemplateID>(__func__, template_ui),
1422 if (!hide_buttons && !(idfrom &&
ID_IS_LINKED(idfrom))) {
1429 ICON_LIBRARY_DATA_INDIRECT,
1437 TIP_(
"Indirect library data-block, cannot be made local, "
1438 "Shift + Click to create a library override hierarchy"));
1444 ICON_LIBRARY_DATA_DIRECT,
1452 TIP_(
"Direct linked library data-block, click to make local, "
1453 "Shift + Click to create a library override"));
1461 MEM_new<TemplateID>(__func__, template_ui),
1472 ICON_LIBRARY_DATA_OVERRIDE,
1480 TIP_(
"Library override of linked data-block, click to make fully local, "
1481 "Shift + Click to clear the library override and toggle if it can be edited"));
1484 MEM_new<TemplateID>(__func__, template_ui),
1509 TIP_(
"Display number of users of this data (click to make a single-user copy)"));
1514 MEM_new<TemplateID>(__func__, template_ui),
1535 "ASSET_OT_clear_single",
1539 ICON_ASSET_MANAGER - 1,
1576 "FILE_OT_unpack_item",
1583 TIP_(
"Packed File, click to unpack"));
1594 const char *button_text = (id) ?
"" :
IFACE_(
"Open");
1608 (
id) ?
"" :
IFACE_(
"Open"),
1616 MEM_new<TemplateID>(__func__, template_ui),
1626 (
id) ?
"" :
IFACE_(
"Open"),
1637 MEM_new<TemplateID>(__func__, template_ui),
1668 MEM_new<TemplateID>(__func__, template_ui),
1687 TIP_(
"Unlink data-block "
1688 "(Shift + Click to set users to zero, data will then not be saved)"));
1691 MEM_new<TemplateID>(__func__, template_ui),
1745 const int but_width = name_width +
UI_UNIT_X;
1759 sizeof(id->name) - 2,
1763 MEM_new<TemplateID>(__func__, template_id),
1778 if (active_ptr.
type) {
1779 type = active_ptr.
type;
1783 static_cast<const ID *
>(active_ptr.
data),
1798 const char *propname,
1801 const char *unlinkop,
1811 const bool live_icon,
1812 const bool hide_buttons)
1823 template_ui.
prop = prop;
1826 template_ui.
scale = scale;
1844 template_ui.
idcode = idcode;
1850 if (template_ui.
idlb) {
1875 const char *propname,
1878 const char *unlinkop,
1880 const bool live_icon,
1906 const char *unlinkop,
1910 RNA_warning(
"Cannot show Action selector for non-animatable ID: %s", id->name + 2);
1926 template_ui.
ptr = adt_ptr;
1927 template_ui.
prop = adt_action_prop;
1930 template_ui.
scale = 1.0f;
1944 C, row, template_ui, &RNA_Action,
flag, newop,
nullptr, unlinkop, text,
false,
false);
1950 const char *propname,
1953 const char *unlinkop,
1979 const char *propname,
1982 const char *unlinkop,
1986 const bool hide_buttons)
2010 const char *propname,
2030 scale < 0.5f ? 0.5f : scale,
2038 const char *propname,
2070 const char *propname,
2071 const char *proptypename,
2099 uiItemL(row, text, ICON_NONE);
2177 const bool editable,
2178 const bool live_icon)
2189 MEM_new<TemplateSearch>(__func__, template_search),
2203 if (active_ptr->
data ==
nullptr) {
2208#ifdef WITH_ANIM_BAKLAVA
2209 if (type == &RNA_ActionSlot) {
2215#ifdef WITH_ANIM_BAKLAVA
2221 uiDefAutoButR(block, active_ptr, name_prop, 0,
"", ICON_NONE, 0, 0, width, height);
2225 const char *
const operator_name,
2228 const bool editable)
2230 if (!operator_name) {
2246 const char *unlinkop,
2257 if (active_ptr.
type) {
2259 type = active_ptr.
type;
2265 uiLayout *decorator_layout =
nullptr;
2266 if (text && text[0]) {
2279 if (decorator_layout) {
2287 const char *
const searchpropname)
2291 if (searchptr && !searchptr->
data) {
2292 searchptr =
nullptr;
2295 if (!searchptr && !searchpropname) {
2298 else if (!searchptr && searchpropname) {
2299 RNA_warning(
"searchpropname defined (%s) but searchptr is missing", searchpropname);
2301 else if (searchptr && !searchpropname) {
2302 RNA_warning(
"searchptr defined (%s) but searchpropname is missing",
2306 RNA_warning(
"search collection property not found: %s.%s",
2311 RNA_warning(
"search collection property is not a collection type: %s.%s",
2319 RNA_warning(
"search collection items from %s.%s are not of type %s",
2333 const char *
const propname,
2335 const char *
const searchpropname)
2337 template_search = {};
2357 const char *propname,
2359 const char *searchpropname,
2361 const char *unlinkop,
2373 const char *propname,
2375 const char *searchpropname,
2377 const char *unlinkop,
2402 const char *propname,
2446 if (!panels_match) {
2458 PointerRNA *md_ptr = MEM_new<PointerRNA>(__func__);
2466 Panel *panel =
static_cast<Panel *
>(region->panels.first);
2475 panel = panel->
next;
2480 PointerRNA *md_ptr = MEM_new<PointerRNA>(__func__);
2484 panel = panel->
next;
2498#define CONSTRAINT_TYPE_PANEL_PREFIX "OBJECT_PT_"
2499#define CONSTRAINT_BONE_TYPE_PANEL_PREFIX "BONE_PT_"
2526 RNA_enum_set(&props_ptr,
"owner", constraint_from_bone ? 1 : 0);
2564 if (cti ==
nullptr) {
2576 if (cti ==
nullptr) {
2588 if (use_bone_constraints) {
2591 else if (ob !=
nullptr) {
2601 if (!panels_match) {
2621 panel_id_func(con, panel_idname);
2624 PointerRNA *con_ptr = MEM_new<PointerRNA>(__func__);
2639 Panel *panel =
static_cast<Panel *
>(region->panels.first);
2655 panel = panel->
next;
2659 PointerRNA *con_ptr = MEM_new<PointerRNA>(__func__);
2663 panel = panel->
next;
2668#undef CONSTRAINT_TYPE_PANEL_PREFIX
2669#undef CONSTRAINT_BONE_TYPE_PANEL_PREFIX
2673#define ERROR_LIBDATA_MESSAGE N_("Can't edit external library data")
2699 if (!panels_match) {
2706 PointerRNA *fx_ptr = MEM_new<PointerRNA>(__func__);
2714 Panel *panel =
static_cast<Panel *
>(region->panels.first);
2723 panel = panel->
next;
2728 PointerRNA *fx_ptr = MEM_new<PointerRNA>(__func__);
2732 panel = panel->
next;
2749#ifdef USE_OP_RESET_BUT
2750static void ui_layout_operator_buts__reset_cb(
bContext * ,
void *op_pt,
void * )
2809 uiItemM(row,
"WM_MT_operator_presets",
nullptr, ICON_NONE);
2834 user_data.
flag = layout_flags;
2859#ifdef USE_OP_RESET_BUT
2883 TIP_(
"Reset operator defaults"));
2919 bool *r_has_advanced)
2924 C, macro_op, layout, label_align, layout_flags, r_has_advanced);
2930 C, op, layout, label_align, layout_flags);
2932 if (r_has_advanced) {
2933 *r_has_advanced =
true;
2955 user_data.
flag = layout_flags;
2959 bool all_booleans =
true;
2970 all_booleans =
false;
2975 if (all_booleans ==
false) {
3002 if (op ==
nullptr) {
3010 "SCREEN_OT_repeat_last",
3020 int layout_flags = 0;
3021 if (block->
panel ==
nullptr) {
3025 bool has_advanced =
false;
3035 uiItemO(layout,
IFACE_(
"More..."), ICON_NONE,
"SCREEN_OT_redo_last");
3051 op->
ptr = MEM_new<PointerRNA>(
"wmOperatorPtrRNA");
3053 *op->
ptr = *properties;
3066 uiItemIntO(row,
"", ICON_EXPORT,
"COLLECTION_OT_exporter_export",
"index", index);
3073 const std::string &filename)
3081 std::string placeholder =
"//" + filename;
3108 ListBase *exporters = &collection->exporters;
3109 const int index = collection->active_exporter_index;
3112 static const uiListType *exporter_item_list = []() {
3113 uiListType *lt = MEM_cnew<uiListType>(__func__);
3125 exporter_item_list->
idname,
3130 "active_exporter_index",
3139 uiItemM(
col,
"COLLECTION_MT_exporter_add",
"", ICON_ADD);
3140 uiItemIntO(
col,
"", ICON_REMOVE,
"COLLECTION_OT_exporter_remove",
"index", index);
3143 uiItemO(
col,
nullptr, ICON_EXPORT,
"COLLECTION_OT_export_all");
3158 std::string
label = std::string(
IFACE_(
"Undefined")) +
" " + data->fh_idname;
3189#define ERROR_LIBDATA_MESSAGE N_("Can't edit external library data")
3215 "CONSTRAINT_OT_apply");
3221 "CONSTRAINT_OT_copy");
3226 "CONSTRAINT_OT_copy_to_selected");
3233 "CONSTRAINT_OT_move_to_index",
3248 "CONSTRAINT_OT_move_to_index",
3300 uiItemO(sub,
"", ICON_X,
"CONSTRAINT_OT_delete");
3357 const char *preview_id)
3361 short *pr_texture =
nullptr;
3366 RNA_warning(
"Expected ID of type material, texture, light, world or line style");
3372 ID *pparent =
nullptr;
3374 if (
id && (
GS(id->name) ==
ID_TE)) {
3376 pr_texture = &((
Material *)parent)->pr_texture;
3379 pr_texture = &((
World *)parent)->pr_texture;
3382 pr_texture = &((
Light *)parent)->pr_texture;
3398 if (!preview_id || (preview_id[0] ==
'\0')) {
3401 preview_id = _preview_id;
3410 ui_preview = MEM_cnew<uiPreview>(__func__);
3437 block,
UI_BTYPE_EXTRA, 0,
"", 0, 0,
UI_UNIT_X * 10, ui_preview->
height, pid, 0.0, 0.0,
"");
3439 [pid, pparent, slot, ui_preview](
const bContext *C,
rcti *rect) {
3458 if (pid && show_buttons) {
3606 for (
int a = 0; a < coba->
tot; a++) {
3607 data_tmp[a] = coba->
data[coba->
tot - (a + 1)];
3609 for (
int a = 0; a < coba->
tot; a++) {
3610 data_tmp[a].
pos = 1.0f - data_tmp[a].
pos;
3611 coba->
data[a] = data_tmp[a];
3615 coba->
cur = coba->
tot - (coba->
cur + 1);
3622 if (coba->
tot > 1) {
3623 const int tot = evenly ? coba->
tot - 1 : coba->
tot;
3624 const float gap = 1.0f / tot;
3626 for (
int a = 0; a < coba->
tot; a++) {
3630 ED_undo_push(C, evenly ?
"Distribute Stops Evenly" :
"Distribute Stops from Left");
3665 ICON_ARROW_LEFTRIGHT,
3666 IFACE_(
"Flip Color Ramp"),
3686 IFACE_(
"Distribute Stops from Left"),
3706 IFACE_(
"Distribute Stops Evenly"),
3724 uiItemO(layout,
IFACE_(
"Eyedropper"), ICON_EYEDROPPER,
"UI_OT_eyedropper_colorramp");
3733 IFACE_(
"Reset Color Ramp"),
3795 const float xs = butr->
xmin;
3796 const float ys = butr->
ymin;
3818 TIP_(
"Add a new color stop to the color ramp"));
3833 TIP_(
"Delete the active position"));
3836 rna_update_cb(C, cb);
3837 ED_undo_push(&C,
"Delete Color Ramp Stop");
3841 RNAUpdateCb *tools_cb = MEM_new<RNAUpdateCb>(__func__, cb);
3879 block,
UI_BTYPE_COLORBAND, 0,
"", xs, ys,
BLI_rctf_size_x(butr),
UI_UNIT_Y, coba, 0, 0,
"");
3905 float(std::max(0, coba->
tot - 1)),
3906 TIP_(
"Choose active color stop"));
3930 float(std::max(0, coba->
tot - 1)),
3931 TIP_(
"Choose active color stop"));
3943 if (but->rnapoin.data !=
ptr.
data) {
3946 if (!but->rnaprop) {
3951 if (
STREQ(prop_identifier,
"position")) {
3955 if (
STREQ(prop_identifier,
"color")) {
4048 const int x = (a % 8) *
w;
4049 const int y = -(a / 8) * h;
4051 const int icon = item[a].
icon;
4052 const int value = item[a].
value;
4073 block,
UI_BTYPE_ROW, 0, icon, x, y,
w, h, &args.
ptr, args.
prop, -1, 0, value,
nullptr);
4090 const char *propname,
4093 float icon_scale_popup)
4109 static_cast<bContext *
>(block->
evil_C),
ptr, prop, &items, &tot_items, &free_items);
4111 int icon = ICON_NONE;
4118 cb_args->
prop = prop;
4186 uiDefBut(block,
UI_BTYPE_HISTOGRAM, 0,
"", 0, 0,
UI_UNIT_X * 10, hist->
height, hist, 0, 0,
"");
4325#define CURVE_ZOOM_MAX (1.0f / 25.0f)
4359 if (cumap->
curr.
xmin - d < cumap->clipr.xmin) {
4376 if (cumap->
curr.
ymin - d < cumap->clipr.ymin) {
4521 IFACE_(
"Extend Horizontal"),
4531 cumap->
flag &= ~CUMA_EXTEND_EXTRAPOLATE;
4543 IFACE_(
"Extend Extrapolated"),
4653 if (labeltype ==
'v') {
4659 bt =
uiDefButI(block,
UI_BTYPE_ROW, 0,
"X", 0, 0, dx, dx, &cumap->
cur, 0.0, 0.0,
"");
4663 bt =
uiDefButI(block,
UI_BTYPE_ROW, 0,
"Y", 0, 0, dx, dx, &cumap->
cur, 0.0, 1.0,
"");
4667 bt =
uiDefButI(block,
UI_BTYPE_ROW, 0,
"Z", 0, 0, dx, dx, &cumap->
cur, 0.0, 2.0,
"");
4688 TIP_(
"Combined channels"));
4703 TIP_(
"Red channel"));
4718 TIP_(
"Green channel"));
4733 TIP_(
"Blue channel"));
4737 else if (labeltype ==
'h') {
4769 TIP_(
"Saturation level"));
4784 TIP_(
"Value level"));
4792 if (labeltype ==
'h') {
4804 block,
UI_BTYPE_BUT, 0, ICON_ZOOM_IN, 0, 0, dx, dx,
nullptr, 0.0, 0.0,
TIP_(
"Zoom in"));
4812 block,
UI_BTYPE_BUT, 0, ICON_ZOOM_OUT, 0, 0, dx, dx,
nullptr, 0.0, 0.0,
TIP_(
"Zoom out"));
4819 const int icon = (cumap->
flag &
CUMA_DO_CLIP) ? ICON_CLIPUV_HLT : ICON_CLIPUV_DEHLT;
4826 RNAUpdateCb *tools_cb = MEM_new<RNAUpdateCb>(__func__, cb);
4827 if (brush && neg_slope) {
4843 else if (neg_slope) {
4862 MEM_new<RNAUpdateCb>(__func__, cb),
4871 block,
UI_BTYPE_CURVE, 0,
"", 0, 0, size, 8.0f *
UI_UNIT_X, cumap, 0.0f, 1.0f,
"");
4877 bool point_last_or_first =
false;
4878 for (i = 0; i < cm->
totpoint; i++) {
4880 cmp = &cm->
curve[i];
4885 point_last_or_first =
true;
4914 TIP_(
"Auto Handle"));
4938 TIP_(
"Vector Handle"));
4952 ICON_HANDLE_AUTOCLAMPED,
4960 TIP_(
"Auto Clamped"));
5012 block,
UI_BTYPE_BUT, 0, ICON_X, 0, 0, dx, dx,
nullptr, 0.0, 0.0,
TIP_(
"Delete points"));
5018 if (point_last_or_first) {
5043 TIP_(
"Reset Black/White point and curves"));
5046 for (
int a = 0; a <
CM_TOT; a++) {
5064 const char *propname,
5093 layout, &cptr, type, levels, brush, neg_slope, tone,
RNAUpdateCb{*
ptr, prop});
5113 for (
const auto &item :
5135 profile->preset = preset;
5222 profile->view_rect.xmin += dx;
5223 profile->view_rect.xmax -= dx;
5225 profile->view_rect.ymin += dy;
5226 profile->view_rect.ymax -= dy;
5239 if (profile->view_rect.xmin - d < profile->clip_rect.xmin) {
5240 d1 = profile->view_rect.xmin - profile->clip_rect.xmin;
5243 profile->view_rect.xmin -= d1;
5247 if (profile->view_rect.xmax + d > profile->clip_rect.xmax) {
5248 d1 = -profile->view_rect.xmax + profile->clip_rect.xmax;
5251 profile->view_rect.xmax += d1;
5256 if (profile->view_rect.ymin - d < profile->clip_rect.ymin) {
5257 d1 = profile->view_rect.ymin - profile->clip_rect.ymin;
5260 profile->view_rect.ymin -= d1;
5264 if (profile->view_rect.ymax + d > profile->clip_rect.ymax) {
5265 d1 = -profile->view_rect.ymax + profile->clip_rect.ymax;
5268 profile->view_rect.ymax += d1;
5289 RNAUpdateCb *presets_cb = MEM_new<RNAUpdateCb>(__func__, cb);
5324 TIP_(
"Reapply and update the preset, removing changes"));
5383 ICON_ARROW_LEFTRIGHT,
5391 TIP_(
"Reverse Path"));
5399 const int icon = (profile->flag &
PROF_USE_CLIP) ? ICON_CLIPUV_HLT : ICON_CLIPUV_DEHLT;
5411 TIP_(
"Toggle Profile Clipping"));
5419 RNAUpdateCb *tools_cb = MEM_new<RNAUpdateCb>(__func__, cb);
5441 MEM_new<RNAUpdateCb>(__func__, cb),
5449 const int path_height = path_width;
5466 float *selection_x, *selection_y;
5467 bool point_last_or_first =
false;
5469 for (i = 0; i < profile->path_len; i++) {
5471 point = &profile->path[i];
5472 selection_x = &point->
x;
5473 selection_y = &point->y;
5477 point = &profile->path[i];
5478 selection_x = &point->h1_loc[0];
5479 selection_y = &point->h1_loc[1];
5482 point = &profile->path[i];
5483 selection_x = &point->h2_loc[0];
5484 selection_y = &point->h2_loc[1];
5487 if (
ELEM(i, 0, profile->path_len - 1)) {
5488 point_last_or_first =
true;
5495 bounds = profile->clip_rect;
5534 if (point_last_or_first) {
5555 if (point_last_or_first) {
5571 TIP_(
"Delete points"));
5577 if (point_last_or_first) {
5625#define WHEEL_SIZE (5 * U.widget_unit)
5629 const char *propname,
5632 bool lock_luminosity,
5644 float softmin, softmax, step, precision;
5650 uiBut *but =
nullptr;
5652 switch (
U.color_picker_type) {
5670 switch (
U.color_picker_type) {
5711 if (lock_luminosity) {
5718 switch (
U.color_picker_type) {
5836 uiBut *but =
nullptr;
5858 "PALETTE_OT_color_add",
5868 "PALETTE_OT_color_delete",
5879 "PALETTE_OT_color_move",
5892 "PALETTE_OT_color_move",
5911 int row_cols = 0, col_id = 0;
5913 if (row_cols >= cols_per_row) {
5953 "UI_OT_eyedropper_color",
5984 for (
int i = 0; i < tot; i++) {
5997 const char *propname,
5999 const char *used_propname,
6002 const int cols_per_group = 5;
6017 const int cols = (layers / 2) + (layers % 2);
6018 const int groups = ((cols / 2) < cols_per_group) ? (1) : (cols / cols_per_group);
6021 if (used_ptr && used_propname) {
6024 RNA_warning(
"used layers property not found: %s.%s",
6031 used_prop =
nullptr;
6037 for (
int group = 0; group < groups; group++) {
6040 for (
int row = 0; row < 2; row++) {
6043 int layer = groups * cols_per_group * row + cols_per_group * group;
6046 for (
int col = 0; (
col < cols_per_group) && (layer < layers);
col++, layer++) {
6048 const int butlay = 1 << layer;
6050 if (active_layer & butlay) {
6051 icon = ICON_LAYER_ACTIVE;
6054 icon = ICON_LAYER_USED;
6072#define B_STOPRENDER 1
6075#define B_STOPCOMPO 4
6079#define B_STOPOTHER 8
6120 void *owner = arg->
owner;
6125 char elapsed_str[32];
6126 char remaining_str[32] =
"Unknown";
6131 const double remaining = (elapsed /
double(progress)) - elapsed;
6136 "Time Remaining: {}\n"
6147 void *owner =
nullptr;
6148 int handle_event, icon = 0;
6149 const char *op_name =
nullptr;
6150 const char *op_description =
nullptr;
6170 icon = ICON_SEQUENCE;
6176 icon = ICON_SEQUENCE;
6181 icon = ICON_SEQUENCE;
6186 icon = ICON_TRACKER;
6191 icon = ICON_TRACKER;
6196 icon = ICON_TRACKER;
6201 icon = ICON_TRACKER;
6208 icon = ICON_FILEBROWSER;
6215 op_name =
"RENDER_OT_view_show";
6216 op_description =
"Show the render window";
6222 icon = ICON_RENDERLAYERS;
6241 icon = ICON_MOD_DYNAMICPAINT;
6246 icon = ICON_PHYSICS;
6251 icon = ICON_MOD_FLUIDSIM;
6256 icon = ICON_MOD_OCEAN;
6271 SNPRINTF(text,
"%d%%",
int(progress * 100));
6273 const char *name = active ?
WM_jobs_name(wm, owner) :
"Canceling...";
6286 TIP_(op_description));
6314 tip_arg->
owner = owner;
6333 if (!wm->
runtime->is_interface_locked) {
6346 TIP_(
"Stop this job"));
6363 TIP_(
"Stop animation playback"));
6388 if (!rti || rti->
widthfac == 0.0f || !report) {
6396 uchar report_icon_color[4];
6397 uchar report_text_color[4];
6403 report_text_color[3] = 255;
6457 "SCREEN_OT_info_log_show",
6464 TIP_(
"Click to open the info editor"));
6470 "SCREEN_OT_info_log_show",
6477 TIP_(
"Show in Info Log"));
6485 uiItemL(layout,
nullptr, ICON_MOUSE_LMB_DRAG);
6488 uiItemL(layout,
"", ICON_EVENT_SHIFT);
6489 uiItemL(layout,
nullptr, ICON_MOUSE_LMB_DRAG);
6490 uiItemL(layout,
IFACE_(
"Duplicate into Window"), ICON_NONE);
6492 uiItemL(layout,
"", ICON_EVENT_CTRL);
6494 uiItemL(layout,
nullptr, ICON_MOUSE_LMB_DRAG);
6500 uiItemL(layout,
nullptr, ICON_MOUSE_LMB_DRAG);
6502 (region->visible) ?
IFACE_(
"Resize Region") :
IFACE_(
"Show Hidden Region"),
6516 if (!workspace->
runtime->status.is_empty()) {
6519 if (item.space_factor != 0.0f) {
6523 uiBut *but =
uiItemL_ex(row, item.text.c_str(), item.icon,
false,
false);
6524 if (item.inverted) {
6528 if (offset != 0.0f) {
6541 ARegion *region = screen->active_region;
6544 if (region ==
nullptr) {
6549 region = az->region;
6561 uiItemL(row,
nullptr, ICON_MOUSE_LMB_DRAG);
6564 uiItemL(row,
nullptr, ICON_MOUSE_RMB);
6571 for (
int i = 0; i < 3; i++) {
6580 uiItemL(row,
"", (ICON_MOUSE_LMB + i));
6587 uiItemL(row,
"", (ICON_MOUSE_LMB_DRAG + i));
6588 uiItemL(row, msg_drag, ICON_NONE);
6597 std::string tooltip_message =
"";
6600 char writer_ver_str[12];
6602 writer_ver_str,
sizeof(writer_ver_str), bmain->
versionfile, -1);
6603 tooltip_message += fmt::format(
RPT_(
"File saved by newer Blender\n({}), expect loss of data"),
6607 if (!tooltip_message.empty()) {
6608 tooltip_message +=
"\n\n";
6610 tooltip_message +=
RPT_(
6611 "This file is managed by the Blender asset system and cannot be overridden");
6614 return tooltip_message;
6627 bool has_status_info =
false;
6629 if (status_info_txt[0]) {
6630 uiItemL(row, status_info_txt, ICON_NONE);
6631 has_status_info =
true;
6639 if (has_status_info) {
6646 uiItemO(row,
"", ICON_ERROR,
"EXTENSIONS_OT_userpref_show_for_update");
6656 has_status_info =
true;
6660 if (has_status_info) {
6667 uiItemL(row,
"", ICON_INTERNET_OFFLINE);
6671 uiItemO(row,
"", ICON_INTERNET_OFFLINE,
"EXTENSIONS_OT_userpref_show_online");
6679 has_status_info =
true;
6684 int icon = ICON_INTERNET;
6686 icon = ICON_UV_SYNC_SELECT;
6689 if (has_status_info) {
6695 uiItemO(row,
"", icon,
"EXTENSIONS_OT_userpref_show_for_update");
6707 has_status_info =
true;
6713 if (has_status_info) {
6720 uiItemL(row, status_info_d_txt, ICON_NONE);
6732 warning_message = version_string;
6747 const int width =
max_ii(
6814 warning_message.
c_str(),
6839 U.runtime.is_dirty =
true;
6847 uiItemL(layout, title, ICON_NONE);
6880 "UI_OT_unset_property_button",
6908 for (; but; but = but->
next) {
6930 if (item ==
nullptr) {
6936 if (kmi->propvalue == item->
value) {
6955 if (kmi ==
nullptr) {
6973 const char *xyz_label =
nullptr;
6978 xyz_label =
IFACE_(
"Axis");
6983 xyz_label =
IFACE_(
"Plane");
6987 int icon_mod[4] = {0};
6993 for (
int j = 0; j <
ARRAY_SIZE(icon_mod) && icon_mod[j]; j++) {
6994 uiItemL(layout,
"", icon_mod[j]);
6998#ifndef WITH_HEADLESS
7003#ifndef WITH_HEADLESS
7007 uiItemL(layout, xyz_label, ICON_NONE);
7031 for (
int j = 0; j <
ARRAY_SIZE(icon_mod) && icon_mod[j]; j++) {
7032 uiItemL(layout,
"", icon_mod[j]);
7038 if (icon >= ICON_MOUSE_LMB && icon <= ICON_MOUSE_MMB_SCROLL) {
7044 if (offset != 0.0f) {
7052 else if (text_fallback) {
7054 uiItemL(layout, event_text, ICON_NONE);
7081 layout, &colorspace_settings_ptr,
"name",
UI_ITEM_NONE,
IFACE_(
"Color Space"), ICON_NONE);
7087 const char *propname)
7099 view_transform_ptr.
data);
7113 col, &view_transform_ptr,
"curve_mapping",
'c',
true,
false,
false,
false);
7120 col, &view_transform_ptr,
"white_balance_temperature",
UI_ITEM_NONE,
nullptr, ICON_NONE);
7163 const char *propname,
7208 block,
UI_BTYPE_NODE_SOCKET, 0,
"", 0, 0,
UI_UNIT_X,
UI_UNIT_Y,
nullptr, 0, 0,
"");
7257 uiItemL(row,
RPT_(
"Only Alembic Procedurals supported"), ICON_INFO);
7259 else if (!engine_supports_procedural) {
7266 "The Cycles Alembic Procedural is only available with the experimental feature set"),
7271 row,
RPT_(
"The active render engine does not have an Alembic Procedural"), ICON_INFO);
7279 const bool use_render_procedural =
RNA_boolean_get(fileptr,
"use_render_procedural");
7359 "UI_UL_cache_file_layers",
7360 "cache_file_layers",
7373 uiItemO(
col,
"", ICON_ADD,
"cachefile.layer_add");
7374 uiItemO(
col,
"", ICON_REMOVE,
"cachefile.layer_remove");
7379 uiItemO(
col,
"", ICON_TRIA_UP,
"cachefile.layer_move");
7380 uiItemO(
col,
"", ICON_TRIA_DOWN,
"cachefile.layer_move");
7395 printf(
"%s: expected pointer property for %s.%s\n",
7409 const char *propname)
7424 uiTemplateID(layout, C,
ptr, propname,
nullptr,
"CACHEFILE_OT_open",
nullptr);
7439 uiItemO(sub,
"", ICON_FILE_REFRESH,
"cachefile.reload");
7463 char *path = (
char *)argN;
7477 char version_str[128] = {0};
7483 thumb->
metadata,
"Thumb::Blender::Version", version_str,
sizeof(version_str));
7491 SNPRINTF(version_str,
"%d.%01d", version / 100, version % 100);
7495 if (version_str[0]) {
7502 if (
BLI_stat(path, &status) != -1) {
7504 bool is_today, is_yesterday;
7505 std::string day_string;
7507 nullptr,
int64_t(status.st_mtime),
false, time_st, date_str, &is_today, &is_yesterday);
7508 if (is_today || is_yesterday) {
7509 day_string = (is_today ?
N_(
"Today") :
N_(
"Yesterday")) + std::string(
" ");
7512 fmt::format(
"{}: {}{}{}",
7515 (is_today || is_yesterday) ?
"" : date_str,
7516 (is_today || is_yesterday) ? time_st :
""),
7521 if (status.st_size > 0) {
7543 float scale = (72.0f *
UI_SCALE_FAC) /
float(std::max(thumb->
x, thumb->
y));
7544 image_data.
ibuf = thumb;
7545 image_data.width = short(
float(thumb->
x) * scale);
7546 image_data.height = short(
float(thumb->
y) * scale);
7547 image_data.border =
true;
7549 image_data.premultiplied =
true;
7566 "WM_OT_open_mainfile",
bool id_can_have_animdata(const ID *id)
AnimData * BKE_animdata_from_id(const ID *id)
void BKE_blender_version_blendfile_string_from_values(char *str_buff, const size_t str_buff_maxncpy, const short file_version, const short file_subversion)
bool BKE_blendfile_extension_check(const char *str)
bool BKE_collection_has_object_recursive(Collection *collection, Object *ob)
#define FOREACH_SCENE_OBJECT_END
bool BKE_scene_collections_object_remove(Main *bmain, Scene *scene, Object *ob, bool free_us)
bool BKE_collection_child_add(Main *bmain, Collection *parent, Collection *child)
#define FOREACH_SCENE_OBJECT_BEGIN(scene, _instance)
bool BKE_collection_has_collection(const Collection *parent, const Collection *collection)
bool BKE_collection_object_add(Main *bmain, Collection *collection, Object *ob)
CBData * BKE_colorband_element_add(ColorBand *coba, float position)
void BKE_colorband_update_sort(ColorBand *coba)
bool BKE_colorband_element_remove(ColorBand *coba, int index)
void BKE_colorband_init(ColorBand *coba, bool rangetype)
const bConstraintTypeInfo * BKE_constraint_typeinfo_from_type(int type)
WorkSpace * CTX_wm_workspace(const bContext *C)
ReportList * CTX_wm_reports(const bContext *C)
bScreen * CTX_wm_screen(const bContext *C)
SpaceFile * CTX_wm_space_file(const bContext *C)
SpaceProperties * CTX_wm_space_properties(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
RenderEngineType * CTX_data_engine_type(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
Collection * CTX_data_collection(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_curveprofile_update(struct CurveProfile *profile, int update_flags)
@ PROF_UPDATE_REMOVE_DOUBLES
void BKE_curveprofile_reset_view(struct CurveProfile *profile)
void BKE_curveprofile_remove_by_flag(struct CurveProfile *profile, short flag)
void BKE_curveprofile_reset(struct CurveProfile *profile)
void BKE_curveprofile_reverse(struct CurveProfile *profile)
@ G_FLAG_INTERNET_OVERRIDE_PREF_OFFLINE
const char * BKE_idtype_idcode_to_translation_context(short idcode)
const char * BKE_idtype_idcode_to_name(short idcode)
#define BKE_idtype_idcode_is_localizable
bool BKE_scene_has_object(Scene *scene, Object *ob)
void BKE_id_newptr_and_tag_clear(ID *id)
bool id_single_user(bContext *C, ID *id, PointerRNA *ptr, PropertyRNA *prop)
bool BKE_id_copy_is_allowed(const ID *id)
#define MAX_ID_FULL_NAME_UI
void BKE_id_full_name_ui_prefix_get(char name[MAX_ID_FULL_NAME_UI], const ID *id, bool add_lib_hint, char separator_char, int *r_prefix_len)
blender::Vector< ID * > BKE_id_ordered_list(const ListBase *lb)
bool BKE_lib_id_make_local(Main *bmain, ID *id, int flags)
void id_fake_user_clear(ID *id)
void id_us_clear_real(ID *id)
@ LIB_ID_MAKELOCAL_ASSET_DATA_CLEAR
void BKE_main_id_flag_listbase(ListBase *lb, int flag, bool value)
void BKE_lib_override_library_id_reset(Main *bmain, ID *id_root, bool do_reset_system_override)
bool BKE_lib_override_library_create(Main *bmain, Scene *scene, ViewLayer *view_layer, Library *owner_library, ID *id_root_reference, ID *id_hierarchy_root_reference, ID *id_instance_hint, ID **r_id_root_override, const bool do_fully_editable)
void BKE_lib_override_library_make_local(Main *bmain, ID *id)
IDOverrideLibrary * BKE_lib_override_library_get(Main *bmain, ID *id, ID *owner_id_hint, ID **r_owner_id)
Blender kernel freestyle line style functionality.
ListBase * which_libbase(Main *bmain, short type)
bool BKE_main_has_issues(const Main *bmain)
ImBuf * BKE_main_thumbnail_to_imbuf(Main *bmain, BlendThumbnail *data)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
void BKE_modifier_type_panel_id(ModifierType type, char *r_idname)
bool BKE_packedfile_id_check(const ID *id)
Report * BKE_reports_last_displayable(ReportList *reports)
bool BKE_scene_uses_cycles(const Scene *scene)
bool BKE_scene_uses_cycles_experimental_features(Scene *scene)
bool BKE_scene_uses_blender_eevee(const Scene *scene)
void BKE_shaderfxType_panel_id(ShaderFxType type, char *r_idname)
const ShaderFxTypeInfo * BKE_shaderfx_get_info(ShaderFxType type)
float BLF_width(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
File and directory operations.
eFileAttributes BLI_file_attributes(const char *path)
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_stat(const char *path, BLI_stat_t *buffer) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_filelist_entry_size_to_string(const struct stat *st, uint64_t st_size_fallback, bool compact, char r_size[FILELIST_DIRENTRY_SIZE_LEN])
void BLI_filelist_entry_datetime_to_string(const struct stat *st, int64_t ts, bool compact, char r_time[FILELIST_DIRENTRY_TIME_LEN], char r_date[FILELIST_DIRENTRY_DATE_LEN], bool *r_is_today, bool *r_is_yesterday)
#define FILELIST_DIRENTRY_DATE_LEN
#define FILELIST_DIRENTRY_TIME_LEN
void BLI_kdtree_nd_ free(KDTree *tree)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
MINLINE void add_v3_uchar_clamped(uchar r[3], int i)
MINLINE float len_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
void void void const char * BLI_path_basename(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
void void BLI_path_split_dir_part(const char *filepath, char *dir, size_t dir_maxncpy) ATTR_NONNULL(1
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
void BLI_str_format_integer_unit(char dst[BLI_STR_FORMAT_INT32_INTEGER_UNIT_SIZE], int number_to_format) ATTR_NONNULL(1)
#define SNPRINTF_RLEN(dst, format,...)
#define BLI_string_join(...)
Platform independent time functions.
double BLI_time_now_seconds(void)
size_t BLI_timecode_string_from_time_simple(char *str, size_t maxncpy, double time_seconds) ATTR_NONNULL()
#define POINTER_FROM_INT(i)
#define POINTER_AS_INT(i)
external readfile function prototypes.
BlendThumbnail * BLO_thumbnail_from_file(const char *filepath)
short BLO_version_from_file(const char *filepath)
#define BLT_I18NCONTEXT_ID_FREESTYLELINESTYLE
#define BLT_I18NCONTEXT_ID_WINDOWMANAGER
#define BLT_I18NCONTEXT_ID_WORLD
#define BLT_I18NCONTEXT_ID_ACTION
#define BLT_I18NCONTEXT_ID_TEXT
#define BLT_I18NCONTEXT_ID_VOLUME
#define BLT_I18NCONTEXT_ID_BRUSH
#define BLT_I18NCONTEXT_ID_NODETREE
#define BLT_I18NCONTEXT_ID_CURVES
#define BLT_I18NCONTEXT_ID_IMAGE
#define BLT_I18NCONTEXT_ID_SPEAKER
#define BLT_I18NCONTEXT_ID_WORKSPACE
#define BLT_I18NCONTEXT_ID_CURVE_LEGACY
#define BLT_I18NCONTEXT_ID_LATTICE
#define BLT_I18NCONTEXT_ID_GPENCIL
#define BLT_I18NCONTEXT_ID_LIGHT
#define BLT_I18NCONTEXT_ID_POINTCLOUD
#define BLT_I18NCONTEXT_ID_METABALL
#define BLT_I18NCONTEXT_ID_SOUND
#define BLT_I18NCONTEXT_ID_PARTICLESETTINGS
#define BLT_I18NCONTEXT_ID_LIGHTPROBE
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_DEFAULT
#define BLT_I18NCONTEXT_ID_SCREEN
#define BLT_I18NCONTEXT_ID_OBJECT
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define BLT_I18NCONTEXT_ID_PALETTE
#define BLT_I18NCONTEXT_ID_ARMATURE
#define BLT_I18N_MSGID_MULTI_CTXT(msgid,...)
#define BLT_I18NCONTEXT_ID_PAINTCURVE
#define BLT_I18NCONTEXT_ID_SCENE
#define BLT_I18NCONTEXT_ID_MATERIAL
#define BLT_I18NCONTEXT_ID_MESH
#define BLT_I18NCONTEXT_ID_CAMERA
#define BLT_I18NCONTEXT_ID_TEXTURE
#define BLT_I18NCONTEXT_ID_MASK
#define BLT_I18NCONTEXT_COLOR
typedef double(DMatrix)[4][4]
void DEG_relations_tag_update(Main *bmain)
ID * DEG_get_evaluated_id(const Depsgraph *depsgraph, ID *id)
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_OVERRIDABLE_LIBRARY(_id)
#define ID_IS_OVERRIDABLE_LIBRARY_HIERARCHY(_id)
#define ID_IS_LINKED(_id)
#define ID_IS_EDITABLE(_id)
@ LIBOVERRIDE_FLAG_SYSTEM_DEFINED
#define ID_REAL_USERS(id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
Object groups, one object can be in many groups at once.
@ CUMA_EXTEND_EXTRAPOLATE
@ COLORMANAGE_VIEW_USE_WHITE_BALANCE
@ COLORMANAGE_VIEW_USE_CURVES
@ CONSTRAINT_TYPE_KINEMATIC
Object is a sort of wrapper for general info.
@ STATUSBAR_SHOW_EXTENSIONS_UPDATES
@ USER_RENDER_DISPLAY_NONE
@ WM_EXTENSIONS_UPDATE_CHECKING
@ WORKSPACE_USE_PIN_SCENE
void(*)(void *data_link, char *r_idname) uiListPanelIDFromDataFunc
void ED_file_path_button(bScreen *screen, const SpaceFile *sfile, FileSelectParams *params, uiBlock *block)
const char * ED_info_statusbar_string_ex(Main *bmain, Scene *scene, ViewLayer *view_layer, const char statusbar_flag)
void ED_preview_draw(const bContext *C, void *idp, void *parentp, void *slotp, uiPreview *ui_preview, rcti *rect)
bScreen * ED_screen_animation_no_scrub(const wmWindowManager *wm)
int ED_area_header_switchbutton(const bContext *C, uiBlock *block, int yco)
void ED_region_tag_redraw(ARegion *region)
void ED_undo_push(bContext *C, const char *str)
void ED_undo_operator_repeat_cb_evt(bContext *C, void *arg_op, int arg_unused)
Contains defines and structs used throughout the imbuf module.
ImBuf * IMB_thumb_read(const char *file_or_lib_path, ThumbSize size)
Read Guarded memory(de)allocation.
#define RNA_STRUCT_BEGIN(sptr, prop)
short RNA_type_to_ID_code(const StructRNA *type)
#define RNA_STRUCT_BEGIN_SKIP_RNA_TYPE(sptr, prop)
#define RNA_warning(format,...)
void UI_but_func_set(uiBut *but, std::function< void(bContext &)> func)
void * but_func_argN_copy(const void *argN)
void but_func_argN_free(void *argN)
int UI_text_colorid_from_report_type(int type)
void UI_but_flag_disable(uiBut *but, int flag)
void UI_but_disable(uiBut *but, const char *disabled_hint)
uiBut * uiDefButS(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, short *poin, float min, float max, const char *tip)
@ UI_PROP_BUTS_ANY_FAILED_CHECK
@ UI_PROP_BUTS_NONE_ADDED
uiLayout * uiLayoutColumnFlow(uiLayout *layout, int number, bool align)
void uiLayoutSetActive(uiLayout *layout, bool active)
eUIEmbossType UI_block_emboss_get(uiBlock *block)
uiBut * uiDefIconButR(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, PointerRNA *ptr, const char *propname, int index, float min, float max, const char *tip)
@ UI_TEMPLATE_OP_PROPS_HIDE_ADVANCED
@ UI_TEMPLATE_OP_PROPS_SHOW_EMPTY
@ UI_TEMPLATE_OP_PROPS_SHOW_TITLE
@ UI_TEMPLATE_OP_PROPS_HIDE_PRESETS
@ UI_TEMPLATE_OP_PROPS_COMPACT
@ UI_TEMPLATE_OP_PROPS_NO_SPLIT_LAYOUT
uiLayout * uiLayoutBox(uiLayout *layout)
void UI_block_theme_style_set(uiBlock *block, char theme_style)
void UI_but_focus_on_enter_event(wmWindow *win, uiBut *but)
void uiLayoutSetEnabled(uiLayout *layout, bool enabled)
void UI_but_func_drawextra_set(uiBlock *block, std::function< void(const bContext *C, rcti *rect)> func)
void UI_but_func_tooltip_custom_set(uiBut *but, uiButToolTipCustomFunc func, void *arg, uiFreeArgFunc free_arg)
uiBut * uiDefButI(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, int *poin, float min, float max, const char *tip)
uiBut * uiDefIconTextButO(uiBlock *block, int type, const char *opname, wmOperatorCallContext opcontext, int icon, blender::StringRef str, int x, int y, short width, short height, const char *tip)
@ UI_BLOCK_MOVEMOUSE_QUIT
int UI_icon_from_report_type(int type)
void UI_tooltip_image_field_add(uiTooltipData &data, const uiTooltipImage &image_data)
void UI_but_func_rename_full_set(uiBut *but, std::function< void(std::string &new_name)> rename_full_func)
void UI_block_lock_clear(uiBlock *block)
void UI_but_func_tooltip_set(uiBut *but, uiButToolTipFunc func, void *arg, uiFreeArgFunc free_arg)
uiBut * uiDefIconBlockBut(uiBlock *block, uiBlockCreateFunc func, void *arg, int retval, int icon, int x, int y, short width, short height, const char *tip)
void(*)(const bContext *C, void *arg, const char *str, uiSearchItems *items, bool is_first) uiButSearchUpdateFn
uiBut * uiDefBut(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void uiItemIntO(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
void uiItemL(uiLayout *layout, const char *name, int icon)
void uiItemFullO(uiLayout *layout, const char *opname, const char *name, int icon, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, PointerRNA *r_opptr)
void UI_block_bounds_set_normal(uiBlock *block, int addval)
void uiLayoutSetRedAlert(uiLayout *layout, bool redalert)
void UI_but_func_search_set(uiBut *but, uiButSearchCreateFn search_create_fn, uiButSearchUpdateFn search_update_fn, void *arg, bool free_arg, uiFreeArgFunc search_arg_free_fn, uiButHandleFunc search_exec_fn, void *active)
uiBut * uiDefIconButR_prop(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, PointerRNA *ptr, PropertyRNA *prop, int index, float min, float max, const char *tip)
bool UI_search_item_add(uiSearchItems *items, const char *name, void *poin, int iconid, int but_flag, uint8_t name_prefix_offset)
void UI_panels_free_instanced(const bContext *C, ARegion *region)
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=false)
uiBlock * uiLayoutGetBlock(uiLayout *layout)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
uiLayout * UI_block_layout(uiBlock *block, int dir, int type, int x, int y, int size, int em, int padding, const uiStyle *style)
const uiStyle * UI_style_get_dpi()
void uiLayoutSetScaleX(uiLayout *layout, float scale)
void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, const char *name, int icon, const char *placeholder=nullptr)
int UI_icon_colorid_from_report_type(int type)
void UI_but_drawflag_enable(uiBut *but, int flag)
uiBut * uiDefButO(uiBlock *block, int type, const char *opname, wmOperatorCallContext opcontext, const char *str, int x, int y, short width, short height, const char *tip)
uiBut * uiDefIconBut(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void UI_but_func_search_set_tooltip(uiBut *but, uiButSearchTooltipFn tooltip_fn)
void uiLayoutSetAlignment(uiLayout *layout, char alignment)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, eUIEmbossType emboss)
void UI_but_number_step_size_set(uiBut *but, float step_size)
void UI_block_func_handle_set(uiBlock *block, uiBlockHandleFunc func, void *arg)
void uiItemS(uiLayout *layout)
uiLayout * uiLayoutAbsolute(uiLayout *layout, bool align)
@ UI_BUT_LABEL_ALIGN_NONE
uiBut * uiDefIconTextBut(uiBlock *block, int type, int retval, int icon, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
uiBut * UI_context_active_but_get(const bContext *C)
uiBut * uiDefButBitI(uiBlock *block, int type, int bit, int retval, blender::StringRef str, int x, int y, short width, short height, int *poin, float min, float max, const char *tip)
eAutoPropButsReturn uiDefAutoButsRNA(uiLayout *layout, PointerRNA *ptr, bool(*check_prop)(PointerRNA *ptr, PropertyRNA *prop, void *user_data), void *user_data, PropertyRNA *prop_activate_init, eButLabelAlign label_align, bool compact)
void *(*)(const void *argN) uiButArgNCopy
void(*)(void *argN) uiButArgNFree
int UI_searchbox_size_x()
uiLayout * uiLayoutRowWithHeading(uiLayout *layout, bool align, const char *heading)
void uiItemS_ex(uiLayout *layout, float factor, LayoutSeparatorType type=LayoutSeparatorType::Auto)
PointerRNA * UI_but_extra_operator_icon_add(uiBut *but, const char *opname, wmOperatorCallContext opcontext, int icon)
void uiItemFullO_ptr(uiLayout *layout, wmOperatorType *ot, const char *name, int icon, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, PointerRNA *r_opptr)
void uiTemplateList(uiLayout *layout, const bContext *C, const char *listtype_name, const char *list_id, PointerRNA *dataptr, const char *propname, PointerRNA *active_dataptr, const char *active_propname, const char *item_dyntip_propname, int rows, int maxrows, int layout_type, int columns, enum uiTemplateListFlags flags)
void UI_panel_custom_data_set(Panel *panel, PointerRNA *custom_data)
void uiLayoutSetUnitsX(uiLayout *layout, float unit)
const uiStyle * UI_style_get()
void UI_fontstyle_set(const uiFontStyle *fs)
uiBut * uiDefIconButO(uiBlock *block, int type, const char *opname, wmOperatorCallContext opcontext, int icon, int x, int y, short width, short height, const char *tip)
uiBut * uiDefButF(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, float *poin, float min, float max, const char *tip)
uiBut * uiDefBlockBut(uiBlock *block, uiBlockCreateFunc func, void *arg, blender::StringRef str, int x, int y, short width, short height, const char *tip)
void UI_block_emboss_set(uiBlock *block, eUIEmbossType emboss)
void uiLayoutSetKeepAspect(uiLayout *layout, bool keepaspect)
PointerRNA * UI_but_operator_ptr_ensure(uiBut *but)
void UI_block_func_set(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2)
int UI_icon_from_keymap_item(const wmKeyMapItem *kmi, int r_icon_mod[4])
void UI_block_bounds_set_text(uiBlock *block, int addval)
void UI_block_align_begin(uiBlock *block)
int UI_searchbox_size_y()
uiBut * uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxncpy, int x, int y, short width, short height, const char *tip)
void uiItemDecoratorR(uiLayout *layout, PointerRNA *ptr, const char *propname, int index)
@ UI_BLOCK_THEME_STYLE_POPUP
void uiLayoutSetEmboss(uiLayout *layout, eUIEmbossType emboss)
int uiLayoutGetWidth(uiLayout *layout)
ARegion *(*)(bContext *C, ARegion *region, const rcti *item_rect, void *arg, void *active) uiButSearchTooltipFn
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
int UI_fontstyle_string_width(const uiFontStyle *fs, const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
void uiItemEnumO_value(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
PanelLayout uiLayoutPanelProp(const bContext *C, uiLayout *layout, PointerRNA *open_prop_owner, const char *open_prop_name)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
uiBut * uiDefIconButI(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, int *poin, float min, float max, const char *tip)
uiLayout * uiItemL_respect_property_split(uiLayout *layout, const char *text, int icon)
void UI_block_funcN_set(uiBlock *block, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
void UI_but_number_precision_set(uiBut *but, float precision)
uiBut * uiDefIconTextButR_prop(uiBlock *block, int type, int retval, int icon, const char *str, int x, int y, short width, short height, PointerRNA *ptr, PropertyRNA *prop, int index, float min, float max, const char *tip)
void uiTemplateTextureShow(uiLayout *layout, const bContext *C, PointerRNA *ptr, PropertyRNA *prop)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
uiLayout * uiLayoutSplit(uiLayout *layout, float percentage, bool align)
uiBut * uiDefIconButS(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, short *poin, float min, float max, const char *tip)
uiBlock * uiLayoutAbsoluteBlock(uiLayout *layout)
void(*)(bContext *C, void *arg1, void *arg2) uiButHandleFunc
bool UI_panel_list_matches_data(ARegion *region, ListBase *data, uiListPanelIDFromDataFunc panel_idname_func)
void UI_block_direction_set(uiBlock *block, char direction)
void UI_block_set_active_operator(uiBlock *block, wmOperator *op, const bool free)
void UI_but_icon_indicator_color_set(uiBut *but, const uchar color[4])
uiBut * uiDefButR_prop(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, PointerRNA *ptr, PropertyRNA *prop, int index, float min, float max, const char *tip)
void UI_block_layout_set_current(uiBlock *block, uiLayout *layout)
void uiItemMenuF(uiLayout *layout, const char *name, int icon, uiMenuCreateFunc func, void *arg)
uiBut * uiDefBlockButN(uiBlock *block, uiBlockCreateFunc func, void *argN, blender::StringRef str, int x, int y, short width, short height, const char *tip, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
@ UI_TEMPLATE_ID_FILTER_AVAILABLE
@ UI_TEMPLATE_ID_FILTER_ALL
uiBlock *(*)(bContext *C, ARegion *region, void *arg1) uiBlockCreateFunc
void UI_block_flag_enable(uiBlock *block, int flag)
void UI_but_drag_set_id(uiBut *but, ID *id)
PointerRNA * UI_panel_custom_data_get(const Panel *panel)
ARegion * UI_tooltip_create_from_search_item_generic(bContext *C, const ARegion *searchbox_region, const rcti *item_rect, ID *id)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
uiBut * uiDefIconMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, int x, int y, short width, short height, const char *tip)
void UI_panel_context_pointer_set(Panel *panel, const char *name, PointerRNA *ptr)
uiBut * uiDefButR(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, PointerRNA *ptr, const char *propname, int index, float min, float max, const char *tip)
void UI_but_funcN_set(uiBut *but, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
Panel * UI_panel_add_instanced(const bContext *C, ARegion *region, ListBase *panels, const char *panel_idname, PointerRNA *custom_data)
void UI_but_search_preview_grid_size_set(uiBut *but, int rows, int cols)
void UI_block_lock_set(uiBlock *block, bool val, const char *lockstr)
uiBut * uiItemL_ex(uiLayout *layout, const char *name, int icon, bool highlight, bool redalert)
void uiItemPopoverPanel(uiLayout *layout, const bContext *C, const char *panel_type, const char *name, int icon)
void UI_but_flag_enable(uiBut *but, int flag)
@ UI_TEMPLATE_LIST_FLAG_NONE
uiBut * uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int index, const char *name, int icon, int x, int y, int width, int height)
void uiItemM(uiLayout *layout, const char *menuname, const char *name, int icon)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
void uiLayoutSetContextPointer(uiLayout *layout, const char *name, PointerRNA *ptr)
void UI_block_align_end(uiBlock *block)
int UI_icon_from_library(const ID *id)
void UI_GetThemeColorType4ubv(int colorid, int spacetype, unsigned char col[4])
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
@ WM_JOB_TYPE_DPAINT_BAKE
@ WM_JOB_TYPE_SEQ_BUILD_PROXY
@ WM_JOB_TYPE_OBJECT_BAKE
@ WM_JOB_TYPE_SEQ_DRAW_THUMBNAIL
@ WM_JOB_TYPE_ASSET_LIBRARY_LOAD
@ WM_JOB_TYPE_CLIP_BUILD_PROXY
@ WM_JOB_TYPE_CLIP_PREFETCH
@ WM_JOB_TYPE_SEQ_BUILD_PREVIEW
@ WM_JOB_TYPE_OBJECT_SIM_OCEAN
@ WM_JOB_TYPE_CLIP_SOLVE_CAMERA
@ WM_JOB_TYPE_FILESEL_READDIR
@ WM_JOB_TYPE_CLIP_TRACK_MARKERS
@ WM_JOB_TYPE_OBJECT_SIM_FLUID
@ WM_JOB_TYPE_OBJECT_BAKE_TEXTURE
#define ND_SHADING_PREVIEW
#define ND_LIB_OVERRIDE_CHANGED
#define OP_PROP_TAG_ADVANCED
@ WM_OP_INVOKE_REGION_WIN
#define ND_SPACE_OUTLINER
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
constexpr bool is_empty() const
constexpr int64_t size() const
constexpr const char * c_str() const
void add(const StringRef str, T *user_data, const int weight=0)
Vector< T * > query(const StringRef query) const
bool ED_id_rename(Main &bmain, ID &id, blender::StringRefNull name)
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 IMB_freeImBuf(ImBuf *)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
void ui_def_but_icon(uiBut *but, const int icon, const int flag)
int ui_but_align_opposite_to_area_align_get(const ARegion *region)
int ui_id_icon_get(const bContext *C, ID *id, const bool big)
float ui_event_icon_offset(const int icon_id)
ColorPicker * ui_block_colorpicker_create(uiBlock *block)
ARegion * ui_searchbox_create_generic(bContext *C, ARegion *butregion, uiButSearch *search_but)
uiBut * ui_but_last(uiBlock *block) ATTR_WARN_UNUSED_RESULT
void ui_rna_collection_search_update_fn(const bContext *C, void *arg, const char *str, uiSearchItems *items, bool is_first)
#define UI_MENU_WIDTH_MIN
static void template_id_workspace_pin_extra_icon(const TemplateID &template_ui, uiBut *but)
void uiTemplateIconView(uiLayout *layout, PointerRNA *ptr, const char *propname, bool show_labels, float icon_scale, float icon_scale_popup)
static void do_running_jobs(bContext *C, void *, int event)
static void curvemap_buttons_redraw(bContext &C)
static uiBlock * curvemap_tools_negslope_func(bContext *C, ARegion *region, void *cb_v)
void uiTemplateInputStatus(uiLayout *layout, bContext *C)
void uiTemplateColorspaceSettings(uiLayout *layout, PointerRNA *ptr, const char *propname)
ID * ui_template_id_liboverride_hierarchy_make(bContext *C, Main *bmain, ID *owner_id, ID *id, const char **r_undo_push_label)
void uiTemplateStatusInfo(uiLayout *layout, bContext *C)
void uiTemplatePalette(uiLayout *layout, PointerRNA *ptr, const char *propname, bool)
static bool curvemap_can_zoom_in(CurveMapping *cumap)
void uiTemplateWaveform(uiLayout *layout, PointerRNA *ptr, const char *propname)
static void template_keymap_item_properties(uiLayout *layout, const char *title, PointerRNA *ptr)
static void draw_constraint_header(uiLayout *layout, Object *ob, bConstraint *con)
#define template_id_context(type)
static std::string progress_tooltip_func(bContext *, void *argN, const char *)
static void cache_file_layer_item(uiList *, const bContext *, uiLayout *layout, PointerRNA *, PointerRNA *itemptr, int, PointerRNA *, const char *, int, int)
static bool ui_layout_operator_buts_poll_property(PointerRNA *, PropertyRNA *prop, void *user_data)
static bool id_search_add(const bContext *C, TemplateID *template_ui, uiSearchItems *items, ID *id)
static void CurveProfile_buttons_layout(uiLayout *layout, PointerRNA *ptr, const RNAUpdateCb &cb)
#define TEMPLATE_SEARCH_TEXTBUT_HEIGHT
void uiTemplateIcon(uiLayout *layout, int icon_value, float icon_scale)
void uiTemplateRunningJobs(uiLayout *layout, bContext *C)
static void template_ID(const bContext *C, uiLayout *layout, TemplateID &template_ui, StructRNA *type, int flag, const char *newop, const char *openop, const char *unlinkop, const char *text, const bool live_icon, const bool hide_buttons)
static bool curve_profile_can_zoom_out(CurveProfile *profile)
static uiBlock * curve_profile_presets_fn(bContext *C, ARegion *region, void *cb_v)
static void id_search_cb_tagged(const bContext *C, void *arg_template, const char *str, uiSearchItems *items)
static void constraint_active_func(bContext *, void *ob_v, void *con_v)
void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, const char *propname, PointerRNA *used_ptr, const char *used_propname, int active_layer)
static uiBlock * curve_profile_tools_fn(bContext *C, ARegion *region, void *cb_v)
void uiTemplatePathBuilder(uiLayout *layout, PointerRNA *ptr, const char *propname, PointerRNA *, const char *text)
void uiTemplateCacheFileProcedural(uiLayout *layout, const bContext *C, PointerRNA *fileptr)
static const char * template_id_browse_tip(const StructRNA *type)
void uiTemplateConstraintHeader(uiLayout *layout, PointerRNA *ptr)
void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, const char *propname, int type, bool levels, bool brush, bool neg_slope, bool tone)
static void bone_constraint_panel_id(void *md_link, char *r_idname)
static uiBlock * template_common_search_menu(const bContext *C, ARegion *region, uiButSearchUpdateFn search_update_fn, void *search_arg, uiButHandleFunc search_exec_fn, void *active_item, uiButSearchTooltipFn item_tooltip_fn, const int preview_rows, const int preview_cols, float scale)
void uiTemplateCacheFileLayers(uiLayout *layout, const bContext *C, PointerRNA *fileptr)
static const wmKeyMapItem * keymap_item_from_enum_item(const wmKeyMap *keymap, const EnumPropertyItem *item)
static uiBlock * template_search_menu(bContext *C, ARegion *region, void *arg_template)
static int template_search_textbut_height()
static void template_search_exec_fn(bContext *C, void *arg_template, void *item)
static eAutoPropButsReturn template_operator_property_buts_draw_single(const bContext *C, wmOperator *op, uiLayout *layout, const eButLabelAlign label_align, int layout_flags)
void uiTemplateIDBrowse(uiLayout *layout, bContext *C, PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int filter, const char *text)
bool uiTemplateCacheFilePointer(PointerRNA *ptr, const char *propname, PointerRNA *r_file_ptr)
void uiTemplateVectorscope(uiLayout *layout, PointerRNA *ptr, const char *propname)
#define TEMPLATE_SEARCH_TEXTBUT_MIN_WIDTH
static void ui_template_id(uiLayout *layout, const bContext *C, PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, const char *menu, const char *text, int flag, int prv_rows, int prv_cols, int filter, bool use_tabs, float scale, const bool live_icon, const bool hide_buttons)
static void colorband_flip(bContext *C, ColorBand *coba)
static void colorband_buttons_layout(uiLayout *layout, uiBlock *block, ColorBand *coba, const rctf *butr, const RNAUpdateCb &cb, int expand)
void uiTemplateAction(uiLayout *layout, const bContext *C, ID *id, const char *newop, const char *unlinkop, const char *text)
void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
static bool constraint_panel_is_bone(Panel *panel)
void uiTemplateAnyID(uiLayout *layout, PointerRNA *ptr, const char *propname, const char *proptypename, const char *text)
static ARegion * template_ID_search_menu_item_tooltip(bContext *C, ARegion *region, const rcti *item_rect, void *, void *active)
static uiBut * template_id_def_new_but(uiBlock *block, const ID *id, const TemplateID &template_ui, StructRNA *type, const char *const newop, const bool editable, const bool id_open, const bool use_tab_but, int but_height)
static bool template_search_setup(TemplateSearch &template_search, PointerRNA *ptr, const char *const propname, PointerRNA *searchptr, const char *const searchpropname)
static int template_search_textbut_width(PointerRNA *ptr, PropertyRNA *name_prop)
static void template_ID_tabs(const bContext *C, uiLayout *layout, TemplateID &template_id, StructRNA *type, int flag, const char *newop, const char *menu)
void uiTemplateNodeSocket(uiLayout *layout, bContext *, const float color[4])
static void draw_exporter_item(uiList *, const bContext *, uiLayout *layout, PointerRNA *, PointerRNA *itemptr, int, PointerRNA *, const char *, int, int)
static void id_search_cb_objects_from_scene(const bContext *C, void *arg_template, const char *str, uiSearchItems *items, const bool)
static uiBlock * ui_icon_view_menu_cb(bContext *C, ARegion *region, void *arg_litem)
ID * UI_context_active_but_get_tab_ID(bContext *C)
static void keymap_item_modified(bContext *, void *kmi_p, void *)
void uiTemplateFileSelectPath(uiLayout *layout, bContext *C, FileSelectParams *params)
void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, const char *propname, bool expand)
void uiTemplatePreview(uiLayout *layout, bContext *C, ID *id, bool show_buttons, ID *parent, MTex *slot, const char *preview_id)
static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labeltype, bool levels, bool brush, bool neg_slope, bool tone, const RNAUpdateCb &cb)
void uiTemplateCryptoPicker(uiLayout *layout, PointerRNA *ptr, const char *propname, int icon)
void uiTemplateShaderFx(uiLayout *, bContext *C)
void uiTemplateOperatorPropertyButs(const bContext *C, uiLayout *layout, wmOperator *op, eButLabelAlign label_align, short flag)
static uiBlock * curvemap_brush_tools_func(bContext *C, ARegion *region, void *cb_v)
static void template_id_liboverride_hierarchy_collections_tag_recursive(Collection *root_collection, ID *target_id, const bool do_parents)
void uiTemplateGpencilColorPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, const char *propname, int rows, int cols, float scale, int filter)
static void template_search_add_button_searchmenu(const bContext *C, uiLayout *layout, uiBlock *block, TemplateSearch &template_search, const bool editable, const bool live_icon)
static void rna_update_cb(bContext &C, const RNAUpdateCb &cb)
static void colorband_add(bContext &C, const RNAUpdateCb &cb, ColorBand &coba)
void uiTemplateConstraints(uiLayout *, bContext *C, bool use_bone_constraints)
static void object_constraint_panel_id(void *md_link, char *r_idname)
void uiTemplateCacheFileVelocity(uiLayout *layout, PointerRNA *fileptr)
static void template_ID_set_property_exec_fn(bContext *C, void *arg_template, void *item)
static bool curve_profile_can_zoom_in(CurveProfile *profile)
static bool keymap_item_can_collapse(const wmKeyMapItem *kmi_a, const wmKeyMapItem *kmi_b)
static uiBlock * curvemap_tools_func(bContext *C, ARegion *region, RNAUpdateCb &cb, bool show_extend, int reset_mode)
void uiTemplateIDPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int rows, int cols, int filter, const bool hide_buttons)
static void template_operator_property_buts_draw_recursive(const bContext *C, wmOperator *op, uiLayout *layout, const eButLabelAlign label_align, int layout_flags, bool *r_has_advanced)
void uiTemplateColormanagedViewSettings(uiLayout *layout, bContext *, PointerRNA *ptr, const char *propname)
void uiTemplateSearch(uiLayout *layout, const bContext *C, PointerRNA *ptr, const char *propname, PointerRNA *searchptr, const char *searchpropname, const char *newop, const char *unlinkop, const char *text)
static void curvemap_buttons_zoom_in(bContext *C, CurveMapping *cumap)
void uiTemplateIDTabs(uiLayout *layout, bContext *C, PointerRNA *ptr, const char *propname, const char *newop, const char *menu, int filter)
static bool id_search_allows_id(TemplateID *template_ui, const int flag, ID *id, const char *query)
void uiTemplateCollectionExporters(uiLayout *layout, bContext *C)
static wmOperator * minimal_operator_create(wmOperatorType *ot, PointerRNA *properties)
static void draw_export_properties(bContext *C, uiLayout *layout, wmOperator *op, const std::string &filename)
static void template_search_buttons(const bContext *C, uiLayout *layout, TemplateSearch &template_search, const char *newop, const char *unlinkop, const char *text)
void uiTemplateSearchPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, const char *propname, PointerRNA *searchptr, const char *searchpropname, const char *newop, const char *unlinkop, const int rows, const int cols, const char *text)
static void colorband_update_cb(bContext *, void *bt_v, void *coba_v)
void uiTemplateOperatorRedoProperties(uiLayout *layout, const bContext *C)
static uiBlock * curvemap_tools_posslope_func(bContext *C, ARegion *region, void *cb_v)
bool uiTemplateEventFromKeymapItem(uiLayout *layout, const char *text, const wmKeyMapItem *kmi, bool text_fallback)
void UI_context_active_but_prop_get_templateID(const bContext *C, PointerRNA *r_ptr, PropertyRNA **r_prop)
int uiTemplateRecentFiles(uiLayout *layout, int rows)
static short get_constraint_expand_flag(const bContext *, Panel *panel)
static void template_search_add_button_name(uiBlock *block, PointerRNA *active_ptr, const StructRNA *type)
static PropertyRNA * template_search_get_searchprop(PointerRNA *targetptr, PropertyRNA *targetprop, PointerRNA *searchptr, const char *const searchpropname)
void uiTemplateCurveProfile(uiLayout *layout, PointerRNA *ptr, const char *propname)
static bool curvemap_can_zoom_out(CurveMapping *cumap)
void uiTemplateColorPicker(uiLayout *layout, PointerRNA *ptr, const char *propname, bool value_slider, bool lock, bool lock_luminosity, bool cubic)
static uiBlock * id_search_menu(bContext *C, ARegion *region, void *arg_litem)
void uiTemplateHistogram(uiLayout *layout, PointerRNA *ptr, const char *propname)
static void curve_profile_zoom_out(bContext *C, CurveProfile *profile)
static void colorband_distribute(bContext *C, ColorBand *coba, bool evenly)
static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
static bool uiTemplateInputStatusAzone(uiLayout *layout, const AZone *az, const ARegion *region)
static bool ui_layout_operator_properties_only_booleans(const bContext *C, wmWindowManager *wm, wmOperator *op, int layout_flags)
static void template_add_button_search_menu(const bContext *C, uiLayout *layout, uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, uiBlockCreateFunc block_func, void *block_argN, const char *const tip, const bool use_previews, const bool editable, const bool live_icon, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
#define CONSTRAINT_BONE_TYPE_PANEL_PREFIX
static uiBlock * colorband_tools_fn(bContext *C, ARegion *region, void *cb_v)
static void constraint_reorder(bContext *C, Panel *panel, int new_index)
void uiTemplateKeymapItemProperties(uiLayout *layout, PointerRNA *ptr)
static void handle_layer_buttons(bContext *C, void *arg1, void *arg2)
uiListType * UI_UL_cache_file_layers()
static void set_constraint_expand_flag(const bContext *, Panel *panel, short expand_flag)
#define CONSTRAINT_TYPE_PANEL_PREFIX
static std::string ui_template_status_tooltip(bContext *C, void *, const char *)
static void curvemap_buttons_zoom_out(bContext *C, CurveMapping *cumap)
static void shaderfx_panel_id(void *fx_v, char *r_idname)
int uiTemplateStatusBarModalItem(uiLayout *layout, const wmKeyMap *keymap, const EnumPropertyItem *item)
void uiTemplateCacheFile(uiLayout *layout, const bContext *C, PointerRNA *ptr, const char *propname)
static void modifier_panel_id(void *md_link, char *r_name)
static void ui_template_palette_menu(bContext *, uiLayout *layout, void *)
static void curve_profile_zoom_in(bContext *C, CurveProfile *profile)
static void uiTemplateRecentFiles_tooltip_func(bContext &, uiTooltipData &tip, void *argN)
void uiTemplateCacheFileTimeSettings(uiLayout *layout, PointerRNA *fileptr)
void uiTemplateID(uiLayout *layout, const bContext *C, PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int filter, const bool live_icon, const char *text)
static void do_preview_buttons(bContext *C, void *arg, int event)
static void template_id_liboverride_hierarchy_make(bContext *C, Main *bmain, TemplateID *template_ui, PointerRNA *idptr, const char **r_undo_push_label)
static void id_search_cb(const bContext *C, void *arg_template, const char *str, uiSearchItems *items, const bool)
#define ERROR_LIBDATA_MESSAGE
static void constraint_ops_extra_draw(bContext *C, uiLayout *layout, void *con_v)
static void template_search_add_button_operator(uiBlock *block, const char *const operator_name, const wmOperatorCallContext opcontext, const int icon, const bool editable)
static uiBlock * curvemap_brush_tools_negslope_func(bContext *C, ARegion *region, void *cb_v)
static uiBlock * component_menu(bContext *C, ARegion *region, void *args_v)
void uiTemplateComponentMenu(uiLayout *layout, PointerRNA *ptr, const char *propname, const char *name)
static void draw_export_controls(bContext *C, uiLayout *layout, const std::string &label, int index, bool valid)
static void template_id_liboverride_hierarchy_collection_root_find_recursive(Collection *collection, const int parent_level, Collection **r_collection_parent_best, int *r_parent_level_best)
void uiTemplateModifiers(uiLayout *, bContext *C)
void uiTemplateHeader(uiLayout *layout, bContext *C)
static uiBlock * curvemap_clipping_func(bContext *C, ARegion *region, void *cumap_v)
bool RE_engine_supports_alembic_procedural(const RenderEngineType *render_type, Scene *scene)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_dupallocN)(const void *vmemh)
std::unique_ptr< IDProperty, IDPropertyDeleter > create_group(StringRefNull prop_name, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_GROUP.
void constraint_active_set(Object *ob, bConstraint *con)
ListBase * pose_constraint_list(const bContext *C)
Object * context_active_object(const bContext *C)
void object_single_user_make(Main *bmain, Scene *scene, Object *ob)
ListBase * constraint_list_from_constraint(Object *ob, bConstraint *con, bPoseChannel **r_pchan)
void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, bool value)
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
const char * RNA_property_ui_description(const PropertyRNA *prop)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
bool RNA_struct_is_ID(const StructRNA *type)
void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision)
StructRNA * RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value, ReportList *reports)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_enum_icon_from_value(const EnumPropertyItem *item, int value, int *r_icon)
PropertyType RNA_property_type(PropertyRNA *prop)
char * RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_struct_identifier(const StructRNA *type)
bool RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value)
int RNA_property_flag(PropertyRNA *prop)
int RNA_struct_ui_icon(const StructRNA *type)
const char * RNA_struct_ui_description(const StructRNA *type)
bool RNA_pointer_is_null(const PointerRNA *ptr)
int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_property_ui_name(const PropertyRNA *prop)
bool RNA_property_editable(const PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_name_property(const StructRNA *type)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **r_item, int *r_totitem, bool *r_free)
int RNA_property_tags(PropertyRNA *prop)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
bool RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
const char * RNA_property_identifier(const PropertyRNA *prop)
PointerRNA RNA_id_pointer_create(ID *id)
struct CollectionChild * next
Collection_Runtime runtime
float luminosity_lock_value
struct ID * hierarchy_root
IDOverrideLibrary * override_library
bool has_forward_compatibility_issues
void(* panel_register)(ARegionType *region_type)
struct Collection * instance_collection
void(* reorder)(bContext *C, Panel *pa, int new_index)
void(* set_list_data_expand_flag)(const bContext *C, Panel *pa, short expand_flag)
short(* get_list_data_expand_flag)(const bContext *C, Panel *pa)
struct wmTimer * reporttimer
void(* panel_register)(struct ARegionType *region_type)
uiRNACollectionSearch search_data
WorkSpaceRuntimeHandle * runtime
struct bConstraint * prev
struct bConstraint * next
char label[OP_MAX_TYPENAME]
char export_operator[OP_MAX_TYPENAME]
std::string get_default_filename(const StringRefNull name)
eButGradientType gradient_type
eButGradientType gradient_type
IconTextOverlay icon_overlay_text
char idname[BKE_ST_MAXNAME]
uiListDrawItemFunc draw_item
unsigned int id_session_uid
PropertyRNA * target_prop
PropertyRNA * search_prop
bool(* poll_property)(const bContext *C, wmOperator *op, const PropertyRNA *prop) ATTR_WARN_UNUSED_RESULT
void(* ui)(bContext *C, wmOperator *op)
struct wmOperatorType * type
WindowManagerRuntimeHandle * runtime
struct wmEvent * eventstate
bool WM_window_modal_keymap_status_draw(bContext *C, wmWindow *win, uiLayout *layout)
bool WM_operator_repeat_check(const bContext *, wmOperator *op)
void WM_main_add_notifier(uint type, void *reference)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
const char * WM_window_cursor_keymap_status_get(const wmWindow *win, int button_index, int type_index)
void WM_reportf(eReportType type, const char *format,...)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_operator_name_call(bContext *C, const char *opstring, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_jobs_stop_all_from_owner(wmWindowManager *wm, const void *owner)
const char * WM_jobs_name(const wmWindowManager *wm, const void *owner)
bool WM_jobs_is_stopped(const wmWindowManager *wm, const void *owner)
float WM_jobs_progress(const wmWindowManager *wm, const void *owner)
double WM_jobs_starttime(const wmWindowManager *wm, const void *owner)
bool WM_jobs_test(const wmWindowManager *wm, const void *owner, int job_type)
const char * WM_key_event_string(const short type, const bool compact)
void WM_keyconfig_update_tag(wmKeyMap *keymap, wmKeyMapItem *kmi)
std::string WM_operatortype_name(wmOperatorType *ot, PointerRNA *properties)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
void WM_operator_properties_reset(wmOperator *op)
wmOperator * WM_operator_last_redo(const bContext *C)
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)
bool WM_uilisttype_add(uiListType *ult)
WorkSpace * WM_window_get_active_workspace(const wmWindow *win)