126 if (id_type ==
ID_GD && obact && obact->
data ==
id) {
151 ebone->
flag &= ~flag;
257 const char *propname)
274 void *
data = ob ? (
void *)ob : (
void *)base;
291 if (base_iter ==
NULL) {
317 char *propname = poin2;
327 char *propname = poin2;
376 if (base_or_object_prop) {
394 Collection *collection_iter = layer_collection ?
399 layer_collection_iter,
401 layer_or_collection_prop,
424 const bool value_cmp,
433 const Collection *collection_ensure_cmp = collection_cmp ? collection_cmp :
438 else if (collection_ensure == collection_ensure_cmp) {
444 if (value != value_cmp) {
451 if (value == value_cmp) {
460 Collection *collection_iter = layer_collection ?
467 layer_collection_cmp,
470 layer_or_collection_prop,
471 layer_collection_iter,
485 const char *propname,
489 const bool is_hide = strstr(propname,
"hide_") !=
NULL;
495 bool was_isolated = (value == is_hide);
500 layer_or_collection_prop,
501 top_layer_collection,
509 top_layer_collection,
511 layer_or_collection_prop,
520 top_layer_collection,
522 layer_or_collection_prop,
528 scene, view_layer, layer_collection, collection, layer_or_collection_prop,
NULL, !is_hide);
531 if (layer_collection) {
540 while (lc_parent != layer_collection) {
570 const char *propname)
581 if (!
ELEM(
true, do_isolate, extend)) {
586 ID *
id = collection ? &collection->
id : &
scene->
id;
588 void *
data = collection ? (
void *)collection : (
void *)layer_collection;
596 if (layer_collection !=
NULL) {
608 layer_or_collection_prop,
617 layer_or_collection_prop,
636 char *propname = poin2;
647 char *propname = poin2;
649 C, layer_collection, layer_collection->
collection, propname);
659 char *propname = poin2;
717 "Library path '%s' does not exist, correct this before saving",
723 "Library path '%s' is now valid, please reload the library",
730 switch (tselem->
type) {
748 char newname[
sizeof(ebone->
name)];
766 char newname[
sizeof(bone->name)];
772 BLI_strncpy(newname, bone->name,
sizeof(bone->name));
773 BLI_strncpy(bone->name, oldname,
sizeof(bone->name));
786 char newname[
sizeof(pchan->
name)];
824 &gpd->
layers, gpl,
"GP Layer",
'.', offsetof(
bGPDlayer, info),
sizeof(gpl->info));
836 char newname[
sizeof(view_layer->name)];
837 BLI_strncpy(newname, view_layer->name,
sizeof(view_layer->name));
838 BLI_strncpy(view_layer->name, oldname,
sizeof(view_layer->name));
993 if (layer_collection !=
NULL) {
998 if (layer_collection) {
1000 layer_collection_ptr, collection_ptr, props, props_active);
1053 } restrict_offsets = {0};
1054 int restrict_column_offset = 0;
1102 ICON_RESTRICT_RENDER_OFF,
1103 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1112 TIP_(
"Use view layer for rendering"));
1128 Base *base = (te->directdata) ? (
Base *)te->directdata :
1137 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1148 TIP_(
"Temporarily hide in viewport\n"
1149 "* Shift to set children"));
1164 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1175 TIP_(
"Disable selection in viewport\n"
1176 "* Shift to set children"));
1189 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1200 TIP_(
"Globally disable in viewports\n"
1201 "* Shift to set children"));
1214 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1225 TIP_(
"Globally disable in renders\n"
1226 "* Shift to set children"));
1245 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1274 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1297 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1329 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1340 TIP_(
"Restrict visibility in the 3D View\n"
1341 "* Shift to set children"));
1352 ICON_RESTRICT_SELECT_OFF,
1353 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1362 TIP_(
"Restrict selection in the 3D View\n"
1363 "* Shift to set children"));
1378 ICON_RESTRICT_VIEW_OFF,
1379 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1388 TIP_(
"Restrict visibility in the 3D View\n"
1389 "* Shift to set children"));
1400 ICON_RESTRICT_SELECT_OFF,
1401 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1410 TIP_(
"Restrict selection in the 3D View\n"
1411 "* Shift to set children"));
1418 ID *
id = tselem->
id;
1427 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1436 TIP_(
"Restrict visibility in the 3D View"));
1448 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1457 TIP_(
"Restrict editing of strokes and keyframes in this layer"));
1467 scene, te, &collection_ptr, &layer_collection_ptr, &props, &props_active)) {
1474 if (layer_collection !=
NULL) {
1480 (
int)(region->
v2d.
cur.
xmax) - restrict_offsets.enable,
1484 &layer_collection_ptr,
1500 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.hide),
1504 &layer_collection_ptr,
1511 TIP_(
"Temporarily hide in viewport\n"
1512 "* Ctrl to isolate collection\n"
1513 "* Shift to set inside collections and objects"));
1517 (
char *)
"hide_viewport");
1529 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.holdout),
1533 &layer_collection_ptr,
1540 TIP_(
"Mask out objects in collection from view layer\n"
1541 "* Ctrl to isolate collection\n"
1542 "* Shift to set inside collections"));
1559 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.indirect_only),
1563 &layer_collection_ptr,
1570 TIP_(
"Objects in collection only contribute indirectly (through shadows and "
1571 "reflections) in the view layer\n"
1572 "* Ctrl to isolate collection\n"
1573 "* Shift to set inside collections"));
1577 (
char *)
"indirect_only");
1591 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.viewport),
1602 TIP_(
"Globally disable in viewports\n"
1603 "* Ctrl to isolate collection\n"
1604 "* Shift to set inside collections and objects"));
1605 if (layer_collection !=
NULL) {
1609 (
char *)
"hide_viewport");
1615 (
char *)
"hide_viewport");
1628 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.render),
1639 TIP_(
"Globally disable in renders\n"
1640 "* Ctrl to isolate collection\n"
1641 "* Shift to set inside collections and objects"));
1642 if (layer_collection !=
NULL) {
1646 (
char *)
"hide_render");
1663 (
int)(region->
v2d.
cur.
xmax - restrict_offsets.select),
1674 TIP_(
"Disable selection in viewport\n"
1675 "* Ctrl to isolate collection\n"
1676 "* Shift to set inside collections and objects"));
1677 if (layer_collection !=
NULL) {
1681 (
char *)
"hide_select");
1699 scene, te, &collection_ptr, &layer_collection_ptr, &props, &props_active);
1704 block,
scene, view_layer, region, space_outliner, &te->subtree, props_active);
1720 ID *
id = tselem->
id;
1721 const char *tip =
NULL;
1743 TIP_(
"Number of users of this data-block"));
1747 tip =
TIP_(
"Data-block will be retained using a fake user");
1750 tip =
TIP_(
"Data-block has no users and will be deleted");
1784 bool any_item_has_warnings =
false;
1787 bool item_has_warnings =
false;
1791 const char *tip =
NULL;
1794 switch (tselem->
type) {
1796 ID *
id = tselem->
id;
1799 item_has_warnings =
true;
1802 "This override data-block is not needed anymore, but was detected as user-edited");
1806 item_has_warnings =
true;
1808 tip =
TIP_(
"This override data-block is unused");
1814 const bool is_rna_path_valid = (bool)(
POINTER_AS_UINT(te->directdata));
1815 if (!is_rna_path_valid) {
1816 item_has_warnings =
true;
1819 "This override property does not exist in current data, it will be removed on "
1820 "next .blend file save");
1837 (item_has_warnings || (any_child_has_warnings && !
TSELEM_OPEN(tselem, space_outliner)))) {
1839 tip =
TIP_(
"Some sub-items require attention");
1857 any_item_has_warnings = any_item_has_warnings || item_has_warnings || any_child_has_warnings;
1860 return any_item_has_warnings;
1868 if (miny < v2d->tot.ymin) {
1902 prop = te->directdata;
1946 prop = te->directdata;
1970 const float restrict_column_width,
2039 const bool object_data_shared = (ob->
data == tvc.
obact->
data);
2042 const bool do_extend = win->
eventstate->
ctrl != 0 && !object_data_shared;
2051 const bool lock_object_modes)
2066 if (ob->
type != ob_active->type) {
2070 bool draw_active_icon = ob->
mode == ob_active->mode;
2076 if (!lock_object_modes && ob != ob_active && !(tvc->
ob_edit || tvc->
ob_pose)) {
2077 draw_active_icon =
false;
2080 const bool object_data_shared = (ob->
data == ob_active->data);
2081 draw_active_icon = draw_active_icon || object_data_shared;
2085 if (draw_active_icon) {
2087 tip = object_data_shared ?
TIP_(
"Change the object in the current mode") :
2088 TIP_(
"Remove from the current mode");
2093 "Change the object in the current mode\n"
2094 "* Ctrl to add to the current mode");
2151 switch (tselem->
type) {
2153 data.icon = ICON_ANIM_DATA;
2156 data.icon = ICON_NLA;
2159 data.icon = ICON_NLA;
2162 data.icon = ICON_ACTION;
2165 data.icon = ICON_DRIVER;
2168 data.icon = ICON_GROUP_VERTEX;
2171 data.icon = ICON_GROUP_VERTEX;
2175 data.icon = ICON_BONE_DATA;
2178 data.icon = ICON_CONSTRAINT;
2179 data.drag_id = tselem->
id;
2183 data.drag_id = tselem->
id;
2186 data.icon = ICON_CON_CAMERASOLVER;
2189 data.icon = ICON_CON_FOLLOWTRACK;
2192 data.icon = ICON_CON_OBJECTSOLVER;
2195 data.icon = ICON_CON_LOCLIKE;
2198 data.icon = ICON_CON_ROTLIKE;
2201 data.icon = ICON_CON_SIZELIKE;
2204 data.icon = ICON_CON_TRANSLIKE;
2207 data.icon = ICON_CON_DISTLIMIT;
2210 data.icon = ICON_CON_LOCLIMIT;
2213 data.icon = ICON_CON_ROTLIMIT;
2216 data.icon = ICON_CON_SIZELIMIT;
2219 data.icon = ICON_CON_SAMEVOL;
2222 data.icon = ICON_CON_TRANSFORM;
2225 data.icon = ICON_CON_TRANSFORM_CACHE;
2228 data.icon = ICON_CON_CLAMPTO;
2231 data.icon = ICON_CON_TRACKTO;
2234 data.icon = ICON_CON_KINEMATIC;
2237 data.icon = ICON_CON_LOCKTRACK;
2240 data.icon = ICON_CON_SPLINEIK;
2243 data.icon = ICON_CON_STRETCHTO;
2246 data.icon = ICON_CON_TRACKTO;
2249 data.icon = ICON_CON_ACTION;
2252 data.icon = ICON_CON_ARMATURE;
2255 data.icon = ICON_CON_CHILDOF;
2258 data.icon = ICON_CON_FLOOR;
2261 data.icon = ICON_CON_FOLLOWPATH;
2264 data.icon = ICON_CON_PIVOT;
2267 data.icon = ICON_CON_SHRINKWRAP;
2271 data.icon = ICON_DOT;
2277 data.icon = ICON_MODIFIER_DATA;
2278 data.drag_id = tselem->
id;
2282 data.icon = ICON_LIBRARY_DATA_OVERRIDE;
2285 data.icon = ICON_OBJECT_DATA;
2288 data.icon = ICON_PARTICLES;
2292 data.drag_id = tselem->
id;
2297 if (modifier_type !=
NULL) {
2301 data.icon = ICON_DOT;
2309 data.icon = ICON_MOD_NOISE;
2312 data.icon = ICON_MOD_SUBSURF;
2315 data.icon = ICON_MOD_THICKNESS;
2318 data.icon = ICON_MOD_TINT;
2321 data.icon = ICON_MOD_ARRAY;
2324 data.icon = ICON_MOD_BUILD;
2327 data.icon = ICON_MOD_MASK;
2330 data.icon = ICON_MOD_HUE_SATURATION;
2333 data.icon = ICON_MOD_LATTICE;
2336 data.icon = ICON_MOD_MIRROR;
2339 data.icon = ICON_MOD_SIMPLIFY;
2342 data.icon = ICON_MOD_SMOOTH;
2345 data.icon = ICON_HOOK;
2348 data.icon = ICON_MOD_OFFSET;
2351 data.icon = ICON_MOD_ARMATURE;
2354 data.icon = ICON_GP_MULTIFRAME_EDITING;
2357 data.icon = ICON_MOD_TIME;
2360 data.icon = ICON_TEXTURE;
2365 data.icon = ICON_DOT;
2372 data.icon = ICON_ARMATURE_DATA;
2375 data.icon = ICON_BONE_DATA;
2378 data.icon = ICON_GHOST_ENABLED;
2381 data.icon = ICON_RENDERLAYERS;
2384 data.icon = ICON_OUTLINER_OB_GROUP_INSTANCE;
2387 data.icon = ICON_RENDER_RESULT;
2391 data.icon = ICON_GROUP_BONE;
2396 data.icon = ICON_SCENE_DATA;
2399 data.icon = ICON_TRACKER;
2402 data.icon = ICON_MOD_MASK;
2405 data.icon = ICON_FILE_MOVIE;
2408 data.icon = ICON_SOUND;
2411 data.icon = ICON_FILE_IMAGE;
2415 data.icon = ICON_COLOR;
2418 data.icon = ICON_FONT_DATA;
2432 data.icon = ICON_SHADERFX;
2437 data.icon = ICON_ARROW_LEFTRIGHT;
2440 data.icon = ICON_SEQ_STRIP_META;
2443 data.icon = ICON_DOT;
2448 data.icon = ICON_LIBRARY_DATA_DIRECT;
2451 data.icon = ICON_SEQ_STRIP_DUPLICATE;
2467 data.drag_id = tselem->
id;
2471 data.icon = ICON_OUTLINER_COLLECTION;
2475 data.icon = ICON_OUTLINER_DATA_GP_LAYER;
2480 data.drag_id = tselem->
id;
2481 data.icon = ICON_SHADERFX;
2484 data.icon = ICON_DOT;
2488 else if (tselem->
id) {
2489 data.drag_id = tselem->
id;
2496 data.icon = ICON_OUTLINER_OB_LIGHT;
2499 data.icon = ICON_OUTLINER_OB_MESH;
2502 data.icon = ICON_OUTLINER_OB_CAMERA;
2505 data.icon = ICON_OUTLINER_OB_CURVE;
2508 data.icon = ICON_OUTLINER_OB_META;
2511 data.icon = ICON_OUTLINER_OB_LATTICE;
2514 data.icon = ICON_OUTLINER_OB_ARMATURE;
2517 data.icon = ICON_OUTLINER_OB_FONT;
2520 data.icon = ICON_OUTLINER_OB_SURFACE;
2523 data.icon = ICON_OUTLINER_OB_SPEAKER;
2526 data.icon = ICON_OUTLINER_OB_LIGHTPROBE;
2529 data.icon = ICON_OUTLINER_OB_HAIR;
2532 data.icon = ICON_OUTLINER_OB_POINTCLOUD;
2535 data.icon = ICON_OUTLINER_OB_VOLUME;
2539 data.icon = ICON_OUTLINER_OB_GROUP_INSTANCE;
2542 data.icon = ICON_OUTLINER_OB_IMAGE;
2545 data.icon = ICON_OUTLINER_OB_FORCE_FIELD;
2548 data.icon = ICON_OUTLINER_OB_EMPTY;
2552 data.icon = ICON_OUTLINER_OB_GREASEPENCIL;
2560 switch ((
short)
GS(tselem->
id->
name)) {
2562 data.icon = ICON_SCENE_DATA;
2565 data.icon = ICON_OUTLINER_DATA_MESH;
2568 data.icon = ICON_OUTLINER_DATA_CURVE;
2571 data.icon = ICON_OUTLINER_DATA_META;
2574 data.icon = ICON_OUTLINER_DATA_LATTICE;
2580 data.icon = ICON_LIGHT_POINT;
2583 data.icon = ICON_LIGHT_SUN;
2586 data.icon = ICON_LIGHT_SPOT;
2589 data.icon = ICON_LIGHT_AREA;
2592 data.icon = ICON_OUTLINER_DATA_LIGHT;
2598 data.icon = ICON_MATERIAL_DATA;
2601 data.icon = ICON_TEXTURE_DATA;
2604 data.icon = ICON_IMAGE_DATA;
2608 data.icon = ICON_OUTLINER_DATA_SPEAKER;
2611 data.icon = ICON_OUTLINER_DATA_ARMATURE;
2614 data.icon = ICON_OUTLINER_DATA_CAMERA;
2617 data.icon = ICON_SHAPEKEY_DATA;
2620 data.icon = ICON_WORLD_DATA;
2623 data.icon = ICON_ACTION;
2626 data.icon = ICON_NLA;
2629 data.icon = ICON_SCRIPT;
2632 data.icon = ICON_OUTLINER_COLLECTION;
2635 data.icon = ICON_OUTLINER_DATA_HAIR;
2638 data.icon = ICON_OUTLINER_DATA_POINTCLOUD;
2641 data.icon = ICON_OUTLINER_DATA_VOLUME;
2645 data.icon = ICON_LIBRARY_DATA_BROKEN;
2647 else if (((
Library *)tselem->
id)->parent) {
2648 data.icon = ICON_LIBRARY_DATA_INDIRECT;
2651 data.icon = ICON_LIBRARY_DATA_DIRECT;
2655 data.icon = ICON_LINE_DATA;
2658 data.icon = ICON_OUTLINER_DATA_GREASEPENCIL;
2664 data.icon = ICON_LIGHTPROBE_CUBEMAP;
2667 data.icon = ICON_LIGHTPROBE_PLANAR;
2670 data.icon = ICON_LIGHTPROBE_GRID;
2673 data.icon = ICON_LIGHTPROBE_CUBEMAP;
2679 data.icon = ICON_BRUSH_DATA;
2683 data.icon = ICON_WORKSPACE;
2686 data.icon = ICON_MOD_MASK;
2689 data.icon = ICON_SEQUENCE;
2692 data.icon = ICON_CURVE_BEZCURVE;
2696 data.icon = ICON_PHYSICS;
2714 const bool is_clickable)
2717 if (
data.icon == 0) {
2724 if (!is_clickable ||
x >= xmax || is_collection) {
2730 if (is_collection) {
2783 const int num_elements)
2785 const float color[4] = {0.0f, 0.0f, 0.0f, 1.0f};
2792 .xmin = offset_x + ufac,
2808 fstyle_small.
points *= 0.8f;
2812 char number_text[4] =
"+99\0";
2813 if (num_elements < 100) {
2814 BLI_snprintf(number_text,
sizeof(number_text),
"%d", num_elements);
2815 num_digits = num_elements < 10 ? 1 : 2;
2818 (offset_x + ufac +
UI_UNIT_X * (2 - num_digits) * 0.12f),
2832 icon_color[3] = 0.4f;
2834 icon_border[3] = 0.2f;
2842 const float icon_color[4],
2843 const float icon_border[4])
2853 .ymin = miny + ufac,
2854 .ymax = maxy - ufac,
2863 .ymin = miny + ufac,
2864 .ymax = maxy - ufac,
2880 const int num_elements)
2885 float icon_color[4], icon_border[4];
2889 icon_border[3] = 0.3f;
2903 tselem_draw_icon(block, xmax, (
float)*offsx, (
float)ys, tselem, te, alpha_fac,
false);
2908 if (num_elements > 1) {
2970 if (te->idcode ==
ID_OB) {
3034 for (
int j = 0; j < num_subtypes; j++) {
3035 const int index = index_base + j;
3086 switch (tselem->
type) {
3091 return !is_visible || is_excluded;
3109 bool draw_grayed_out,
3112 const float restrict_column_width,
3119 uchar text_color[4];
3121 float icon_bgcolor[4], icon_border[4];
3133 if (restrict_column_width > 0) {
3134 xmax -= restrict_column_width +
UI_UNIT_X;
3147 if (ob == tvc->
obact) {
3152 if (ob == tvc->
obact) {
3155 text_color[3] = 255;
3160 text_color[3] = 255;
3167 icon_border[3] = 0.3f;
3173 icon_bgcolor[3] = 0.2f;
3186 (
float)startx + offsx + 2.0f *
UI_UNIT_X,
3200 int icon_x = startx;
3205 (
float)*starty + 1 * ufac,
3206 ICON_DISCLOSURE_TRI_DOWN,
3211 (
float)*starty + 1 * ufac,
3212 ICON_DISCLOSURE_TRI_RIGHT,
3222 (
float)startx + offsx,
3237 if (lib_icon != ICON_NONE) {
3239 (
float)startx + offsx + 2 * ufac, (
float)*starty + 2 * ufac, lib_icon, alpha_fac);
3249 text_color[3] = 255;
3251 text_color[3] *= alpha_fac;
3265 int tempx = startx + offsx;
3291 te->
xend = startx + offsx;
3299 bool draw_children_grayed_out = draw_grayed_out || (ten->flag &
TE_DRAGGING);
3307 draw_children_grayed_out,
3310 restrict_column_width,
3335 const uint pos,
const int x,
const int y1,
const int y2,
const bool draw_dashed)
3338 const short line_padding =
UI_UNIT_Y / 4.0f;
3341 immUniform1f(
"dash_factor", draw_dashed ? 0.5f : 1.0f);
3356 bool draw_grayed_out,
3363 bool draw_hierarchy_line;
3364 bool is_object_line;
3367 draw_hierarchy_line =
false;
3368 is_object_line =
false;
3375 draw_hierarchy_line =
true;
3384 draw_hierarchy_line =
true;
3385 is_object_line =
true;
3391 pos, space_outliner, &te->subtree, startx +
UI_UNIT_X,
col, draw_grayed_out, starty);
3394 if (draw_hierarchy_line) {
3418 float viewport_size[4];
3478 const float col_selection[4],
3479 const float col_active[4],
3480 const float col_highlight[4],
3481 const float col_searchmatch[4],
3491 const int start_y = *io_start_y;
3522 immRecti(
pos, start_x, start_y -
U.pixelsize, end_x, start_y +
U.pixelsize);
3565 const float col_highlight[4] = {1.0f, 1.0f, 1.0f, 0.13f};
3566 float col_selection[4], col_active[4], col_searchmatch[4];
3569 col_selection[3] = 1.0f;
3571 col_active[3] = 1.0f;
3573 col_searchmatch[3] = 0.5f;
3582 &space_outliner->
tree,
3598 const float restrict_column_width,
3599 const bool use_mode_column,
3606 short mode_column_offset = (use_mode_column && (space_outliner->
outlinevis ==
SO_SCENES)) ?
3627 int scissor[4] = {0};
3628 if (restrict_column_width > 0.0f) {
3638 startx = mode_column_offset +
UI_UNIT_X / 2 - (
U.pixelsize + 1) / 2;
3643 startx = mode_column_offset;
3655 restrict_column_width,
3659 if (restrict_column_width > 0.0f) {
3677 float col_alternating[4];
3682 float y1 = ystart, y2;
3710 float restrict_column_width)
3715 return max_tree_width + restrict_column_width;
3722 float restrict_column_width)
3724 int sizex =
outliner_width(space_outliner, tree_width, restrict_column_width);
3725 int sizey = tree_height;
3783 restrict_column_width,
3788 int tree_width, tree_height;
3811 else if (restrict_column_width > 0.0f) {
3820 &space_outliner->
tree,
3825 if (use_mode_column) {
3841 region, space_outliner, tree_width, tree_height, restrict_column_width);
typedef float(TangentPoint)[2]
bool BKE_collection_has_collection(struct Collection *parent, 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)
void BKE_gpencil_layer_active_set(struct bGPdata *gpd, struct bGPDlayer *active)
int BKE_idtype_idcode_to_index(const 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()
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()
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
General operations, lookup, etc. for blender objects.
bool BKE_object_data_is_in_editmode(const struct ID *id)
bool BKE_object_is_child_recursive(const struct Object *ob_parent, const struct Object *ob_child)
struct ParticleSystem * psys_get_current(struct Object *ob)
void BKE_reportf(ReportList *reports, ReportType 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 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()
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()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t len)
#define POINTER_AS_UINT(i)
#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)
@ LIB_LIB_OVERRIDE_RESYNC_LEFTOVER
#define ID_REAL_USERS(id)
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_Armature
@ 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_VIEW_COLLECTION_BASE
@ TSE_LIBRARY_OVERRIDE_BASE
@ TSE_SCENE_COLLECTION_BASE
@ TSE_GPENCIL_EFFECT_BASE
@ SO_RESTRICT_INDIRECT_ONLY
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 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
_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 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
@ 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])
StructRNA RNA_LayerCollection
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)
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 UI_draw_roundbox_corner_set(int type)
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)
int UI_fontstyle_string_width(const struct uiFontStyle *fs, const char *str)
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)
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_flag_enable(uiBut *but, int flag)
int UI_icon_from_object_mode(const int mode)
#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)
int UI_icon_from_library(const struct ID *id)
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], const bool mono_border)
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)
static CCL_NAMESPACE_BEGIN const double alpha
bool active
all scheduled work for the GPU.
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_mode_column(const bContext *C, uiBlock *block, TreeViewContext *tvc, SpaceOutliner *space_outliner, ListBase *tree)
static void outliner_draw_rnabuts(uiBlock *block, ARegion *region, SpaceOutliner *space_outliner, int sizex, ListBase *lb)
static void outliner_draw_highlights_recursive(uint pos, const ARegion *region, const SpaceOutliner *space_outliner, const ListBase *lb, 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 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_toggle(uiBlock *block, TreeViewContext *tvc, TreeElement *te, TreeStoreElem *tselem, const bool lock_object_modes)
static void outliner_restrict_properties_enable_collection_set(PointerRNA *collection_ptr, RestrictProperties *props, RestrictPropertiesActive *props_active)
static void outliner_icon_background_colors(float icon_color[4], float icon_border[4])
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, MergedIconRow *merged)
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 int outliner_data_api_buttons_start_x(int max_tree_width)
static void outliner_update_viewable_area(ARegion *region, SpaceOutliner *space_outliner, int tree_width, int tree_height, float restrict_column_width)
static bool element_should_draw_faded(const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
struct MergedIconRow MergedIconRow
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 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 tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te, float alpha, const bool is_clickable)
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 void outliner_draw_tree(bContext *C, uiBlock *block, const TreeViewContext *tvc, ARegion *region, SpaceOutliner *space_outliner, const float restrict_column_width, const bool use_mode_column, TreeElement **te_edit)
static void restrictbutton_recursive_ebone(bArmature *arm, EditBone *ebone_parent, int flag, bool set_flag)
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)
struct RestrictPropertiesActive RestrictPropertiesActive
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 int outliner_width(SpaceOutliner *space_outliner, int max_tree_width, float restrict_column_width)
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_set_coord_tree_element(TreeElement *te, int startx, int starty)
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 restrictbutton_r_lay_fn(bContext *C, void *poin, void *UNUSED(poin2))
static void outliner_draw_rnacols(ARegion *region, int sizex)
static void outliner_layer_or_collection_pointer_create(Scene *scene, LayerCollection *layer_collection, Collection *collection, PointerRNA *ptr)
static void outliner_draw_userbuts(uiBlock *block, ARegion *region, SpaceOutliner *space_outliner, ListBase *lb)
static void view_layer__collection_set_flag_recursive_fn(bContext *C, void *poin, void *poin2)
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)
struct RestrictProperties RestrictProperties
static void restrictbutton_id_user_toggle(bContext *UNUSED(C), void *poin, void *UNUSED(poin2))
static void outliner_draw_highlights(ARegion *region, SpaceOutliner *space_outliner, int startx, int *starty)
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)
static bool outliner_draw_overrides_buts(uiBlock *block, ARegion *region, SpaceOutliner *space_outliner, ListBase *lb, const bool is_open)
#define SEARCHING_OUTLINER(sov)
#define OL_RNA_COL_SPACEX
void outliner_viewcontext_init(const struct bContext *C, TreeViewContext *tvc)
@ TE_CHILD_NOT_IN_COLLECTION
eOLDrawState tree_element_active_state_get(const TreeViewContext *tvc, const TreeElement *te, const TreeStoreElem *tselem)
TreeElement * outliner_find_tree_element(ListBase *lb, const TreeStoreElem *store_elem)
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)
void outliner_item_mode_toggle(struct bContext *C, TreeViewContext *tvc, TreeElement *te, const bool do_extend)
float outliner_restrict_columns_width(const struct SpaceOutliner *space_outliner)
void tree_element_activate(struct bContext *C, const TreeViewContext *tvc, TreeElement *te, const eOLSetState set, const bool handle_all_types)
#define OL_TOG_USER_BUTS_STATUS
#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
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
struct BLI_mempool * treestore
struct TreeElement * parent
struct ViewLayer * view_layer
ListBase layer_collections
ThemeCollectionColor collection_color[8]
struct wmEvent * eventstate
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
ccl_device_inline float2 floor(const float2 &a)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
#define WM_msg_publish_rna_prop(mbus, id_, data_, type_, prop_)