Browse Source

Remove cropping options

pull/1552/head
Brian Popow 7 years ago
parent
commit
8703dac09a
  1. 12
      src/ImageSharp/Formats/WebP/Vp8Io.cs
  2. 32
      src/ImageSharp/Formats/WebP/WebPLossyDecoder.cs

12
src/ImageSharp/Formats/WebP/Vp8Io.cs

@ -9,14 +9,12 @@ namespace SixLabors.ImageSharp.Formats.WebP
{ {
/// <summary> /// <summary>
/// Gets or sets the picture width in pixels (invariable). /// Gets or sets the picture width in pixels (invariable).
/// Original, uncropped dimensions.
/// The actual area passed to put() is stored in <see cref="MbW"/> /> field. /// The actual area passed to put() is stored in <see cref="MbW"/> /> field.
/// </summary> /// </summary>
public int Width { get; set; } public int Width { get; set; }
/// <summary> /// <summary>
/// Gets or sets the picture height in pixels (invariable). /// Gets or sets the picture height in pixels (invariable).
/// Original, uncropped dimensions.
/// The actual area passed to put() is stored in <see cref="MbH"/> /> field. /// The actual area passed to put() is stored in <see cref="MbH"/> /> field.
/// </summary> /// </summary>
public int Height { get; set; } public int Height { get; set; }
@ -61,16 +59,6 @@ namespace SixLabors.ImageSharp.Formats.WebP
/// </summary> /// </summary>
public int UvStride { get; set; } public int UvStride { get; set; }
public bool UseCropping { get; set; }
public int CropLeft { get; set; }
public int CropRight { get; set; }
public int CropTop { get; set; }
public int CropBottom { get; set; }
public bool UseScaling { get; set; } public bool UseScaling { get; set; }
public int ScaledWidth { get; set; } public int ScaledWidth { get; set; }

32
src/ImageSharp/Formats/WebP/WebPLossyDecoder.cs

@ -632,19 +632,15 @@ namespace SixLabors.ImageSharp.Formats.WebP
yEnd -= extraYRows; yEnd -= extraYRows;
} }
if (yEnd > io.CropBottom) if (yEnd > io.Height)
{ {
yEnd = io.CropBottom; // make sure we don't overflow on last row. yEnd = io.Height; // make sure we don't overflow on last row.
} }
if (yStart < yEnd) if (yStart < yEnd)
{ {
io.Y = io.Y.Slice(io.CropLeft); io.MbY = yStart;
io.U = io.U.Slice(io.CropLeft); io.MbW = io.Width;
io.V = io.V.Slice(io.CropLeft);
io.MbY = yStart - io.CropTop;
io.MbW = io.CropRight - io.CropLeft;
io.MbH = yEnd - yStart; io.MbH = yEnd - yStart;
this.EmitRgb(dec, io); this.EmitRgb(dec, io);
} }
@ -705,7 +701,7 @@ namespace SixLabors.ImageSharp.Formats.WebP
// Move to last row. // Move to last row.
curY = curY.Slice(io.YStride); curY = curY.Slice(io.YStride);
if (io.CropTop + yEnd < io.CropBottom) if (yEnd < io.Height)
{ {
// Save the unfinished samples for next call (as we're not done yet). // Save the unfinished samples for next call (as we're not done yet).
curY.Slice(0, mbw).CopyTo(tmpYBuffer); curY.Slice(0, mbw).CopyTo(tmpYBuffer);
@ -1315,11 +1311,6 @@ namespace SixLabors.ImageSharp.Formats.WebP
var io = default(Vp8Io); var io = default(Vp8Io);
io.Width = (int)pictureHeader.Width; io.Width = (int)pictureHeader.Width;
io.Height = (int)pictureHeader.Height; io.Height = (int)pictureHeader.Height;
io.UseCropping = false;
io.CropTop = 0;
io.CropLeft = 0;
io.CropRight = io.Width;
io.CropBottom = io.Height;
io.UseScaling = false; io.UseScaling = false;
io.ScaledWidth = io.Width; io.ScaledWidth = io.Width;
io.ScaledHeight = io.ScaledHeight; io.ScaledHeight = io.ScaledHeight;
@ -1340,11 +1331,10 @@ namespace SixLabors.ImageSharp.Formats.WebP
} }
else else
{ {
// For simple filter, we can filter only the cropped region. We include 'extraPixels' on // For simple filter, we include 'extraPixels' on the other side of the boundary,
// the other side of the boundary, since vertical or horizontal filtering of the previous // since vertical or horizontal filtering of the previous macroblock can modify some abutting pixels.
// macroblock can modify some abutting pixels. dec.TopLeftMbX = (-extraPixels) >> 4;
dec.TopLeftMbX = (io.CropLeft - extraPixels) >> 4; dec.TopLeftMbY = (-extraPixels) >> 4;
dec.TopLeftMbY = (io.CropTop - extraPixels) >> 4;
if (dec.TopLeftMbX < 0) if (dec.TopLeftMbX < 0)
{ {
dec.TopLeftMbX = 0; dec.TopLeftMbX = 0;
@ -1357,8 +1347,8 @@ namespace SixLabors.ImageSharp.Formats.WebP
} }
// We need some 'extra' pixels on the right/bottom. // We need some 'extra' pixels on the right/bottom.
dec.BottomRightMbY = (io.CropBottom + 15 + extraPixels) >> 4; dec.BottomRightMbY = (io.Height + 15 + extraPixels) >> 4;
dec.BottomRightMbX = (io.CropRight + 15 + extraPixels) >> 4; dec.BottomRightMbX = (io.Width + 15 + extraPixels) >> 4;
if (dec.BottomRightMbX > dec.MbWidth) if (dec.BottomRightMbX > dec.MbWidth)
{ {
dec.BottomRightMbX = dec.MbWidth; dec.BottomRightMbX = dec.MbWidth;

Loading…
Cancel
Save