Refactor editor windowing and update renderer regression
This commit is contained in:
107
editor/app/Windowing/Host/EditorWindowHostInterfaces.h
Normal file
107
editor/app/Windowing/Host/EditorWindowHostInterfaces.h
Normal file
@@ -0,0 +1,107 @@
|
||||
#pragma once
|
||||
|
||||
#include "Windowing/EditorWindowShared.h"
|
||||
#include "Windowing/EditorWorkspaceWindowProjection.h"
|
||||
#include "Windowing/Host/EditorWindowHostTypes.h"
|
||||
#include "Windowing/Host/EditorWindowPointerCapture.h"
|
||||
#include "Windowing/Host/EditorWindowTypes.h"
|
||||
|
||||
#include <XCEditor/Workspace/UIEditorWorkspaceController.h>
|
||||
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <vector>
|
||||
|
||||
namespace XCEngine::UI {
|
||||
|
||||
struct UIPoint;
|
||||
|
||||
} // namespace XCEngine::UI
|
||||
|
||||
namespace XCEngine::UI::Editor {
|
||||
|
||||
struct UIEditorDockHostTabDropTarget;
|
||||
|
||||
} // namespace XCEngine::UI::Editor
|
||||
|
||||
namespace XCEngine::UI::Editor::App {
|
||||
|
||||
class EditorWindowDockHostBinding;
|
||||
struct EditorUtilityWindowDescriptor;
|
||||
|
||||
class EditorHostWindow {
|
||||
public:
|
||||
virtual ~EditorHostWindow() = default;
|
||||
|
||||
virtual std::string_view GetWindowId() const = 0;
|
||||
virtual EditorWindowLifecycleState GetLifecycleState() const = 0;
|
||||
virtual bool IsPrimary() const = 0;
|
||||
virtual bool IsWorkspaceWindow() const = 0;
|
||||
virtual bool IsUtilityWindow() const = 0;
|
||||
virtual bool IsClosing() const = 0;
|
||||
virtual bool IsDestroyed() const = 0;
|
||||
virtual bool HasLiveHostWindow() const = 0;
|
||||
virtual const std::wstring& GetTitle() const = 0;
|
||||
virtual const UIEditorWorkspaceController* TryGetWorkspaceController() const = 0;
|
||||
virtual const EditorWorkspaceWindowProjection* TryGetWorkspaceProjection() const = 0;
|
||||
virtual EditorWindowDockHostBinding* TryGetDockHostBinding() = 0;
|
||||
virtual const EditorWindowDockHostBinding* TryGetDockHostBinding() const = 0;
|
||||
virtual ::XCEngine::UI::UIPoint ConvertScreenPixelsToClientDips(
|
||||
const EditorWindowScreenPoint& screenPoint) const = 0;
|
||||
virtual bool TryResolveDockTabDragHotspot(
|
||||
std::string_view nodeId,
|
||||
std::string_view panelId,
|
||||
const EditorWindowScreenPoint& screenPoint,
|
||||
EditorWindowScreenPoint& outHotspot) const = 0;
|
||||
virtual bool TryResolveDockTabDropTarget(
|
||||
const EditorWindowScreenPoint& screenPoint,
|
||||
UIEditorDockHostTabDropTarget& outTarget) const = 0;
|
||||
virtual void InvalidateHostWindow() const = 0;
|
||||
virtual void SetPrimary(bool primary) = 0;
|
||||
virtual void SetTitle(std::wstring title) = 0;
|
||||
virtual void ApplyHostWindowTitle() = 0;
|
||||
virtual void RefreshWorkspaceProjection(EditorWorkspaceWindowProjection projection) = 0;
|
||||
virtual void ResetInteractionState() = 0;
|
||||
virtual void AcquirePointerCapture(EditorWindowPointerCaptureOwner owner) = 0;
|
||||
virtual void ReleasePointerCapture(EditorWindowPointerCaptureOwner owner) = 0;
|
||||
virtual void MarkClosing() = 0;
|
||||
virtual void MarkDestroyed() = 0;
|
||||
virtual bool IsRenderReady() const = 0;
|
||||
virtual void Shutdown() = 0;
|
||||
virtual bool TryGetHostScreenRect(EditorWindowScreenRect& outRect) const = 0;
|
||||
virtual void SetHostScreenPosition(const EditorWindowScreenPoint& screenPoint) = 0;
|
||||
virtual void FocusHostWindow() = 0;
|
||||
virtual void PostCloseToHost() = 0;
|
||||
virtual void DestroyHostWindow() = 0;
|
||||
};
|
||||
|
||||
class EditorWindowHost {
|
||||
public:
|
||||
virtual ~EditorWindowHost() = default;
|
||||
|
||||
virtual EditorHostWindow* CreateWorkspaceWindow(
|
||||
UIEditorWorkspaceController workspaceController,
|
||||
const EditorWindowCreateParams& params) = 0;
|
||||
virtual EditorHostWindow* CreateUtilityWindow(
|
||||
const EditorUtilityWindowDescriptor& descriptor,
|
||||
const EditorWindowCreateParams& params) = 0;
|
||||
virtual EditorHostWindow* FindWindowById(std::string_view windowId) = 0;
|
||||
virtual const EditorHostWindow* FindWindowById(std::string_view windowId) const = 0;
|
||||
virtual std::vector<EditorHostWindow*> GetWindows() = 0;
|
||||
virtual std::vector<const EditorHostWindow*> GetWindows() const = 0;
|
||||
virtual std::wstring_view GetPrimaryWindowTitle() const = 0;
|
||||
virtual bool TryGetCursorScreenPoint(EditorWindowScreenPoint& outPoint) const = 0;
|
||||
virtual EditorWindowScreenRect ResolveFloatingPlacement(
|
||||
const EditorWindowScreenPoint& screenPoint,
|
||||
int preferredWidth,
|
||||
int preferredHeight) const = 0;
|
||||
virtual EditorHostWindow* FindWindowFromScreenPoint(
|
||||
const EditorWindowScreenPoint& screenPoint) = 0;
|
||||
virtual const EditorHostWindow* FindWindowFromScreenPoint(
|
||||
const EditorWindowScreenPoint& screenPoint) const = 0;
|
||||
virtual void ReapDestroyedWindows() = 0;
|
||||
virtual std::string DescribeWindows() const = 0;
|
||||
virtual void LogRuntimeTrace(std::string_view channel, std::string_view message) const = 0;
|
||||
};
|
||||
|
||||
} // namespace XCEngine::UI::Editor::App
|
||||
Reference in New Issue
Block a user