Exemplo n.º 1
0
        public override Field Clone()
        {
            var clone = new SFImage {
                Value = (byte[, , ])Value.Clone()
            };

            return(clone);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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");
        }
Exemplo n.º 6
0
 public void Visit(SFImage field)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 7
0
 public override Field Clone() {
     var clone = new SFImage { Value = (byte[, ,])Value.Clone() };
     return clone;
 }
 public x3dPixelTexture()
 {
     Image   = new SFImage();
     RepeatS = true;
     RepeatT = true;
 }