123 if (id_type ==
ID_GD && obact && obact->
data ==
id) {
150 ebone->flag &= ~flag;
255 const char *propname)
271 StructRNA *struct_rna = ob ? &RNA_Object : &RNA_ObjectBase;
272 void *
data = ob ? (
void *)ob : (
void *)base;
281 ob_iter =
reinterpret_cast<Object *
>(ob_iter->id.next)) {
290 if (base_iter ==
nullptr) {
316 char *propname =
reinterpret_cast<char *
>(poin2);
325 Base *base =
reinterpret_cast<Base *
>(poin);
326 char *propname =
reinterpret_cast<char *
>(poin2);
375 if (base_or_object_prop) {
393 Collection *collection_iter = layer_collection ?
394 (collection ? layer_collection_iter->
collection :
nullptr) :
398 layer_collection_iter,
400 layer_or_collection_prop,
423 const bool value_cmp,
432 const Collection *collection_ensure_cmp = collection_cmp ? collection_cmp :
437 else if (collection_ensure == collection_ensure_cmp) {
443 if (value != value_cmp) {
450 if (value == value_cmp) {
459 Collection *collection_iter = layer_collection ?
460 (collection ? layer_collection_iter->
collection :
nullptr) :
466 layer_collection_cmp,
469 layer_or_collection_prop,
470 layer_collection_iter,
484 const char *propname,
488 const bool is_hide = strstr(propname,
"hide_") !=
nullptr;
496 bool was_isolated = (value == is_hide);
501 layer_or_collection_prop,
502 top_layer_collection,
510 top_layer_collection,
512 layer_or_collection_prop,
521 top_layer_collection,
523 layer_or_collection_prop,
532 layer_or_collection_prop,
537 if (layer_collection) {
546 while (lc_parent != layer_collection) {
576 const char *propname)
587 if (!
ELEM(
true, do_isolate, extend)) {
592 ID *
id = collection ? &collection->
id : &
scene->
id;
593 StructRNA *struct_rna = collection ? &RNA_Collection : &RNA_LayerCollection;
594 void *
data = collection ? (
void *)collection : (
void *)layer_collection;
602 if (layer_collection !=
nullptr) {
605 struct_rna = collection ? &RNA_Object : &RNA_ObjectBase;
614 layer_or_collection_prop,
623 layer_or_collection_prop,
642 char *propname =
reinterpret_cast<char *
>(poin2);
653 char *propname =
reinterpret_cast<char *
>(poin2);
655 C, layer_collection, layer_collection->
collection, propname);
665 char *propname =
reinterpret_cast<char *
>(poin2);
723 "Library path '%s' does not exist, correct this before saving",
729 "Library path '%s' is now valid, please reload the library",
738 switch (tselem->
type) {
759 char newname[
sizeof(ebone->
name)];
778 char newname[
sizeof(bone->name)];
784 BLI_strncpy(newname, bone->name,
sizeof(bone->name));
785 BLI_strncpy(bone->name, oldname,
sizeof(bone->name));
799 char newname[
sizeof(pchan->
name)];
810 bmain,
reinterpret_cast<bArmature *
>(ob->
data), oldname, newname);
841 &gpd->
layers, gpl,
"GP Layer",
'.', offsetof(
bGPDlayer, info),
sizeof(gpl->info));
854 char newname[
sizeof(view_layer->name)];
855 BLI_strncpy(newname, view_layer->name,
sizeof(view_layer->name));
856 BLI_strncpy(view_layer->name, oldname,
sizeof(view_layer->name));
1015 if (layer_collection !=
nullptr) {
1020 if (layer_collection) {
1022 layer_collection_ptr, collection_ptr, props, props_active);
1075 } restrict_offsets = {0};
1076 int restrict_column_offset = 0;
1125 ICON_RESTRICT_RENDER_OFF,
1126 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1135 TIP_(
"Use view layer for rendering"));
1151 Base *base = (te->directdata) ? (
Base *)te->directdata :
1160 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1171 TIP_(
"Temporarily hide in viewport\n"
1172 "* Shift to set children"));
1187 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1198 TIP_(
"Disable selection in viewport\n"
1199 "* Shift to set children"));
1212 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1223 TIP_(
"Globally disable in viewports\n"
1224 "* Shift to set children"));
1237 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1248 TIP_(
"Globally disable in renders\n"
1249 "* Shift to set children"));
1268 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1297 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1320 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1352 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1363 TIP_(
"Restrict visibility in the 3D View\n"
1364 "* Shift to set children"));
1375 ICON_RESTRICT_SELECT_OFF,
1376 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1385 TIP_(
"Restrict selection in the 3D View\n"
1386 "* Shift to set children"));
1401 ICON_RESTRICT_VIEW_OFF,
1402 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1411 TIP_(
"Restrict visibility in the 3D View\n"
1412 "* Shift to set children"));
1423 ICON_RESTRICT_SELECT_OFF,
1424 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1433 TIP_(
"Restrict selection in the 3D View\n"
1434 "* Shift to set children"));
1441 ID *
id = tselem->
id;
1450 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1459 TIP_(
"Restrict visibility in the 3D View"));
1471 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1480 TIP_(
"Restrict editing of strokes and keyframes in this layer"));
1490 scene, te, &collection_ptr, &layer_collection_ptr, &props, &props_active)) {
1498 if (layer_collection !=
nullptr) {
1504 (
int)(region->
v2d.
cur.
xmax) - restrict_offsets.enable,
1508 &layer_collection_ptr,
1524 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1528 &layer_collection_ptr,
1535 TIP_(
"Temporarily hide in viewport\n"
1536 "* Ctrl to isolate collection\n"
1537 "* Shift to set inside collections and objects"));
1541 (
char *)
"hide_viewport");
1553 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.holdout),
1557 &layer_collection_ptr,
1564 TIP_(
"Mask out objects in collection from view layer\n"
1565 "* Ctrl to isolate collection\n"
1566 "* Shift to set inside collections"));
1583 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.indirect_only),
1587 &layer_collection_ptr,
1594 TIP_(
"Objects in collection only contribute indirectly (through shadows and "
1595 "reflections) in the view layer\n"
1596 "* Ctrl to isolate collection\n"
1597 "* Shift to set inside collections"));
1601 (
char *)
"indirect_only");
1615 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1626 TIP_(
"Globally disable in viewports\n"
1627 "* Ctrl to isolate collection\n"
1628 "* Shift to set inside collections and objects"));
1629 if (layer_collection !=
nullptr) {
1633 (
char *)
"hide_viewport");
1639 (
char *)
"hide_viewport");
1652 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1663 TIP_(
"Globally disable in renders\n"
1664 "* Ctrl to isolate collection\n"
1665 "* Shift to set inside collections and objects"));
1666 if (layer_collection !=
nullptr) {
1670 (
char *)
"hide_render");
1687 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1698 TIP_(
"Disable selection in viewport\n"
1699 "* Ctrl to isolate collection\n"
1700 "* Shift to set inside collections and objects"));
1701 if (layer_collection !=
nullptr) {
1705 (
char *)
"hide_select");
1723 scene, te, &collection_ptr, &layer_collection_ptr, &props, &props_active);
1728 block,
scene, view_layer, region, space_outliner, &te->subtree, props_active);
1748 ID *
id = tselem->id;
1749 const char *tip =
nullptr;
1771 TIP_(
"Number of users of this data-block"));
1775 tip =
TIP_(
"Data-block will be retained using a fake user");
1778 tip =
TIP_(
"Data-block has no users and will be deleted");
1807 const float pad_y = 0.5f *
U.pixelsize;
1822 if (!override_elem) {
1846 tree_element_cast<TreeElementOverridesPropertyOperation>(te)) {
1847 StringRefNull op_label = override_op_elem->getOverrideOperationLabel();
1873 (prop_type ==
PROP_ENUM) ?
nullptr :
"",
1889 block,
ptr, prop, ICON_NONE,
x + pad_x, te->ys + pad_y, item_max_width, item_height);
1898 if (!idptr_a || !idptr_b) {
1901 const ID *id_a = (
const ID *)idptr_a->
data;
1902 const ID *id_b = (
const ID *)idptr_b->
data;
1924 TreeElementID *te_id = tree_element_cast<TreeElementID>(te);
1937 const BIFIconID icon = is_system_override ? ICON_LIBRARY_DATA_OVERRIDE_NONEDITABLE :
1938 ICON_LIBRARY_DATA_OVERRIDE;
1941 "ED_OT_lib_id_override_editable_toggle",
1993 ptr = te_rna_prop->getPointerRNA();
1994 prop = te_rna_prop->getPropertyRNA();
2037 tree_element_cast<TreeElementRNAArrayElement>(te)) {
2038 ptr = te_rna_array_elem->getPointerRNA();
2039 prop = te_rna_array_elem->getPropertyRNA();
2058 const float restrict_column_width,
2077 len =
sizeof(((
Library *)
nullptr)->filepath);
2127 const bool object_data_shared = (ob->
data == tvc.
obact->
data);
2138 const bool lock_object_modes)
2154 if (ob->
type != ob_active->type) {
2158 bool draw_active_icon = ob->
mode == ob_active->mode;
2164 if (!lock_object_modes && ob != ob_active && !(tvc->
ob_edit || tvc->
ob_pose)) {
2165 draw_active_icon =
false;
2168 const bool object_data_shared = (ob->
data == ob_active->data);
2169 draw_active_icon = draw_active_icon || object_data_shared;
2173 if (draw_active_icon) {
2175 tip = object_data_shared ?
TIP_(
"Change the object in the current mode") :
2176 TIP_(
"Remove from the current mode");
2181 "Change the object in the current mode\n"
2182 "* Ctrl to add to the current mode");
2219 outliner_draw_mode_column_toggle(block, tvc, te, lock_object_modes);
2265 const bool use_mode_column,
2269 const short mode_column_offset = (use_mode_column && (space_outliner->
outlinevis ==
SO_SCENES)) ?
2287 warning_msg.
c_str());
2294 const bool use_mode_column)
2303 block, space_outliner, warning_msg, use_mode_column, te->
ys);
2320 return ICON_OUTLINER_OB_LIGHT;
2322 return ICON_OUTLINER_OB_MESH;
2324 return ICON_OUTLINER_OB_CAMERA;
2326 return ICON_OUTLINER_OB_CURVE;
2328 return ICON_OUTLINER_OB_META;
2330 return ICON_OUTLINER_OB_LATTICE;
2332 return ICON_OUTLINER_OB_ARMATURE;
2334 return ICON_OUTLINER_OB_FONT;
2336 return ICON_OUTLINER_OB_SURFACE;
2338 return ICON_OUTLINER_OB_SPEAKER;
2340 return ICON_OUTLINER_OB_LIGHTPROBE;
2342 return ICON_OUTLINER_OB_CURVES;
2344 return ICON_OUTLINER_OB_POINTCLOUD;
2346 return ICON_OUTLINER_OB_VOLUME;
2349 return ICON_OUTLINER_OB_GROUP_INSTANCE;
2352 return ICON_OUTLINER_OB_IMAGE;
2355 return ICON_OUTLINER_OB_FORCE_FIELD;
2358 return ICON_OUTLINER_OB_EMPTY;
2361 return ICON_OUTLINER_OB_GREASEPENCIL;
2372 return ICON_SCENE_DATA;
2374 return ICON_OUTLINER_DATA_MESH;
2381 return ICON_OUTLINER_DATA_FONT;
2383 return ICON_OUTLINER_DATA_SURFACE;
2385 return ICON_OUTLINER_DATA_CURVE;
2390 return ICON_OUTLINER_DATA_META;
2392 return ICON_OUTLINER_DATA_LATTICE;
2397 return ICON_LIGHT_POINT;
2399 return ICON_LIGHT_SUN;
2401 return ICON_LIGHT_SPOT;
2403 return ICON_LIGHT_AREA;
2405 return ICON_OUTLINER_DATA_LIGHT;
2409 return ICON_MATERIAL_DATA;
2411 return ICON_TEXTURE_DATA;
2413 return ICON_IMAGE_DATA;
2416 return ICON_OUTLINER_DATA_SPEAKER;
2418 return ICON_OUTLINER_DATA_ARMATURE;
2420 return ICON_OUTLINER_DATA_CAMERA;
2422 return ICON_SHAPEKEY_DATA;
2424 return ICON_WORLD_DATA;
2432 return ICON_FILE_TEXT;
2438 return ICON_OUTLINER_COLLECTION;
2440 return ICON_OUTLINER_DATA_CURVES;
2442 return ICON_OUTLINER_DATA_POINTCLOUD;
2444 return ICON_OUTLINER_DATA_VOLUME;
2447 return ICON_LIBRARY_DATA_BROKEN;
2449 else if (((
Library *)
id)->parent) {
2450 return ICON_LIBRARY_DATA_INDIRECT;
2453 return ICON_LIBRARY_DATA_DIRECT;
2456 return ICON_LINE_DATA;
2458 return ICON_OUTLINER_DATA_GREASEPENCIL;
2463 return ICON_LIGHTPROBE_CUBEMAP;
2465 return ICON_LIGHTPROBE_PLANAR;
2467 return ICON_LIGHTPROBE_GRID;
2469 return ICON_LIGHTPROBE_CUBEMAP;
2473 return ICON_BRUSH_DATA;
2476 return ICON_WORKSPACE;
2478 return ICON_MOD_MASK;
2485 return ICON_SEQUENCE;
2487 return ICON_CURVE_BEZCURVE;
2490 return ICON_PHYSICS;
2501 switch (tselem->
type) {
2503 data.icon = ICON_ANIM_DATA;
2506 data.icon = ICON_NLA;
2509 data.icon = ICON_NLA;
2512 data.icon = ICON_ACTION;
2515 data.icon = ICON_DRIVER;
2518 data.icon = ICON_GROUP_VERTEX;
2521 data.icon = ICON_GROUP_VERTEX;
2525 data.icon = ICON_BONE_DATA;
2528 data.icon = ICON_CONSTRAINT;
2529 data.drag_id = tselem->
id;
2533 data.drag_id = tselem->
id;
2536 data.icon = ICON_CON_CAMERASOLVER;
2539 data.icon = ICON_CON_FOLLOWTRACK;
2542 data.icon = ICON_CON_OBJECTSOLVER;
2545 data.icon = ICON_CON_LOCLIKE;
2548 data.icon = ICON_CON_ROTLIKE;
2551 data.icon = ICON_CON_SIZELIKE;
2554 data.icon = ICON_CON_TRANSLIKE;
2557 data.icon = ICON_CON_DISTLIMIT;
2560 data.icon = ICON_CON_LOCLIMIT;
2563 data.icon = ICON_CON_ROTLIMIT;
2566 data.icon = ICON_CON_SIZELIMIT;
2569 data.icon = ICON_CON_SAMEVOL;
2572 data.icon = ICON_CON_TRANSFORM;
2575 data.icon = ICON_CON_TRANSFORM_CACHE;
2578 data.icon = ICON_CON_CLAMPTO;
2581 data.icon = ICON_CON_TRACKTO;
2584 data.icon = ICON_CON_KINEMATIC;
2587 data.icon = ICON_CON_LOCKTRACK;
2590 data.icon = ICON_CON_SPLINEIK;
2593 data.icon = ICON_CON_STRETCHTO;
2596 data.icon = ICON_CON_TRACKTO;
2599 data.icon = ICON_CON_ACTION;
2602 data.icon = ICON_CON_ARMATURE;
2605 data.icon = ICON_CON_CHILDOF;
2608 data.icon = ICON_CON_FLOOR;
2611 data.icon = ICON_CON_FOLLOWPATH;
2614 data.icon = ICON_CON_PIVOT;
2617 data.icon = ICON_CON_SHRINKWRAP;
2621 data.icon = ICON_DOT;
2627 data.icon = ICON_MODIFIER_DATA;
2628 data.drag_id = tselem->
id;
2636 data.icon = ICON_LIBRARY_DATA_OVERRIDE;
2639 data.icon = ICON_OBJECT_DATA;
2642 data.icon = ICON_PARTICLES;
2646 data.drag_id = tselem->
id;
2653 if (modifier_type !=
nullptr) {
2657 data.icon = ICON_DOT;
2666 data.icon = ICON_MOD_NOISE;
2669 data.icon = ICON_MOD_SUBSURF;
2672 data.icon = ICON_MOD_THICKNESS;
2675 data.icon = ICON_MOD_TINT;
2678 data.icon = ICON_MOD_ARRAY;
2681 data.icon = ICON_MOD_BUILD;
2684 data.icon = ICON_MOD_MASK;
2687 data.icon = ICON_MOD_HUE_SATURATION;
2690 data.icon = ICON_MOD_LATTICE;
2693 data.icon = ICON_MOD_MIRROR;
2696 data.icon = ICON_MOD_SIMPLIFY;
2699 data.icon = ICON_MOD_SMOOTH;
2702 data.icon = ICON_HOOK;
2705 data.icon = ICON_MOD_OFFSET;
2708 data.icon = ICON_MOD_ARMATURE;
2711 data.icon = ICON_GP_MULTIFRAME_EDITING;
2714 data.icon = ICON_MOD_TIME;
2717 data.icon = ICON_TEXTURE;
2720 data.icon = ICON_MOD_VERTEX_WEIGHT;
2723 data.icon = ICON_MOD_VERTEX_WEIGHT;
2726 data.icon = ICON_MOD_SHRINKWRAP;
2731 data.icon = ICON_DOT;
2738 data.icon = ICON_ARMATURE_DATA;
2741 data.icon = ICON_BONE_DATA;
2744 data.icon = ICON_RENDERLAYERS;
2747 data.icon = ICON_OUTLINER_OB_GROUP_INSTANCE;
2750 data.icon = ICON_RENDER_RESULT;
2754 data.icon = ICON_GROUP_BONE;
2759 data.icon = ICON_SCENE_DATA;
2762 data.icon = ICON_TRACKER;
2765 data.icon = ICON_MOD_MASK;
2768 data.icon = ICON_FILE_MOVIE;
2771 data.icon = ICON_SOUND;
2774 data.icon = ICON_FILE_IMAGE;
2778 data.icon = ICON_COLOR;
2781 data.icon = ICON_FONT_DATA;
2795 data.icon = ICON_SHADERFX;
2800 data.icon = ICON_ARROW_LEFTRIGHT;
2803 data.icon = ICON_SEQ_STRIP_META;
2806 data.icon = ICON_DOT;
2811 data.icon = ICON_LIBRARY_DATA_DIRECT;
2814 data.icon = ICON_SEQ_STRIP_DUPLICATE;
2834 data.drag_id = tselem->
id;
2838 data.icon = ICON_OUTLINER_COLLECTION;
2842 data.icon = ICON_OUTLINER_DATA_GP_LAYER;
2847 data.drag_id = tselem->
id;
2848 data.icon = ICON_SHADERFX;
2851 data.icon = ICON_DOT;
2855 else if (tselem->
id) {
2856 data.drag_id = tselem->
id;
2881 const bool is_clickable)
2884 if (
data.icon == 0) {
2891 if (!is_clickable ||
x >= xmax || is_collection) {
2897 if (is_collection) {
2952 const int num_elements)
2954 const float color[4] = {0.0f, 0.0f, 0.0f, 1.0f};
2974 fstyle_small.
points *= 0.8f;
2978 char number_text[4] =
"+99";
2979 if (num_elements < 100) {
2980 BLI_snprintf(number_text,
sizeof(number_text),
"%d", num_elements);
2981 num_digits = num_elements < 10 ? 1 : 2;
2984 (offset_x + ufac +
UI_UNIT_X * (2 - num_digits) * 0.12f),
2998 icon_color[3] = 0.4f;
3000 icon_border[3] = 0.2f;
3008 const float icon_color[4],
3009 const float icon_border[4])
3030 const int num_elements)
3035 float icon_color[4], icon_border[4];
3039 icon_border[3] = 0.3f;
3053 tselem_draw_icon(block, xmax, (
float)*offsx, (
float)ys, tselem, te, alpha_fac,
false);
3058 if (num_elements > 1) {
3102 bool in_bone_hierarchy,
3117 (in_bone_hierarchy && is_bone)) {
3120 if (te->idcode ==
ID_OB) {
3163 const bool is_root_level_bone = is_bone && (level == 0);
3164 in_bone_hierarchy |= is_root_level_bone;
3166 in_bone_hierarchy) {
3191 for (
int j = 0; j < num_subtypes; j++) {
3192 const int index = index_base + j;
3214 if ((te->flag & TE_ICONROW) == 0 && (te->flag & TE_ICONROW_MERGED) == 0) {
3241 switch (tselem->
type) {
3246 return !is_visible || is_excluded;
3264 bool draw_grayed_out,
3267 const float restrict_column_width,
3274 uchar text_color[4];
3276 float icon_bgcolor[4], icon_border[4];
3288 if (restrict_column_width > 0) {
3289 xmax -= restrict_column_width +
UI_UNIT_X;
3300 const bool is_selected = (base !=
nullptr) && ((base->flag &
BASE_SELECTED) != 0);
3302 if (ob == tvc->
obact) {
3307 if (ob == tvc->
obact) {
3310 text_color[3] = 255;
3315 text_color[3] = 255;
3322 icon_border[3] = 0.3f;
3328 icon_bgcolor[3] = 0.2f;
3341 (
float)startx + offsx + 2.0f *
UI_UNIT_X,
3355 int icon_x = startx;
3360 (
float)*starty + 1 * ufac,
3361 ICON_DISCLOSURE_TRI_DOWN,
3366 (
float)*starty + 1 * ufac,
3367 ICON_DISCLOSURE_TRI_RIGHT,
3377 (
float)startx + offsx,
3393 if (lib_icon != ICON_NONE) {
3395 (
float)startx + offsx + 2 * ufac, (
float)*starty + 2 * ufac, lib_icon, alpha_fac);
3405 text_color[3] = 255;
3407 text_color[3] *= alpha_fac;
3421 int tempx = startx + offsx;
3448 te->
xend = startx + offsx;
3456 bool draw_children_grayed_out = draw_grayed_out || (ten->flag &
TE_DRAGGING);
3464 draw_children_grayed_out,
3467 restrict_column_width,
3489 const uint pos,
const int x,
const int y1,
const int y2,
const bool draw_dashed)
3492 const short line_padding =
UI_UNIT_Y / 4.0f;
3495 immUniform1f(
"dash_factor", draw_dashed ? 0.5f : 1.0f);
3510 bool draw_grayed_out,
3517 bool draw_hierarchy_line;
3518 bool is_object_line;
3521 draw_hierarchy_line =
false;
3522 is_object_line =
false;
3529 draw_hierarchy_line =
true;
3538 draw_hierarchy_line =
true;
3539 is_object_line =
true;
3545 pos, space_outliner, &te->subtree, startx +
UI_UNIT_X,
col, draw_grayed_out, starty);
3548 if (draw_hierarchy_line) {
3572 float viewport_size[4];
3631 const float col_selection[4],
3632 const float col_active[4],
3633 const float col_highlight[4],
3634 const float col_searchmatch[4],
3644 const int start_y = *io_start_y;
3675 immRecti(
pos, start_x, start_y -
U.pixelsize, end_x, start_y +
U.pixelsize);
3706 const float col_highlight[4] = {1.0f, 1.0f, 1.0f, 0.13f};
3707 float col_selection[4], col_active[4], col_searchmatch[4];
3710 col_selection[3] = 1.0f;
3712 col_active[3] = 1.0f;
3714 col_searchmatch[3] = 0.5f;
3738 const float right_column_width,
3739 const bool use_mode_column,
3740 const bool use_warning_column,
3754 if (use_warning_column) {
3772 int scissor[4] = {0};
3773 if (right_column_width > 0.0f) {
3783 startx = columns_offset +
UI_UNIT_X / 2 - (
U.pixelsize + 1) / 2;
3788 startx = columns_offset;
3804 if (right_column_width > 0.0f) {
3822 float col_alternating[4];
3827 float y1 = ystart, y2;
3855 float right_column_width)
3860 return max_tree_width + right_column_width;
3867 float right_column_width)
3869 int sizex =
outliner_width(space_outliner, tree_width, right_column_width);
3870 int sizey = tree_height;
3939 int tree_width, tree_height;
3960 const int x = region->
v2d.
cur.
xmax - right_column_width;
3970 mainvar, block, region, space_outliner, &space_outliner->
tree,
x);
3973 else if (right_column_width > 0.0f) {
3982 &space_outliner->
tree,
3987 if (use_mode_column) {
3992 if (use_warning_column) {
4008 region, space_outliner, tree_width, tree_height, right_column_width);
typedef float(TangentPoint)[2]
bool BKE_collection_has_collection(const struct Collection *parent, const struct Collection *collection)
struct Scene * CTX_data_scene(const bContext *C)
struct SpaceOutliner * CTX_wm_space_outliner(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct ReportList * CTX_wm_reports(const bContext *C)
struct wmMsgBus * CTX_wm_message_bus(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
short BKE_curve_type_get(const struct Curve *cu)
void BKE_gpencil_layer_active_set(struct bGPdata *gpd, struct bGPDlayer *active)
int BKE_idtype_idcode_to_index(short idcode)
void BKE_view_layer_rename(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, const char *name)
bool BKE_layer_collection_has_layer_collection(struct LayerCollection *lc_parent, struct LayerCollection *lc_child)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
void BKE_layer_collection_sync(const struct Scene *scene, struct ViewLayer *view_layer)
void BKE_main_collection_sync_remap(const struct Main *bmain)
void id_us_min(struct ID *id)
void id_us_plus(struct ID *id)
void BLI_libblock_ensure_unique_name(struct Main *bmain, const char *name) ATTR_NONNULL()
bool BKE_lib_override_library_is_system_defined(const struct Main *bmain, const struct ID *id)
void BKE_library_filepath_set(struct Main *bmain, struct Library *lib, const char *filepath)
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
void BKE_main_namemap_remove_name(struct Main *bmain, struct ID *id, const char *name) ATTR_NONNULL()
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
General operations, lookup, etc. for blender objects.
bool BKE_object_is_child_recursive(const struct Object *ob_parent, const struct Object *ob_child)
bool BKE_object_data_is_in_editmode(const struct Object *ob, const struct ID *id)
struct ParticleSystem * psys_get_current(struct Object *ob)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
MINLINE int max_ii(int a, int b)
MINLINE void copy_v3_v3(float r[3], const float a[3])
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
size_t BLI_str_format_int_grouped(char dst[16], int num) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_len)
#define BLT_I18NCONTEXT_ID_ACTION
#define CTX_DATA_(context, msgid)
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ ID_RECALC_COPY_ON_WRITE
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_LINKED(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ IDOVERRIDE_LIBRARY_FLAG_SYSTEM_DEFINED
Object groups, one object can be in many groups at once.
@ CONSTRAINT_TYPE_TRACKTO
@ CONSTRAINT_TYPE_CHILDOF
@ CONSTRAINT_TYPE_TRANSFORM
@ CONSTRAINT_TYPE_FOLLOWTRACK
@ CONSTRAINT_TYPE_OBJECTSOLVER
@ CONSTRAINT_TYPE_ARMATURE
@ CONSTRAINT_TYPE_LOCLIKE
@ CONSTRAINT_TYPE_SHRINKWRAP
@ CONSTRAINT_TYPE_ROTLIMIT
@ CONSTRAINT_TYPE_CAMERASOLVER
@ CONSTRAINT_TYPE_ROTLIKE
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_KINEMATIC
@ CONSTRAINT_TYPE_DISTLIMIT
@ CONSTRAINT_TYPE_TRANSLIKE
@ CONSTRAINT_TYPE_LOCLIMIT
@ CONSTRAINT_TYPE_CLAMPTO
@ CONSTRAINT_TYPE_LOCKTRACK
@ CONSTRAINT_TYPE_SIZELIMIT
@ CONSTRAINT_TYPE_FOLLOWPATH
@ CONSTRAINT_TYPE_STRETCHTO
@ CONSTRAINT_TYPE_SIZELIKE
@ CONSTRAINT_TYPE_SAMEVOL
@ CONSTRAINT_TYPE_DAMPTRACK
@ CONSTRAINT_TYPE_TRANSFORM_CACHE
@ eGpencilModifierType_Array
@ eGpencilModifierType_Noise
@ eGpencilModifierType_Mirror
@ eGpencilModifierType_Color
@ eGpencilModifierType_Multiply
@ eGpencilModifierType_Texture
@ eGpencilModifierType_Subdiv
@ eGpencilModifierType_Lattice
@ eGpencilModifierType_Opacity
@ eGpencilModifierType_Hook
@ eGpencilModifierType_Simplify
@ eGpencilModifierType_Shrinkwrap
@ eGpencilModifierType_WeightProximity
@ eGpencilModifierType_Armature
@ eGpencilModifierType_WeightAngle
@ eGpencilModifierType_Smooth
@ eGpencilModifierType_Tint
@ eGpencilModifierType_Time
@ eGpencilModifierType_Thick
@ eGpencilModifierType_Build
@ eGpencilModifierType_Offset
#define GPENCIL_EDIT_MODE(gpd)
@ LAYER_COLLECTION_EXCLUDE
@ LAYER_COLLECTION_VISIBLE_VIEW_LAYER
Object is a sort of wrapper for general info.
#define OB_DATA_SUPPORT_EDITMODE(_type)
@ TSE_LIBRARY_OVERRIDE_OPERATION
@ TSE_VIEW_COLLECTION_BASE
@ TSE_LIBRARY_OVERRIDE_BASE
@ TSE_SCENE_COLLECTION_BASE
@ TSE_GPENCIL_EFFECT_BASE
@ SO_LIB_OVERRIDE_VIEW_HIERARCHIES
@ SO_LIB_OVERRIDE_VIEW_PROPERTIES
@ SO_RESTRICT_INDIRECT_ONLY
int ED_file_extension_icon(const char *path)
void ED_outliner_select_sync_flag_outliners(const struct bContext *C)
bool ED_outliner_select_sync_is_dirty(const struct bContext *C)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble x2
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
@ GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
void GPU_scissor(int x, int y, int width, int height)
void GPU_viewport_size_get_f(float coords[4])
void GPU_scissor_get(int coords[4])
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 Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input 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 a color
void UI_but_flag_disable(uiBut *but, int flag)
void UI_but_disable(uiBut *but, const char *disabled_hint)
@ UI_EMBOSS_NONE_OR_STATUS
void UI_fontstyle_set(const struct uiFontStyle *fs)
uiBut * uiDefIconBut(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, float a1, float a2, const char *tip)
const struct PointerRNA * UI_but_context_ptr_get(const uiBut *but, const char *name, const StructRNA *type CPP_ARG_DEFAULT(nullptr))
uiBut * uiDefBut(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, void *poin, float min, float max, float a1, float a2, const char *tip)
uiBut * uiDefAutoButR(uiBlock *block, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, const char *name, int icon, int x, int y, int width, int height)
uiBut * uiDefIconButR_prop(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, float min, float max, float a1, float a2, const char *tip)
void UI_fontstyle_draw_simple(const struct uiFontStyle *fs, float x, float y, const char *str, const uchar col[4])
void UI_but_drawflag_enable(uiBut *but, int flag)
void uiDefAutoButsArrayR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, const int icon, const int x, const int y, const int tot_width, const int height)
void UI_draw_roundbox_corner_set(int type)
void UI_but_func_identity_compare_set(uiBut *but, uiButIdentityCompareFunc cmp_fn)
uiBut * uiDefIconButBitS(uiBlock *block, int type, int bit, int retval, int icon, int x, int y, short width, short height, short *poin, float min, float max, float a1, float a2, const char *tip)
void UI_block_end(const struct bContext *C, uiBlock *block)
void UI_block_emboss_set(uiBlock *block, eUIEmbossType emboss)
void UI_block_draw(const struct bContext *C, struct uiBlock *block)
bool UI_but_active_only(const struct bContext *C, struct ARegion *region, uiBlock *block, uiBut *but)
void UI_but_func_rename_set(uiBut *but, uiButHandleRenameFunc func, void *arg1)
void UI_but_func_set(uiBut *but, uiButHandleFunc func, void *arg1, void *arg2)
void UI_draw_roundbox_aa(const struct rctf *rect, bool filled, float rad, const float color[4])
uiBlock * UI_block_begin(const struct bContext *C, struct ARegion *region, const char *name, eUIEmbossType emboss)
void UI_block_flag_enable(uiBlock *block, int flag)
uiBut * uiDefIconButBitI(uiBlock *block, int type, int bit, int retval, int icon, int x, int y, short width, short height, int *poin, float min, float max, float a1, float a2, const char *tip)
void UI_but_context_ptr_set(uiBlock *block, uiBut *but, const char *name, const struct PointerRNA *ptr)
void UI_but_flag_enable(uiBut *but, int flag)
int UI_fontstyle_string_width(const struct uiFontStyle *fs, const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
uiBut * uiDefIconButO(uiBlock *block, int type, const char *opname, wmOperatorCallContext opcontext, int icon, int x, int y, short width, short height, const char *tip)
@ UI_BLOCK_NO_DRAW_OVERRIDDEN_STATE
#define ICON_DEFAULT_HEIGHT
bool UI_icon_get_theme_color(int icon_id, unsigned char color[4])
void UI_icon_draw_alpha(float x, float y, int icon_id, float alpha)
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], bool mono_border)
int UI_icon_from_library(const struct ID *id)
int UI_icon_from_object_mode(int mode)
void UI_GetThemeColor3fv(int colorid, float col[3])
void UI_GetThemeColorBlend3ubv(int colorid1, int colorid2, float fac, unsigned char col[3])
void UI_GetThemeColor3ubv(int colorid, unsigned char col[3])
struct bTheme * UI_GetTheme(void)
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
#define V2D_SCROLL_HEIGHT
void UI_view2d_totRect_set(struct View2D *v2d, int width, int height)
void UI_view2d_view_ortho(const struct View2D *v2d)
#define ND_RENDER_OPTIONS
#define ND_SPACE_OUTLINER
void ED_armature_bone_rename(Main *bmain, bArmature *arm, const char *oldnamep, const char *newnamep)
bool ED_armature_ebone_is_child_recursive(EditBone *ebone_parent, EditBone *ebone_child)
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
constexpr bool is_empty() const
constexpr const char * c_str() const
virtual StringRefNull getWarning() const
PointerRNA override_rna_ptr
PropertyRNA & override_rna_prop
const PointerRNA & getPointerRNA() const
bool active
all scheduled work for the GPU.
void all_open(const SpaceOutliner &space_outliner, const VisitorFn visitor)
void all(const SpaceOutliner &space_outliner, const VisitorFn visitor)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
Collection * outliner_collection_from_tree_element(const TreeElement *te)
bool outliner_is_collection_tree_element(const TreeElement *te)
static void scenes__collection_set_flag_recursive_fn(bContext *C, void *poin, void *poin2)
static void outliner_draw_hierarchy_lines_recursive(uint pos, SpaceOutliner *space_outliner, ListBase *lb, int startx, const uchar col[4], bool draw_grayed_out, int *starty)
static void outliner_draw_overrides_rna_buts(uiBlock *block, const ARegion *region, const SpaceOutliner *space_outliner, const ListBase *lb, const int x)
static void outliner_update_viewable_area(ARegion *region, SpaceOutliner *space_outliner, int tree_width, int tree_height, float right_column_width)
static void outliner_draw_userbuts(uiBlock *block, const ARegion *region, const SpaceOutliner *space_outliner)
static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ViewLayer *view_layer, ARegion *region, SpaceOutliner *space_outliner, ListBase *lb, RestrictPropertiesActive props_active_parent)
static void outliner_draw_mode_column(uiBlock *block, TreeViewContext *tvc, SpaceOutliner *space_outliner)
static void outliner_draw_warning_column(uiBlock *block, const SpaceOutliner *space_outliner, const bool use_mode_column)
static void outliner_restrict_properties_enable_collection_set(PointerRNA *collection_ptr, RestrictProperties *props, RestrictPropertiesActive *props_active)
static StringRefNull outliner_draw_get_warning_tree_element(const SpaceOutliner &space_outliner, const TreeElement *te)
static void outliner_icon_background_colors(float icon_color[4], float icon_border[4])
static void outliner_draw_active_indicator(const float minx, const float miny, const float maxx, const float maxy, const float icon_color[4], const float icon_border[4])
static void outliner_back(ARegion *region)
static void restrictbutton_ebone_select_fn(bContext *C, void *poin, void *poin2)
static BIFIconID tree_element_get_icon_from_id(const ID *id)
static int outliner_data_api_buttons_start_x(int max_tree_width)
static void outliner_draw_highlights(uint pos, const ARegion *region, const SpaceOutliner *space_outliner, const float col_selection[4], const float col_active[4], const float col_highlight[4], const float col_searchmatch[4], int start_x, int *io_start_y)
static bool element_should_draw_faded(const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
static void outliner_set_subtree_coords(const TreeElement *te)
static void outliner_collection_set_flag_recursive_fn(bContext *C, LayerCollection *layer_collection, Collection *collection, const char *propname)
static void outliner__base_set_flag_recursive_fn(bContext *C, void *poin, void *poin2)
static void outliner_draw_tree_element(bContext *C, uiBlock *block, const uiFontStyle *fstyle, const TreeViewContext *tvc, ARegion *region, SpaceOutliner *space_outliner, TreeElement *te, bool draw_grayed_out, int startx, int *starty, const float restrict_column_width, TreeElement **te_edit)
static bool subtree_contains_object(ListBase *lb)
static void outliner_draw_struct_marks(ARegion *region, SpaceOutliner *space_outliner, ListBase *lb, int *starty)
static void outliner_draw_hierarchy_line(const uint pos, const int x, const int y1, const int y2, const bool draw_dashed)
static StringRefNull outliner_draw_get_warning_tree_element_subtree(const TreeElement *parent_te)
static void outliner_draw_iconrow_number(const uiFontStyle *fstyle, int offsx, int ys, const int num_elements)
int tree_element_id_type_to_index(TreeElement *te)
static void outliner_restrict_properties_enable_layer_collection_set(PointerRNA *layer_collection_ptr, PointerRNA *collection_ptr, RestrictProperties *props, RestrictPropertiesActive *props_active)
static void outliner_draw_iconrow(bContext *C, uiBlock *block, const uiFontStyle *fstyle, const TreeViewContext *tvc, SpaceOutliner *space_outliner, ListBase *lb, int level, int xmax, int *offsx, int ys, float alpha_fac, bool in_bone_hierarchy, MergedIconRow *merged)
static bool outliner_restrict_properties_collection_set(Scene *scene, TreeElement *te, PointerRNA *collection_ptr, PointerRNA *layer_collection_ptr, RestrictProperties *props, RestrictPropertiesActive *props_active)
static void outliner_base_or_object_pointer_create(Scene *scene, ViewLayer *view_layer, Collection *collection, Object *ob, PointerRNA *ptr)
static int outliner_width(SpaceOutliner *space_outliner, int max_tree_width, float right_column_width)
static bool outliner_but_identity_cmp_context_id_fn(const uiBut *a, const uiBut *b)
static void restrictbutton_recursive_ebone(bArmature *arm, EditBone *ebone_parent, int flag, bool set_flag)
static void outliner_draw_rnabuts(uiBlock *block, ARegion *region, SpaceOutliner *space_outliner, int sizex)
static void outliner_tree_dimensions_impl(SpaceOutliner *space_outliner, ListBase *lb, int *width, int *height)
static void outliner_object_set_flag_recursive_fn(bContext *C, Base *base, Object *ob, const char *propname)
static bool outliner_collection_is_isolated(Scene *scene, const LayerCollection *layer_collection_cmp, const Collection *collection_cmp, const bool value_cmp, const PropertyRNA *layer_or_collection_prop, LayerCollection *layer_collection, Collection *collection)
void outliner_tree_dimensions(SpaceOutliner *space_outliner, int *r_width, int *r_height)
static void restrictbutton_gp_layer_flag_fn(bContext *C, void *poin, void *UNUSED(poin2))
static void outliner_draw_separator(ARegion *region, const int x)
static void outliner_collection_set_flag_recursive(Scene *scene, ViewLayer *view_layer, LayerCollection *layer_collection, Collection *collection, PropertyRNA *layer_or_collection_prop, PropertyRNA *base_or_object_prop, const bool value)
static void outliner_mode_toggle_fn(bContext *C, void *tselem_poin, void *UNUSED(arg2))
static void restrictbutton_ebone_visibility_fn(bContext *C, void *poin, void *poin2)
static void outliner_draw_mode_column_toggle(uiBlock *block, TreeViewContext *tvc, TreeElement *te, const bool lock_object_modes)
static void outliner_draw_hierarchy_lines(SpaceOutliner *space_outliner, ListBase *lb, int startx, int *starty)
TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
static void view_layer__layer_collection_set_flag_recursive_fn(bContext *C, void *poin, void *poin2)
static void outliner__object_set_flag_recursive_fn(bContext *C, void *poin, void *poin2)
static void restrictbutton_bone_visibility_fn(bContext *C, void *poin, void *UNUSED(poin2))
static void outliner_draw_overrides_restrictbuts(Main *bmain, uiBlock *block, const ARegion *region, const SpaceOutliner *space_outliner, const ListBase *lb, const int x)
static void restrictbutton_r_lay_fn(bContext *C, void *poin, void *UNUSED(poin2))
static void outliner_layer_or_collection_pointer_create(Scene *scene, LayerCollection *layer_collection, Collection *collection, PointerRNA *ptr)
static void view_layer__collection_set_flag_recursive_fn(bContext *C, void *poin, void *poin2)
static bool tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te, float alpha, const bool is_clickable)
void outliner_collection_isolate_flag(Scene *scene, ViewLayer *view_layer, LayerCollection *layer_collection, Collection *collection, PropertyRNA *layer_or_collection_prop, const char *propname, const bool value)
void draw_outliner(const bContext *C)
static void restrictbutton_bone_select_fn(bContext *C, void *UNUSED(poin), void *poin2)
static void outliner_draw_warning_tree_element(uiBlock *block, const SpaceOutliner *space_outliner, StringRefNull warning_msg, const bool use_mode_column, const int te_ys)
static void restrictbutton_id_user_toggle(bContext *UNUSED(C), void *poin, void *UNUSED(poin2))
static void outliner_draw_tree(bContext *C, uiBlock *block, const TreeViewContext *tvc, ARegion *region, SpaceOutliner *space_outliner, const float right_column_width, const bool use_mode_column, const bool use_warning_column, TreeElement **te_edit)
static bool is_object_data_in_editmode(const ID *id, const Object *obact)
static void namebutton_fn(bContext *C, void *tsep, char *oldname)
static void outliner_draw_iconrow_doit(uiBlock *block, TreeElement *te, const uiFontStyle *fstyle, int xmax, int *offsx, int ys, float alpha_fac, const eOLDrawState active, const int num_elements)
static void outliner_buttons(const bContext *C, uiBlock *block, ARegion *region, const float restrict_column_width, TreeElement *te)
static void restrictbutton_recursive_bone(Bone *bone_parent, int flag, bool set_flag)
#define SEARCHING_OUTLINER(sov)
#define OL_RNA_COL_SPACEX
void outliner_viewcontext_init(const struct bContext *C, TreeViewContext *tvc)
eOLDrawState tree_element_active_state_get(const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
@ TE_CHILD_NOT_IN_COLLECTION
@ TE_PRETEND_HAS_CHILDREN
float outliner_right_columns_width(const struct SpaceOutliner *space_outliner)
TreeElement * outliner_find_tree_element(ListBase *lb, const TreeStoreElem *store_elem)
void tree_element_activate(struct bContext *C, const TreeViewContext *tvc, TreeElement *te, eOLSetState set, bool handle_all_types)
void outliner_sync_selection(const struct bContext *C, struct SpaceOutliner *space_outliner)
void outliner_build_tree(struct Main *mainvar, struct Scene *scene, struct ViewLayer *view_layer, struct SpaceOutliner *space_outliner, struct ARegion *region)
bool outliner_has_element_warnings(const SpaceOutliner &space_outliner)
void outliner_item_mode_toggle(struct bContext *C, TreeViewContext *tvc, TreeElement *te, bool do_extend)
bool outliner_is_element_in_view(const TreeElement *te, const struct View2D *v2d)
#define OL_TOG_USER_BUTS_STATUS
bool outliner_shows_mode_column(const SpaceOutliner &space_outliner)
#define OL_TOG_USER_BUTS_USERS
#define TSELEM_OPEN(telm, sv)
eOLDrawState tree_element_type_active_state_get(const struct bContext *C, const struct TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
bool RNA_struct_is_ID(const StructRNA *type)
PropertyType RNA_property_type(PropertyRNA *prop)
bool RNA_property_boolean_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
int RNA_struct_ui_icon(const StructRNA *type)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
struct Collection * collection
IDOverrideLibrary * override_library
unsigned int session_uuid
ListBase layer_collections
struct Collection * collection
TreeElement * tree_element[INDEX_ID_MAX+OB_TYPE_MAX]
int num_elements[INDEX_ID_MAX+OB_TYPE_MAX]
eOLDrawState active[INDEX_ID_MAX+OB_TYPE_MAX]
struct Collection * instance_collection
ListBase greasepencil_modifiers
bool layer_collection_indirect_only
bool modifier_show_render
bool object_hide_viewport
bool collection_hide_select
bool collection_hide_viewport
bool layer_collection_exclude
bool modifier_show_viewport
bool collection_hide_render
bool layer_collection_holdout
bool layer_collection_hide_viewport
PropertyRNA * layer_collection_holdout
PropertyRNA * object_hide_viewport
PropertyRNA * modifier_show_viewport
PropertyRNA * collection_hide_viewport
PropertyRNA * layer_collection_hide_viewport
PropertyRNA * bone_hide_viewport
PropertyRNA * modifier_show_render
PropertyRNA * layer_collection_exclude
PropertyRNA * base_hide_viewport
PropertyRNA * object_hide_render
PropertyRNA * object_hide_select
PropertyRNA * constraint_enable
PropertyRNA * collection_hide_select
PropertyRNA * collection_hide_render
PropertyRNA * layer_collection_indirect_only
struct Collection * master_collection
struct ToolSettings * toolsettings
short lib_override_view_mode
struct BLI_mempool * treestore
struct TreeElement * parent
std::unique_ptr< outliner::AbstractTreeElement > abstract_element
TreeStoreElem * store_elem
struct ViewLayer * view_layer
ListBase layer_collections
struct bNodeTreeType * typeinfo
ThemeCollectionColor collection_color[8]
struct wmEvent * eventstate
Establish and manage Outliner trees for different display modes.
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
#define WM_msg_publish_rna_prop(mbus, id_, data_, type_, prop_)