DragonVM/src/gui/widgets/VirtualConsoleWidget.hpp
2023-12-27 17:21:07 +01:00

67 lines
No EOL
1.7 KiB
C++

#pragma once
#include "Widget.hpp"
#include "../../tools/SDLInclude.hpp"
#include "../../gui/VirtualConsoleOutputHandler.hpp"
#include "../../tools/GlobalData.hpp"
namespace dragon
{
namespace hw
{
class VirtualBIOSVideo;
class VirtualCPU;
}
class VirtualConsoleWidtget : public Widget
{
public: struct tSignals
{
inline static constexpr uint8_t Continue = 0x00;
inline static constexpr uint8_t ClearScreen = 0x01;
};
public:
inline VirtualConsoleWidtget(hw::VirtualBIOSVideo& biosVideo, hw::VirtualCPU& cpu) : m_biosVideo(biosVideo), m_cpu(cpu) { invalidate(); }
void init(void) override;
void draw(void) override;
void update(void) override;
void fixedUpdate(void) override;
void slowUpdate(void) override;
inline bool isInitialized(void) const { return m_initialized; }
private:
void drawConsole(void);
private:
dragon::VirtualConsoleOutputHandler vout;
// SDL_Window* m_window { nullptr };
// SDL_Renderer* m_renderer { nullptr };
// SDL_Texture* m_screenTexture { nullptr };
// SDL_Surface* m_fontSurface { nullptr };
// int32_t m_windowWidth { 0 };
// int32_t m_windowHeight { 0 };
// uint32_t* m_fontPixels { nullptr };
// uint32_t* m_screenPixels { nullptr };
uint32_t* m_pixels { nullptr };
SDL_Texture* m_texture;
// bool m_redrawConsole { true };
// float m_timeAccumulator { 0.0f };
// bool m_running { false };
// ostd::StringEditor m_title { "" };
// float m_redrawAccumulator { 0.0f };
bool m_initialized { false };
bool m_clearMemory { false };
hw::VirtualBIOSVideo& m_biosVideo;
hw::VirtualCPU& m_cpu;
std::vector<data::IBiosVideoPalette*> m_palettes;
};
}