ComSquare
QtSFML.hpp
Go to the documentation of this file.
1 //
2 // Created by anonymus-raccoon on 2/15/20.
3 //
4 
5 #pragma once
6 
7 #include <QtWidgets/QWidget>
8 #include <SFML/Graphics/RenderWindow.hpp>
9 #include <QtCore/QTimer>
10 #include <QtWidgets/QMainWindow>
11 #include <QtWidgets/QGridLayout>
12 #include "Renderer/IRenderer.hpp"
13 #include "Renderer/SFRenderer.hpp"
14 #include "QtWidgetSFML.hpp"
15 
16 namespace ComSquare::Renderer
17 {
19  class QtFullSFML : public QtWidgetSFML {
20  private:
23  void onUpdate() override;
24  public:
26  void openRom();
27 
28 #ifdef DEBUGGER_ENABLED
29  void enableDebugCPU();
32  void enableRamViewer();
34  void enableHeaderViewer();
36  void enableDebugAPU();
38  void enableDebugBus();
40  void enableCgramViewer();
42  void enableRegisterViewer();
44  void enableTileViewer();
45 #endif
46 
48  void reset();
49 
50  QtFullSFML(SNES &snes, QWidget* parent, const QPoint& position, const QSize& size, int frameRate = 0);
51  QtFullSFML(const QtFullSFML &) = delete;
52  QtFullSFML &operator=(const QtFullSFML &) = delete;
53  ~QtFullSFML() override = default;
54  };
55 
57  class QtSFML : public IRenderer {
58  private:
60  QWidget *_window;
61  protected:
63  QtFullSFML *_sfWidget = nullptr;
64  public:
67  void createWindow(SNES &snes, int maxFPS) override;
72  void putPixel(unsigned y, unsigned x, uint32_t rgba) override;
74  void drawScreen() override;
77  void playAudio(std::span<int16_t> samples) override;
80  void setWindowName(std::string &newWindowName) override;
82  explicit QtSFML(QWidget *parentWidget);
83  QtSFML(const QtSFML &) = delete;
84  QtSFML &operator=(const QtSFML &) = delete;
85  ~QtSFML() = default;
86  };
87 
88  class QtSFMLWindow : public QtSFML {
89  private:
91  QMainWindow _window;
92  public:
95  void createWindow(SNES &snes, int maxFPS) override;
99  QtSFMLWindow(int height, int width);
100  QtSFMLWindow(const QtSFMLWindow &) = delete;
101  QtSFMLWindow &operator=(const QtSFMLWindow &) = delete;
102  ~QtSFMLWindow() = default;
103  };
104 }
ComSquare::Renderer::QtSFML::setWindowName
void setWindowName(std::string &newWindowName) override
Set a new name to the window, if there is already a name it will be overwrite.
Definition: QtSFML.cpp:46
ComSquare::Renderer::QtSFML::operator=
QtSFML & operator=(const QtSFML &)=delete
ComSquare::Renderer::QtWidgetSFML
A widget that you can put inside a QT application that render using the SFML.
Definition: QtWidgetSFML.hpp:17
ComSquare::Renderer::QtSFML::_sfWidget
QtFullSFML * _sfWidget
The SFML widget.
Definition: QtSFML.hpp:63
SFRenderer.hpp
ComSquare::Renderer::QtSFML::createWindow
void createWindow(SNES &snes, int maxFPS) override
Use this function to create the window.
Definition: QtSFML.cpp:29
ComSquare::Renderer::QtFullSFML::~QtFullSFML
~QtFullSFML() override=default
ComSquare::Renderer
Definition: IRenderer.hpp:13
ComSquare::Renderer::QtSFML::playAudio
void playAudio(std::span< int16_t > samples) override
Playing all samples from buffer.
Definition: QtSFML.cpp:39
ComSquare::Renderer::QtFullSFML
The SFML window that manage the update.
Definition: QtSFML.hpp:19
ComSquare::Renderer::QtSFML::_window
QWidget * _window
The main window that the app reside on.
Definition: QtSFML.hpp:60
ComSquare::SNES
Container of all the components of the SNES.
Definition: SNES.hpp:32
ComSquare::Renderer::QtSFMLWindow::~QtSFMLWindow
~QtSFMLWindow()=default
QtWidgetSFML.hpp
ComSquare::Renderer::QtSFML::QtSFML
QtSFML(QWidget *parentWidget)
Constructor that return a SFML renderer inside a QT widget.
Definition: QtSFML.cpp:23
ComSquare::Renderer::QtSFMLWindow::QtSFMLWindow
QtSFMLWindow(int height, int width)
Constructor that return a SFML renderer inside a QT window.
Definition: QtSFML.cpp:128
ComSquare::Renderer::QtFullSFML::reset
void reset()
Action called when clicking on the reset button.
Definition: QtSFML.cpp:81
ComSquare::Renderer::QtSFML
A SFML renderer inside a QT widget.
Definition: QtSFML.hpp:57
ComSquare::Renderer::QtFullSFML::onUpdate
void onUpdate() override
Function called to update this widget.
Definition: QtSFML.cpp:56
ComSquare::Renderer::QtFullSFML::openRom
void openRom()
Open the select rom dialog and load a new one if the option is selected.
Definition: QtSFML.cpp:73
ComSquare::Renderer::QtSFML::putPixel
void putPixel(unsigned y, unsigned x, uint32_t rgba) override
Add a pixel to the buffer to the coordinates x, y with the color rgba.
Definition: QtSFML.cpp:34
ComSquare::Renderer::IRenderer
Definition: IRenderer.hpp:15
ComSquare::Renderer::QtSFMLWindow::operator=
QtSFMLWindow & operator=(const QtSFMLWindow &)=delete
ComSquare::Renderer::QtSFMLWindow::createWindow
void createWindow(SNES &snes, int maxFPS) override
Use this function to create the window.
Definition: QtSFML.cpp:135
ComSquare::Renderer::QtSFML::drawScreen
void drawScreen() override
This function doesn't do anything because QT internally handle drawing to the screen.
Definition: QtSFML.cpp:44
ComSquare::Renderer::QtFullSFML::_snes
SNES & _snes
The snes to update.
Definition: QtSFML.hpp:22
ComSquare::Renderer::QtSFML::~QtSFML
~QtSFML()=default
ComSquare::Renderer::QtFullSFML::QtFullSFML
QtFullSFML(SNES &snes, QWidget *parent, const QPoint &position, const QSize &size, int frameRate=0)
Definition: QtSFML.cpp:51
ComSquare::Renderer::QtSFMLWindow::_window
QMainWindow _window
The main window that the app reside on.
Definition: QtSFML.hpp:91
ComSquare::Renderer::QtFullSFML::operator=
QtFullSFML & operator=(const QtFullSFML &)=delete
ComSquare::Renderer::QtSFMLWindow
Definition: QtSFML.hpp:88
IRenderer.hpp