Revision control
++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
++ // Qt-Security score:significant reason:default
++
++ //
++ // W A R N I N G
++ // -------------
++ //
++ // This file is not part of the Qt API. It exists for the convenience
++ // of Qt Designer. This header file may change from version to version
++ // without notice, or even be removed.
++ //
++ // We mean it.
++ //
++
++ #ifndef SKIN_H
++ #define SKIN_H
++
++ #include <QtWidgets/qwidget.h>
++
++ #include <QtGui/qpixmap.h>
++ #include <QtGui/qpolygon.h>
++ #include <QtGui/qregion.h>
++
++ #include <QtCore/qlist.h>
++
++ QT_BEGIN_NAMESPACE
++
++ namespace qvfb_internal {
++ class CursorWindow;
++ }
++
++ class QTextStream;
++
++ // ------- Button Area
++ struct DeviceSkinButtonArea {
++ QString name;
++ int keyCode{0};
++ QPolygon area;
++ QString text;
++ bool activeWhenClosed{false};
++ bool toggleArea{false};
++ bool toggleActiveArea{false};
++ };
++
++ // -------- Parameters
++ struct DeviceSkinParameters {
++ enum ReadMode { ReadAll, ReadSizeOnly };
++ bool read(const QString &skinDirectory, ReadMode rm, QString *errorMessage);
++ bool read(QTextStream &ts, ReadMode rm, QString *errorMessage);
++
++ QSize screenSize() const { return screenRect.size(); }
++ QSize secondaryScreenSize() const;
++ bool hasSecondaryScreen() const;
++
++ QString skinImageUpFileName;
++ QString skinImageDownFileName;
++ QString skinImageClosedFileName;
++ QString skinCursorFileName;
++
++ QImage skinImageUp;
++ QImage skinImageDown;
++ QImage skinImageClosed;
++ QImage skinCursor;
++
++ QRect screenRect;
++ QRect backScreenRect;
++ QRect closedScreenRect;
++ int screenDepth;
++ QPoint cursorHot;
++ QList<DeviceSkinButtonArea> buttonAreas;
++ QList<int> toggleAreaList;
++
++ int joystick;
++ QString prefix;
++ bool hasMouseHover;
++ };
++
++ // --------- Skin Widget
++ class DeviceSkin : public QWidget
++ {
++ Q_OBJECT
++ public:
++ explicit DeviceSkin(const DeviceSkinParameters ¶meters, QWidget *p );
++ ~DeviceSkin() override;
++
++ QWidget *view() const { return m_view; }
++ void setView( QWidget *v );
++
++ QWidget *secondaryView() const { return m_secondaryView; }
++ void setSecondaryView( QWidget *v );
++
++ void setZoom( double );
++ void setTransform(const QTransform &);
++
++ bool hasCursor() const;
++
++ QString prefix() const {return m_parameters.prefix;}
++
++ signals:
++ void popupMenu();
++ void skinKeyPressEvent(int code, const QString& text, bool autorep);
++ void skinKeyReleaseEvent(int code, const QString& text, bool autorep);
++
++ protected slots:
++ void skinKeyRepeat();
++ void moveParent();
++
++ protected:
++ void paintEvent(QPaintEvent *) override;
++ void mousePressEvent(QMouseEvent *e) override;
++ void mouseMoveEvent(QMouseEvent *e) override;
++ void mouseReleaseEvent(QMouseEvent *) override;
++
++ private:
++ void calcRegions();
++ void flip(bool open);
++ void updateSecondaryScreen();
++ void loadImages();
++ void startPress(int);
++ void endPress();
++
++ const DeviceSkinParameters m_parameters;
++ QList<QRegion> buttonRegions;
++ QPixmap skinImageUp;
++ QPixmap skinImageDown;
++ QPixmap skinImageClosed;
++ QPixmap skinCursor;
++ QWidget *parent;
++ QWidget *m_view = nullptr;
++ QWidget *m_secondaryView = nullptr;
++ QPoint parentpos;
++ QPoint clickPos;
++ bool buttonPressed = false;
++ int buttonIndex = 0;
++ QTransform transform;
++ qvfb_internal::CursorWindow *cursorw = nullptr;
++
++ bool joydown = false;
++ QTimer *t_skinkey;
++ QTimer *t_parentmove;
++ int onjoyrelease = 0;
++
++ bool flipped_open = true;
++ };
++
++ QT_END_NAMESPACE
++
++ #endif