Exemplo n.º 1
0
        public unsafe Config SaveCurrentScreenColorToConfig(string configName)
        {
            List <Config> configs        = _configService.GetConfigs();
            Config        configToModify = configs.FirstOrDefault(x => x.ConfigName == configName);

            if (configToModify == null)             //If the config doesn't exist
            {
                configToModify = new Config()
                {
                    ConfigName = configName == "" ? "config" : configName,
                    Monitors   = new List <Monitor>(),
                    Order      = configs.Count
                };
            }
            else             //If the config already exists
            {
                if (MessageBox.Show($"Are you sure you want to erase this config: {configName}?", "", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                {
                    configToModify.Monitors = new List <Monitor>();
                }
                else
                {
                    return(null);
                }
            }

            List <Monitor> monitors = _monitorService.GetMonitorsExceptAllMonitorsInOne();

            foreach (Monitor monitor in monitors)
            {
                ushort *gArray = stackalloc ushort[3 * 256];

                bool retVal = GetDeviceGammaRamp(monitor.Hdc.ToInt32(), gArray); //Get screen data

                if (retVal)                                                      //If it' ok
                {
                    List <ushort> rgb = new List <ushort>();

                    for (int i = 0; i < 256 * 3; i++)
                    {
                        rgb.Add(gArray[i]);
                    }

                    configToModify.Monitors.Add(new Monitor()
                    {
                        Name = monitor.Name,
                        Rgb  = rgb.ToArray()
                    });
                }
                else
                {
                    MessageBox.Show("Can't get screen data. \r\nTry again or restart application.", "Error");

                    return(null);
                }
            }

            return(_configService.SaveConfig(configToModify));
        }