You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ac...@apache.org on 2008/04/25 12:57:12 UTC
svn commit: r651570 [1/2] - in
/xmlgraphics/fop/branches/Temp_AFPGOCAResources: ./
src/codegen/java/org/apache/fop/tools/ src/java/org/apache/fop/events/
src/java/org/apache/fop/fo/ src/java/org/apache/fop/fo/expr/
src/java/org/apache/fop/fo/flow/ src/...
Author: acumiskey
Date: Fri Apr 25 03:56:53 2008
New Revision: 651570
URL: http://svn.apache.org/viewvc?rev=651570&view=rev
Log:
Merged revisions 651323,651333,651538,651540,651543-651544,651551,651558 via svnmerge from
https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk
........
r651323 | spepping | 2008-04-24 18:46:31 +0100 (Thu, 24 Apr 2008) | 3 lines
Improve table-unit computation if proportional-column-width() is used
as a subexpression. Fixes bug 44658.
........
r651333 | spepping | 2008-04-24 19:19:06 +0100 (Thu, 24 Apr 2008) | 4 lines
Make the eventResourceGenerator task for the test files a separate
task. Now one can do: ant codegen, compile outside of ant, ant
compile-copy-resources, ant junit-compile-copy-resources.
........
r651538 | jeremias | 2008-04-25 09:42:02 +0100 (Fri, 25 Apr 2008) | 1 line
Javadocs
........
r651540 | jeremias | 2008-04-25 09:44:39 +0100 (Fri, 25 Apr 2008) | 1 line
Cleanup
........
r651543 | adelmelle | 2008-04-25 09:59:56 +0100 (Fri, 25 Apr 2008) | 3 lines
Removed TODO: New validation event to generate an error in case an fo:marker appears as a child of an fo:block-container with absolutely positioned areas.
Additionally: some javadoc updates in BlockContainer.java
........
r651544 | acumiskey | 2008-04-25 10:04:06 +0100 (Fri, 25 Apr 2008) | 1 line
Removed the tab characters that were causing a big moan from eclipse
........
r651551 | adelmelle | 2008-04-25 10:30:09 +0100 (Fri, 25 Apr 2008) | 3 lines
Cleanup: removal of commented block/methods + some javadoc updates
........
r651558 | jeremias | 2008-04-25 11:07:58 +0100 (Fri, 25 Apr 2008) | 1 line
Second part of the implementation of stage 1 for advanced keeps (see Wiki): Integer values are treated differently from "always" values in keep-with-next/previous.within-column for all block-level FOs.
........
Added:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/block-container_keep-with-next_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_keep-with-next_1.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/block-container_keep-with-previous_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_keep-with-previous_1.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/block_keep-with-next_integers_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_keep-with-next_integers_1.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/block_keep-with-previous_integers_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_keep-with-previous_integers_1.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/list-block_keep-with-next_integers_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/list-block_keep-with-next_integers_1.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/list-block_keep-with-previous_integers_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/list-block_keep-with-previous_integers_1.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/table-cell_table-units_mixed.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/table-cell_table-units_mixed.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/table_keep-with-next_integers_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/table_keep-with-next_integers_1.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/table_keep-with-previous_integers_1.xml
- copied unchanged from r651558, xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/table_keep-with-previous_integers_1.xml
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/ (props changed)
xmlgraphics/fop/branches/Temp_AFPGOCAResources/build.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventConventionException.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollector.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/events/EventFormatter.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/FOValidationEventProducer.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/expr/RelativeNumericProperty.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/BlockContainer.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/EffRow.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/PrimaryGridUnit.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/pagination/PageSequence.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/properties/LengthProperty.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLevelLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FootnoteBodyLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/KeepUtil.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/LayoutContext.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/ActiveCell.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/ColumnSetup.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/RowGroupLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/TableCaptionLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/table/TableStepper.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/disabled-testcases.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/list-block_keep-with-previous.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/layoutengine/standard-testcases/list-item_block_keep-with-previous.xml
Propchange: xmlgraphics/fop/branches/Temp_AFPGOCAResources/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Apr 25 03:56:53 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk:1-650056
+/xmlgraphics/fop/trunk:1-651563
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/build.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/build.xml?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/build.xml (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/build.xml Fri Apr 25 03:56:53 2008
@@ -790,7 +790,8 @@
<exclude name="**/intermediate/*"/>
</patternset>
</target>
- <target name="junit-compile" depends="package, transcoder-pkg, junit-with-xmlunit, junit-without-xmlunit" description="Runs FOP's JUnit tests" if="junit.present">
+
+ <target name="junit-compile-java" depends="package, transcoder-pkg, junit-with-xmlunit, junit-without-xmlunit" if="junit.present">
<mkdir dir="${build.dir}/test-classes"/>
<mkdir dir="${build.dir}/test-gensrc"/>
<mkdir dir="${junit.reports.dir}"/>
@@ -807,6 +808,9 @@
</fileset>
</classpath>
</javac>
+ </target>
+
+ <target name="junit-compile-copy-resources" if="junit.present">
<eventResourceGenerator modelfile="${build.dir}/test-gensrc/org/apache/fop/events/test-event-model.xml">
<fileset dir="${basedir}/test/java">
<include name="**/*.java"/>
@@ -822,6 +826,8 @@
</fileset>
</copy>
</target>
+
+ <target name="junit-compile" depends="junit-compile-java, junit-compile-copy-resources" description="Compiles FOP's JUnit tests" if="junit.present"/>
<target name="junit-transcoder" depends="junit-compile" description="Runs FOP's JUnit transcoder tests" if="junit.present">
<echo message="Running basic functionality tests for fop-transcoder.jar"/>
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventConventionException.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventConventionException.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventConventionException.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventConventionException.java Fri Apr 25 03:56:53 2008
@@ -19,8 +19,17 @@
package org.apache.fop.tools;
+/**
+ * This exception is used to indicate a violation of the conventions for event producers.
+ */
public class EventConventionException extends Exception {
+ private static final long serialVersionUID = 117244726033986628L;
+
+ /**
+ * Creates a new EventConventionException
+ * @param message the error message
+ */
public EventConventionException(String message) {
super(message);
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollector.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollector.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollector.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollector.java Fri Apr 25 03:56:53 2008
@@ -63,15 +63,29 @@
private DocletTagFactory tagFactory;
private EventModel model = new EventModel();
+ /**
+ * Creates a new EventProducerCollector.
+ */
public EventProducerCollector() {
this.tagFactory = createDocletTagFactory();
}
+ /**
+ * Creates the {@link DocletTagFactory} to be used by the collector.
+ * @return the doclet tag factory
+ */
protected DocletTagFactory createDocletTagFactory() {
return new DefaultDocletTagFactory();
}
- public void scanFile(File src, String filename)
+ /**
+ * Scans a file and processes it if it extends the {@link EventProducer} interface.
+ * @param src the source file (a Java source file)
+ * @throws IOException if an I/O error occurs
+ * @throws EventConventionException if the EventProducer conventions are violated
+ * @throws ClassNotFoundException if a required class cannot be found
+ */
+ public void scanFile(File src)
throws IOException, EventConventionException, ClassNotFoundException {
JavaDocBuilder builder = new JavaDocBuilder(this.tagFactory);
builder.addSource(src);
@@ -79,7 +93,7 @@
for (int i = 0, c = classes.length; i < c; i++) {
JavaClass clazz = classes[i];
if (clazz.isInterface() && implementsInterface(clazz, CLASSNAME_EVENT_PRODUCER)) {
- processEventProducerInterface(clazz, filename);
+ processEventProducerInterface(clazz);
}
}
}
@@ -98,11 +112,10 @@
/**
* Processes an EventProducer interface and creates an EventProducerModel from it.
* @param clazz the EventProducer interface
- * @param javaFilename the filename of the Java source of the interface
* @throws EventConventionException if the event producer conventions are violated
* @throws ClassNotFoundException if a required class cannot be found
*/
- protected void processEventProducerInterface(JavaClass clazz, String javaFilename)
+ protected void processEventProducerInterface(JavaClass clazz)
throws EventConventionException, ClassNotFoundException {
EventProducerModel prodMeta = new EventProducerModel(clazz.getFullyQualifiedName());
JavaMethod[] methods = clazz.getMethods(true);
@@ -172,10 +185,19 @@
return methodMeta;
}
+ /**
+ * Returns the event model that has been accumulated.
+ * @return the event model.
+ */
public EventModel getModel() {
return this.model;
}
+ /**
+ * Saves the accumulated event model to an XML file.
+ * @param modelFile the target model file
+ * @throws IOException if an I/O error occurs
+ */
public void saveModelToXML(File modelFile) throws IOException {
getModel().saveToXML(modelFile);
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java Fri Apr 25 03:56:53 2008
@@ -45,6 +45,12 @@
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.selectors.FilenameSelector;
+/**
+ * Ant task which inspects a file set for Java interfaces which extend the
+ * {@link org.apache.fop.events.EventProducer} interface. For all such interfaces an event model
+ * file and a translation file for the human-readable messages generated by the events is
+ * created and/or updated.
+ */
public class EventProducerCollectorTask extends Task {
private List filesets = new java.util.ArrayList();
@@ -74,6 +80,10 @@
private static final String MODEL2TRANSLATION = "model2translation.xsl";
private static final String MERGETRANSLATION = "merge-translation.xsl";
+ /**
+ * Updates the translation file with new entries for newly found event producer methods.
+ * @throws IOException if an I/O error occurs
+ */
protected void updateTranslationFile() throws IOException {
try {
boolean resultExists = getTranslationFile().exists();
@@ -136,6 +146,13 @@
}
}
+ /**
+ * Processes the file sets defined for the task.
+ * @param collector the collector to use for collecting the event producers
+ * @throws IOException if an I/O error occurs
+ * @throws EventConventionException if the EventProducer conventions are violated
+ * @throws ClassNotFoundException if a required class cannot be found
+ */
protected void processFileSets(EventProducerCollector collector)
throws IOException, EventConventionException, ClassNotFoundException {
Iterator iter = filesets.iterator();
@@ -147,31 +164,55 @@
for (int i = 0, c = srcFiles.length; i < c; i++) {
String filename = srcFiles[i];
File src = new File(directory, filename);
- collector.scanFile(src, filename);
+ collector.scanFile(src);
}
}
}
+ /**
+ * Adds a file set.
+ * @param set the file set
+ */
public void addFileset(FileSet set) {
filesets.add(set);
}
+ /**
+ * Sets the model file to be written.
+ * @param f the model file
+ */
public void setModelFile(File f) {
this.modelFile = f;
}
+ /**
+ * Returns the model file to be written.
+ * @return the model file
+ */
public File getModelFile() {
return this.modelFile;
}
+ /**
+ * Sets the translation file for the event producer methods.
+ * @param f the translation file
+ */
public void setTranslationFile(File f) {
this.translationFile = f;
}
+ /**
+ * Returns the translation file for the event producer methods.
+ * @return the translation file
+ */
public File getTranslationFile() {
return this.translationFile;
}
+ /**
+ * Command-line interface for testing purposes.
+ * @param args the command-line arguments
+ */
public static void main(String[] args) {
try {
Project project = new Project();
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/events/EventFormatter.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/events/EventFormatter.xml?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/events/EventFormatter.xml (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/events/EventFormatter.xml Fri Apr 25 03:56:53 2008
@@ -33,6 +33,7 @@
<message key="org.apache.fop.fo.FOValidationEventProducer.missingProperty">Element "{elementName}" is missing required property "{propertyName}"!{{locator}}</message>
<message key="org.apache.fop.fo.FOValidationEventProducer.idNotUnique">Property ID "{id}" (found on "{elementName}") previously used; ID values must be unique within a document!{severity,equals,EventSeverity:FATAL,,
Any reference to it will be considered a reference to the first occurrence in the document.}{{locator}}</message>
+ <message key="org.apache.fop.fo.FOValidationEventProducer.markerBlockContainerAbsolutePosition">Only an fo:block-container that does not generate absolutely positioned areas may have one or more fo:markers as its initial children.{{locator}}</message>
<message key="org.apache.fop.fo.FOValidationEventProducer.markerNotInitialChild">fo:marker must be an initial child: {mcname}{{locator}}</message>
<message key="org.apache.fop.fo.FOValidationEventProducer.markerNotUniqueForSameParent">fo:marker "marker-class-name" must be unique for same parent: {mcname}{{locator}}</message>
<message key="org.apache.fop.fo.FOValidationEventProducer.invalidProperty">Invalid property encountered on "{elementName}": {attr}{{locator}}</message>
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/FOValidationEventProducer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/FOValidationEventProducer.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/FOValidationEventProducer.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/FOValidationEventProducer.java Fri Apr 25 03:56:53 2008
@@ -150,6 +150,15 @@
Locator loc) throws ValidationException;
/**
+ * An fo:marker appears as initial descendant in an fo:block-container
+ * that generates absolutely positioned areas
+ * @param source the event source
+ * @param loc the location of the error (possibly null)
+ * @event.severity ERROR
+ */
+ void markerBlockContainerAbsolutePosition(Object source, Locator loc);
+
+ /**
* A marker is not an initial child on a node.
* @param source the event source
* @param elementName the name of the context node
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/expr/RelativeNumericProperty.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/expr/RelativeNumericProperty.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/expr/RelativeNumericProperty.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/expr/RelativeNumericProperty.java Fri Apr 25 03:56:53 2008
@@ -23,6 +23,7 @@
import org.apache.fop.datatypes.PercentBaseContext;
import org.apache.fop.datatypes.Numeric;
import org.apache.fop.fo.properties.Property;
+import org.apache.fop.fo.properties.TableColLength;
/**
@@ -31,7 +32,7 @@
* to delay evaluation of the operation until the time where getNumericValue()
* or getValue() is called.
*/
-public class RelativeNumericProperty extends Property implements Numeric, Length {
+public class RelativeNumericProperty extends Property implements Length {
public static final int ADDITION = 1;
public static final int SUBTRACTION = 2;
public static final int MULTIPLY = 3;
@@ -56,7 +57,7 @@
/**
* The second operand.
*/
- private Numeric op2;
+ private Numeric op2 = null;
/**
* The dimension of the result.
*/
@@ -99,6 +100,7 @@
/**
* Return a resolved (calculated) Numeric with the value of the expression.
* @param context Evaluation context
+ * @return the resolved {@link Numeric} corresponding to the value of the expression
* @throws PropertyException when an exception occur during evaluation.
*/
private Numeric getResolved(PercentBaseContext context) throws PropertyException {
@@ -193,6 +195,64 @@
log.error(exc);
}
return 0;
+ }
+
+ /**
+ * Return the number of table units which are included in this length
+ * specification. This will always be 0 unless the property specification
+ * used the proportional-column-width() function (only on table column FOs).
+ * <p>
+ * If this value is not 0, the actual value of the Length cannot be known
+ * without looking at all of the columns in the table to determine the value
+ * of a "table-unit".
+ *
+ * @return The number of table units which are included in this length
+ * specification.
+ */
+ public double getTableUnits() {
+ double tu1 = 0.0, tu2 = 0.0;
+ if (op1 instanceof RelativeNumericProperty) {
+ tu1 = ((RelativeNumericProperty) op1).getTableUnits();
+ } else if (op1 instanceof TableColLength) {
+ tu1 = ((TableColLength) op1).getTableUnits();
+ }
+ if (op2 instanceof RelativeNumericProperty) {
+ tu2 = ((RelativeNumericProperty) op2).getTableUnits();
+ } else if (op2 instanceof TableColLength) {
+ tu2 = ((TableColLength) op2).getTableUnits();
+ }
+ if (tu1 != 0.0 && tu2 != 0.0) {
+ switch (operation) {
+ case ADDITION:
+ return tu1 + tu2;
+ case SUBTRACTION:
+ return tu1 - tu2;
+ case MULTIPLY:
+ return tu1 * tu2;
+ case DIVIDE:
+ return tu1 / tu2;
+ case MODULO:
+ return tu1 % tu2;
+ case MIN:
+ return Math.min(tu1, tu2);
+ case MAX:
+ return Math.max(tu1, tu2);
+ default:
+ assert false;
+ }
+ } else if (tu1 != 0.0) {
+ switch (operation) {
+ case NEGATE:
+ return -tu1;
+ case ABS:
+ return Math.abs(tu1);
+ default:
+ return tu1;
+ }
+ } else if (tu2 != 0.0) {
+ return tu2;
+ }
+ return 0.0;
}
/**
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/BlockContainer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/BlockContainer.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/BlockContainer.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/BlockContainer.java Fri Apr 25 03:56:53 2008
@@ -35,7 +35,8 @@
import org.apache.fop.fo.properties.LengthRangeProperty;
/**
- * Class modelling the fo:block-container object.
+ * Class modelling the <a href="http://www.w3.org/TR/xsl/#fo_block-container">
+ * <code>fo:block-container</code></a> object.
*/
public class BlockContainer extends FObj {
// The value of properties relevant for fo:block-container.
@@ -66,15 +67,16 @@
private boolean blockItemFound = false;
/**
- * @param parent FONode that is the parent of this object
+ * Creates a new BlockContainer instance as a child of
+ * the given {@link FONode}.
+ *
+ * @param parent {@link FONode} that is the parent of this object
*/
public BlockContainer(FONode parent) {
super(parent);
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
public void bind(PropertyList pList) throws FOPException {
super.bind(pList);
commonAbsolutePosition = pList.getAbsolutePositionProps();
@@ -97,9 +99,7 @@
writingMode = pList.get(PR_WRITING_MODE).getEnum();
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
protected void startOfNode() throws FOPException {
super.startOfNode();
getFOEventHandler().startBlockContainer(this);
@@ -107,30 +107,34 @@
/**
* {@inheritDoc}
- * XSL Content Model: marker* (%block;)+
- * But: "In addition an fo:block-container that does not generate an
+ * <br>XSL Content Model: marker* (%block;)+
+ * <br><i><b>BUT</b>: "In addition an fo:block-container that does not generate an
* absolutely positioned area may have a sequence of zero or more
* fo:markers as its initial children."
- * @todo - implement above restriction if possible
+ * The latter refers to block-containers with absolute-position="absolute"
+ * or absolute-position="fixed".
*/
protected void validateChildNode(Locator loc, String nsURI, String localName)
- throws ValidationException {
+ throws ValidationException {
if (FO_URI.equals(nsURI)) {
- if (localName.equals("marker")) {
+ if ("marker".equals(localName)) {
+ if (commonAbsolutePosition.absolutePosition == EN_ABSOLUTE
+ || commonAbsolutePosition.absolutePosition == EN_FIXED) {
+ getFOValidationEventProducer()
+ .markerBlockContainerAbsolutePosition(this, locator);
+ }
if (blockItemFound) {
nodesOutOfOrderError(loc, "fo:marker", "(%block;)");
}
- } else if (!isBlockItem(nsURI, localName)) {
- invalidChildError(loc, nsURI, localName);
+ } else if (!isBlockItem(FO_URI, localName)) {
+ invalidChildError(loc, FO_URI, localName);
} else {
blockItemFound = true;
}
}
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
protected void endOfNode() throws FOPException {
if (!blockItemFound) {
missingChildElementError("marker* (%block;)+");
@@ -139,30 +143,22 @@
getFOEventHandler().endBlockContainer(this);
}
- /**
- * @return true (BlockContainer can generate Reference Areas)
- */
+ /** @return <code>true</code> (BlockContainer can generate Reference Areas) */
public boolean generatesReferenceAreas() {
return true;
}
- /**
- * @return the Common Absolute Position Properties.
- */
+ /** @return the {@link CommonAbsolutePosition} */
public CommonAbsolutePosition getCommonAbsolutePosition() {
return commonAbsolutePosition;
}
- /**
- * @return the Common Margin Properties-Block.
- */
+ /** @return the {@link CommonMarginBlock} */
public CommonMarginBlock getCommonMarginBlock() {
return commonMarginBlock;
}
- /**
- * @return the Common Border, Padding, and Background Properties.
- */
+ /** @return the {@link CommonBorderPaddingBackground} */
public CommonBorderPaddingBackground getCommonBorderPaddingBackground() {
return commonBorderPaddingBackground;
}
@@ -174,7 +170,7 @@
return blockProgressionDimension;
}
- /** @return the display-align property. */
+ /** @return the "display-align" property. */
public int getDisplayAlign() {
return displayAlign;
}
@@ -204,51 +200,37 @@
return keepTogether;
}
- /**
- * @return the "inline-progression-dimension" property.
- */
+ /** @return the "inline-progression-dimension" property */
public LengthRangeProperty getInlineProgressionDimension() {
return inlineProgressionDimension;
}
- /**
- * @return the "overflow" property.
- */
+ /** @return the "overflow" property */
public int getOverflow() {
return overflow;
}
- /**
- * @return the "reference-orientation" property.
- */
+ /** @return the "reference-orientation" property */
public int getReferenceOrientation() {
return referenceOrientation.getValue();
}
- /**
- * @return the "span" property.
- */
+ /** @return the "span" property */
public int getSpan() {
return this.span;
}
- /**
- * @return the "writing-mode" property.
- */
+ /** @return the "writing-mode" property */
public int getWritingMode() {
return writingMode;
}
- /**
- * @return the width property
- */
+ /** @return the "width" property */
public Length getWidth() {
return width;
}
- /**
- * @return the height property
- */
+ /** @return the "height" property */
public Length getHeight() {
return height;
}
@@ -260,6 +242,7 @@
/**
* {@inheritDoc}
+ * @return {@link org.apache.fop.fo.Constants#FO_BLOCK_CONTAINER}
*/
public int getNameId() {
return FO_BLOCK_CONTAINER;
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/EffRow.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/EffRow.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/EffRow.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/EffRow.java Fri Apr 25 03:56:53 2008
@@ -165,55 +165,47 @@
}
/**
- * Returns true if the enclosing (if any) fo:table-row element of this row, or if any
- * of the cells starting on this row, have keep-with-previous set.
+ * Returns the strength of the keep constraint if the enclosing (if any) fo:table-row element
+ * of this row, or if any of the cells starting on this row, have keep-with-previous set.
*
- * @return true if this row must be kept with the previous content
+ * @return the strength of the keep-with-previous constraint
*/
- public boolean mustKeepWithPrevious() {
- boolean keepWithPrevious = false;
+ public int getKeepWithPreviousStrength() {
+ int strength = BlockLevelLayoutManager.KEEP_AUTO;
TableRow row = getTableRow();
if (row != null) {
- keepWithPrevious = row.mustKeepWithPrevious();
+ strength = Math.max(strength,
+ KeepUtil.getCombinedBlockLevelKeepStrength(row.getKeepWithPrevious()));
}
for (Iterator iter = gridUnits.iterator(); iter.hasNext();) {
GridUnit gu = (GridUnit) iter.next();
if (gu.isPrimary()) {
- keepWithPrevious |= gu.getPrimary().mustKeepWithPrevious();
+ strength = Math.max(strength, gu.getPrimary().getKeepWithPreviousStrength());
}
}
- return keepWithPrevious;
+ return strength;
}
/**
- * Returns true if the enclosing (if any) fo:table-row element of this row, or if any
- * of the cells ending on this row, have keep-with-next set.
+ * Returns the strength of the keep constraint if the enclosing (if any) fo:table-row element
+ * of this row, or if any of the cells ending on this row, have keep-with-next set.
*
- * @return true if this row must be kept with the next content
+ * @return the strength of the keep-with-next constraint
*/
- public boolean mustKeepWithNext() {
- boolean keepWithNext = false;
+ public int getKeepWithNextStrength() {
+ int strength = BlockLevelLayoutManager.KEEP_AUTO;
TableRow row = getTableRow();
if (row != null) {
- keepWithNext = row.mustKeepWithNext();
+ strength = Math.max(strength,
+ KeepUtil.getCombinedBlockLevelKeepStrength(row.getKeepWithNext()));
}
for (Iterator iter = gridUnits.iterator(); iter.hasNext();) {
GridUnit gu = (GridUnit) iter.next();
if (!gu.isEmpty() && gu.getColSpanIndex() == 0 && gu.isLastGridUnitRowSpan()) {
- keepWithNext |= gu.getPrimary().mustKeepWithNext();
+ strength = Math.max(strength, gu.getPrimary().getKeepWithNextStrength());
}
}
- return keepWithNext;
- }
-
- /**
- * Returns true if this row is enclosed by an fo:table-row element that has
- * keep-together set.
- *
- * @return true if this row must be kept together
- */
- public boolean mustKeepTogether() {
- return getKeepTogetherStrength() != BlockLevelLayoutManager.KEEP_AUTO;
+ return strength;
}
/**
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/PrimaryGridUnit.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/PrimaryGridUnit.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/PrimaryGridUnit.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/flow/table/PrimaryGridUnit.java Fri Apr 25 03:56:53 2008
@@ -25,6 +25,7 @@
import org.apache.fop.fo.Constants;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.properties.CommonBorderPaddingBackground;
+import org.apache.fop.layoutmgr.BlockLevelLayoutManager;
import org.apache.fop.layoutmgr.ElementListUtils;
import org.apache.fop.layoutmgr.table.TableCellLayoutManager;
@@ -53,8 +54,8 @@
private boolean isSeparateBorderModel;
private int halfBorderSeparationBPD;
- private boolean keepWithPrevious;
- private boolean keepWithNext;
+ private int keepWithPrevious = BlockLevelLayoutManager.KEEP_AUTO;
+ private int keepWithNext = BlockLevelLayoutManager.KEEP_AUTO;
private int breakBefore = Constants.EN_AUTO;
private int breakAfter = Constants.EN_AUTO;
@@ -328,37 +329,39 @@
}
/**
- * Returns true if the first child block (or its descendants) of this cell has
- * keep-with-previous.
+ * Returns the strength of the keep constraint if the first child block (or its descendants)
+ * of this cell has keep-with-previous.
*
- * @return the value of keep-with-previous
+ * @return the keep-with-previous strength
*/
- public boolean mustKeepWithPrevious() {
+ public int getKeepWithPreviousStrength() {
return keepWithPrevious;
}
/**
* Don't use, reserved for TableCellLM. TODO
+ * @param strength the keep strength
*/
- public void setKeepWithPrevious() {
- this.keepWithPrevious = true;
+ public void setKeepWithPreviousStrength(int strength) {
+ this.keepWithPrevious = strength;
}
/**
- * Returns true if the last child block (or its descendants) of this cell has
- * keep-with-next.
+ * Returns the strength of the keep constraint if the last child block (or its descendants) of
+ * this cell has keep-with-next.
*
- * @return the value of keep-with-next
+ * @return the keep-with-next strength
*/
- public boolean mustKeepWithNext() {
+ public int getKeepWithNextStrength() {
return keepWithNext;
}
/**
* Don't use, reserved for TableCellLM. TODO
+ * @param strength the keep strength
*/
- public void setKeepWithNext() {
- this.keepWithNext = true;
+ public void setKeepWithNextStrength(int strength) {
+ this.keepWithNext = strength;
}
/**
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/pagination/PageSequence.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/pagination/PageSequence.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/pagination/PageSequence.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/pagination/PageSequence.java Fri Apr 25 03:56:53 2008
@@ -30,7 +30,8 @@
import org.apache.fop.fo.ValidationException;
/**
- * Abstract base implementation for page sequences.
+ * Class modelling the <a href="http://www.w3.org/TR/xsl/#fo_page-sequence">
+ * <code>fo:page-sequence</code></a> object.
*/
public class PageSequence extends AbstractPageSequence {
@@ -70,9 +71,10 @@
private Flow mainFlow = null;
/**
- * Create a page sequence FO node.
+ * Create a PageSequence instance that is a child of the
+ * given {@link FONode}.
*
- * @param parent the parent FO node
+ * @param parent the parent {@link FONode}
*/
public PageSequence(FONode parent) {
super(parent);
@@ -172,6 +174,9 @@
* The flow-name is used to associate the flow with a region on a page,
* based on the region-names given to the regions in the page-master
* used to generate that page.
+ * @param flow the {@link Flow} instance to be added
+ * @throws org.apache.fop.fo.ValidationException if the fo:flow maps
+ * to an invalid page-region
*/
private void addFlow(Flow flow) throws ValidationException {
String flowName = flow.getFlowName();
@@ -189,133 +194,6 @@
}
}
-// /**
-// * Returns true when there is more flow elements left to lay out.
-// */
-// private boolean flowsAreIncomplete() {
-// boolean isIncomplete = false;
-
-// for (Iterator e = flowMap.values().iterator(); e.hasNext(); ) {
-// Flow flow = (Flow)e.next();
-// if (flow instanceof StaticContent) {
-// continue;
-// }
-
-// Status status = flow.getStatus();
-// isIncomplete |= status.isIncomplete();
-// }
-// return isIncomplete;
-// }
-
-// /**
-// * Returns the flow that maps to the given region class for the current
-// * page master.
-// */
-// private Flow getCurrentFlow(String regionClass) {
-// Region region = getCurrentSimplePageMaster().getRegion(regionClass);
-// if (region != null) {
-// Flow flow = (Flow)flowMap.get(region.getRegionName());
-// return flow;
-
-// } else {
-
-// getLogger().error("flow is null. regionClass = '" + regionClass
-// + "' currentSPM = "
-// + getCurrentSimplePageMaster());
-
-// return null;
-// }
-
-// }
-
-// private boolean isFlowForMasterNameDone(String masterName) {
-// // parameter is master-name of PMR; we need to locate PM
-// // referenced by this, and determine whether flow(s) are OK
-// if (isForcing)
-// return false;
-// if (masterName != null) {
-
-// SimplePageMaster spm =
-// root.getLayoutMasterSet().getSimplePageMaster(masterName);
-// Region region = spm.getRegion(FO_REGION_BODY);
-
-
-// Flow flow = (Flow)flowMap.get(region.getRegionName());
-// /*if ((null == flow) || flow.getStatus().isIncomplete())
-// return false;
-// else
-// return true;*/
-// }
-// return false;
-// }
-
-// private void forcePage(AreaTree areaTree, int firstAvailPageNumber) {
-// boolean makePage = false;
-// if (this.forcePageCount == ForcePageCount.AUTO) {
-// PageSequence nextSequence =
-// this.root.getSucceedingPageSequence(this);
-// if (nextSequence != null) {
-// if (nextSequence.getIpnValue().equals("auto")) {
-// // do nothing special
-// }
-// else if (nextSequence.getIpnValue().equals("auto-odd")) {
-// if (firstAvailPageNumber % 2 == 0) {
-// makePage = true;
-// }
-// } else if (nextSequence.getIpnValue().equals("auto-even")) {
-// if (firstAvailPageNumber % 2 != 0) {
-// makePage = true;
-// }
-// } else {
-// int nextSequenceStartPageNumber =
-// nextSequence.getCurrentPageNumber();
-// if ((nextSequenceStartPageNumber % 2 == 0)
-// && (firstAvailPageNumber % 2 == 0)) {
-// makePage = true;
-// } else if ((nextSequenceStartPageNumber % 2 != 0)
-// && (firstAvailPageNumber % 2 != 0)) {
-// makePage = true;
-// }
-// }
-// }
-// } else if ((this.forcePageCount == ForcePageCount.EVEN)
-// && (this.pageCount % 2 != 0)) {
-// makePage = true;
-// } else if ((this.forcePageCount == ForcePageCount.ODD)
-// && (this.pageCount % 2 == 0)) {
-// makePage = true;
-// } else if ((this.forcePageCount == ForcePageCount.END_ON_EVEN)
-// && (firstAvailPageNumber % 2 == 0)) {
-// makePage = true;
-// } else if ((this.forcePageCount == ForcePageCount.END_ON_ODD)
-// && (firstAvailPageNumber % 2 != 0)) {
-// makePage = true;
-// } else if (this.forcePageCount == ForcePageCount.NO_FORCE) {
-// // do nothing
-// }
-
-// if (makePage) {
-// try {
-// this.isForcing = true;
-// this.currentPageNumber++;
-// firstAvailPageNumber = this.currentPageNumber;
-// currentPage = makePage(areaTree, firstAvailPageNumber, false,
-// true);
-// String formattedPageNumber =
-// pageNumberGenerator.makeFormattedPageNumber(this.currentPageNumber);
-// currentPage.setFormattedNumber(formattedPageNumber);
-// currentPage.setPageSequence(this);
-// formatStaticContent(areaTree);
-// log.debug("[forced-" + firstAvailPageNumber + "]");
-// areaTree.addPage(currentPage);
-// this.root.setRunningPageNumberCounter(this.currentPageNumber);
-// this.isForcing = false;
-// } catch (FOPException fopex) {
-// log.debug("'force-page-count' failure");
-// }
-// }
-// }
-
/**
* Get the static content FO node from the flow map.
* This gets the static content flow for the given flow name.
@@ -328,7 +206,7 @@
}
/**
- * Accessor method for titleFO
+ * Accessor method for the fo:title associated with this fo:page-sequence
* @return titleFO for this object
*/
public Title getTitleFO() {
@@ -425,7 +303,10 @@
}
}
- /** @return the "master-reference" property. */
+ /**
+ * Get the value of the <code>master-reference</code> property.
+ * @return the "master-reference" property
+ */
public String getMasterReference() {
return masterReference;
}
@@ -435,17 +316,26 @@
return "page-sequence";
}
- /** {@inheritDoc} */
+ /**
+ * {@inheritDoc}
+ * @return {@link org.apache.fop.fo.Constants#FO_PAGE_SEQUENCE}
+ */
public int getNameId() {
return FO_PAGE_SEQUENCE;
}
- /** @return the country property value */
+ /**
+ * Get the value of the <code>country</code> property.
+ * @return the country property value
+ */
public String getCountry() {
return this.country;
}
- /** @return the language property value */
+ /**
+ * Get the value of the <code>language</code> property.
+ * @return the language property value
+ */
public String getLanguage() {
return this.language;
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/properties/LengthProperty.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/properties/LengthProperty.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/properties/LengthProperty.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fo/properties/LengthProperty.java Fri Apr 25 03:56:53 2008
@@ -71,22 +71,6 @@
}
- /**
- * Return the number of table units which are included in this
- * length specification.
- * This will always be 0 unless the property specification used
- * the proportional-column-width() function (only only table
- * column FOs).
- * <p>If this value is not 0, the actual value of the Length cannot
- * be known without looking at all of the columns in the table to
- * determine the value of a "table-unit".
- * @return The number of table units which are included in this
- * length specification.
- */
- public double getTableUnits() {
- return 0.0;
- }
-
/** @return the numeric dimension. Length always a dimension of 1 */
public int getDimension() {
return 1;
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -263,6 +263,7 @@
if (!firstVisibleMarkServed) {
addKnuthElementsForSpaceBefore(returnList, alignment);
+ context.updateKeepWithPreviousPending(getKeepWithPreviousStrength());
}
addKnuthElementsForBorderPaddingBefore(returnList, !firstVisibleMarkServed);
@@ -284,6 +285,11 @@
// get elements from curLM
returnedList = curLM.getNextKnuthElements(childLC, alignment);
+ if (contentList.size() == 0 && childLC.isKeepWithPreviousPending()) {
+ //Propagate keep-with-previous up from the first child
+ context.updateKeepWithPreviousPending(childLC.getKeepWithPreviousPending());
+ childLC.clearKeepWithPreviousPending();
+ }
if (returnedList.size() == 1
&& ((ListElement)returnedList.getFirst()).isForcedBreak()) {
// a descendant of this block has break-before
@@ -329,6 +335,9 @@
return returnList;
}
}
+ // propagate and clear
+ context.updateKeepWithNextPending(childLC.getKeepWithNextPending());
+ childLC.clearKeepsPending();
prevLM = curLM;
}
@@ -377,6 +386,8 @@
context.clearPendingMarks();
addKnuthElementsForBreakAfter(returnList, context);
+ context.updateKeepWithNextPending(getKeepWithNextStrength());
+
setFinished(true);
return returnList;
}
@@ -990,26 +1001,22 @@
/** {@inheritDoc} */
public int getKeepTogetherStrength() {
- int strength = KEEP_AUTO;
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getBlockContainerFO().getKeepTogether().getWithinPage()));
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getBlockContainerFO().getKeepTogether().getWithinColumn()));
+ int strength = KeepUtil.getCombinedBlockLevelKeepStrength(
+ getBlockContainerFO().getKeepTogether());
strength = Math.max(strength, getParentKeepTogetherStrength());
return strength;
}
/** {@inheritDoc} */
- public boolean mustKeepWithPrevious() {
- //TODO Keeps will have to be more sophisticated sooner or later
- return !getBlockContainerFO().getKeepWithPrevious().getWithinPage().isAuto()
- || !getBlockContainerFO().getKeepWithPrevious().getWithinColumn().isAuto();
+ public int getKeepWithNextStrength() {
+ return KeepUtil.getCombinedBlockLevelKeepStrength(
+ getBlockContainerFO().getKeepWithNext());
}
/** {@inheritDoc} */
- public boolean mustKeepWithNext() {
- return !getBlockContainerFO().getKeepWithNext().getWithinPage().isAuto()
- || !getBlockContainerFO().getKeepWithNext().getWithinColumn().isAuto();
+ public int getKeepWithPreviousStrength() {
+ return KeepUtil.getCombinedBlockLevelKeepStrength(
+ getBlockContainerFO().getKeepWithPrevious());
}
/**
@@ -1021,16 +1028,12 @@
// --------- Property Resolution related functions --------- //
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
public boolean getGeneratesReferenceArea() {
return true;
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
public boolean getGeneratesBlockArea() {
return true;
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -30,6 +30,7 @@
import org.apache.fop.area.Block;
import org.apache.fop.area.LineArea;
import org.apache.fop.datatypes.Length;
+import org.apache.fop.fo.properties.KeepProperty;
import org.apache.fop.fonts.Font;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.fonts.FontTriplet;
@@ -209,26 +210,20 @@
/** {@inheritDoc} */
public int getKeepTogetherStrength() {
- int strength = KEEP_AUTO;
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getBlockFO().getKeepTogether().getWithinPage()));
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getBlockFO().getKeepTogether().getWithinColumn()));
+ KeepProperty keep = getBlockFO().getKeepTogether();
+ int strength = KeepUtil.getCombinedBlockLevelKeepStrength(keep);
strength = Math.max(strength, getParentKeepTogetherStrength());
return strength;
}
/** {@inheritDoc} */
- public boolean mustKeepWithPrevious() {
- //TODO Keeps will have to be more sophisticated sooner or later
- return !getBlockFO().getKeepWithPrevious().getWithinPage().isAuto()
- || !getBlockFO().getKeepWithPrevious().getWithinColumn().isAuto();
+ public int getKeepWithNextStrength() {
+ return KeepUtil.getCombinedBlockLevelKeepStrength(getBlockFO().getKeepWithNext());
}
/** {@inheritDoc} */
- public boolean mustKeepWithNext() {
- return !getBlockFO().getKeepWithNext().getWithinPage().isAuto()
- || !getBlockFO().getKeepWithNext().getWithinColumn().isAuto();
+ public int getKeepWithPreviousStrength() {
+ return KeepUtil.getCombinedBlockLevelKeepStrength(getBlockFO().getKeepWithPrevious());
}
/** {@inheritDoc} */
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLevelLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLevelLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLevelLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockLevelLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -56,10 +56,22 @@
boolean mustKeepTogether();
/**
+ * Returns the keep-with-previous strength for this element.
+ * @return the keep-with-previous strength
+ */
+ int getKeepWithPreviousStrength();
+
+ /**
* @return true if this element must be kept with the previous element.
*/
boolean mustKeepWithPrevious();
+ /**
+ * Returns the keep-with-next strength for this element.
+ * @return the keep-with-next strength
+ */
+ int getKeepWithNextStrength();
+
/**
* @return true if this element must be kept with the next element.
*/
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -265,6 +265,7 @@
if (!firstVisibleMarkServed) {
addKnuthElementsForSpaceBefore(returnList, alignment);
+ context.updateKeepWithPreviousPending(getKeepWithPreviousStrength());
}
addKnuthElementsForBorderPaddingBefore(returnList, !firstVisibleMarkServed);
@@ -296,8 +297,9 @@
// get elements from curLM
returnedList = curLM.getNextKnuthElements(childLC, alignment);
if (contentList.size() == 0 && childLC.isKeepWithPreviousPending()) {
- context.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING);
- childLC.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING, false);
+ //Propagate keep-with-previous up from the first child
+ context.updateKeepWithPreviousPending(childLC.getKeepWithPreviousPending());
+ childLC.clearKeepWithPreviousPending();
}
if (returnedList != null
&& returnedList.size() == 1
@@ -364,9 +366,8 @@
}
}
// propagate and clear
- context.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING, childLC.isKeepWithNextPending());
- childLC.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING, false);
- childLC.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING, false);
+ context.updateKeepWithNextPending(childLC.getKeepWithNextPending());
+ childLC.clearKeepsPending();
prevLM = curLM;
}
@@ -400,12 +401,7 @@
wrapPositionElement(forcedBreakAfterLast, returnList, false);
}
- if (mustKeepWithNext()) {
- context.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING);
- }
- if (mustKeepWithPrevious()) {
- context.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING);
- }
+ context.updateKeepWithNextPending(getKeepWithNextStrength());
setFinished(true);
@@ -425,14 +421,15 @@
|| childLC.isKeepWithPreviousPending()) {
int strength = getKeepTogetherStrength();
- if (context.isKeepWithNextPending()) {
- context.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING, false);
- strength = KEEP_ALWAYS;
- }
- if (childLC.isKeepWithPreviousPending()) {
- childLC.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING, false);
- strength = KEEP_ALWAYS;
- }
+
+ //Handle pending keep-with-next
+ strength = Math.max(strength, context.getKeepWithNextPending());
+ context.clearKeepWithNextPending();
+
+ //Handle pending keep-with-previous from child LM
+ strength = Math.max(strength, childLC.getKeepWithPreviousPending());
+ childLC.clearKeepWithPreviousPending();
+
int penalty = KeepUtil.getPenaltyForKeep(strength);
// add a penalty to forbid or discourage a break between blocks
@@ -823,12 +820,12 @@
/** {@inheritDoc} */
public boolean mustKeepWithPrevious() {
- return false;
+ return getKeepWithPreviousStrength() > KEEP_AUTO;
}
/** {@inheritDoc} */
public boolean mustKeepWithNext() {
- return false;
+ return getKeepWithNextStrength() > KEEP_AUTO;
}
/**
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -107,8 +107,8 @@
returnedList = curLM.getNextKnuthElements(childLC, alignment);
//log.debug("FLM.getNextKnuthElements> returnedList.size() = " + returnedList.size());
if (returnList.size() == 0 && childLC.isKeepWithPreviousPending()) {
- context.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING);
- childLC.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING, false);
+ context.updateKeepWithPreviousPending(childLC.getKeepWithPreviousPending());
+ childLC.clearKeepWithPreviousPending();
}
// "wrap" the Position inside each element
@@ -124,20 +124,7 @@
return returnList;
} else {
if (returnList.size() > 0) {
- // there is a block before this one
- if (context.isKeepWithNextPending()
- || childLC.isKeepWithPreviousPending()) {
- //Clear pending keep flag
- context.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING, false);
- childLC.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING, false);
- // add an infinite penalty to forbid a break between blocks
- returnList.add(new BreakElement(
- new Position(this), KnuthElement.INFINITE, context));
- } else if (!((ListElement) returnList.getLast()).isGlue()) {
- // add a null penalty to allow a break between blocks
- returnList.add(new BreakElement(
- new Position(this), 0, context));
- }
+ addInBetweenBreak(returnList, context, childLC);
}
if (returnedList.size() > 0) {
returnList.addAll(returnedList);
@@ -155,11 +142,12 @@
}
}
}
- if (childLC.isKeepWithNextPending()) {
- //Clear and propagate
- childLC.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING, false);
- context.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING);
- }
+
+ //Propagate and clear
+ context.updateKeepWithNextPending(childLC.getKeepWithNextPending());
+ childLC.clearKeepWithNextPending();
+
+ context.updateKeepWithNextPending(getKeepWithNextStrength());
}
SpaceResolver.resolveElementList(returnList);
@@ -213,18 +201,16 @@
}
/** {@inheritDoc} */
- public boolean mustKeepWithPrevious() {
- return false;
+ public int getKeepWithNextStrength() {
+ return KEEP_AUTO;
}
/** {@inheritDoc} */
- public boolean mustKeepWithNext() {
- return false;
+ public int getKeepWithPreviousStrength() {
+ return KEEP_AUTO;
}
-
- /**
- * {@inheritDoc}
- */
+
+ /** {@inheritDoc} */
public LinkedList getChangedKnuthElements(List oldList, /*int flaggedPenalty,*/ int alignment) {
ListIterator oldListIterator = oldList.listIterator();
KnuthElement returnedElement;
@@ -357,6 +343,6 @@
public int getContentAreaBPD() {
return (int) getCurrentPV().getBodyRegion().getBPD();
}
-
+
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FootnoteBodyLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FootnoteBodyLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FootnoteBodyLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/FootnoteBodyLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -96,4 +96,14 @@
return getParentKeepTogetherStrength();
}
+ /** {@inheritDoc} */
+ public int getKeepWithNextStrength() {
+ return KEEP_AUTO;
+ }
+
+ /** {@inheritDoc} */
+ public int getKeepWithPreviousStrength() {
+ return KEEP_AUTO;
+ }
+
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/KeepUtil.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/KeepUtil.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/KeepUtil.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/KeepUtil.java Fri Apr 25 03:56:53 2008
@@ -20,6 +20,7 @@
package org.apache.fop.layoutmgr;
import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.properties.KeepProperty;
import org.apache.fop.fo.properties.Property;
/**
@@ -47,6 +48,29 @@
}
/**
+ * Returns the combined block-level keep strength from a keep property.
+ * <p>
+ * Note: This is a temporary method to be used until it is possible to differentiate between
+ * page and column keeps!
+ * @param keep the keep property
+ * @return the combined keep strength
+ */
+ public static int getCombinedBlockLevelKeepStrength(KeepProperty keep) {
+ return Math.max(
+ getKeepStrength(keep.getWithinPage()),
+ getKeepStrength(keep.getWithinColumn()));
+ }
+
+ /**
+ * Indicates whether a keep strength indicates a keep constraint.
+ * @param strength the keep strength
+ * @return true if the keep is not "auto"
+ */
+ public static boolean hasKeep(int strength) {
+ return strength > BlockLevelLayoutManager.KEEP_AUTO;
+ }
+
+ /**
* Returns the penalty value to be used for a certain keep strength.
* <ul>
* <li>"auto": returns 0</li>
@@ -65,6 +89,21 @@
penalty--;
}
return penalty;
+ }
+
+ /**
+ * Returns a string representation of a keep strength value.
+ * @param keepStrength the keep strength
+ * @return the string representation
+ */
+ public static String keepStrengthToString(int keepStrength) {
+ if (keepStrength == BlockLevelLayoutManager.KEEP_AUTO) {
+ return "auto";
+ } else if (keepStrength == BlockLevelLayoutManager.KEEP_ALWAYS) {
+ return "always";
+ } else {
+ return Integer.toString(keepStrength);
+ }
}
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/LayoutContext.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/LayoutContext.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/LayoutContext.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/LayoutContext.java Fri Apr 25 03:56:53 2008
@@ -63,12 +63,12 @@
* This flag indicates that there's a keep-with-next that hasn't
* been processed, yet.
*/
- public static final int KEEP_WITH_NEXT_PENDING = 0x200;
+ //public static final int KEEP_WITH_NEXT_PENDING = 0x200;
/**
* This flag indicates that there's a keep-with-previous that hasn't
* been processed, yet.
*/
- public static final int KEEP_WITH_PREVIOUS_PENDING = 0x400;
+ //public static final int KEEP_WITH_PREVIOUS_PENDING = 0x400;
private int flags; // Contains some set of flags defined above
@@ -135,7 +135,6 @@
/** Amount of space before / start */
private int spaceBefore = 0;
-
/** Amount of space after / end */
private int spaceAfter = 0;
@@ -145,9 +144,11 @@
private int lineEndBorderAndPaddingWidth = 0;
private int breakBefore;
-
private int breakAfter;
+ private int pendingKeepWithNext = BlockLevelLayoutManager.KEEP_AUTO;
+ private int pendingKeepWithPrevious = BlockLevelLayoutManager.KEEP_AUTO;
+
/**
* Copy constructor for creating child layout contexts.
* @param parentLC the parent layout context to copy from
@@ -167,6 +168,8 @@
this.lineStartBorderAndPaddingWidth = parentLC.lineStartBorderAndPaddingWidth;
this.lineEndBorderAndPaddingWidth = parentLC.lineEndBorderAndPaddingWidth;
copyPendingMarksFrom(parentLC);
+ this.pendingKeepWithNext = parentLC.pendingKeepWithNext;
+ this.pendingKeepWithPrevious = parentLC.pendingKeepWithPrevious;
// Copy other fields as necessary.
}
@@ -228,12 +231,74 @@
return ((this.flags & SUPPRESS_LEADING_SPACE) != 0);
}
+ /**
+ * Returns the strength of a keep-with-next currently pending.
+ * @return the keep-with-next strength
+ */
+ public int getKeepWithNextPending() {
+ return this.pendingKeepWithNext;
+ }
+
+ /**
+ * Returns the strength of a keep-with-previous currently pending.
+ * @return the keep-with-previous strength
+ */
+ public int getKeepWithPreviousPending() {
+ return this.pendingKeepWithPrevious;
+ }
+
+ /**
+ * Clears any pending keep-with-next strength.
+ */
+ public void clearKeepWithNextPending() {
+ this.pendingKeepWithNext = BlockLevelLayoutManager.KEEP_AUTO;
+ }
+
+ /**
+ * Clears any pending keep-with-previous strength.
+ */
+ public void clearKeepWithPreviousPending() {
+ this.pendingKeepWithPrevious = BlockLevelLayoutManager.KEEP_AUTO;
+ }
+
+ /**
+ * Clears both keep-with-previous and keep-with-next strengths.
+ */
+ public void clearKeepsPending() {
+ clearKeepWithPreviousPending();
+ clearKeepWithNextPending();
+ }
+
+ /**
+ * Updates the currently pending keep-with-next strength.
+ * @param strength the new strength to consider
+ */
+ public void updateKeepWithNextPending(int strength) {
+ this.pendingKeepWithNext = Math.max(this.pendingKeepWithNext, strength);
+ }
+
+ /**
+ * Updates the currently pending keep-with-previous strength.
+ * @param strength the new strength to consider
+ */
+ public void updateKeepWithPreviousPending(int strength) {
+ this.pendingKeepWithPrevious = Math.max(this.pendingKeepWithPrevious, strength);
+ }
+
+ /**
+ * Indicates whether a keep-with-next constraint is pending.
+ * @return true if a keep-with-next constraint is pending
+ */
public boolean isKeepWithNextPending() {
- return ((this.flags & KEEP_WITH_NEXT_PENDING) != 0);
+ return getKeepWithNextPending() != BlockLevelLayoutManager.KEEP_AUTO;
}
+ /**
+ * Indicates whether a keep-with-previous constraint is pending.
+ * @return true if a keep-with-previous constraint is pending
+ */
public boolean isKeepWithPreviousPending() {
- return ((this.flags & KEEP_WITH_PREVIOUS_PENDING) != 0);
+ return getKeepWithPreviousPending() != BlockLevelLayoutManager.KEEP_AUTO;
}
public void setLeadingSpace(SpaceSpecifier space) {
@@ -595,8 +660,9 @@
+ "\nStarts New Area: \t" + startsNewArea()
+ "\nIs Last Area: \t" + isLastArea()
+ "\nTry Hyphenate: \t" + tryHyphenate()
- + "\nKeeps: \t[" + (isKeepWithNextPending() ? "keep-with-next" : "") + "]["
- + (isKeepWithPreviousPending() ? "keep-with-previous" : "") + "] pending"
+ + "\nKeeps: \t[keep-with-next=" + KeepUtil.keepStrengthToString(getKeepWithNextPending())
+ + "][keep-with-previous="
+ + KeepUtil.keepStrengthToString(getKeepWithPreviousPending()) + "] pending"
+ "\nBreaks: \tforced [" + (breakBefore != Constants.EN_AUTO ? "break-before" : "") + "]["
+ (breakAfter != Constants.EN_AUTO ? "break-after" : "") + "]";
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -410,5 +410,15 @@
return KEEP_AUTO;
}
+ /** {@inheritDoc} */
+ public int getKeepWithNextStrength() {
+ return KEEP_AUTO;
+ }
+
+ /** {@inheritDoc} */
+ public int getKeepWithPreviousStrength() {
+ return KEEP_AUTO;
+ }
+
}
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -314,7 +314,7 @@
// get KnuthElements from curLM
returnedList = curLM.getNextKnuthElements(childLC, alignment);
if (returnList.size() == 0 && childLC.isKeepWithPreviousPending()) {
- childLC.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING, false);
+ childLC.clearKeepWithPreviousPending();
}
if (returnedList == null
|| returnedList.size() == 0) {
@@ -324,7 +324,7 @@
}
if (curLM instanceof InlineLevelLayoutManager) {
- context.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING, false);
+ context.clearKeepWithNextPending();
// "wrap" the Position stored in each element of returnedList
ListIterator seqIter = returnedList.listIterator();
while (seqIter.hasNext()) {
@@ -365,10 +365,8 @@
returnList.add(sequence);
}
// propagate and clear
- context.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING,
- childLC.isKeepWithNextPending());
- childLC.setFlags(LayoutContext.KEEP_WITH_NEXT_PENDING, false);
- childLC.setFlags(LayoutContext.KEEP_WITH_PREVIOUS_PENDING, false);
+ context.updateKeepWithNextPending(childLC.getKeepWithNextPending());
+ childLC.clearKeepsPending();
}
lastSequence = (KnuthSequence) returnList.getLast();
lastChildLM = curLM;
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -1281,23 +1281,27 @@
return ((BlockLevelLayoutManager) getParent()).getKeepTogetherStrength();
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
public boolean mustKeepWithPrevious() {
- return false;
+ return getKeepWithPreviousStrength() > KEEP_AUTO;
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
public boolean mustKeepWithNext() {
- return false;
+ return getKeepWithNextStrength() > KEEP_AUTO;
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
+ public int getKeepWithNextStrength() {
+ return KEEP_AUTO;
+ }
+
+ /** {@inheritDoc} */
+ public int getKeepWithPreviousStrength() {
+ return KEEP_AUTO;
+ }
+
+ /** {@inheritDoc} */
public int negotiateBPDAdjustment(int adj, KnuthElement lastElement) {
LeafPosition pos = (LeafPosition)lastElement.getPosition();
int totalAdj = adj;
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -280,26 +280,20 @@
/** {@inheritDoc} */
public int getKeepTogetherStrength() {
- int strength = KEEP_AUTO;
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getListBlockFO().getKeepTogether().getWithinPage()));
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getListBlockFO().getKeepTogether().getWithinColumn()));
+ int strength = KeepUtil.getCombinedBlockLevelKeepStrength(
+ getListBlockFO().getKeepTogether());
strength = Math.max(strength, getParentKeepTogetherStrength());
return strength;
}
/** {@inheritDoc} */
- public boolean mustKeepWithPrevious() {
- //TODO Keeps will have to be more sophisticated sooner or later
- return !getListBlockFO().getKeepWithPrevious().getWithinPage().isAuto()
- || !getListBlockFO().getKeepWithPrevious().getWithinColumn().isAuto();
+ public int getKeepWithNextStrength() {
+ return KeepUtil.getCombinedBlockLevelKeepStrength(getListBlockFO().getKeepWithNext());
}
/** {@inheritDoc} */
- public boolean mustKeepWithNext() {
- return !getListBlockFO().getKeepWithNext().getWithinPage().isAuto()
- || !getListBlockFO().getKeepWithNext().getWithinColumn().isAuto();
+ public int getKeepWithPreviousStrength() {
+ return KeepUtil.getCombinedBlockLevelKeepStrength(getListBlockFO().getKeepWithPrevious());
}
/** {@inheritDoc} */
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java?rev=651570&r1=651569&r2=651570&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java Fri Apr 25 03:56:53 2008
@@ -222,13 +222,19 @@
/** {@inheritDoc} */
public int getKeepTogetherStrength() {
- int strength = KEEP_AUTO;
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getPartFO().getKeepTogether().getWithinPage()));
- strength = Math.max(strength, KeepUtil.getKeepStrength(
- getPartFO().getKeepTogether().getWithinColumn()));
+ int strength = KeepUtil.getCombinedBlockLevelKeepStrength(getPartFO().getKeepTogether());
strength = Math.max(strength, getParentKeepTogetherStrength());
return strength;
+ }
+
+ /** {@inheritDoc} */
+ public int getKeepWithNextStrength() {
+ return KEEP_AUTO;
+ }
+
+ /** {@inheritDoc} */
+ public int getKeepWithPreviousStrength() {
+ return KEEP_AUTO;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org