From 70c0be5b2cfb3b9cfe86d5a6e6624e28fb845453 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Tue, 13 Dec 2022 13:29:06 +0100
Subject: Move text to a separate file

---
 src/graphics/text.cpp        | 37 +++++++++++++++++++++++++++++++++++++
 src/graphics/text.h          | 17 +++++++++++++++++
 src/graphics/textureFont.cpp | 41 -----------------------------------------
 src/graphics/textureFont.h   | 12 +-----------
 4 files changed, 55 insertions(+), 52 deletions(-)
 create mode 100644 src/graphics/text.cpp
 create mode 100644 src/graphics/text.h

(limited to 'src/graphics')

diff --git a/src/graphics/text.cpp b/src/graphics/text.cpp
new file mode 100644
index 0000000..82b8811
--- /dev/null
+++ b/src/graphics/text.cpp
@@ -0,0 +1,37 @@
+#include "text.h"
+
+using namespace Graphics;
+
+Text::Text(TextureFont &font, const std::string &text)
+    : font_(font)
+    , text_(text)
+    , vertices_(sf::Quads, text.size()*4)
+{
+    unsigned int length = vertices_.getVertexCount();
+    sf::Vector2f glyphSize = font_.getGlyphSize();
+    // TODO: this is the simplest rendering way: everything in one line
+    //       we should improve this to make it handle newlines or max witdths
+    for(unsigned int i=0; i < length; i=i+4){
+        vertices_[i+0].position = sf::Vector2f(glyphSize.x * i/4,       0);
+        vertices_[i+1].position = sf::Vector2f(glyphSize.x * (i/4 + 1), 0);
+        vertices_[i+2].position = sf::Vector2f(glyphSize.x * (i/4 + 1), glyphSize.y);
+        vertices_[i+3].position = sf::Vector2f(glyphSize.x * i/4,       glyphSize.y);
+
+        std::array<sf::Vector2f, 4> glyph = font_.getGlyphMapping(text_[i/4]);
+
+        vertices_[i+0].texCoords = glyph[0];
+        vertices_[i+1].texCoords = glyph[1];
+        vertices_[i+2].texCoords = glyph[2];
+        vertices_[i+3].texCoords = glyph[3];
+    }
+}
+
+void Text::draw(sf::RenderTarget& target, sf::RenderStates states) const
+{
+    // TODO: only repaint if needed: when repainting is needed
+    // vertices_.clear() and fun
+    states.transform *= getTransform();
+    states.texture = font_.getTexture();
+    // you may also override states.shader or states.blendMode if you want
+    target.draw(vertices_, states);
+}
diff --git a/src/graphics/text.h b/src/graphics/text.h
new file mode 100644
index 0000000..22179f5
--- /dev/null
+++ b/src/graphics/text.h
@@ -0,0 +1,17 @@
+#ifndef GRAPHICS_TEXT_H
+#define GRAPHICS_TEXT_H
+#include"textureFont.h"
+
+namespace Graphics {
+    class Text : public sf::Drawable, public sf::Transformable  {
+        private:
+            TextureFont &font_;
+            const std::string text_;
+            sf::VertexArray vertices_;
+        public:
+            Text(TextureFont &font, const std::string &text);
+            virtual void draw(sf::RenderTarget& target,
+                    sf::RenderStates states) const override;
+    };
+}
+#endif // GRAPHICS_TEXT_H
diff --git a/src/graphics/textureFont.cpp b/src/graphics/textureFont.cpp
index a95c71c..29f9c71 100644
--- a/src/graphics/textureFont.cpp
+++ b/src/graphics/textureFont.cpp
@@ -2,8 +2,6 @@
 
 using namespace Graphics;
 
-// TextureFont
-
 TextureFont::TextureFont(const sf::Texture &texture,
         TextureFont::Descr description)
     : tex_(texture)
@@ -44,42 +42,3 @@ sf::Vector2f TextureFont::getGlyphSize(){
 const sf::Texture * TextureFont::getTexture(){
     return &tex_;
 }
-
-
-
-
-// Text
-
-Text::Text(TextureFont &font, const std::string &text)
-    : font_(font)
-    , text_(text)
-    , vertices_(sf::Quads, text.size()*4)
-{
-    unsigned int length = vertices_.getVertexCount();
-    sf::Vector2f glyphSize = font_.getGlyphSize();
-    // TODO: this is the simplest rendering way: everything in one line
-    //       we should improve this to make it handle newlines or max witdths
-    for(unsigned int i=0; i < length; i=i+4){
-        vertices_[i+0].position = sf::Vector2f(glyphSize.x * i/4,       0);
-        vertices_[i+1].position = sf::Vector2f(glyphSize.x * (i/4 + 1), 0);
-        vertices_[i+2].position = sf::Vector2f(glyphSize.x * (i/4 + 1), glyphSize.y);
-        vertices_[i+3].position = sf::Vector2f(glyphSize.x * i/4,       glyphSize.y);
-
-        std::array<sf::Vector2f, 4> glyph = font_.getGlyphMapping(text_[i/4]);
-
-        vertices_[i+0].texCoords = glyph[0];
-        vertices_[i+1].texCoords = glyph[1];
-        vertices_[i+2].texCoords = glyph[2];
-        vertices_[i+3].texCoords = glyph[3];
-    }
-}
-
-void Text::draw(sf::RenderTarget& target, sf::RenderStates states) const
-{
-    // TODO: only repaint if needed: when repainting is needed
-    // vertices_.clear() and fun
-    states.transform *= getTransform();
-    states.texture = font_.getTexture();
-    // you may also override states.shader or states.blendMode if you want
-    target.draw(vertices_, states);
-}
diff --git a/src/graphics/textureFont.h b/src/graphics/textureFont.h
index aa89e50..5e78f9e 100644
--- a/src/graphics/textureFont.h
+++ b/src/graphics/textureFont.h
@@ -3,7 +3,7 @@
 
 #include<string>
 #include<array>
-#include"SFML/Graphics.hpp"
+#include<SFML/Graphics.hpp>
 
 namespace Graphics {
     class TextureFont {
@@ -23,16 +23,6 @@ namespace Graphics {
             const sf::Texture *getTexture();
     };
 
-    class Text : public sf::Drawable, public sf::Transformable  {
-        private:
-            TextureFont &font_;
-            const std::string text_;
-            sf::VertexArray vertices_;
-        public:
-            Text(TextureFont &font, const std::string &text);
-            virtual void draw(sf::RenderTarget& target,
-                    sf::RenderStates states) const override;
-    };
 }
 
 #endif // GRAPHICS_FONT_H
-- 
cgit v1.2.3