diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2015-08-10 16:41:28 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2015-08-10 16:41:28 +0300 |
commit | 0c82ba4213577c1b02b2060888f8c43c265c1637 (patch) | |
tree | 870d6cdf52b97cd199c8ec8000d7cbbb029465bb /source/blender/blenkernel/intern | |
parent | d70ffd375fdf444f50a693f74ca79fe248337cda (diff) |
Data previews: add preview to Object, Group and Scene.
This commit does not add anything yet to users, it’s purely internal one.
Useful commit is next. ;)
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/group.c | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/icons.c | 6 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 9 |
4 files changed, 32 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c index ae3ab833a87..ae99ff1bbf3 100644 --- a/source/blender/blenkernel/intern/group.c +++ b/source/blender/blenkernel/intern/group.c @@ -49,6 +49,7 @@ #include "BKE_depsgraph.h" #include "BKE_global.h" #include "BKE_group.h" +#include "BKE_icons.h" #include "BKE_library.h" #include "BKE_main.h" #include "BKE_object.h" @@ -64,7 +65,9 @@ void BKE_group_free(Group *group) { /* don't free group itself */ GroupObject *go; - + + BKE_previewimg_free(&group->preview); + while ((go = BLI_pophead(&group->gobject))) { free_group_object(go); } @@ -139,6 +142,9 @@ Group *BKE_group_add(Main *bmain, const char *name) group = BKE_libblock_alloc(bmain, ID_GR, name); group->layer = (1 << 20) - 1; + + group->preview = NULL; + return group; } @@ -149,6 +155,8 @@ Group *BKE_group_copy(Group *group) groupn = BKE_libblock_copy(&group->id); BLI_duplicatelist(&groupn->gobject, &group->gobject); + /* Do not copy group's preview (same behavior as for objects). */ + if (group->id.lib) { BKE_id_lib_local_paths(G.main, group->id.lib, &groupn->id); } diff --git a/source/blender/blenkernel/intern/icons.c b/source/blender/blenkernel/intern/icons.c index 7696249f2de..2171f193bac 100644 --- a/source/blender/blenkernel/intern/icons.c +++ b/source/blender/blenkernel/intern/icons.c @@ -37,8 +37,11 @@ #include "MEM_guardedalloc.h" +#include "DNA_group_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" +#include "DNA_object_types.h" +#include "DNA_scene_types.h" #include "DNA_texture_types.h" #include "DNA_world_types.h" #include "DNA_brush_types.h" @@ -228,6 +231,9 @@ PreviewImage **BKE_previewimg_id_get_p(ID *id) ID_PRV_CASE(ID_LA, Lamp); ID_PRV_CASE(ID_IM, Image); ID_PRV_CASE(ID_BR, Brush); + ID_PRV_CASE(ID_OB, Object); + ID_PRV_CASE(ID_GR, Group); + ID_PRV_CASE(ID_SCE, Scene); #undef ID_PRV_CASE } diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 647aadf237c..65599896f02 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -87,6 +87,7 @@ #include "BKE_effect.h" #include "BKE_fcurve.h" #include "BKE_group.h" +#include "BKE_icons.h" #include "BKE_key.h" #include "BKE_lamp.h" #include "BKE_lattice.h" @@ -457,6 +458,8 @@ void BKE_object_free_ex(Object *ob, bool do_id_user) free_path(ob->curve_cache->path); MEM_freeN(ob->curve_cache); } + + BKE_previewimg_free(&ob->preview); } void BKE_object_free(Object *ob) @@ -1040,6 +1043,7 @@ Object *BKE_object_add_only_object(Main *bmain, int type, const char *name) ob->fall_speed = 55.0f; ob->col_group = 0x01; ob->col_mask = 0xffff; + ob->preview = NULL; /* NT fluid sim defaults */ ob->fluidsimSettings = NULL; @@ -1557,6 +1561,8 @@ Object *BKE_object_copy_ex(Main *bmain, Object *ob, bool copy_caches) BKE_id_lib_local_paths(bmain, ob->id.lib, &obn->id); } + /* Do not copy object's preview (mostly due to the fact renderers create temp copy of objects). */ + return obn; } @@ -1593,6 +1599,8 @@ static void extern_local_object(Object *ob) id_lib_extern((ID *)psys->part); modifiers_foreachIDLink(ob, extern_local_object__modifiersForeachIDLink, NULL); + + ob->preview = NULL; } void BKE_object_make_local(Object *ob) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index b518ae4b4a9..14cb5859918 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -72,6 +72,7 @@ #include "BKE_global.h" #include "BKE_gpencil.h" #include "BKE_group.h" +#include "BKE_icons.h" #include "BKE_idprop.h" #include "BKE_image.h" #include "BKE_library.h" @@ -346,6 +347,10 @@ Scene *BKE_scene_copy(Scene *sce, int type) } } + if (sce->preview) { + scen->preview = BKE_previewimg_copy(sce->preview); + } + return scen; } @@ -455,6 +460,8 @@ void BKE_scene_free(Scene *sce) BKE_sound_destroy_scene(sce); BKE_color_managed_view_settings_free(&sce->view_settings); + + BKE_previewimg_free(&sce->preview); } Scene *BKE_scene_add(Main *bmain, const char *name) @@ -735,6 +742,8 @@ Scene *BKE_scene_add(Main *bmain, const char *name) copy_v2_fl2(sce->safe_areas.title_center, 17.5f / 100.0f, 5.0f / 100.0f); copy_v2_fl2(sce->safe_areas.action_center, 15.0f / 100.0f, 5.0f / 100.0f); + sce->preview = NULL; + return sce; } |