| 9 | #include "../../core/lcd.h" |
| 10 | |
| 11 | class LCDWidget : public QWidget { |
| 12 | Q_OBJECT |
| 13 | |
| 14 | public: |
| 15 | enum UpscaleMethod { |
| 16 | NearestNeighbor, |
| 17 | Bilinear, |
| 18 | SharpBilinear |
| 19 | }; |
| 20 | |
| 21 | enum FullscreenArea { |
| 22 | StretchToFill, |
| 23 | PreserveAspectRatio, |
| 24 | IntegerUpscale |
| 25 | }; |
| 26 | |
| 27 | explicit LCDWidget(QWidget *p = Q_NULLPTR); |
| 28 | QImage getImage(); |
| 29 | void setMain(); |
| 30 | bool draw(); |
| 31 | void setFrameskip(int value); |
| 32 | void setResponseMode(bool state); |
| 33 | void setUpscaleMethod(int method); |
| 34 | void setFullscreenArea(int area); |
| 35 | void disableBlend(); |
| 36 | |
| 37 | signals: |
| 38 | void updateLcd(double emuFps); |
| 39 | |
| 40 | public slots: |
| 41 | double refresh(); |
| 42 | |
| 43 | protected: |
| 44 | virtual void paintEvent(QPaintEvent*) Q_DECL_OVERRIDE; |
| 45 | virtual void dropEvent(QDropEvent*) Q_DECL_OVERRIDE; |
| 46 | virtual void dragEnterEvent(QDragEnterEvent*) Q_DECL_OVERRIDE; |
| 47 | virtual void dragLeaveEvent(QDragLeaveEvent*) Q_DECL_OVERRIDE; |
| 48 | virtual void dragMoveEvent(QDragMoveEvent*) Q_DECL_OVERRIDE; |
| 49 | virtual void mousePressEvent(QMouseEvent*) Q_DECL_OVERRIDE; |
| 50 | virtual void mouseMoveEvent(QMouseEvent*) Q_DECL_OVERRIDE; |
| 51 | |
| 52 | signals: |
| 53 | void sendROM(const QString& romPath); |
| 54 | |
| 55 | private: |
| 56 | enum { |
| 57 | LcdLeft = 0, |
| 58 | LcdRight |
| 59 | }; |
| 60 | |
| 61 | static constexpr size_t PerfArraySize = 30; |
| 62 | |
| 63 | unsigned int m_side; |
| 64 | bool m_transferDrag = false; |
| 65 | bool m_screenshotDrag = false; |
| 66 | QRect m_left, m_right; |
| 67 | QImage m_interlaceAlpha; |
| 68 | QImage *m_currFrame; |
nothing calls this directly
no outgoing calls
no test coverage detected