ComSquare
SFRenderer.hpp
Go to the documentation of this file.
1 //
2 // Created by cbihan on 1/30/20.
3 //
4 
5 #ifndef COMSQUARE_SFRENDERER_HPP
6 #define COMSQUARE_SFRENDERER_HPP
7 
8 #include "IRenderer.hpp"
9 #include <SFML/Graphics.hpp>
10 #include <SFML/Audio.hpp>
11 #include <SFML/System.hpp>
12 #include <SFML/Window.hpp>
13 #include <SFML/Graphics/RenderWindow.hpp>
14 
15 namespace ComSquare::Renderer
16 {
17  class InvalidPixelPosition : public std::exception {
18  private:
19  std::string _msg;
20  public:
21  explicit InvalidPixelPosition(const std::string &name, unsigned int x, unsigned int width)
22  : _msg("Trying to place a pixel at an invalid " + name + " (" + std::to_string(x) + ">=" + std::to_string(width) + ")") {}
23  const char *what() const noexcept override { return this->_msg.c_str(); }
24  };
25 
26  class SFRenderer : public IRenderer {
27  protected:
29  sf::RenderWindow _window;
31  sf::VideoMode _videoMode;
33  sf::Color *_pixelBuffer;
35  sf::Sprite _sprite;
37  sf::Texture _texture;
38 
40  sf::SoundBuffer _soundBuffer;
42  sf::Sound _sound;
43  public:
45  bool shouldExit = false;
48  void setWindowName(std::string &newWindowName) override;
50  void drawScreen() override;
55  void putPixel(unsigned y, unsigned x, uint32_t rgba) override;
59  void playAudio(std::span<int16_t> samples) override;
61  void getEvents();
65  void createWindow(SNES &snes, int maxFPS) override;
69  SFRenderer(unsigned int height, unsigned int width);
70  SFRenderer(const SFRenderer &) = delete;
71  SFRenderer &operator=(const SFRenderer &) = delete;
72  ~SFRenderer();
73  };
74 }
75 
76 #endif //COMSQUARE_SFRENDERER_HPP
ComSquare::Renderer::InvalidPixelPosition::_msg
std::string _msg
Definition: SFRenderer.hpp:19
ComSquare::Renderer::SFRenderer::drawScreen
void drawScreen() override
Update the screen by printing the buffer.
Definition: SFRenderer.cpp:48
ComSquare::Renderer::SFRenderer::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: SFRenderer.cpp:43
ComSquare::Renderer
Definition: IRenderer.hpp:13
ComSquare::Renderer::SFRenderer::_videoMode
sf::VideoMode _videoMode
Video Mode containing the _height and _width of the window.
Definition: SFRenderer.hpp:31
ComSquare::Renderer::InvalidPixelPosition::what
const char * what() const noexcept override
Definition: SFRenderer.hpp:23
ComSquare::Renderer::InvalidPixelPosition
Definition: SFRenderer.hpp:17
ComSquare::Renderer::SFRenderer::~SFRenderer
~SFRenderer()
Definition: SFRenderer.cpp:38
ComSquare::Renderer::SFRenderer::playAudio
void playAudio(std::span< int16_t > samples) override
Playing all samples from buffer.
Definition: SFRenderer.cpp:56
ComSquare::Renderer::SFRenderer::getEvents
void getEvents()
Get the inputs from the Window.
Definition: SFRenderer.cpp:72
ComSquare::Renderer::SFRenderer::_texture
sf::Texture _texture
The texture to render the array of pixels.
Definition: SFRenderer.hpp:37
ComSquare::Renderer::SFRenderer
Definition: SFRenderer.hpp:26
ComSquare::SNES
Container of all the components of the SNES.
Definition: SNES.hpp:32
ComSquare::Renderer::SFRenderer::_soundBuffer
sf::SoundBuffer _soundBuffer
The buffer containing samples to be played.
Definition: SFRenderer.hpp:40
ComSquare::Renderer::InvalidPixelPosition::InvalidPixelPosition
InvalidPixelPosition(const std::string &name, unsigned int x, unsigned int width)
Definition: SFRenderer.hpp:21
ComSquare::Renderer::SFRenderer::_sound
sf::Sound _sound
the sound played
Definition: SFRenderer.hpp:42
ComSquare::Renderer::SFRenderer::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: SFRenderer.cpp:62
ComSquare::Renderer::SFRenderer::operator=
SFRenderer & operator=(const SFRenderer &)=delete
ComSquare::Renderer::IRenderer
Definition: IRenderer.hpp:15
ComSquare::Renderer::SFRenderer::_sprite
sf::Sprite _sprite
The sprite to render the array of pixels.
Definition: SFRenderer.hpp:35
ComSquare::Renderer::SFRenderer::createWindow
void createWindow(SNES &snes, int maxFPS) override
Use this function to create the window.
Definition: SFRenderer.cpp:23
ComSquare::Renderer::SFRenderer::_pixelBuffer
sf::Color * _pixelBuffer
The image that contain all of the pixels.
Definition: SFRenderer.hpp:33
ComSquare::Renderer::SFRenderer::_window
sf::RenderWindow _window
The Renderer for the window.
Definition: SFRenderer.hpp:29
ComSquare::Renderer::SFRenderer::shouldExit
bool shouldExit
Tells to the program if the window has been closed, and therefore if he should stop.
Definition: SFRenderer.hpp:45
ComSquare::Renderer::SFRenderer::SFRenderer
SFRenderer(unsigned int height, unsigned int width)
Constructor that return the window component of the SFML.
Definition: SFRenderer.cpp:14
IRenderer.hpp