wide string: a few adjustments
This commit is contained in:
@@ -129,7 +129,7 @@ std::wstring Lyrics::title()
|
|||||||
std::wstring result = L"Lyrics: ";
|
std::wstring result = L"Lyrics: ";
|
||||||
|
|
||||||
result += Scroller(
|
result += Scroller(
|
||||||
Format::stringify<wchar_t>(Format::wparse(L"{%a - %t}"), &itsSong),
|
Format::stringify<wchar_t>(Format::wparse(L"%a - %t"), &itsSong),
|
||||||
itsScrollBegin,
|
itsScrollBegin,
|
||||||
COLS-result.length()-(Config.design == Design::Alternative ? 2 : Global::VolumeState.length())
|
COLS-result.length()-(Config.design == Design::Alternative ? 2 : Global::VolumeState.length())
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -22,14 +22,14 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include "utility/wide_string.h"
|
#include "utility/wide_string.h"
|
||||||
|
|
||||||
std::string ToString(std::wstring ws)
|
std::string ToString(const std::wstring &ws)
|
||||||
{
|
{
|
||||||
return boost::locale::conv::utf_to_utf<char>(std::move(ws));
|
return boost::locale::conv::utf_to_utf<char>(ws);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring ToWString(std::string s)
|
std::wstring ToWString(const std::string &s)
|
||||||
{
|
{
|
||||||
return boost::locale::conv::utf_to_utf<wchar_t>(std::move(s));
|
return boost::locale::conv::utf_to_utf<wchar_t>(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t wideLength(const std::wstring &ws)
|
size_t wideLength(const std::wstring &ws)
|
||||||
@@ -52,7 +52,7 @@ void wideCut(std::wstring &ws, size_t max_length)
|
|||||||
int remained_len = max_length;
|
int remained_len = max_length;
|
||||||
for (; i < ws.length(); ++i)
|
for (; i < ws.length(); ++i)
|
||||||
{
|
{
|
||||||
remained_len -= wcwidth(ws[i]);
|
remained_len -= std::max(wcwidth(ws[i]), 1);
|
||||||
if (remained_len < 0)
|
if (remained_len < 0)
|
||||||
{
|
{
|
||||||
ws.resize(i);
|
ws.resize(i);
|
||||||
|
|||||||
@@ -23,14 +23,13 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
std::string ToString(std::wstring ws);
|
std::string ToString(const std::wstring &ws);
|
||||||
std::wstring ToWString(std::string s);
|
std::wstring ToWString(const std::string &s);
|
||||||
|
|
||||||
size_t wideLength(const std::wstring &ws);
|
size_t wideLength(const std::wstring &ws);
|
||||||
|
|
||||||
void wideCut(std::wstring &ws, size_t max_length);
|
void wideCut(std::wstring &ws, size_t max_length);
|
||||||
std::wstring wideShorten(const std::wstring &ws, size_t max_length);
|
|
||||||
|
|
||||||
|
std::wstring wideShorten(const std::wstring &ws, size_t max_length);
|
||||||
inline std::string wideShorten(const std::string &s, size_t max_length)
|
inline std::string wideShorten(const std::string &s, size_t max_length)
|
||||||
{
|
{
|
||||||
return ToString(wideShorten(ToWString(s), max_length));
|
return ToString(wideShorten(ToWString(s), max_length));
|
||||||
|
|||||||
Reference in New Issue
Block a user