diff options
| author | Bond-009 <bond.009@outlook.com> | 2023-01-11 09:22:35 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-11 09:22:35 +0100 |
| commit | aefa8da4ee2167e5ec63f27d83cd0ef41f01a8ae (patch) | |
| tree | 6697e861af0f23ec0c0bb285b42e23ef61d3b57a /src/Jellyfin.Drawing.Skia/SkiaHelper.cs | |
| parent | 3ed0e70eaba16da29b212acc0d4f4ee50f15405b (diff) | |
| parent | 16e33665a217cb6b37d88cca244eb1538d41b873 (diff) | |
Merge pull request #9064 from barronpm/move-jellyfin-drawing-skia
Diffstat (limited to 'src/Jellyfin.Drawing.Skia/SkiaHelper.cs')
| -rw-r--r-- | src/Jellyfin.Drawing.Skia/SkiaHelper.cs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Jellyfin.Drawing.Skia/SkiaHelper.cs b/src/Jellyfin.Drawing.Skia/SkiaHelper.cs new file mode 100644 index 000000000..23e92dcb2 --- /dev/null +++ b/src/Jellyfin.Drawing.Skia/SkiaHelper.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using SkiaSharp; + +namespace Jellyfin.Drawing.Skia +{ + /// <summary> + /// Class containing helper methods for working with SkiaSharp. + /// </summary> + public static class SkiaHelper + { + /// <summary> + /// Gets the next valid image as a bitmap. + /// </summary> + /// <param name="skiaEncoder">The current skia encoder.</param> + /// <param name="paths">The list of image paths.</param> + /// <param name="currentIndex">The current checked index.</param> + /// <param name="newIndex">The new index.</param> + /// <returns>A valid bitmap, or null if no bitmap exists after <c>currentIndex</c>.</returns> + public static SKBitmap? GetNextValidImage(SkiaEncoder skiaEncoder, IReadOnlyList<string> paths, int currentIndex, out int newIndex) + { + var imagesTested = new Dictionary<int, int>(); + SKBitmap? bitmap = null; + + while (imagesTested.Count < paths.Count) + { + if (currentIndex >= paths.Count) + { + currentIndex = 0; + } + + bitmap = skiaEncoder.Decode(paths[currentIndex], false, null, out _); + + imagesTested[currentIndex] = 0; + + currentIndex++; + + if (bitmap is not null) + { + break; + } + } + + newIndex = currentIndex; + return bitmap; + } + } +} |
