2023-08-16 00:20:26 +10:00
|
|
|
/* SPDX-FileCopyrightText: 2022 Blender Authors
|
2023-05-31 16:19:06 +02:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
2022-02-18 07:55:36 +01:00
|
|
|
|
|
|
|
|
/** \file
|
|
|
|
|
* \ingroup draw_engine
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
2025-01-07 12:39:13 +01:00
|
|
|
#include <cstring>
|
|
|
|
|
|
|
|
|
|
#include "DNA_color_types.h"
|
|
|
|
|
#include "DNA_image_types.h"
|
|
|
|
|
|
2024-11-29 15:46:44 +01:00
|
|
|
namespace blender::image_engine {
|
2022-12-09 10:29:34 +01:00
|
|
|
|
2022-02-18 07:55:36 +01:00
|
|
|
/**
|
|
|
|
|
* ImageUsage contains data of the image and image user to identify changes that require a rebuild
|
2022-03-01 11:35:11 +01:00
|
|
|
* the texture slots.
|
2022-02-18 07:55:36 +01:00
|
|
|
*/
|
|
|
|
|
struct ImageUsage {
|
|
|
|
|
/** Render pass of the image that is used. */
|
|
|
|
|
short pass = 0;
|
2022-03-31 13:00:10 +11:00
|
|
|
/** Layer of the image that is used. */
|
2022-02-18 07:55:36 +01:00
|
|
|
short layer = 0;
|
|
|
|
|
/** View of the image that is used. */
|
|
|
|
|
short view = 0;
|
|
|
|
|
|
2022-02-18 08:22:18 +01:00
|
|
|
ColorManagedColorspaceSettings colorspace_settings;
|
|
|
|
|
/** IMA_ALPHA_* */
|
|
|
|
|
char alpha_mode;
|
2022-03-01 11:35:11 +01:00
|
|
|
bool last_tile_drawing;
|
2022-02-18 08:22:18 +01:00
|
|
|
|
2022-03-01 08:40:08 +01:00
|
|
|
const void *last_image = nullptr;
|
|
|
|
|
|
2022-02-18 07:55:36 +01:00
|
|
|
ImageUsage() = default;
|
2024-12-02 16:10:02 +01:00
|
|
|
ImageUsage(const ::Image *image, const ::ImageUser *image_user, bool do_tile_drawing)
|
2022-02-18 07:55:36 +01:00
|
|
|
{
|
|
|
|
|
pass = image_user ? image_user->pass : 0;
|
|
|
|
|
layer = image_user ? image_user->layer : 0;
|
|
|
|
|
view = image_user ? image_user->multi_index : 0;
|
2022-02-18 08:22:18 +01:00
|
|
|
colorspace_settings = image->colorspace_settings;
|
|
|
|
|
alpha_mode = image->alpha_mode;
|
2022-03-01 08:40:08 +01:00
|
|
|
last_image = static_cast<const void *>(image);
|
2022-03-01 11:35:11 +01:00
|
|
|
last_tile_drawing = do_tile_drawing;
|
2022-02-18 07:55:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool operator==(const ImageUsage &other) const
|
|
|
|
|
{
|
|
|
|
|
return memcmp(this, &other, sizeof(ImageUsage)) == 0;
|
|
|
|
|
}
|
|
|
|
|
bool operator!=(const ImageUsage &other) const
|
|
|
|
|
{
|
|
|
|
|
return !(*this == other);
|
|
|
|
|
}
|
|
|
|
|
};
|
2022-12-09 10:29:34 +01:00
|
|
|
|
2024-11-29 15:46:44 +01:00
|
|
|
} // namespace blender::image_engine
|