View | Details | Raw Unified | Return to bug 38954
Collapse All | Expand All

(-)src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java (-11 / +104 lines)
Lines 20-41 Link Here
20
package org.apache.poi.hslf.usermodel;
20
package org.apache.poi.hslf.usermodel;
21
21
22
import java.util.*;
22
import java.util.*;
23
import java.util.List;
23
import java.io.*;
24
import java.io.*;
25
import java.awt.*;
24
26
25
import org.apache.poi.util.LittleEndian;
27
import org.apache.poi.util.LittleEndian;
26
28
27
import org.apache.poi.hslf.*;
29
import org.apache.poi.hslf.*;
28
import org.apache.poi.hslf.model.*;
30
import org.apache.poi.hslf.model.*;
29
import org.apache.poi.hslf.record.FontCollection;
31
import org.apache.poi.hslf.model.Notes;
30
import org.apache.poi.hslf.record.ParentAwareRecord;
32
import org.apache.poi.hslf.model.Slide;
31
import org.apache.poi.hslf.record.Record;
32
import org.apache.poi.hslf.record.RecordContainer;
33
import org.apache.poi.hslf.record.RecordTypes;
34
import org.apache.poi.hslf.record.SlideAtom;
35
import org.apache.poi.hslf.record.SlideListWithText;
36
import org.apache.poi.hslf.record.SlideListWithText.*;
33
import org.apache.poi.hslf.record.SlideListWithText.*;
37
import org.apache.poi.hslf.record.PersistPtrHolder;
34
import org.apache.poi.hslf.record.*;
38
import org.apache.poi.hslf.record.PositionDependentRecord;
39
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
35
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
40
36
41
/**
37
/**
Lines 93-100 Link Here
93
	// Build up the model level Slides and Notes
89
	// Build up the model level Slides and Notes
94
	buildSlidesAndNotes();
90
	buildSlidesAndNotes();
95
  }
91
  }
96
  
92
97
  
98
  /**
93
  /**
99
   * Find the records that are parent-aware, and tell them
94
   * Find the records that are parent-aware, and tell them
100
   *  who their parent is
95
   *  who their parent is
Lines 398-401 Link Here
398
	public Picture[] getPictures() throws IOException {
393
	public Picture[] getPictures() throws IOException {
399
		return _hslfSlideShow.getPictures();
394
		return _hslfSlideShow.getPictures();
400
	}
395
	}
396
397
    /**
398
     * Create a blank <code>Slide</code>.
399
     *
400
     * @return  the created <code>Slide</code>
401
     * @throws IOException
402
     */
403
    public Slide createSlide() throws IOException {
404
        RecordContainer doc = null; //find document record
405
        for (int i = 0; i < _mostRecentCoreRecords.length; i++) {
406
            Record record = _records[i];
407
            if (record.getRecordType() == RecordTypes.Document.typeID){
408
                doc = (RecordContainer)record;
409
                break;
410
            }
411
        }
412
413
        RecordContainer slist=null;
414
        Record[] rec = doc.getChildRecords();
415
        int num = 0;
416
        for (int i = 0; i < rec.length; i++) {
417
            Record record = rec[i];
418
            if (record.getRecordType() == RecordTypes.SlideListWithText.typeID){
419
                if (num > 0){
420
                    slist = (RecordContainer)record;
421
                }
422
                num++;
423
            }
424
        }
425
        if (num == 1){
426
            slist = new SlideListWithText();
427
            rec = doc.getChildRecords();
428
            for (int i = 0; i < rec.length-1; i++) {
429
                Record record = rec[i+1];
430
                if (record.getRecordType() == RecordTypes.EndDocument.typeID){
431
432
                    doc.addChildAfter(slist, rec[i]);
433
                }
434
            }
435
        }
436
        rec = slist.getChildRecords();
437
438
        //add SlidePersistAtom
439
        SlidePersistAtom prev = rec.length == 0 ? null : (SlidePersistAtom)rec[rec.length - 1];
440
        SlidePersistAtom sp = new SlidePersistAtom();
441
442
        //refernce is the 1-based index of the slide container in the document root.
443
        //it always starts with 3 (1 is Document, 2 is MainMaster, 3 is the first slide)
444
        sp.setRefID(prev == null ? 3 : (prev.getRefID() + 1));
445
        //first slideId is always 256
446
        sp.setSlideIdentifier(prev == null ? 256 : (prev.getSlideIdentifier() + 1));
447
448
        Record[] r = slist.appendChildRecord(sp,
449
                slist.getChildRecords() == null ? new Record[]{} : slist.getChildRecords());
450
        slist.setChildRecords(r);
451
        Slide slide = new Slide();
452
453
        int offset = 0;
454
        List lst = new ArrayList();
455
        for (int i = 0; i < _records.length; i++) {
456
            Record record = _records[i];
457
            lst.add(record);
458
            ByteArrayOutputStream out = new ByteArrayOutputStream();
459
            record.writeOut(out);
460
461
            if (_records[i].getRecordType() == RecordTypes.PersistPtrIncrementalBlock.typeID){
462
                lst.add(i, slide.getSlideRecord());
463
464
                slide.getSlideRecord().setLastOnDiskOffset(offset);
465
                PersistPtrHolder ptr = (PersistPtrHolder)_records[i];
466
                int id = sp.getRefID();
467
                ptr.getSlideDataLocationsLookup().put(new Integer(id), new Integer((i+1)*4));
468
                ptr.getSlideLocationsLookup().put(new Integer(id), new Integer(offset));
469
                ptr.addSlideLookup(id, offset);
470
471
            }
472
            offset += out.size() ;
473
        }
474
        _records = (Record[])lst.toArray(new Record[lst.size()]);
475
        _hslfSlideShow.setRecords(_records);
476
477
        UserEditAtom usr = (UserEditAtom)_records[_records.length-1];
478
        usr.setLastViewType((short)UserEditAtom.LAST_VIEW_SLIDE_VIEW);
479
        return slide;
480
    }
