// char[] trimChars = "1234567890+ ABCDEFGHJKLMNOPQRSTUWXYZ".ToCharArray(); void InitializeCompareArray() { var path = Params.EditorResourcesPath + "/.ColorGradients.data"; if (gradientDataArray == null) { gradientDataArray = new GradiendDataArray() { list = new List <GradiendData>() } } ; if (File.Exists(path)) { using (StreamReader sr = new StreamReader(path)) { while (!sr.EndOfStream) { var data = sr.ReadLine().Split(':'); gradientDataArray.list.Add(new GradiendData() { name = data[0], bright = double.Parse(data[1]), hue = double.Parse(data[2]), compareToFirst = double.Parse(data[3]), }); } } } name_to_index.Clear(); default_gradients.Clear(); hue_gradients.Clear(); bright_gradients.Clear(); compareToFirst_gradients.Clear(); inverse_default_gradients.Clear(); inverse_hue_gradients.Clear(); inverse_bright_gradients.Clear(); inverse_compareToFirst_gradients.Clear(); for (int i = 0; i < gradients.Length; i++) { name_to_index.Add(gradients[i].name, i); // var n = gradients[i].name.TrimEnd( trimChars ); // name_to_filterstring.Add( gradients[i].name, n ); // if (!filtername_to_filterindex.ContainsKey( n )) filtername_to_filterindex.Add( n, (filtername_to_filterindex.Count + 1) / 4 ); default_gradients.Add(new GradiendData() { name = gradients[i].name, gradientTexture = gradients[i] }); } //read data for unplussed textures for (int i = 0; i < gradientDataArray.list.Count; i++) { var data = gradientDataArray.list[i]; if (!name_to_index.ContainsKey(data.name)) { continue; } data.gradientTexture = gradients[name_to_index[data.name]]; hue_gradients.Add(data); bright_gradients.Add(data); compareToFirst_gradients.Add(data); } //sort unplussed textures hue_gradients.Sort((a, b) => Sign(b.hue, a.hue)); bright_gradients.Sort((a, b) => Sign(b.bright, a.bright)); compareToFirst_gradients.Sort((a, b) => Sign(b.compareToFirst, a.compareToFirst)); inverse_default_gradients = default_gradients.Reverse <GradiendData>().ToList(); inverse_hue_gradients = hue_gradients.Reverse <GradiendData>().ToList(); inverse_bright_gradients = bright_gradients.Reverse <GradiendData>().ToList(); inverse_compareToFirst_gradients = compareToFirst_gradients.Reverse <GradiendData>().ToList(); //add plussed textures to sorted unplussed /*AddPlusesTextures( ref hue_gradients ); * AddPlusesTextures( ref bright_gradients ); * AddPlusesTextures( ref compareToFirst_gradients );*/ } /*void AddPlusesTextures(ref List<GradiendData> array) * { * for (int i = 0 ; i < array.Count ; i++) * { * var target = array[i].name + " +"; * while (name_to_index.ContainsKey( target )) * { * var t = gradients[name_to_index[target]]; * array.Insert( i, array[i] ); * i++; * var data = array[i]; * data.gradientTexture = t; * array[i] = data; * target += '+'; * } * } * }*/ int Sign(double a, double b) { if (a > b) { return(1); } if (a < b) { return(-1); } return(0); } // Dictionary<string,int> filtername_to_filterindex = new Dictionary<string, int>(); // Dictionary<string,string> name_to_filterstring = new Dictionary<string, string>(); Dictionary <string, int> name_to_index = new Dictionary <string, int>(); List <GradiendData> default_gradients = new List <GradiendData>(); List <GradiendData> hue_gradients = new List <GradiendData>(); List <GradiendData> bright_gradients = new List <GradiendData>(); List <GradiendData> compareToFirst_gradients = new List <GradiendData>(); List <GradiendData> inverse_default_gradients = new List <GradiendData>(); List <GradiendData> inverse_hue_gradients = new List <GradiendData>(); List <GradiendData> inverse_bright_gradients = new List <GradiendData>(); List <GradiendData> inverse_compareToFirst_gradients = new List <GradiendData>(); string[] sotrNames = new string[] { "Name", "Saturate", "Warming", "Content" };
// char[] trimChars = "1234567890+ ABCDEFGHJKLMNOPQRSTUWXYZ".ToCharArray(); void InitializeCompareArray() { var path = Params.EditorResourcesPath + "/.ColorGradients.data"; if (gradientDataArray == null) gradientDataArray = new GradiendDataArray() { list = new List<GradiendData>() }; if (File.Exists( path )) { using (StreamReader sr = new StreamReader( path )) { while (!sr.EndOfStream) { var data = sr.ReadLine().Split(':'); gradientDataArray.list.Add( new GradiendData() { name = data[0], bright = double.Parse( data[1] ), hue = double.Parse( data[2] ), compareToFirst = double.Parse( data[3] ), } ); } } } name_to_index.Clear(); default_gradients.Clear(); hue_gradients.Clear(); bright_gradients.Clear(); compareToFirst_gradients.Clear(); inverse_default_gradients.Clear(); inverse_hue_gradients.Clear(); inverse_bright_gradients.Clear(); inverse_compareToFirst_gradients.Clear(); for (int i = 0 ; i < gradients.Length ; i++) { name_to_index.Add( gradients[i].name, i ); // var n = gradients[i].name.TrimEnd( trimChars ); // name_to_filterstring.Add( gradients[i].name, n ); // if (!filtername_to_filterindex.ContainsKey( n )) filtername_to_filterindex.Add( n, (filtername_to_filterindex.Count + 1) / 4 ); default_gradients.Add( new GradiendData() { name = gradients[i].name, gradientTexture = gradients[i] } ); } //read data for unplussed textures for (int i = 0 ; i < gradientDataArray.list.Count ; i++) { var data = gradientDataArray.list[i]; if (!name_to_index.ContainsKey( data.name )) continue; data.gradientTexture = gradients[name_to_index[data.name]]; hue_gradients.Add( data ); bright_gradients.Add( data ); compareToFirst_gradients.Add( data ); } //sort unplussed textures hue_gradients.Sort( (a, b) => Sign( b.hue, a.hue ) ); bright_gradients.Sort( (a, b) => Sign( b.bright, a.bright ) ); compareToFirst_gradients.Sort( (a, b) => Sign( b.compareToFirst, a.compareToFirst ) ); inverse_default_gradients = default_gradients.Reverse<GradiendData>().ToList(); inverse_hue_gradients = hue_gradients.Reverse<GradiendData>().ToList(); inverse_bright_gradients = bright_gradients.Reverse<GradiendData>().ToList(); inverse_compareToFirst_gradients = compareToFirst_gradients.Reverse<GradiendData>().ToList(); //add plussed textures to sorted unplussed /*AddPlusesTextures( ref hue_gradients ); AddPlusesTextures( ref bright_gradients ); AddPlusesTextures( ref compareToFirst_gradients );*/ }