22#include <fmt/format.h>
95#include "RNA_prototypes.hh"
114#define UNDOCUMENTED_OPERATOR_TIP N_("(undocumented operator)")
120#define OP_BL_SEP_STRING "_OT_"
121#define OP_BL_SEP_LEN 4
123#define OP_PY_SEP_CHAR '.'
124#define OP_PY_SEP_LEN 1
128#define OP_MAX_PY_IDNAME (OP_MAX_TYPENAME - OP_BL_SEP_LEN + OP_PY_SEP_LEN - 1)
134 const size_t sep_offset = size_t(sep - src);
138 memcpy(dst, src, sep_offset);
153 const size_t from_len = size_t(strlen(src));
157 const size_t sep_offset = size_t(sep - src);
158 memcpy(dst, src, sep_offset);
175 if ((sep ==
nullptr) || (sep == idname) || (sep[
OP_BL_SEP_LEN] ==
'\0')) {
179 for (
const char *ch = idname; ch < sep; ch++) {
180 if ((*ch >=
'A' && *ch <=
'Z') || (*ch >=
'0' && *ch <=
'9') || *ch ==
'_') {
187 if ((*ch >=
'a' && *ch <=
'z') || (*ch >=
'0' && *ch <=
'9') || *ch ==
'_') {
196 const char *classname,
199 const char *ch = idname;
202 for (i = 0; *ch; i++, ch++) {
203 if ((*ch >=
'a' && *ch <=
'z') || (*ch >=
'0' && *ch <=
'9') || *ch ==
'_') {
206 else if (*ch ==
'.') {
207 if (ch == idname || (*(ch + 1) ==
'\0')) {
210 "Registering operator class: '%s', invalid bl_idname '%s', at position %d",
221 "Registering operator class: '%s', invalid bl_idname '%s', at position %d",
232 "Registering operator class: '%s', invalid bl_idname '%s', "
233 "is too long, maximum length is %d",
244 "Registering operator class: '%s', invalid bl_idname '%s', must contain 1 '.' character",
255 const bool macro_args,
262 std::stringstream ss;
265 int max_prop_length = 10;
268 ss <<
"bpy.ops." << idname_py <<
"(";
273 bool first_op =
true;
277 for (; opm; opm = opm->
next) {
280 if (opmptr ==
nullptr) {
282 opmptr = &opmptr_default;
287 ss << opm->
type->
idname <<
'=' << string_args;
291 ss <<
", " << opm->
type->
idname <<
'=' << string_args;
294 if (opmptr == &opmptr_default) {
302 const bool macro_args_test =
ot->
macro.
first ? macro_args :
true;
304 if (opptr ==
nullptr) {
306 opptr = &opptr_default;
310 C, opptr,
false, all_args, macro_args_test, max_prop_length);
312 if (opptr == &opptr_default) {
325 const bool macro_args)
332 const int str_len =
str.size();
333 const size_t parens_start =
str.find(
'(');
334 if (parens_start == std::string::npos) {
338 const size_t parens_end =
str.find(parens_start + 1,
')');
339 if (parens_end == std::string::npos) {
343 const int parens_len = parens_end - parens_start;
344 if (parens_len <= str_len_max) {
349 const size_t comma_first =
str.find(parens_start,
',');
350 if (comma_first == std::string::npos) {
353 const char end_str[] =
" ... )";
354 const int end_str_len =
sizeof(end_str) - 1;
357 const int new_str_len = (comma_first - parens_start) + 1;
359 if (str_len < new_str_len + parens_start + end_str_len + 1) {
363 return str.substr(0, comma_first) + end_str;
381 const char *member_found =
nullptr;
382 const char *member_id =
nullptr;
383 bool member_found_is_id =
false;
385 for (link = lb.
first; link; link = link->
next) {
386 const char *identifier = link->
data;
390 if (ctx_item_ptr.
type ==
nullptr) {
398 member_found = identifier;
399 member_found_is_id = is_id;
404 member_id = identifier;
411 *r_is_id = member_found_is_id;
414 else if (member_id) {
445 const char *member_id =
nullptr;
448# define CTX_TEST_PTR_ID(C, member, idptr) \
450 const char *ctx_member = member; \
451 PointerRNA ctx_item_ptr = CTX_data_pointer_get(C, ctx_member); \
452 if (ctx_item_ptr.owner_id == idptr) { \
453 member_id = ctx_member; \
460# define CTX_TEST_PTR_ID_CAST(C, member, member_full, cast, idptr) \
462 const char *ctx_member = member; \
463 const char *ctx_member_full = member_full; \
464 PointerRNA ctx_item_ptr = CTX_data_pointer_get(C, ctx_member); \
465 if (ctx_item_ptr.owner_id && (ID *)cast(ctx_item_ptr.owner_id) == idptr) { \
466 member_id = ctx_member_full; \
473# define TEST_PTR_DATA_TYPE(member, rna_type, rna_ptr, dataptr_cmp) \
475 const char *ctx_member = member; \
476 if (RNA_struct_is_a((rna_ptr)->type, &(rna_type)) && (rna_ptr)->data == (dataptr_cmp)) { \
477 member_id = ctx_member; \
484# define TEST_PTR_DATA_TYPE_FROM_CONTEXT(member, rna_type, rna_ptr) \
486 const char *ctx_member = member; \
487 if (RNA_struct_is_a((rna_ptr)->type, &(rna_type)) && \
488 (rna_ptr)->data == (CTX_data_pointer_get_type(C, ctx_member, &(rna_type)).data)) \
490 member_id = ctx_member; \
514 switch (ptr_id_type) {
530 if (ptr_id_type ==
ID_AR) {
532 if (arm->
edbo !=
nullptr) {
540# define ID_CAST_OBDATA(id_pt) (((Object *)(id_pt))->data)
543# undef ID_CAST_OBDATA
546# define ID_CAST_OBMATACT(id_pt) \
547 BKE_object_material_get(((Object *)id_pt), ((Object *)id_pt)->actcol)
551# undef ID_CAST_OBMATACT
554# define ID_CAST_SCENEWORLD(id_pt) (((Scene *)(id_pt))->world)
557# undef ID_CAST_SCENEWORLD
566 if (space_data !=
nullptr) {
616 "space_data.preview_overlay", RNA_SequencerPreviewOverlay,
ptr, sseq);
618 "space_data.timeline_overlay", RNA_SequencerTimelineOverlay,
ptr, sseq);
630# undef CTX_TEST_PTR_ID
631# undef CTX_TEST_PTR_ID_CAST
632# undef TEST_PTR_DATA_TYPE
651 std::string member_id_data_path;
655 if (prop !=
nullptr) {
657 if (prop_str[0] ==
'[') {
658 member_id_data_path = fmt::format(
"{}.{}{}", member_id, *data_path, prop_str);
661 member_id_data_path = fmt::format(
"{}.{}.{}", member_id, *data_path, prop_str);
665 member_id_data_path = fmt::format(
"{}.{}", member_id, *data_path);
670 if (prop !=
nullptr) {
672 if (prop_str[0] ==
'[') {
673 member_id_data_path = fmt::format(
"{}{}", member_id, prop_str);
676 member_id_data_path = fmt::format(
"{}.{}", member_id, prop_str);
680 member_id_data_path = member_id;
684 return member_id_data_path;
698 C,
ptr, prop, index);
699 if (!member_id_data_path.has_value()) {
702 return "bpy.context." + member_id_data_path.value();
713 if (!lhs.has_value()) {
725 std::string
ret = fmt::format(
"{} = {}", lhs.value(),
rhs);
745 static_cast<ID *
>(
G_MAIN->wm.first), &RNA_OperatorProperties,
nullptr);
753 if (properties ==
nullptr) {
754 properties = &tmp_properties;
757 if (*properties ==
nullptr) {
761 if (*
ptr ==
nullptr) {
762 *
ptr = MEM_new<PointerRNA>(
"wmOpItemPtr");
766 (*ptr)->data = *properties;
800 bool changed =
false;
805 if (ptype != &RNA_Struct) {
871 bool changed =
false;
909 bool changed =
false;
938 if (opm->properties) {
976 "wait_to_deselect_others");
983 if (init_event_type == 0) {
1014 const int drag_delta[2] = {
1015 mval[0] -
event->mval[0],
1016 mval[1] -
event->mval[1],
1085 if (prop ==
nullptr) {
1090 "'%s', '%s' is not an enum property",
1095 const int retval = op->
type->
exec(C, op);
1137 static char search[256] =
"";
1196 search_menu.
op = op;
1198 const bool can_refresh =
false;
1207 const char *message,
1330 bool exists =
false;
1336 if (idcode ==
ID_IM) {
1346 "Cannot read %s '%s': %s",
1349 errno ? strerror(errno) :
RPT_(
"unsupported format"));
1353 if (is_relative_path) {
1354 if (exists ==
false) {
1355 if (idcode ==
ID_IM) {
1522 const short icon_size = (small ? 32 : 64) *
UI_SCALE_FAC;
1529 if (data->mouse_move_quit) {
1540 int text_width = std::max(
1547 std::istringstream message_stream(messaged_trimmed);
1549 while (std::getline(message_stream, line)) {
1550 message_lines.
append(line);
1551 text_width = std::max(
1555 int dialog_width = std::max(text_width +
int(style->
columnspace * 2.5), data->width);
1558 const int longest_button_text = std::max(
1561 dialog_width = std::max(dialog_width, 3 * longest_button_text);
1566 block, style, dialog_width + icon_size,
eAlertIcon(data->icon), icon_size);
1574 if (!data->title.empty()) {
1575 uiItemL_ex(layout, data->title.c_str(), ICON_NONE,
true,
false);
1578 if (data->include_properties && message_lines.
size() == 0) {
1584 for (
auto &st : message_lines) {
1585 uiItemL(layout, st.c_str(), ICON_NONE);
1588 if (data->include_properties) {
1599 const bool windows_layout =
true;
1601 const bool windows_layout =
false;
1616 if (windows_layout) {
1620 data->confirm_text.c_str(),
1633 col_block,
UI_BTYPE_BUT, 0,
IFACE_(
"Cancel"), 0, 0, 0,
UI_UNIT_Y,
nullptr, 0, 0,
"");
1635 if (!windows_layout) {
1640 data->confirm_text.c_str(),
1659 const float button_center_x = windows_layout ? -0.4f : -0.90f;
1660 const float button_center_y = small ? 2.0f : 3.1f;
1708 if (data->free_op) {
1721 if (op && retval > 0) {
1731 const char *message,
1732 const char *confirm_text,
1734 bool cancel_default)
1736 wmOpPopUp *data = MEM_new<wmOpPopUp>(__func__);
1740 const float min_width = (message ==
nullptr) ? 180.0f : 230.0f;
1744 data->free_op =
true;
1746 data->message = (message ==
nullptr) ? std::string() : message;
1747 data->confirm_text = (confirm_text ==
nullptr) ?
IFACE_(
"OK") : confirm_text;
1751 data->cancel_default = cancel_default;
1752 data->mouse_move_quit = (message ==
nullptr) ?
true :
false;
1753 data->include_properties =
false;
1763 wmOpPopUp *data = MEM_new<wmOpPopUp>(__func__);
1766 data->free_op =
true;
1780 std::optional<std::string> title = std::nullopt,
1781 std::optional<std::string> confirm_text = std::nullopt,
1782 const bool cancel_default =
false)
1787 "Operator '%s' does not have register enabled, incorrect invoke function",
1796 "Operator '%s' does not have undo enabled, incorrect invoke function",
1820 std::optional<std::string> title,
1821 std::optional<std::string> confirm_text,
1822 const bool cancel_default)
1845 std::optional<std::string> title,
1846 std::optional<std::string> confirm_text,
1847 const bool cancel_default)
1849 wmOpPopUp *data = MEM_new<wmOpPopUp>(__func__);
1853 data->free_op =
true;
1855 data->confirm_text = confirm_text ? std::move(*confirm_text) :
IFACE_(
"OK");
1859 data->cancel_default = cancel_default;
1860 data->mouse_move_quit =
false;
1861 data->include_properties =
true;
1876 "Operator redo '%s' does not have register enabled, incorrect invoke function",
1927 ot->
srna,
"debug_value", 0, SHRT_MIN, SHRT_MAX,
"Debug Value",
"", -10000, 10000);
1952 ot->
name =
"Restore Operator Defaults";
1953 ot->
idname =
"WM_OT_operator_defaults";
1954 ot->
description =
"Set the active operator to its default values";
2085 data.single_menu_idname = buffer;
2098 data.search_type = search_type;
2109 ot->
name =
"Search Menu";
2111 ot->
description =
"Pop-up a search over all menus in the current context";
2120 ot->
name =
"Search Operator";
2121 ot->
idname =
"WM_OT_search_operator";
2122 ot->
description =
"Pop-up a search over all available operators in current context";
2131 ot->
name =
"Search Single Menu";
2132 ot->
idname =
"WM_OT_search_single_menu";
2133 ot->
description =
"Pop-up a search for a menu in current context";
2145 "Query to insert into the search box");
2205 ot->
name =
"Call Pie Menu";
2206 ot->
idname =
"WM_OT_call_menu_pie";
2285 ot->
name =
"Call Asset Shelf Popover";
2286 ot->
idname =
"WM_OT_call_asset_shelf_popover";
2287 ot->
description =
"Open a predefined asset shelf in a popup";
2299 "Identifier of the asset shelf to display");
2317 if (win ==
nullptr) {
2335 if (win ==
nullptr) {
2351 ot->
name =
"Close Window";
2371 ot->
name =
"New Main Window";
2372 ot->
idname =
"WM_OT_window_new_main";
2373 ot->
description =
"Create a new main window with its own workspace and scene selection";
2381 ot->
name =
"Toggle Window Fullscreen";
2382 ot->
idname =
"WM_OT_window_fullscreen_toggle";
2408 ot->
name =
"Quit Blender";
2434 ot->
idname =
"WM_OT_console_toggle";
2437 ot->
exec = wm_console_toggle_exec;
2493 if (pc->draw == draw_fn) {
2495 free(pc->customdata);
2509#define WM_RADIAL_CONTROL_DISPLAY_SIZE (200 * UI_SCALE_FAC)
2510#define WM_RADIAL_CONTROL_DISPLAY_MIN_SIZE (35 * UI_SCALE_FAC)
2511#define WM_RADIAL_CONTROL_DISPLAY_WIDTH \
2512 (WM_RADIAL_CONTROL_DISPLAY_SIZE - WM_RADIAL_CONTROL_DISPLAY_MIN_SIZE)
2513#define WM_RADIAL_MAX_STR 10
2579 float d[2] = {0, 0};
2580 float zoom[2] = {1, 1};
2653 float col[3] = {0, 0, 0};
2728 float step = (radius * 2.0f) /
float(line_segments);
2731 for (
int i = 0; i < line_segments; i++) {
2746 short fstyle_points = fstyle->
points;
2748 short strdrawlen = 0;
2749 float strwidth, strheight;
2750 float r1 = 0.0f, r2 = 0.0f, rmin = 0.0, tex_radius, alpha;
2751 float zoom[2],
col[4] = {1.0f, 1.0f, 1.0f, 1.0f};
2752 float text_color[4];
2860 const float black[3] = {0.0f};
2884 BLF_position(fontid, -0.5f * strwidth, -0.5f * strheight, 0.0f);
2924 if (
str[0] ==
'\0') {
2933 r_prop = &unused_prop;
2965 "Property from path '%s' has length %d instead of %d",
2991 &use_secondary_prop,
2998 const char *data_path;
3000 data_path =
"data_path_secondary";
3003 data_path =
"data_path_primary";
3040 "fill_color_override_path",
3050 "fill_color_override_test_path",
3109 int value,
min,
max, step;
3120 float value,
min,
max, step, precision;
3155 "Property must be a none, distance, factor, percentage, angle, or pixel");
3224 float new_value, dist = 0.0f, zoom[2];
3227 float angle_precision = 0.0f;
3229 bool handled =
false;
3241 numValue =
fmod(numValue, 2.0f *
float(
M_PI));
3242 if (numValue < 0.0f) {
3248 new_value = numValue;
3257 switch (event->
type) {
3276 if (!has_numInput) {
3286 float(event->xy[1])});
3294 delta[0] /= zoom[0];
3302 delta[0] /= zoom[0];
3305 dist = dist + 0.1f * (delta[0]);
3313 delta[0] /= zoom[0];
3314 delta[1] /= zoom[1];
3331 new_value = (
int(new_value) + 5) / 10 * 10;
3339 new_value =
int(new_value + 2.5f) / 5 * 5;
3345 new_value = (
int(
ceil(new_value * 10.0f)) * 10.0f) / 100.0f;
3348 new_value = 1 - new_value;
3351 new_value =
atan2f(delta[1], delta[0]) +
float(
M_PI) + angle_precision;
3352 new_value =
fmod(new_value, 2.0f *
float(
M_PI));
3353 if (new_value < 0.0f) {
3404 numValue =
fmod(numValue, 2.0f *
float(
M_PI));
3405 if (numValue < 0.0f) {
3411 new_value = numValue;
3448 ot->
name =
"Radial Control";
3449 ot->
idname =
"WM_OT_radial_control";
3450 ot->
description =
"Set some size property (e.g. brush size) with mouse wheel";
3461 "data_path_primary",
3464 "Primary Data Path",
3465 "Primary path of property to be set by the radial control");
3469 "data_path_secondary",
3472 "Secondary Data Path",
3473 "Secondary path of property to be set by the radial control");
3481 "Path of property to select between the primary and secondary data paths");
3489 "Path of property used to rotate the texture display");
3497 "Path of property used to set the color of the control");
3505 "Path of property used to set the fill color of the control");
3509 ot->
srna,
"fill_color_override_path",
nullptr, 0,
"Fill Color Override Path",
"");
3512 ot->
srna,
"fill_color_override_test_path",
nullptr, 0,
"Fill Color Override Test",
"");
3520 "Path of property used to set the zoom level for the control");
3528 "Path of ID that is used to generate an image for the control");
3532 ot->
srna,
"secondary_tex",
false,
"Secondary Texture",
"Tweak brush secondary/mask texture");
3536 ot->
srna,
"release_confirm",
false,
"Confirm On Release",
"Finish operation on key release");
3577 {
eRTDrawRegionSwap,
"DRAW_SWAP", 0,
"Draw Region & Swap",
"Draw region and swap"},
3578 {
eRTDrawWindow,
"DRAW_WIN", 0,
"Draw Window",
"Draw window"},
3579 {
eRTDrawWindowSwap,
"DRAW_WIN_SWAP", 0,
"Draw Window & Swap",
"Draw window and swap"},
3581 {
eRTAnimationPlay,
"ANIM_PLAY", 0,
"Animation Play",
"Animation playback"},
3582 {
eRTUndo,
"UNDO", 0,
"Undo/Redo",
"Undo and redo"},
3583 {0,
nullptr, 0,
nullptr,
nullptr},
3616 if (!region_iter->visible) {
3633 scene->r.cfra += (cfra == scene->r.cfra) ? 1 : -1;
3638 int tot = (scene->r.efra - scene->r.sfra) + 1;
3643 if (scene->r.cfra > scene->r.efra) {
3644 scene->r.cfra = scene->r.sfra;
3679 const int cfra = scene->r.cfra;
3680 const char *infostr =
"";
3694 for (
int a = 0; a < iter; a++) {
3698 if (time_limit != 0.0) {
3714 "%d \u00D7 %s: %.4f ms, average: %.8f ms",
3718 time_delta / iter_steps);
3725 ot->
name =
"Redraw Timer";
3727 ot->
description =
"Simple redraw timer to test the speed of updating the interface";
3735 ot->
srna,
"iterations", 10, 1, INT_MAX,
"Iterations",
"Number of times to redraw", 1, 1000);
3742 "Seconds to run the test for (override iterations)",
3763 ot->
name =
"Memory Statistics";
3764 ot->
idname =
"WM_OT_memory_statistics";
3797 const int cb_flag = cb_data->
cb_flag;
3809 id->tag &= ~ID_TAG_DOIT;
3828 for (
int i = 0; lb[i]; i++) {
3832 preview_id_data.
C =
C;
3835 ID *
id = (
ID *)scene;
3843 for (
int i = 0; lb[i]; i++) {
3847 id->tag &= ~ID_TAG_DOIT;
3857 ot->
name =
"Refresh Data-Block Previews";
3858 ot->
idname =
"WM_OT_previews_ensure";
3860 "Ensure data-block previews are available and up-to-date "
3861 "(to be saved in .blend file, only for some types like materials, textures, etc.)";
3892 "All Geometry Types",
3893 "Clear previews for scenes, collections and objects"},
3897 "All Shading Types",
3898 "Clear previews for materials, lights, worlds, textures and images"},
3908 {PREVIEW_FILTER_BRUSH,
"BRUSH", 0,
"Brushes",
""},
3910 {0,
nullptr, 0,
nullptr,
nullptr},
3961 for (
int i = 0; lb[i]; i++) {
3962 ID *
id =
static_cast<ID *
>(lb[i]->
first);
3968 printf(
"%s: %d, %d, %d -> %d\n",
3980 for (; id;
id =
static_cast<ID *
>(
id->next)) {
3992 ot->
name =
"Clear Data-Block Previews";
3993 ot->
idname =
"WM_OT_previews_clear";
3995 "Clear data-block previews (only for some types like objects, materials, textures, etc.)";
4005 "Which data-block previews to clear");
4038 ot->
name =
"View Online Manual";
4039 ot->
idname =
"WM_OT_doc_view_manual_ui_context";
4040 ot->
description =
"View a context based online manual in a web browser";
4059 ot->
name =
"Set Stereo 3D";
4060 ot->
idname =
"WM_OT_set_stereo_3d";
4061 ot->
description =
"Toggle 3D stereo support for current window (or change the display mode)";
4092 "use_interlace_swap",
4095 "Swap left and right stereo channels");
4098 "use_sidebyside_crosseyed",
4101 "Right eye should see left image and vice versa");
4158#ifdef WITH_XR_OPENXR
4181 {0,
nullptr, 0,
nullptr,
nullptr},
4214 {0,
nullptr, 0,
nullptr,
nullptr},
4246 {0,
nullptr, 0,
nullptr,
nullptr},
4298 {0,
nullptr, 0,
nullptr,
nullptr},
4332 {0,
nullptr, 0,
nullptr,
nullptr},
4359 {0,
nullptr, 0,
nullptr,
nullptr},
4404 return (
id != user_data);
4411 bool (*filter_ids)(
const ID *
id,
void *user_data),
4418 if (
id !=
nullptr) {
4419 const short id_type =
GS(id->name);
4420 for (; id;
id =
static_cast<ID *
>(
id->next)) {
4421 if ((filter_ids !=
nullptr) && filter_ids(
id, user_data) ==
false) {
4427 item_tmp.
value = i++;
4430 if (id_type ==
ID_GR) {
4454 r_free, C ? (
ID *)
CTX_data_main(C)->actions.first :
nullptr,
false,
nullptr,
nullptr);
4472 r_free, C ? (
ID *)
CTX_data_main(C)->collections.first :
nullptr,
false,
nullptr,
nullptr);
4480 r_free, C ? (
ID *)
CTX_data_main(C)->collections.first :
nullptr,
true,
nullptr,
nullptr);
4489 r_free, C ? (
ID *)
CTX_data_main(C)->images.first :
nullptr,
false,
nullptr,
nullptr);
4497 r_free, C ? (
ID *)
CTX_data_main(C)->images.first :
nullptr,
true,
nullptr,
nullptr);
4506 r_free, C ? (
ID *)
CTX_data_main(C)->scenes.first :
nullptr,
false,
nullptr,
nullptr);
4514 r_free, C ? (
ID *)
CTX_data_main(C)->scenes.first :
nullptr,
true,
nullptr,
nullptr);
4534 r_free, C ? (
ID *)
CTX_data_main(C)->movieclips.first :
nullptr,
false,
nullptr,
nullptr);
4542 r_free, C ? (
ID *)
CTX_data_main(C)->movieclips.first :
nullptr,
true,
nullptr,
nullptr);
4551 r_free, C ? (
ID *)
CTX_data_main(C)->masks.first :
nullptr,
false,
nullptr,
nullptr);
4559 r_free, C ? (
ID *)
CTX_data_main(C)->masks.first :
nullptr,
true,
nullptr,
nullptr);
bool id_type_can_have_animdata(short id_type)
ImBuf * BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient)
float BKE_brush_curve_strength_clamped(const Brush *br, float p, float len)
ReportList * CTX_wm_reports(const bContext *C)
bScreen * CTX_wm_screen(const bContext *C)
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
ListBase CTX_data_dir_get_ex(const bContext *C, bool use_store, bool use_rna, bool use_all)
SpaceLink * CTX_wm_space_data(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Object * CTX_data_edit_object(const bContext *C)
void CTX_wm_window_set(bContext *C, wmWindow *win)
Main * CTX_data_main(const bContext *C)
void CTX_wm_area_set(bContext *C, ScrArea *area)
void CTX_wm_region_set(bContext *C, ARegion *region)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void CTX_wm_region_popup_set(bContext *C, ARegion *region_popup)
View3D * CTX_wm_view3d(const bContext *C)
IDProperty * IDP_GetPropertyFromGroup(const IDProperty *prop, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_FreeProperty(IDProperty *prop)
void IDP_ClearProperty(IDProperty *prop)
bool IDP_AddToGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
IDProperty * IDP_CopyProperty(const IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_MergeGroup(IDProperty *dest, const IDProperty *src, bool do_overwrite) ATTR_NONNULL()
void IDP_ReplaceInGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
uint64_t BKE_idtype_idcode_to_idfilter(short idcode)
const char * BKE_idtype_idcode_to_name(short idcode)
Image * BKE_image_load_exists(Main *bmain, const char *filepath, bool *r_exists=nullptr)
void BKE_main_id_tag_listbase(ListBase *lb, int tag, bool value)
void BKE_main_id_tag_all(Main *mainvar, int tag, bool value)
@ IDWALK_CB_EMBEDDED_NOT_OWNING
void BKE_library_foreach_ID_link(Main *bmain, ID *id, blender::FunctionRef< LibraryIDLinkCallback > callback, void *user_data, int flag)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
General operations, lookup, etc. for materials.
PreviewImage * BKE_previewimg_id_ensure(ID *id)
void BKE_previewimg_clear(PreviewImage *prv)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_scene_graph_update_for_newframe(Depsgraph *depsgraph)
void BLF_size(int fontid, float size)
void BLF_width_and_height(int fontid, const char *str, size_t str_len, float *r_width, float *r_height) ATTR_NONNULL()
void BLF_color4fv(int fontid, const float rgba[4])
#define BLF_DRAW_STR_DUMMY_MAX
void BLF_draw(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
float BLF_width(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
void BLF_position(int fontid, float x, float y, float z)
#define BLI_assert_unreachable()
Dial * BLI_dial_init(const float start_position[2], float threshold)
float BLI_dial_angle(Dial *dial, const float current_position[2])
void BLI_kdtree_nd_ free(KDTree *tree)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float clamp_f(float value, float min, float max)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE float len_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
#define BLI_SCOPED_DEFER(function_to_defer)
bool void BLI_path_rel(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1)
void BLI_str_toupper_ascii(char *str, size_t len) ATTR_NONNULL(1)
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
void BLI_str_tolower_ascii(char *str, size_t len) ATTR_NONNULL(1)
char char size_t BLI_strncpy_rlen(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
size_t BLI_strlen_utf8(const char *strc) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
Platform independent time functions.
double BLI_time_now_seconds(void)
#define POINTER_FROM_INT(i)
#define POINTER_AS_INT(i)
#define CTX_N_(context, msgid)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
typedef double(DMatrix)[4][4]
#define CLOG_ERROR(clg_ref,...)
#define CLOG_INFO(clg_ref, level,...)
ID and Library types, which are fundamental for SDNA.
#define ID_IS_LINKED(_id)
#define ID_IS_EDITABLE(_id)
Object is a sort of wrapper for general info.
#define OB_DATA_SUPPORT_ID_CASE
#define OPERATOR_RETVAL_CHECK(ret)
FileSelectParams * ED_fileselect_get_active_params(const SpaceFile *sfile)
void ED_area_tag_redraw(ScrArea *area)
void ED_area_status_text(ScrArea *area, const char *str)
void ED_screen_refresh(bContext *C, wmWindowManager *wm, wmWindow *win)
bool ED_operator_regionactive(bContext *C)
void ED_region_tag_redraw(ARegion *region)
void ED_undo_push(bContext *C, const char *str)
void ED_undo_push_op(bContext *C, wmOperator *op)
bool ED_undo_is_legacy_compatible_for_property(bContext *C, ID *id)
bool ED_undo_is_valid(const bContext *C, const char *undoname)
int ED_undo_operator_repeat(bContext *C, wmOperator *op)
void ED_undo_redo(bContext *C)
void ED_undo_pop(bContext *C)
float ED_view3d_grid_scale(const Scene *scene, const View3D *v3d, const char **r_grid_unit)
float ED_scene_grid_scale(const Scene *scene, const char **r_grid_unit)
GHOST C-API function and type declarations.
bool GHOST_setConsoleWindowState(GHOST_TConsoleWindowState action)
@ GHOST_kConsoleWindowStateToggle
void GPU_matrix_scale_2fv(const float vec[2])
void GPU_matrix_rotate_2d(float deg)
void GPU_matrix_rotate_3f(float deg, float x, float y, float z)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_3D_IMAGE_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
void GPU_line_smooth(bool enable)
GPUTexture * GPU_texture_create_2d(const char *name, int width, int height, int mip_len, eGPUTextureFormat format, eGPUTextureUsage usage, const float *data)
void GPU_texture_free(GPUTexture *texture)
void GPU_texture_unbind(GPUTexture *texture)
@ GPU_TEXTURE_USAGE_SHADER_READ
void GPU_texture_filter_mode(GPUTexture *texture, bool use_filter)
void GPU_texture_swizzle_set(GPUTexture *texture, const char swizzle[4])
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
#define RNA_STRUCT_BEGIN(sptr, prop)
short RNA_type_to_ID_code(const StructRNA *type)
#define RNA_PROP_BEGIN(sptr, itemptr, prop)
#define RNA_SUBTYPE_UNIT_VALUE(subtype)
@ PROP_STRING_SEARCH_SUGGESTION
@ PROP_STRING_SEARCH_SORT
void UI_but_func_set(uiBut *but, std::function< void(bContext &)> func)
void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, const int active=-1)
void UI_popup_menu_retval_set(const uiBlock *block, int retval, bool enable)
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)
@ UI_BLOCK_MOVEMOUSE_QUIT
uiLayout * uiItemsAlertBox(uiBlock *block, const uiStyle *style, const int dialog_width, const eAlertIcon icon, const int icon_size)
void uiLayoutSetScaleY(uiLayout *layout, float scale)
void UI_block_bounds_set_popup(uiBlock *block, int addval, const int bounds_offset[2])
@ UI_BUT2_ACTIVATE_ON_INIT_NO_SELECT
void UI_popup_dummy_panel_set(ARegion *region, uiBlock *block)
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 uiItemL(uiLayout *layout, const char *name, int icon)
void UI_popup_block_invoke(bContext *C, uiBlockCreateFunc func, void *arg, uiFreeArgFunc arg_free)
uiBlock * uiLayoutGetBlock(uiLayout *layout)
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()
std::optional< std::string > UI_but_online_manual_id_from_active(const bContext *C) ATTR_WARN_UNUSED_RESULT
void UI_popup_block_ex(bContext *C, uiBlockCreateFunc func, uiBlockHandleFunc popup_func, uiBlockCancelFunc cancel_func, void *arg, wmOperator *op)
void UI_popup_menu_end(bContext *C, uiPopupMenu *pup)
void UI_popup_block_invoke_ex(bContext *C, uiBlockCreateFunc func, void *arg, uiFreeArgFunc arg_free, bool can_refresh)
void UI_block_flag_disable(uiBlock *block, int flag)
void UI_but_flag2_enable(uiBut *but, int flag)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, eUIEmbossType emboss)
void UI_block_func_handle_set(uiBlock *block, uiBlockHandleFunc func, void *arg)
@ UI_BUT_LABEL_ALIGN_SPLIT_COLUMN
@ UI_BUT_LABEL_ALIGN_NONE
@ UI_BUT_LABEL_ALIGN_COLUMN
void UI_popup_block_close(bContext *C, wmWindow *win, uiBlock *block)
int UI_searchbox_size_x()
bool UI_block_has_active_default_button(const uiBlock *block)
void uiItemS_ex(uiLayout *layout, float factor, LayoutSeparatorType type=LayoutSeparatorType::Auto)
uiBut * uiDefSearchButO_ptr(uiBlock *block, wmOperatorType *ot, IDProperty *properties, void *arg, int retval, int icon, int maxncpy, int x, int y, short width, short height, const char *tip)
void UI_but_func_operator_search(uiBut *but)
const uiStyle * UI_style_get()
uiPopupMenu * UI_popup_menu_begin(bContext *C, const char *title, int icon) ATTR_NONNULL()
void uiTemplateOperatorPropertyButs(const bContext *C, uiLayout *layout, wmOperator *op, eButLabelAlign label_align, short flag)
void UI_fontstyle_set(const uiFontStyle *fs)
void UI_block_func_set(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2)
uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
int UI_popover_panel_invoke(bContext *C, const char *idname, bool keep_open, ReportList *reports)
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)
@ UI_BLOCK_THEME_STYLE_REGULAR
@ UI_BLOCK_THEME_STYLE_POPUP
int uiLayoutGetWidth(uiLayout *layout)
void UI_block_bounds_set_centered(uiBlock *block, int addval)
int UI_pie_menu_invoke(bContext *C, const char *idname, const wmEvent *event)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
uiLayout * uiLayoutSplit(uiLayout *layout, float percentage, bool align)
void UI_but_func_menu_search(uiBut *but, const char *single_menu_idname=nullptr)
#define UI_DEFAULT_TEXT_POINTS
void UI_block_flag_enable(uiBlock *block, int flag)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
int UI_popup_menu_invoke(bContext *C, const char *idname, ReportList *reports) ATTR_NONNULL(1
uiBut * uiItemL_ex(uiLayout *layout, const char *name, int icon, bool highlight, bool redalert)
void UI_but_flag_enable(uiBut *but, int flag)
@ UI_BUT_ACTIVATE_ON_INIT
void UI_icon_render_id(const bContext *C, Scene *scene, ID *id, enum eIconSizes size, bool use_job)
int UI_icon_color_from_collection(const Collection *collection)
void UI_GetThemeColor4fv(int colorid, float col[4])
CLG_LogRef * WM_LOG_OPERATORS
void(*)(bContext *C, int, int, void *customdata) wmPaintCursorDraw
@ WM_OP_INVOKE_REGION_WIN
@ WM_POPUP_POSITION_MOUSE
@ WM_POPUP_POSITION_CENTER
constexpr StringRef trim() const
void append(const T &value)
local_group_size(16, 16) .push_constant(Type rhs
const Depsgraph * depsgraph
draw_view in_light_buf[] float
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(* MEM_printmemlist_stats)(void)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float2 fmod(const float2 a, const float b)
ccl_device_inline float3 ceil(const float3 a)
std::unique_ptr< IDProperty, IDPropertyDeleter > create_group(StringRefNull prop_name, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_GROUP.
bool asset_shelf_popover_invoke(bContext &C, blender::StringRef asset_shelf_idname, ReportList &reports)
vector snap(vector a, vector b)
float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value)
void RNA_property_int_ui_range(PointerRNA *ptr, PropertyRNA *prop, int *softmin, int *softmax, int *step)
bool RNA_property_array_check(PropertyRNA *prop)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
std::string RNA_pointer_as_string_id(bContext *C, PointerRNA *ptr)
void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
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)
PropertyUnit RNA_property_unit(PropertyRNA *prop)
bool RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index)
StructRNA * RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_property_is_set_ex(PointerRNA *ptr, PropertyRNA *prop, bool use_ghost)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
PropertyType RNA_property_type(PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
std::string RNA_pointer_as_string_keywords(bContext *C, PointerRNA *ptr, const bool as_function, const bool all_args, const bool nested_args, const int max_prop_length)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_flag(PropertyRNA *prop)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
float RNA_float_get(PointerRNA *ptr, const char *name)
int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_enum_description(const EnumPropertyItem *item, const int value, const char **r_description)
const char * RNA_property_ui_name(const PropertyRNA *prop)
void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
std::string RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_struct_idprops_unset(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
int RNA_enum_get(PointerRNA *ptr, const char *name)
std::string RNA_property_as_string(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index, int max_prop_length)
PropertyRNA * RNA_struct_iterator_property(StructRNA *type)
const char * RNA_property_identifier(const PropertyRNA *prop)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_string_search_func_runtime(PropertyRNA *prop, StringPropertySearchFunc search_fn, const eStringPropertySearchFlag search_flag)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_enum_flag(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
std::optional< std::string > RNA_path_from_ID_to_struct(const PointerRNA *ptr)
std::optional< std::string > RNA_path_full_property_py(const PointerRNA *ptr, PropertyRNA *prop, int index)
std::string RNA_path_property_py(const PointerRNA *ptr, PropertyRNA *prop, int index)
bool RNA_path_resolve(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
const EnumPropertyItem rna_enum_stereo3d_display_items[]
const EnumPropertyItem rna_enum_stereo3d_anaglyph_type_items[]
const EnumPropertyItem rna_enum_stereo3d_interlace_type_items[]
struct CurveMapping * curve
ImBufFloatBuffer float_buffer
char translation_context[BKE_ST_MAXNAME]
char label[BKE_ST_MAXNAME]
PointerRNA fill_col_override_test_ptr
ListBase orig_paintcursors
PropertyRNA * fill_col_override_test_prop
PropertyRNA * fill_col_override_prop
PointerRNA fill_col_override_ptr
PropertyRNA * fill_col_prop
StructRNA * image_id_srna
struct EditBone * act_edbone
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
bool(* check)(bContext *C, wmOperator *op)
std::string(* get_name)(wmOperatorType *ot, PointerRNA *ptr)
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
const char * translation_context
IDProperty * last_properties
void(* ui)(bContext *C, wmOperator *op)
void(* cancel)(bContext *C, wmOperator *op)
struct ReportList * reports
struct wmOperatorType * type
void(* draw)(bContext *C, int, int, void *customdata)
bool(* poll)(bContext *C)
void wm_operator_register(bContext *C, wmOperator *op)
void WM_operator_free(wmOperator *op)
void WM_cursor_wait(bool val)
void wm_draw_region_test(bContext *C, ScrArea *area, ARegion *region)
void wm_draw_update(bContext *C)
bool WM_event_drag_test_with_delta(const wmEvent *event, const int drag_delta[2])
void WM_event_drag_start_mval(const wmEvent *event, const ARegion *region, int r_mval[2])
int WM_userdef_event_type_from_keymap_type(int kmitype)
void WM_event_add_fileselect(bContext *C, wmOperator *op)
void wm_event_do_refresh_wm_and_depsgraph(bContext *C)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
int WM_operator_repeat(bContext *C, wmOperator *op)
int WM_operator_call_notest(bContext *C, wmOperator *op)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_operator_call_ex(bContext *C, wmOperator *op, const bool store)
#define ISMOUSE_MOTION(event_type)
@ GESTURE_MODAL_CIRCLE_SIZE
@ GESTURE_MODAL_CIRCLE_ADD
@ GESTURE_MODAL_CIRCLE_SUB
void WM_OT_read_history(wmOperatorType *ot)
void WM_OT_save_as_mainfile(wmOperatorType *ot)
void WM_OT_open_mainfile(wmOperatorType *ot)
void WM_OT_recover_last_session(wmOperatorType *ot)
void WM_OT_read_userpref(wmOperatorType *ot)
void WM_OT_save_homefile(wmOperatorType *ot)
void WM_OT_read_factory_userpref(wmOperatorType *ot)
void WM_OT_save_mainfile(wmOperatorType *ot)
void WM_OT_recover_auto_save(wmOperatorType *ot)
void WM_OT_read_factory_settings(wmOperatorType *ot)
void WM_OT_read_homefile(wmOperatorType *ot)
void WM_OT_save_userpref(wmOperatorType *ot)
void WM_OT_clear_recent_files(wmOperatorType *ot)
void WM_OT_revert_mainfile(wmOperatorType *ot)
void WM_OT_lib_relocate(wmOperatorType *ot)
void WM_OT_append(wmOperatorType *ot)
void WM_OT_lib_reload(wmOperatorType *ot)
void WM_OT_link(wmOperatorType *ot)
void GIZMOGROUP_OT_gizmo_select(wmOperatorType *ot)
void GIZMOGROUP_OT_gizmo_tweak(wmOperatorType *ot)
void wm_gizmos_keymap(wmKeyConfig *keyconf)
void wm_exit_schedule_delayed(const bContext *C)
bool WM_jobs_test(const wmWindowManager *wm, const void *owner, int job_type)
wmKeyMap * WM_modalkeymap_ensure(wmKeyConfig *keyconf, const char *idname, const EnumPropertyItem *items)
void WM_modalkeymap_assign(wmKeyMap *km, const char *opname)
wmKeyMap * WM_modalkeymap_find(wmKeyConfig *keyconf, const char *idname)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
void WM_keymap_fix_linking()
bool WM_operator_properties_id_lookup_is_set(PointerRNA *ptr)
ID * WM_operator_properties_id_lookup_from_name_or_session_uid(Main *bmain, PointerRNA *ptr, const ID_Type type)
std::string WM_operatortype_name(wmOperatorType *ot, PointerRNA *properties)
void WM_operatortype_append(void(*opfunc)(wmOperatorType *))
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
static uiBlock * wm_block_dialog_create(bContext *C, ARegion *region, void *user_data)
int WM_menu_invoke_ex(bContext *C, wmOperator *op, wmOperatorCallContext opcontext)
static uiBlock * wm_block_search_menu(bContext *C, ARegion *region, void *userdata)
static void WM_OT_call_menu_pie(wmOperatorType *ot)
static void gesture_box_modal_keymap(wmKeyConfig *keyconf)
#define CTX_TEST_PTR_ID_CAST(C, member, member_full, cast, idptr)
static void WM_OT_search_menu(wmOperatorType *ot)
#define ID_CAST_SCENEWORLD(id_pt)
const EnumPropertyItem * RNA_movieclip_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
int WM_operator_confirm_or_exec(bContext *C, wmOperator *op, const wmEvent *)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void WM_OT_doc_view_manual_ui_context(wmOperatorType *ot)
std::optional< std::string > WM_context_path_resolve_property_full(const bContext *C, const PointerRNA *ptr, PropertyRNA *prop, int index)
@ SEARCH_TYPE_SINGLE_MENU
int WM_operator_confirm(bContext *C, wmOperator *op, const wmEvent *)
int WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)
static bool wm_operator_winactive_not_full(bContext *C)
static void radial_control_paint_tex(RadialControl *rc, float radius, float alpha)
size_t WM_operator_py_idname(char *dst, const char *src)
static void redraw_timer_step(bContext *C, Scene *scene, Depsgraph *depsgraph, wmWindow *win, ScrArea *area, ARegion *region, const int type, const int cfra)
int WM_operator_redo_popup(bContext *C, wmOperator *op)
static void wm_block_redo_cancel_cb(bContext *C, void *arg_op)
static int wm_call_panel_exec(bContext *C, wmOperator *op)
static void gesture_straightline_modal_keymap(wmKeyConfig *keyconf)
static void radial_control_set_tex(RadialControl *rc)
static void gesture_zoom_border_modal_keymap(wmKeyConfig *keyconf)
static void radial_control_cancel(bContext *C, wmOperator *op)
static void previews_id_ensure(bContext *C, Scene *scene, ID *id)
static void dialog_cancel_cb(bContext *C, void *arg1, void *arg2)
int WM_operator_ui_popup(bContext *C, wmOperator *op, int width)
void wm_window_keymap(wmKeyConfig *keyconf)
static uiBlock * wm_enum_search_menu(bContext *C, ARegion *region, void *arg)
void WM_operator_last_properties_ensure(wmOperatorType *ot, PointerRNA *ptr)
int WM_operator_props_popup_call(bContext *C, wmOperator *op, const wmEvent *)
static void WM_OT_search_single_menu(wmOperatorType *ot)
static int radial_control_get_path(PointerRNA *ctx_ptr, wmOperator *op, const char *name, PointerRNA *r_ptr, PropertyRNA **r_prop, int req_length, RCPropFlags flags)
int WM_operator_props_popup_confirm_ex(bContext *C, wmOperator *op, const wmEvent *, std::optional< std::string > title, std::optional< std::string > confirm_text, const bool cancel_default)
static void WM_OT_memory_statistics(wmOperatorType *ot)
static const EnumPropertyItem * rna_id_itemf(bool *r_free, ID *id, bool local, bool(*filter_ids)(const ID *id, void *user_data), void *user_data)
#define CTX_TEST_PTR_ID(C, member, idptr)
static int radial_control_invoke(bContext *C, wmOperator *op, const wmEvent *event)
#define ID_CAST_OBDATA(id_pt)
static int wm_call_pie_menu_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int doc_view_manual_ui_context_exec(bContext *C, wmOperator *)
static void radial_control_update_header(wmOperator *op, bContext *C)
const EnumPropertyItem * RNA_mask_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
const EnumPropertyItem * RNA_collection_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
#define TEST_PTR_DATA_TYPE_FROM_CONTEXT(member, rna_type, rna_ptr)
size_t WM_operator_bl_idname(char *dst, const char *src)
void WM_operator_properties_reset(wmOperator *op)
static void WM_OT_debug_menu(wmOperatorType *ot)
static int previews_clear_exec(bContext *C, wmOperator *op)
#define ID_CAST_OBMATACT(id_pt)
static void gesture_lasso_modal_keymap(wmKeyConfig *keyconf)
static void WM_OT_radial_control(wmOperatorType *ot)
int WM_operator_confirm_message(bContext *C, wmOperator *op, const char *message)
static bool rna_id_enum_filter_single(const ID *id, void *user_data)
static void WM_OT_call_asset_shelf_popover(wmOperatorType *ot)
bool WM_operator_last_properties_store(wmOperator *op)
void WM_operator_properties_alloc(PointerRNA **ptr, IDProperty **properties, const char *opstring)
#define WM_RADIAL_CONTROL_DISPLAY_WIDTH
static int radial_control_modal(bContext *C, wmOperator *op, const wmEvent *event)
static int radial_control_get_properties(bContext *C, wmOperator *op)
const EnumPropertyItem * RNA_action_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
static int wm_exit_blender_invoke(bContext *C, wmOperator *, const wmEvent *)
static int wm_call_pie_menu_exec(bContext *C, wmOperator *op)
void WM_operator_view3d_unit_defaults(bContext *C, wmOperator *op)
static int wm_debug_menu_invoke(bContext *C, wmOperator *op, const wmEvent *)
static bool redraw_timer_poll(bContext *C)
static void WM_OT_call_menu(wmOperatorType *ot)
static int wm_call_menu_exec(bContext *C, wmOperator *op)
bool WM_operator_winactive(bContext *C)
static void wm_block_redo_cb(bContext *C, void *arg_op, int)
int WM_operator_smooth_viewtx_get(const wmOperator *op)
bool WM_operator_check_ui_enabled(const bContext *C, const char *idname)
bool WM_paint_cursor_end(wmPaintCursor *handle)
static int previews_id_ensure_callback(LibraryIDLinkCallbackData *cb_data)
void WM_paint_cursor_remove_by_type(wmWindowManager *wm, void *draw_fn, void(*free)(void *))
static int wm_exit_blender_exec(bContext *C, wmOperator *)
static std::optional< std::string > wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index)
const EnumPropertyItem * RNA_scene_local_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
int WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void WM_OT_redraw_timer(wmOperatorType *ot)
int WM_operator_filesel(bContext *C, wmOperator *op, const wmEvent *)
const EnumPropertyItem * RNA_movieclip_local_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
static void WM_OT_search_operator(wmOperatorType *ot)
static void radial_control_set_initial_mouse(RadialControl *rc, const wmEvent *event)
std::string WM_operator_pystring_ex(bContext *C, wmOperator *op, const bool all_args, const bool macro_args, wmOperatorType *ot, PointerRNA *opptr)
std::optional< std::string > WM_context_path_resolve_full(bContext *C, const PointerRNA *ptr)
static uiBlock * wm_block_create_redo(bContext *C, ARegion *region, void *arg_op)
static void WM_OT_previews_clear(wmOperatorType *ot)
int WM_operator_props_dialog_popup(bContext *C, wmOperator *op, int width, std::optional< std::string > title, std::optional< std::string > confirm_text, const bool cancel_default)
wmOperator * WM_operator_last_redo(const bContext *C)
static int wm_operator_props_popup_ex(bContext *C, wmOperator *op, const bool do_call, const bool do_redo, std::optional< std::string > title=std::nullopt, std::optional< std::string > confirm_text=std::nullopt, const bool cancel_default=false)
static bool wm_operator_winactive_normal(bContext *C)
const EnumPropertyItem * RNA_scene_without_active_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
void wm_operatortypes_register()
bool WM_operator_last_properties_init(wmOperator *op)
static void WM_OT_stereo3d_set(wmOperatorType *ot)
const EnumPropertyItem * RNA_mask_local_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
static void redraw_timer_window_swap(bContext *C)
bool WM_operator_filesel_ensure_ext_imtype(wmOperator *op, const ImageFormatData *im_format)
int WM_generic_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static std::string wm_call_panel_get_name(wmOperatorType *ot, PointerRNA *ptr)
bool WM_operator_bl_idname_is_valid(const char *idname)
static void WM_OT_call_panel(wmOperatorType *ot)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
const EnumPropertyItem * RNA_collection_local_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
static void WM_OT_quit_blender(wmOperatorType *ot)
static int memory_statistics_exec(bContext *, wmOperator *)
IDProperty * WM_operator_last_properties_ensure_idprops(wmOperatorType *ot)
static char g_search_text[256]
static std::string wm_call_menu_get_name(wmOperatorType *ot, PointerRNA *ptr)
static void wm_operator_ui_popup_ok(bContext *C, void *arg, int retval)
bool WM_operator_properties_default(PointerRNA *ptr, const bool do_update)
static int wm_search_menu_exec(bContext *, wmOperator *)
static const EnumPropertyItem preview_id_type_items[]
static void WM_OT_window_new_main(wmOperatorType *ot)
static bool operator_last_properties_init_impl(wmOperator *op, IDProperty *last_properties)
static int wm_operator_defaults_exec(bContext *C, wmOperator *op)
std::optional< std::string > WM_prop_pystring_assign(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index)
static void gesture_polyline_modal_keymap(wmKeyConfig *keyconf)
int WM_operator_confirm_message_ex(bContext *C, wmOperator *op, const char *title, const int icon, const char *message, const wmOperatorCallContext)
static void WM_OT_window_new(wmOperatorType *ot)
static int redraw_timer_exec(bContext *C, wmOperator *op)
void WM_operator_properties_clear(PointerRNA *ptr)
#define TEST_PTR_DATA_TYPE(member, rna_type, rna_ptr, dataptr_cmp)
static int wm_debug_menu_exec(bContext *C, wmOperator *op)
int WM_operator_props_popup_confirm(bContext *C, wmOperator *op, const wmEvent *)
int WM_generic_select_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void WM_OT_previews_ensure(wmOperatorType *ot)
static int previews_ensure_exec(bContext *C, wmOperator *)
static uint preview_filter_to_idfilter(enum PreviewFilterID filter)
int WM_operator_props_popup(bContext *C, wmOperator *op, const wmEvent *)
static const EnumPropertyItem redraw_timer_type_items[]
static void gesture_circle_modal_keymap(wmKeyConfig *keyconf)
std::string WM_operator_pystring(bContext *C, wmOperator *op, const bool all_args, const bool macro_args)
static void radial_control_set_value(RadialControl *rc, float val)
void WM_operator_properties_create(PointerRNA *ptr, const char *opstring)
static void WM_OT_window_fullscreen_toggle(wmOperatorType *ot)
static void dialog_exec_cb(bContext *C, void *arg1, void *arg2)
#define WM_RADIAL_CONTROL_DISPLAY_MIN_SIZE
static void radial_control_paint_curve(uint pos, Brush *br, float radius, int line_segments)
static int asset_shelf_popover_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void WM_OT_window_close(wmOperatorType *ot)
static const char * wm_context_member_from_ptr(const bContext *C, const PointerRNA *ptr, bool *r_is_id)
void WM_operator_properties_free(PointerRNA *ptr)
ID * WM_operator_drop_load_path(bContext *C, wmOperator *op, const short idcode)
wmPaintCursor * WM_paint_cursor_activate(short space_type, short region_type, bool(*poll)(bContext *C), wmPaintCursorDraw draw, void *customdata)
static void radial_control_paint_cursor(bContext *, int x, int y, void *customdata)
static void wm_operator_ui_popup_cancel(bContext *C, void *user_data)
@ PREVIEW_FILTER_GEOMETRY
@ PREVIEW_FILTER_MATERIAL
@ PREVIEW_FILTER_COLLECTION
void WM_operator_properties_sanitize(PointerRNA *ptr, const bool no_context)
bool WM_operator_py_idname_ok_or_report(ReportList *reports, const char *classname, const char *idname)
#define WM_RADIAL_MAX_STR
std::string WM_operator_pystring_abbreviate(std::string str, int str_len_max)
#define WM_RADIAL_CONTROL_DISPLAY_SIZE
const EnumPropertyItem * RNA_image_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
static uiBlock * wm_operator_ui_create(bContext *C, ARegion *region, void *user_data)
const EnumPropertyItem * RNA_scene_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
static int wm_search_menu_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void WM_OT_operator_defaults(wmOperatorType *ot)
const EnumPropertyItem * RNA_image_local_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
PanelType * WM_paneltype_find(const char *idname, bool quiet)
void WM_paneltype_idname_visit_for_search(const bContext *, PointerRNA *, PropertyRNA *, const char *, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn)
void WM_OT_splash_about(wmOperatorType *ot)
void WM_OT_splash(wmOperatorType *ot)
void wm_stereo3d_set_cancel(bContext *, wmOperator *op)
int wm_stereo3d_set_invoke(bContext *C, wmOperator *op, const wmEvent *)
int wm_stereo3d_set_exec(bContext *C, wmOperator *op)
bool wm_stereo3d_set_check(bContext *, wmOperator *)
void wm_stereo3d_set_draw(bContext *, wmOperator *op)
int wm_window_new_main_exec(bContext *C, wmOperator *op)
int wm_window_close_exec(bContext *C, wmOperator *)
int wm_window_fullscreen_toggle_exec(bContext *C, wmOperator *)
void wm_quit_with_optional_confirmation_prompt(bContext *C, wmWindow *win)
void wm_window_make_drawable(wmWindowManager *wm, wmWindow *win)
int wm_window_new_exec(bContext *C, wmOperator *op)
bScreen * WM_window_get_active_screen(const wmWindow *win)
void wm_xr_operatortypes_register()