diff --git a/framework/platform-dx/sprite.cpp b/framework/platform-dx/sprite.cpp index f750a3a..afa4352 100644 --- a/framework/platform-dx/sprite.cpp +++ b/framework/platform-dx/sprite.cpp @@ -43,11 +43,11 @@ namespace xna { DxGlyph g; g.Subrect.left = glyphs[i].Left(); g.Subrect.right = glyphs[i].Right(); - g.Subrect.bottom = glyphs[i].Bottom(); g.Subrect.top = glyphs[i].Top(); + g.Subrect.bottom = glyphs[i].Bottom(); g.Character = static_cast(charMap[i]); g.XOffset = kerning[i].X; - g.YOffset = kerning[i].Y; + g.YOffset = cropping[i].Y; g.XAdvance = kerning[i].Z; dxGlyps[i] = g; } @@ -90,6 +90,19 @@ namespace xna { return vec2; } + Vector2 SpriteFont::MeasureString(WString const& text, bool ignoreWhiteSpace) + { + if (!impl->_dxSpriteFont) + return Vector2(); + + const auto size = impl->_dxSpriteFont->MeasureString(text.c_str(), ignoreWhiteSpace); + Vector2 vec2{}; + vec2.X = size.m128_f32[0]; + vec2.Y = size.m128_f32[1]; + + return vec2; + } + static constexpr void ConvertSpriteSort(SpriteSortMode value, DirectX::SpriteSortMode& target) { target = static_cast(static_cast(value)); } diff --git a/inc/graphics/sprite.hpp b/inc/graphics/sprite.hpp index 46258d5..943dc0d 100644 --- a/inc/graphics/sprite.hpp +++ b/inc/graphics/sprite.hpp @@ -93,8 +93,8 @@ namespace xna { std::vector const& kerning, std::optional defaultCharacter); ~SpriteFont(); - Vector2 MeasureString(String const& text, bool ignoreWhiteSpace = false); - Vector2 MeasureString(WString const& text, bool ignoreWhiteSpace = false); + Vector2 MeasureString(String const& text, bool ignoreWhiteSpace = true); + Vector2 MeasureString(WString const& text, bool ignoreWhiteSpace = true); private: sptr textureValue = nullptr; diff --git a/samples/02_PlatfformerStarterKit/game.cpp b/samples/02_PlatfformerStarterKit/game.cpp index 8d14a35..ebcfc79 100644 --- a/samples/02_PlatfformerStarterKit/game.cpp +++ b/samples/02_PlatfformerStarterKit/game.cpp @@ -62,6 +62,14 @@ namespace PlatformerStarterKit { DrawHud(); + /*auto b = graphicsDevice->Viewport().Bounds(); + auto p = Vector2(0, 0); + spriteBatch->DrawString(hudFont, " !\"#$%&'()*+,-./0123456789:;<=>?@", p, Colors::Black); + p.Y += 50; + spriteBatch->DrawString(hudFont, "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`", p, Colors::Black); + p.Y += 50; + spriteBatch->DrawString(hudFont, "abcdefghijklmnopqrstuvwxyz{|}~", p, Colors::Black);*/ + spriteBatch->End(); Game::Draw(gameTime);