481
482
    public Dimension getPageSize(){
483
        RecordContainer doc = null; //find document record
484
        for (int i = 0; i < _mostRecentCoreRecords.length; i++) {
485
            Record record = _records[i];
486
            if (record.getRecordType() == RecordTypes.Document.typeID){
487
                doc = (RecordContainer)record;
488
                break;
489
            }
490
        }
491
        DocumentAtom docatom = (DocumentAtom)doc.getChildRecords()[0];
492
        return new Dimension((int)docatom.getSlideSizeX(), (int)docatom.getSlideSizeY());
493
    }
401
}
494
}
(-)src/scratchpad/src/org/apache/poi/hslf/model/Slide.java (-2 / +56 lines)
Lines 23-29 Link Here
23
23
24
import org.apache.poi.hslf.record.*;
24
import org.apache.poi.hslf.record.*;
25
import org.apache.poi.hslf.record.SlideListWithText.*;
25
import org.apache.poi.hslf.record.SlideListWithText.*;
26
import org.apache.poi.util.LittleEndian;
26
import org.apache.poi.ddf.*;
27
27
28
/**
28
/**
29
 * This class represents a slide in a PowerPoint Document. It allows 
29
 * This class represents a slide in a PowerPoint Document. It allows 
Lines 43-48 Link Here
43
  private TextRun[] _otherRuns; // Any from the PPDrawing, shouldn't really be any though
43
  private TextRun[] _otherRuns; // Any from the PPDrawing, shouldn't really be any though
44
  private Notes _notes; // usermodel needs to set this
44
  private Notes _notes; // usermodel needs to set this
45
45
46
  public Slide(){
47
    _slide = new org.apache.poi.hslf.record.Slide();    
48
  }
49
46
  /**
50
  /**
47
   * Constructs a Slide from the Slide record, and the SlideAtomsSet
51
   * Constructs a Slide from the Slide record, and the SlideAtomsSet
48
   *  containing the text.
52
   *  containing the text.
Lines 129-132 Link Here
129
   * Returns the Notes Sheet for this slide, or null if there isn't one
133
   * Returns the Notes Sheet for this slide, or null if there isn't one
130
   */
134
   */
131
  public Notes getNotesSheet() { return _notes; }
135
  public Notes getNotesSheet() { return _notes; }
132
} 
136
137
    /**
138
     * Returns all shapes contained in this Slide
139
     *
140
     * @return all shapes contained in this Slide
141
     */
