Example #1
0
        public override Status Layout(Area area)
        {
            if (marker == MarkerStart)
            {
                marker = 0;
                Page containingPage = area.getPage();
                bestMarker = SearchPage(containingPage);

                if (bestMarker != null)
                {
                    bestMarker.resetMarkerContent();
                    return(bestMarker.LayoutMarker(area));
                }

                AreaTree areaTree = containingPage.getAreaTree();
                if (retrieveBoundary == RetrieveBoundary.PAGE_SEQUENCE)
                {
                    PageSequence pageSequence = areaTree.GetCurrentPageSequence();
                    if (pageSequence == containingPage.getPageSequence())
                    {
                        return(LayoutBestMarker(areaTree.GetCurrentPageSequenceMarkers(), area));
                    }
                }
                else if (retrieveBoundary == RetrieveBoundary.DOCUMENT)
                {
                    return(LayoutBestMarker(areaTree.GetDocumentMarkers(), area));
                }
                else if (retrieveBoundary != RetrieveBoundary.PAGE)
                {
                    throw new FonetException("Illegal 'retrieve-boundary' value");
                }
            }
            else if (bestMarker != null)
            {
                return(bestMarker.LayoutMarker(area));
            }

            return(new Status(Status.OK));
        }