feat(xcui): advance core and editor validation flow

This commit is contained in:
2026-04-06 16:20:46 +08:00
parent 33bb84f650
commit 2d030a97da
128 changed files with 9961 additions and 773 deletions

View File

@@ -1,6 +1,8 @@
#pragma once
#include <XCEngine/Resources/UI/UIDocumentTypes.h>
#include <XCEngine/UI/Style/Theme.h>
#include <XCEngine/UI/Style/StyleSet.h>
#include <XCEngine/UI/DrawData.h>
#include <cstddef>
@@ -30,7 +32,10 @@ struct UIScreenDocument {
std::vector<std::string> dependencies = {};
Resources::UIDocumentModel viewDocument = {};
Resources::UIDocumentModel themeDocument = {};
Style::UITheme runtimeTheme = {};
Style::UIStyleSheet runtimeStyleSheet = {};
bool hasThemeDocument = false;
bool hasRuntimeTheme = false;
bool IsValid() const {
return !sourcePath.empty();
@@ -39,6 +44,14 @@ struct UIScreenDocument {
const Resources::UIDocumentModel* GetThemeDocument() const {
return hasThemeDocument ? &themeDocument : nullptr;
}
const Style::UITheme* GetRuntimeTheme() const {
return hasRuntimeTheme ? &runtimeTheme : nullptr;
}
const Style::UIStyleSheet* GetRuntimeStyleSheet() const {
return hasRuntimeTheme ? &runtimeStyleSheet : nullptr;
}
};
struct UIScreenLoadResult {

View File

@@ -0,0 +1,33 @@
#pragma once
#include "StyleResolver.h"
#include <XCEngine/Resources/UI/UIDocumentTypes.h>
#include <string>
namespace XCEngine {
namespace UI {
namespace Style {
struct UIDocumentStyleCompileResult {
bool succeeded = false;
std::string errorMessage = {};
UITheme theme = {};
UIStyleSheet styleSheet = {};
};
UIDocumentStyleCompileResult CompileDocumentStyle(
const Resources::UIDocumentModel& themeDocument);
bool TryCompileDocumentStyle(
const Resources::UIDocumentModel& themeDocument,
UITheme& outTheme,
UIStyleSheet& outStyleSheet,
std::string* outErrorMessage = nullptr);
UIStyleSet BuildInlineStyle(const Resources::UIDocumentNode& node);
} // namespace Style
} // namespace UI
} // namespace XCEngine