You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by ni...@apache.org on 2006/03/26 21:07:53 UTC
svn commit: r388941 - in
/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf: model/Notes.java
model/Sheet.java model/Slide.java record/PersistPtrHolder.java
record/PositionDependentRecordContainer.java record/Slide.java
usermodel/SlideShow.java
Author: nick
Date: Sun Mar 26 11:07:52 2006
New Revision: 388941
URL: http://svn.apache.org/viewcvs?rev=388941&view=rev
Log:
Start to do more useful/sensible things with Slide IDs
Modified:
jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Notes.java
jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java
jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java
jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java
jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PositionDependentRecordContainer.java
jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/Slide.java
jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Notes.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Notes.java?rev=388941&r1=388940&r2=388941&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Notes.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Notes.java Sun Mar 26 11:07:52 2006
@@ -19,11 +19,7 @@
package org.apache.poi.hslf.model;
-import java.util.*;
-
-import org.apache.poi.hslf.record.*;
-import org.apache.poi.hslf.record.SlideListWithText.*;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.hslf.record.PPDrawing;
/**
* This class represents a slide's notes in a PowerPoint Document. It
@@ -35,8 +31,8 @@
public class Notes extends Sheet
{
-
private int _sheetNo;
+ private int _slideNo;
private org.apache.poi.hslf.record.Notes _notes;
private TextRun[] _runs;
@@ -48,9 +44,12 @@
*/
public Notes (org.apache.poi.hslf.record.Notes notes) {
_notes = notes;
+
+ // Grab our internal sheet ID
+ _sheetNo = notes.getSheetId();
- // Grab the sheet number, via the NotesAtom
- _sheetNo = _notes.getNotesAtom().getSlideID();
+ // Grab the number of the slide we're for, via the NotesAtom
+ _slideNo = _notes.getNotesAtom().getSlideID();
// Now, build up TextRuns from pairs of TextHeaderAtom and
// one of TextBytesAtom or TextCharsAtom, found inside
@@ -67,8 +66,13 @@
public TextRun[] getTextRuns() { return _runs; }
/**
- * Returns the sheet number
+ * Returns the (internal, RefId based) sheet number (RefId)
*/
public int getSheetNumber() { return _sheetNo; }
+
+ /**
+ * Returns the (internal, identifer based) number of the slide we're attached to
+ */
+ public int getSlideInternalNumber() { return _slideNo; }
protected PPDrawing getPPDrawing() { return _notes.getPPDrawing(); }}
Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java?rev=388941&r1=388940&r2=388941&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java Sun Mar 26 11:07:52 2006
@@ -44,7 +44,8 @@
public abstract TextRun[] getTextRuns();
/**
- * Returns the sheet number
+ * Returns the (internal, RefID based) sheet number, as used
+ * to reference this sheet from other records.
*/
public abstract int getSheetNumber();
Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java?rev=388941&r1=388940&r2=388941&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java Sun Mar 26 11:07:52 2006
@@ -19,11 +19,11 @@
package org.apache.poi.hslf.model;
-import java.util.*;
+import java.util.Vector;
-import org.apache.poi.hslf.record.*;
-import org.apache.poi.hslf.record.SlideListWithText.*;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.hslf.record.PPDrawing;
+import org.apache.poi.hslf.record.SlideAtom;
+import org.apache.poi.hslf.record.SlideListWithText.SlideAtomsSet;
/**
* This class represents a slide in a PowerPoint Document. It allows
@@ -37,6 +37,7 @@
{
private int _sheetNo;
+ private int _slideNo;
private org.apache.poi.hslf.record.Slide _slide;
private SlideAtomsSet _atomSet;
private TextRun[] _runs;
@@ -52,14 +53,12 @@
* @param notes the Notes sheet attached to us
* @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, int slideNumber) {
_slide = slide;
_notes = notes;
_atomSet = atomSet;
-
- // Grab the sheet number
- //_sheetNo = _slide.getSlideAtom().getSheetNumber();
- _sheetNo = -1;
+ _sheetNo = slide.getSheetId();
+ _slideNo = slideNumber;
// Grab the TextRuns from the PPDrawing
_otherRuns = findTextRuns(_slide.getPPDrawing());
@@ -89,9 +88,13 @@
/**
* Create a new Slide instance
+ * @param sheetNumber The internal number of the sheet, as used by PersistPtrHolder
+ * @param slideNumber The user facing number of the sheet
*/
- public Slide(){
- _slide = new org.apache.poi.hslf.record.Slide();
+ public Slide(int sheetNumber, int slideNumber){
+ _slide = new org.apache.poi.hslf.record.Slide();
+ _sheetNo = sheetNumber;
+ _slideNo = slideNumber;
}
/**
@@ -122,10 +125,16 @@
public TextRun[] getTextRuns() { return _runs; }
/**
- * Returns the sheet number
+ * Returns the (internal, RefId based) sheet number
+ * @see getSlideNumber()
*/
public int getSheetNumber() { return _sheetNo; }
-
+
+ /**
+ * Returns the (public facing) page number of this slide
+ */
+ public int getSlideNumber() { return _slideNo; }
+
/**
* Returns the underlying slide record
*/
Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java?rev=388941&r1=388940&r2=388941&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java Sun Mar 26 11:07:52 2006
@@ -41,7 +41,7 @@
private byte[] _header;
private byte[] _ptrData; // Will need to update this once we allow updates to _slideLocations
private long _type;
-
+
/**
* Holds the lookup for slides to their position on disk.
* You always need to check the most recent PersistPtrHolder
Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PositionDependentRecordContainer.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PositionDependentRecordContainer.java?rev=388941&r1=388940&r2=388941&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PositionDependentRecordContainer.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/PositionDependentRecordContainer.java Sun Mar 26 11:07:52 2006
@@ -29,6 +29,20 @@
public abstract class PositionDependentRecordContainer extends RecordContainer implements PositionDependentRecord
{
+ private int sheetId; // Found from PersistPtrHolder
+
+ /**
+ * Fetch our sheet ID, as found from a PersistPtrHolder.
+ * Should match the RefId of our matching SlidePersistAtom
+ */
+ public int getSheetId() { return sheetId; }
+
+ /**
+ * Set our sheet ID, as found from a PersistPtrHolder
+ */
+ public void setSheetId(int id) { sheetId = id; }
+
+
/** Our location on the disk, as of the last write out */
protected int myLastOnDiskOffset;
Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/Slide.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/Slide.java?rev=388941&r1=388940&r2=388941&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/Slide.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/Slide.java Sun Mar 26 11:07:52 2006
@@ -99,7 +99,7 @@
* We are of type 1006
*/
public long getRecordType() { return _type; }
-
+
/**
* Write the contents of the record back, so it can be written
* to disk
Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java?rev=388941&r1=388940&r2=388941&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java Sun Mar 26 11:07:52 2006
@@ -33,6 +33,7 @@
import org.apache.poi.hslf.record.DocumentAtom;
import org.apache.poi.hslf.record.FontCollection;
import org.apache.poi.hslf.record.ParentAwareRecord;
+import org.apache.poi.hslf.record.PositionDependentRecordContainer;
import org.apache.poi.hslf.record.Record;
import org.apache.poi.hslf.record.RecordContainer;
import org.apache.poi.hslf.record.RecordTypes;
@@ -210,6 +211,14 @@
(Integer)slideIDtoRecordLookup.get(thisID);
int storeAt = storeAtI.intValue();
+ // Tell it its Sheet ID, if it cares
+ // TODO: Check that this is the right ID to feed in
+ if(pdr instanceof PositionDependentRecordContainer) {
+ PositionDependentRecordContainer pdrc =
+ (PositionDependentRecordContainer)_records[i];
+ pdrc.setSheetId(thisID.intValue());
+ }
+
// Finally, save the record
_mostRecentCoreRecords[storeAt] = _records[i];
}
@@ -356,6 +365,7 @@
org.apache.poi.hslf.record.Slide slideRecord = (org.apache.poi.hslf.record.Slide)slidesV.get(i);
// Decide if we've got a SlideAtomSet to use
+ // TODO: Use the internal IDs to match instead
SlideAtomsSet atomSet = null;
if(i < slideAtomSets.length) {
atomSet = slideAtomSets[i];
@@ -368,14 +378,14 @@
int notesID = sa.getNotesID();
if(notesID != 0) {
for(int k=0; k<_notes.length; k++) {
- if(_notes[k].getSheetNumber() == notesID) {
+ if(_notes[k].getSlideInternalNumber() == notesID) {
thisNotes = _notes[k];
}
}
}
// Create the Slide model layer
- _slides[i] = new Slide(slideRecord,thisNotes,atomSet);
+ _slides[i] = new Slide(slideRecord,thisNotes,atomSet, (i+1));
// Now supply ourselves to all the rich text runs
// of this slide's TextRuns
@@ -492,7 +502,6 @@
if(prev.getSlideIdentifier() < spa.getSlideIdentifier()) {
prev = spa;
}
- System.err.println("Prev is " + prev.getRefID());
}
}
@@ -512,7 +521,8 @@
// Create a new Slide
- Slide slide = new Slide();
+ Slide slide = new Slide(sp.getRefID(), _slides.length+1);
+ // Add in to the list of Slides
Slide[] s = new Slide[_slides.length+1];
System.arraycopy(_slides, 0, s, 0, _slides.length);
s[_slides.length] = slide;
@@ -520,7 +530,8 @@
System.out.println("Added slide " + _slides.length + " with ref " + sp.getRefID() + " and identifier " + sp.getSlideIdentifier());
// Add the core records for this new Slide to the record tree
- org.apache.poi.hslf.record.Slide slideRecord = slide.getSlideRecord();
+ org.apache.poi.hslf.record.Slide slideRecord = slide.getSlideRecord();
+ slideRecord.setSheetId(sp.getRefID());
int slideRecordPos = _hslfSlideShow.appendRootLevelRecord(slideRecord);
_records = _hslfSlideShow.getRecords();
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/