public void SetData(DataGridView dgvIndexed, ImagePaletteParameters parameters)
        {
            this.dgvIndexed = dgvIndexed;
            this.parameters = parameters;

            CreateMatchedColors();
            PaintPanel();
        }
        public ImagePaletteProcess(ImagePaletteParameters parameters)
        {
            Parameters = parameters;

            // Register for events when properties are modified
            Parameters.PropertyChanged += new PropertyChangedEventHandler(imagePaletteParameters_PropertyChanged);

            // Get the files to process
            FileNamesExpanded = new List<string>();
            GetFileNames();

            // Indexed from image
            DataTableIndexed = new DataTable(DataTableIndexedName);
            DataTableIndexed.Columns.AddRange(new DataColumn[] {
                new DataColumn(PaletteGridColumns.Color, typeof(Color)),
                new DataColumn(PaletteGridColumns.R, typeof(int)),
                new DataColumn(PaletteGridColumns.G, typeof(int)),
                new DataColumn(PaletteGridColumns.B, typeof(int)),
                new DataColumn(PaletteGridColumns.A, typeof(int)),
                new DataColumn(PaletteGridColumns.Count, typeof(int)),
                new DataColumn(PaletteGridColumns.Percentage, typeof(double)),
                new DataColumn(PaletteGridColumns.Match, typeof(Color)),
                new DataColumn(PaletteGridColumns.Distance, typeof(double))
            });

            // Matched colors from image + palette
            DataTableMatched = new DataTable(DataTableMatchedName);
            DataTableMatched.Columns.AddRange(new DataColumn[] {
                new DataColumn(PaletteGridColumns.Color, typeof(Color)),
                new DataColumn(PaletteGridColumns.R, typeof(int)),
                new DataColumn(PaletteGridColumns.G, typeof(int)),
                new DataColumn(PaletteGridColumns.B, typeof(int)),
                new DataColumn(PaletteGridColumns.A, typeof(int)),
                new DataColumn(PaletteGridColumns.Count, typeof(int)),
                new DataColumn(PaletteGridColumns.Percentage, typeof(double))
            });

            // Loaded palette
            DataTableLoaded = new DataTable(DataTableLoadedName);
            DataTableLoaded.Columns.AddRange(new DataColumn[] {
                new DataColumn(PaletteGridColumns.Color, typeof(Color)),
                new DataColumn(PaletteGridColumns.R, typeof(int)),
                new DataColumn(PaletteGridColumns.G, typeof(int)),
                new DataColumn(PaletteGridColumns.B, typeof(int)),
                new DataColumn(PaletteGridColumns.A, typeof(int))
            });

            Results = new ImagePaletteResults(parameters);
        }
        private void buttonLoadSettings_Click(object sender, EventArgs e)
        {
            string fileName = "";

            if ((ModifierKeys & Keys.Control) == Keys.Control)
                fileName = sampleSettingsFile;
            else
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "XML|*.xml|All files|*.*";
                openFileDialog.Title = "Load Settings";
                openFileDialog.CheckFileExists = true;
                openFileDialog.Multiselect = false;
                openFileDialog.ShowDialog();

                fileName = openFileDialog.FileName;
            }

            if (!string.IsNullOrEmpty(fileName))
                parameters = (ImagePaletteParameters)Util.DeserializeFromXmlFile(fileName, parameters.GetType());
        }
        private void FormImagePalette_Load(object sender, EventArgs e)
        {
            // Set defaults
            parameters = new ImagePaletteParameters();
            #if DEBUG
            parameters = (ImagePaletteParameters)Util.DeserializeFromXmlFile(sampleSettingsFile, parameters.GetType());
            //parameters.FileNames = new List<string>(new string[] { @"C:\Users\Joao\Documents\Visual Studio 2012\Projects\ImagePalette\Resources\CCMG707.jpg" });
            //parameters.FileNameReference = @"C:\Users\Joao\Documents\Visual Studio 2012\Projects\ImagePalette\Resources\colors-blog-cr.csv";
            //parameters.FileNameOutput = @"C:\Users\Joao\Documents\Visual Studio 2012\Projects\ImagePalette\Resources\output.xml";
            #else
            parameters.Coverage = 100;
            parameters.Distance = 1000;
            parameters.ThresholdIndexed = 8;
            parameters.ThresholdMatched = 10;
            parameters.ExploreMode = true;
            #endif

            // Set UI bindings
            try
            {
                textBoxFileName.DataBindings.Add("Text", parameters, "FileNames");
                textBoxFileNameReference.DataBindings.Add("Text", parameters, "FileNameReference");
                numericUpDownCoverage.DataBindings.Add("Value", parameters, "Coverage");
                numericUpDownDistance.DataBindings.Add("Value", parameters, "Distance");
                numericUpDownThresholdIndexed.DataBindings.Add("Value", parameters, "ThresholdIndexed");
                numericUpDownThresholdMatched.DataBindings.Add("Value", parameters, "ThresholdMatched");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error setting bindings");
            }

            // Update remaining UI
            groupBoxReference.Enabled = !string.IsNullOrWhiteSpace(parameters.FileNameReference);
        }
 public ImagePaletteResults(ImagePaletteParameters parameters)
 {
     Parameters = parameters;
     FileResults = new DictionarySerializable<string, ImagePaletteResult>();
 }