83 lines
2.7 KiB
C++
83 lines
2.7 KiB
C++
#pragma once
|
|
|
|
#include "Windowing/Frame/EditorWindowTransferRequests.h"
|
|
|
|
#include <XCEngine/UI/Types.h>
|
|
|
|
#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;
|
|
|
|
EditorWindowFrameTransferRequests UpdateAndAppend(
|
|
EditorContext& editorContext,
|
|
UIEditorWorkspaceController& workspaceController,
|
|
EditorShellRuntime& shellRuntime,
|
|
const ::XCEngine::UI::UIRect& workspaceBounds,
|
|
const std::vector<::XCEngine::UI::UIInputEvent>& frameEvents,
|
|
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;
|
|
EditorWindowFrameTransferRequests BuildShellTransferRequests(
|
|
bool globalTabDragActive,
|
|
const std::optional<EditorWindowScreenPoint>& cursorScreenPoint,
|
|
const UIEditorDockHostInteractionState& dockHostInteractionState,
|
|
const UIEditorShellInteractionFrame& shellFrame) const;
|
|
};
|
|
|
|
} // namespace XCEngine::UI::Editor::App
|