mirror of
https://github.com/slint-ui/slint.git
synced 2025-08-04 10:50:00 +00:00
C++ Platform: remove the experimental namespace
This commit is contained in:
parent
a29123a498
commit
116648ffcf
6 changed files with 37 additions and 54 deletions
|
@ -54,12 +54,10 @@ using cbindgen_private::TraversalOrder;
|
|||
}
|
||||
|
||||
#if !defined(DOXYGEN)
|
||||
namespace experimental {
|
||||
namespace platform {
|
||||
class SkiaRenderer;
|
||||
class SoftwareRenderer;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace private_api {
|
||||
|
@ -278,8 +276,8 @@ public:
|
|||
const cbindgen_private::WindowAdapterRcOpaque &handle() const { return inner; }
|
||||
|
||||
private:
|
||||
friend class slint::experimental::platform::SkiaRenderer;
|
||||
friend class slint::experimental::platform::SoftwareRenderer;
|
||||
friend class slint::platform::SkiaRenderer;
|
||||
friend class slint::platform::SoftwareRenderer;
|
||||
cbindgen_private::WindowAdapterRcOpaque inner;
|
||||
};
|
||||
|
||||
|
|
|
@ -28,12 +28,6 @@ typedef struct objc_object NSWindow;
|
|||
|
||||
namespace slint {
|
||||
|
||||
/// This namespace contains experimental API.
|
||||
/// No compatibility across version.
|
||||
///
|
||||
/// \private
|
||||
namespace experimental {
|
||||
|
||||
/// Namespace to be used when you implement your own Platform
|
||||
namespace platform {
|
||||
|
||||
|
@ -492,7 +486,6 @@ inline std::optional<std::chrono::milliseconds> duration_until_next_timer_update
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -12,12 +12,10 @@
|
|||
# include "windowadapter_win.h"
|
||||
#endif
|
||||
|
||||
namespace slint_platform = slint::experimental::platform;
|
||||
|
||||
struct MyPlatform : public slint_platform::Platform
|
||||
struct MyPlatform : public slint::platform::Platform
|
||||
{
|
||||
std::unique_ptr<MyWindowAdapter> the_window;
|
||||
std::unique_ptr<slint_platform::WindowAdapter> create_window_adapter() override
|
||||
std::unique_ptr<slint::platform::WindowAdapter> create_window_adapter() override
|
||||
{
|
||||
return std::move(the_window);
|
||||
}
|
||||
|
@ -35,7 +33,7 @@ void AppView::attachToWindow(WINDOW_HANDLE winId)
|
|||
auto p = std::make_unique<MyPlatform>();
|
||||
p->the_window = std::make_unique<MyWindowAdapter>(winId);
|
||||
myWindow = p->the_window.get();
|
||||
slint_platform::set_platform(std::move(p));
|
||||
slint::platform::set_platform(std::move(p));
|
||||
|
||||
// AppWindow is the auto-generated slint code
|
||||
static auto app = AppWindow::create();
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
#include <cassert>
|
||||
#include <windows.h>
|
||||
|
||||
namespace slint_platform = slint::experimental::platform;
|
||||
|
||||
struct Geometry
|
||||
{
|
||||
int x = 0;
|
||||
|
@ -19,11 +17,11 @@ struct Geometry
|
|||
uint32_t height = 0;
|
||||
};
|
||||
|
||||
struct MyWindowAdapter : public slint_platform::WindowAdapter
|
||||
struct MyWindowAdapter : public slint::platform::WindowAdapter
|
||||
{
|
||||
HWND hwnd;
|
||||
Geometry geometry = { 0, 0, 600, 300 };
|
||||
std::optional<slint_platform::SkiaRenderer> m_renderer;
|
||||
std::optional<slint::platform::SkiaRenderer> m_renderer;
|
||||
|
||||
MyWindowAdapter(HWND winId)
|
||||
{
|
||||
|
@ -56,13 +54,13 @@ struct MyWindowAdapter : public slint_platform::WindowAdapter
|
|||
NULL // Additional application data
|
||||
);
|
||||
|
||||
m_renderer.emplace(slint_platform::NativeWindowHandle::from_win32(hwnd, hInstance),
|
||||
m_renderer.emplace(slint::platform::NativeWindowHandle::from_win32(hwnd, hInstance),
|
||||
slint::PhysicalSize({ 600, 300 }));
|
||||
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)this);
|
||||
}
|
||||
|
||||
slint_platform::AbstractRenderer &renderer() override { return m_renderer.value(); }
|
||||
slint::platform::AbstractRenderer &renderer() override { return m_renderer.value(); }
|
||||
|
||||
slint::PhysicalSize physical_size() const override
|
||||
{
|
||||
|
@ -146,7 +144,7 @@ struct MyWindowAdapter : public slint_platform::WindowAdapter
|
|||
case WM_PAINT: {
|
||||
PAINTSTRUCT ps;
|
||||
BeginPaint(hwnd, &ps);
|
||||
slint_platform::update_timers_and_animations();
|
||||
slint::platform::update_timers_and_animations();
|
||||
self->render();
|
||||
EndPaint(hwnd, &ps);
|
||||
return 0;
|
||||
|
@ -163,7 +161,7 @@ struct MyWindowAdapter : public slint_platform::WindowAdapter
|
|||
case WM_RBUTTONUP:
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_MOUSEMOVE:
|
||||
slint_platform::update_timers_and_animations();
|
||||
slint::platform::update_timers_and_animations();
|
||||
self->mouse_event(uMsg, lParam);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -3,14 +3,12 @@
|
|||
|
||||
#include "appwindow.h"
|
||||
|
||||
#include "slint_platform.h"
|
||||
#include <slint_platform.h>
|
||||
|
||||
#include <QtGui/QtGui>
|
||||
#include <QtGui/qpa/qplatformnativeinterface.h>
|
||||
#include <QtWidgets/QApplication>
|
||||
|
||||
namespace slint_platform = slint::experimental::platform;
|
||||
|
||||
slint::PointerEventButton convert_button(Qt::MouseButtons b)
|
||||
{
|
||||
switch (b) {
|
||||
|
@ -25,7 +23,7 @@ slint::PointerEventButton convert_button(Qt::MouseButtons b)
|
|||
}
|
||||
}
|
||||
|
||||
static slint_platform::NativeWindowHandle window_handle_for_qt_window(QWindow *window)
|
||||
static slint::platform::NativeWindowHandle window_handle_for_qt_window(QWindow *window)
|
||||
{
|
||||
// Ensure that the native window surface exists
|
||||
window->create();
|
||||
|
@ -35,10 +33,10 @@ static slint_platform::NativeWindowHandle window_handle_for_qt_window(QWindow *w
|
|||
native->nativeResourceForWindow(QByteArray("nsview"), window));
|
||||
NSWindow *nswindow = reinterpret_cast<NSWindow *>(
|
||||
native->nativeResourceForWindow(QByteArray("nswindow"), window));
|
||||
return slint_platform::NativeWindowHandle::from_appkit(nsview, nswindow);
|
||||
return slint::platform::NativeWindowHandle::from_appkit(nsview, nswindow);
|
||||
#elif defined Q_OS_WIN
|
||||
auto wid = Qt::HANDLE(window->winId());
|
||||
return slint_platform::NativeWindowHandle::from_win32(wid, GetModuleHandle(nullptr));
|
||||
return slint::platform::NativeWindowHandle::from_win32(wid, GetModuleHandle(nullptr));
|
||||
#else
|
||||
// Try Wayland first, then XLib, then Xcb
|
||||
auto wid = window->winId();
|
||||
|
@ -49,21 +47,21 @@ static slint_platform::NativeWindowHandle window_handle_for_qt_window(QWindow *w
|
|||
native->nativeResourceForIntegration(QByteArray("wl_display")))) {
|
||||
auto *wayland_surface = reinterpret_cast<wl_surface *>(
|
||||
native->nativeResourceForWindow(QByteArray("surface"), window));
|
||||
return slint_platform::NativeWindowHandle::from_wayland(wayland_surface, wayland_display);
|
||||
return slint::platform::NativeWindowHandle::from_wayland(wayland_surface, wayland_display);
|
||||
} else if (auto *x11_display = native->nativeResourceForWindow(QByteArray("display"), window)) {
|
||||
return slint_platform::NativeWindowHandle::from_x11_xlib(wid, wid, x11_display, screen);
|
||||
return slint::platform::NativeWindowHandle::from_x11_xlib(wid, wid, x11_display, screen);
|
||||
} else if (auto *xcb_connection = reinterpret_cast<xcb_connection_t *>(
|
||||
native->nativeResourceForWindow(QByteArray("connection"), window))) {
|
||||
return slint_platform::NativeWindowHandle::from_x11_xcb(wid, wid, xcb_connection, screen);
|
||||
return slint::platform::NativeWindowHandle::from_x11_xcb(wid, wid, xcb_connection, screen);
|
||||
} else {
|
||||
throw "Unsupported windowing system (tried waylamd, xlib, and xcb)";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
class MyWindow : public QWindow, public slint_platform::WindowAdapter
|
||||
class MyWindow : public QWindow, public slint::platform::WindowAdapter
|
||||
{
|
||||
std::optional<slint_platform::SkiaRenderer> m_renderer;
|
||||
std::optional<slint::platform::SkiaRenderer> m_renderer;
|
||||
|
||||
public:
|
||||
MyWindow(QWindow *parentWindow = nullptr) : QWindow(parentWindow)
|
||||
|
@ -72,7 +70,7 @@ public:
|
|||
m_renderer.emplace(window_handle_for_qt_window(this), physical_size());
|
||||
}
|
||||
|
||||
slint_platform::AbstractRenderer &renderer() override { return m_renderer.value(); }
|
||||
slint::platform::AbstractRenderer &renderer() override { return m_renderer.value(); }
|
||||
|
||||
/*void keyEvent(QKeyEvent *event) override
|
||||
{
|
||||
|
@ -81,7 +79,7 @@ public:
|
|||
|
||||
void paintEvent(QPaintEvent *ev) override
|
||||
{
|
||||
slint_platform::update_timers_and_animations();
|
||||
slint::platform::update_timers_and_animations();
|
||||
|
||||
m_renderer->render();
|
||||
|
||||
|
@ -127,32 +125,32 @@ public:
|
|||
|
||||
void mousePressEvent(QMouseEvent *event) override
|
||||
{
|
||||
slint_platform::update_timers_and_animations();
|
||||
slint::platform::update_timers_and_animations();
|
||||
window().dispatch_pointer_press_event(
|
||||
slint::LogicalPosition({ float(event->pos().x()), float(event->pos().y()) }),
|
||||
convert_button(event->button()));
|
||||
}
|
||||
void mouseReleaseEvent(QMouseEvent *event) override
|
||||
{
|
||||
slint_platform::update_timers_and_animations();
|
||||
slint::platform::update_timers_and_animations();
|
||||
window().dispatch_pointer_release_event(
|
||||
slint::LogicalPosition({ float(event->pos().x()), float(event->pos().y()) }),
|
||||
convert_button(event->button()));
|
||||
}
|
||||
void mouseMoveEvent(QMouseEvent *event) override
|
||||
{
|
||||
slint_platform::update_timers_and_animations();
|
||||
slint::platform::update_timers_and_animations();
|
||||
window().dispatch_pointer_move_event(
|
||||
slint::LogicalPosition({ float(event->pos().x()), float(event->pos().y()) }));
|
||||
}
|
||||
};
|
||||
|
||||
struct MyPlatform : public slint_platform::Platform
|
||||
struct MyPlatform : public slint::platform::Platform
|
||||
{
|
||||
|
||||
std::unique_ptr<QWindow> parentWindow;
|
||||
|
||||
std::unique_ptr<slint_platform::WindowAdapter> create_window_adapter() override
|
||||
std::unique_ptr<slint::platform::WindowAdapter> create_window_adapter() override
|
||||
{
|
||||
return std::make_unique<MyWindow>(parentWindow.get());
|
||||
}
|
||||
|
@ -165,11 +163,11 @@ int main(int argc, char **argv)
|
|||
static MyPlatform *plarform = [] {
|
||||
auto platform = std::make_unique<MyPlatform>();
|
||||
auto p2 = platform.get();
|
||||
slint_platform::set_platform(std::move(platform));
|
||||
slint::platform::set_platform(std::move(platform));
|
||||
return p2;
|
||||
}();
|
||||
|
||||
slint_platform::update_timers_and_animations();
|
||||
slint::platform::update_timers_and_animations();
|
||||
|
||||
auto my_ui = App::create();
|
||||
// mu_ui->set_property(....);
|
||||
|
|
|
@ -12,18 +12,16 @@
|
|||
#include <chrono>
|
||||
#include <optional>
|
||||
|
||||
namespace slint_platform = slint::experimental::platform;
|
||||
|
||||
struct TestPlatform : slint_platform::Platform
|
||||
struct TestPlatform : slint::platform::Platform
|
||||
{
|
||||
std::mutex the_mutex;
|
||||
std::deque<slint_platform::Platform::Task> queue;
|
||||
std::deque<slint::platform::Platform::Task> queue;
|
||||
bool quit = false;
|
||||
std::condition_variable cv;
|
||||
std::chrono::time_point<std::chrono::steady_clock> start = std::chrono::steady_clock::now();
|
||||
|
||||
/// Returns a new WindowAdapter
|
||||
virtual std::unique_ptr<slint_platform::WindowAdapter> create_window_adapter() override
|
||||
virtual std::unique_ptr<slint::platform::WindowAdapter> create_window_adapter() override
|
||||
{
|
||||
assert(!"creating window in this test");
|
||||
return nullptr;
|
||||
|
@ -33,8 +31,8 @@ struct TestPlatform : slint_platform::Platform
|
|||
virtual void run_event_loop() override
|
||||
{
|
||||
while (true) {
|
||||
slint_platform::update_timers_and_animations();
|
||||
std::optional<slint_platform::Platform::Task> event;
|
||||
slint::platform::update_timers_and_animations();
|
||||
std::optional<slint::platform::Platform::Task> event;
|
||||
{
|
||||
std::unique_lock lock(the_mutex);
|
||||
if (queue.empty()) {
|
||||
|
@ -42,7 +40,7 @@ struct TestPlatform : slint_platform::Platform
|
|||
quit = false;
|
||||
break;
|
||||
}
|
||||
if (auto duration = slint_platform::duration_until_next_timer_update()) {
|
||||
if (auto duration = slint::platform::duration_until_next_timer_update()) {
|
||||
cv.wait_for(lock, *duration);
|
||||
} else {
|
||||
cv.wait(lock);
|
||||
|
@ -67,7 +65,7 @@ struct TestPlatform : slint_platform::Platform
|
|||
cv.notify_all();
|
||||
}
|
||||
|
||||
virtual void run_in_event_loop(slint_platform::Platform::Task event) override
|
||||
virtual void run_in_event_loop(slint::platform::Platform::Task event) override
|
||||
{
|
||||
const std::unique_lock lock(the_mutex);
|
||||
queue.push_back(std::move(event));
|
||||
|
@ -83,7 +81,7 @@ struct TestPlatform : slint_platform::Platform
|
|||
#endif
|
||||
};
|
||||
|
||||
bool init_platform = (slint_platform::set_platform(std::make_unique<TestPlatform>()), true);
|
||||
bool init_platform = (slint::platform::set_platform(std::make_unique<TestPlatform>()), true);
|
||||
|
||||
TEST_CASE("C++ Singleshot Timers")
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue