示例#1
0
        public void AddChild(Scope childScope)
        {
            if (childScope.Parent != null)
                throw new InvalidOperationException("The child scope already has a parent.");

            childScope.Parent = this;

            Children.Add(childScope);
        }
示例#2
0
        private static void BuildSpanForCapturedStyle(Scope scope,
            IStyleSheet styleSheet,
            TextWriter writer)
        {
            Color foreground = Color.Empty;
            Color background = Color.Empty;

            if (styleSheet.Styles.Contains(scope.Name)) {
                Style style = styleSheet.Styles[scope.Name];

                foreground = style.Foreground;
                background = style.Background;
            }

            WriteElementStart("span", foreground, background, writer);
        }
示例#3
0
        private static void GetStyleInsertionsForCapturedStyle(Scope scope, ICollection<TextInsertion> styleInsertions)
        {
            styleInsertions.Add(new TextInsertion {
                Index = scope.Index,
                Scope = scope
            });


            foreach (Scope childScope in scope.Children)
                GetStyleInsertionsForCapturedStyle(childScope, styleInsertions);

            styleInsertions.Add(new TextInsertion {
                Index = scope.Index + scope.Length,
                Text = "</span>"
            });
        }
示例#4
0
        private static void AddScopeToNestedScopes(Scope scope,
            ref Scope currentScope,
            ICollection<Scope> capturedStyleTree)
        {
            if (scope.Index >= currentScope.Index &&
                (scope.Index + scope.Length <= currentScope.Index + currentScope.Length)) {
                currentScope.AddChild(scope);
                currentScope = scope;
            }
            else {
                currentScope = currentScope.Parent;

                if (currentScope != null)
                    AddScopeToNestedScopes(scope, ref currentScope, capturedStyleTree);
                else
                    capturedStyleTree.Add(scope);
            }
        }