mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-09-10 07:50:06 -04:00
Add functions for u16string handling
This commit is contained in:
parent
b636ce43a4
commit
2e2cbbb1e4
@ -19,6 +19,8 @@
|
|||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <SDL2/SDL_ttf.h>
|
#include <SDL2/SDL_ttf.h>
|
||||||
|
|
||||||
#include <SDL2pp/Font.hh>
|
#include <SDL2pp/Font.hh>
|
||||||
@ -178,6 +180,12 @@ Point Font::GetSizeUNICODE(const Uint16* text) const {
|
|||||||
return Point(w, h);
|
return Point(w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Point Font::GetSizeUNICODE(const std::u16string& text) const {
|
||||||
|
std::vector<Uint16> uint16_text(text.length() + 1);
|
||||||
|
std::copy(text.begin(), text.end(), uint16_text.begin());
|
||||||
|
return GetSizeUNICODE(uint16_text.data());
|
||||||
|
}
|
||||||
|
|
||||||
Surface Font::RenderText_Solid(const std::string& text, SDL_Color fg) {
|
Surface Font::RenderText_Solid(const std::string& text, SDL_Color fg) {
|
||||||
SDL_Surface* surface = TTF_RenderText_Solid(font_, text.c_str(), fg);
|
SDL_Surface* surface = TTF_RenderText_Solid(font_, text.c_str(), fg);
|
||||||
if (surface == nullptr)
|
if (surface == nullptr)
|
||||||
@ -199,6 +207,12 @@ Surface Font::RenderUNICODE_Solid(const Uint16* text, SDL_Color fg) {
|
|||||||
return Surface(surface);
|
return Surface(surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Surface Font::RenderUNICODE_Solid(const std::u16string& text, SDL_Color fg) {
|
||||||
|
std::vector<Uint16> uint16_text(text.length() + 1);
|
||||||
|
std::copy(text.begin(), text.end(), uint16_text.begin());
|
||||||
|
return Font::RenderUNICODE_Solid(uint16_text.data(), fg);
|
||||||
|
}
|
||||||
|
|
||||||
Surface Font::RenderGlyph_Solid(Uint16 ch, SDL_Color fg) {
|
Surface Font::RenderGlyph_Solid(Uint16 ch, SDL_Color fg) {
|
||||||
SDL_Surface* surface = TTF_RenderGlyph_Solid(font_, ch, fg);
|
SDL_Surface* surface = TTF_RenderGlyph_Solid(font_, ch, fg);
|
||||||
if (surface == nullptr)
|
if (surface == nullptr)
|
||||||
@ -227,6 +241,12 @@ Surface Font::RenderUNICODE_Shaded(const Uint16* text, SDL_Color fg, SDL_Color b
|
|||||||
return Surface(surface);
|
return Surface(surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Surface Font::RenderUNICODE_Shaded(const std::u16string& text, SDL_Color fg, SDL_Color bg) {
|
||||||
|
std::vector<Uint16> uint16_text(text.length() + 1);
|
||||||
|
std::copy(text.begin(), text.end(), uint16_text.begin());
|
||||||
|
return Font::RenderUNICODE_Shaded(uint16_text.data(), fg, bg);
|
||||||
|
}
|
||||||
|
|
||||||
Surface Font::RenderGlyph_Shaded(Uint16 ch, SDL_Color fg, SDL_Color bg) {
|
Surface Font::RenderGlyph_Shaded(Uint16 ch, SDL_Color fg, SDL_Color bg) {
|
||||||
SDL_Surface* surface = TTF_RenderGlyph_Shaded(font_, ch, fg, bg);
|
SDL_Surface* surface = TTF_RenderGlyph_Shaded(font_, ch, fg, bg);
|
||||||
if (surface == nullptr)
|
if (surface == nullptr)
|
||||||
@ -255,6 +275,12 @@ Surface Font::RenderUNICODE_Blended(const Uint16* text, SDL_Color fg) {
|
|||||||
return Surface(surface);
|
return Surface(surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Surface Font::RenderUNICODE_Blended(const std::u16string& text, SDL_Color fg) {
|
||||||
|
std::vector<Uint16> uint16_text(text.length() + 1);
|
||||||
|
std::copy(text.begin(), text.end(), uint16_text.begin());
|
||||||
|
return Font::RenderUNICODE_Blended(uint16_text.data(), fg);
|
||||||
|
}
|
||||||
|
|
||||||
Surface Font::RenderGlyph_Blended(Uint16 ch, SDL_Color fg) {
|
Surface Font::RenderGlyph_Blended(Uint16 ch, SDL_Color fg) {
|
||||||
SDL_Surface* surface = TTF_RenderGlyph_Blended(font_, ch, fg);
|
SDL_Surface* surface = TTF_RenderGlyph_Blended(font_, ch, fg);
|
||||||
if (surface == nullptr)
|
if (surface == nullptr)
|
||||||
|
@ -518,6 +518,24 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Point GetSizeUNICODE(const Uint16* text) const;
|
Point GetSizeUNICODE(const Uint16* text) const;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Calculate the resulting surface size of the UNICODE encoded text rendered using font
|
||||||
|
///
|
||||||
|
/// \param[in] text UNICODE null terminated string to size up
|
||||||
|
///
|
||||||
|
/// \returns Point representing dimensions of the rendered text
|
||||||
|
///
|
||||||
|
/// \throws SDL2pp::Exception
|
||||||
|
///
|
||||||
|
/// No actual rendering is done, however correct kerning is done
|
||||||
|
/// to get the actual width. The height returned in h is the same
|
||||||
|
/// as you can get using GetHeight()
|
||||||
|
///
|
||||||
|
/// \see https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf.html#SEC41
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Point GetSizeUNICODE(const std::u16string& text) const;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Render LATIN1 text using solid mode
|
/// \brief Render LATIN1 text using solid mode
|
||||||
///
|
///
|
||||||
@ -563,6 +581,21 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Surface RenderUNICODE_Solid(const Uint16* text, SDL_Color fg);
|
Surface RenderUNICODE_Solid(const Uint16* text, SDL_Color fg);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Render UNICODE encoded text using solid mode
|
||||||
|
///
|
||||||
|
/// \param[in] text UNICODE encoded string to render
|
||||||
|
/// \param[in] fg Color to render the text in
|
||||||
|
///
|
||||||
|
/// \returns Surface containing rendered text
|
||||||
|
///
|
||||||
|
/// \throws SDL2pp::Exception
|
||||||
|
///
|
||||||
|
/// \see https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf.html#SEC45
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Surface RenderUNICODE_Solid(const std::u16string& text, SDL_Color fg);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Render the glyph for UNICODE character using solid mode
|
/// \brief Render the glyph for UNICODE character using solid mode
|
||||||
///
|
///
|
||||||
@ -626,6 +659,22 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Surface RenderUNICODE_Shaded(const Uint16* text, SDL_Color fg, SDL_Color bg);
|
Surface RenderUNICODE_Shaded(const Uint16* text, SDL_Color fg, SDL_Color bg);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Render UNICODE encoded text using shaded mode
|
||||||
|
///
|
||||||
|
/// \param[in] text UNICODE encoded string to render
|
||||||
|
/// \param[in] fg Color to render the text in
|
||||||
|
/// \param[in] bg Color to render the background box in
|
||||||
|
///
|
||||||
|
/// \returns Surface containing rendered text
|
||||||
|
///
|
||||||
|
/// \throws SDL2pp::Exception
|
||||||
|
///
|
||||||
|
/// \see https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf.html#SEC49
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Surface RenderUNICODE_Shaded(const std::u16string& text, SDL_Color fg, SDL_Color bg);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Render the glyph for UNICODE character using shaded mode
|
/// \brief Render the glyph for UNICODE character using shaded mode
|
||||||
///
|
///
|
||||||
@ -687,6 +736,21 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Surface RenderUNICODE_Blended(const Uint16* text, SDL_Color fg);
|
Surface RenderUNICODE_Blended(const Uint16* text, SDL_Color fg);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Render UNICODE encoded text using blended mode
|
||||||
|
///
|
||||||
|
/// \param[in] text UNICODE encoded string to render
|
||||||
|
/// \param[in] fg Color to render the text in
|
||||||
|
///
|
||||||
|
/// \returns Surface containing rendered text
|
||||||
|
///
|
||||||
|
/// \throws SDL2pp::Exception
|
||||||
|
///
|
||||||
|
/// \see https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf.html#SEC53
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Surface RenderUNICODE_Blended(const std::u16string& text, SDL_Color fg);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Render the glyph for UNICODE character using blended mode
|
/// \brief Render the glyph for UNICODE character using blended mode
|
||||||
///
|
///
|
||||||
|
Loading…
x
Reference in New Issue
Block a user