#pragma once #include #include 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& GetDependencies() const { return m_document.dependencies; } const Containers::Array& 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