X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2Frender.cpp;h=2b227422a48cb3b950390d73cf152350fcf7f716;hb=376fc1fca87fcdd22dabadf6d01d245ef8c3cedd;hp=f78f9cb6f77fc2b92f1e5e7ad3b137cda65c4aed;hpb=22b25d4b9cc24e249bc8007757267cea00ab18d3;p=blank.git diff --git a/src/graphics/render.cpp b/src/graphics/render.cpp index f78f9cb..2b22742 100644 --- a/src/graphics/render.cpp +++ b/src/graphics/render.cpp @@ -1,9 +1,6 @@ #include "BlendedSprite.hpp" -#include "FixedText.hpp" #include "Font.hpp" #include "Format.hpp" -#include "MessageBox.hpp" -#include "Text.hpp" #include "Texture.hpp" #include "Viewport.hpp" @@ -160,111 +157,6 @@ void Format::ReadPixelFormat(const SDL_PixelFormat &fmt) { } -MessageBox::MessageBox(const Font &f) -: font(f) -, lines() -, max_lines(10) -, pos(0.0f) -, adv(0.0f, font.LineSkip(), 0.0f) -, bg(1.0f, 1.0f, 1.0f, 0.0f) -, fg(1.0f, 1.0f, 1.0f, 1.0f) -, grav(Gravity::NORTH_WEST) { - -} - -void MessageBox::Position(const glm::vec3 &p, Gravity g) noexcept { - pos = p; - grav = g; - if (get_y(g) == Align::END) { - adv.y = -font.LineSkip(); - } else { - adv.y = font.LineSkip(); - } - for (Text &txt : lines) { - txt.Pivot(g); - } -} - -void MessageBox::PushLine(const char *text) { - lines.emplace_front(); - Text &txt = lines.front(); - txt.Set(font, text); - txt.Pivot(grav); - - while (lines.size() > max_lines) { - lines.pop_back(); - } -} - -void MessageBox::Render(Viewport &viewport) noexcept { - BlendedSprite &prog = viewport.SpriteProgram(); - prog.SetBG(bg); - prog.SetFG(fg); - viewport.SetCursor(pos, grav); - for (Text &txt : lines) { - prog.SetM(viewport.Cursor()); - txt.Render(viewport); - viewport.MoveCursor(adv); - } -} - - -Text::Text() noexcept -: tex() -, sprite() -, size(0.0f) -, pivot(Gravity::NORTH_WEST) -, dirty(false) { - -} - -FixedText::FixedText() noexcept -: Text() -, bg(1.0f, 1.0f, 1.0f, 0.0f) -, fg(1.0f, 1.0f, 1.0f, 1.0f) -, pos(0.0f) -, grav(Gravity::NORTH_WEST) -, visible(false) { - -} - -void Text::Set(const Font &font, const char *text) { - font.Render(text, tex); - size = font.TextSize(text); - dirty = true; -} - -namespace { - -SpriteModel::Buffer sprite_buf; - -} - -void Text::Update() { - sprite_buf.LoadRect(size.x, size.y, align(pivot, size)); - sprite.Update(sprite_buf); - dirty = false; -} - -void FixedText::Render(Viewport &viewport) noexcept { - BlendedSprite &prog = viewport.SpriteProgram(); - viewport.SetCursor(pos, grav); - prog.SetM(viewport.Cursor()); - prog.SetBG(bg); - prog.SetFG(fg); - Text::Render(viewport); -} - -void Text::Render(Viewport &viewport) noexcept { - if (dirty) { - Update(); - } - BlendedSprite &prog = viewport.SpriteProgram(); - prog.SetTexture(tex); - sprite.Draw(); -} - - Texture::Texture() : handle(0) , width(0)