public override Field Clone() { var clone = new SFImage { Value = (byte[, , ])Value.Clone() }; return(clone); }
public void Constructor() { var image1 = new SFImage(); Assert.AreEqual(image1.ComponentSize, SFImageComponentSize.Unknown); Assert.AreEqual(image1.Width, 0); Assert.AreEqual(image1.Height, 0); Assert.AreEqual(image1.Pixels, null); var image2 = GenerateTestImage(SFImageComponentSize.Grayscale); Assert.AreEqual(image2.ComponentSize, SFImageComponentSize.Grayscale); Assert.AreEqual(image2.Width, 100); Assert.AreEqual(image2.Height, 100); Assert.IsTrue(image2.Pixels != null); }
internal SFImage ParseSFImageValue() { // int32 int32 int32 ... SFImage ret = null; try { ret = new SFImage(); ret.Width = GetIntNumber(GetNextNumberToken()); ret.Height = GetIntNumber(GetNextNumberToken()); ret.NumberOfComponents = GetIntNumber(GetNextNumberToken()); } catch (UserCancellationException) { throw; } catch (Exception ex) { ErrorParsingField(VRMLReaderError.SFImageInvalid, ex); } if (ret.Width < 0 || ret.Height < 0 || ret.NumberOfComponents < 0 || ret.NumberOfComponents > 4) { ErrorParsingField(VRMLReaderError.SFImageInvalid); } if (ret.Width == 0 || ret.Height == 0 || ret.NumberOfComponents == 0) { return(ret); } try { for (int i = 0; i < ret.Width * ret.Height; i++) { ret.PixelValues.Add(GetIntNumber(GetNextNumberToken())); } } catch (UserCancellationException) { throw; } catch (Exception ex) { ErrorParsingField(VRMLReaderError.SFImageInvalid, ex); } return(ret); }
public void Visit(SFImage field) { int width = m_context.ReadInt32(); int height = m_context.ReadInt32(); int components = m_context.ReadInt32(); byte[,,] value = new byte[height, width, components]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { uint pixel = m_context.ReadHexadecimal(); switch (components) { case 1: value[height - y - 1, x, 0] = (byte)(pixel & 0xff); break; case 2: value[height - y - 1, x, 3] = (byte)(pixel & 0xff); value[height - y - 1, x, 0] = (byte)((pixel >> 8) & 0xff); break; case 3: value[height - y - 1, x, 2] = (byte)(pixel & 0xff); value[height - y - 1, x, 1] = (byte)((pixel >> 8) & 0xff); value[height - y - 1, x, 0] = (byte)((pixel >> 16) & 0xff); break; case 4: value[height - y - 1, x, 3] = (byte)(pixel & 0xff); value[height - y - 1, x, 2] = (byte)((pixel >> 8) & 0xff); value[height - y - 1, x, 1] = (byte)((pixel >> 16) & 0xff); value[height - y - 1, x, 0] = (byte)((pixel >> 24) & 0xff); break; } } } field.Value = value; }
public void TestToString() { var image1 = new SFImage(); Assert.AreEqual(image1.ToString(), "0 0 0"); var pixels = new byte[, ] { { 0xFF } }; image1 = new SFImage(SFImageComponentSize.Grayscale, 1, 1, pixels); var str = image1.ToString(); Assert.AreEqual(str, "1 1 1 0xFF"); pixels = new byte[, ] { { 0xFF }, { 0xFF } }; image1 = new SFImage(SFImageComponentSize.GrayscaleAlpha, 1, 1, pixels); Assert.AreEqual(image1.ToString(), "2 1 1 0xFFFF"); pixels = new byte[, ] { { 0xFF, 0xAA }, { 0xFF, 0xAA }, { 0xFF, 0xAA } }; image1 = new SFImage(SFImageComponentSize.RGB, 1, 2, pixels); Assert.AreEqual(image1.ToString(), "3 1 2 0xFFFFFF 0xAAAAAA"); pixels = new byte[, ] { { 0xFF, 0xAA }, { 0xFF, 0xAA }, { 0xFF, 0xAA }, { 0xFF, 0xAA } }; image1 = new SFImage(SFImageComponentSize.RGBA, 2, 1, pixels); Assert.AreEqual(image1.ToString(), "4 2 1 0xFFFFFFFF 0xAAAAAAAA"); }
public void Visit(SFImage field) { throw new NotImplementedException(); }
public override Field Clone() { var clone = new SFImage { Value = (byte[, ,])Value.Clone() }; return clone; }
public x3dPixelTexture() { Image = new SFImage(); RepeatS = true; RepeatT = true; }