blob: 61a805f3b94b0d316f12866689c1b9e3fa7c8451 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id$ */
package org.apache.fop.fo.pagination;
// java
import java.util.List;
// FOP
import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.FOTreeVisitor;
/**
* The fo:root formatting object. Contains page masters, page-sequences.
*/
public class Root extends FObj {
private LayoutMasterSet layoutMasterSet;
private List pageSequences;
/**
* Keeps count of page number from over PageSequence instances
*/
private int runningPageNumberCounter = 0;
private FOTreeControl foTreeControl = null;
/**
* @see org.apache.fop.fo.FONode#FONode(FONode)
*/
public Root(FONode parent) {
super(parent);
// this.propertyList.get("media-usage");
pageSequences = new java.util.ArrayList();
if (parent != null) {
//throw new FOPException("root must be root element");
}
}
/**
* Returns the number of pages generated (over all PageSequence instances).
* @return the number of pages
*/
protected int getRunningPageNumberCounter() {
return this.runningPageNumberCounter;
}
/**
* Sets the overall page number counter.
* @param count the new page count
*/
public void setRunningPageNumberCounter(int count) {
this.runningPageNumberCounter = count;
}
/**
* Returns the number of PageSequence instances.
* @return the number of PageSequence instances
*/
public int getPageSequenceCount() {
return pageSequences.size();
}
/**
* Some properties, such as 'force-page-count', require a
* page-sequence to know about some properties of the next.
* @param current the current PageSequence
* @return succeeding PageSequence; null if none
*/
public PageSequence getSucceedingPageSequence(PageSequence current) {
int currentIndex = pageSequences.indexOf(current);
if (currentIndex == -1) {
return null;
}
if (currentIndex < (pageSequences.size() - 1)) {
return (PageSequence)pageSequences.get(currentIndex + 1);
} else {
return null;
}
}
/**
* Returns the associated LayoutMasterSet.
* @return the LayoutMasterSet instance
*/
public LayoutMasterSet getLayoutMasterSet() {
return this.layoutMasterSet;
}
/**
* Sets the associated LayoutMasterSet.
* @param layoutMasterSet the LayoutMasterSet to use
*/
public void setLayoutMasterSet(LayoutMasterSet layoutMasterSet) {
this.layoutMasterSet = layoutMasterSet;
}
/**
* Sets the FOTreeControl that this Root is attached to
* @param foTreeControl the FOTreeControl implementation to which this Root
* is attached
*/
public void setFOTreeControl(FOTreeControl foTreeControl) {
this.foTreeControl = foTreeControl;
}
/**
* This method overrides the FONode version. The FONode version calls the
* method by the same name for the parent object. Since Root is at the top
* of the tree, it returns the actual foTreeControl object. Thus, any FONode
* can use this chain to find which foTreeControl it is being built for.
* @return the FOTreeControl implementation that this Root is attached to
*/
public FOTreeControl getFOTreeControl() {
return foTreeControl;
}
/**
* Hook for Visitor objects accessing the FO Tree.
* @param fotv the FOTreeVisitor object accessing this node of the FO Tree
*/
public void acceptVisitor(FOTreeVisitor fotv) {
fotv.serveRoot(this);
}
}
|