public void QueuePage(Page page) { // Process markers PageSequence pageSequence = page.getPageSequence(); if (pageSequence != currentPageSequence) { currentPageSequence = pageSequence; currentPageSequenceMarkers = null; } ArrayList markers = page.getMarkers(); if (markers != null) { if (documentMarkers == null) { documentMarkers = new ArrayList(); } if (currentPageSequenceMarkers == null) { currentPageSequenceMarkers = new ArrayList(); } for (int i = 0; i < markers.Count; i++) { Marker marker = (Marker)markers[i]; marker.releaseRegistryArea(); currentPageSequenceMarkers.Add(marker); documentMarkers.Add(marker); } } // Try to optimise on the common case that there are no pages pending // and that all ID references are valid on the current pages. This // short-cuts the pipeline and renders the area immediately. if ((renderQueue.Count == 0) && idReferences.IsEveryIdValid()) { renderer.Render(page); } else { AddToRenderQueue(page); } pageCount++; }
private Marker SearchPage(Page page) { ArrayList pageMarkers = page.getMarkers(); if (pageMarkers.Count == 0) { return null; } if (retrievePosition == RetrievePosition.FIC) { for (int i = 0; i < pageMarkers.Count; i++) { Marker currentMarker = (Marker)pageMarkers[i]; if (currentMarker.GetMarkerClassName().Equals(retrieveClassName)) { return currentMarker; } } } else if (retrievePosition == RetrievePosition.FSWP) { for (int c = 0; c < pageMarkers.Count; c++) { Marker currentMarker = (Marker)pageMarkers[c]; if (currentMarker.GetMarkerClassName().Equals(retrieveClassName)) { if (currentMarker.GetRegistryArea().isFirst()) { return currentMarker; } } } } else if (retrievePosition == RetrievePosition.LSWP) { for (int c = pageMarkers.Count - 1; c >= 0; c--) { Marker currentMarker = (Marker)pageMarkers[c]; if (currentMarker.GetMarkerClassName().Equals(retrieveClassName)) { if (currentMarker.GetRegistryArea().isFirst()) { return currentMarker; } } } } else if (retrievePosition == RetrievePosition.LEWP) { for (int c = pageMarkers.Count - 1; c >= 0; c--) { Marker currentMarker = (Marker)pageMarkers[c]; if (currentMarker.GetMarkerClassName().Equals(retrieveClassName)) { if (currentMarker.GetRegistryArea().isLast()) { return currentMarker; } } } } else { throw new FonetException("Illegal 'retrieve-position' value"); } return null; }