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

SlideAtom

public class SlideAtom extends RecordAtom
A Slide Atom (type 1007). Holds information on the parent Slide, what Master Slide it uses, what Notes is attached to it, that sort of thing. It also has a SSlideLayoutAtom embeded in it, but without the Atom header
author
Nick Burch

Fields Summary
private byte[]
_header
private static long
_type
public static final int
MASTER_SLIDE_ID
public static final int
USES_MASTER_SLIDE_ID
private int
masterID
private int
notesID
private boolean
followMasterObjects
private boolean
followMasterScheme
private boolean
followMasterBackground
private SSlideLayoutAtom
layoutAtom
private byte[]
reserved
Constructors Summary
protected SlideAtom(byte[] source, int start, int len)
For the Slide Atom

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

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

		// Grab the 12 bytes that is "SSlideLayoutAtom"
		byte[] SSlideLayoutAtomData = new byte[12];
		System.arraycopy(source,start+8,SSlideLayoutAtomData,0,12);
		// Use them to build up the SSlideLayoutAtom
		layoutAtom = new SSlideLayoutAtom(SSlideLayoutAtomData);

		// Get the IDs of the master and notes
		masterID = (int)LittleEndian.getInt(source,start+12+8);
		notesID = (int)LittleEndian.getInt(source,start+16+8);

		// Grok the flags, stored as bits
		int flags = LittleEndian.getUShort(source,start+20+8);
		if((flags&4) == 4) {
			followMasterBackground = true;
		} else {
			followMasterBackground = false;
		}
		if((flags&2) == 2) {
			followMasterScheme = true;
		} else {
			followMasterScheme = false;
		}
		if((flags&1) == 1) {
			followMasterObjects = true;
		} else {
			followMasterObjects = false;
		}

		// If there's any other bits of data, keep them about
		// 8 bytes header + 20 bytes to flags + 2 bytes flags = 30 bytes
		reserved = new byte[len-30];
		System.arraycopy(source,start+30,reserved,0,reserved.length);
	
public SlideAtom()
Create a new SlideAtom, to go with a new Slide

		_header = new byte[8];
		LittleEndian.putUShort(_header, 0, 2);
		LittleEndian.putUShort(_header, 2, (int)_type);
		LittleEndian.putInt(_header, 4, 24);
		 
		byte[] ssdate = new byte[12];
		layoutAtom = new SSlideLayoutAtom(ssdate);
		layoutAtom.setGeometryType(SSlideLayoutAtom.BLANK_SLIDE);

		followMasterObjects = true;
		followMasterScheme = true;
		followMasterBackground = true;
		masterID = -2147483648;
		notesID = 0;
		reserved = new byte[2];
	
Methods Summary
public booleangetFollowMasterBackground()

 return followMasterBackground; 
public booleangetFollowMasterObjects()

 return followMasterObjects; 
public booleangetFollowMasterScheme()

 return followMasterScheme; 
public intgetMasterID()
Get the ID of the master slide used. 0 if this is a master slide, otherwise -2147483648



	                  
	    return masterID; 
public intgetNotesID()
Get the ID of the notes for this slide. 0 if doesn't have one

 return notesID; 
public longgetRecordType()
We are of type 1007

 return _type; 
public org.apache.poi.hslf.record.SlideAtom$SSlideLayoutAtomgetSSlideLayoutAtom()
Get the embeded SSlideLayoutAtom

 return layoutAtom; 
public voidsetFollowMasterBackground(boolean flag)

 followMasterBackground = flag; 
public voidsetFollowMasterObjects(boolean flag)

 followMasterObjects = flag; 
public voidsetFollowMasterScheme(boolean flag)

 followMasterScheme = flag; 
public voidsetMasterID(int id)
Change slide master.

 masterID = id; 
public voidsetNotesID(int id)
Change the ID of the notes for this slide. 0 if it no longer has one

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

		// Header
		out.write(_header);

		// SSSlideLayoutAtom stuff
		layoutAtom.writeOut(out);

		// IDs
		writeLittleEndian(masterID,out);
		writeLittleEndian(notesID,out);

		// Flags
		short flags = 0;
		if(followMasterObjects)    { flags += 1; }
		if(followMasterScheme)     { flags += 2; }
		if(followMasterBackground) { flags += 4; }
		writeLittleEndian(flags,out);

		// Reserved data
		out.write(reserved);