refactor: add website code
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* hosts.hpp
|
||||
* Montauk Toolkit host adapters for desktop and standalone apps
|
||||
* Copyright (c) 2026 Daniel Hammer
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "gui/canvas.hpp"
|
||||
#include "gui/standalone.hpp"
|
||||
#include "gui/window.hpp"
|
||||
|
||||
namespace gui::mtk {
|
||||
|
||||
struct DesktopHost {
|
||||
Window* window;
|
||||
|
||||
explicit DesktopHost(Window* win) : window(win) {}
|
||||
|
||||
Canvas canvas() const {
|
||||
return window ? Canvas(window) : Canvas(nullptr, 0, 0);
|
||||
}
|
||||
|
||||
Rect bounds() const {
|
||||
return {0, 0, window ? window->content_w : 0, window ? window->content_h : 0};
|
||||
}
|
||||
|
||||
bool map_mouse(const MouseEvent& ev, int* out_x, int* out_y) const {
|
||||
if (!window || !out_x || !out_y) return false;
|
||||
Rect cr = window->content_rect();
|
||||
*out_x = ev.x - cr.x;
|
||||
*out_y = ev.y - cr.y;
|
||||
return true;
|
||||
}
|
||||
|
||||
void invalidate() const {
|
||||
if (window) window->dirty = true;
|
||||
}
|
||||
};
|
||||
|
||||
struct StandaloneHost {
|
||||
WsWindow* window;
|
||||
|
||||
explicit StandaloneHost(WsWindow* win) : window(win) {}
|
||||
|
||||
Canvas canvas() const {
|
||||
return window ? window->canvas() : Canvas(nullptr, 0, 0);
|
||||
}
|
||||
|
||||
Rect bounds() const {
|
||||
return {0, 0, window ? window->width : 0, window ? window->height : 0};
|
||||
}
|
||||
|
||||
void present() const {
|
||||
if (window) window->present();
|
||||
}
|
||||
|
||||
void set_cursor(int cursor) const {
|
||||
if (window) window->set_cursor(cursor);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace gui::mtk
|
||||
Reference in New Issue
Block a user