diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-09-02 01:44:47 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-09-02 01:44:47 -0400 |
| commit | 0fd4b0ffca3d409eecc6da5988db874333ad955d (patch) | |
| tree | c66863a3c1400b8d8f8aa5df46ee2c6c9b337520 | |
| parent | 78ad5c91f1f05f46e38def9b8f59418afbb6669d (diff) | |
update image rotation
| -rw-r--r-- | Emby.Drawing.Skia/SkiaEncoder.cs | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/Emby.Drawing.Skia/SkiaEncoder.cs b/Emby.Drawing.Skia/SkiaEncoder.cs index d25030397..c3030a208 100644 --- a/Emby.Drawing.Skia/SkiaEncoder.cs +++ b/Emby.Drawing.Skia/SkiaEncoder.cs @@ -347,16 +347,29 @@ namespace Emby.Drawing.Skia case SKCodecOrigin.LeftTop: { - // TODO: Flip - var rotated = new SKBitmap(bitmap.Height, bitmap.Width); - using (var surface = new SKCanvas(rotated)) + // TODO: Remove dual canvases, had trouble with flipping + using (var rotated = new SKBitmap(bitmap.Height, bitmap.Width)) { - surface.Translate(rotated.Width, 0); - surface.RotateDegrees(90); - surface.DrawBitmap(bitmap, 0, 0); - } + using (var surface = new SKCanvas(rotated)) + { + surface.Translate(rotated.Width, 0); - return rotated; + surface.RotateDegrees(90); + + surface.DrawBitmap(bitmap, 0, 0); + + } + + var flippedBitmap = new SKBitmap(rotated.Width, rotated.Height); + using (var flippedCanvas = new SKCanvas(flippedBitmap)) + { + flippedCanvas.Translate(flippedBitmap.Width, 0); + flippedCanvas.Scale(-1, 1); + flippedCanvas.DrawBitmap(rotated, 0, 0); + } + + return flippedBitmap; + } } case SKCodecOrigin.RightTop: @@ -374,16 +387,26 @@ namespace Emby.Drawing.Skia case SKCodecOrigin.RightBottom: { - // TODO: Flip - var rotated = new SKBitmap(bitmap.Height, bitmap.Width); - using (var surface = new SKCanvas(rotated)) + // TODO: Remove dual canvases, had trouble with flipping + using (var rotated = new SKBitmap(bitmap.Height, bitmap.Width)) { - surface.Translate(0, rotated.Height); - surface.RotateDegrees(270); - surface.DrawBitmap(bitmap, 0, 0); - } + using (var surface = new SKCanvas(rotated)) + { + surface.Translate(0, rotated.Height); + surface.RotateDegrees(270); + surface.DrawBitmap(bitmap, 0, 0); + } - return rotated; + var flippedBitmap = new SKBitmap(rotated.Width, rotated.Height); + using (var flippedCanvas = new SKCanvas(flippedBitmap)) + { + flippedCanvas.Translate(flippedBitmap.Width, 0); + flippedCanvas.Scale(-1, 1); + flippedCanvas.DrawBitmap(rotated, 0, 0); + } + + return flippedBitmap; + } } case SKCodecOrigin.LeftBottom: |
