JD2022-TU1/main/tools/framework/Shuttle.Api/PhotoshopDTO/TargaSaveOptionsDTO.cs

61 lines
No EOL
1.8 KiB
C#

using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace Shuttle.Api.PhotoshopDTO
{
public class TargaBitsPerPixelsConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
TargaBitsPerPixels bpp = (TargaBitsPerPixels) value;
switch (bpp)
{
case TargaBitsPerPixels.SIXTEEN:
writer.WriteValue("TargaBitsPerPixels.SIXTEEN");
break;
case TargaBitsPerPixels.THIRTYTWO:
writer.WriteValue("TargaBitsPerPixels.THIRTYTWO");
break;
case TargaBitsPerPixels.TWENTYFOUR:
writer.WriteValue("TargaBitsPerPixels.TWENTYFOUR");
break;
default:
throw new ArgumentOutOfRangeException();
}
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var enumString = (string) reader.Value;
return Enum.Parse(typeof(TargaBitsPerPixels), enumString, true);
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
}
public enum TargaBitsPerPixels
{
SIXTEEN,
THIRTYTWO,
TWENTYFOUR
}
public struct TargaSaveOptionsDTO
{
[JsonProperty("alphaChannels")]
public bool AlphaChannels { get; set; }
[JsonProperty("resolution")]
[JsonConverter(typeof(TargaBitsPerPixelsConverter))]
public TargaBitsPerPixels Resolution { get; set; }
[JsonProperty("rleCompression")]
public bool RleCompression { get; set; }
}
}