nextpnr/3rdparty/qtimgui/QtImGui.cpp

83 lines
1.7 KiB
C++
Raw Normal View History

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 {
#if defined(__APPLE__)
return w->devicePixelRatio();
#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();
}
}