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 { } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { double outputs = 0; DA.GetData(1, ref outputs); GH_GradientControl gc = (GH_GradientControl)this.Params.Input[0].Sources[0].Attributes.GetTopLevel.DocObject; bool reverse = Params.Input[0].Reverse; var colors = new GradientParser(gc) { Reverse = reverse }.GetDefaultColors(Convert.ToInt32(outputs)); DA.SetDataList(0, colors); }
private void ExtractGradients(List <GH_Gradient> gradients, List <object> gradientObjects, int paramIndex = 0) { if (gradientObjects.Count > 0 && gradientObjects[0] is GH_ObjectWrapper) { foreach (GH_ObjectWrapper wrapper in gradientObjects.OfType <GH_ObjectWrapper>()) { GH_GradientControl editor = wrapper.Value as GH_GradientControl; gradients.Add(editor.Gradient); } } else { var doc = OnPingDocument(); doc.Objects.OfType <GH_GradientControl>().Where(ao => Params.Input[paramIndex].DependsOn(ao)).ToList().ForEach(g => gradients.Add(g.Gradient)); } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { List <GH_Gradient> gradients = new List <GH_Gradient>(); List <object> gradientObjects = new List <object>(); bool showPresets = false; bool showEditor = true; DA.GetData("Show Presets", ref showPresets); DA.GetData("Show Editor", ref showEditor); DA.GetDataList("Gradient(s)", gradientObjects); if (gradientObjects.Count > 0 && gradientObjects[0] is GH_ObjectWrapper) { foreach (GH_ObjectWrapper wrapper in gradientObjects.OfType <GH_ObjectWrapper>()) { GH_GradientControl editor = wrapper.Value as GH_GradientControl; gradients.Add(editor.Gradient); } } else { var doc = OnPingDocument(); doc.Objects.OfType <GH_GradientControl>().Where(ao => Params.Input[0].DependsOn(ao)).ToList().ForEach(g => gradients.Add(g.Gradient)); } List <HUI_Gradient> presets = new List <HUI_Gradient>(); foreach (GH_Gradient g in gradients) { presets.Add(HUI_Gradient.FromGHGradient(g)); } HUI_GradientEditor hge = new HUI_GradientEditor(showPresets, showEditor, presets); DA.SetData("Gradient Editor", new UIElement_Goo(hge, "Gradient Editor", InstanceGuid, DA.Iteration)); }
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 { } }