Class HDGFLZW


  • public class HDGFLZW
    extends LZWDecompresser
    A decoder for the crazy LZW implementation used in Visio. According to VSDump, "it's a slightly perverted version of LZW compression, with inverted meaning of flag byte and 0xFEE as an 'initial shift'". It uses 12 bit codes (http://www.gnome.ru/projects/vsdump_en.html) Two good resources on LZW are: http://en.wikipedia.org/wiki/LZW http://marknelson.us/1989/10/01/lzw-data-compression/
    • Constructor Summary

      Constructors 
      Constructor Description
      HDGFLZW()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] compress​(java.io.InputStream src)
      Compress the given input stream, returning the array of bytes of the compressed input
      void compress​(java.io.InputStream src, java.io.OutputStream res)
      Performs the Visio compatible streaming LZW compression.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • HDGFLZW

        public HDGFLZW()
    • Method Detail

      • compress

        public byte[] compress​(java.io.InputStream src)
                        throws java.io.IOException
        Compress the given input stream, returning the array of bytes of the compressed input
        Parameters:
        src - the compression source byte
        Returns:
        the compressed stream as bytes
        Throws:
        java.io.IOException - when the InputStream can't be read
      • compress

        public void compress​(java.io.InputStream src,
                             java.io.OutputStream res)
                      throws java.io.IOException
        Performs the Visio compatible streaming LZW compression.
        Parameters:
        src - the input bytes for the compression
        res - the OutputStream which receives the compressed bytes
        Throws:
        java.io.IOException - when the InputStream can't be read or the OutputStream can't be written to