Files
XCEngine/editor/app/Windowing/Frame/EditorWindowFrameOrchestrator.h

83 lines
2.7 KiB
C
Raw Normal View History

#pragma once
#include "Windowing/Frame/EditorWindowTransferRequests.h"
#include <XCEngine/UI/Types.h>
2026-04-25 19:25:49 +08:00
#include <optional>
#include <string>
#include <string_view>
#include <vector>
namespace XCEngine::UI {
class UIDrawList;
class UIDrawData;
struct UIRect;
struct UIInputEvent;
} // namespace XCEngine::UI
namespace XCEngine::UI::Editor {
class UIEditorWorkspaceController;
struct UIEditorDockHostInteractionState;
struct UIEditorShellInteractionFrame;
struct UIEditorShellInteractionState;
} // namespace XCEngine::UI::Editor
namespace XCEngine::UI::Editor::App {
class EditorContext;
class EditorShellRuntime;
class EditorWindowFrameOrchestrator final {
public:
EditorWindowFrameOrchestrator() = default;
~EditorWindowFrameOrchestrator() = default;
EditorWindowFrameOrchestrator(const EditorWindowFrameOrchestrator&) = delete;
EditorWindowFrameOrchestrator& operator=(const EditorWindowFrameOrchestrator&) = delete;
EditorWindowFrameOrchestrator(EditorWindowFrameOrchestrator&&) = delete;
EditorWindowFrameOrchestrator& operator=(EditorWindowFrameOrchestrator&&) = delete;
2026-04-25 16:46:01 +08:00
EditorWindowFrameTransferRequests UpdateAndAppend(
EditorContext& editorContext,
UIEditorWorkspaceController& workspaceController,
EditorShellRuntime& shellRuntime,
const ::XCEngine::UI::UIRect& workspaceBounds,
const std::vector<::XCEngine::UI::UIInputEvent>& frameEvents,
2026-04-25 19:25:49 +08:00
const std::optional<EditorWindowScreenPoint>& cursorScreenPoint,
std::string_view captureStatusText,
bool primary,
bool globalTabDragActive,
bool useDetachedTitleBarTabStrip,
::XCEngine::UI::UIDrawData& drawData) const;
void AppendInvalidFrame(
EditorContext& editorContext,
::XCEngine::UI::UIDrawList& drawList) const;
std::string DescribeInputEvents(
const std::vector<::XCEngine::UI::UIInputEvent>& events) const;
private:
void LogInputTrace(
EditorContext& editorContext,
const UIEditorWorkspaceController& workspaceController,
const UIEditorShellInteractionState& shellInteractionState,
const std::vector<::XCEngine::UI::UIInputEvent>& frameEvents) const;
void LogFrameInteractionTrace(
const UIEditorWorkspaceController& workspaceController,
const std::vector<::XCEngine::UI::UIInputEvent>& frameEvents,
const UIEditorShellInteractionFrame& shellFrame) const;
2026-04-25 16:46:01 +08:00
EditorWindowFrameTransferRequests BuildShellTransferRequests(
bool globalTabDragActive,
2026-04-25 19:25:49 +08:00
const std::optional<EditorWindowScreenPoint>& cursorScreenPoint,
const UIEditorDockHostInteractionState& dockHostInteractionState,
2026-04-25 16:46:01 +08:00
const UIEditorShellInteractionFrame& shellFrame) const;
};
} // namespace XCEngine::UI::Editor::App