FileDocCategorySizeDatePackage
SlidePersistAtom.javaAPI DocApache Poi 3.0.14361Mon Jan 01 18:55:34 GMT 2007org.apache.poi.hslf.record

SlidePersistAtom

public class SlidePersistAtom extends RecordAtom
A SlidePersist Atom (type 1011). Holds information on the text of a given slide, which are stored in the same SlideListWithText
author
Nick Burch

Fields Summary
private byte[]
_header
private static long
_type
private int
refID
Slide reference ID. Should correspond to the PersistPtr "sheet ID" of the matching slide/notes record
private boolean
hasShapesOtherThanPlaceholders
private int
numPlaceholderTexts
Number of placeholder texts that will follow in the SlideListWithText
private int
slideIdentifier
The internal identifier (256+), which is used to tie slides and notes together
private byte[]
reservedFields
Reserved fields. Who knows what they do
Constructors Summary
protected SlidePersistAtom(byte[] source, int start, int len)
For the SlidePersist Atom

		// Sanity Checking
		if(len < 8) { len = 8; }

		// Get the header
		_header = new byte[8];
		System.arraycopy(source,start,_header,0,8);

		// Grab the reference ID
		refID = (int)LittleEndian.getInt(source,start+8);

		// Next up is a set of flags, but only bit 3 is used!
		int flags = (int)LittleEndian.getInt(source,start+12);
		if(flags == 4) {
			hasShapesOtherThanPlaceholders = true;
		} else {
			hasShapesOtherThanPlaceholders = false;
		}

		// Now the number of Placeholder Texts
		numPlaceholderTexts = (int)LittleEndian.getInt(source,start+16);

		// Last useful one is the unique slide identifier
		slideIdentifier = (int)LittleEndian.getInt(source,start+20);

		// Finally you have typically 4 or 8 bytes of reserved fields, 
		//  all zero running from 24 bytes in to the end
		reservedFields = new byte[len-24];
		System.arraycopy(source,start+24,reservedFields,0,reservedFields.length);
	
public SlidePersistAtom()
Create a new SlidePersistAtom, for use with a new Slide

		_header = new byte[8];
		LittleEndian.putUShort(_header, 0, 0);
		LittleEndian.putUShort(_header, 2, (int)_type);
		LittleEndian.putInt(_header, 4, 20);

		hasShapesOtherThanPlaceholders = true;
		reservedFields = new byte[4];
	
Methods Summary
public booleangetHasShapesOtherThanPlaceholders()

 return hasShapesOtherThanPlaceholders; 
public intgetNumPlaceholderTexts()

 return numPlaceholderTexts; 
public longgetRecordType()
We are of type 1011

 return _type; 
public intgetRefID()


	    return refID; 
public intgetSlideIdentifier()

 return slideIdentifier; 
public voidsetRefID(int id)

		refID = id;
	
public voidsetSlideIdentifier(int id)

		slideIdentifier = id;
	
public voidwriteOut(java.io.OutputStream out)
Write the contents of the record back, so it can be written to disk

		// Header - size or type unchanged
		out.write(_header);

		// Compute the flags part - only bit 3 is used
		int flags = 0;
		if(hasShapesOtherThanPlaceholders) {
			flags = 4;
		}

		// Write out our fields
		writeLittleEndian(refID,out);
		writeLittleEndian(flags,out);
		writeLittleEndian(numPlaceholderTexts,out);
		writeLittleEndian(slideIdentifier,out);
		out.write(reservedFields);