Skip to content

Commit fec7d99

Browse files
thisisthekaprmarinho
authored andcommitted
made FilterQuality configurable for Resizetizer
1 parent ec50772 commit fec7d99

File tree

8 files changed

+23
-18
lines changed

8 files changed

+23
-18
lines changed

src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ void ProcessBackground(List<ResizedImageInfo> results, DirectoryInfo fullInterme
8080
if (backgroundExists)
8181
{
8282
// resize the background
83-
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Logger);
83+
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Info.FilterQuality, Logger);
8484
tools.Resize(dpi, destination, dpiSizeIsAbsolute: true);
8585
}
8686
else
@@ -124,7 +124,7 @@ void ProcessForeground(List<ResizedImageInfo> results, DirectoryInfo fullInterme
124124
if (foregroundExists)
125125
{
126126
// resize the forground
127-
var tools = SkiaSharpTools.Create(Info.ForegroundIsVector, Info.ForegroundFilename, dpi.Size, null, Info.TintColor, Logger);
127+
var tools = SkiaSharpTools.Create(Info.ForegroundIsVector, Info.ForegroundFilename, dpi.Size, null, Info.TintColor, Info.FilterQuality, Logger);
128128
tools.Resize(dpi, destination, Info.ForegroundScale, dpiSizeIsAbsolute: true);
129129
}
130130
else

src/SingleProject/Resizetizer/src/ResizeImageInfo.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ internal class ResizeImageInfo
5050

5151
public double ForegroundScale { get; set; } = 1.0;
5252

53+
public SKFilterQuality? FilterQuality { get; set; }
54+
5355
private static bool IsVectorFilename(string? filename)
5456
=> IsVectorExtension(Path.GetExtension(filename));
5557

@@ -124,6 +126,9 @@ public static ResizeImageInfo Parse(ITaskItem image)
124126
info.ForegroundFilename = fgFileInfo.FullName;
125127
}
126128

