mirror of
https://github.com/Mr-Wiseguy/Zelda64Recomp.git
synced 2025-03-12 23:06:37 +01:00
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <memory>
|
|
#include <utility>
|
|
#include <filesystem>
|
|
|
|
#include "RmlUi/Core.h"
|
|
|
|
#include "ui_resource.h"
|
|
|
|
namespace recompui {
|
|
class Style;
|
|
class Element;
|
|
class ContextId {
|
|
Style* add_resource_impl(std::unique_ptr<Style>&& resource);
|
|
public:
|
|
uint32_t slot_id;
|
|
auto operator<=>(const ContextId& rhs) const = default;
|
|
|
|
template <typename T, typename... Args>
|
|
T* create_element(Args... args) {
|
|
return static_cast<T*>(add_resource_impl(std::make_unique<T>(std::forward<Args>(args)...)));
|
|
}
|
|
|
|
template <typename T>
|
|
T* create_element(T&& element) {
|
|
return static_cast<T*>(add_resource_impl(std::make_unique<T>(std::move(element))));
|
|
}
|
|
|
|
void add_loose_element(Element* element);
|
|
|
|
Style* create_style();
|
|
|
|
void destroy_resource(Style* resource);
|
|
void destroy_resource(ResourceId resource);
|
|
void clear_children();
|
|
|
|
Rml::ElementDocument* get_document();
|
|
Element* get_root_element();
|
|
|
|
void open();
|
|
void close();
|
|
|
|
static constexpr ContextId null() { return ContextId{ .slot_id = uint32_t(-1) }; }
|
|
};
|
|
|
|
ContextId create_context(Rml::Context*, const std::filesystem::path& path);
|
|
ContextId create_context(Rml::ElementDocument* document);
|
|
void destroy_context(ContextId id);
|
|
ContextId get_current_context();
|
|
ContextId get_context_from_document(Rml::ElementDocument* document);
|
|
void destroy_all_contexts();
|
|
} // namespace recompui
|