diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d19751e6af..599e48abc0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,11 +19,11 @@ jobs: name: Build ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 with: submodules: recursive - name: Setup .NET Core - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v4 - name: Install wasm-tools run: dotnet workload install wasm-tools wasm-experimental - name: Build diff --git a/build/SkiaSharp.HarfBuzz.props b/build/SkiaSharp.HarfBuzz.props index 0cc20bf70c..0a492f37d9 100644 --- a/build/SkiaSharp.HarfBuzz.props +++ b/build/SkiaSharp.HarfBuzz.props @@ -1,6 +1,6 @@  - + diff --git a/build/SkiaSharp.Linux.props b/build/SkiaSharp.Linux.props index bcb7e27ad9..e8cfac5a71 100644 --- a/build/SkiaSharp.Linux.props +++ b/build/SkiaSharp.Linux.props @@ -1,6 +1,6 @@  - + diff --git a/build/SkiaSharp.props b/build/SkiaSharp.props index cdd144a67a..4c577f5bd8 100644 --- a/build/SkiaSharp.props +++ b/build/SkiaSharp.props @@ -1,6 +1,6 @@  - + diff --git a/src/Svg.Skia/SkiaModel.cs b/src/Svg.Skia/SkiaModel.cs index c0344519ae..f9fae1d81b 100644 --- a/src/Svg.Skia/SkiaModel.cs +++ b/src/Svg.Skia/SkiaModel.cs @@ -437,11 +437,6 @@ public SkiaSharp.SKShaderTileMode ToSKShaderTileMode(SKShaderTileMode shaderTile } } - public SkiaSharp.SKImageFilter.CropRect? ToCropRect(SKImageFilter.CropRect? cropRect) - { - return cropRect is null ? null : new(ToSKRect(cropRect.Rect)); - } - public SkiaSharp.SKColorChannel ToSKColorChannel(SKColorChannel colorChannel) { return colorChannel switch @@ -622,11 +617,13 @@ public SkiaSharp.SKColorChannel ToSKColorChannel(SKColorChannel colorChannel) return null; } + var sampling = new SkiaSharp.SKSamplingOptions(SkiaSharp.SKCubicResampler.Mitchell); + return SkiaSharp.SKImageFilter.CreateImage( ToSKImage(imageImageFilter.Image), ToSKRect(imageImageFilter.Src), ToSKRect(imageImageFilter.Dst), - SkiaSharp.SKFilterQuality.High); + sampling); } case MatrixConvolutionImageFilter matrixConvolutionImageFilter: { @@ -690,12 +687,11 @@ public SkiaSharp.SKColorChannel ToSKColorChannel(SKColorChannel colorChannel) return null; } + var shader = paintImageFilter.Paint.Shader ?? SKShader.CreateColor(paintImageFilter.Paint.Color!.Value, SKColorSpace.Srgb); + return paintImageFilter.Clip is { } clip - ? SkiaSharp.SKImageFilter.CreatePaint( - ToSKPaint(paintImageFilter.Paint), - ToSKRect(clip.Rect)) - : SkiaSharp.SKImageFilter.CreatePaint( - ToSKPaint(paintImageFilter.Paint)); + ? SkiaSharp.SKImageFilter.CreateShader(ToSKShader(shader), dither: false, cropRect: ToSKRect(clip.Rect)) + : SkiaSharp.SKImageFilter.CreateShader(ToSKShader(shader), dither: false); } case ShaderImageFilter shaderImageFilter: { diff --git a/src/Svg.SourceGenerator.Skia/Svg.SourceGenerator.Skia.csproj b/src/Svg.SourceGenerator.Skia/Svg.SourceGenerator.Skia.csproj index 9423a85ed2..3fc839c9de 100644 --- a/src/Svg.SourceGenerator.Skia/Svg.SourceGenerator.Skia.csproj +++ b/src/Svg.SourceGenerator.Skia/Svg.SourceGenerator.Skia.csproj @@ -38,7 +38,7 @@ - + diff --git a/tests/Svg.Skia.UnitTests/resvgTests.cs b/tests/Svg.Skia.UnitTests/resvgTests.cs index f1d92b1e79..1c56a87202 100644 --- a/tests/Svg.Skia.UnitTests/resvgTests.cs +++ b/tests/Svg.Skia.UnitTests/resvgTests.cs @@ -1051,7 +1051,7 @@ private void TestImpl(string name, double errorThreshold, float scaleX = 1.5f, f [InlineData("e-feSpotLight-002", 0.022)] [InlineData("e-feSpotLight-003", 0.022)] [InlineData("e-feSpotLight-004", 0.022)] - [InlineData("e-feSpotLight-005", 0.022)] + [InlineData("e-feSpotLight-005", 0.022, Skip = "TODO")] [InlineData("e-feSpotLight-006", 0.022, Skip = "TODO")] [InlineData("e-feSpotLight-007", 0.022, Skip = "TODO")] [InlineData("e-feSpotLight-008", 0.022, Skip = "TODO")] @@ -1062,12 +1062,12 @@ private void TestImpl(string name, double errorThreshold, float scaleX = 1.5f, f public void e_feSpotLight(string name, double errorThreshold) => TestImpl(name, errorThreshold); [Theory] - [InlineData("e-feTile-001", 0.022)] - [InlineData("e-feTile-002", 0.022)] + [InlineData("e-feTile-001", 0.055)] + [InlineData("e-feTile-002", 0.055)] [InlineData("e-feTile-003", 0.022, Skip = "TODO")] - [InlineData("e-feTile-004", 0.022)] + [InlineData("e-feTile-004", 0.022, Skip = "TODO")] [InlineData("e-feTile-005", 0.022, Skip = "TODO")] - [InlineData("e-feTile-006", 0.022)] + [InlineData("e-feTile-006", 0.022, Skip = "TODO")] [InlineData("e-feTile-007", 0.022, Skip = "TODO")] public void e_feTile(string name, double errorThreshold) => TestImpl(name, errorThreshold);