Utility: Replace UInt32 by TextStyleFlags

This commit is contained in:
Lynix
2019-04-13 13:09:53 +02:00
parent e665ea5373
commit 0582cbfc26
9 changed files with 52 additions and 40 deletions

View File

@@ -329,18 +329,26 @@ namespace Nz
TextAlign_Max = TextAlign_Right
};
enum TextStyleFlags
enum TextStyle
{
TextStyle_Regular = 0x0,
TextStyle_Bold,
TextStyle_Italic,
TextStyle_StrikeThrough,
TextStyle_Underlined,
TextStyle_Bold = 0x1,
TextStyle_Italic = 0x2,
TextStyle_StrikeThrough = 0x4,
TextStyle_Underlined = 0x8,
TextStyle_Max = TextStyle_Underlined*2-1
TextStyle_Max = TextStyle_Underlined
};
template<>
struct EnumAsFlags<TextStyle>
{
static constexpr TextStyle max = TextStyle_Max;
};
using TextStyleFlags = Flags<TextStyle>;
constexpr TextStyleFlags TextStyle_Regular = 0;
enum VertexComponent
{
VertexComponent_Unused = -1,

View File

@@ -16,6 +16,7 @@
#include <Nazara/Core/ResourceLoader.hpp>
#include <Nazara/Core/ResourceParameters.hpp>
#include <Nazara/Utility/AbstractAtlas.hpp>
#include <Nazara/Utility/Enums.hpp>
#include <memory>
#include <unordered_map>
@@ -58,14 +59,14 @@ namespace Nz
bool Create(FontData* data);
void Destroy();
bool ExtractGlyph(unsigned int characterSize, char32_t character, UInt32 style, FontGlyph* glyph) const;
bool ExtractGlyph(unsigned int characterSize, char32_t character, TextStyleFlags style, FontGlyph* glyph) const;
const std::shared_ptr<AbstractAtlas>& GetAtlas() const;
std::size_t GetCachedGlyphCount(unsigned int characterSize, UInt32 style) const;
std::size_t GetCachedGlyphCount(unsigned int characterSize, TextStyleFlags style) const;
std::size_t GetCachedGlyphCount() const;
String GetFamilyName() const;
int GetKerning(unsigned int characterSize, char32_t first, char32_t second) const;
const Glyph& GetGlyph(unsigned int characterSize, UInt32 style, char32_t character) const;
const Glyph& GetGlyph(unsigned int characterSize, TextStyleFlags style, char32_t character) const;
unsigned int GetGlyphBorder() const;
unsigned int GetMinimumStepSize() const;
const SizeInfo& GetSizeInfo(unsigned int characterSize) const;
@@ -73,8 +74,8 @@ namespace Nz
bool IsValid() const;
bool Precache(unsigned int characterSize, UInt32 style, char32_t character) const;
bool Precache(unsigned int characterSize, UInt32 style, const String& characterSet) const;
bool Precache(unsigned int characterSize, TextStyleFlags style, char32_t character) const;
bool Precache(unsigned int characterSize, TextStyleFlags style, const String& characterSet) const;
void SetAtlas(const std::shared_ptr<AbstractAtlas>& atlas);
void SetGlyphBorder(unsigned int borderSize);
@@ -130,11 +131,11 @@ namespace Nz
private:
using GlyphMap = std::unordered_map<char32_t, Glyph>;
UInt64 ComputeKey(unsigned int characterSize, UInt32 style) const;
UInt64 ComputeKey(unsigned int characterSize, TextStyleFlags style) const;
void OnAtlasCleared(const AbstractAtlas* atlas);
void OnAtlasLayerChange(const AbstractAtlas* atlas, AbstractImage* oldLayer, AbstractImage* newLayer);
void OnAtlasRelease(const AbstractAtlas* atlas);
const Glyph& PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, UInt32 style, char32_t character) const;
const Glyph& PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, TextStyleFlags style, char32_t character) const;
static bool Initialize();
static void Uninitialize();

View File

@@ -10,6 +10,7 @@
#include <Nazara/Prerequisites.hpp>
#include <Nazara/Core/String.hpp>
#include <Nazara/Utility/Config.hpp>
#include <Nazara/Utility/Enums.hpp>
namespace Nz
{
@@ -21,7 +22,7 @@ namespace Nz
FontData() = default;
virtual ~FontData();
virtual bool ExtractGlyph(unsigned int characterSize, char32_t character, UInt32 style, FontGlyph* dst) = 0;
virtual bool ExtractGlyph(unsigned int characterSize, char32_t character, TextStyleFlags style, FontGlyph* dst) = 0;
virtual String GetFamilyName() const = 0;
virtual String GetStyleName() const = 0;
@@ -35,7 +36,7 @@ namespace Nz
virtual float QueryUnderlinePosition(unsigned int characterSize) const = 0;
virtual float QueryUnderlineThickness(unsigned int characterSize) const = 0;
virtual bool SupportsStyle(UInt32 style) const = 0;
virtual bool SupportsStyle(TextStyleFlags style) const = 0;
};
}

View File

@@ -38,20 +38,20 @@ namespace Nz
std::size_t GetGlyphCount() const override;
const Line& GetLine(std::size_t index) const override;
std::size_t GetLineCount() const override;
UInt32 GetStyle() const;
TextStyleFlags GetStyle() const;
const String& GetText() const;
void SetCharacterSize(unsigned int characterSize);
void SetColor(const Color& color);
void SetFont(Font* font);
void SetStyle(UInt32 style);
void SetStyle(TextStyleFlags style);
void SetText(const String& str);
SimpleTextDrawer& operator=(const SimpleTextDrawer& drawer);
SimpleTextDrawer& operator=(SimpleTextDrawer&& drawer);
static SimpleTextDrawer Draw(const String& str, unsigned int characterSize, UInt32 style = TextStyle_Regular, const Color& color = Color::White);
static SimpleTextDrawer Draw(Font* font, const String& str, unsigned int characterSize, UInt32 style = TextStyle_Regular, const Color& color = Color::White);
static SimpleTextDrawer Draw(const String& str, unsigned int characterSize, TextStyleFlags style = TextStyle_Regular, const Color& color = Color::White);
static SimpleTextDrawer Draw(Font* font, const String& str, unsigned int characterSize, TextStyleFlags style = TextStyle_Regular, const Color& color = Color::White);
private:
void ClearGlyphs() const;
@@ -76,8 +76,8 @@ namespace Nz
mutable Rectf m_workingBounds;
mutable Recti m_bounds;
String m_text;
TextStyleFlags m_style;
mutable UInt32 m_previousCharacter;
UInt32 m_style;
mutable Vector2ui m_drawPos;
mutable bool m_colorUpdated;
mutable bool m_glyphUpdated;