Blender V4.3
COM_MultilayerImageOperation.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
6
7#include "BLI_string.h"
8
9#include "IMB_interp.hh"
10
11namespace blender::compositor {
12
14{
15 if (rd_ == nullptr || image_ == nullptr) {
16 return nullptr;
17 }
18
21 if (ibuf == nullptr || (ibuf->byte_buffer.data == nullptr && ibuf->float_buffer.data == nullptr))
22 {
23 BKE_image_release_ibuf(image_, ibuf, nullptr);
24 return nullptr;
25 }
26 return ibuf;
27}
28
30 const rcti &area,
31 Span<MemoryBuffer *> /*inputs*/)
32{
33 if (buffer_) {
34 output->copy_from(buffer_, area);
35 }
36 else {
37 output->clear();
38 }
39}
40
41std::unique_ptr<MetaData> MultilayerColorOperation::get_meta_data()
42{
44
45 if (!image_) {
46 return nullptr;
47 }
48
49 MetaDataExtractCallbackData callback_data = {nullptr};
50 std::string full_layer_name = layer_name_ + "." + pass_name_;
51 blender::StringRef cryptomatte_layer_name =
53 callback_data.set_cryptomatte_keys(cryptomatte_layer_name);
54
57
58 return std::move(callback_data.meta_data);
59}
60
61} // namespace blender::compositor
void BKE_image_multilayer_stamp_info_callback(void *data, const Image &image, StampCallback callback, bool noskip)
ImBuf * BKE_image_acquire_multilayer_view_ibuf(const RenderData &render_data, Image &image, const ImageUser &image_user, const char *pass_name, const char *view_name)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
#define BLI_assert(a)
Definition BLI_assert.h:50
a MemoryBuffer contains access to the data
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
std::unique_ptr< MetaData > get_meta_data() override
StringRef BKE_cryptomatte_extract_layer_name(const StringRef render_pass_name)
ImBufFloatBuffer float_buffer
ImBufByteBuffer byte_buffer
static void extract_cryptomatte_meta_data(void *_data, const char *propname, char *propvalue, int)
void set_cryptomatte_keys(blender::StringRef cryptomatte_layer_name)