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); }
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); }
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)); }
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 { } }