{
// set up the scene
final PageState state = getPhysicalPageState(page);
final ReportTargetState targetState = state.getTargetState();
final GraphicsOutputProcessor outputProcessor = getGraphicsProcessor();
outputProcessor.setPageCursor(state.getPageCursor());
final QueryPhysicalPageInterceptor interceptor =
new QueryPhysicalPageInterceptor(outputProcessor.getPhysicalPage(page));
outputProcessor.setInterceptor(interceptor);
final LibLayoutReportTarget target =
(LibLayoutReportTarget) targetState.restore(outputProcessor);
LayoutController position = state.getLayoutController();
// we have the data and we have our position inside the report.
// lets generate something ...
while (position.isAdvanceable())
{
position = position.advance(target);
target.commit();
while (position.isAdvanceable() == false &&
position.getParent() != null)
{
final LayoutController parent = position.getParent();
position = parent.join(position.getFlowController());
}
if (interceptor.isMoreContentNeeded() == false)
{
outputProcessor.setInterceptor(null);
return interceptor.getDrawable();
}
}
outputProcessor.setInterceptor(null);
return interceptor.getDrawable();
}
}