private void GenerateLegendValues(
            IGH_DataAccess DA,
            GH_Gradient gradient,
            double max,
            double min,
            int segments
            )
        {
            if (max <= min)
            {
                return;
            }

            var colors   = new List <Color>();
            var values   = new List <double>();
            var stepSize = (max - min) / segments;

            for (var i = min; i <= max; i += stepSize)
            {
                colors.Add(gradient.ColourAt(i));
                values.Add(i);
            }

            DA.SetDataList(1, colors);
            DA.SetDataList(2, values);
        }
Esempio n. 2
0
        public GradientParser(GH_GradientControl gradientControl = null)
        {
            if (gradientControl != null)
            {
                Gradient = gradientControl.Gradient;
            }
            else
            {
                Gradient = GH_Gradient.Heat();
            }

            List <double> gripsParameters;
            List <Color>  gripsColourLeft;
            List <Color>  gripsColourRight;



            try
            {
                //this.Params.Input[0].Sources[0].Sources[0];



                var param = (GH_PersistentParam <GH_Number>)gradientControl.Params.Input[2];
                if (param.VolatileData.IsEmpty)
                {
                    param.PersistentData.Append(new GH_Number(1.0));

                    param.ExpireSolution(true);
                    return;
                }

                bool isLinear  = Gradient.Linear;
                bool isLocked  = Gradient.Locked;
                int  gripCount = Gradient.GripCount;

                var parameters  = new List <double>();
                var colourLeft  = new List <Color>();
                var colourRight = new List <Color>();

                for (var i = 0; i < Gradient.GripCount; i++)
                {
                    parameters.Add(Gradient[i].Parameter);
                    colourLeft.Add(Gradient[i].ColourLeft);
                    colourRight.Add(Gradient[i].ColourRight);
                }
                gripsParameters  = parameters;
                gripsColourLeft  = colourLeft;
                gripsColourRight = colourRight;
            }
            catch
            {
            }
        }
        // X. Extra additional useful functions
        // X.01 Gradient maker
        private GH_Gradient Gradients(Color[] colorarray, double t0, double t1)
        {
            GH_Gradient gradient2 = new GH_Gradient();

            for (int i = 0; i < colorarray.Count(); i++)
            {
                double grip =
                    t0 + (double)i * (t1 - t0) /
                    (colorarray.Count() - 1); //fix 10.10.17 add t0, to rescale the gradient grip
                gradient2.AddGrip(grip, colorarray[i]);
            }

            return(gradient2);
        }
Esempio n. 4
0
        public static HUI_Gradient FromGHGradient(GH_Gradient g)
        {
            List <Color>  cols  = new List <Color>();
            List <double> ts    = new List <double>();
            var           gType = typeof(GH_Gradient);

            var Flags = BindingFlags.Instance
                        | BindingFlags.GetProperty
                        | BindingFlags.SetProperty
                        | BindingFlags.GetField
                        | BindingFlags.SetField
                        | BindingFlags.NonPublic;

            var fields     = gType.GetFields(Flags);
            var gripsField = fields.Where(f => f.Name == "m_grips").FirstOrDefault();
            var grips      = gripsField.GetValue(g) as List <GH_Grip>;

            foreach (var grip in grips)
            {
                cols.Add(HUI_Util.ToMediaColor(grip.ColourLeft));
                ts.Add(grip.Parameter);
            }
            return(new HUI_Gradient(ts, cols));
        }
Esempio n. 5
0
        public GradientParser(GH_GradientControl gradientControl = null)
        {
            if (gradientControl != null)
            {
                Gradient = gradientControl.Gradient;
            }
            else
            {
                Gradient = GH_Gradient.Heat();
            }

            List <double> gripsParameters;
            List <Color>  gripsColourLeft;
            List <Color>  gripsColourRight;



            try
            {
                //this.Params.Input[0].Sources[0].Sources[0];



                var param = (GH_PersistentParam <GH_Number>)gradientControl.Params.Input[2];
                if (param.VolatileData.IsEmpty)
                {
                    param.PersistentData.Append(new GH_Number(1.0));

                    param.ExpireSolution(true);
                    return;
                }


                GH_Structure <GH_Number> gradientFirstInput = (GH_Structure <GH_Number>)gradientControl.Params.Input[0].VolatileData;

                Min = gradientFirstInput[0][0].Value;

                GH_Structure <GH_Number> gradientSecondInput = (GH_Structure <GH_Number>)gradientControl.Params.Input[1].VolatileData;

                Max = gradientSecondInput[0][0].Value;



                //GH_PersistentParam<GH_Number> minCast = (GH_PersistentParam<GH_Number>)gradientControl.Params.Input[0].VolatileData.AllData(false).First();

                //foreach (var item in minCast.VolatileData.AllData(false))
                //{
                //    bool casted = item.CastTo(out GH_Number number);
                //    if (casted) Min = number.Value;
                //}

                //GH_PersistentParam<GH_Number> maxCast = (GH_PersistentParam<GH_Number>)gradientControl.Params.Input[1].VolatileData.AllData(false).First();

                //foreach (var item in maxCast.VolatileData.AllData(false))
                //{
                //    bool casted = item.CastTo(out GH_Number number);
                //    if (casted) Max = number.Value;
                //}



                bool isLinear  = Gradient.Linear;
                bool isLocked  = Gradient.Locked;
                int  gripCount = Gradient.GripCount;

                var parameters  = new List <double>();
                var colourLeft  = new List <Color>();
                var colourRight = new List <Color>();

                for (var i = 0; i < Gradient.GripCount; i++)
                {
                    parameters.Add(Gradient[i].Parameter);
                    colourLeft.Add(Gradient[i].ColourLeft);
                    colourRight.Add(Gradient[i].ColourRight);
                }
                gripsParameters  = parameters;
                gripsColourLeft  = colourLeft;
                gripsColourRight = colourRight;
            }
            catch
            {
            }
        }