Skip to content

Commit 7e10776

Browse files
kubafloCopilot
authored andcommitted
[release/10.0.1xx-sr10] Update SkiaSharp to 4.150.1 (#37731)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
1 parent a380db6 commit 7e10776

18 files changed

Lines changed: 75 additions & 84 deletions

eng/NuGetVersions.targets

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,14 @@
287287
Update="Svg.Model"
288288
Version="$(SvgSkiaPackageVersion)"
289289
/>
290+
<PackageReference
291+
Update="Svg.SceneGraph"
292+
Version="$(SvgSkiaPackageVersion)"
293+
/>
294+
<PackageReference
295+
Update="Svg.Animation"
296+
Version="$(SvgSkiaPackageVersion)"
297+
/>
290298
<PackageReference
291299
Update="ShimSkiaSharp"
292300
Version="$(SvgSkiaPackageVersion)"

eng/Signing.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
<FileSignInfo Include="Svg.Skia.dll" CertificateName="3PartySHA2" />
1515
<FileSignInfo Include="Svg.Custom.dll" CertificateName="3PartySHA2" />
1616
<FileSignInfo Include="Svg.Model.dll" CertificateName="3PartySHA2" />
17+
<FileSignInfo Include="Svg.SceneGraph.dll" CertificateName="3PartySHA2" />
18+
<FileSignInfo Include="Svg.Animation.dll" CertificateName="3PartySHA2" />
1719
<FileSignInfo Include="ShimSkiaSharp.dll" CertificateName="3PartySHA2" />
1820
<FileSignInfo Include="Fizzler.dll" CertificateName="3PartySHA2" />
1921
<FileSignInfo Include="ExCSS.dll" CertificateName="3PartySHA2" />

eng/Versions.props

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@
108108
<MicrosoftCodeAnalysisBannedApiAnalyzersVersion>4.14.0</MicrosoftCodeAnalysisBannedApiAnalyzersVersion>
109109
<MicrosoftIoRecyclableMemoryStreamVersion>3.0.1</MicrosoftIoRecyclableMemoryStreamVersion>
110110
<SystemNumericsVectorsVersion>4.6.1</SystemNumericsVectorsVersion>
111-
<SystemMemoryPackageVersion>4.5.5</SystemMemoryPackageVersion>
112-
<SystemBuffersPackageVersion>4.5.1</SystemBuffersPackageVersion>
111+
<SystemMemoryPackageVersion>4.6.3</SystemMemoryPackageVersion>
112+
<SystemBuffersPackageVersion>4.6.1</SystemBuffersPackageVersion>
113113
<SystemIOUnmanagedMemoryStreamPackageVersion>4.3.0</SystemIOUnmanagedMemoryStreamPackageVersion>
114114
<SystemObjectModelPackageVersion>4.3.0</SystemObjectModelPackageVersion>
115115
<SystemRuntimeCompilerServicesUnsafePackageVersion>6.1.2</SystemRuntimeCompilerServicesUnsafePackageVersion>
@@ -122,19 +122,19 @@
122122
- Feed URI in the nuget.config
123123
- Native assets build and sha
124124
-->
125-
<_SkiaSharpVersion>3.116.1</_SkiaSharpVersion>
126-
<_SkiaSharpExtendedVersion>3.0.0-preview.13</_SkiaSharpExtendedVersion>
127-
<_HarfBuzzSharpVersion>8.3.0.1</_HarfBuzzSharpVersion>
125+
<_SkiaSharpVersion>4.150.1</_SkiaSharpVersion>
126+
<_SkiaSharpExtendedVersion>3.0.0</_SkiaSharpExtendedVersion>
127+
<_HarfBuzzSharpVersion>14.2.1.1</_HarfBuzzSharpVersion>
128128
<_SkiaSharpNativeAssetsVersion>0.0.0-commit.e57e2a11dac4ccc72bea52939dede49816842005.1728</_SkiaSharpNativeAssetsVersion>
129129
<MicrosoftTemplateEngineTasksVersion>7.0.120</MicrosoftTemplateEngineTasksVersion>
130130
<MicrosoftDotNetXHarnessTestRunnersCommonVersion>11.0.0-prerelease.26230.4</MicrosoftDotNetXHarnessTestRunnersCommonVersion>
131131
<MicrosoftDotNetXHarnessTestRunnersXunitVersion>11.0.0-prerelease.26230.4</MicrosoftDotNetXHarnessTestRunnersXunitVersion>
132132
<MicrosoftDotNetXHarnessCLIVersion>11.0.0-prerelease.26230.4</MicrosoftDotNetXHarnessCLIVersion>
133133
<TizenUIExtensionsVersion>0.9.2</TizenUIExtensionsVersion>
134-
<SvgSkiaPackageVersion>2.0.0.4</SvgSkiaPackageVersion>
134+
<SvgSkiaPackageVersion>5.1.1</SvgSkiaPackageVersion>
135135
<FizzlerPackageVersion>1.3.0</FizzlerPackageVersion>
136136
<TizenUIExtensionsVersion>0.9.0</TizenUIExtensionsVersion>
137-
<ExCSSPackageVersion>4.2.3</ExCSSPackageVersion>
137+
<ExCSSPackageVersion>4.3.1</ExCSSPackageVersion>
138138
<SystemDrawingCommonPackageVersion>9.0.0</SystemDrawingCommonPackageVersion>
139139
<MicrosoftDotNetBuildTasksFeedVersion>10.0.0-beta.25523.113</MicrosoftDotNetBuildTasksFeedVersion>
140140
<MicrosoftDotNetBuildTasksInstallersPackageVersion>10.0.0-beta.25523.113</MicrosoftDotNetBuildTasksInstallersPackageVersion>

src/Graphics/src/Graphics.Skia/SKGraphicsExtensions.cs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ public static SKPath AsSkiaPath(
182182
float fx,
183183
float fy)
184184
{
185-
var platformPath = new SKPath();
185+
using var platformPathBuilder = new SKPathBuilder();
186186

187187
var ppux = ppu * fx;
188188
var ppuy = ppu * fy;
@@ -196,26 +196,26 @@ public static SKPath AsSkiaPath(
196196
if (type == PathOperation.Move)
197197
{
198198
var point = path[pointIndex++];
199-
platformPath.MoveTo((ox + point.X * ppux), (oy + point.Y * ppuy));
199+
platformPathBuilder.MoveTo((ox + point.X * ppux), (oy + point.Y * ppuy));
200200
}
201201
else if (type == PathOperation.Line)
202202
{
203203
var point = path[pointIndex++];
204-
platformPath.LineTo((ox + point.X * ppux), (oy + point.Y * ppuy));
204+
platformPathBuilder.LineTo((ox + point.X * ppux), (oy + point.Y * ppuy));
205205
}
206206

207207
else if (type == PathOperation.Quad)
208208
{
209209
var controlPoint = path[pointIndex++];
210210
var point = path[pointIndex++];
211-
platformPath.QuadTo((ox + controlPoint.X * ppux), (oy + controlPoint.Y * ppuy), (ox + point.X * ppux), (oy + point.Y * ppuy));
211+
platformPathBuilder.QuadTo((ox + controlPoint.X * ppux), (oy + controlPoint.Y * ppuy), (ox + point.X * ppux), (oy + point.Y * ppuy));
212212
}
213213
else if (type == PathOperation.Cubic)
214214
{
215215
var controlPoint1 = path[pointIndex++];
216216
var controlPoint2 = path[pointIndex++];
217217
var point = path[pointIndex++];
218-
platformPath.CubicTo((ox + controlPoint1.X * ppux), (oy + controlPoint1.Y * ppuy), (ox + controlPoint2.X * ppux), (oy + controlPoint2.Y * ppuy), (ox + point.X * ppux),
218+
platformPathBuilder.CubicTo((ox + controlPoint1.X * ppux), (oy + controlPoint1.Y * ppuy), (ox + controlPoint2.X * ppux), (oy + controlPoint2.Y * ppuy), (ox + point.X * ppux),
219219
(oy + point.Y * ppuy));
220220
}
221221
else if (type == PathOperation.Arc)
@@ -243,15 +243,15 @@ public static SKPath AsSkiaPath(
243243
if (!clockwise)
244244
sweep *= -1;
245245

246-
platformPath.AddArc(rect, startAngle, sweep);
246+
platformPathBuilder.AddArc(rect, startAngle, sweep);
247247
}
248248
else if (type == PathOperation.Close)
249249
{
250-
platformPath.Close();
250+
platformPathBuilder.Close();
251251
}
252252
}
253253

254-
return platformPath;
254+
return platformPathBuilder.Detach();
255255
}
256256

257257
/// <summary>
@@ -278,38 +278,38 @@ public static SKPath AsSkiaPathFromSegment(this PathF target, int segmentIndex,
278278
{
279279
ppu = zoom * ppu;
280280

281-
var path = new SKPath();
281+
using var pathBuilder = new SKPathBuilder();
282282

283283
var type = target.GetSegmentType(segmentIndex);
284284
if (type == PathOperation.Line)
285285
{
286286
var pointIndex = target.GetSegmentPointIndex(segmentIndex);
287287
var startPoint = target[pointIndex - 1];
288-
path.MoveTo(startPoint.X * ppu, startPoint.Y * ppu);
288+
pathBuilder.MoveTo(startPoint.X * ppu, startPoint.Y * ppu);
289289

290290
var endPoint = target[pointIndex];
291-
path.LineTo(endPoint.X * ppu, endPoint.Y * ppu);
291+
pathBuilder.LineTo(endPoint.X * ppu, endPoint.Y * ppu);
292292
}
293293
else if (type == PathOperation.Quad)
294294
{
295295
var pointIndex = target.GetSegmentPointIndex(segmentIndex);
296296
var startPoint = target[pointIndex - 1];
297-
path.MoveTo(startPoint.X * ppu, startPoint.Y * ppu);
297+
pathBuilder.MoveTo(startPoint.X * ppu, startPoint.Y * ppu);
298298

299299
var controlPoint = target[pointIndex++];
300300
var endPoint = target[pointIndex];
301-
path.QuadTo(controlPoint.X * ppu, controlPoint.Y * ppu, endPoint.X * ppu, endPoint.Y * ppu);
301+
pathBuilder.QuadTo(controlPoint.X * ppu, controlPoint.Y * ppu, endPoint.X * ppu, endPoint.Y * ppu);
302302
}
303303
else if (type == PathOperation.Cubic)
304304
{
305305
var pointIndex = target.GetSegmentPointIndex(segmentIndex);
306306
var startPoint = target[pointIndex - 1];
307-
path.MoveTo(startPoint.X * ppu, startPoint.Y * ppu);
307+
pathBuilder.MoveTo(startPoint.X * ppu, startPoint.Y * ppu);
308308

309309
var controlPoint1 = target[pointIndex++];
310310
var controlPoint2 = target[pointIndex++];
311311
var endPoint = target[pointIndex];
312-
path.CubicTo(controlPoint1.X * ppu, controlPoint1.Y * ppu, controlPoint2.X * ppu, controlPoint2.Y * ppu, endPoint.X * ppu, endPoint.Y * ppu);
312+
pathBuilder.CubicTo(controlPoint1.X * ppu, controlPoint1.Y * ppu, controlPoint2.X * ppu, controlPoint2.Y * ppu, endPoint.X * ppu, endPoint.Y * ppu);
313313
}
314314
else if (type == PathOperation.Arc)
315315
{
@@ -338,10 +338,10 @@ public static SKPath AsSkiaPathFromSegment(this PathF target, int segmentIndex,
338338
if (!clockwise)
339339
sweep *= -1;
340340

341-
path.AddArc(rect, startAngle, sweep);
341+
pathBuilder.AddArc(rect, startAngle, sweep);
342342
}
343343

344-
return path;
344+
return pathBuilder.Detach();
345345
}
346346

347347
/// <summary>
@@ -357,7 +357,7 @@ public static SKPath AsRotatedAndroidPath(this PathF target, PointF center, floa
357357
{
358358
ppu = zoom * ppu;
359359

360-
var path = new SKPath();
360+
using var pathBuilder = new SKPathBuilder();
361361

362362
var pointIndex = 0;
363363
var arcAngleIndex = 0;
@@ -368,18 +368,18 @@ public static SKPath AsRotatedAndroidPath(this PathF target, PointF center, floa
368368
if (type == PathOperation.Move)
369369
{
370370
var point = target.GetRotatedPoint(pointIndex++, center, angle);
371-
path.MoveTo(point.X * ppu, point.Y * ppu);
371+
pathBuilder.MoveTo(point.X * ppu, point.Y * ppu);
372372
}
373373
else if (type == PathOperation.Line)
374374
{
375375
var endPoint = target.GetRotatedPoint(pointIndex++, center, angle);
376-
path.LineTo(endPoint.X * ppu, endPoint.Y * ppu);
376+
pathBuilder.LineTo(endPoint.X * ppu, endPoint.Y * ppu);
377377
}
378378
else if (type == PathOperation.Quad)
379379
{
380380
var controlPoint1 = target.GetRotatedPoint(pointIndex++, center, angle);
381381
var endPoint = target.GetRotatedPoint(pointIndex++, center, angle);
382-
path.QuadTo(
382+
pathBuilder.QuadTo(
383383
controlPoint1.X * ppu,
384384
controlPoint1.Y * ppu,
385385
endPoint.X * ppu,
@@ -390,7 +390,7 @@ public static SKPath AsRotatedAndroidPath(this PathF target, PointF center, floa
390390
var controlPoint1 = target.GetRotatedPoint(pointIndex++, center, angle);
391391
var controlPoint2 = target.GetRotatedPoint(pointIndex++, center, angle);
392392
var endPoint = target.GetRotatedPoint(pointIndex++, center, angle);
393-
path.CubicTo(
393+
pathBuilder.CubicTo(
394394
controlPoint1.X * ppu,
395395
controlPoint1.Y * ppu,
396396
controlPoint2.X * ppu,
@@ -423,15 +423,15 @@ public static SKPath AsRotatedAndroidPath(this PathF target, PointF center, floa
423423
if (!clockwise)
424424
sweep *= -1;
425425

426-
path.AddArc(rect, startAngle, sweep);
426+
pathBuilder.AddArc(rect, startAngle, sweep);
427427
}
428428
else if (type == PathOperation.Close)
429429
{
430-
path.Close();
430+
pathBuilder.Close();
431431
}
432432
}
433433

434-
return path;
434+
return pathBuilder.Detach();
435435
}
436436

437437
/// <summary>

src/Graphics/src/Graphics.Skia/SKPaintExtensions.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,6 @@ public static SKPaint CreateCopy(this SKPaint paint)
3131
StrokeJoin = paint.StrokeJoin,
3232
StrokeMiter = paint.StrokeMiter,
3333
StrokeWidth = paint.StrokeWidth,
34-
#pragma warning disable CS0618 // Type or member is obsolete
35-
TextAlign = paint.TextAlign,
36-
TextEncoding = paint.TextEncoding,
37-
TextScaleX = paint.TextScaleX,
38-
TextSize = paint.TextSize,
39-
TextSkewX = paint.TextSkewX,
40-
Typeface = paint.Typeface,
41-
#pragma warning restore CS0618 // Type or member is obsolete
4234
};
4335

4436
return copy;

src/Graphics/src/Graphics.Skia/SkiaCanvas.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -460,19 +460,19 @@ protected override void PlatformDrawArc(
460460

461461
if (closed)
462462
{
463-
var platformPath = new SKPath();
464-
platformPath.AddArc(rect, startAngle, sweep);
465-
platformPath.Close();
463+
using var platformPathBuilder = new SKPathBuilder();
464+
platformPathBuilder.AddArc(rect, startAngle, sweep);
465+
platformPathBuilder.Close();
466+
using var platformPath = platformPathBuilder.Detach();
466467
_canvas.DrawPath(platformPath, CurrentState.StrokePaintWithAlpha);
467-
platformPath.Dispose();
468468
}
469469
else
470470
{
471471
// todo: delete this after the api is bound
472-
var platformPath = new SKPath();
473-
platformPath.AddArc(rect, startAngle, sweep);
472+
using var platformPathBuilder = new SKPathBuilder();
473+
platformPathBuilder.AddArc(rect, startAngle, sweep);
474+
using var platformPath = platformPathBuilder.Detach();
474475
_canvas.DrawPath(platformPath, CurrentState.StrokePaintWithAlpha);
475-
platformPath.Dispose();
476476

477477
// todo: restore this when the api is bound.
478478
//_canvas.DrawArc (rect, startAngle, sweep, false, CurrentState.StrokePaintWithAlpha);
@@ -512,10 +512,10 @@ public override void FillArc(
512512
sweep *= -1;
513513

514514
// todo: delete this after the api is bound
515-
var platformPath = new SKPath();
516-
platformPath.AddArc(rect, startAngle, sweep);
515+
using var platformPathBuilder = new SKPathBuilder();
516+
platformPathBuilder.AddArc(rect, startAngle, sweep);
517+
using var platformPath = platformPathBuilder.Detach();
517518
_canvas.DrawPath(platformPath, CurrentState.FillPaintWithAlpha);
518-
platformPath.Dispose();
519519

520520
// todo: restore this when the api is bound.
521521
//_canvas.DrawArc (rect, startAngle, sweep, false, CurrentState.FillPaintWithAlpha);
@@ -678,21 +678,21 @@ public override void DrawString(
678678

679679
if (horizAlignment == HorizontalAlignment.Left)
680680
{
681-
_canvas.DrawText(value, x, y, CurrentState.FontFont, CurrentState.FontPaint);
681+
_canvas.DrawText(value, x, y, SKTextAlign.Left, CurrentState.FontFont, CurrentState.FontPaint);
682682
}
683683
else if (horizAlignment == HorizontalAlignment.Right)
684684
{
685685
var font = CurrentState.FontFont;
686686
var width = font.MeasureText(value);
687687
x -= width;
688-
_canvas.DrawText(value, x, y, CurrentState.FontFont, CurrentState.FontPaint);
688+
_canvas.DrawText(value, x, y, SKTextAlign.Left, CurrentState.FontFont, CurrentState.FontPaint);
689689
}
690690
else
691691
{
692692
var font = CurrentState.FontFont;
693693
var width = font.MeasureText(value);
694694
x -= width / 2;
695-
_canvas.DrawText(value, x, y, CurrentState.FontFont, CurrentState.FontPaint);
695+
_canvas.DrawText(value, x, y, SKTextAlign.Left, CurrentState.FontFont, CurrentState.FontPaint);
696696
}
697697
}
698698

@@ -875,7 +875,8 @@ public override void DrawImage(
875875

876876
var destRect = new SKRect(rx1, ry1, rx2, ry2);
877877
var paint = CurrentState.GetImagePaint(1, 1);
878-
_canvas.DrawBitmap(bitmap, srcRect, destRect, paint);
878+
var sampling = new SKSamplingOptions(SKFilterMode.Nearest, SKMipmapMode.None);
879+
_canvas.DrawBitmap(bitmap, srcRect, destRect, sampling, paint);
879880
paint?.Dispose();
880881
_canvas.Restore();
881882
}

src/Graphics/src/Graphics.Skia/SkiaCanvasState.cs

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -238,9 +238,6 @@ public float FontSize
238238
set
239239
{
240240
_fontSize = value;
241-
#pragma warning disable CS0618 // Type or member is obsolete
242-
FontPaint.TextSize = _fontSize * _scaleX;
243-
#pragma warning restore CS0618 // Type or member is obsolete
244241
FontFont.Size = _fontSize * _scaleX;
245242
}
246243
}
@@ -253,13 +250,6 @@ public IFont Font
253250
{
254251
_font = value;
255252

256-
if (_fontPaint != null)
257-
{
258-
#pragma warning disable CS0618 // Type or member is obsolete
259-
_fontPaint.Typeface = GetSKTypeface();
260-
#pragma warning restore CS0618 // Type or member is obsolete
261-
}
262-
263253
if (_fontFont != null)
264254
{
265255
_fontFont.Typeface = GetSKTypeface();
@@ -281,9 +271,6 @@ public SKPaint FontPaint
281271
{
282272
Color = SKColors.Black,
283273
IsAntialias = true,
284-
#pragma warning disable CS0618 // Type or member is obsolete
285-
Typeface = GetSKTypeface(),
286-
#pragma warning restore CS0618 // Type or member is obsolete
287274
};
288275
}
289276

@@ -491,16 +478,15 @@ public void SetScale(float sx, float sy)
491478
_scaleY = _scaleY * sy;
492479

493480
StrokePaint.StrokeWidth = StrokeSize * _scaleX;
494-
#pragma warning disable CS0618 // Type or member is obsolete
495-
FontPaint.TextSize = _fontSize * _scaleX;
496-
#pragma warning restore CS0618 // Type or member is obsolete
497481
FontFont.Size = _fontSize * _scaleX;
498482
}
499483

500484
[Obsolete("Use Reset(SKPaint, SKFont, SKPaint, SKPaint) instead")]
501485
public void Reset(SKPaint fontPaint, SKPaint fillPaint, SKPaint strokePaint)
502486
{
503-
Reset(fontPaint, fontPaint?.ToFont(), fillPaint, strokePaint);
487+
// SKPaint no longer carries text/font information (SkiaSharp 4.x removed those members),
488+
// so pass a null font; FontFont lazily rebuilds a default font when next accessed.
489+
Reset(fontPaint, (SKFont)null, fillPaint, strokePaint);
504490
}
505491

506492
public void Reset(SKPaint fontPaint, SKFont fontFont, SKPaint fillPaint, SKPaint strokePaint)

src/Graphics/src/Graphics.Skia/SkiaCanvasStateService.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,6 @@ private void EnsureDefaults()
7575
{
7676
Color = SKColors.Black,
7777
IsAntialias = true,
78-
#pragma warning disable CS0618 // Type or member is obsolete
79-
Typeface = SKTypeface.FromFamilyName("Arial")
80-
#pragma warning restore CS0618 // Type or member is obsolete
8178
};
8279

8380
_defaultFontFont = new SKFont

0 commit comments

Comments
 (0)