aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-09-02 01:44:47 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-09-02 01:44:47 -0400
commit0fd4b0ffca3d409eecc6da5988db874333ad955d (patch)
treec66863a3c1400b8d8f8aa5df46ee2c6c9b337520
parent78ad5c91f1f05f46e38def9b8f59418afbb6669d (diff)
update image rotation
-rw-r--r--Emby.Drawing.Skia/SkiaEncoder.cs55
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: