diff --git a/source/blender/editors/include/UI_interface_icons.hh b/source/blender/editors/include/UI_interface_icons.hh index 99a09bc8d5d..b21ee3015b0 100644 --- a/source/blender/editors/include/UI_interface_icons.hh +++ b/source/blender/editors/include/UI_interface_icons.hh @@ -16,6 +16,7 @@ struct Collection; struct ID; struct ImBuf; +struct Object; struct PointerRNA; struct PreviewImage; struct Scene; @@ -110,6 +111,7 @@ int UI_icon_from_rnaptr(const bContext *C, PointerRNA *ptr, int rnaicon, bool bi int UI_icon_from_idcode(int idcode); int UI_icon_from_library(const ID *id); int UI_icon_from_object_mode(int mode); +int UI_icon_from_object_type(const Object *object); int UI_icon_color_from_collection(const Collection *collection); void UI_icon_text_overlay_init_from_count(IconTextOverlay *text_overlay, diff --git a/source/blender/editors/interface/interface_icons.cc b/source/blender/editors/interface/interface_icons.cc index 5b584c01a9e..303e0524cef 100644 --- a/source/blender/editors/interface/interface_icons.cc +++ b/source/blender/editors/interface/interface_icons.cc @@ -23,6 +23,7 @@ #include "DNA_dynamicpaint_types.h" #include "DNA_gpencil_legacy_types.h" #include "DNA_grease_pencil_types.h" +#include "DNA_object_force_types.h" #include "DNA_screen_types.h" #include "DNA_sequence_types.h" @@ -1917,6 +1918,9 @@ int ui_id_icon_get(const bContext *C, ID *id, const bool big) case ID_SCR: iconid = ui_id_screen_get_icon(C, id); break; + case ID_OB: + iconid = UI_icon_from_object_type((Object *)id); + break; case ID_GR: iconid = UI_icon_color_from_collection((Collection *)id); break; @@ -2128,6 +2132,56 @@ int UI_icon_from_object_mode(const int mode) return ICON_NONE; } +int UI_icon_from_object_type(const Object *object) +{ + switch (object->type) { + case OB_LAMP: + return ICON_OUTLINER_OB_LIGHT; + case OB_MESH: + return ICON_OUTLINER_OB_MESH; + case OB_CAMERA: + return ICON_OUTLINER_OB_CAMERA; + case OB_CURVES_LEGACY: + return ICON_OUTLINER_OB_CURVE; + case OB_MBALL: + return ICON_OUTLINER_OB_META; + case OB_LATTICE: + return ICON_OUTLINER_OB_LATTICE; + case OB_ARMATURE: + return ICON_OUTLINER_OB_ARMATURE; + case OB_FONT: + return ICON_OUTLINER_OB_FONT; + case OB_SURF: + return ICON_OUTLINER_OB_SURFACE; + case OB_SPEAKER: + return ICON_OUTLINER_OB_SPEAKER; + case OB_LIGHTPROBE: + return ICON_OUTLINER_OB_LIGHTPROBE; + case OB_CURVES: + return ICON_OUTLINER_OB_CURVES; + case OB_POINTCLOUD: + return ICON_OUTLINER_OB_POINTCLOUD; + case OB_VOLUME: + return ICON_OUTLINER_OB_VOLUME; + case OB_EMPTY: + if (object->instance_collection && (object->transflag & OB_DUPLICOLLECTION)) { + return ICON_OUTLINER_OB_GROUP_INSTANCE; + } + else if (object->empty_drawtype == OB_EMPTY_IMAGE) { + return ICON_OUTLINER_OB_IMAGE; + } + else if (object->pd && object->pd->forcefield) { + return ICON_OUTLINER_OB_FORCE_FIELD; + } + else { + return ICON_OUTLINER_OB_EMPTY; + } + case OB_GREASE_PENCIL: + return ICON_OUTLINER_OB_GREASEPENCIL; + } + return ICON_NONE; +} + int UI_icon_color_from_collection(const Collection *collection) { int icon = ICON_OUTLINER_COLLECTION; diff --git a/source/blender/editors/space_outliner/outliner_draw.cc b/source/blender/editors/space_outliner/outliner_draw.cc index 4397e0d9764..c2dd1417bdc 100644 --- a/source/blender/editors/space_outliner/outliner_draw.cc +++ b/source/blender/editors/space_outliner/outliner_draw.cc @@ -12,7 +12,6 @@ #include "DNA_gpencil_legacy_types.h" #include "DNA_light_types.h" #include "DNA_lightprobe_types.h" -#include "DNA_object_force_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_sequence_types.h" @@ -2442,54 +2441,7 @@ static void outliner_draw_warning_column(uiBlock *block, static BIFIconID tree_element_get_icon_from_id(const ID *id) { if (GS(id->name) == ID_OB) { - const Object *ob = (Object *)id; - switch (ob->type) { - case OB_LAMP: - return ICON_OUTLINER_OB_LIGHT; - case OB_MESH: - return ICON_OUTLINER_OB_MESH; - case OB_CAMERA: - return ICON_OUTLINER_OB_CAMERA; - case OB_CURVES_LEGACY: - return ICON_OUTLINER_OB_CURVE; - case OB_MBALL: - return ICON_OUTLINER_OB_META; - case OB_LATTICE: - return ICON_OUTLINER_OB_LATTICE; - case OB_ARMATURE: - return ICON_OUTLINER_OB_ARMATURE; - case OB_FONT: - return ICON_OUTLINER_OB_FONT; - case OB_SURF: - return ICON_OUTLINER_OB_SURFACE; - case OB_SPEAKER: - return ICON_OUTLINER_OB_SPEAKER; - case OB_LIGHTPROBE: - return ICON_OUTLINER_OB_LIGHTPROBE; - case OB_CURVES: - return ICON_OUTLINER_OB_CURVES; - case OB_POINTCLOUD: - return ICON_OUTLINER_OB_POINTCLOUD; - case OB_VOLUME: - return ICON_OUTLINER_OB_VOLUME; - case OB_EMPTY: - if (ob->instance_collection && (ob->transflag & OB_DUPLICOLLECTION)) { - return ICON_OUTLINER_OB_GROUP_INSTANCE; - } - else if (ob->empty_drawtype == OB_EMPTY_IMAGE) { - return ICON_OUTLINER_OB_IMAGE; - } - else if (ob->pd && ob->pd->forcefield) { - return ICON_OUTLINER_OB_FORCE_FIELD; - } - else { - return ICON_OUTLINER_OB_EMPTY; - } - case OB_GREASE_PENCIL: - return ICON_OUTLINER_OB_GREASEPENCIL; - } - - return ICON_NONE; + return UI_icon_from_object_type((Object *)id); } /* TODO(sergey): Casting to short here just to handle ID_NLA which is