示例#1
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
            {
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
 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));
        }
示例#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
            {
            }
        }