2018-10-21 15:29:06 +08:00
|
|
|
#include "QtImGui.h"
|
|
|
|
#include "ImGuiRenderer.h"
|
|
|
|
#include <QWindow>
|
|
|
|
#ifdef QT_WIDGETS_LIB
|
|
|
|
#include <QWidget>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
namespace QtImGui {
|
|
|
|
|
|
|
|
#ifdef QT_WIDGETS_LIB
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
class QWidgetWindowWrapper : public WindowWrapper {
|
|
|
|
public:
|
|
|
|
QWidgetWindowWrapper(QWidget *w) : w(w) {}
|
|
|
|
void installEventFilter(QObject *object) override {
|
|
|
|
return w->installEventFilter(object);
|
|
|
|
}
|
|
|
|
QSize size() const override {
|
|
|
|
return w->size();
|
|
|
|
}
|
|
|
|
qreal devicePixelRatio() const override {
|
2021-05-31 22:20:43 +08:00
|
|
|
#if defined(__APPLE__)
|
2018-10-21 16:11:20 +08:00
|
|
|
return w->devicePixelRatio();
|
2021-05-31 22:20:43 +08:00
|
|
|
#else
|
|
|
|
return w->devicePixelRatioF();
|
|
|
|
#endif
|
2018-10-21 15:29:06 +08:00
|
|
|
}
|
|
|
|
bool isActive() const override {
|
|
|
|
return w->isActiveWindow();
|
|
|
|
}
|
|
|
|
QPoint mapFromGlobal(const QPoint &p) const override {
|
|
|
|
return w->mapFromGlobal(p);
|
|
|
|
}
|
|
|
|
private:
|
|
|
|
QWidget *w;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void initialize(QWidget *window) {
|
|
|
|
ImGuiRenderer::instance()->initialize(new QWidgetWindowWrapper(window));
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
class QWindowWindowWrapper : public WindowWrapper {
|
|
|
|
public:
|
|
|
|
QWindowWindowWrapper(QWindow *w) : w(w) {}
|
|
|
|
void installEventFilter(QObject *object) override {
|
|
|
|
return w->installEventFilter(object);
|
|
|
|
}
|
|
|
|
QSize size() const override {
|
|
|
|
return w->size();
|
|
|
|
}
|
|
|
|
qreal devicePixelRatio() const override {
|
|
|
|
return w->devicePixelRatio();
|
|
|
|
}
|
|
|
|
bool isActive() const override {
|
|
|
|
return w->isActive();
|
|
|
|
}
|
|
|
|
QPoint mapFromGlobal(const QPoint &p) const override {
|
|
|
|
return w->mapFromGlobal(p);
|
|
|
|
}
|
|
|
|
private:
|
|
|
|
QWindow *w;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void initialize(QWindow *window) {
|
|
|
|
ImGuiRenderer::instance()->initialize(new QWindowWindowWrapper(window));
|
|
|
|
}
|
|
|
|
|
|
|
|
void newFrame() {
|
|
|
|
ImGuiRenderer::instance()->newFrame();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|