//==========================================================================
        public SvgGradientBaseElement(SvgDocument document, SvgBaseElement parent, XElement gradientElement)
            : base(document, parent, gradientElement)
        {
            XAttribute gradient_units_attribute = gradientElement.Attribute("gradientUnits");
              if(gradient_units_attribute != null)
            switch(gradient_units_attribute.Value)
            {
              case "objectBoundingBox":
            GradientUnits = SvgGradientUnits.ObjectBoundingBox;
            break;

              case "userSpaceOnUse":
            GradientUnits = SvgGradientUnits.UserSpaceOnUse;
            break;

              default:
            throw new NotImplementedException(String.Format("gradientUnits value '{0}' is no supported", gradient_units_attribute.Value));
            }

              XAttribute gradient_transform_attribute = gradientElement.Attribute("gradientTransform");
              if(gradient_transform_attribute != null)
            Transform = SvgTransform.Parse(gradient_transform_attribute.Value);

              XAttribute spread_method_attribute = gradientElement.Attribute("spreadMethod");
              if(spread_method_attribute != null)
               switch(spread_method_attribute.Value)
               {
             case "pad":
               SpreadMethod = SvgSpreadMethod.Pad;
               break;

             case "reflect":
               SpreadMethod = SvgSpreadMethod.Reflect;
               break;

             case "repeat":
               SpreadMethod = SvgSpreadMethod.Repeat;
               break;
               }

              foreach(XElement element in from element in gradientElement.Elements()
                                  where element.Name.NamespaceName == "http://www.w3.org/2000/svg"
                                  select element)
            switch(element.Name.LocalName)
            {
              case "stop":
            Stops.Add(new SvgStopElement(Document, this, element));
            break;

              default:
            throw new NotImplementedException(String.Format("Unhandled element: {0}", element));
            }
        }
        //==========================================================================
        public SvgGradientBaseElement(SvgDocument document, SvgBaseElement parent, XElement gradientElement)
            : base(document, parent, gradientElement)
        {
            XAttribute gradient_units_attribute = gradientElement.Attribute("gradientUnits");

            if (gradient_units_attribute != null)
            {
                switch (gradient_units_attribute.Value)
                {
                case "objectBoundingBox":
                    GradientUnits = SvgGradientUnits.ObjectBoundingBox;
                    break;

                case "userSpaceOnUse":
                    GradientUnits = SvgGradientUnits.UserSpaceOnUse;
                    break;

                default:
                    throw new NotImplementedException(String.Format("gradientUnits value '{0}' is no supported", gradient_units_attribute.Value));
                }
            }

            XAttribute gradient_transform_attribute = gradientElement.Attribute("gradientTransform");

            if (gradient_transform_attribute != null)
            {
                Transform = SvgTransform.Parse(gradient_transform_attribute.Value);
            }

            XAttribute spread_method_attribute = gradientElement.Attribute("spreadMethod");

            if (spread_method_attribute != null)
            {
                switch (spread_method_attribute.Value)
                {
                case "pad":
                    SpreadMethod = SvgSpreadMethod.Pad;
                    break;

                case "reflect":
                    SpreadMethod = SvgSpreadMethod.Reflect;
                    break;

                case "repeat":
                    SpreadMethod = SvgSpreadMethod.Repeat;
                    break;
                }
            }



            foreach (XElement element in from element in gradientElement.Elements()
                     where element.Name.NamespaceName == "http://www.w3.org/2000/svg"
                     select element)
            {
                switch (element.Name.LocalName)
                {
                case "stop":
                    Stops.Add(new SvgStopElement(Document, this, element));
                    break;

                default:
                    throw new NotImplementedException(String.Format("Unhandled element: {0}", element));
                }
            }
        }