From 6b6c46c490fa3391139fbecc4776514bf040cf6d Mon Sep 17 00:00:00 2001 From: k-m_schindler Date: Fri, 1 Jan 2016 21:14:55 +0000 Subject: add GetStringWithNoAccents git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@3156 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/base/UCommon.pas | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'src/base/UCommon.pas') diff --git a/src/base/UCommon.pas b/src/base/UCommon.pas index 18022337..25b30ed1 100644 --- a/src/base/UCommon.pas +++ b/src/base/UCommon.pas @@ -62,6 +62,23 @@ const *} function SplitString(const Str: string; MaxCount: integer = 0; Separators: TSysCharSet = SepWhitespace): TStringDynArray; +function StringInArray(const Value: string; Strings: array of string): boolean; + +function GetStringWithNoAccents(str: UTF8String): UTF8String; + +type + TRGB = record + R: single; + G: single; + B: single; + end; + + TRGBA = record + R, G, B, A: double; + end; + +function RGBToHex(R, G, B: integer):string; +function HexToRGB(Hex: string): TRGB; type TMessageType = (mtInfo, mtError); @@ -104,6 +121,16 @@ uses UMain, UUnicodeUtils; +function StringInArray(const Value: string; Strings: array of string): boolean; +var + i: integer; +begin + Result := true; + for i := Low(Strings) to High(Strings) do + if Strings[i] = Value then exit; + Result := false; +end; + function SplitString(const Str: string; MaxCount: integer; Separators: TSysCharSet): TStringDynArray; {* @@ -157,6 +184,41 @@ begin AddSplit(Start, Length(Str)+1); end; +const + Accents: array [0..37] of UTF8String = ('ç', 'á', 'é', 'í', 'ó', 'ú', 'ý', 'à', 'è', 'ì', 'ò', 'ù', 'ã', 'õ', 'ñ', 'ä', 'ë', 'ï', 'ö', 'ü', 'ÿ', 'â', 'ê', 'î', 'ô', 'û', '!', '¡', '"', '&', '(', ')', '?', '¿', ',', '.', ':', ';'); + NoAccents: array [0..37] of UTF8String = ('c', 'a', 'e', 'i', 'o', 'u', 'y', 'a', 'e', 'i', 'o', 'u', 'a', 'o', 'n', 'a', 'e', 'i', 'o', 'u', 'y', 'a', 'e', 'i', 'o', 'u', '', '', '', '', '', '', '', '', '', '', '', ''); + +function GetStringWithNoAccents(str: UTF8String): UTF8String; +var + i: integer; + tmp: string; +begin + tmp := Utf8ToAnsi(str); + + for i := 0 to High(Accents) do + begin + str := StringReplace(str, Accents[i], NoAccents[i], [rfReplaceAll, rfIgnoreCase]); + end; + + Result := str; +end; + +function RGBToHex(R, G, B: integer): string; +begin + Result := IntToHex(R, 2) + IntToHex(G, 2) + IntToHex(B, 2); +end; + +function HexToRGB(Hex: string): TRGB; +var + Col: TRGB; +begin + Col.R := StrToInt('$'+Copy(Hex, 1, 2)); + Col.G := StrToInt('$'+Copy(Hex, 3, 2)); + Col.B := StrToInt('$'+Copy(Hex, 5, 2)); + + Result := Col; +end; + // data used by the ...Locale() functions {$IF Defined(Linux) or Defined(FreeBSD)} -- cgit v1.2.3