private Rectangle GetBoundsHelper( StaticVerticalPositioning vp, TreeNode tn, Coordinates required )
        {
            while( tn != null )
            {
                if( vp.IsVisible( tn ) )
                {
                    return vp.GetNodeBounds( tn, required );
                }

                if( tn.ParentCollection == null )
                {
                    break;
                }
                tn = tn.ParentCollection.ParentNode;
            }

            return Rectangle.Empty;
        }
 internal AnimatedVerticalPositioning( TreeNodeCollection nodes, IRenderer renderer, ITreeInfo treeInfo, ITreeEvents treeEvents )
     : base(nodes, renderer, treeInfo, treeEvents)
 {
     _from = new StaticVerticalPositioning( nodes, renderer, treeInfo, treeEvents );
     _to = new StaticVerticalPositioning( nodes, renderer, treeInfo, treeEvents );
 }
        public override void UpdateAnimations()
        {
            if( _treeNode != null && Proportion >= 1 )
            {
                if( _animating )
                {
                    TreeInfo.EndAnimating();
                    _animating = false;
                }

                _from = _to.Copy();
                _treeNode = null;
            }
        }