rework FontPixelSizeConfig struct

This commit is contained in:
ohyzha
2025-01-05 18:14:29 +02:00
parent 9ff67815d0
commit 58a56560d9
2 changed files with 18 additions and 13 deletions

View File

@@ -33,15 +33,7 @@ namespace OpenVulkano::Scene
m_atlasData = std::make_shared<AtlasData>(); m_atlasData = std::make_shared<AtlasData>();
const auto& [lib, face] = FontAtlasGeneratorBase::InitFreetype(source); const auto& [lib, face] = FontAtlasGeneratorBase::InitFreetype(source);
if (m_pixelSizeConfig.isPixelSize) FT_Set_Pixel_Sizes(face.get(), 0, m_pixelSizeConfig.CalculatePixelSize());
{
FT_Set_Pixel_Sizes(face.get(), 0, m_pixelSizeConfig.size);
}
else
{
const float pixelSize = (m_pixelSizeConfig.size * m_pixelSizeConfig.dpi) / 72.0f;
FT_Set_Pixel_Sizes(face.get(), 0, pixelSize);
}
auto [allGlyphs, area] = InitGlyphsForPacking(chset, face); auto [allGlyphs, area] = InitGlyphsForPacking(chset, face);
const double atlasWidth = ceil(sqrt(area)); const double atlasWidth = ceil(sqrt(area));

View File

@@ -11,11 +11,24 @@
namespace OpenVulkano::Scene namespace OpenVulkano::Scene
{ {
struct FontPixelSizeConfig class FontPixelSizeConfig
{ {
float size = 24.f; public:
float dpi = 72.f; FontPixelSizeConfig(float size = 24.f, float dpi = 72.f, bool isPixelSize = true)
bool isPixelSize = true; : m_size(size), m_dpi(dpi), m_isPixelSize(isPixelSize)
{
}
void SetSize(float size) { m_size = size; }
void SetDpi(float dpi) { m_dpi = dpi; }
void SetIsPixelSize(bool isPixelSize) { m_isPixelSize = isPixelSize; }
[[nodiscard]] float GetSize() const { return m_size; }
[[nodiscard]] float GetDpi() const { return m_dpi; }
[[nodiscard]] bool GetIsPixelSize() const { return m_isPixelSize; }
[[nodiscard]] unsigned CalculatePixelSize() const { return m_isPixelSize ? m_size : (m_size * m_dpi) / 72.0f; }
private:
float m_size;
float m_dpi;
bool m_isPixelSize;
}; };
class BitmapFontAtlasGenerator : public FontAtlasGeneratorBase class BitmapFontAtlasGenerator : public FontAtlasGeneratorBase