linear-app-launcher/Text/Json/JsonSizeConverter.cs

41 lines
1.1 KiB
C#

using System;
using System.Drawing;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace FizzyLauncher.Text.Json
{
public class JsonSizeConverter : JsonConverter<Size>
{
public override Size Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
Size rs = new Size(0, 0);
if (reader.TokenType == JsonTokenType.String)
{
string[] parts = reader.GetString().Split(',');
if (parts.Length != 2)
{
return rs;
}
int w = 0;
int h = 0;
if (!int.TryParse(parts[0].Trim(), out w)) w = 0;
if (!int.TryParse(parts[1].Trim(), out h)) h = 0;
return new Size(w, h);
}
return rs;
}
public override void Write(Utf8JsonWriter writer, Size value, JsonSerializerOptions options)
{
writer.WriteStringValue(string.Format("{0}, {1}", value.Width.ToString(), value.Height.ToString()));
}
}
}