aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/qtimgui/QtImGui.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/qtimgui/QtImGui.cpp')
-rw-r--r--3rdparty/qtimgui/QtImGui.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/3rdparty/qtimgui/QtImGui.cpp b/3rdparty/qtimgui/QtImGui.cpp
new file mode 100644
index 00000000..97205389
--- /dev/null
+++ b/3rdparty/qtimgui/QtImGui.cpp
@@ -0,0 +1,78 @@
+#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 {
+ return w->devicePixelRatioF();
+ }
+ 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();
+}
+
+}