From 81a32100f11c07703be89b34bdffd238a302c785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Le=20Bihan?= Date: Tue, 8 Jun 2021 22:40:15 +0200 Subject: [PATCH] adding the first working sfml window (flicker warning) ui update --- CMakeLists.txt | 2 +- sources/Debugger/TileViewer/TileViewer.cpp | 2 +- sources/Debugger/TileViewer/TileViewer.hpp | 4 +- .../QtRenderer/QtSfmlTileRenderer.cpp | 24 ++++++ .../QtRenderer/QtSfmlTileRenderer.hpp | 33 +++++++ ui/tileView.ui | 85 +++++++++---------- 6 files changed, 100 insertions(+), 50 deletions(-) create mode 100644 sources/Renderer/QtRenderer/QtSfmlTileRenderer.cpp create mode 100644 sources/Renderer/QtRenderer/QtSfmlTileRenderer.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d5bfe2..ce2d3df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -242,7 +242,7 @@ add_executable(ComSquare sources/Renderer/QtRenderer/QtRenderSfml.hpp sources/Debugger/TileViewer/TileViewer.cpp sources/Debugger/TileViewer/TileViewer.hpp - sources/Debugger/TileViewer/TileRenderer.cpp sources/Debugger/TileViewer/TileRenderer.hpp sources/PPU/Tile.hpp) + sources/Debugger/TileViewer/TileRenderer.cpp sources/Debugger/TileViewer/TileRenderer.hpp sources/PPU/Tile.hpp sources/Renderer/QtRenderer/QtSfmlTileRenderer.cpp sources/Renderer/QtRenderer/QtSfmlTileRenderer.hpp) include_directories(ComSquare sources) diff --git a/sources/Debugger/TileViewer/TileViewer.cpp b/sources/Debugger/TileViewer/TileViewer.cpp index 4cf52d3..5ebb089 100644 --- a/sources/Debugger/TileViewer/TileViewer.cpp +++ b/sources/Debugger/TileViewer/TileViewer.cpp @@ -34,7 +34,7 @@ namespace ComSquare::Debugger this->_window->setAttribute(Qt::WA_DeleteOnClose); this->_ui.setupUi(this->_window); - //this->_sfWidget = std::make_unique(this->_ui.label_5); + this->_sfWidget = std::make_unique(this->_ui.widget_sfml); QMainWindow::connect(this->_ui.NbColumns, QOverload::of(&QSpinBox::valueChanged), this, [this](int nb) -> void { this->setNbColumns(nb); }); QMainWindow::connect(this->_ui.ByteSize, QOverload::of(&QSpinBox::valueChanged), this, [this](int nb) -> void { this->setRenderSize(nb); }); QMainWindow::connect(this->_ui.Address, QOverload::of(&QSpinBox::valueChanged), this, [this](int nb) -> void { this->setRamOffset(nb); }); diff --git a/sources/Debugger/TileViewer/TileViewer.hpp b/sources/Debugger/TileViewer/TileViewer.hpp index 9f21ff8..52482d3 100644 --- a/sources/Debugger/TileViewer/TileViewer.hpp +++ b/sources/Debugger/TileViewer/TileViewer.hpp @@ -15,7 +15,7 @@ namespace ComSquare::PPU #include #include "PPU/PPU.hpp" #include "Debugger/ClosableWindow.hpp" -#include "Renderer/QtRenderer/QtSFML.hpp" +#include "Renderer/QtRenderer/QtSfmlTileRenderer.hpp" #include "../../../ui/ui_tileView.h" #include "Ram/Ram.hpp" #include "TileRenderer.hpp" @@ -35,7 +35,7 @@ namespace ComSquare::Debugger //! @brief A reference to the ppu ComSquare::PPU::PPU &_ppu; //! @brief the window - //std::unique_ptr _sfWidget; + std::unique_ptr _sfWidget; //! @brief The tile renderer TileRenderer _tileRenderer; //! @brief Change the bpp from the index given by the ui (QT combo box) diff --git a/sources/Renderer/QtRenderer/QtSfmlTileRenderer.cpp b/sources/Renderer/QtRenderer/QtSfmlTileRenderer.cpp new file mode 100644 index 0000000..fbb175e --- /dev/null +++ b/sources/Renderer/QtRenderer/QtSfmlTileRenderer.cpp @@ -0,0 +1,24 @@ +// +// Created by cbihan on 08/06/2021. +// + +#include +#include "QtSfmlTileRenderer.hpp" + +namespace ComSquare::Renderer +{ + + QtSFMLTileRenderer::QtSFMLTileRenderer(QWidget *parent, + int frameRate) + : QtWidgetSFML(parent, {0, 0}, {500, 1000}, frameRate) + { + // todo the size of the sfml renderwindow should fill the parent + std::cout << "size: " << parent->width() << " " << parent->height() << std::endl; + } + + void QtSFMLTileRenderer::_onUpdate() + { + this->_window.clear(sf::Color::Blue); + this->_window.display(); + } +} \ No newline at end of file diff --git a/sources/Renderer/QtRenderer/QtSfmlTileRenderer.hpp b/sources/Renderer/QtRenderer/QtSfmlTileRenderer.hpp new file mode 100644 index 0000000..fea7945 --- /dev/null +++ b/sources/Renderer/QtRenderer/QtSfmlTileRenderer.hpp @@ -0,0 +1,33 @@ +// +// Created by cbihan on 08/06/2021. +// + +#pragma once + +#include +#include "QtWidgetSFML.hpp" + +namespace ComSquare::Renderer +{ + class QtSFMLTileRenderer : public QtWidgetSFML + { + private: + //! @brief internal buffer + //sf::Image _image; + //! @brief sprite + //sf::Sprite _sprite; + public: + + //! @brief Function called to update this widget. + void _onUpdate() override; + + //! @brief ctor + explicit QtSFMLTileRenderer(QWidget* parent, int frameRate = 0); + //! @brief copy ctor + QtSFMLTileRenderer(const QtSFMLTileRenderer &) = delete; + //! @brief default ctor + ~QtSFMLTileRenderer() override = default; + //! @brief assignment operator + QtSFMLTileRenderer &operator=(const QtSFMLTileRenderer &) = delete; + }; +} \ No newline at end of file diff --git a/ui/tileView.ui b/ui/tileView.ui index 0ad6a39..eb91790 100644 --- a/ui/tileView.ui +++ b/ui/tileView.ui @@ -22,11 +22,7 @@ - - - SFML window here :) - - + @@ -97,42 +93,10 @@ - - - - ArrowCursor - + + - Columns - - - - - - - - - - false - - - - - - 1 - - - 16 - - - 10 - - - - - - - 255 + Format @@ -167,10 +131,35 @@ - - + + + + ArrowCursor + - Format + Columns + + + + + + + + + + false + + + + + + 1 + + + 16 + + + 10 @@ -181,11 +170,15 @@ + + + + 255 + + + - - -