From 69c61ba7463ee1f1ef72908574d9bf278b1409cb Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:27:49 +0200 Subject: [PATCH] Utility/AbstractTextDrawer: Add GetLineGlyphCount --- include/Nazara/Utility/AbstractTextDrawer.hpp | 3 +++ include/Nazara/Utility/AbstractTextDrawer.inl | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 include/Nazara/Utility/AbstractTextDrawer.inl diff --git a/include/Nazara/Utility/AbstractTextDrawer.hpp b/include/Nazara/Utility/AbstractTextDrawer.hpp index 2ef500aab..c52051a5c 100644 --- a/include/Nazara/Utility/AbstractTextDrawer.hpp +++ b/include/Nazara/Utility/AbstractTextDrawer.hpp @@ -34,6 +34,7 @@ namespace Nz virtual std::size_t GetGlyphCount() const = 0; virtual const Line& GetLine(std::size_t index) const = 0; virtual std::size_t GetLineCount() const = 0; + inline std::size_t GetLineGlyphCount(std::size_t index) const; struct Glyph { @@ -53,4 +54,6 @@ namespace Nz }; } +#include + #endif // NAZARA_ABSTRACTTEXTDRAWER_HPP diff --git a/include/Nazara/Utility/AbstractTextDrawer.inl b/include/Nazara/Utility/AbstractTextDrawer.inl new file mode 100644 index 000000000..a10a16892 --- /dev/null +++ b/include/Nazara/Utility/AbstractTextDrawer.inl @@ -0,0 +1,23 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Utility module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include + +namespace Nz +{ + inline std::size_t AbstractTextDrawer::GetLineGlyphCount(std::size_t index) const + { + std::size_t lineCount = GetLineCount(); + const auto& lineInfo = GetLine(index); + if (index == lineCount - 1) + return GetGlyphCount() - lineInfo.glyphIndex; + + const auto& nextLineInfo = GetLine(index + 1); + + return nextLineInfo.glyphIndex - lineInfo.glyphIndex; + } +} + +#include