142
    public Shape[] getShapes() {
143
        PPDrawing ppdrawing = _slide.getPPDrawing();
144
145
        EscherContainerRecord dg = (EscherContainerRecord)ppdrawing.getEscherRecords()[0];
146
        EscherContainerRecord spgr = null;
147
        List ch = dg.getChildRecords();
148
149
        for (Iterator it = ch.iterator(); it.hasNext();) {
150
            EscherRecord rec = (EscherRecord)it.next();
151
            if (rec.getRecordId() == EscherContainerRecord.SPGR_CONTAINER){
152
                spgr = (EscherContainerRecord)rec;
153
                break;
154
            }
155
        }
156
        ch = spgr.getChildRecords();
157
158
        ArrayList shapes = new ArrayList();
159
        for (int i=1;i<ch.size();i++) {
160
            EscherContainerRecord sp = (EscherContainerRecord)ch.get(i);
161
            shapes.add(ShapeFactory.createShape(sp, null));
162
        }
163
        return (Shape[])shapes.toArray(new Shape[shapes.size()]);
164
    }
165
166
    /**
167
     * Add a new Shape to this Slide
168
     *
169
     * @param shape - the Shape to add
170
     */
171
    public void addShape(Shape shape){
172
173
        PPDrawing ppdrawing = _slide.getPPDrawing();
174
175
        EscherContainerRecord dgContainer = (EscherContainerRecord)ppdrawing.getEscherRecords()[0];
176
        EscherContainerRecord spgr = (EscherContainerRecord)Shape.getEscherChild(dgContainer, EscherContainerRecord.SPGR_CONTAINER);
177
        spgr.addChildRecord(shape.getShapeRecord());
178
179
        EscherDgRecord dg = (EscherDgRecord)Shape.getEscherChild(dgContainer, EscherDgRecord.RECORD_ID);
180
        dg.setNumShapes(dg.getNumShapes()+1);
181
    }
182
183
    protected void create(){
184
        _slide = new org.apache.poi.hslf.record.Slide();
185
    }
186
}
(-)src/scratchpad/src/org/apache/poi/hslf/record/UserEditAtom.java (+1 lines)
Lines 56-61 Link Here
56
	// Somewhat user facing getters
56
	// Somewhat user facing getters
57
	public int getLastViewedSlideID() { return lastViewedSlideID; }
57
	public int getLastViewedSlideID() { return lastViewedSlideID; }
58
	public short getLastViewType()    { return lastViewType; }
58
	public short getLastViewType()    { return lastViewType; }
59
    public void setLastViewType(short type)    { lastViewType=type; }
59
60
60
	// Scary internal getters
61
	// Scary internal getters
61
	public int getLastUserEditAtomOffset() { return lastUserEditAtomOffset; }
62
	public int getLastUserEditAtomOffset() { return lastUserEditAtomOffset; }
(-)src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java (-1 / +10 lines)
Lines 78-83 Link Here
78
		return _slideLocations;
78
		return _slideLocations;
79
	}
79
	}
80
80
81
    public Hashtable getSlideDataLocationsLookup() {
82
        return _slideOffsetDataLocation;
83
    }
84
81
	/**
85
	/**
82
	 * Adds a new slide, notes or similar, to be looked up by this.
86
	 * Adds a new slide, notes or similar, to be looked up by this.
83
	 * For now, won't look for the most optimal on disk representation.
87
	 * For now, won't look for the most optimal on disk representation.
Lines 104-109 Link Here
104
108
105
		// Update the atom header
109
		// Update the atom header
106
		LittleEndian.putInt(_header,4,newPtrData.length);
110
		LittleEndian.putInt(_header,4,newPtrData.length);
111
112
        //update info (first 4 bytes in ptr data)
113
        int info = (slideID << 20 | 1);
114
        LittleEndian.putInt(_ptrData, 0, info);
115
107
	}
116
	}
108
117
109
	/** 
118
	/** 
Lines 178-184 Link Here
178
			Integer oldPos = (Integer)_slideLocations.get(id);
187
			Integer oldPos = (Integer)_slideLocations.get(id);
179
			Integer newPos = (Integer)oldToNewReferencesLookup.get(oldPos);
188
			Integer newPos = (Integer)oldToNewReferencesLookup.get(oldPos);
180
189
181
			if(newPos == null) {
190
            if(newPos == null) {
182
				throw new RuntimeException("Couldn't find the new location of the \"slide\" that used to be at " + oldPos);
191
				throw new RuntimeException("Couldn't find the new location of the \"slide\" that used to be at " + oldPos);
183
			}
192
			}
184
193
(-)src/scratchpad/src/org/apache/poi/hslf/record/SlideAtom.java (-1 / +19 lines)
Lines 66-73 Link Here
66
66
67
67
68
	/* *************** record code follows ********************** */
