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) :
180 const ID *idfrom =
ptr->owner_id;
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);
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);
661 const char *undo_push_label;
662 if (r_undo_push_label ==
nullptr) {
663 r_undo_push_label = &undo_push_label;
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;
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__);
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__);
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__);
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");
3045 wmOperator *op = MEM_cnew<wmOperator>(
ot->rna_ext.srna ? __func__ :
ot->idname);
3051 op->
ptr = MEM_new<PointerRNA>(
"wmOperatorPtrRNA");
3053 *op->
ptr = *properties;
3061 uiItemL(layout, label.c_str(), ICON_NONE);
3066 uiItemIntO(row,
"", ICON_EXPORT,
"COLLECTION_OT_exporter_export",
"index", index);
3073 const std::string &filename)
3081 std::string placeholder =
"//" + filename;
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;
3176 std::string label(fh->
label);
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;
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"));
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"),
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;
5239 if (profile->
view_rect.
xmin - d < profile->clip_rect.xmin) {
5256 if (profile->
view_rect.
ymin - d < profile->clip_rect.ymin) {
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++) {
5472 selection_x = &
point->x;
5473 selection_y = &
point->y;
5478 selection_x = &
point->h1_loc[0];
5479 selection_y = &
point->h1_loc[1];
5483 selection_x = &
point->h2_loc[0];
5484 selection_y = &
point->h2_loc[1];
5488 point_last_or_first =
true;
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);
6516 if (!workspace->
runtime->status.is_empty()) {
6528 if (offset != 0.0f) {
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;
6638 if (
wm->extensions_blocked > 0) {
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;
6681 else if ((
wm->extensions_updates > 0) ||
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");
6701 if (
wm->extensions_updates > 0) {
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;
7480 char version_str[128] = {0};
7486 thumb->
metadata,
"Thumb::Blender::Version", version_str,
sizeof(version_str));
7494 SNPRINTF(version_str,
"%d.%01d", version / 100, version % 100);
7498 if (version_str[0]) {
7505 if (
BLI_stat(path, &status) != -1) {
7507 bool is_today, is_yesterday;
7508 std::string day_string;
7510 nullptr,
int64_t(status.st_mtime),
false, time_st, date_str, &is_today, &is_yesterday);
7511 if (is_today || is_yesterday) {
7512 day_string = (is_today ?
N_(
"Today") :
N_(
"Yesterday")) + std::string(
" ");
7515 fmt::format(
"{}: {}{}{}",
7518 (is_today || is_yesterday) ?
"" : date_str,
7519 (is_today || is_yesterday) ? time_st :
""),
7524 if (status.st_size > 0) {
7546 float scale = (72.0f *
UI_SCALE_FAC) /
float(std::max(thumb->
x, thumb->
y));
7547 image_data.ibuf = thumb;
7548 image_data.width = short(
float(thumb->
x) * scale);
7549 image_data.height = short(
float(thumb->
y) * scale);
7550 image_data.border =
true;
7552 image_data.premultiplied =
true;
7569 "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)
void BKE_curveprofile_reset_view(struct CurveProfile *profile)
void BKE_curveprofile_remove_by_flag(struct CurveProfile *profile, short flag)
@ PROF_UPDATE_REMOVE_DOUBLES
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 BLI_path_split_dir_file(const char *filepath, char *dir, size_t dir_maxncpy, char *file, size_t file_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)
const char * dirname(char *path)
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)
@ LIBOVERRIDE_FLAG_SYSTEM_DEFINED
#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)
#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)
static void split(const char *text, const char *seps, char ***str, int *count)
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.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
#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)
@ UI_BLOCK_THEME_STYLE_POPUP
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)
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)
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)
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)
@ UI_BLOCK_MOVEMOUSE_QUIT
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
@ UI_TEMPLATE_ID_FILTER_AVAILABLE
@ UI_TEMPLATE_ID_FILTER_ALL
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)
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)
@ 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
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 DBVT_INLINE btScalar size(const btDbvtVolume &a)
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.
FileHandlerType * file_handler_find(StringRef idname)
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
struct CollectionParent * next
int active_exporter_index
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
struct Collection * master_collection
void(* panel_register)(struct ARegionType *region_type)
uiRNACollectionSearch search_data
WorkSpaceRuntimeHandle * runtime
struct bConstraint * prev
struct bConstraint * next
struct ARegion * active_region
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
struct wmKeyMapItem * next
bool(* poll_property)(const bContext *C, wmOperator *op, const PropertyRNA *prop) ATTR_WARN_UNUSED_RESULT
void(* ui)(bContext *C, wmOperator *op)
struct wmOperatorType * type
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)