51 lines
1.4 KiB
C++
51 lines
1.4 KiB
C++
#ifndef ORBITHUB_RDP_DISPLAY_WIDGET_H
|
|
#define ORBITHUB_RDP_DISPLAY_WIDGET_H
|
|
|
|
#include <QImage>
|
|
#include <QWidget>
|
|
|
|
class QKeyEvent;
|
|
class QMouseEvent;
|
|
class QPaintEvent;
|
|
class QResizeEvent;
|
|
class QWheelEvent;
|
|
|
|
class RdpDisplayWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit RdpDisplayWidget(QWidget* parent = nullptr);
|
|
|
|
void setFrame(const QImage& frame);
|
|
void setRemoteDesktopSize(int width, int height);
|
|
void clearFrame();
|
|
|
|
signals:
|
|
void keyInput(int key, quint32 nativeScanCode, const QString& text, bool pressed, int modifiers);
|
|
void mouseMoveInput(int x, int y);
|
|
void mouseButtonInput(int x, int y, int button, bool pressed);
|
|
void mouseWheelInput(int x, int y, int deltaX, int deltaY);
|
|
void viewportSizeChanged(int width, int height);
|
|
|
|
protected:
|
|
void paintEvent(QPaintEvent* event) override;
|
|
void resizeEvent(QResizeEvent* event) override;
|
|
void keyPressEvent(QKeyEvent* event) override;
|
|
void keyReleaseEvent(QKeyEvent* event) override;
|
|
void mousePressEvent(QMouseEvent* event) override;
|
|
void mouseReleaseEvent(QMouseEvent* event) override;
|
|
void mouseMoveEvent(QMouseEvent* event) override;
|
|
void wheelEvent(QWheelEvent* event) override;
|
|
|
|
private:
|
|
QImage m_frame;
|
|
QSize m_remoteSize;
|
|
|
|
QRectF renderRect() const;
|
|
QPoint mapToRemote(const QPointF& pos) const;
|
|
QSize effectiveRemoteSize() const;
|
|
};
|
|
|
|
#endif
|