add back custom ColorTranslator, fixes PlatformnotSupportedException, closes https://github.com/PhilippC/keepass2android/issues/1679
This commit is contained in:
@@ -24,9 +24,6 @@ using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using keepass2android;
|
||||
#if !KeePassUAP
|
||||
using System.Drawing;
|
||||
#endif
|
||||
|
||||
using KeePassLib;
|
||||
using KeePassLib.Collections;
|
||||
|
||||
@@ -67,6 +67,51 @@ namespace KeePassLib.Serialization
|
||||
/// </summary>
|
||||
public sealed partial class KdbxFile
|
||||
{
|
||||
/// <summary>
|
||||
/// System.Drawing.ColorTranslator is not supported on Android. Provide a custom implementation here for loading colors from file.
|
||||
/// </summary>
|
||||
private class ColorTranslator
|
||||
{
|
||||
public static Color FromHtml(String colorString)
|
||||
{
|
||||
Color color;
|
||||
|
||||
if (colorString.StartsWith("#"))
|
||||
{
|
||||
colorString = colorString.Substring(1);
|
||||
}
|
||||
if (colorString.EndsWith(";"))
|
||||
{
|
||||
colorString = colorString.Substring(0, colorString.Length - 1);
|
||||
}
|
||||
|
||||
int red, green, blue;
|
||||
switch (colorString.Length)
|
||||
{
|
||||
case 6:
|
||||
red = int.Parse(colorString.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
|
||||
green = int.Parse(colorString.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
|
||||
blue = int.Parse(colorString.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
|
||||
color = Color.FromArgb(red, green, blue);
|
||||
break;
|
||||
case 3:
|
||||
red = int.Parse(colorString.Substring(0, 1), System.Globalization.NumberStyles.HexNumber);
|
||||
green = int.Parse(colorString.Substring(1, 1), System.Globalization.NumberStyles.HexNumber);
|
||||
blue = int.Parse(colorString.Substring(2, 1), System.Globalization.NumberStyles.HexNumber);
|
||||
color = Color.FromArgb(red, green, blue);
|
||||
break;
|
||||
case 1:
|
||||
red = green = blue = int.Parse(colorString.Substring(0, 1), System.Globalization.NumberStyles.HexNumber);
|
||||
color = Color.FromArgb(red, green, blue);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("Invalid color: " + colorString);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// File identifier, first 32-bit value.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user