Merge branch '138-toggle-free-look-with-hotkey' into 'main/atys-live'
[ryzomcore.git] / nel / src / misc / unicode.cpp
blob0e1b3683ba8b569614f7bd61548e9b59c3aadc98
1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2020 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
6 //
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include "stdmisc.h"
21 #include "nel/misc/ucstring.h"
22 #include "nel/misc/utf_string_view.h"
24 #ifdef DEBUG_NEW
25 #define new DEBUG_NEW
26 #endif
28 namespace NLMISC
31 ucstring toLower (const ucstring &str)
33 return ucstring::makeFromUtf8(toLower(str.toUtf8()));
36 // ***************************************************************************
38 void toLower (ucchar *str)
40 while (*str)
42 *str = toLower(*str);
43 ++str;
47 // ***************************************************************************
49 ucchar toLower (ucchar c)
51 if ((c & 0xF800) == 0xD800)
52 return c;
53 std::string tmpc, tmpr;
54 CUtfStringView::append(tmpc, c);
55 ptrdiff_t i = 0;
56 appendToLower(tmpr, tmpc, i);
57 ucstring res = CUtfStringView(tmpr).toUtf16();
58 nlassert(res.size() == 1);
59 return res[0];
62 // ***************************************************************************
64 ucstring toUpper (const ucstring &str)
66 return ucstring::makeFromUtf8(toUpper(str.toUtf8()));
69 // ***************************************************************************
71 void toUpper (ucchar *str)
73 while (*str)
75 *str = toUpper(*str);
76 ++str;
80 // ***************************************************************************
82 ucchar toUpper (ucchar c)
84 if ((c & 0xF800) == 0xD800)
85 return c;
86 std::string tmpc, tmpr;
87 CUtfStringView::append(tmpc, c);
88 ptrdiff_t i = 0;
89 appendToUpper(tmpr, tmpc, i);
90 ucstring res = CUtfStringView(tmpr).toUtf16();
91 nlassert(res.size() == 1);
92 return res[0];
95 } // NLMISC