Skip to content

Commit 1d84fae

Browse files
authored
dxGetTextSize: accept one float or Vector2 as scale (#1630)
1 parent 85f0e03 commit 1d84fae

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

Client/mods/deathmatch/logic/luadefs/CLuaDrawingDefs.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -864,19 +864,27 @@ int CLuaDrawingDefs::OOP_DxGetTextWidth(lua_State* luaVM)
864864
}
865865

866866
CVector2D CLuaDrawingDefs::OOP_DxGetTextSize(std::variant<CClientDxFont*, eFontType> variantFont, const std::string text, const std::optional<float> optWidth,
867-
const std::optional<float> optScaleXY, const std::optional<float> optScaleY,
868-
const std::optional<bool> optWordBreak, const std::optional<bool> optColorCoded)
867+
const std::optional<std::variant<CVector2D, float>> optScaleXY, const std::optional<bool> optWordBreak,
868+
const std::optional<bool> optColorCoded)
869869
{
870-
// float dxGetTextHeight ( string text, [float width, float scaleXY=1.0, float=scaleY=1.0, mixed font="default", bool wordBreak=false, bool
871-
// colorCoded=false] )
870+
// float, float dxGetTextSize ( string text, [float width=0, float scaleXY=1.0, float=scaleY=1.0, mixed font="default",
871+
// bool wordBreak=false, bool colorCoded=false] )
872872
CGraphicsInterface* const graphics = g_pCore->GetGraphics();
873873

874874
// resolve scale (use X as Y value, if optScaleY is empty)
875875
CVector2D scale(1.0f, 1.0f);
876876
if (optScaleXY.has_value())
877877
{
878-
scale.fX = optScaleXY.value();
879-
scale.fY = optScaleY.has_value() ? optScaleY.value() : scale.fX;
878+
std::variant<CVector2D, float> scaleXY = optScaleXY.value();
879+
if (std::holds_alternative<float>(scaleXY))
880+
{
881+
scale.fX = std::get<float>(scaleXY);
882+
scale.fY = scale.fX;
883+
}
884+
else
885+
{
886+
scale = std::get<CVector2D>(scaleXY);
887+
}
880888
}
881889

882890
CVector2D vecSize;

Client/mods/deathmatch/logic/luadefs/CLuaDrawingDefs.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,16 @@ class CLuaDrawingDefs : public CLuaDefs
3737

3838
static CVector2D OOP_DxGetTextSize(
3939
// font can be called with a std::nullopt to grab the FONT_DEFAULT, see DxGetTextSize
40-
std::variant<CClientDxFont*, eFontType> font, const std::string text, const std::optional<float> optWidth, const std::optional<float> optScaleXY,
41-
const std::optional<float> optScaleY, const std::optional<bool> optWordBreak, const std::optional<bool> optColorCoded);
40+
std::variant<CClientDxFont*, eFontType> font, const std::string text, const std::optional<float> optWidth,
41+
const std::optional<std::variant<CVector2D, float>> optScaleXY, const std::optional<bool> optWordBreak, const std::optional<bool> optColorCoded);
4242

43-
static inline std::tuple<float, float> DxGetTextSize(std::string text, std::optional<float> optWidth, std::optional<float> optScaleXY,
44-
std::optional<float> optScaleY, std::optional<std::variant<CClientDxFont*, eFontType>> optFont,
45-
std::optional<bool> optWordBreak, std::optional<bool> optColorCoded)
43+
static inline std::tuple<float, float> DxGetTextSize(std::string text, std::optional<float> optWidth,
44+
std::optional<std::variant<CVector2D, float>> optScaleXY,
45+
std::optional<std::variant<CClientDxFont*, eFontType>> optFont, std::optional<bool> optWordBreak,
46+
std::optional<bool> optColorCoded)
4647
{
4748
const auto size = OOP_DxGetTextSize(std::move(optFont.value_or(FONT_DEFAULT)), std::move(text), std::move(optWidth), std::move(optScaleXY),
48-
std::move(optScaleY), std::move(optWordBreak), std::move(optColorCoded));
49+
std::move(optWordBreak), std::move(optColorCoded));
4950

5051
return {size.fX, size.fY};
5152
};

0 commit comments

Comments
 (0)