181 tselem->
nr =
type ? nr : 0;
273 #ifdef WITH_FREESTYLE
274 static void outliner_add_line_styles(
SpaceOutliner *space_outliner,
336 int const_index = 1000;
341 ten->
name = pchan->name;
343 pchan->temp = (
void *)ten;
356 target = get_constraint_target(con, &
str);
361 ten1->
name = target->id.name + 2;
364 ten1->
name = con->name;
367 ten1->
name = con->name;
402 ten->
name = agrp->name;
422 target = get_constraint_target(con, &
str);
427 ten->
name = target->id.name + 2;
430 ten->
name = con->name;
433 ten->
name = con->name;
448 ten->
name = md->name;
504 ten->
name = md->name;
544 ten->
name = fx->name;
568 ten->
name = defgroup->name;
588 id->newid = (
ID *)te;
595 BLI_assert(!
"ID type expected to be expanded through new tree-element design");
723 ten->
name = ebone->name;
856 else if (
id ==
NULL) {
908 BLI_assert(!
"Expected this ID type to be ported to new Outliner tree-element design");
913 BLI_assert(!
"Expected override types to be ported to new Outliner tree-element design");
923 te->
name =
id->name + 2;
981 if (strip->
dir[0] !=
'\0') {
1002 const int tot_limit = SHRT_MAX;
1031 if (!tselem->
used) {
1037 for (
int a = 0;
a < tot;
a++) {
1088 for (
int a = 0;
a < tot;
a++) {
1104 for (
int a = 0;
a < tot;
a++) {
1125 sprintf((
char *)te->
name,
" %c",
c);
1128 sprintf((
char *)te->
name,
" %d", index + 1);
1279 static int treesort_obtype_alpha(
const void *
v1,
const void *
v2)
1309 else if (comp < 0) {
1337 for (te = lb->
first; te; te = te->
next, tp++) {
1350 tp->
id = tselem->
id;
1359 for (tp = tear, skip = 0; skip < totelem; skip++, tp++) {
1365 if (skip < totelem) {
1401 for (te = lb->
first; te; te = te->
next, tp++) {
1406 tp->
id = tselem->
id;
1448 if (te_new !=
NULL) {
1449 int ys_new = te_new->
ys;
1450 int ys_old = focus->
ys;
1452 float y_move =
MIN2(ys_new - ys_old, -v2d->
cur.
ymax);
1481 if (callback_test(te)) {
1489 space_outliner, te_iter, limit, callback_test);
1490 if (te_sub !=
NULL) {
1510 const float view_co,
1511 const float view_co_limit)
1524 while (te !=
NULL) {
1526 space_outliner, te, view_co_limit, callback_test);
1527 if (te_sub !=
NULL) {
1572 space_outliner, region->
v2d.
cur.
ymax, limit);
1618 return exclude_filter;
1623 const int exclude_filter)
1683 bool is_visible =
true;
1701 if (base !=
BASACT(view_layer)) {
1707 is_visible = !is_visible;
1735 fn_flag |= FNM_CASEFOLD;
1738 return fnmatch(name, te->
name, fn_flag) == 0;
1785 const char *search_string,
1786 const int exclude_filter)
1791 for (te = lb->
first; te; te = te_next) {
1797 space_outliner, view_layer, &te->
subtree, search_string, exclude_filter);
1804 space_outliner, view_layer, &te->
subtree, search_string, exclude_filter);
1822 space_outliner, view_layer, &te->
subtree, search_string, exclude_filter) == 0) {
1834 space_outliner, view_layer, &te->
subtree, search_string, exclude_filter);
1849 if (exclude_filter == 0) {
1863 space_outliner, view_layer, &space_outliner->
tree,
search_string, exclude_filter);
const char * BKE_collection_ui_name_get(struct Collection *collection)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
void BKE_main_id_clear_newpoins(struct Main *bmain)
void BKE_outliner_treehash_clear_used(void *treehash)
struct TreeStoreElem * BKE_outliner_treehash_lookup_unused(void *treehash, short type, short nr, struct ID *id)
void * BKE_outliner_treehash_create_from_treestore(struct BLI_mempool *treestore)
void * BKE_outliner_treehash_rebuild_from_treestore(void *treehash, struct BLI_mempool *treestore)
void BKE_outliner_treehash_free(void *treehash)
void BKE_outliner_treehash_add_element(void *treehash, struct TreeStoreElem *elem)
#define BLI_STATIC_ASSERT(a, msg)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_mempool_iternew(BLI_mempool *pool, BLI_mempool_iter *iter) ATTR_NONNULL()
void * BLI_mempool_iterstep(BLI_mempool_iter *iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
BLI_mempool * BLI_mempool_create(unsigned int esize, unsigned int totelem, unsigned int pchunk, unsigned int flag) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_mempool_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_mempool_destroy(BLI_mempool *pool) ATTR_NONNULL(1)
int BLI_mempool_len(BLI_mempool *pool) ATTR_NONNULL(1)
void BLI_rctf_translate(struct rctf *rect, float x, float y)
int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_strcasecmp_natural(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
char * BLI_strncpy_ensure_pad(char *__restrict dst, const char *__restrict src, const char pad, size_t maxncpy) ATTR_NONNULL()
#define ID_IS_LINKED(_id)
Object groups, one object can be in many groups at once.
@ eGpencilModifierType_Lattice
@ eGpencilModifierType_Hook
@ eGpencilModifierType_Armature
@ eModifierType_ParticleSystem
Object is a sort of wrapper for general info.
#define TSE_IS_REAL_ID(_tse)
@ TSE_VIEW_COLLECTION_BASE
@ TSE_LIBRARY_OVERRIDE_BASE
@ TSE_SCENE_COLLECTION_BASE
@ TSE_GPENCIL_EFFECT_BASE
#define BASACT(_view_layer)
#define SO_FILTER_OB_STATE
@ SO_FILTER_OB_STATE_ACTIVE
@ SO_FILTER_NO_OB_CONTENT
@ SO_FILTER_OB_STATE_SELECTABLE
@ SO_FILTER_OB_STATE_INVERSE
@ SO_FILTER_OB_STATE_SELECTED
@ SO_FILTER_OB_STATE_VISIBLE
@ SO_FILTER_NO_COLLECTION
@ SO_FILTER_NO_OB_ARMATURE
#define SO_FILTER_OB_TYPE
@ SO_FILTER_OB_SELECTABLE
_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 type
_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 v1
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const void * element
ATTR_WARN_UNUSED_RESULT const BMVert * v2
FreestyleLineStyle linestyle
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
bool outliner_is_collection_tree_element(const TreeElement *te)
void outliner_set_coordinates(ARegion *region, SpaceOutliner *space_outliner)
#define TREESTORE_ID_TYPE(_id)
#define SEARCHING_OUTLINER(sov)
@ TE_CHILD_NOT_IN_COLLECTION
#define SUPPORT_FILTER_OUTLINER(space_outliner_)
TreeElement * outliner_find_tree_element(ListBase *lb, const TreeStoreElem *store_elem)
TreeElement * outliner_find_item_at_y(const SpaceOutliner *space_outliner, const ListBase *tree, float view_co_y)
#define TSELEM_OPEN(telm, sv)
TreeElement * outliner_add_collection_recursive(SpaceOutliner *space_outliner, Collection *collection, TreeElement *ten)
static bool outliner_element_visible_get(ViewLayer *view_layer, TreeElement *te, const int exclude_filter)
static void outliner_store_scrolling_position(SpaceOutliner *space_outliner, ARegion *region, OutlinerTreeElementFocus *focus)
static int outliner_exclude_filter_get(const SpaceOutliner *space_outliner)
static bool outliner_filter_has_name(TreeElement *te, const char *name, int flags)
static void outliner_filter_tree(SpaceOutliner *space_outliner, ViewLayer *view_layer)
bool outliner_animdata_test(const AnimData *adt)
static TreeElement * outliner_find_first_desired_element_at_y(const SpaceOutliner *space_outliner, const float view_co, const float view_co_limit)
static bool outliner_element_is_collection_or_object(TreeElement *te)
bool outliner_requires_rebuild_on_select_or_active_change(const SpaceOutliner *space_outliner)
void outliner_build_tree(Main *mainvar, Scene *scene, ViewLayer *view_layer, SpaceOutliner *space_outliner, ARegion *region)
static int outliner_filter_subtree(SpaceOutliner *space_outliner, ViewLayer *view_layer, ListBase *lb, const char *search_string, const int exclude_filter)
static int treesort_alpha(const void *v1, const void *v2)
BLI_INLINE void outliner_add_collection_objects(SpaceOutliner *space_outliner, ListBase *tree, Collection *collection, TreeElement *parent)
static void outliner_storage_cleanup(SpaceOutliner *space_outliner)
void outliner_free_tree(ListBase *tree)
static bool test_collection_callback(TreeElement *te)
static void outliner_add_id_contents(SpaceOutliner *space_outliner, TreeElement *te, TreeStoreElem *tselem, ID *id)
struct tTreeSort tTreeSort
static int treesort_child_not_in_collection(const void *v1, const void *v2)
BLI_INLINE void outliner_add_collection_init(TreeElement *te, Collection *collection)
static void outliner_sort(ListBase *lb)
TreeElement * outliner_add_element(SpaceOutliner *space_outliner, ListBase *lb, void *idv, TreeElement *parent, short type, short index)
static void check_persistent(SpaceOutliner *space_outliner, TreeElement *te, ID *id, short type, short nr)
static void outliner_add_object_contents(SpaceOutliner *space_outliner, TreeElement *te, TreeStoreElem *tselem, Object *ob)
bool outliner_requires_rebuild_on_open_change(const SpaceOutliner *space_outliner)
void outliner_free_tree_element(TreeElement *element, ListBase *parent_subtree)
static void outliner_restore_scrolling_position(SpaceOutliner *space_outliner, ARegion *region, OutlinerTreeElementFocus *focus)
static bool test_object_callback(TreeElement *te)
void outliner_cleanup_tree(SpaceOutliner *space_outliner)
void outliner_make_object_parent_hierarchy(ListBase *lb)
static void outliner_add_bone(SpaceOutliner *space_outliner, ListBase *lb, ID *id, Bone *curBone, TreeElement *parent, int *a)
static TreeElement * outliner_find_first_desired_element_at_y_recursive(const SpaceOutliner *space_outliner, TreeElement *te, const float limit, bool(*callback_test)(TreeElement *))
static void outliner_collections_children_sort(ListBase *lb)
static TreeElement * outliner_extract_children_from_subtree(TreeElement *element, ListBase *parent_subtree)
static int treesort_alpha_ob(const void *v1, const void *v2)
struct OutlinerTreeElementFocus OutlinerTreeElementFocus
char * RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len)
const char * RNA_struct_ui_name(const StructRNA *type)
PropertyType RNA_property_type(PropertyRNA *prop)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr)
char RNA_property_array_item_char(PropertyRNA *prop, int index)
int RNA_property_flag(PropertyRNA *prop)
int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_iterator_property(StructRNA *type)
int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_property_ui_name(const PropertyRNA *prop)
struct FreestyleLineStyle * linestyle
struct FreestyleLineSet * next
struct Collection * instance_collection
ListBase greasepencil_modifiers
struct TreeDisplay * tree_display
SpaceOutliner_Runtime * runtime
struct BLI_mempool * treestore
struct TreeElement * parent
struct TreeElementType * type
TreeStoreElem * store_elem
struct TreeElement * prev
struct TreeElement * next
The data to build the tree from.
struct FreestyleConfig freestyle_config
struct bPoseChannel * parent
void outliner_tree_display_destroy(TreeDisplay **tree_display)
ListBase outliner_tree_display_build_tree(TreeDisplay *tree_display, TreeSourceData *source_data)
TreeDisplay * outliner_tree_display_create(eSpaceOutliner_Mode mode, SpaceOutliner *space_outliner)
void outliner_tree_element_type_free(TreeElementType **type)
bool outliner_tree_element_type_expand_poll(TreeElementType *type, SpaceOutliner *space_outliner)
TreeElementType * outliner_tree_element_type_create(int type, TreeElement *legacy_te, void *idv)
bool outliner_tree_element_type_is_expand_valid(TreeElementType *type)
void outliner_tree_element_type_expand(TreeElementType *type, SpaceOutliner *space_outliner)
void outliner_tree_element_type_post_expand(TreeElementType *type, SpaceOutliner *space_outliner)