68
	/* *************** record code follows ********************** */
69
    public SlideAtom(){
70
        _header = new byte[8];
71
        LittleEndian.putUShort(_header, 0, 2);
72
        LittleEndian.putUShort(_header, 2, (int)_type);
73
        LittleEndian.putInt(_header, 4, 24);
69
74
70
	/** 
75
        byte[] ssdate = new byte[12];
76
        layoutAtom = new SSlideLayoutAtom(ssdate);
77
        layoutAtom.setGeometryType(SSlideLayoutAtom.BLANK_SLIDE);
78
79
        followMasterObjects = true;
80
        followMasterScheme = true;
81
        followMasterBackground = true;
82
        masterID = -2147483648;
83
        notesID = 0;
84
        reserved = new byte[2];
85
    }
86
87
	/**
71
	 * For the Slide Atom
88
	 * For the Slide Atom
72
	 */
89
	 */
73
	protected SlideAtom(byte[] source, int start, int len) {
90
	protected SlideAtom(byte[] source, int start, int len) {
Lines 180-185 Link Here
180
197
181
		/** Retrieve the geometry type */
198
		/** Retrieve the geometry type */
182
		public int getGeometryType() { return geometry; }
199
		public int getGeometryType() { return geometry; }
200
        public void setGeometryType(int geom) { geometry = geom; }
183
201
184
		/**
202
		/**
185
		 * Create a new Embeded SSlideLayoutAtom, from 12 bytes of data
203
		 * Create a new Embeded SSlideLayoutAtom, from 12 bytes of data
(-)src/scratchpad/src/org/apache/poi/hslf/record/ColorSchemeAtom.java (+17 lines)
Lines 91-97 Link Here
91
			{ accentAndFollowingHyperlinkColourRGB = rgb; }
91
			{ accentAndFollowingHyperlinkColourRGB = rgb; }
92
92
93
	/* *************** record code follows ********************** */
93
	/* *************** record code follows ********************** */
94
    public ColorSchemeAtom(){
95
        _header = new byte[8];
96
        LittleEndian.putUShort(_header, 0, 16);
97
        LittleEndian.putUShort(_header, 2, (int)_type);
98
        LittleEndian.putInt(_header, 4, 32);
94
99
100
        // Grab the rgb values
101
        backgroundColourRGB = 16777215;
102
        textAndLinesColourRGB = 0;
103
        shadowsColourRGB = 8421504;
104
        titleTextColourRGB = 0;
105
        fillsColourRGB = 10079232;
106
        accentColourRGB = 13382451;
107
        accentAndHyperlinkColourRGB = 16764108;
108
        accentAndFollowingHyperlinkColourRGB = 11711154;
109
110
    }
111
95
	/** 
112
	/** 
96
	 * For the Colour Scheme (ColorSchem) Atom
113
	 * For the Colour Scheme (ColorSchem) Atom
97
	 */
114
	 */
(-)src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java (-1 / +64 lines)
Lines 21-26 Link Here
21
import org.apache.poi.util.LittleEndian;
21
import org.apache.poi.util.LittleEndian;
22
22
23
import org.apache.poi.ddf.*;
23
import org.apache.poi.ddf.*;
24
import org.apache.poi.hslf.model.ShapeTypes;
24
25
25
import java.io.IOException;
26
import java.io.IOException;
26
import java.io.OutputStream;
27
import java.io.OutputStream;
Lines 62-69 Link Here
62
63
63
64
64
	/* ******************** record stuff follows ********************** */
65
	/* ******************** record stuff follows ********************** */
66
    public PPDrawing(){
67
        _header = new byte[8];
68
        LittleEndian.putUShort(_header, 0, 15);
69
        LittleEndian.putUShort(_header, 2, (int)RecordTypes.PPDrawing.typeID);
70
        LittleEndian.putInt(_header, 4, 0);
65
71
66
	/** 
72
        textboxWrappers = new EscherTextboxWrapper[]{};
73
        create();
74
    }
75
76
	/**
67
	 * Sets everything up, groks the escher etc
77
	 * Sets everything up, groks the escher etc
68
	 */
78
	 */
69
	protected PPDrawing(byte[] source, int start, int len) {
79
	protected PPDrawing(byte[] source, int start, int len) {
Lines 188-191 Link Here
188
		// Finally, write out the children
198
		// Finally, write out the children
189
		out.write(b);
199
		out.write(b);
190
	}
200
	}
201
202
    protected void create(){
203
        EscherContainerRecord dgContainer = new EscherContainerRecord();
204
        dgContainer.setRecordId( EscherContainerRecord.DG_CONTAINER );
205
        dgContainer.setOptions((short)15);
206
207
        EscherDgRecord dg = new EscherDgRecord();
208
        dg.setOptions((short)16);
209
        dg.setNumShapes(1);
210
        dgContainer.addChildRecord(dg);
211
212
        EscherContainerRecord spgrContainer = new EscherContainerRecord();
213
        spgrContainer.setOptions((short)15);
214
        spgrContainer.setRecordId(EscherContainerRecord.SPGR_CONTAINER);
215
          EscherContainerRecord spContainer = new EscherContainerRecord();
216
          spContainer.setOptions((short)15);
217
          spContainer.setRecordId(EscherContainerRecord.SP_CONTAINER);
218
            EscherSpgrRecord spgr = new EscherSpgrRecord();
219
            spgr.setOptions((short)1);
220
            spContainer.addChildRecord(spgr);
221
            EscherSpRecord sp = new EscherSpRecord();
222
            sp.setOptions((short)((ShapeTypes.NotPrimitive << 4) + 2));
223
            sp.setFlags(EscherSpRecord.FLAG_PATRIARCH | EscherSpRecord.FLAG_GROUP);
224
            spContainer.addChildRecord(sp);
225
          spgrContainer.addChildRecord(spContainer);
226
        dgContainer.addChildRecord(spgrContainer);
227
228
        spContainer = new EscherContainerRecord();
229
        spContainer.setOptions((short)15);
230
        spContainer.setRecordId(EscherContainerRecord.SP_CONTAINER);
231
        sp = new EscherSpRecord();
232
        sp.setOptions((short)((ShapeTypes.Rectangle << 4) + 2));
233
        sp.setFlags(EscherSpRecord.FLAG_BACKGROUND | EscherSpRecord.FLAG_HASSHAPETYPE);
234
        spContainer.addChildRecord(sp);
235
236
        EscherOptRecord opt = new EscherOptRecord();
237
        opt.setRecordId(EscherOptRecord.RECORD_ID);
238
        opt.addEscherProperty(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, 134217728));
239
        opt.addEscherProperty(new EscherRGBProperty(EscherProperties.FILL__FILLBACKCOLOR, 134217733));
240
        opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.FILL__RECTRIGHT, 10064750));
241
        opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.FILL__RECTBOTTOM, 7778750));
