Ejemplo n.º 1
0
        public void EncodeTest()
        {
            MockEncoder encoder = new MockEncoder();
            LZW         lzw     = new LZW(encoder);

            lzw.Encode((42));
            lzw.Encode((43));
            lzw.Encode((42));
            lzw.Encode((43));
            lzw.Encode((44));
            Assert.AreEqual(encoder.values[0], 42);
            Assert.AreEqual(encoder.values[1], 43);
            Assert.AreEqual(encoder.values[2], 256);
        }
Ejemplo n.º 2
0
 private void encodeResult(object sender, RoutedEventArgs e)
 {
     text        = messageTextBox.Text.ToCharArray(0, messageTextBox.Text.Length);
     dictionary  = LZW.InitializeDictionary(text);
     alphabet    = new Dictionary <string, int>(dictionary);
     encodeList  = LZW.Encode(dictionary, text);
     result.Text = String.Join(", ", encodeList);
     CreateDictionary(dictionary);
 }
Ejemplo n.º 3
0
        public void EncodeDecodeTest()
        {
            MockEncoder encoder = new MockEncoder();
            LZW         lzw     = new LZW(encoder);

            foreach (byte character in "Lorem ipsum dolor sit amet consectetur adepiscig nullam")
            {
                lzw.Encode(character);
            }
            lzw.EncoderFinalize();
            LZW lzwDecoder = new LZW(encoder);

            String output = "";

            foreach (byte character in "Lorem ipsum dolor sit amet consectetur adepiscig nullam")
            {
                byte actual = lzwDecoder.Decode();
                output += (char)actual;
                Assert.AreEqual(character, actual);
            }
        }
Ejemplo n.º 4
0
        public byte[] GetBytes()
        {
            using (MemoryStream ms = new MemoryStream())
                using (BinaryWriter br = new BinaryWriter(ms))
                {
                    if (HasPalette16)
                    {
                        br.Write((ushort)0x3045);
                        throw new NotImplementedException();
                    }
                    if (HasPalette256)
                    {
                        br.Write((ushort)0x304D);
                        br.Write(GetColourPaletteBytes().ToArray());
                    }
                    if (HasPicture256)
                    {
                        br.Write((ushort)0x3058);

                        byte[] encoded = RLE.Encode(_picture256.ToByteArray());
                        encoded = LZW.Encode(encoded);

                        br.Write((ushort)(encoded.Length + 5));
                        br.Write((ushort)_picture256.Width);
                        br.Write((ushort)_picture256.Height);
                        br.Write((byte)11);
                        br.Write(encoded);
                    }
                    if (HasPalette16)
                    {
                        br.Write((ushort)0x3158);
                        throw new NotImplementedException();
                    }
                    return(ms.ToArray());
                }
        }
Ejemplo n.º 5
0
        public byte[] GetBytes()
        {
            using (MemoryStream output = new MemoryStream())
                using (BinaryWriter writer = new BinaryWriter(output))
                {
                    // GIF header
                    writer.Write("GIF89a".ToCharArray());

                    // Width x Height
                    writer.Write((ushort)_pixels.Width);
                    writer.Write((ushort)_pixels.Height);

                    // GCT Descriptor
                    writer.Write((byte)0xF7);

                    // Background colour #0
                    writer.Write((byte)0x00);

                    //Default pixel aspect ratio
                    writer.Write((byte)0x00);

                    // Write colour palette
                    for (int i = 0; i < 256; i++)
                    {
                        byte r = 0, g = 0, b = 0;
                        if (_palette.Length > i)
                        {
                            r = _palette[i].R;
                            g = _palette[i].G;
                            b = _palette[i].B;
                        }
                        writer.Write(new byte[] { r, g, b });
                    }

                    // Image Descriptor
                    writer.Write((byte)0x2C);
                    // NW Corner
                    writer.Write((ushort)0);
                    writer.Write((ushort)0);
                    // Width x Height
                    writer.Write((ushort)_pixels.Width);
                    writer.Write((ushort)_pixels.Height);
                    // No local colour table
                    writer.Write((byte)0x00);

                    byte[] encoded = LZW.Encode(_pixels.ToByteArray(), true, false, 12);

                    // Code length
                    writer.Write((byte)0x08);
                    foreach (byte[] byteBlock in ByteBlock(encoded))
                    {
                        writer.Write((byte)byteBlock.Length);
                        writer.Write(byteBlock);
                    }
                    writer.Write((byte)0x00);

                    // End of file
                    writer.Write((byte)0x3B);

                    return(output.ToArray());
                }
        }