Contain XCUI ImGui adapters behind explicit host seams

This commit is contained in:
2026-04-05 13:24:14 +08:00
parent 56f596548d
commit f943a07862
23 changed files with 1134 additions and 290 deletions

View File

@@ -85,6 +85,15 @@ struct XCUIInputBridgeFrameDelta {
bool HasEventType(UI::UIInputEventType type) const;
};
class IXCUIInputSnapshotSource {
public:
virtual ~IXCUIInputSnapshotSource() = default;
virtual XCUIInputBridgeFrameSnapshot CaptureSnapshot(
const XCUIInputBridgeCaptureOptions& options = XCUIInputBridgeCaptureOptions()) const = 0;
virtual const UI::UIPoint& GetPointerPosition() const = 0;
};
class XCUIInputBridge {
public:
void Reset();
@@ -109,16 +118,16 @@ private:
XCUIInputBridgeFrameSnapshot m_baseline = {};
};
class XCUIWin32InputSource {
class XCUIWin32InputSource : public IXCUIInputSnapshotSource {
public:
void Reset();
void HandleWindowMessage(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
void ClearFrameTransients();
XCUIInputBridgeFrameSnapshot CaptureSnapshot(
const XCUIInputBridgeCaptureOptions& options = XCUIInputBridgeCaptureOptions()) const;
const XCUIInputBridgeCaptureOptions& options = XCUIInputBridgeCaptureOptions()) const override;
const UI::UIPoint& GetPointerPosition() const {
const UI::UIPoint& GetPointerPosition() const override {
return m_pointerPosition;
}