public static RgbProcessor FromXML(XmlElement elem)
        {
            CurveAdjustProcessor pro = new CurveAdjustProcessor();

            pro._actualArg = new CurveAdjustProcessorArg();
            switch (elem.ChildNodes[0].Name.ToString())
            {
            case "RGB":
                pro._actualArg.RGB.Values = new byte[elem.ChildNodes[0].ChildNodes.Count];
                break;

            case "Red":
                pro._actualArg.Red.Values = new byte[elem.ChildNodes[0].ChildNodes.Count];
                break;

            case "Green":
                pro._actualArg.Green.Values = new byte[elem.ChildNodes[0].ChildNodes.Count];
                break;

            case "Blue":
                pro._actualArg.Blue.Values = new byte[elem.ChildNodes[0].ChildNodes.Count];
                break;
            }
            for (int i = 0; i < elem.ChildNodes[0].ChildNodes.Count; i++)
            {
                switch (elem.ChildNodes[0].Name.ToString())
                {
                case "RGB":
                    pro._actualArg.RGB.Values[i] = Convert.ToByte(elem.ChildNodes[0].ChildNodes[i].InnerText);
                    break;

                case "Red":
                    pro._actualArg.Red.Values[i] = Convert.ToByte(elem.ChildNodes[0].ChildNodes[i].InnerText);
                    break;

                case "Green":
                    pro._actualArg.Green.Values[i] = Convert.ToByte(elem.ChildNodes[0].ChildNodes[i].InnerText);
                    break;

                case "Blue":
                    pro._actualArg.Blue.Values[i] = Convert.ToByte(elem.ChildNodes[0].ChildNodes[i].InnerText);
                    break;
                }
            }
            pro.Arguments = pro._actualArg;
            return(pro);
        }
        public static RgbProcessor FromXML(XmlElement elem)
        {
            CurveAdjustProcessor pro = new CurveAdjustProcessor();

            pro._actualArg = new CurveAdjustProcessorArg();
            for (int i = 0; i < elem.ChildNodes.Count; i++)
            {
                XmlNode node = elem.ChildNodes[i];
                switch (node.Name)
                {
                case "RGB":
                    pro._actualArg.RGB.Values = new byte[node.ChildNodes.Count];
                    for (int j = 0; j < node.ChildNodes.Count; j++)
                    {
                        pro._actualArg.RGB.Values[j] = Convert.ToByte(node.ChildNodes[j].InnerText);
                    }
                    break;

                case "Red":
                    pro._actualArg.Red.Values = new byte[node.ChildNodes.Count];
                    for (int j = 0; j < node.ChildNodes.Count; j++)
                    {
                        pro._actualArg.Red.Values[j] = Convert.ToByte(node.ChildNodes[j].InnerText);
                    }
                    break;

                case "Green":
                    pro._actualArg.Green.Values = new byte[node.ChildNodes.Count];
                    for (int j = 0; j < node.ChildNodes.Count; j++)
                    {
                        pro._actualArg.Green.Values[j] = Convert.ToByte(node.ChildNodes[j].InnerText);
                    }
                    break;

                case "Blue":
                    pro._actualArg.Blue.Values = new byte[node.ChildNodes.Count];
                    for (int j = 0; j < node.ChildNodes.Count; j++)
                    {
                        pro._actualArg.Blue.Values[j] = Convert.ToByte(node.ChildNodes[j].InnerText);
                    }
                    break;
                }
            }
            pro.Arguments = pro._actualArg;
            return(pro);
        }