]> git.lizzy.rs Git - minetest.git/blobdiff - src/util/enriched_string.h
Fix Enter key after creating a new world (#12997)
[minetest.git] / src / util / enriched_string.h
index 1aca8948ae6160720b6c899d14e0a0389148a421..4e249eac5b80d4783a86c3a18b8b270dae45e051 100644 (file)
@@ -1,6 +1,6 @@
 /*
 Copyright (C) 2013 xyz, Ilya Zhuravlev <whatever@xyz.is>
-Copyright (C) 2016 Nore, NathanaĆ«l Courant <nore@mesecons.net>
+Copyright (C) 2016 Nore, NathanaĆ«lle Courant <nore@mesecons.net>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
@@ -17,24 +17,28 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef ENRICHEDSTRING_HEADER
-#define ENRICHEDSTRING_HEADER
+#pragma once
 
 #include <string>
 #include <vector>
 #include <SColor.h>
 
+using namespace irr;
+
 class EnrichedString {
 public:
        EnrichedString();
        EnrichedString(const std::wstring &s,
-               const irr::video::SColor &color = irr::video::SColor(255, 255, 255, 255));
+               const video::SColor &color = video::SColor(255, 255, 255, 255));
        EnrichedString(const wchar_t *str,
-               const irr::video::SColor &color = irr::video::SColor(255, 255, 255, 255));
+               const video::SColor &color = video::SColor(255, 255, 255, 255));
        EnrichedString(const std::wstring &string,
-               const std::vector<irr::video::SColor> &colors);
+               const std::vector<video::SColor> &colors);
        void operator=(const wchar_t *str);
-       void addAtEnd(const std::wstring &s, const irr::video::SColor &color);
+
+       void clear();
+
+       void addAtEnd(const std::wstring &s, video::SColor color);
 
        // Adds the character source[i] at the end.
        // An EnrichedString should always be able to be copied
@@ -49,8 +53,20 @@ class EnrichedString {
        EnrichedString operator+(const EnrichedString &other) const;
        void operator+=(const EnrichedString &other);
        const wchar_t *c_str() const;
-       const std::vector<irr::video::SColor> &getColors() const;
+       const std::vector<video::SColor> &getColors() const;
        const std::wstring &getString() const;
+
+       inline void setDefaultColor(video::SColor color)
+       {
+               m_default_color = color;
+               updateDefaultColor();
+       }
+       void updateDefaultColor();
+       inline const video::SColor &getDefaultColor() const
+       {
+               return m_default_color;
+       }
+
        inline bool operator==(const EnrichedString &other) const
        {
                return (m_string == other.m_string && m_colors == other.m_colors);
@@ -59,12 +75,6 @@ class EnrichedString {
        {
                return !(*this == other);
        }
-       inline void clear()
-       {
-               m_string.clear();
-               m_colors.clear();
-               m_has_background = false;
-       }
        inline bool empty() const
        {
                return m_string.empty();
@@ -73,19 +83,28 @@ class EnrichedString {
        {
                return m_string.size();
        }
+
        inline bool hasBackground() const
        {
                return m_has_background;
        }
-       inline irr::video::SColor getBackground() const
+       inline video::SColor getBackground() const
        {
                return m_background;
        }
+       inline void setBackground(video::SColor color)
+       {
+               m_background = color;
+               m_has_background = true;
+       }
+
 private:
        std::wstring m_string;
-       std::vector<irr::video::SColor> m_colors;
+       std::vector<video::SColor> m_colors;
        bool m_has_background;
-       irr::video::SColor m_background;
+       video::SColor m_default_color;
+       video::SColor m_background;
+       // This variable defines the length of the default-colored text.
+       // Change this to a std::vector if an "end coloring" tag is wanted.
+       size_t m_default_length = 0;
 };
-
-#endif