private bool PassesSwitchAllTest(ISvgTests element)
        {
            SvgDocument ownerDocument = ((SvgElement)element).OwnerDocument;

            bool requiredFeatures = true;

            if (element.RequiredFeatures.NumberOfItems > 0)
            {
                foreach (string req in element.RequiredFeatures)
                {
                    if (!ownerDocument.Supports(req, string.Empty))
                    {
                        requiredFeatures = false;
                        break;
                    }
                }
            }
            if (!requiredFeatures)
            {
                return(false);
            }

            bool requiredExtensions = true;

            if (element.RequiredExtensions.NumberOfItems > 0)
            {
                foreach (string req in element.RequiredExtensions)
                {
                    if (!ownerDocument.Supports(req, string.Empty))
                    {
                        requiredExtensions = false;
                        break;
                    }
                }
            }
            if (!requiredExtensions)
            {
                return(false);
            }

            bool systemLanguage = true;

            if (element.SystemLanguage.NumberOfItems > 0)
            {
                systemLanguage = false;
                // TODO: or if one of the languages indicated by user preferences exactly
                // equals a prefix of one of the languages given in the value of this
                // parameter such that the first tag character following the prefix is "-".

                foreach (string req in element.SystemLanguage)
                {
                    if (string.Equals(req, _currentLang, StringComparison.OrdinalIgnoreCase))
                    {
                        systemLanguage = true;
                    }
                }
            }

            return(systemLanguage);
        }
Example #2
0
        private bool passesAllTest(ISvgTests element)
        {
            SvgDocument ownerDocument = ((SvgElement)element).OwnerDocument;
            if(element.RequiredFeatures.NumberOfItems>0)
            {
                foreach(string req in (SvgStringList)element.RequiredFeatures)
                {
                    if(!ownerDocument.Supports(req, String.Empty)) return false;
                }
            }

            if(element.RequiredExtensions.NumberOfItems>0)
            {
                foreach(string req in (SvgStringList)element.RequiredExtensions)
                {
                    if(!ownerDocument.Supports(req, String.Empty)) return false;
                }
            }
            if(element.SystemLanguage.NumberOfItems>0)
            {
                // TODO: or if one of the languages indicated by user preferences exactly equals a prefix of one of the languages given in the value of this parameter such that the first tag character following the prefix is "-".
                bool found = false;
                string currentLang = System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName;

                foreach(string req in (SvgStringList)element.SystemLanguage)
                {
                    if(req == currentLang) found = true;
                }
                if(!found) return false;
            }
            return true;
        }
Example #3
0
        public override void RenderChildren(ISvgRenderer renderer)
        {
            // search through all child elements and find one that passes all tests
            foreach (XmlNode node in ChildNodes)
            {
                SvgElement element      = node as SvgElement;
                ISvgTests  testsElement = node as ISvgTests;
                if (element != null && testsElement != null && passesAllTest(testsElement))
                {
                    element.Render(renderer);

                    // make sure we only render the first element that passes
                    break;
                }
            }
        }
Example #4
0
        private bool passesAllTest(ISvgTests element)
        {
            SvgDocument ownerDocument = ((SvgElement)element).OwnerDocument;

            if (element.RequiredFeatures.NumberOfItems > 0)
            {
                foreach (string req in (SvgStringList)element.RequiredFeatures)
                {
                    if (!ownerDocument.Supports(req, String.Empty))
                    {
                        return(false);
                    }
                }
            }

            if (element.RequiredExtensions.NumberOfItems > 0)
            {
                foreach (string req in (SvgStringList)element.RequiredExtensions)
                {
                    if (!ownerDocument.Supports(req, String.Empty))
                    {
                        return(false);
                    }
                }
            }
            if (element.SystemLanguage.NumberOfItems > 0)
            {
                // TODO: or if one of the languages indicated by user preferences exactly equals a prefix of one of the languages given in the value of this parameter such that the first tag character following the prefix is "-".
                bool   found       = false;
                string currentLang = System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName;

                foreach (string req in (SvgStringList)element.SystemLanguage)
                {
                    if (req == currentLang)
                    {
                        found = true;
                    }
                }
                if (!found)
                {
                    return(false);
                }
            }
            return(true);
        }
        private void RenderSwitchChildren(ISvgElement svgElement)
        {
            // search through all child elements and find one that passes all tests
            foreach (XmlNode node in svgElement.ChildNodes)
            {
                if (node.NodeType != XmlNodeType.Element)
                {
                    continue;
                }

                SvgElement element      = node as SvgElement;
                ISvgTests  testsElement = node as ISvgTests;
                if (element != null && testsElement != null && PassesSwitchAllTest(testsElement))
                {
                    this.Render(element);

                    // make sure we only render the first element that passes
                    break;
                }
            }
        }
        private bool PassesSwitchAllTest(ISvgTests element)
        {
            SvgDocument ownerDocument = ((SvgElement)element).OwnerDocument;

            bool requiredFeatures = true;
            if (element.RequiredFeatures.NumberOfItems > 0)
            {
                foreach (string req in element.RequiredFeatures)
                {
                    if (!ownerDocument.Supports(req, String.Empty))
                    {
                        requiredFeatures = false;
                        break;
                    }
                }
            }
            if (!requiredFeatures)
            {
                return false;
            }

            bool requiredExtensions = true;
            if (element.RequiredExtensions.NumberOfItems > 0)
            {
                foreach (string req in element.RequiredExtensions)
                {
                    if (!ownerDocument.Supports(req, String.Empty))
                    {
                        requiredExtensions = false;
                        break;
                    }
                }
            }
            if (!requiredExtensions)
            {
                return false;
            }

            bool systemLanguage = true;
            if (element.SystemLanguage.NumberOfItems > 0)
            {
                systemLanguage = false;
                // TODO: or if one of the languages indicated by user preferences exactly
                // equals a prefix of one of the languages given in the value of this
                // parameter such that the first tag character following the prefix is "-".

                foreach (string req in element.SystemLanguage)
                {
                    if (String.Equals(req, _currentLang, StringComparison.OrdinalIgnoreCase))
                    {
                        systemLanguage = true;
                    }
                }
            }

            return systemLanguage;
        }