fixes
This commit is contained in:
parent
e4dda0861c
commit
83b45a0dea
9 changed files with 251 additions and 7 deletions
|
|
@ -27,6 +27,19 @@ namespace Crafter {
|
|||
return a + static_cast<T>(elapsed * (b - a));
|
||||
}
|
||||
|
||||
// Template specialization for std::string
|
||||
template <>
|
||||
std::string Lerp<std::string>(std::string a, std::string b, double elapsed) {
|
||||
// Clamp elapsed to [0, 1]
|
||||
if (elapsed < 0.0) elapsed = 0.0;
|
||||
if (elapsed > 1.0) elapsed = 1.0;
|
||||
|
||||
// Number of characters from b to reveal
|
||||
std::size_t len = static_cast<std::size_t>(std::floor(b.size() * elapsed));
|
||||
|
||||
return a + b.substr(0, len);
|
||||
}
|
||||
|
||||
template <typename Tuple, std::size_t... Is>
|
||||
constexpr auto LerpTupleImpl(const Tuple& a, const Tuple& b, double elapsed, std::index_sequence<Is...>) {
|
||||
return std::make_tuple(Lerp(std::get<Is>(a), std::get<Is>(b), elapsed)...);
|
||||
|
|
|
|||
|
|
@ -116,6 +116,44 @@ export namespace Crafter {
|
|||
UiElementBufferBuffer(std::uint_fast32_t width, std::uint_fast32_t height, std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
};
|
||||
|
||||
|
||||
class Font;
|
||||
class UiElementText {
|
||||
public:
|
||||
virtual void Render(const std::string_view text, float size, Pixel_BU8_GU8_RU8_AU8 pixel, Font& font) = 0;
|
||||
};
|
||||
|
||||
class UiElementTextBuffer: public UiElementText, public UiElementBufferBuffer {
|
||||
public:
|
||||
UiElementTextBuffer(std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
UiElementTextBuffer(const std::string_view text, float size, Pixel_BU8_GU8_RU8_AU8 pixel, Font& font, std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
void Render(const std::string_view text, float size, Pixel_BU8_GU8_RU8_AU8 pixel, Font& font) override;
|
||||
};
|
||||
|
||||
class UiElementTextMouseBuffer: public UiElementTextBuffer, public UiElementMouse {
|
||||
public:
|
||||
UiElementTextMouseBuffer(std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
UiElementTextMouseBuffer(const std::string_view text, float size, Pixel_BU8_GU8_RU8_AU8 pixel, Font& font, std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
};
|
||||
|
||||
class UiElementImage {
|
||||
public:
|
||||
virtual void Load(const std::string_view path) = 0;
|
||||
};
|
||||
|
||||
class UiElementImageBuffer : public UiElementImage, public UiElementBufferBuffer {
|
||||
public:
|
||||
UiElementImageBuffer(std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
UiElementImageBuffer(const std::string_view path, std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
void Load(const std::string_view path) override;
|
||||
};
|
||||
|
||||
class UiElementImageMouseBuffer : public UiElementImageBuffer, public UiElementMouse {
|
||||
public:
|
||||
UiElementImageMouseBuffer(std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
UiElementImageMouseBuffer(const std::string_view path, std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
};
|
||||
|
||||
class UiElementBufferMouseBuffer : public UiElementBufferBuffer, public UiElementMouse {
|
||||
public:
|
||||
UiElementBufferMouseBuffer(std::int_fast32_t anchorX, std::int_fast32_t anchorY, std::uint_fast32_t relativeWidth, std::uint_fast32_t relativeHeight, std::int_fast32_t anchorOffsetX = FractionalToMapped(0.5), std::int_fast32_t anchorOffsetY = FractionalToMapped(0.5), std::int_fast32_t z = 0, bool ignoreScaling = false);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue