Commit: 7aec4a8a456f46c35af88df79a6e89ef06a8be56 Author: Jeroen Bakker Date: Fri May 6 16:13:32 2022 +0200 Branches: temp-T97907-compositor-meta-data https://developer.blender.org/rB7aec4a8a456f46c35af88df79a6e89ef06a8be56
Use file meta data in composior. =================================================================== M source/blender/compositor/intern/COM_MetaData.cc M source/blender/compositor/intern/COM_MetaData.h M source/blender/compositor/operations/COM_ImageOperation.cc M source/blender/compositor/operations/COM_ImageOperation.h M source/blender/compositor/operations/COM_ViewerOperation.cc =================================================================== diff --git a/source/blender/compositor/intern/COM_MetaData.cc b/source/blender/compositor/intern/COM_MetaData.cc index 9ee3d7e5c22..0b64b353101 100644 --- a/source/blender/compositor/intern/COM_MetaData.cc +++ b/source/blender/compositor/intern/COM_MetaData.cc @@ -3,6 +3,7 @@ #include "COM_MetaData.h" +#include "BKE_idprop.h" #include "BKE_image.h" #include "RE_pipeline.h" @@ -14,6 +15,17 @@ void MetaData::add(const blender::StringRef key, const blender::StringRef value) entries_.add(key, value); } +static void add_property(IDProperty *id_prop, void *user_data) +{ + MetaData *meta_data = static_cast<MetaData *>(user_data); + meta_data->add(id_prop->name, IDP_String(id_prop)); +} + +void MetaData::add(IDProperty *id_prop) +{ + IDP_foreach_property(id_prop, IDP_TYPE_FILTER_STRING, add_property, this); +} + void MetaData::add_cryptomatte_entry(const blender::StringRef layer_name, const blender::StringRefNull key, const blender::StringRef value) diff --git a/source/blender/compositor/intern/COM_MetaData.h b/source/blender/compositor/intern/COM_MetaData.h index de09d9995db..c1474ac16b7 100644 --- a/source/blender/compositor/intern/COM_MetaData.h +++ b/source/blender/compositor/intern/COM_MetaData.h @@ -43,6 +43,8 @@ class MetaData { */ void replace_hash_neutral_cryptomatte_keys(const blender::StringRef layer_name); void add_to_render_result(RenderResult *render_result) const; + void add(IDProperty *properties); + #ifdef WITH_CXX_GUARDEDALLOC MEM_CXX_CLASS_ALLOC_FUNCS("COM:MetaData") #endif diff --git a/source/blender/compositor/operations/COM_ImageOperation.cc b/source/blender/compositor/operations/COM_ImageOperation.cc index a9ab414670f..3e0dd4f6971 100644 --- a/source/blender/compositor/operations/COM_ImageOperation.cc +++ b/source/blender/compositor/operations/COM_ImageOperation.cc @@ -215,4 +215,13 @@ void ImageDepthOperation::update_memory_buffer_partial(MemoryBuffer *output, } } +std::unique_ptr<MetaData> ImageOperation::get_meta_data() +{ + std::unique_ptr<MetaData> meta_data = std::unique_ptr<MetaData>(); + if (buffer_->metadata != nullptr) { + meta_data->add(buffer_->metadata); + } + return meta_data; +} + } // namespace blender::compositor diff --git a/source/blender/compositor/operations/COM_ImageOperation.h b/source/blender/compositor/operations/COM_ImageOperation.h index 1eaa828fe2a..d10d283697d 100644 --- a/source/blender/compositor/operations/COM_ImageOperation.h +++ b/source/blender/compositor/operations/COM_ImageOperation.h @@ -78,6 +78,7 @@ class ImageOperation : public BaseImageOperation { void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span<MemoryBuffer *> inputs) override; + std::unique_ptr<MetaData> get_meta_data() override; }; class ImageAlphaOperation : public BaseImageOperation { public: diff --git a/source/blender/compositor/operations/COM_ViewerOperation.cc b/source/blender/compositor/operations/COM_ViewerOperation.cc index 58392b8a638..8892f628466 100644 --- a/source/blender/compositor/operations/COM_ViewerOperation.cc +++ b/source/blender/compositor/operations/COM_ViewerOperation.cc @@ -201,6 +201,8 @@ void ViewerOperation::update_image(const rcti *rect) rect->xmax, rect->ymax); + std::unique_ptr<MetaData> metadata = image_input_->get_meta_data(); + /* This could be improved to use partial updates. For now disabled as the full frame compositor * would not use partial frames anymore and the image engine requires more testing. */ BKE_image_partial_update_mark_full_update(image_); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs