public MainWindow()
        {
            InitializeComponent();

            // sample test code
            PerceptionLib.Color SampleInputColor = new PerceptionLib.Color();
            SampleInputColor.LA = 95.35070839;
            SampleInputColor.A  = -9;
            SampleInputColor.B  = 42.80004413;
            PerceptionLib.ColorRegion ColorValue = new PerceptionLib.ColorRegion();
            ColorValue = PerceptionLib.Color.ToFindColorRegion(SampleInputColor);
        }
        private void Button_Click_Refresh(object sender, RoutedEventArgs e)
        {
            if (dataView == null)
            {
                MessageBox.Show("Need to import data!");
                return;
            }

            if (cbFrom.SelectedIndex == -1 || cbTo.SelectedIndex == -1)
            {
                MessageBox.Show("Please select from and to variables");
                return;
            }

            ApplyFilters();

            cvHeatMap.Children.Clear();
            foreach (HeatMapData heatMapData in heatMap)
            {
                heatMapData.DataSize        = 0;
                heatMapData.DataSum         = 0;
                heatMapData.IsOutsideGammut = false;
            }

            foreach (DataRowView dataRowView in dataView)
            {
                var x_value     = Double.Parse(dataRowView[Settings.Default.XColumnName].ToString());
                var y_value     = Double.Parse(dataRowView[Settings.Default.YColumnName].ToString());
                int col         = (int)((HeatMapData.GRID_SIZE * (x_value + 100) / Settings.Default.DataMapWidth));
                int row         = HeatMapData.GRID_SIZE - (int)((HeatMapData.GRID_SIZE * (y_value + 100) / Settings.Default.DataMapHeight)) - 1;
                var heatMapData = heatMap[row, col];

                String IntensitySelection = (cbIntensity.SelectedItem as ComboBoxItem).Tag as String;
                if (IntensitySelection != "0")
                {
                    double intensity = Double.Parse(dataRowView["Fg_L"] as String);
                    if (IntensitySelection == "1" && intensity < 50)
                    {
                        continue;
                    }
                    if (IntensitySelection == "-1" && intensity >= 50)
                    {
                        continue;
                    }
                }

                // to slect a color from a perticular region

                PerceptionLib.Color ColorFromData = new PerceptionLib.Color();
                ColorFromData.LA = Double.Parse(dataRowView["Fg_L"] as String);
                ColorFromData.A  = Double.Parse(dataRowView["Fg_a"] as String);
                ColorFromData.B  = Double.Parse(dataRowView["Fg_b"] as String);

                PerceptionLib.ColorRegion RegionObj = PerceptionLib.Color.ToFindColorRegion(ColorFromData);
                //foreach (Object selecteditem in ListColorRegion.SelectedItems)
                //{
                //   String RegionSelection = (ListColorRegion.SelectedItems as ListBoxItem).Tag as String;
                //  if (RegionSelection != "0")
                //  {
                //    if (RegionSelection == "1" && RegionObj.RegionValue != 1)
                //      continue;
                //    if (RegionSelection == "2" && RegionObj.RegionValue != 2)
                //      continue;
                //    if (RegionSelection == "3" && RegionObj.RegionValue != 3)
                //      continue;
                //    if (RegionSelection == "4" && RegionObj.RegionValue != 4)
                //      continue;
                //    if (RegionSelection == "5" && RegionObj.RegionValue != 5)
                //      continue;
                //    if (RegionSelection == "6" && RegionObj.RegionValue != 6)
                //      continue;
                //  }
                //}

                string NuteralSelection = (cbNuetral.SelectedItem as ComboBoxItem).Tag as String;
                if (NuteralSelection != "0")
                {
                    if (NuteralSelection == "1" && RegionObj.NetralValueFlag != 0)
                    {
                        continue;
                    }
                    if (NuteralSelection == "-1" && RegionObj.NetralValueFlag == 0)
                    {
                        continue;
                    }
                }

                String RegionSel = (cbColorRegion.SelectedItem as ComboBoxItem).Tag as String;
                if (RegionSel != "0")
                {
                    if (RegionSel == "1" && RegionObj.RegionValue != 1)
                    {
                        continue;
                    }
                    if (RegionSel == "2" && RegionObj.RegionValue != 2)
                    {
                        continue;
                    }
                    if (RegionSel == "3" && RegionObj.RegionValue != 3)
                    {
                        continue;
                    }
                    if (RegionSel == "4" && RegionObj.RegionValue != 4)
                    {
                        continue;
                    }
                    if (RegionSel == "5" && RegionObj.RegionValue != 5)
                    {
                        continue;
                    }
                    if (RegionSel == "6" && RegionObj.RegionValue != 6)
                    {
                        continue;
                    }
                }

                heatMapData.DataSum += CalculateDistance(dataRowView, cbFrom.SelectedItem as String, cbTo.SelectedItem as String);
                heatMapData.DataSize++;
            }

            CorrectMap();
            DrawMap();
        }