Files
XCEngine/new_editor/src/panels/XCUILayoutLabPanel.h

49 lines
2.0 KiB
C
Raw Normal View History

2026-04-05 04:55:25 +08:00
#pragma once
#include "Panel.h"
#include "XCUIBackend/XCUIHostedPreviewPresenter.h"
#include "XCUIBackend/XCUIInputBridge.h"
2026-04-05 12:30:03 +08:00
#include "XCUIBackend/XCUIPanelCanvasHost.h"
2026-04-05 04:55:25 +08:00
#include "XCUIBackend/XCUILayoutLabRuntime.h"
#include <memory>
#include <string>
2026-04-05 04:55:25 +08:00
namespace XCEngine {
namespace NewEditor {
class XCUILayoutLabPanel : public Panel {
public:
explicit XCUILayoutLabPanel(
::XCEngine::Editor::XCUIBackend::XCUIWin32InputSource* inputSource = nullptr);
XCUILayoutLabPanel(
::XCEngine::Editor::XCUIBackend::XCUIWin32InputSource* inputSource,
std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIHostedPreviewPresenter> previewPresenter);
~XCUILayoutLabPanel() override = default;
void Render() override;
void SetHostedPreviewEnabled(bool enabled);
void SetHostedPreviewPresenter(
std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIHostedPreviewPresenter> previewPresenter);
2026-04-05 12:30:03 +08:00
void SetCanvasHost(
std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIPanelCanvasHost> canvasHost);
2026-04-05 04:55:25 +08:00
bool IsHostedPreviewEnabled() const { return m_hostedPreviewEnabled; }
bool IsUsingNativeHostedPreview() const;
const ::XCEngine::Editor::XCUIBackend::XCUILayoutLabFrameResult& GetFrameResult() const;
const ::XCEngine::Editor::XCUIBackend::XCUIHostedPreviewStats& GetLastPreviewStats() const;
bool TryGetElementRect(const std::string& elementId, ::XCEngine::UI::UIRect& outRect) const;
2026-04-05 04:55:25 +08:00
private:
bool m_lastReloadSucceeded = false;
bool m_hostedPreviewEnabled = true;
::XCEngine::Editor::XCUIBackend::XCUIWin32InputSource* m_inputSource = nullptr;
::XCEngine::Editor::XCUIBackend::XCUILayoutLabRuntime m_runtime;
std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIHostedPreviewPresenter> m_previewPresenter;
2026-04-05 12:30:03 +08:00
std::unique_ptr<::XCEngine::Editor::XCUIBackend::IXCUIPanelCanvasHost> m_canvasHost;
2026-04-05 04:55:25 +08:00
::XCEngine::Editor::XCUIBackend::XCUIHostedPreviewStats m_lastPreviewStats = {};
};
} // namespace NewEditor
} // namespace XCEngine