Example #1
0
        private void AddHeaders(Container b)
        {
            decimal pos = _pageHeaderBox.Height;

            if (b.Parent != null)
            {
                AddHeaders(b.Parent);
            }

            // Loop through the repeated elements
            foreach (Container r in b.RepeatList)
            {
                // If the repeated element is above the current element then put it at the top
                if (r.AbsoluteTop < b.AbsoluteTop)
                {
                    // Copy the header element along with all children.
                    Container re = PageRender.Copy(r, true);
                    re.Parent = _pageHeaderBox;
                    re.Top   += pos;
                    re.Left   = r.AbsoluteLeft;
                    _pageHeaderBox.Children.Add(re);

                    _pageHeaderBox.Height = Math.Max(_pageHeaderBox.Height, pos + re.Top + re.Height);
                }
                else
                {
                    // If the repeated element is below the current element then reserve space
                    // for it at the bottom.
                    _pageFooterBox.Height += (r.Top - b.Top - b.Height + r.Height);
                }
            }
        }
Example #2
0
        private void RecurseAddFooters(Container b, ref decimal top)
        {
            decimal height = 0;

            // Loop through the repeated elements
            foreach (Container r in b.RepeatList)
            {
                // If the repeated element is above the current element then put it at the top
                if (r.AbsoluteTop > b.AbsoluteTop)
                {
                    // Copy the header element along with all children.
                    Container re = PageRender.Copy(r, true);
                    re.Parent = _pageFooterBox;
                    re.Top    = top + re.Top - b.Top - b.Height;
                    re.Left   = r.AbsoluteLeft;
                    _pageFooterBox.Children.Add(re);

                    height = Math.Max(re.Top + re.Height, height);
                }
            }

            top += height;

            if (b.Parent != null)
            {
                RecurseAddFooters(b.Parent, ref top);
            }
        }
Example #3
0
        internal Container AddParentBoxes(Container b, Container newParent)
        {
            if (b == null)
            {
                return(newParent);
            }
            if (b.Parent != null)
            {
                newParent = AddParentBoxes(b.Parent, newParent);
            }

            Container b1 = PageRender.Copy(b, false);

            b1.Parent = newParent;
            newParent.Children.Add(b1);

            if (b1.AbsoluteTop >= RelativeTop)
            {
                b1.Top -= (b1.AbsoluteTop - RelativeTop);
            }
            else
            {
                if (b.AbsoluteTop < _relativeTop)
                {
                    b1.Height -= (_relativeTop - b.AbsoluteTop);
                }
                b1.Top = 0;
            }
            if (b1.Height > newParent.Height)
            {
                b1.Height = _pageDetailsBox.Height;
            }

            return(b1);
        }
Example #4
0
        internal Page(Rdl.Render.GenericRender rpt,
                      int pageNumber,
                      decimal width,
                      decimal height,
                      decimal relativeTop,
                      Container breakAt,
                      ref Container currentPos) : base(null, null, null)
        {
            Width             = width;
            Height            = height;
            CanGrowVertically = false;
            Name           = "Page";
            _pageNumber    = pageNumber;
            _relativeTop   = relativeTop;
            _genericRender = rpt;

            _pageHeaderBox                   = AddFixedContainer(rpt.Report, rpt.Report.Style, null);
            _pageHeaderBox.Width             = Width;
            _pageHeaderBox.Name              = "PageHeader";
            _pageHeaderBox.CanGrowVertically = true;

            // Add in the page header if appropriate
            if (rpt.Report.PageHeader != null)
            {
                if (pageNumber > 0 || rpt.Report.PageHeader.PrintOnFirstPage)
                {
                    _pageHeaderBox.Children.Add(PageRender.Copy(rpt.PageHeaderContainer, true));
                }
            }
            _pageHeaderBox.SetSizes(false);

            _pageDetailsBox                   = AddFixedContainer(rpt.Report, rpt.Report.Style, null);
            _pageDetailsBox.Width             = Width;
            _pageDetailsBox.Height            = Height;
            _pageDetailsBox.Name              = "PageDetails";
            _pageDetailsBox.CanGrowVertically = false;

            _pageFooterBox                   = AddFixedContainer(rpt.Report, rpt.Report.Style, null);
            _pageFooterBox.Width             = Width;
            _pageFooterBox.Name              = "PageFooter";
            _pageFooterBox.CanGrowVertically = true;

            if (breakAt != null)
            {
                AddHeaders(breakAt);
            }
            AddFooters(rpt, _pageFooterBox);

            _pageDetailsBox.Height = Height - _pageHeaderBox.Height - _pageFooterBox.Height;
            _pageDetailsBox.Top    = _pageHeaderBox.Height;

            currentPos = AddParentBoxes(breakAt, _pageDetailsBox);
        }
Example #5
0
        internal void AddFooters(Rdl.Render.GenericRender rpt, Container b)
        {
            decimal top = 0;

            //_pageFooterBox.Top = _pageHeaderBox.Height + _pageDetailsBox.Height;
            if (b != null)
            {
                RecurseAddFooters(b, ref top);
            }

            if (rpt.Report.PageFooter != null)
            {
                Container pageFooter = PageRender.Copy(rpt.PageFooterContainer, true);
                pageFooter.Top = top;
                _pageFooterBox.Children.Add(pageFooter);
                top += pageFooter.Height;
            }
            _pageFooterBox.Height = top;
            _pageFooterBox.Top    = Height - top;
        }