Quellcode durchsuchen

I generalized several casts from KnuthElement to ListElement. This

removes a number of ClassCastExceptions in some files with inline
block content.


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@359189 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_92-beta
Simon Pepping vor 18 Jahren
Ursprung
Commit
7fde5817bc

+ 1
- 1
src/java/org/apache/fop/layoutmgr/AbstractBreaker.java Datei anzeigen

if (p == 0) { if (p == 0) {
lastBreakClass = effectiveList.getStartOn(); lastBreakClass = effectiveList.getStartOn();
} else { } else {
KnuthElement lastBreakElement = effectiveList.getElement(endElementIndex);
ListElement lastBreakElement = effectiveList.getElement(endElementIndex);
if (lastBreakElement.isPenalty()) { if (lastBreakElement.isPenalty()) {
KnuthPenalty pen = (KnuthPenalty)lastBreakElement; KnuthPenalty pen = (KnuthPenalty)lastBreakElement;
lastBreakClass = pen.getBreakClass(); lastBreakClass = pen.getBreakClass();

+ 2
- 2
src/java/org/apache/fop/layoutmgr/BlockKnuthSequence.java Datei anzeigen

*/ */
public static boolean mustKeepTogether(BlockKnuthSequence sequence1, public static boolean mustKeepTogether(BlockKnuthSequence sequence1,
BlockKnuthSequence sequence2) { BlockKnuthSequence sequence2) {
KnuthElement element1 = (KnuthElement) sequence1.get(sequence1.size() - 1);
ListElement element1 = (ListElement) sequence1.get(sequence1.size() - 1);
LayoutManager lm1 = (LayoutManager) element1.getLayoutManager(); LayoutManager lm1 = (LayoutManager) element1.getLayoutManager();
KnuthElement element2 = (KnuthElement) sequence2.get(0);
ListElement element2 = (ListElement) sequence2.get(0);
LayoutManager lm2 = (LayoutManager) element2.getLayoutManager(); LayoutManager lm2 = (LayoutManager) element2.getLayoutManager();
if (!lm1.equals(lm2)) { if (!lm1.equals(lm2)) {
throw new IllegalStateException throw new IllegalStateException

+ 1
- 1
src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java Datei anzeigen

* @return the requested context FO note or null, if no context node could be determined * @return the requested context FO note or null, if no context node could be determined
*/ */
private FONode findContextFO(KnuthSequence seq, int position) { private FONode findContextFO(KnuthSequence seq, int position) {
KnuthElement el = seq.getElement(position);
ListElement el = seq.getElement(position);
while (el.getLayoutManager() == null && position < seq.size() - 1) { while (el.getLayoutManager() == null && position < seq.size() - 1) {
position++; position++;
el = seq.getElement(position); el = seq.getElement(position);

+ 3
- 3
src/java/org/apache/fop/layoutmgr/InlineKnuthSequence.java Datei anzeigen

return false; return false;
} }
// does the first element of the first paragraph add to an existing word? // does the first element of the first paragraph add to an existing word?
KnuthElement lastOldElement, firstNewElement;
ListElement lastOldElement, firstNewElement;
lastOldElement = getLast(); lastOldElement = getLast();
firstNewElement = sequence.getElement(0); firstNewElement = sequence.getElement(0);
if (firstNewElement.isBox() && !firstNewElement.isAuxiliary()
&& lastOldElement.isBox() && lastOldElement.getW() != 0) {
if (firstNewElement.isBox() && !((KnuthElement) firstNewElement).isAuxiliary()
&& lastOldElement.isBox() && ((KnuthElement) lastOldElement).getW() != 0) {
addALetterSpace(); addALetterSpace();
} }
addAll(sequence); addAll(sequence);

+ 8
- 8
src/java/org/apache/fop/layoutmgr/KnuthSequence.java Datei anzeigen

*/ */
public void wrapPositions(LayoutManager lm) { public void wrapPositions(LayoutManager lm) {
ListIterator listIter = listIterator(); ListIterator listIter = listIterator();
KnuthElement element;
ListElement element;
while (listIter.hasNext()) { while (listIter.hasNext()) {
element = (KnuthElement) listIter.next();
element = (ListElement) listIter.next();
element.setPosition element.setPosition
(lm.notifyPos(new NonLeafPosition(lm, element.getPosition()))); (lm.notifyPos(new NonLeafPosition(lm, element.getPosition())));
} }
/** /**
* @return the last element of this sequence. * @return the last element of this sequence.
*/ */
public KnuthElement getLast() {
public ListElement getLast() {
int idx = size(); int idx = size();
if (idx == 0) { if (idx == 0) {
return null; return null;
} }
return (KnuthElement) get(idx - 1);
return (ListElement) get(idx - 1);
} }


/** /**
* Remove the last element of this sequence. * Remove the last element of this sequence.
* @return the removed element. * @return the removed element.
*/ */
public KnuthElement removeLast() {
public ListElement removeLast() {
int idx = size(); int idx = size();
if (idx == 0) { if (idx == 0) {
return null; return null;
} }
return (KnuthElement) remove(idx - 1);
return (ListElement) remove(idx - 1);
} }


/** /**
* @param index The index of the element to be returned * @param index The index of the element to be returned
* @return the element at index index. * @return the element at index index.
*/ */
public KnuthElement getElement(int index) {
return (KnuthElement) get(index);
public ListElement getElement(int index) {
return (ListElement) get(index);
} }


/** /**

+ 1
- 1
src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java Datei anzeigen

index ++) { index ++) {
if (par.getElement(index).isGlue() && par.getElement(index - 1).isBox() if (par.getElement(index).isGlue() && par.getElement(index - 1).isBox()
|| par.getElement(index).isPenalty() || par.getElement(index).isPenalty()
&& par.getElement(index).getP() < KnuthElement.INFINITE) {
&& ((KnuthElement) par.getElement(index)).getP() < KnuthElement.INFINITE) {
// break found // break found
break; break;
} }

+ 11
- 6
src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java Datei anzeigen

import org.apache.fop.layoutmgr.LayoutContext; import org.apache.fop.layoutmgr.LayoutContext;
import org.apache.fop.layoutmgr.LayoutManager; import org.apache.fop.layoutmgr.LayoutManager;
import org.apache.fop.layoutmgr.LeafPosition; import org.apache.fop.layoutmgr.LeafPosition;
import org.apache.fop.layoutmgr.ListElement;
import org.apache.fop.layoutmgr.NonLeafPosition; import org.apache.fop.layoutmgr.NonLeafPosition;
import org.apache.fop.layoutmgr.Position; import org.apache.fop.layoutmgr.Position;
import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.PositionIterator;
// the sequence contains inline Knuth elements // the sequence contains inline Knuth elements
if (sequence.isInlineSequence()) { if (sequence.isInlineSequence()) {
// look at the last element // look at the last element
KnuthElement lastElement;
lastElement = (KnuthElement) sequence.getLast();
ListElement lastElement;
lastElement = sequence.getLast();
if (lastElement == null) { if (lastElement == null) {
throw new NullPointerException( throw new NullPointerException(
"Sequence was empty! lastElement is null"); "Sequence was empty! lastElement is null");
} }
bPrevWasKnuthBox = lastElement.isBox() && lastElement.getW() != 0;
bPrevWasKnuthBox = lastElement.isBox() && ((KnuthElement) lastElement).getW() != 0;
// if last paragraph is open, add the new elements to the paragraph // if last paragraph is open, add the new elements to the paragraph
// else this is the last paragraph // else this is the last paragraph
int localLineHeight = 0, lineStretch = 0, lineShrink = 0; int localLineHeight = 0, lineStretch = 0, lineShrink = 0;
ListIterator seqIterator = seq.listIterator(); ListIterator seqIterator = seq.listIterator();
while (seqIterator.hasNext()) { while (seqIterator.hasNext()) {
KnuthElement element = (KnuthElement) seqIterator.next();
ListElement elt = (ListElement) seqIterator.next();
if (!(elt instanceof KnuthElement)) {
continue;
}
KnuthElement element = (KnuthElement) elt;
localLineHeight += element.getW(); localLineHeight += element.getW();
if (element.isGlue()) { if (element.isGlue()) {
lineStretch += element.getY(); lineStretch += element.getY();
LinkedList targetList = new LinkedList(); LinkedList targetList = new LinkedList();
ListIterator listIter = seq.listIterator(); ListIterator listIter = seq.listIterator();
while (listIter.hasNext()) { while (listIter.hasNext()) {
KnuthElement tempElement;
tempElement = (KnuthElement) listIter.next();
ListElement tempElement;
tempElement = (ListElement) listIter.next();
if (tempElement.getLayoutManager() != this) { if (tempElement.getLayoutManager() != this) {
tempElement.setPosition(notifyPos(new NonLeafPosition(this, tempElement.setPosition(notifyPos(new NonLeafPosition(this,
tempElement.getPosition()))); tempElement.getPosition())));

Laden…
Abbrechen
Speichern