// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Collections.ObjectModel; using System.Text.Json; using System.Text.Json.Serialization; namespace Microsoft.PowerToys.Settings.UI.Library { public class ImageResizerProperties { public ImageResizerProperties() { ImageresizerSelectedSizeIndex = new IntProperty(0); ImageresizerShrinkOnly = new BoolProperty(false); ImageresizerReplace = new BoolProperty(false); ImageresizerIgnoreOrientation = new BoolProperty(true); ImageresizerJpegQualityLevel = new IntProperty(90); ImageresizerPngInterlaceOption = new IntProperty(); ImageresizerTiffCompressOption = new IntProperty(); ImageresizerFileName = new StringProperty("%1 (%2)"); ImageresizerSizes = new ImageResizerSizes(new ObservableCollection() { new ImageSize(0, "Small", ResizeFit.Fit, 854, 480, ResizeUnit.Pixel), new ImageSize(1, "Medium", ResizeFit.Fit, 1366, 768, ResizeUnit.Pixel), new ImageSize(2, "Large", ResizeFit.Fit, 1920, 1080, ResizeUnit.Pixel), new ImageSize(3, "Phone", ResizeFit.Fit, 320, 568, ResizeUnit.Pixel), }); ImageresizerKeepDateModified = new BoolProperty(); ImageresizerFallbackEncoder = new StringProperty(new System.Guid("19e4a5aa-5662-4fc5-a0c0-1758028e1057").ToString()); ImageresizerCustomSize = new ImageResizerCustomSizeProperty(new ImageSize(4, "custom", ResizeFit.Fit, 1024, 640, ResizeUnit.Pixel)); } [JsonPropertyName("imageresizer_selectedSizeIndex")] public IntProperty ImageresizerSelectedSizeIndex { get; set; } [JsonPropertyName("imageresizer_shrinkOnly")] public BoolProperty ImageresizerShrinkOnly { get; set; } [JsonPropertyName("imageresizer_replace")] public BoolProperty ImageresizerReplace { get; set; } [JsonPropertyName("imageresizer_ignoreOrientation")] public BoolProperty ImageresizerIgnoreOrientation { get; set; } [JsonPropertyName("imageresizer_jpegQualityLevel")] public IntProperty ImageresizerJpegQualityLevel { get; set; } [JsonPropertyName("imageresizer_pngInterlaceOption")] public IntProperty ImageresizerPngInterlaceOption { get; set; } [JsonPropertyName("imageresizer_tiffCompressOption")] public IntProperty ImageresizerTiffCompressOption { get; set; } [JsonPropertyName("imageresizer_fileName")] public StringProperty ImageresizerFileName { get; set; } [JsonPropertyName("imageresizer_sizes")] public ImageResizerSizes ImageresizerSizes { get; set; } [JsonPropertyName("imageresizer_keepDateModified")] public BoolProperty ImageresizerKeepDateModified { get; set; } [JsonPropertyName("imageresizer_fallbackEncoder")] public StringProperty ImageresizerFallbackEncoder { get; set; } [JsonPropertyName("imageresizer_customSize")] public ImageResizerCustomSizeProperty ImageresizerCustomSize { get; set; } public string ToJsonString() { return JsonSerializer.Serialize(this); } } public enum ResizeFit { Fill = 0, Fit = 1, Stretch = 2, } public enum ResizeUnit { Centimeter = 0, Inch = 1, Percent = 2, Pixel = 3, } public enum PngInterlaceOption { Default = 0, On = 1, Off = 2, } public enum TiffCompressOption { Default = 0, None = 1, Ccitt3 = 2, Ccitt4 = 3, Lzw = 4, Rle = 5, Zip = 6, } }