129+
if (Enum.TryParse<SKFilterQuality>(image.GetMetadata("FilterQuality"), out var filterQuality))
130+
info.FilterQuality = filterQuality;
131+
127132
// make sure the image is a foreground if this is an icon
128133
if (info.IsAppIcon && string.IsNullOrEmpty(info.ForegroundFilename))
129134
{

src/SingleProject/Resizetizer/src/Resizer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public Resizer(ResizeImageInfo info, string intermediateOutputPath, ILogger logg
2525
public SKSize? BaseSize => Info.BaseSize;
2626

2727
protected SkiaSharpTools Tools =>
28-
tools ??= SkiaSharpTools.Create(Info.IsVector, Info.Filename, Info.BaseSize, Info.Color, Info.TintColor, Logger);
28+
tools ??= SkiaSharpTools.Create(Info.IsVector, Info.Filename, Info.BaseSize, Info.Color, Info.TintColor, Info.FilterQuality, Logger);
2929

3030
public string GetRasterFileDestination(DpiPath dpi, bool includeIntermediate = true, bool includeScale = true)
3131
=> GetRasterFileDestination(Info, dpi, includeIntermediate ? IntermediateOutputPath : null, includeScale);

src/SingleProject/Resizetizer/src/SkiaSharpAppIconTools.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public SkiaSharpAppIconTools(ResizeImageInfo info, ILogger? logger)
2121
throw new InvalidOperationException("An app icon needs at least one image.");
2222

2323
if (hasBackground)
24-
backgroundTools = SkiaSharpTools.Create(info.IsVector, info.Filename, null, null, null, logger);
24+
backgroundTools = SkiaSharpTools.Create(info.IsVector, info.Filename, null, null, null, info.FilterQuality, logger);
2525
if (hasForeground)
26-
foregroundTools = SkiaSharpTools.Create(info.ForegroundIsVector, info.ForegroundFilename, null, null, info.TintColor, logger);
26+
foregroundTools = SkiaSharpTools.Create(info.ForegroundIsVector, info.ForegroundFilename, null, null, info.TintColor, info.FilterQuality, logger);
2727
}
2828

2929
SkiaSharpTools? backgroundTools;

src/SingleProject/Resizetizer/src/SkiaSharpBitmapTools.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ internal class SkiaSharpBitmapTools : SkiaSharpTools, IDisposable
99
SKBitmap bmp;
1010

1111
public SkiaSharpBitmapTools(ResizeImageInfo info, ILogger logger)
12-
: this(info.Filename, info.BaseSize, info.Color, info.TintColor, logger)
12+
: this(info.Filename, info.BaseSize, info.Color, info.TintColor, info.FilterQuality, logger)
1313
{
1414
}
1515

16-
public SkiaSharpBitmapTools(string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, ILogger logger)
17-
: base(filename, baseSize, backgroundColor, tintColor, logger)
16+
public SkiaSharpBitmapTools(string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, SKFilterQuality? filterQuality, ILogger logger)
17+
: base(filename, baseSize, backgroundColor, tintColor, filterQuality, logger)
1818
{
1919
var sw = new Stopwatch();
2020
sw.Start();

src/SingleProject/Resizetizer/src/SkiaSharpImaginaryTools.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public SkiaSharpImaginaryTools(ResizeImageInfo info, ILogger logger)
1111
}
1212

1313
public SkiaSharpImaginaryTools(SKColor? backgroundColor, ILogger logger)
14-
: base(null, new SKSize(1, 1), backgroundColor, null, logger)
14+
: base(null, new SKSize(1, 1), backgroundColor, null, null, logger)
1515
{
1616
}
1717

src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ internal class SkiaSharpSvgTools : SkiaSharpTools, IDisposable
1010
SKSvg svg;
1111

1212
public SkiaSharpSvgTools(ResizeImageInfo info, ILogger logger)
13-
: this(info.Filename, info.BaseSize, info.Color, info.TintColor, logger)
13+
: this(info.Filename, info.BaseSize, info.Color, info.TintColor, info.FilterQuality, logger)
1414
{
1515
}
1616

17-
public SkiaSharpSvgTools(string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, ILogger logger)
18-
: base(filename, baseSize, backgroundColor, tintColor, logger)
17+
public SkiaSharpSvgTools(string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, SKFilterQuality? filterQuality, ILogger logger)
18+
: base(filename, baseSize, backgroundColor, tintColor, filterQuality, logger)
1919
{
2020
var sw = new Stopwatch();
2121
sw.Start();

src/SingleProject/Resizetizer/src/SkiaSharpTools.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,28 @@ static SkiaSharpTools()
1717
span[0] = new SKPoint();
1818
}
1919

20-
public static SkiaSharpTools Create(bool isVector, string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, ILogger logger)
20+
public static SkiaSharpTools Create(bool isVector, string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, SKFilterQuality? filterQuality, ILogger logger)
2121
=> isVector
22-
? new SkiaSharpSvgTools(filename, baseSize, backgroundColor, tintColor, logger) as SkiaSharpTools
23-
: new SkiaSharpBitmapTools(filename, baseSize, backgroundColor, tintColor, logger);
22+
? new SkiaSharpSvgTools(filename, baseSize, backgroundColor, tintColor, filterQuality, logger) as SkiaSharpTools
23+
: new SkiaSharpBitmapTools(filename, baseSize, backgroundColor, tintColor, filterQuality, logger);
2424

2525
public static SkiaSharpTools CreateImaginary(SKColor? backgroundColor, ILogger logger)
2626
=> new SkiaSharpImaginaryTools(backgroundColor, logger);
2727

2828
public SkiaSharpTools(ResizeImageInfo info, ILogger logger)
29-
: this(info.Filename, info.BaseSize, info.Color, info.TintColor, logger)
29+
: this(info.Filename, info.BaseSize, info.Color, info.TintColor, info.FilterQuality, logger)
3030
{
3131
}
3232

33-
public SkiaSharpTools(string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, ILogger logger)
33+
public SkiaSharpTools(string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, SKFilterQuality? filterQuality, ILogger logger)
3434
{
3535
Logger = logger;
3636
Filename = filename;
3737
BaseSize = baseSize;
3838
BackgroundColor = backgroundColor;
3939
Paint = new SKPaint
4040
{
41-
FilterQuality = SKFilterQuality.High
41+
FilterQuality = filterQuality ?? SKFilterQuality.High
4242
};
4343

4444
if (tintColor is SKColor tint)

0 commit comments

Comments
 (0)