/// <summary>
 /// Get the needed data of the file
 /// </summary>
 /// <param name="file">The file to use</param>
 /// <param name="type">Type of the file</param>
 /// <returns></returns>
 private string GenerateData(string file, ImageType type)
 {
     try
     {
         Bitmap    bitmap = new Bitmap(file);
         Histogram h      = new Histogram(bitmap);
         long[]    a      = h.GetData("LUM");
         bitmap.Dispose();
         String output = "";
         foreach (long i in a)
         {
             output += i + ",";
         }
         output += type.ToString();
         filesDone++;
         PartProcessed?.Invoke(filesDone + "/" + this.fileAmount + " Added " + file);
         return(output);
     }
     catch (Exception e)
     {
         filesDone++;
         PartProcessed?.Invoke(filesDone + "/" + this.fileAmount + " Error using " + file);
         Console.WriteLine("Error making histogram from image " + e);
         return(null);
     }
 }
        /// <summary>
        /// Create a basic weka file
        /// </summary>
        private void CreateFile()
        {
            using (StreamWriter file = File.AppendText(Location))
            {
                file.WriteLine("@relation ClipartClassifier");
                for (int i = 0; i <= 255; i++)
                {
                    file.WriteLine("@attribute " + i + " numeric");
                }
                file.WriteLine("@attribute type {Clipart, Normal}");
                file.WriteLine("@DATA");
            }

            PartProcessed?.Invoke("Created file at " + Location);
        }
        /// <summary>
        /// generate the data using the files in the lists
        /// </summary>
        public void Generate()
        {
            CreateFile();
            this.filesDone  = 0;
            this.fileAmount = this.Files[ImageType.Normal].Count + this.Files[ImageType.Clipart].Count;

            foreach (string file in this.Files[ImageType.Normal])
            {
                AddDataToFile(GenerateData(file, ImageType.Normal));
            }

            foreach (string file in this.Files[ImageType.Clipart])
            {
                AddDataToFile(GenerateData(file, ImageType.Clipart));
            }

            PartProcessed?.Invoke("Finished");
        }