Files
XCEngine/engine/include/XCEngine/Resources/UI/UIDocuments.h

51 lines
1.7 KiB
C++

#pragma once
#include <XCEngine/Core/Asset/IResource.h>
#include <XCEngine/Resources/UI/UIDocumentTypes.h>
namespace XCEngine {
namespace Resources {
class UIDocumentResource : public IResource {
public:
const Containers::String& GetName() const override { return m_name; }
const Containers::String& GetPath() const override { return m_path; }
ResourceGUID GetGUID() const override { return m_guid; }
bool IsValid() const override { return m_isValid; }
size_t GetMemorySize() const override { return m_memorySize; }
void Release() override;
const UIDocumentModel& GetDocument() const { return m_document; }
const UIDocumentNode& GetRootNode() const { return m_document.rootNode; }
const UISchemaDefinition& GetSchemaDefinition() const { return m_document.schemaDefinition; }
const Containers::Array<Containers::String>& GetDependencies() const { return m_document.dependencies; }
const Containers::Array<UIDocumentDiagnostic>& GetDiagnostics() const { return m_document.diagnostics; }
const Containers::String& GetSourcePath() const { return m_document.sourcePath; }
void SetDocumentModel(const UIDocumentModel& document);
void SetDocumentModel(UIDocumentModel&& document);
protected:
void RecalculateMemorySize();
UIDocumentModel m_document = {};
};
class UIView : public UIDocumentResource {
public:
ResourceType GetType() const override { return ResourceType::UIView; }
};
class UITheme : public UIDocumentResource {
public:
ResourceType GetType() const override { return ResourceType::UITheme; }
};
class UISchema : public UIDocumentResource {
public:
ResourceType GetType() const override { return ResourceType::UISchema; }
};
} // namespace Resources
} // namespace XCEngine