/// <summary>
        /// Creates the appropriate OpenGLDrawingProvider from a file string
        /// </summary>
        /// <param name="providerFileString">The file string to parse</param>
        /// <returns>The OpenGLDrawingProvider</returns>
        public static IOpenGLDrawingProvider InstantiateFromString(string providerFileString)
        {
            //The elements in the provider file-strings are separated by semicolons
            string[] providerElements = providerFileString.Split(';');
            if (providerElements.Length < 1)
            {
                throw new ApplicationException("String does not represent an OpenGLDrawingProvider");
            }
            else if (providerElements.Length == 1)
            {
                //this may be an empty provider!
                if (providerElements[0] == "?")
                {
                    return(null);
                }
                else
                {
                    throw new ApplicationException("String does not represent an OpenGLDrawingProvider");
                }
            }
            //Check which provider we are dealing with, instantiate it and let it populate itself
            IOpenGLDrawingProvider retval;

            switch (providerElements[0])
            {
            case "OneColor":
                retval = new OneColorProvider();
                retval.FromFileString(providerFileString);
                return(retval);

            case "FourSquare":
                retval = new FourSquareProvider();
                retval.FromFileString(providerFileString);
                return(retval);

            case "Circle":
                retval = new CircleProvider();
                retval.FromFileString(providerFileString);
                return(retval);

            case "LinGrad":
                retval = new LinGradientProvider();
                retval.FromFileString(providerFileString);
                return(retval);

            default:
                throw new ApplicationException("Could not recognize drawing provider");
            }
        }