The usermodel code is now responsible for filtering out duplicate SlideAtomSets, so update to no longer check for them
Add the ability to get at the Slide record that this is based on git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353732 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3359aeacdb
commit
c6ad45cdf8
@ -38,20 +38,21 @@ public class Slide extends Sheet
|
|||||||
|
|
||||||
private int _sheetNo;
|
private int _sheetNo;
|
||||||
private org.apache.poi.hslf.record.Slide _slide;
|
private org.apache.poi.hslf.record.Slide _slide;
|
||||||
private SlideAtomsSet[] _atomSet;
|
private SlideAtomsSet _atomSet;
|
||||||
private TextRun[] _runs;
|
private TextRun[] _runs;
|
||||||
private TextRun[] _otherRuns; // Any from the PPDrawing, shouldn't really be any though
|
private TextRun[] _otherRuns; // Any from the PPDrawing, shouldn't really be any though
|
||||||
private Notes _notes;
|
private Notes _notes; // usermodel needs to set this
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a Slide from the Slide record, and the SlideAtomsSets
|
* Constructs a Slide from the Slide record, and the SlideAtomsSet
|
||||||
* for ones not embeded in the PPDrawing.
|
* containing the text.
|
||||||
* Initialises TextRuns, to provide easier access to the text
|
* Initialises TextRuns, to provide easier access to the text
|
||||||
*
|
*
|
||||||
* @param slide the Slide record we're based on
|
* @param slide the Slide record we're based on
|
||||||
|
* @param notes the Notes sheet attached to us
|
||||||
* @param atomSet the SlideAtomsSet to get the text from
|
* @param atomSet the SlideAtomsSet to get the text from
|
||||||
*/
|
*/
|
||||||
public Slide(org.apache.poi.hslf.record.Slide slide, Notes notes, SlideAtomsSet[] atomSet) {
|
public Slide(org.apache.poi.hslf.record.Slide slide, Notes notes, SlideAtomsSet atomSet) {
|
||||||
_slide = slide;
|
_slide = slide;
|
||||||
_notes = notes;
|
_notes = notes;
|
||||||
_atomSet = atomSet;
|
_atomSet = atomSet;
|
||||||
@ -63,38 +64,40 @@ public class Slide extends Sheet
|
|||||||
// Grab the TextRuns from the PPDrawing
|
// Grab the TextRuns from the PPDrawing
|
||||||
_otherRuns = findTextRuns(_slide.getPPDrawing());
|
_otherRuns = findTextRuns(_slide.getPPDrawing());
|
||||||
|
|
||||||
|
|
||||||
// Ensure we've only got only copy of each SlideAtomSet
|
|
||||||
// When in doubt, prefere the later one
|
|
||||||
Hashtable seenSets = new Hashtable();
|
|
||||||
Vector useSets = new Vector();
|
|
||||||
for(int i=0; i<_atomSet.length; i++) {
|
|
||||||
SlideAtomsSet set = _atomSet[i];
|
|
||||||
int id = set.getSlidePersistAtom().getRefID();
|
|
||||||
Integer idI = new Integer(id);
|
|
||||||
if(seenSets.containsKey(idI)) {
|
|
||||||
// Replace old one
|
|
||||||
Integer replacePos = (Integer)seenSets.get(idI);
|
|
||||||
useSets.set(replacePos.intValue(),set);
|
|
||||||
} else {
|
|
||||||
// Use for now
|
|
||||||
useSets.add(set);
|
|
||||||
seenSets.put(idI,new Integer(useSets.size()-1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// For the text coming in from the SlideAtomsSet:
|
// For the text coming in from the SlideAtomsSet:
|
||||||
// Build up TextRuns from pairs of TextHeaderAtom and
|
// Build up TextRuns from pairs of TextHeaderAtom and
|
||||||
// one of TextBytesAtom or TextCharsAtom
|
// one of TextBytesAtom or TextCharsAtom
|
||||||
Vector runSets = new Vector();
|
Vector textRuns = new Vector();
|
||||||
for(int i=0; i<useSets.size(); i++) {
|
if(_atomSet != null) {
|
||||||
SlideAtomsSet set = (SlideAtomsSet)useSets.get(i);
|
findTextRuns(_atomSet.getSlideRecords(),textRuns);
|
||||||
findTextRuns(set.getSlideRecords(),runSets);
|
} else {
|
||||||
|
// No text on the slide, must just be pictures
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build an array, more useful than a vector
|
// Build an array, more useful than a vector
|
||||||
_runs = new TextRun[runSets.size()];
|
_runs = new TextRun[textRuns.size()];
|
||||||
for(int i=0; i<_runs.length; i++) {
|
for(int i=0; i<_runs.length; i++) {
|
||||||
_runs[i] = (TextRun)runSets.get(i);
|
_runs[i] = (TextRun)textRuns.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the Notes that are associated with this. Updates the
|
||||||
|
* references in the records to point to the new ID
|
||||||
|
*/
|
||||||
|
public void setNotes(Notes notes) {
|
||||||
|
_notes = notes;
|
||||||
|
|
||||||
|
// Update the Slide Atom's ID of where to point to
|
||||||
|
SlideAtom sa = _slide.getSlideAtom();
|
||||||
|
|
||||||
|
if(notes == null) {
|
||||||
|
// Set to 0
|
||||||
|
sa.setNotesID(0);
|
||||||
|
} else {
|
||||||
|
// Set to the value from the notes' sheet id
|
||||||
|
sa.setNotesID(notes.getSheetNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,6 +114,11 @@ public class Slide extends Sheet
|
|||||||
*/
|
*/
|
||||||
public int getSheetNumber() { return _sheetNo; }
|
public int getSheetNumber() { return _sheetNo; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the underlying slide record
|
||||||
|
*/
|
||||||
|
public org.apache.poi.hslf.record.Slide getSlideRecord() { return _slide; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Notes Sheet for this slide, or null if there isn't one
|
* Returns the Notes Sheet for this slide, or null if there isn't one
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user