51 lines
1.7 KiB
C++
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
|