aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/fop/layoutmgr/BlockLevelEventProducer.java
blob: d043456be075bb87e195cf77aa7a8c7cf9a35993 (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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.layoutmgr;

import org.xml.sax.Locator;

import org.apache.fop.events.EventBroadcaster;
import org.apache.fop.events.EventProducer;
import org.apache.fop.fo.pagination.PageProductionException;

/**
 * Event producer interface for block-level layout managers.
 */
public interface BlockLevelEventProducer extends EventProducer {

    /**
     * Provider class for the event producer.
     */
    final class Provider {

        private Provider() { }

        /**
         * Returns an event producer.
         * @param broadcaster the event broadcaster to use
         * @return the event producer
         */
        public static BlockLevelEventProducer get(EventBroadcaster broadcaster) {
            return broadcaster.getEventProducerFor(BlockLevelEventProducer.class);
        }
    }

    /**
     * The contents of a table-row are too big to fit in the constraints.
     * @param source the event source
     * @param row the row number
     * @param effCellBPD the effective extent in block-progression direction of the cell
     * @param maxCellBPD the maximum extent in block-progression direction of the cell
     * @param loc the location of the error or null
     * @event.severity WARN
     */
    void rowTooTall(Object source, int row, int effCellBPD, int maxCellBPD, Locator loc);

    /**
     * Auto-table layout is not supported, yet.
     * @param source the event source
     * @param loc the location of the error or null
     * @event.severity INFO
     */
    void tableFixedAutoWidthNotSupported(Object source, Locator loc);

    /**
     * An formatting object is too wide.
     * @param source the event source
     * @param elementName the formatting object
     * @param effIPD the effective extent in inline-progression direction of the table contents
     * @param maxIPD the maximum extent in inline-progression direction available
     * @param loc the location of the error or null
     * @event.severity WARN
     */
    void objectTooWide(Object source, String elementName, int effIPD, int maxIPD, Locator loc);

    /**
     * An overconstrained geometry adjustment rule was triggered (5.3.4, XSL 1.0).
     * @param source the event source
     * @param elementName the formatting object
     * @param amount the amount of the adjustment (in mpt)
     * @param loc the location of the error or null
     * @event.severity INFO
     */
    void overconstrainedAdjustEndIndent(Object source, String elementName, int amount, Locator loc);

    /**
     * Contents IPD overflow a viewport.
     * @param source the event source
     * @param elementName the formatting object
     * @param amount the amount by which the contents overflow (in mpt)
     * @param clip true if the content will be clipped
     * @param canRecover indicates whether FOP can recover from this problem and continue working
     * @param loc the location of the error or null
     * @event.severity ERROR
     */
    void viewportIPDOverflow(Object source, String elementName, int amount, boolean clip,
            boolean canRecover, Locator loc);

    /**
     * Contents BPD overflow a viewport.
     * @param source the event source
     * @param elementName the formatting object
     * @param amount the amount by which the contents overflow (in mpt)
     * @param clip true if the content will be clipped
     * @param canRecover indicates whether FOP can recover from this problem and continue working
     * @param loc the location of the error or null
     * @event.severity ERROR
     */
    void viewportBPDOverflow(Object source, String elementName, int amount, boolean clip,
            boolean canRecover, Locator loc);

    /**
     * Contents overflow a region viewport.
     * @param source the event source
     * @param elementName the formatting object
     * @param page the page number/name where the overflow happened
     * @param amount the amount by which the contents overflow (in mpt)
     * @param clip true if the content will be clipped
     * @param canRecover indicates whether FOP can recover from this problem and continue working
     * @param loc the location of the error or null
     * @throws LayoutException the layout error provoked by the method call
     * @event.severity FATAL
     */
    void regionOverflow(Object source, String elementName,
            String page,
            int amount, boolean clip, boolean canRecover,
            Locator loc) throws LayoutException;

    /**
     * Contents overflow a static region viewport.
     * @param source the event source
     * @param elementName the formatting object
     * @param page the page number/name where the overflow happened
     * @param amount the amount by which the contents overflow (in mpt)
     * @param clip true if the content will be clipped
     * @param canRecover indicates whether FOP can recover from this problem and continue working
     * @param loc the location of the error or null
     * @throws LayoutException the layout error provoked by the method call
     * @event.severity FATAL
     */
    void staticRegionOverflow(Object source, String elementName,
            String page,
            int amount, boolean clip, boolean canRecover,
            Locator loc) throws LayoutException;

    /**
     * Indicates that FOP doesn't support flows that are not mapped to region-body, yet.
     * @param source the event source
     * @param flowName the flow name
     * @param masterName the page master name
     * @param loc the location of the error or null
     * @throws UnsupportedOperationException the layout error provoked by the method call
     * @event.severity FATAL
     */
    void flowNotMappingToRegionBody(Object source, String flowName, String masterName,
            Locator loc) throws UnsupportedOperationException;

    /**
     * A page sequence master is exhausted.
     * @param source the event source
     * @param pageSequenceMasterName the name of the page sequence master
     * @param canRecover indicates whether FOP can recover from this problem and continue working
     * @param loc the location of the error or null
     * @throws PageProductionException the error provoked by the method call
     * @event.severity FATAL
     */
    void pageSequenceMasterExhausted(Object source, String pageSequenceMasterName,
            boolean canRecover, Locator loc) throws PageProductionException;

    /**
     * No subsequences in page sequence master.
     * @param source the event source
     * @param pageSequenceMasterName the name of the page sequence master
     * @param loc the location of the error or null
     * @throws PageProductionException the error provoked by the method call
     * @event.severity FATAL
     */
    void missingSubsequencesInPageSequenceMaster(Object source, String pageSequenceMasterName,
            Locator loc) throws PageProductionException;

    /**
     * No single-page-master matching in page sequence master.
     * @param source the event source
     * @param pageSequenceMasterName the name of the page sequence master
     * @param pageMasterName the name of the page master not matching
     * @param loc the location of the error or null
     * @throws PageProductionException the error provoked by the method call
     * @event.severity FATAL
     */
    void noMatchingPageMaster(Object source, String pageSequenceMasterName,
            String pageMasterName, Locator loc) throws PageProductionException;

    /**
     * An element that cannot handle changing IPD (list, table) is flowing to a narrower
     * page. Some content may be lost.
     *
     * @param source the event source
     * @event.severity WARN
     */
    void nonRestartableContentFlowingToNarrowerPage(Object source);

    /**
     * A feasible layout has reached the given number of parts (columns or pages).
     *
     * @param source the event source
     * @param partCount the number of parts that the layout has reached
     * @event.severity INFO
     */
    void layoutHasReachedParts(Object source, int partCount);

    /**
     * Last page master reference missing.
     *
     * @param source the event source
     * @event.severity WARN
     */
    void lastPageMasterReferenceMissing(Object source, Locator loc);
}