You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AreaTree.java 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * $Id$
  3. * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  4. * For details on use and redistribution please refer to the
  5. * LICENSE file included with these sources.
  6. */
  7. package org.apache.fop.area;
  8. import java.util.ArrayList;
  9. public class AreaTree {
  10. // allows for different models to deal with adding/rendering
  11. // in different situations
  12. AreaTreeModel model;
  13. public void createRenderPageModel(PageRenderListener listener) {
  14. }
  15. public static StorePagesModel createStorePagesModel() {
  16. return new StorePagesModel();
  17. }
  18. public void setTreeModel(AreaTreeModel m) {
  19. model = m;
  20. }
  21. public void startPageSequence(Area title) {
  22. model.startPageSequence(title);
  23. }
  24. public void addPage(PageViewport page) {
  25. model.addPage(page);
  26. }
  27. // this is the model for the area tree object
  28. public static abstract class AreaTreeModel {
  29. public abstract void startPageSequence(Area title);
  30. public abstract void addPage(PageViewport page);
  31. }
  32. // this queues pages and will call the render listener
  33. // when the page is ready to be rendered
  34. // if the render supports out of order rendering
  35. // then a ready page is rendered immediately
  36. public static class RenderPagesModel extends AreaTreeModel {
  37. public void startPageSequence(Area title) {}
  38. public void addPage(PageViewport page) {}
  39. }
  40. // this class stores all the pages in the document
  41. // for interactive agents
  42. public static class StorePagesModel extends AreaTreeModel {
  43. ArrayList pageSequence = null;
  44. ArrayList titles = new ArrayList();
  45. ArrayList currSequence;
  46. public StorePagesModel() {}
  47. public void startPageSequence(Area title) {
  48. titles.add(title);
  49. if (pageSequence == null) {
  50. pageSequence = new ArrayList();
  51. }
  52. currSequence = new ArrayList();
  53. pageSequence.add(currSequence);
  54. }
  55. public void addPage(PageViewport page) {
  56. currSequence.add(page);
  57. }
  58. public int getPageSequenceCount() {
  59. return pageSequence.size();
  60. }
  61. public Title getTitle(int count) {
  62. return (Title) titles.get(count);
  63. }
  64. public int getPageCount(int seq) {
  65. ArrayList sequence = (ArrayList) pageSequence.get(seq);
  66. return sequence.size();
  67. }
  68. public PageViewport getPage(int seq, int count) {
  69. ArrayList sequence = (ArrayList) pageSequence.get(seq);
  70. return (PageViewport) sequence.get(count);
  71. }
  72. }
  73. }
  74. abstract class PageRenderListener {
  75. public abstract void startPageSequence(Area title);
  76. public abstract void preparePage(PageViewport page);
  77. public abstract void renderPage(PageViewport page);
  78. }