10#define DNA_DEPRECATED_ALLOW
51#define USE_OUTLINER_DRAW_CLAMPS_SCROLL_HACK
56 : tree_display(nullptr), tree_hash(nullptr)
74 region->v2d.minzoom = region->v2d.maxzoom = 1.0f;
89 View2D *v2d = ®ion->v2d;
91#ifdef USE_OUTLINER_DRAW_CLAMPS_SCROLL_HACK
92 const rctf v2d_cur_prev = v2d->
cur;
98#ifdef USE_OUTLINER_DRAW_CLAMPS_SCROLL_HACK
324 msg_sub_value_region_tag_redraw.
owner = region;
325 msg_sub_value_region_tag_redraw.user_data = region;
375 space_outliner = MEM_cnew<SpaceOutliner>(
"initoutliner");
385 region = MEM_cnew<ARegion>(
"header for outliner");
392 region = MEM_cnew<ARegion>(
"main region for outliner");
410 MEM_delete(space_outliner->
runtime);
418 if (space_outliner->
runtime ==
nullptr) {
419 space_outliner->
runtime = MEM_new<SpaceOutliner_Runtime>(
"SpaceOutliner_Runtime");
426 SpaceOutliner *space_outliner_new = MEM_cnew<SpaceOutliner>(__func__, *space_outliner);
435 space_outliner_new->
runtime = MEM_new<SpaceOutliner_Runtime>(
"SpaceOutliner_runtime dup",
454 bool changed =
false;
455 bool unassigned =
false;
506 const int cb_flag = (tselem->id !=
nullptr && allow_pointer_access &&
512 else if (!is_readonly) {
513 tselem->id =
nullptr;
548 for (
int i = 0; i < ts->
usedelem; i++) {
551 *new_elem = elems[i];
558 space_outliner->
runtime =
nullptr;
574 tselem->
id =
nullptr;
618 ts_flat.totelem = elems;
649 std::unique_ptr<SpaceType> st = std::make_unique<SpaceType>();
655 st->create = outliner_create;
656 st->free = outliner_free;
657 st->init = outliner_init;
658 st->duplicate = outliner_duplicate;
659 st->operatortypes = outliner_operatortypes;
660 st->keymap = outliner_keymap;
661 st->dropboxes = outliner_dropboxes;
662 st->id_remap = outliner_id_remap;
663 st->foreach_id = outliner_foreach_id;
664 st->deactivate = outliner_deactivate;
665 st->blend_read_data = outliner_space_blend_read_data;
666 st->blend_read_after_liblink = outliner_space_blend_read_after_liblink;
667 st->blend_write = outliner_space_blend_write;
670 art = MEM_cnew<ARegionType>(
"spacetype outliner region");
674 art->
init = outliner_main_region_init;
675 art->
draw = outliner_main_region_draw;
676 art->
free = outliner_main_region_free;
677 art->
listener = outliner_main_region_listener;
679 art->
context = outliner_main_region_context;
683 art = MEM_cnew<ARegionType>(
"spacetype outliner header region");
688 art->
init = outliner_header_region_init;
689 art->
draw = outliner_header_region_draw;
690 art->
free = outliner_header_region_free;
691 art->
listener = outliner_header_region_listener;
@ IDWALK_CB_EMBEDDED_NOT_OWNING
int BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data)
@ IDWALK_NO_ORIG_POINTERS_ACCESS
#define BKE_LIB_FOREACHID_PROCESS_ID(data_, id_, cb_flag_)
@ ID_REMAP_RESULT_SOURCE_REMAPPED
@ ID_REMAP_RESULT_SOURCE_UNASSIGNED
@ ID_REMAP_RESULT_SOURCE_NOT_MAPPABLE
@ ID_REMAP_RESULT_SOURCE_UNAVAILABLE
void BKE_spacetype_register(std::unique_ptr< SpaceType > st)
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_mempool_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL 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()
void void * BLI_mempool_as_arrayN(BLI_mempool *pool, const char *allocstr) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
BLI_mempool * BLI_mempool_create(unsigned int esize, unsigned int elem_num, unsigned int pchunk, unsigned int flag) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
int BLI_mempool_len(const BLI_mempool *pool) ATTR_NONNULL(1)
void BLI_mempool_destroy(BLI_mempool *pool) ATTR_NONNULL(1)
bool BLI_rctf_compare(const struct rctf *rect_a, const struct rctf *rect_b, float limit)
#define STRNCPY(dst, src)
#define POINTER_OFFSET(v, ofs)
void * BLO_read_get_new_data_address_no_us(BlendDataReader *reader, const void *old_address, size_t expected_size)
#define BLO_write_struct_array_at_address(writer, struct_name, array_size, address, data_ptr)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_write_struct_at_address(writer, struct_name, address, data_ptr)
Object is a sort of wrapper for general info.
#define TSE_IS_REAL_ID(_tse)
@ SO_FILTER_NO_VIEW_LAYERS
@ V2D_SCROLL_HORIZONTAL_HIDE
@ V2D_SCROLL_VERTICAL_HIDE
#define WM_OUTLINER_SYNC_SELECT_FROM_ALL
void ED_area_tag_redraw(ScrArea *area)
void ED_region_header(const bContext *C, ARegion *region)
void ED_region_header_init(ARegion *region)
void ED_region_tag_redraw_no_rebuild(ARegion *region)
void ED_region_tag_redraw(ARegion *region)
void ED_region_do_msg_notify_tag_redraw(bContext *C, wmMsgSubscribeKey *msg_key, wmMsgSubscribeValue *msg_val)
void ED_spacetype_outliner()
Read Guarded memory(de)allocation.
void UI_ThemeClearColor(int colorid)
void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom)
void UI_view2d_view_restore(const bContext *C)
void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
#define ND_RENDER_OPTIONS
#define ND_LIB_OVERRIDE_CHANGED
#define ND_BONE_COLLECTION
#define NS_LAYER_COLLECTION
#define ND_SPACE_OUTLINER
IDRemapperApplyResult apply(ID **r_id_ptr, IDRemapperApplyOptions options, ID *id_self=nullptr) const
size_t(* MEM_allocN_len)(const void *vmemh)
void MEM_freeN(void *vmemh)
static void outliner_header_region_free(ARegion *)
static void outliner_init(wmWindowManager *, ScrArea *area)
static void outliner_foreach_id(SpaceLink *space_link, LibraryForeachIDData *data)
static void outliner_main_region_draw(const bContext *C, ARegion *region)
static void outliner_space_blend_write(BlendWriter *writer, SpaceLink *sl)
bool outliner_flag_set(const SpaceOutliner &space_outliner, const short flag, const short set)
bool outliner_requires_rebuild_on_select_or_active_change(const SpaceOutliner *space_outliner)
static void write_space_outliner(BlendWriter *writer, const SpaceOutliner *space_outliner)
void outliner_free_tree(ListBase *tree)
static SpaceLink * outliner_duplicate(SpaceLink *sl)
static void outliner_space_blend_read_after_liblink(BlendLibReader *, ID *, SpaceLink *sl)
static void outliner_header_region_listener(const wmRegionListenerParams *params)
static void outliner_space_blend_read_data(BlendDataReader *reader, SpaceLink *sl)
static void outliner_header_region_init(wmWindowManager *, ARegion *region)
static void outliner_free(SpaceLink *sl)
static void outliner_main_region_message_subscribe(const wmRegionMessageSubscribeParams *params)
static void outliner_main_region_listener(const wmRegionListenerParams *params)
static SpaceLink * outliner_create(const ScrArea *, const Scene *)
static void outliner_id_remap(ScrArea *area, SpaceLink *slink, const blender::bke::id::IDRemapper &mappings)
static void outliner_main_region_init(wmWindowManager *wm, ARegion *region)
static void outliner_deactivate(ScrArea *area)
static void outliner_header_region_draw(const bContext *C, ARegion *region)
static void outliner_main_region_free(ARegion *)
void draw_outliner(const bContext *C, bool do_rebuild)
void(* message_subscribe)(const wmRegionMessageSubscribeParams *params)
void(* listener)(const wmRegionListenerParams *params)
bContextDataCallback context
void(* draw)(const bContext *C, ARegion *region)
void(* init)(wmWindowManager *wm, ARegion *region)
SpaceOutliner_Runtime * runtime
struct BLI_mempool * treestore
std::unique_ptr< treehash::TreeHash > tree_hash
struct wmKeyConfig * defaultconf
Establish and manage Outliner trees for different display modes.
ListBase * WM_dropboxmap_find(const char *idname, int spaceid, int regionid)
wmEventHandler_Dropbox * WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes)
wmEventHandler_Keymap * WM_event_add_keymap_handler_v2d_mask(ListBase *handlers, wmKeyMap *keymap)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
#define WM_msg_subscribe_rna_anon_prop(mbus, type_, prop_, value)