Пример #1
0
        public CssRule CreateMedia(CssToken current)
        {
            var rule  = new CssMediaRule(_parser);
            var token = NextToken();

            CollectTrivia(ref token);
            FillMediaList(rule.Media, CssTokenType.CurlyBracketOpen, ref token);
            CollectTrivia(ref token);

            if (token.Type != CssTokenType.CurlyBracketOpen)
            {
                while (token.Type != CssTokenType.Eof)
                {
                    if (token.Type == CssTokenType.Semicolon)
                    {
                        return(null);
                    }
                    else if (token.Type == CssTokenType.CurlyBracketOpen)
                    {
                        break;
                    }

                    token = NextToken();
                }
            }

            FillRules(rule);
            return(rule);
        }
Пример #2
0
        public CssRule CreateMedia(CssToken current)
        {
            var rule  = new CssMediaRule(_parser);
            var start = current.Position;
            var token = NextToken();

            _nodes.Push(rule);
            CollectTrivia(ref token);
            FillMediaList(rule.Media, CssTokenType.CurlyBracketOpen, ref token);
            CollectTrivia(ref token);

            if (token.Type != CssTokenType.CurlyBracketOpen)
            {
                while (token.Type != CssTokenType.EndOfFile)
                {
                    if (token.Type == CssTokenType.Semicolon)
                    {
                        _nodes.Pop();
                        return(null);
                    }
                    else if (token.Type == CssTokenType.CurlyBracketOpen)
                    {
                        break;
                    }

                    token = NextToken();
                }
            }

            var end = FillRules(rule);

            rule.SourceCode = CreateView(start, end);
            _nodes.Pop();
            return(rule);
        }
Пример #3
0
    protected virtual CssStyleDeclaration getCSD(bool readOnly)
    {
        CssStyleSheet ss      = new CssStyleSheet(null, "", "", "", null, CssStyleSheetType.Author);
        CssRule       rule    = new CssMediaRule("", ss, false, new string[0], CssStyleSheetType.Author);
        string        cssText = "{length: \n23cm	 !important;foo:		bar;}";

        return(new CssStyleDeclaration(ref cssText, rule, readOnly, CssStyleSheetType.Author));
    }
Пример #4
0
        /// <summary>
        /// Wraps a
        /// <see cref="iText.StyledXmlParser.Css.Media.CssMediaRule"/>
        /// into the style sheet if the head child element has a media attribute.
        /// </summary>
        /// <param name="headChildElement">the head child element</param>
        /// <param name="styleSheet">the style sheet</param>
        /// <returns>the css style sheet</returns>
        private CssStyleSheet WrapStyleSheetInMediaQueryIfNecessary(IElementNode headChildElement, CssStyleSheet styleSheet
                                                                    )
        {
            String mediaAttribute = headChildElement.GetAttribute(AttributeConstants.MEDIA);

            if (mediaAttribute != null && mediaAttribute.Length > 0)
            {
                CssMediaRule mediaRule = new CssMediaRule(mediaAttribute);
                mediaRule.AddStatementsToBody(styleSheet.GetStatements());
                styleSheet = new CssStyleSheet();
                styleSheet.AddStatement(mediaRule);
            }
            return(styleSheet);
        }
Пример #5
0
        private CssMediaRule CreateMedia(CssMediaRule rule, CssToken current)
        {
            var token = NextToken();

            CollectTrivia(ref token);
            var media = GetArgument(ref token);

            rule.Media.SetMediaText(media, throwOnError: false);
            CollectTrivia(ref token);

            while (token.IsNot(CssTokenType.EndOfFile, CssTokenType.CurlyBracketOpen))
            {
                if (token.Type == CssTokenType.Semicolon)
                {
                    return(null);
                }

                token = NextToken();
            }

            FillRules(rule);
            return(rule);
        }
Пример #6
0
        private ICssRule CreateAtRule(ICssStyleSheet sheet, CssToken token)
        {
            if (token.Data.Is(RuleNames.Media))
            {
                var rule = new CssMediaRule(sheet);
                return(CreateMedia(rule, token));
            }
            else if (token.Data.Is(RuleNames.FontFace))
            {
                var rule = new CssFontFaceRule(sheet);
                return(CreateFontFace(rule, token));
            }
            else if (token.Data.Is(RuleNames.Keyframes))
            {
                var rule = new CssKeyframesRule(sheet);
                return(CreateKeyframes(rule, token));
            }
            else if (token.Data.Is(RuleNames.Import))
            {
                var rule = new CssImportRule(sheet);
                return(CreateImport(rule, token));
            }
            else if (token.Data.Is(RuleNames.Charset))
            {
                var rule = new CssCharsetRule(sheet);
                return(CreateCharset(rule, token));
            }
            else if (token.Data.Is(RuleNames.Namespace))
            {
                var rule = new CssNamespaceRule(sheet);
                return(CreateNamespace(rule, token));
            }
            else if (token.Data.Is(RuleNames.Page))
            {
                var rule = new CssPageRule(sheet);
                return(CreatePage(rule, token));
            }
            else if (token.Data.Is(RuleNames.Supports))
            {
                var rule = new CssSupportsRule(sheet);
                return(CreateSupports(rule, token));
            }
            else if (token.Data.Is(RuleNames.ViewPort))
            {
                var rule = new CssViewportRule(sheet);
                return(CreateViewport(rule, token));
            }
            else if (token.Data.Is(RuleNames.Document))
            {
                var rule = new CssDocumentRule(sheet);
                return(CreateDocument(rule, token));
            }
            else if (_options.IsIncludingUnknownRules)
            {
                return(CreateUnknownAtRule(sheet, token));
            }

            RaiseErrorOccurred(CssParseError.UnknownAtRule, token.Position);
            JumpToRuleEnd(ref token);
            return(null);
        }