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/