diff --git a/sources/Ram/Ram.cpp b/sources/Ram/Ram.cpp index ac1ad4a..a297705 100644 --- a/sources/Ram/Ram.cpp +++ b/sources/Ram/Ram.cpp @@ -2,6 +2,7 @@ // Created by anonymus-raccoon on 1/28/20. // +#include #include "Ram.hpp" #include "../Exceptions/InvalidAddress.hpp" @@ -11,6 +12,7 @@ namespace ComSquare::Ram : _size(size) { this->_data = new uint8_t[size]; + std::memset(this->_data, 0, size * sizeof(uint8_t)); } Ram::~Ram() diff --git a/sources/Renderer/SFRenderer.cpp b/sources/Renderer/SFRenderer.cpp index 281706e..f3f822c 100644 --- a/sources/Renderer/SFRenderer.cpp +++ b/sources/Renderer/SFRenderer.cpp @@ -12,52 +12,58 @@ namespace ComSquare::Renderer { + SFRenderer::SFRenderer(unsigned int height, unsigned int width, int maxFPS) + { + sf::Image icon; + this->shouldExit = false; + this->_videoMode = {width, height, 32}; + this->_window.create(this->_videoMode, "ComSquare Emulator", sf::Style::Default); + if (icon.loadFromFile("../ressources/Logo.png")) + this->_window.setIcon(314, 314, icon.getPixelsPtr()); + this->_window.setFramerateLimit(maxFPS); + this->_texture.create(width, height); + this->_sprite.setTexture(this->_texture); + this->_pixelBuffer = new sf::Color[height * width]; + } + + SFRenderer::~SFRenderer() + { + delete []this->_pixelBuffer; + } + + void SFRenderer::setWindowName(std::string newWindowName) { - this->window.setTitle(newWindowName + " - ComSquare"); + this->_window.setTitle(newWindowName + " - ComSquare"); } void SFRenderer::drawScreen() { - this->texture.update(reinterpret_cast(this->pixelBuffer)); - this->sprite.setTexture(this->texture); - this->window.draw(this->sprite); - this->window.display(); + this->_texture.update(reinterpret_cast(this->_pixelBuffer)); + this->_sprite.setTexture(this->_texture); + this->_window.draw(this->_sprite); + this->_window.display(); } void SFRenderer::putPixel(unsigned y, unsigned x, uint32_t rgba) { - if (x >= this->videoMode.width) - throw InvalidPixelPosition("Width", x, this->videoMode.width); - if (y >= this->videoMode.height) - throw InvalidPixelPosition("Height", y, this->videoMode.height); + if (x >= this->_videoMode.width) + throw InvalidPixelPosition("Width", x, this->_videoMode.width); + if (y >= this->_videoMode.height) + throw InvalidPixelPosition("Height", y, this->_videoMode.height); sf::Color pixels; pixels.r = rgba >> 24U; pixels.g = rgba >> 16U; pixels.b = rgba >> 8U; pixels.a = rgba >> 0U; - this->pixelBuffer[this->videoMode.width * y + x] = pixels; - } - - SFRenderer::SFRenderer(unsigned int height, unsigned int width, int maxFPS) - { - sf::Image icon; - this->shouldExit = false; - this->videoMode = {width, height, 32}; - this->window.create(this->videoMode, "ComSquare Emulator", sf::Style::Default); - if (icon.loadFromFile("../ressources/Logo.png")) - this->window.setIcon(314, 314, icon.getPixelsPtr()); - this->window.setFramerateLimit(maxFPS); - this->texture.create(width, height); - this->sprite.setTexture(this->texture); - this->pixelBuffer = new sf::Color[height * width]; + this->_pixelBuffer[this->_videoMode.width * y + x] = pixels; } void SFRenderer::getEvents() { sf::Event event; - while (this->window.pollEvent(event)) { + while (this->_window.pollEvent(event)) { if (event.type == sf::Event::Closed) { this->shouldExit = true; break; diff --git a/sources/Renderer/SFRenderer.hpp b/sources/Renderer/SFRenderer.hpp index e259fdd..73fd958 100644 --- a/sources/Renderer/SFRenderer.hpp +++ b/sources/Renderer/SFRenderer.hpp @@ -26,15 +26,15 @@ namespace ComSquare::Renderer class SFRenderer : public IRenderer { private: //! @brief The Renderer for the window. - sf::RenderWindow window; + sf::RenderWindow _window; //! @brief Video Mode containing the height and width of the window. - sf::VideoMode videoMode; + sf::VideoMode _videoMode; //! @brief The image that contain all of the pixels - sf::Color *pixelBuffer; + sf::Color *_pixelBuffer; //! @brief The sprite to render the array of pixels - sf::Sprite sprite; + sf::Sprite _sprite; //! @brief The texture to render the array of pixels - sf::Texture texture; + sf::Texture _texture; public: //! @brief Set a new name to the window, if there is already a name it will be overwrite. //! @param newWindowName new title for the window. @@ -55,7 +55,7 @@ namespace ComSquare::Renderer SFRenderer(unsigned int height, unsigned int width, int maxFPS); SFRenderer(const SFRenderer &) = delete; SFRenderer &operator=(const SFRenderer &) = delete; - ~SFRenderer() = default; + ~SFRenderer(); }; }