openMSX
ImGuiSpriteViewer.hh
Go to the documentation of this file.
1#ifndef IMGUI_SPRITE_VIEWER_HH
2#define IMGUI_SPRITE_VIEWER_HH
3
4#include "ImGuiPart.hh"
5
6#include "GLUtil.hh"
7#include "gl_vec.hh"
8
9namespace openmsx {
10
11class ImGuiSpriteViewer final : public ImGuiPart
12{
13public:
15
16 [[nodiscard]] zstring_view iniName() const override { return "sprite viewer"; }
17 void save(ImGuiTextBuffer& buf) override;
18 void loadLine(std::string_view name, zstring_view value) override;
19 void paint(MSXMotherBoard* motherBoard) override;
20
21public:
22 bool show = false;
23
24private:
25 bool overrideAll = false;
26 bool overrideMode = false;
27 bool overrideSize = false;
28 bool overrideMag = false;
29 bool overrideTrans = false;
30 bool overridePat = false;
31 bool overrideAtt = false;
32 bool overrideScroll = false;
33 bool overrideLines = false;
34 int manualMode = 1;
35 int manualSize = 8;
36 int manualMag = 0;
37 int manualTransparent = 0;
38 int manualPatBase = 0;
39 int manualAttBase = 0;
40 int manualVerticalScroll = 0;
41 int manualLines = 0; // 0->192, 1->212, 2->256
42 int zoom = 0; // 0->1x, 1->2x, ..., 7->8x
43 int checkerBoardSize = 4;
44 int boundingBoxOnAll = 0;
45 gl::vec4 gridColor{0.5f, 0.5f, 0.5f, 0.5f}; // RGBA
46 gl::vec4 checkerBoardColor1{0.2f, 0.2f, 0.2f, 0.8f}; // RGBA
47 gl::vec4 checkerBoardColor2{0.4f, 0.4f, 0.4f, 0.8f}; // RGBA
48 gl::vec4 boundingBoxColor {1.0f, 0.0f, 0.0f, 0.8f}; // RGBA
49 bool grid = true;
50 bool drawBoundingBox = true;
51 bool enableLimitPerLine = true;
52 bool enableStopY = true;
53
54 gl::Texture patternTex {gl::Null{}}; // TODO also deallocate when needed
55 gl::Texture gridTex {gl::Null{}};
56 gl::Texture zoomGridTex{gl::Null{}};
57 gl::Texture checkerTex {gl::Null{}};
58 gl::Texture renderTex {gl::Null{}};
59
60 static constexpr auto validSizes = {8, 16};
61 static constexpr auto persistentElements = std::tuple{
63 PersistentElement{"overrideAll", &ImGuiSpriteViewer::overrideAll},
64 PersistentElement{"overrideMode", &ImGuiSpriteViewer::overrideMode},
65 PersistentElement{"overrideSize", &ImGuiSpriteViewer::overrideSize},
66 PersistentElement{"overrideMag", &ImGuiSpriteViewer::overrideMag},
67 PersistentElement{"overrideTrans", &ImGuiSpriteViewer::overrideTrans},
68 PersistentElement{"overridePat", &ImGuiSpriteViewer::overridePat},
69 PersistentElement{"overrideAtt", &ImGuiSpriteViewer::overrideAtt},
70 PersistentElement{"overrideScroll", &ImGuiSpriteViewer::overrideScroll},
71 PersistentElement{"overrideLines", &ImGuiSpriteViewer::overrideLines},
72 PersistentElementMinMax{"mode", &ImGuiSpriteViewer::manualMode, 1, 3}, // 1 or 2
73 PersistentElementEnum{"size", &ImGuiSpriteViewer::manualSize, validSizes},
74 PersistentElementMax{"mag", &ImGuiSpriteViewer::manualMag, 2},
75 PersistentElementMax{"transparent", &ImGuiSpriteViewer::manualTransparent, 2},
76 PersistentElementMax{"patBase", &ImGuiSpriteViewer::manualPatBase, 0x20000},
77 PersistentElementMax{"attBase", &ImGuiSpriteViewer::manualAttBase, 0x20000},
78 PersistentElementMax{"verticalScroll", &ImGuiSpriteViewer::manualVerticalScroll, 256},
79 PersistentElementMax{"lines", &ImGuiSpriteViewer::manualLines, 3},
80 PersistentElementMax{"zoom", &ImGuiSpriteViewer::zoom, 8},
81 PersistentElement{"showGrid", &ImGuiSpriteViewer::grid},
82 PersistentElementMax{"checkerBoardSize", &ImGuiSpriteViewer::checkerBoardSize, 256},
83 PersistentElementMax{"boundingBoxOnAll", &ImGuiSpriteViewer::boundingBoxOnAll, 2},
84 PersistentElement{"gridColor", &ImGuiSpriteViewer::gridColor},
85 PersistentElement{"checkerBoardColor1", &ImGuiSpriteViewer::checkerBoardColor1},
86 PersistentElement{"checkerBoardColor2", &ImGuiSpriteViewer::checkerBoardColor2},
87 PersistentElement{"boundingBox", &ImGuiSpriteViewer::drawBoundingBox},
88 PersistentElement{"boundingBoxColor", &ImGuiSpriteViewer::boundingBoxColor},
89 PersistentElement{"spritesPerLineLimit", &ImGuiSpriteViewer::enableLimitPerLine},
90 PersistentElement{"stopY", &ImGuiSpriteViewer::enableStopY}
91 };
92};
93
94} // namespace openmsx
95
96#endif
Most basic/generic texture: only contains a texture ID.
Definition GLUtil.hh:39
ImGuiPart(ImGuiManager &manager_)
Definition ImGuiPart.hh:12
void save(ImGuiTextBuffer &buf) override
void paint(MSXMotherBoard *motherBoard) override
void loadLine(std::string_view name, zstring_view value) override
zstring_view iniName() const override
Like std::string_view, but with the extra guarantee that it refers to a zero-terminated string.
This file implemented 3 utility functions:
Definition Autofire.cc:11
PersistentElement(zstring_view, T C::*) -> PersistentElement< C, T >