File indexing completed on 2025-03-09 03:52:05
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2007-02-11 0007 * Description : a tool to show image using an OpenGL interface. 0008 * 0009 * SPDX-FileCopyrightText: 2007-2008 by Markus Leuthold <kusi at forum dot titlis dot org> 0010 * SPDX-FileCopyrightText: 2008-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * 0012 * SPDX-License-Identifier: GPL-2.0-or-later 0013 * 0014 * ============================================================ */ 0015 0016 #ifndef DIGIKAM_GLVIEWER_PLUGIN_GLVIEWER_WIDGET_H 0017 #define DIGIKAM_GLVIEWER_PLUGIN_GLVIEWER_WIDGET_H 0018 0019 // Qt includes 0020 0021 #include <QCursor> 0022 #include <QDir> 0023 #include <QKeyEvent> 0024 #include <QMouseEvent> 0025 #include <QTimer> 0026 #include <QWheelEvent> 0027 #include <QUrl> 0028 #include <QList> 0029 0030 // Local includes 0031 0032 #include "glviewertexture.h" 0033 #include "glviewerglobal.h" 0034 #include "dplugin.h" 0035 #include "dinfointerface.h" 0036 0037 using namespace Digikam; 0038 0039 namespace DigikamGenericGLViewerPlugin 0040 { 0041 0042 class GLViewerWidget : public QOpenGLWidget 0043 { 0044 Q_OBJECT 0045 0046 public: 0047 0048 explicit GLViewerWidget(DPlugin* const plugin, 0049 DInfoInterface* const iface, 0050 const QList<QUrl>& myfiles, 0051 const QString& selectedImage); 0052 ~GLViewerWidget() override; 0053 0054 void prevImage(); 0055 void nextImage(); 0056 0057 OGLstate getOGLstate() const; 0058 0059 private: 0060 0061 void initializeGL() override; 0062 void resizeGL(int w, int h) override; 0063 void paintGL() override; 0064 0065 bool isReallyFullScreen() const; 0066 0067 void keyPressEvent(QKeyEvent* e) override; 0068 void keyReleaseEvent(QKeyEvent* e) override; 0069 void wheelEvent(QWheelEvent* e) override; 0070 void mouseMoveEvent(QMouseEvent* e) override; 0071 void mousePressEvent(QMouseEvent* e) override; 0072 void mouseDoubleClickEvent(QMouseEvent* e) override; 0073 void mouseReleaseEvent(QMouseEvent* e) override; 0074 0075 GLViewerTexture* loadImage(int file_index) const; 0076 void drawImage(GLViewerTexture* const tex); 0077 void downloadTexture(GLViewerTexture* const tex); 0078 0079 void zoom(int mdelta, 0080 const QPoint& pos, 0081 float factor); 0082 0083 private Q_SLOTS: 0084 0085 void slotTimeoutMouseMove(); 0086 0087 private: 0088 0089 // Disable 0090 explicit GLViewerWidget(QWidget*) = delete; 0091 0092 private: 0093 0094 class Private; 0095 Private* const d; 0096 }; 0097 0098 } // namespace DigikamGenericGLViewerPlugin 0099 0100 #endif // DIGIKAM_GLVIEWER_PLUGIN_GLVIEWER_WIDGET_H