Files
test/source/blender/editors/include/ED_node_preview.hh
2024-01-19 20:29:38 +01:00

52 lines
1.5 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "RE_pipeline.h"
#include "IMB_imbuf.hh"
#include "DNA_material_types.h"
struct bContext;
struct bNodeTree;
struct ImBuf;
struct Render;
namespace blender::ed::space_node {
struct NestedTreePreviews {
Render *previews_render = nullptr;
/** Use this map to keep track of the latest #ImBuf used (after freeing the render-result). */
blender::Map<int32_t, ImBuf *> previews_map;
int preview_size;
bool rendering = false;
bool restart_needed = false;
ePreviewType cached_preview_type = MA_FLAT;
ePreviewType rendering_preview_type = MA_FLAT;
uint32_t cached_previews_refresh_state = -1;
uint32_t rendering_previews_refresh_state = -1;
NestedTreePreviews(const int size) : preview_size(size) {}
~NestedTreePreviews()
{
if (this->previews_render) {
RE_FreeRender(this->previews_render);
}
for (ImBuf *ibuf : this->previews_map.values()) {
IMB_freeImBuf(ibuf);
}
}
};
void free_previews(wmWindowManager &wm, SpaceNode &snode);
ImBuf *node_preview_acquire_ibuf(bNodeTree &ntree,
NestedTreePreviews &tree_previews,
const bNode &node);
void node_release_preview_ibuf(NestedTreePreviews &tree_previews);
NestedTreePreviews *get_nested_previews(const bContext &C, SpaceNode &snode);
void stop_preview_job(wmWindowManager &wm);
} // namespace blender::ed::space_node