Beispiel #1
0
        // 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 );*/
    }