242
        opt.addEscherProperty(new EscherBoolProperty(EscherProperties.FILL__NOFILLHITTEST, 1179666));
243
        opt.addEscherProperty(new EscherBoolProperty(EscherProperties.LINESTYLE__NOLINEDRAWDASH, 524288));
244
        opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.SHAPE__BLACKANDWHITESETTINGS, 9));
245
        opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.SHAPE__BACKGROUNDSHAPE, 65537));
246
        spContainer.addChildRecord(opt);
247
248
        dgContainer.addChildRecord(spContainer);
249
250
        childRecords = new EscherRecord[]{
251
            dgContainer
252
        };
253
    }
191
}
254
}
(-)src/scratchpad/src/org/apache/poi/hslf/record/SlideListWithText.java (-1 / +10 lines)
Lines 54-60 Link Here
54
54
55
	private SlideAtomsSet[] slideAtomsSets;
55
	private SlideAtomsSet[] slideAtomsSets;
56
56
57
	/** 
57
    public SlideListWithText(){
58
        _header = new byte[8];
59
        LittleEndian.putUShort(_header, 0, 15);
60
        LittleEndian.putUShort(_header, 2, (int)_type);
61
        LittleEndian.putInt(_header, 4, 0);
62
63
        _children = new Record[]{};
64
    }
65
66
	/**
58
	 * Create a new holder for slide records
67
	 * Create a new holder for slide records
59
	 */
