public void Alpha8_Equality() { var left = new Alpha8(16); var right = new Alpha8(32); Assert.True(left == new Alpha8(16)); Assert.True(left != right); Assert.Equal(left, (object)new Alpha8(16)); }
public void Alpha8_ToRgba32() { var input = new Alpha8(128); var expected = new Rgba32(0, 0, 0, 128); Rgba32 actual = default; input.ToRgba32(ref actual); Assert.Equal(expected, actual); }
public void Alpha8() { // Test the limits. Assert.Equal(0x0, new Alpha8(0F).PackedValue); Assert.Equal(0xFF, new Alpha8(1F).PackedValue); // Test clamping. Assert.Equal(0x0, new Alpha8(-1234F).PackedValue); Assert.Equal(0xFF, new Alpha8(1234F).PackedValue); // Test ordering Assert.Equal(124, new Alpha8(124F / 0xFF).PackedValue); Assert.Equal(26, new Alpha8(0.1F).PackedValue); // Test ToVector4. var vector = new Alpha8(.5F).ToVector4(); Assert.Equal(0, vector.X); Assert.Equal(0, vector.Y); Assert.Equal(0, vector.Z); Assert.Equal(.5F, vector.W, 2); // Test ToScaledVector4. Vector4 scaled = new Alpha8(.5F).ToScaledVector4(); Assert.Equal(0, scaled.X); Assert.Equal(0, scaled.Y); Assert.Equal(0, scaled.Z); Assert.Equal(.5F, scaled.W, 2); // Test PackFromScaledVector4. var pixel = default(Alpha8); pixel.PackFromScaledVector4(scaled); Assert.Equal(128, pixel.PackedValue); // Test Rgb conversion var rgb = default(Rgb24); var rgba = default(Rgba32); var bgr = default(Bgr24); var bgra = default(Bgra32); new Alpha8(.5F).ToRgb24(ref rgb); Assert.Equal(rgb, new Rgb24(0, 0, 0)); new Alpha8(.5F).ToRgba32(ref rgba); Assert.Equal(rgba, new Rgba32(0, 0, 0, 128)); new Alpha8(.5F).ToBgr24(ref bgr); Assert.Equal(bgr, new Bgr24(0, 0, 0)); new Alpha8(.5F).ToBgra32(ref bgra); Assert.Equal(bgra, new Bgra32(0, 0, 0, 128)); }
public void Alpha8_ToScaledVector4() { // arrange var alpha = new Alpha8(.5F); // act Vector4 actual = alpha.ToScaledVector4(); // assert Assert.Equal(0, actual.X); Assert.Equal(0, actual.Y); Assert.Equal(0, actual.Z); Assert.Equal(.5F, actual.W, 2); }
public void Alpha8_PackFromScaledVector4() { // arrange Alpha8 alpha = default; int expected = 128; Vector4 scaled = new Alpha8(.5F).ToScaledVector4(); // act alpha.PackFromScaledVector4(scaled); byte actual = alpha.PackedValue; // assert Assert.Equal(expected, actual); }
public void Alpha8_ToVector4() { // Arrange var alpha = new Alpha8(.5F); // Act var actual = alpha.ToVector4(); // Assert Assert.Equal(0, actual.X); Assert.Equal(0, actual.Y); Assert.Equal(0, actual.Z); Assert.Equal(.5F, actual.W, 2); }
public void Alpha8_PackFromScaledVector4_ToBgr24() { // arrange Bgr24 actual = default; Alpha8 alpha = default; var expected = new Bgr24(0, 0, 0); Vector4 scaled = new Alpha8(.5F).ToScaledVector4(); // act alpha.PackFromScaledVector4(scaled); alpha.ToBgr24(ref actual); // assert Assert.Equal(expected, actual); }
public void Alpha8_PackFromScaledVector4_ToRgba64() { // arrange Alpha8 alpha = default; Rgba64 actual = default; var expected = new Rgba64(0, 0, 0, 65535); Vector4 scaled = new Alpha8(1F).ToScaledVector4(); // act alpha.PackFromScaledVector4(scaled); alpha.ToRgba64(ref actual); // assert Assert.Equal(expected, actual); }
public void Alpha8_PackFromScaledVector4_ToRgba32() { // arrange Rgba32 actual = default; Alpha8 alpha = default; var expected = new Rgba32(0, 0, 0, 128); Vector4 scaled = new Alpha8(.5F).ToScaledVector4(); // act alpha.PackFromScaledVector4(scaled); alpha.ToRgba32(ref actual); // assert Assert.Equal(expected, actual); }
public void Alpha8() { // Test the limits. Assert.AreEqual(0x0, new Alpha8(0f).PackedValue); Assert.AreEqual(0xFF, new Alpha8(1f).PackedValue); // Test clamping. Assert.AreEqual(0x0, new Alpha8(-1234f).PackedValue); Assert.AreEqual(0xFF, new Alpha8(1234f).PackedValue); //Test ordering Assert.AreEqual(124, new Alpha8(124f / 0xff).PackedValue); Assert.AreEqual(26, new Alpha8(0.1f).PackedValue); var packed = new Alpha8(0.5f).PackedValue; var unpacked = new Alpha8() { PackedValue = packed }.ToAlpha(); Assert.AreEqual(0.5f, unpacked, 0.01f); }
public void Alpha8() { // Test the limits. Assert.Equal(0x0, new Alpha8(0F).PackedValue); Assert.Equal(0xFF, new Alpha8(1F).PackedValue); // Test clamping. Assert.Equal(0x0, new Alpha8(-1234F).PackedValue); Assert.Equal(0xFF, new Alpha8(1234F).PackedValue); // Test ordering Assert.Equal(124, new Alpha8(124F / 0xFF).PackedValue); Assert.Equal(26, new Alpha8(0.1F).PackedValue); // Test ordering var vector = new Alpha8(.5F).ToVector4(); Assert.Equal(0, vector.X); Assert.Equal(0, vector.Y); Assert.Equal(0, vector.Z); Assert.Equal(.5F, vector.W, 2); var rgb = default(Rgb24); var rgba = default(Rgba32); var bgr = default(Bgr24); var bgra = default(Bgra32); new Alpha8(.5F).ToRgb24(ref rgb); Assert.Equal(rgb, new Rgb24(0, 0, 0)); new Alpha8(.5F).ToRgba32(ref rgba); Assert.Equal(rgba, new Rgba32(0, 0, 0, 128)); new Alpha8(.5F).ToBgr24(ref bgr); Assert.Equal(bgr, new Bgr24(0, 0, 0)); new Alpha8(.5F).ToBgra32(ref bgra); Assert.Equal(bgra, new Bgra32(0, 0, 0, 128)); }
public void Alpha8() { // Test the limits. Assert.Equal(0x0, new Alpha8(0F).PackedValue); Assert.Equal(0xFF, new Alpha8(1F).PackedValue); // Test clamping. Assert.Equal(0x0, new Alpha8(-1234F).PackedValue); Assert.Equal(0xFF, new Alpha8(1234F).PackedValue); // Test ordering Assert.Equal(124, new Alpha8(124F / 0xFF).PackedValue); Assert.Equal(26, new Alpha8(0.1F).PackedValue); // Test ordering Vector4 vector = new Alpha8(.5F).ToVector4(); Assert.Equal(vector.X, 0); Assert.Equal(vector.Y, 0); Assert.Equal(vector.Z, 0); Assert.Equal(vector.W, .5F, 2); byte[] rgb = new byte[3]; byte[] rgba = new byte[4]; byte[] bgr = new byte[3]; byte[] bgra = new byte[4]; new Alpha8(.5F).ToXyzBytes(rgb, 0); Assert.Equal(rgb, new byte[] { 0, 0, 0 }); new Alpha8(.5F).ToXyzwBytes(rgba, 0); Assert.Equal(rgba, new byte[] { 0, 0, 0, 128 }); new Alpha8(.5F).ToZyxBytes(bgr, 0); Assert.Equal(bgr, new byte[] { 0, 0, 0 }); new Alpha8(.5F).ToZyxwBytes(bgra, 0); Assert.Equal(bgra, new byte[] { 0, 0, 0, 128 }); }
public _BleedTransparentColor(int minIterations, Alpha8 alphaThreshold) { _MinIterations = minIterations; _AlphaThreshold = alphaThreshold; }
internal Color[] GetColorData() { int colorDataLength = Width * Height; var colorData = new Color[colorDataLength]; switch (Format) { case SurfaceFormat.Single: var floatData = new float[colorDataLength]; GetData(floatData); for (int i = 0; i < colorDataLength; i++) { float brightness = floatData[i]; // Export as a greyscale image. colorData[i] = new Color(brightness, brightness, brightness); } break; case SurfaceFormat.Color: GetData(colorData); break; case SurfaceFormat.Alpha8: var alpha8Data = new Alpha8[colorDataLength]; GetData(alpha8Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(alpha8Data[i].ToVector4()); } break; case SurfaceFormat.Bgr565: var bgr565Data = new Bgr565[colorDataLength]; GetData(bgr565Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(bgr565Data[i].ToVector4()); } break; case SurfaceFormat.Bgra4444: var bgra4444Data = new Bgra4444[colorDataLength]; GetData(bgra4444Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(bgra4444Data[i].ToVector4()); } break; case SurfaceFormat.Bgra5551: var bgra5551Data = new Bgra5551[colorDataLength]; GetData(bgra5551Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(bgra5551Data[i].ToVector4()); } break; case SurfaceFormat.HalfSingle: var halfSingleData = new HalfSingle[colorDataLength]; GetData(halfSingleData); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(halfSingleData[i].ToVector4()); } break; case SurfaceFormat.HalfVector2: var halfVector2Data = new HalfVector2[colorDataLength]; GetData(halfVector2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(halfVector2Data[i].ToVector4()); } break; case SurfaceFormat.HalfVector4: var halfVector4Data = new HalfVector4[colorDataLength]; GetData(halfVector4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(halfVector4Data[i].ToVector4()); } break; case SurfaceFormat.NormalizedByte2: var normalizedByte2Data = new NormalizedByte2[colorDataLength]; GetData(normalizedByte2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(normalizedByte2Data[i].ToVector4()); } break; case SurfaceFormat.NormalizedByte4: var normalizedByte4Data = new NormalizedByte4[colorDataLength]; GetData(normalizedByte4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(normalizedByte4Data[i].ToVector4()); } break; case SurfaceFormat.Rg32: var rg32Data = new Rg32[colorDataLength]; GetData(rg32Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(rg32Data[i].ToVector4()); } break; case SurfaceFormat.Rgba64: var rgba64Data = new Rgba64[colorDataLength]; GetData(rgba64Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(rgba64Data[i].ToVector4()); } break; case SurfaceFormat.Rgba1010102: var rgba1010102Data = new Rgba1010102[colorDataLength]; GetData(rgba1010102Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(rgba1010102Data[i].ToVector4()); } break; default: throw new Exception("Texture surface format not supported"); } return(colorData); }
public RGBA128F(Alpha8 alpha) : this() { RGBA = new XYZA(255, 255, 255, alpha.A) / 255f; }
private void GetColorData(Texture2D texture2D) { int colorDataLength = texture2D.Width * texture2D.Height; colorData = new Color[colorDataLength]; switch (texture2D.Format) { case SurfaceFormat.Single: var floatData = new float[colorDataLength]; texture2D.GetData <float>(floatData); for (int i = 0; i < colorDataLength; i++) { float brightness = floatData[i]; // Export as a greyscale image. colorData[i] = new Color(brightness, brightness, brightness); } break; case SurfaceFormat.Color: texture2D.GetData <Color>(colorData); break; case SurfaceFormat.Alpha8: var alpha8Data = new Alpha8[colorDataLength]; texture2D.GetData <Alpha8>(alpha8Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)alpha8Data[i]).ToVector4()); } break; case SurfaceFormat.Bgr565: var bgr565Data = new Bgr565[colorDataLength]; texture2D.GetData <Bgr565>(bgr565Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgr565Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra4444: var bgra4444Data = new Bgra4444[colorDataLength]; texture2D.GetData <Bgra4444>(bgra4444Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra4444Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra5551: var bgra5551Data = new Bgra5551[colorDataLength]; texture2D.GetData <Bgra5551>(bgra5551Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra5551Data[i]).ToVector4()); } break; case SurfaceFormat.HalfSingle: var halfSingleData = new HalfSingle[colorDataLength]; texture2D.GetData <HalfSingle>(halfSingleData); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfSingleData[i]).ToVector4()); } break; case SurfaceFormat.HalfVector2: var halfVector2Data = new HalfVector2[colorDataLength]; texture2D.GetData <HalfVector2>(halfVector2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector2Data[i]).ToVector4()); } break; case SurfaceFormat.HalfVector4: var halfVector4Data = new HalfVector4[colorDataLength]; texture2D.GetData <HalfVector4>(halfVector4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector4Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte2: var normalizedByte2Data = new NormalizedByte2[colorDataLength]; texture2D.GetData <NormalizedByte2>(normalizedByte2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte2Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte4: var normalizedByte4Data = new NormalizedByte4[colorDataLength]; texture2D.GetData <NormalizedByte4>(normalizedByte4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte4Data[i]).ToVector4()); } break; case SurfaceFormat.Rg32: var rg32Data = new Rg32[colorDataLength]; texture2D.GetData <Rg32>(rg32Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rg32Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba64: var rgba64Data = new Rgba64[colorDataLength]; texture2D.GetData <Rgba64>(rgba64Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba64Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba1010102: var rgba1010102Data = new Rgba1010102[colorDataLength]; texture2D.GetData <Rgba1010102>(rgba1010102Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba1010102Data[i]).ToVector4()); } break; default: throw new Exception("Texture surface format not supported"); } }
private void GetColorData(Texture2D texture2D) { int colorDataLength = texture2D.Width * texture2D.Height; colorData = new Color[colorDataLength]; switch (texture2D.Format) { case SurfaceFormat.Color: texture2D.GetData<Color>(colorData); break; case SurfaceFormat.Alpha8: var alpha8Data = new Alpha8[colorDataLength]; texture2D.GetData<Alpha8>(alpha8Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)alpha8Data[i]).ToVector4()); } break; case SurfaceFormat.Bgr565: var bgr565Data = new Bgr565[colorDataLength]; texture2D.GetData<Bgr565>(bgr565Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgr565Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra4444: var bgra4444Data = new Bgra4444[colorDataLength]; texture2D.GetData<Bgra4444>(bgra4444Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra4444Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra5551: var bgra5551Data = new Bgra5551[colorDataLength]; texture2D.GetData<Bgra5551>(bgra5551Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra5551Data[i]).ToVector4()); } break; case SurfaceFormat.HalfSingle: var halfSingleData = new HalfSingle[colorDataLength]; texture2D.GetData<HalfSingle>(halfSingleData); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfSingleData[i]).ToVector4()); } break; case SurfaceFormat.HalfVector2: var halfVector2Data = new HalfVector2[colorDataLength]; texture2D.GetData<HalfVector2>(halfVector2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector2Data[i]).ToVector4()); } break; case SurfaceFormat.HalfVector4: var halfVector4Data = new HalfVector4[colorDataLength]; texture2D.GetData<HalfVector4>(halfVector4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector4Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte2: var normalizedByte2Data = new NormalizedByte2[colorDataLength]; texture2D.GetData<NormalizedByte2>(normalizedByte2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte2Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte4: var normalizedByte4Data = new NormalizedByte4[colorDataLength]; texture2D.GetData<NormalizedByte4>(normalizedByte4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte4Data[i]).ToVector4()); } break; case SurfaceFormat.Rg32: var rg32Data = new Rg32[colorDataLength]; texture2D.GetData<Rg32>(rg32Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rg32Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba64: var rgba64Data = new Rgba64[colorDataLength]; texture2D.GetData<Rgba64>(rgba64Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba64Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba1010102: var rgba1010102Data = new Rgba1010102[colorDataLength]; texture2D.GetData<Rgba1010102>(rgba1010102Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba1010102Data[i]).ToVector4()); } break; default: throw new Exception("Texture surface format not supported"); } }