public void TestCrop() { ITiffPixelBuffer <TiffGray8> pixelBuffer = PixelBufferTests.InitializePixelBuffer(out TiffGray8[] pixels); var writer = new TiffPixelBufferWriterAdapter <TiffGray8>(pixelBuffer); TiffPixelBufferWriter <TiffGray8> structWriter = writer.AsPixelBufferWriter(); Assert.Equal(3, structWriter.Width); Assert.Equal(2, structWriter.Height); Assert.False(structWriter.IsEmpty); Assert.Throws <ArgumentOutOfRangeException>("offset", () => structWriter.Crop(new TiffPoint(4, 0))); Assert.Throws <ArgumentOutOfRangeException>("offset", () => structWriter.Crop(new TiffPoint(0, 3))); Assert.Throws <ArgumentOutOfRangeException>("offset", () => structWriter.Crop(new TiffPoint(4, 3))); Assert.Throws <ArgumentOutOfRangeException>("size", () => structWriter.Crop(new TiffPoint(0, 0), new TiffSize(4, 1))); Assert.Throws <ArgumentOutOfRangeException>("size", () => structWriter.Crop(new TiffPoint(0, 0), new TiffSize(1, 3))); Assert.Throws <ArgumentOutOfRangeException>("size", () => structWriter.Crop(new TiffPoint(0, 0), new TiffSize(4, 3))); structWriter = writer.Crop(new TiffPoint(1, 1), new TiffSize(1, 1)); Assert.Equal(1, structWriter.Width); Assert.Equal(1, structWriter.Height); structWriter = writer.AsPixelBufferWriter().Crop(new TiffPoint(1, 1), new TiffSize(1, 1)); Assert.Equal(1, structWriter.Width); Assert.Equal(1, structWriter.Height); structWriter = writer.Crop(new TiffPoint(1, 1)); Assert.Equal(2, structWriter.Width); Assert.Equal(1, structWriter.Height); structWriter = writer.AsPixelBufferWriter().Crop(new TiffPoint(1, 1)); Assert.Equal(2, structWriter.Width); Assert.Equal(1, structWriter.Height); Assert.Throws <ArgumentOutOfRangeException>("rowIndex", () => structWriter.GetRowSpan(-1, 0, 1)); Assert.Throws <ArgumentOutOfRangeException>("rowIndex", () => structWriter.GetRowSpan(2, 0, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => structWriter.GetRowSpan(0, -1, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => structWriter.GetRowSpan(0, 3, 1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => structWriter.GetRowSpan(0, 1, -1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => structWriter.GetRowSpan(0, 1, 2)); Assert.Throws <ArgumentOutOfRangeException>("colIndex", () => structWriter.GetColumnSpan(-1, 0, 1)); Assert.Throws <ArgumentOutOfRangeException>("colIndex", () => structWriter.GetColumnSpan(2, 0, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => structWriter.GetColumnSpan(0, -1, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => structWriter.GetColumnSpan(0, 2, 1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => structWriter.GetColumnSpan(0, 1, -1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => structWriter.GetColumnSpan(0, 1, 2)); ITiffPixelBufferWriter <TiffGray8> writer2 = TiffPixelBufferUnsafeMarshal.GetBuffer(structWriter, out TiffPoint offset, out TiffSize size); Assert.True(ReferenceEquals(writer, writer2)); Assert.Equal(1, offset.X); Assert.Equal(1, offset.Y); Assert.Equal(2, size.Width); Assert.Equal(1, size.Height); }
public void TestWriterAdapter() { Assert.Throws <ArgumentNullException>("buffer", () => new TiffPixelBufferWriterAdapter <TiffGray8>(null)); ITiffPixelBuffer <TiffGray8> pixelBuffer = PixelBufferTests.InitializePixelBuffer(out TiffGray8[] pixels); var writer = new TiffPixelBufferWriterAdapter <TiffGray8>(pixelBuffer); Assert.Equal(3, writer.Width); Assert.Equal(2, writer.Height); }
public void TestWriteRows() { ITiffPixelBuffer <TiffGray8> pixelBuffer = PixelBufferTests.InitializePixelBuffer(out TiffGray8[] pixels); var writer = new TiffPixelBufferWriterAdapter <TiffGray8>(pixelBuffer); // Write to first row using (TiffPixelSpanHandle <TiffGray8> pixelSpanHandle = writer.GetRowSpan(0, 0, 1)) { Assert.Equal(1, pixelSpanHandle.Length); Span <TiffGray8> span = pixelSpanHandle.GetSpan(); Assert.Equal(1, span.Length); span[0] = new TiffGray8(0xa1); } // Make sure only the affected pixels are changed while others stay the same. Assert.Equal(0xa1, pixels[0].Intensity); Assert.Equal(0x12, pixels[1].Intensity); Assert.Equal(0x13, pixels[2].Intensity); Assert.Equal(0x21, pixels[3].Intensity); Assert.Equal(0x22, pixels[4].Intensity); Assert.Equal(0x23, pixels[5].Intensity); // Write to second row using (TiffPixelSpanHandle <TiffGray8> pixelSpanHandle = writer.GetRowSpan(1, 1, 2)) { Assert.Equal(2, pixelSpanHandle.Length); Span <TiffGray8> span = pixelSpanHandle.GetSpan(); Assert.Equal(2, span.Length); span[0] = new TiffGray8(0xa2); span[1] = new TiffGray8(0xa3); } // Make sure only the affected pixels are changed while others stay the same. Assert.Equal(0xa1, pixels[0].Intensity); Assert.Equal(0x12, pixels[1].Intensity); Assert.Equal(0x13, pixels[2].Intensity); Assert.Equal(0x21, pixels[3].Intensity); Assert.Equal(0xa2, pixels[4].Intensity); Assert.Equal(0xa3, pixels[5].Intensity); // Failure cases Assert.Throws <ArgumentOutOfRangeException>("rowIndex", () => writer.GetRowSpan(-1, 1, 1)); Assert.Throws <ArgumentOutOfRangeException>("rowIndex", () => writer.GetRowSpan(2, 1, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => writer.GetRowSpan(0, -1, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => writer.GetRowSpan(0, 4, 1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => writer.GetRowSpan(0, 1, -1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => writer.GetRowSpan(0, 1, 3)); }
public void TestWriteOnStructWriter() { ITiffPixelBuffer <TiffGray8> pixelBuffer = PixelBufferTests.InitializePixelBuffer(out TiffGray8[] pixels); var writer = new TiffPixelBufferWriterAdapter <TiffGray8>(pixelBuffer); TiffPixelBufferWriter <TiffGray8> structWriter; structWriter = writer.Crop(new TiffPoint(1, 0), new TiffSize(1, 1)); Assert.Equal(1, structWriter.Width); Assert.Equal(1, structWriter.Height); using (TiffPixelSpanHandle <TiffGray8> pixelSpanHandle = structWriter.GetRowSpan(0, 0, 1)) { Assert.Equal(1, pixelSpanHandle.Length); Span <TiffGray8> span = pixelSpanHandle.GetSpan(); Assert.Equal(1, span.Length); span[0] = new TiffGray8(0xa1); } Assert.Equal(0x11, pixels[0].Intensity); Assert.Equal(0xa1, pixels[1].Intensity); Assert.Equal(0x13, pixels[2].Intensity); Assert.Equal(0x21, pixels[3].Intensity); Assert.Equal(0x22, pixels[4].Intensity); Assert.Equal(0x23, pixels[5].Intensity); using (TiffPixelSpanHandle <TiffGray8> pixelSpanHandle = structWriter.GetColumnSpan(0, 0, 1)) { Assert.Equal(1, pixelSpanHandle.Length); Span <TiffGray8> span = pixelSpanHandle.GetSpan(); Assert.Equal(1, span.Length); span[0] = new TiffGray8(0xa2); } Assert.Equal(0x11, pixels[0].Intensity); Assert.Equal(0xa2, pixels[1].Intensity); Assert.Equal(0x13, pixels[2].Intensity); Assert.Equal(0x21, pixels[3].Intensity); Assert.Equal(0x22, pixels[4].Intensity); Assert.Equal(0x23, pixels[5].Intensity); // Failure cases Assert.Throws <ArgumentOutOfRangeException>("rowIndex", () => structWriter.GetRowSpan(-1, 0, 1)); Assert.Throws <ArgumentOutOfRangeException>("rowIndex", () => structWriter.GetRowSpan(1, 0, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => structWriter.GetRowSpan(0, -1, 1)); Assert.Throws <ArgumentOutOfRangeException>("start", () => structWriter.GetRowSpan(0, 2, 1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => structWriter.GetRowSpan(0, 0, -1)); Assert.Throws <ArgumentOutOfRangeException>("length", () => structWriter.GetRowSpan(0, 0, 2)); }