|
|
|
@ -1072,7 +1072,9 @@ namespace olc |
|
|
|
|
void DrawPartialRotatedDecal(const olc::vf2d& pos, olc::Decal* decal, const float fAngle, const olc::vf2d& center, const olc::vf2d& source_pos, const olc::vf2d& source_size, const olc::vf2d& scale = { 1.0f, 1.0f }, const olc::Pixel& tint = olc::WHITE); |
|
|
|
|
// Draws a multiline string as a decal, with tiniting and scaling
|
|
|
|
|
void DrawStringDecal(const olc::vf2d& pos, const std::string& sText, const Pixel col = olc::WHITE, const olc::vf2d& scale = { 1.0f, 1.0f }); |
|
|
|
|
void DrawRotatedStringDecal(const olc::vf2d& pos, const std::string& sText, const float fAngle, const olc::vf2d& center = {0.0f, 0.0f}, const Pixel col = olc::WHITE, const olc::vf2d& scale = { 1.0f, 1.0f }); |
|
|
|
|
void DrawStringPropDecal(const olc::vf2d& pos, const std::string& sText, const Pixel col = olc::WHITE, const olc::vf2d& scale = { 1.0f, 1.0f }); |
|
|
|
|
void DrawRotatedStringPropDecal(const olc::vf2d& pos, const std::string& sText, const float fAngle, const olc::vf2d& center = {0.0f, 0.0f}, const Pixel col = olc::WHITE, const olc::vf2d& scale = { 1.0f, 1.0f }); |
|
|
|
|
// Draws a single shaded filled rectangle as a decal
|
|
|
|
|
void FillRectDecal(const olc::vf2d& pos, const olc::vf2d& size, const olc::Pixel col = olc::WHITE); |
|
|
|
|
// Draws a corner shaded rectangle as a decal
|
|
|
|
@ -2857,6 +2859,26 @@ namespace olc |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PixelGameEngine::DrawRotatedStringDecal(const olc::vf2d& pos, const std::string& sText, const float fAngle, const olc::vf2d& center, const Pixel col, const olc::vf2d& scale ) |
|
|
|
|
{ |
|
|
|
|
olc::vf2d spos = center; |
|
|
|
|
for (auto c : sText) |
|
|
|
|
{ |
|
|
|
|
if (c == '\n') |
|
|
|
|
{ |
|
|
|
|
spos.x = center.x; spos.y -= 8.0f; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
int32_t ox = (c - 32) % 16; |
|
|
|
|
int32_t oy = (c - 32) / 16; |
|
|
|
|
DrawPartialRotatedDecal(pos, fontDecal, fAngle, spos, { float(ox) * 8.0f, float(oy) * 8.0f }, { 8.0f, 8.0f }, scale, col); |
|
|
|
|
spos.x -= 8.0f; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PixelGameEngine::DrawStringPropDecal(const olc::vf2d& pos, const std::string& sText, const Pixel col, const olc::vf2d& scale) |
|
|
|
|
{ |
|
|
|
|
olc::vf2d spos = { 0.0f, 0.0f }; |
|
|
|
@ -2926,6 +2948,27 @@ namespace olc |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PixelGameEngine::DrawRotatedStringPropDecal(const olc::vf2d& pos, const std::string& sText, const float fAngle, const olc::vf2d& center, const Pixel col, const olc::vf2d& scale ) |
|
|
|
|
{ |
|
|
|
|
olc::vf2d spos = center; |
|
|
|
|
|
|
|
|
|
for (auto c : sText) |
|
|
|
|
{ |
|
|
|
|
if (c == '\n') |
|
|
|
|
{ |
|
|
|
|
spos.x = center.x; spos.y -= 8.0f; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
int32_t ox = (c - 32) % 16; |
|
|
|
|
int32_t oy = (c - 32) / 16; |
|
|
|
|
|
|
|
|
|
DrawPartialRotatedDecal(pos, fontDecal, fAngle, spos, { float(ox) * 8.0f + float(vFontSpacing[c - 32].x), float(oy) * 8.0f }, { float(vFontSpacing[c - 32].y), 8.0f }, scale, col); |
|
|
|
|
spos.x -= float(vFontSpacing[c - 32].y); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
olc::vi2d PixelGameEngine::GetTextSize(const std::string& s) |
|
|
|
|
{ |
|
|
|
|
olc::vi2d size = { 0,1 }; |
|
|
|
|