Example #1
0
 public void feedTree(TableFq tfq) // créee un arbre à partir d'une table de frèquence
 {
     _tree.Clear();
     foreach (KeyValuePair <byte, int> kVal in tfq.getTable())
     {
         _tree.Add(new Nodes(kVal));
     }
 }
Example #2
0
        bool Huffman.IPlugin.Compress(ref Huffman.HuffmanData hf)
        {
            try
            {
                TableFq    tf     = new TableFq(hf.uncompressedData); // Création de la table de frèquence à partir des données d'entrée
                BinaryTree bnTree = new BinaryTree();                 // nouvel arbre binaire vide
                bnTree.feedTree(tf);                                  // initialisation de l'arbre avec la table de fréquence
                bnTree.computeTree();                                 //génération de l'arbre binaire final à partir des données qu'il contient
                HuffmanCode hfCode = new HuffmanCode();
                hfCode = bnTree.createHuffman();                      //génération d'un code huffman pour chaque byte différent des données d'entrée à l'aide de l'arbre binaire (stockage dans un dictionnaire)

                hf.sizeOfUncompressedData = hf.uncompressedData.Length;
                hf.frequency      = tf.getTable().ToList();
                hf.compressedData = hfCode.concat(hf.uncompressedData); /* compression à l'aide du code de Huffman. Stockage dans la structure HuffmanData
                                                                         * qui est échangée entre le plugin et le programme par le biais de MarshalByRefObject */
            }
            catch (Exception e)
            {
                return(false); // la compression a échouée si une exception est levée
            }
            return(true);
        }