68
	 */
60
	protected SlideListWithText(byte[] source, int start, int len) {
69
	protected SlideListWithText(byte[] source, int start, int len) {
(-)src/scratchpad/src/org/apache/poi/hslf/record/Slide.java (-1 / +20 lines)
Lines 23-28 Link Here
23
import java.io.OutputStream;
23
import java.io.OutputStream;
24
import java.io.ByteArrayOutputStream;
24
import java.io.ByteArrayOutputStream;
25
25
26
26
/**
27
/**
27
 * Master container for Slides. There is one of these for every slide,
28
 * Master container for Slides. There is one of these for every slide,
28
 *  and they have certain specific children
29
 *  and they have certain specific children
Lines 50-57 Link Here
50
	 */
51
	 */
51
	public PPDrawing getPPDrawing() { return ppDrawing; }
52
	public PPDrawing getPPDrawing() { return ppDrawing; }
52
53
54
    public Slide(){
55
        _header = new byte[8];
56
        LittleEndian.putUShort(_header, 0, 15);
57
        LittleEndian.putUShort(_header, 2, (int)_type);
58
        LittleEndian.putInt(_header, 4, 0);
53
59
54
	/** 
60
        slideAtom = new SlideAtom();
61
62
        ppDrawing = new PPDrawing();
63
64
        ColorSchemeAtom colorAtom = new ColorSchemeAtom();
65
66
        _children = new Record[]{
67
            slideAtom,
68
            ppDrawing,
69
            colorAtom
70
        };
71
    }
72
73
	/**
55
	 * Set things up, and find our more interesting children
74
	 * Set things up, and find our more interesting children
56
	 */
75
	 */
57
	protected Slide(byte[] source, int start, int len) {
76
	protected Slide(byte[] source, int start, int len) {
(-)src/scratchpad/src/org/apache/poi/hslf/record/RecordContainer.java (-1 / +3 lines)
Lines 41-47 Link Here
41
	 */
41
	 */
42
	public Record[] getChildRecords() { return _children; }
42
	public Record[] getChildRecords() { return _children; }
43
43
44
	/** 
44
    public void setChildRecords(Record[] rec) { _children = rec; }
45
46
	/**
45
	 * We're not an atom
47
	 * We're not an atom
46
	 */
48
	 */
47
	public boolean isAnAtom() { return false; }
49
	public boolean isAnAtom() { return false; }
(-)src/scratchpad/src/org/apache/poi/hslf/record/SlidePersistAtom.java (-1 / +21 lines)
Lines 51-57 Link Here
51
51
52
	/* *************** record code follows ********************** */
52
	/* *************** record code follows ********************** */
53
53
54
	/** 
54
    public SlidePersistAtom(){
55
        _header = new byte[8];
56
        LittleEndian.putUShort(_header, 0, 0);
57
        LittleEndian.putUShort(_header, 2, (int)_type);
58
        LittleEndian.putInt(_header, 4, 20);
59
60
        hasShapesOtherThanPlaceholders = true;
61
        reservedFields = new byte[4];
62
    }
63
64
	/**
55
	 * For the SlidePersist Atom
65
	 * For the SlidePersist Atom
56
	 */
66
	 */
57
	protected SlidePersistAtom(byte[] source, int start, int len) {
67
	protected SlidePersistAtom(byte[] source, int start, int len) {
Lines 111-114 Link Here
111
		writeLittleEndian(slideIdentifier,out);
121
		writeLittleEndian(slideIdentifier,out);
112
		out.write(reservedFields);
122
		out.write(reservedFields);
113
	}
123
	}
124
125
    public void setRefID(int id) {
126
        refID = id;
127
    }
128
129
    public void setSlideIdentifier(int id) {
130
        slideIdentifier = id;
131
    }
132
133
114
}
134
}
(-)src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java (+4 lines)
Lines 368-371 Link Here
368
368
369
		return (Picture[])p.toArray(new Picture[p.size()]);
369
		return (Picture[])p.toArray(new Picture[p.size()]);
370
	}
370
	}
371
372
    public void setRecords(Record[] rec){
373
        _records = rec;
374
    }
371
}
375
}

Return to bug 38954