示例#1
0
 public OutlineNode NextSibling(UString title)
 {
     if (_nextSibling != null)
     {
         throw new InvalidOperationException();
     }
     return(_nextSibling = new OutlineNode(this._parent, this._value + 1, title));
 }
示例#2
0
 public OutlineNode FirstChild(UString title)
 {
     if (_firstChild != null)
     {
         throw new InvalidOperationException();
     }
     return(_firstChild = new OutlineNode(this, 1, title));
 }
示例#3
0
        private void Visit(PdfOutline parentOutline, OutlineNode node)
        {
            if (node == null)
            {
                return;
            }
            var counterString = Path(node);
            var thisOutline   = new PdfOutline(parentOutline, PdfAction.GotoLocalPage(counterString, false), node.Title.ToString());

            Visit(thisOutline, node.FirstChild());
            Visit(parentOutline, node.NextSibling());
        }
示例#4
0
        private void AppendOutlineNode(int level, UString title)
        {
            if (level <= 0)
            {
                throw new ArgumentOutOfRangeException("level");
            }
            if (title == null)
            {
                throw new ArgumentNullException("title");
            }

            //initial
            if (_currentNode == null)
            {
                _initialLevel = level;
                _currentNode  = new OutlineNode(UString.Empty);
            }

            //TODO: behave initial level is the maximum(top) level

            //update
            var currentLevel = _currentNode.Level;

            if (level > currentLevel)
            {
                for (int i = currentLevel; i < level - 1; ++i)
                {
                    _currentNode = _currentNode.FirstChild(UString.Empty);
                }
                _currentNode = _currentNode.FirstChild(title);
            }
            else
            {
                for (int i = level; i < currentLevel; ++i)
                {
                    _currentNode = _currentNode.Parent;
                }
                _currentNode = _currentNode.NextSibling(title);
            }
        }
示例#5
0
 public OutlineNode FirstChild(UString title)
 {
     if (_firstChild != null) throw new InvalidOperationException();
     return _firstChild = new OutlineNode(this, 1, title);
 }
示例#6
0
 private OutlineNode(OutlineNode parent, int initialValue, UString title)
 {
     _parent = parent;
     _value = initialValue;
     _title = title;
 }
示例#7
0
        private void Visit(PdfOutline parentOutline, OutlineNode node)
        {
            if (node == null) return;
            var counterString = Path(node);
            var thisOutline = new PdfOutline(parentOutline, PdfAction.GotoLocalPage(counterString, false), node.Title.ToString());

            Visit(thisOutline, node.FirstChild());
            Visit(parentOutline, node.NextSibling());
        }
示例#8
0
        private void AppendOutlineNode(int level, UString title)
        {
            if (level <= 0)
            {
                throw new ArgumentOutOfRangeException("level");
            }
            if (title == null)
            {
                throw new ArgumentNullException("title");
            }

            //initial
            if (_currentNode == null)
            {
                _initialLevel = level;
                _currentNode = new OutlineNode(UString.Empty);
            }

            //TODO: behave initial level is the maximum(top) level

            //update
            var currentLevel = _currentNode.Level;

            if (level > currentLevel)
            {
                for (int i = currentLevel; i < level - 1; ++i)
                {
                    _currentNode = _currentNode.FirstChild(UString.Empty);
                }
                _currentNode = _currentNode.FirstChild(title);
            }
            else
            {
                for (int i = level; i < currentLevel; ++i)
                {
                    _currentNode = _currentNode.Parent;
                }
                _currentNode = _currentNode.NextSibling(title);
            }
        }
示例#9
0
 private static string Path(OutlineNode node)
 {
     var counterString = String.Join(".", node.Path);
     return counterString;
 }
示例#10
0
 public void Clear()
 {
     _currentNode = null;
     _initialLevel = 0;
 }
示例#11
0
 public OutlineNode NextSibling(UString title)
 {
     if (_nextSibling != null) throw new InvalidOperationException();
     return _nextSibling = new OutlineNode(this._parent, this._value + 1, title);
 }
示例#12
0
 private OutlineNode(OutlineNode parent, int initialValue, UString title)
 {
     _parent = parent;
     _value  = initialValue;
     _title  = title;
 }
示例#13
0
 public void Clear()
 {
     _currentNode  = null;
     _initialLevel = 0;
 }
示例#14
0
        private static string Path(OutlineNode node)
        {
            var counterString = String.Join(".", node.Path);

            return(counterString);
        }