diff --git a/Source/3rdParty/OpenVanilla/Mandarin/Mandarin.hh b/Source/3rdParty/OVMandarin/Mandarin.hh similarity index 100% rename from Source/3rdParty/OpenVanilla/Mandarin/Mandarin.hh rename to Source/3rdParty/OVMandarin/Mandarin.hh diff --git a/Source/3rdParty/OpenVanilla/Mandarin/Mandarin.mm b/Source/3rdParty/OVMandarin/Mandarin.mm similarity index 100% rename from Source/3rdParty/OpenVanilla/Mandarin/Mandarin.mm rename to Source/3rdParty/OVMandarin/Mandarin.mm diff --git a/Source/3rdParty/OpenVanilla/OVUTF8Helper.h b/Source/3rdParty/OpenVanilla/OVUTF8Helper.h deleted file mode 100644 index d7a562e0..00000000 --- a/Source/3rdParty/OpenVanilla/OVUTF8Helper.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * OVUTF8Helper.h - * - * Copyright 2011-2022 OpenVanilla Project (MIT License). - * All rights reserved. See "LICENSE.TXT" for details. - */ - -#ifndef OVUTF8Helper_h -#define OVUTF8Helper_h - -#include -#include -#include - -#include - -namespace OpenVanilla { - using namespace std; - - class OVUTF8Helper { - public: - static const vector SplitStringByCodePoint(const string& utf8String) - { - size_t index, length = utf8String.length(); - vector result; - - for (index = 0; index < length; index++) { - unsigned char c = utf8String[index]; - - if (!(c & 0x80)) { - result.push_back(utf8String.substr(index, 1)); - } - else if ((c & (0x80 | 0x40)) && !(c & 0x20)) { - result.push_back(utf8String.substr(index, 2)); - index += 1; - } - else if ((c & (0x80 | 0x40 | 0x20)) && !(c & 0x10)) { - result.push_back(utf8String.substr(index, 3)); - index += 2; - } - else if ((c & (0x80 | 0x40 | 0x20 | 0x10)) && !(c & 0x8)) { - result.push_back(utf8String.substr(index, 4)); - index += 3; - } - } - - return result; - } - - static const string CombineCodePoints(const vector& codePoints) - { - string result; - for (vector::const_iterator iter = codePoints.begin(); iter != codePoints.end() ; ++iter) - result += *iter; - - return result; - } - - static const wstring ConvertStringToUTF16WideString(const string& utf8String) - { - wstring wideString; - vector charVector = OVUTF8Helper::SplitStringByCodePoint(utf8String); - - size_t length = charVector.size(); - for (size_t index = 0; index < length; index++) - { - unsigned int codePoint = OVUTF8Helper::CodePointFromSingleUTF8String(charVector[index]); - - if (codePoint < 0x10000) { - wideString += (wchar_t)codePoint; - } - else { - const unsigned int leadOffset = 0xD800 - (0x10000 >> 10); - unsigned int lead = leadOffset + (codePoint >> 10); - unsigned int trail = 0xdc00 + (codePoint & 0x3ff); - wideString += (wchar_t)lead; - wideString += (wchar_t)trail; - } - } - - return wideString; - } - - static const string StringFromUTF16WideString(const wstring& utf16WideString) - { - string utf8String; - size_t length = utf16WideString.length(); - - unsigned int u16; - for (size_t index = 0; index < length; index++) { - u16 = utf16WideString[index]; - - if (u16 >= 0xd800 && u16 <= 0xdbff) { - if (index + 1 < length) { - unsigned int trailing = utf16WideString[index + 1]; - if (trailing >= 0xdc00 && trailing <= 0xdfff) { - index++; - - const unsigned int surrogateOffset = 0x10000 - (0xD800 << 10) - 0xDC00; - unsigned int codePoint = (u16 << 10) + trailing + surrogateOffset; - utf8String += OVUTF8Helper::SingleUTF8StringFromCodePoint(codePoint); - } - } - } - else if (!(u16 >= 0xdc00 && u16 <= 0xdfff)) - { - utf8String += OVUTF8Helper::SingleUTF8StringFromCodePoint(u16); - } - } - - return utf8String; - } - - static const string SingleUTF8StringFromCodePoint(unsigned int codePoint) - { - string utf8String; - - if (codePoint < 0x80) { - utf8String += (unsigned char)codePoint; - } - else if (codePoint < 0x800) { - utf8String += (unsigned char)((codePoint >> 6) | 0xc0); - utf8String += (unsigned char)((codePoint & 0x3f) | 0x80); - } - else if (codePoint < 0x10000) { - utf8String += (unsigned char)((codePoint >> 12) | 0xe0); - utf8String += (unsigned char)(((codePoint >> 6) & 0x3f) | 0x80); - utf8String += (unsigned char)((codePoint & 0x3f) | 0x80); - } - else { - utf8String += (unsigned char)((codePoint >> 18) | 0xf0); - utf8String += (unsigned char)((codePoint >> 12) | 0x80); - utf8String += (unsigned char)(((codePoint >> 6) & 0x3f) | 0x80); - utf8String += (unsigned char)((codePoint & 0x3f) | 0x80); - } - - return utf8String; - } - - static unsigned int CodePointFromSingleUTF8String(const string& utf8String) - { - switch(utf8String.length()) { - case 1: - return (unsigned int)utf8String[0]; - case 2: - return (((unsigned char)utf8String[0] << 6) & 0x7ff) + ((unsigned char)utf8String[1] & 0x3f); - case 3: - return (((unsigned char)utf8String[0] << 12) & 0xffff) + (((unsigned char)utf8String[1] << 6) & 0xfff) + ((unsigned char)utf8String[2] & 0x3f); - case 4: - return (((unsigned char)utf8String[0] << 18) & 0x1fffff) + (((unsigned char)utf8String[1] << 12) & 0x3ffff) + (((unsigned char)utf8String[2] << 6) & 0xfff) + ((unsigned char)utf8String[3] & 0x3f); - } - - return 0; - } - }; - - class OVUTF8 { - public: - static const string FromUTF16(const wstring& utf16String) - { - return OVUTF8Helper::StringFromUTF16WideString(utf16String); - } - }; - - class OVUTF16 { - public: - static const wstring FromUTF8(const string& utf8String) - { - return OVUTF8Helper::ConvertStringToUTF16WideString(utf8String); - } - }; -} - -#endif diff --git a/Source/3rdParty/OpenVanilla/OVWildcard.h b/Source/3rdParty/OpenVanilla/OVWildcard.h deleted file mode 100644 index bc4fd6a3..00000000 --- a/Source/3rdParty/OpenVanilla/OVWildcard.h +++ /dev/null @@ -1,228 +0,0 @@ -/* - * OVWildcard.h - * - * Copyright 2011-2022 OpenVanilla Project (MIT License). - * All rights reserved. See "LICENSE.TXT" for details. - */ - -#ifndef OVWildcard_h -#define OVWildcard_h - -#include -#include -#include -#include - -namespace OpenVanilla { - using namespace std; - - class OVWildcard { - public: - OVWildcard(const string& expression, char matchOneChar = '?', char matchZeroOrMoreChar = '*', bool matchEndOfLine = true, bool caseSensitive = false) - : m_caseSensitive(caseSensitive) - , m_expression(expression) - , m_matchEndOfLine(matchEndOfLine) - , m_matchOneChar(matchOneChar) - , m_matchZeroOrMoreChar(matchZeroOrMoreChar) - { - size_t index; - for (index = 0; index < expression.length(); index++) { - if (expression[index] == matchOneChar || expression[index] == matchZeroOrMoreChar) break; - } - - m_longestHeadMatchString = expression.substr(0, index); - - for (string::size_type i = 0; i < expression.length(); i++) { - char c = expression[i]; - if (c == matchOneChar) { - m_states.push_back(State(AnyOne, 0)); - } - else if (c == matchZeroOrMoreChar) { - char nextChar = 0; - string::size_type j; - for (j = i + 1; j < expression.length(); j++) { - char k = expression[j]; - if (k != matchZeroOrMoreChar) { - if (k == matchOneChar) k = -1; - - nextChar = k; - break; - } - } - - i = j; - m_states.push_back(State(AnyUntil, nextChar)); - } - else { - m_states.push_back(State(Exact, c)); - } - } - } - - bool match(const string& target, size_t fromState = 0) const - { - string::size_type i = 0, slength = target.length(); - vector::size_type j, vlength = m_states.size(); - - for (j = fromState; j < vlength; j++) { - State state = m_states[j]; - Directive d = state.first; - int k = state.second; - - if (i >= slength) { - if (d == AnyUntil && !k) return true; - return false; - } - - switch (d) { - case Exact: - if (!equalChars(target[i], k)) return false; - i++; - break; - - case AnyOne: - i++; - break; - - case AnyUntil: - if (k == -1) { - // means *?, equals ?, so just advance one character - i++; - } - else if (k == 0) { - // until end, always true - return true; - } - else { - bool found = false; - string::size_type backIndex; - - for (backIndex = slength - 1; backIndex >= i; backIndex--) { - if (equalChars(target[backIndex], k)) { - string substring = target.substr(backIndex + 1, slength - (backIndex + 1)); - - if (match(substring, j + 1)) { - found = true; - i = backIndex + 1; - break; - } - } - - if (!backIndex) - break; - } - - if (!found) - return false; - } - - break; - } - } - - if (m_matchEndOfLine && i != slength) - return false; - - return true; - } - - const string longestHeadMatchString() const - { - return m_longestHeadMatchString; - } - - const string expression() const - { - return m_expression; - } - - bool isCaseSensitive() const - { - return m_caseSensitive; - } - - char matchOneChar() const - { - return m_matchOneChar; - } - - char matchZeroOrMoreChar() const - { - return m_matchZeroOrMoreChar; - } - - friend ostream& operator<<(ostream& stream, const OVWildcard& wildcard); - - protected: - enum Directive { - Exact, - AnyOne, - AnyUntil - }; - - typedef pair State; - - bool equalChars(char a, char b) const - { - if (m_caseSensitive) - return a == b; - else - return tolower(a) == tolower(b); - } - - bool m_caseSensitive; - bool m_matchEndOfLine; - char m_matchOneChar; - char m_matchZeroOrMoreChar; - vector m_states; - - string m_expression; - string m_longestHeadMatchString; - - public: - static const bool Match(const string& text, const string& expression, char matchOneChar = '?', char matchZeroOrMoreChar = '*', bool matchEndOfLine = true, bool caseSensitive = false) - { - OVWildcard exp(expression, matchOneChar, matchZeroOrMoreChar, matchEndOfLine, caseSensitive); - return exp.match(text); - } - - static const vector WildcardsFromStrings(const vector& expressions, char matchOneChar = '?', char matchZeroOrMoreChar = '*', bool matchEndOfLine = true, bool caseSensitive = false) - { - vector result; - vector::const_iterator iter = expressions.begin(); - for ( ; iter != expressions.end(); iter++) - result.push_back(OVWildcard(*iter, matchOneChar, matchZeroOrMoreChar, matchEndOfLine, caseSensitive)); - - return result; - } - - static bool MultiWildcardMatchAny(const string& target, const vector& expressions, char matchOneChar = '?', char matchZeroOrMoreChar = '*', bool matchEndOfLine = true, bool caseSensitive = false) - { - return MultiWildcardMatchAny(target, WildcardsFromStrings(expressions, matchOneChar, matchZeroOrMoreChar, matchEndOfLine, caseSensitive)); - } - - static bool MultiWildcardMatchAny(const string& target, const vector& expressions) - { - vector::const_iterator iter = expressions.begin(); - for ( ; iter != expressions.end(); iter++) { - if ((*iter).match(target)) - return true; - } - - return false; - } - }; - - inline ostream& operator<<(ostream& stream, const OVWildcard& wildcard) - { - vector::size_type i, size = wildcard.m_states.size(); - for (i = 0; i < size; i++) { - const OVWildcard::State& state = wildcard.m_states[i]; - stream << "State " << i << ": " << state.first << ", " << state.second << endl; - } - - return stream; - } -} - -#endif diff --git a/Source/Base.lproj/preferences.xib b/Source/Base.lproj/preferences.xib index 5693b12a..29555c8e 100644 --- a/Source/Base.lproj/preferences.xib +++ b/Source/Base.lproj/preferences.xib @@ -19,25 +19,25 @@ - - + + - + - + - + - + - + @@ -204,7 +204,7 @@ - + - +