]> source.dussan.org Git - poi.git/commitdiff
Fix the indenting on write(), which has been messed up for an age
authorNick Burch <nick@apache.org>
Mon, 17 Sep 2007 15:21:34 +0000 (15:21 +0000)
committerNick Burch <nick@apache.org>
Mon, 17 Sep 2007 15:21:34 +0000 (15:21 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@576475 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java

index 473b8f889e2fd4e8b1165dbdd3849e37393954f3..268d6bff0529a5094dcad00811c2a84c6cfd9f09 100644 (file)
@@ -356,95 +356,111 @@ public class HSLFSlideShow extends POIDocument
        }
 
 
-  /**
-   * Writes out the slideshow file the is represented by an instance of
-   *  this class
-   * @param out The OutputStream to write to.
-   *  @throws IOException If there is an unexpected IOException from the passed
-   *            in OutputStream
-   */
-   public void write(OutputStream out) throws IOException {
-       // Get a new Filesystem to write into
-       POIFSFileSystem outFS = new POIFSFileSystem();
-
-       // Write out the Property Streams
-       writeProperties(outFS);
-
-
-       // For position dependent records, hold where they were and now are
-       // As we go along, update, and hand over, to any Position Dependent
-       //  records we happen across
-       Hashtable oldToNewPositions = new Hashtable();
-       
-       // First pass - figure out where all the position dependent
-       //   records are going to end up, in the new scheme
-       // (Annoyingly, some powerpoing files have PersistPtrHolders
-       //  that reference slides after the PersistPtrHolder)
-       ByteArrayOutputStream baos = new ByteArrayOutputStream();
-       for(int i=0; i<_records.length; i++) {
-               if(_records[i] instanceof PositionDependentRecord) {
-                       PositionDependentRecord pdr = (PositionDependentRecord)_records[i];
-                       int oldPos = pdr.getLastOnDiskOffset();
-                       int newPos = baos.size();
-                       pdr.setLastOnDiskOffset(newPos);
-                       oldToNewPositions.put(new Integer(oldPos),new Integer(newPos));
-                       //System.out.println(oldPos + " -> " + newPos);
-               }
-               
-               // Dummy write out, so the position winds on properly
-               _records[i].writeOut(baos);
-       }
+    /**
+     * Writes out the slideshow file the is represented by an instance
+     *  of this class.
+     * It will write out the common OLE2 streams. If you require all
+     *  streams to be written out, pass in preserveNodes
+     * @param out The OutputStream to write to.
+     * @throws IOException If there is an unexpected IOException from
+     *           the passed in OutputStream
+     */
+    public void write(OutputStream out) throws IOException {
+        // Write out, but only the common streams
+        write(out,false);
+    }
+    /**
+     * Writes out the slideshow file the is represented by an instance
+     *  of this class.
+     * If you require all streams to be written out (eg Marcos, embeded
+     *  documents), then set preserveNodes to true
+     * @param out The OutputStream to write to.
+     * @param preserveNodes Should all OLE2 streams be written back out, or only the common ones?
+     * @throws IOException If there is an unexpected IOException from
+     *           the passed in OutputStream
+     */
+    public void write(OutputStream out, boolean preserveNodes) throws IOException {
+        // Get a new Filesystem to write into
+        POIFSFileSystem outFS = new POIFSFileSystem();
+
+        // Write out the Property Streams
+        writeProperties(outFS);
+
+
+        // For position dependent records, hold where they were and now are
+        // As we go along, update, and hand over, to any Position Dependent
+        //  records we happen across
+        Hashtable oldToNewPositions = new Hashtable();
+
+        // First pass - figure out where all the position dependent
+        //   records are going to end up, in the new scheme
+        // (Annoyingly, some powerpoing files have PersistPtrHolders
+        //  that reference slides after the PersistPtrHolder)
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        for(int i=0; i<_records.length; i++) {
+            if(_records[i] instanceof PositionDependentRecord) {
+                PositionDependentRecord pdr = (PositionDependentRecord)_records[i];
+                int oldPos = pdr.getLastOnDiskOffset();
+                int newPos = baos.size();
+                pdr.setLastOnDiskOffset(newPos);
+                oldToNewPositions.put(new Integer(oldPos),new Integer(newPos));
+                //System.out.println(oldPos + " -> " + newPos);
+            }
 
-       // No go back through, actually writing ourselves out
-       baos.reset();
-       for(int i=0; i<_records.length; i++) {
-               // For now, we're only handling PositionDependentRecord's that
-               //  happen at the top level.
-               // In future, we'll need the handle them everywhere, but that's
-               //  a bit trickier
-               if(_records[i] instanceof PositionDependentRecord) {
-                       // We've already figured out their new location, and
-                       //  told them that
-                       // Tell them of the positions of the other records though
-                       PositionDependentRecord pdr = (PositionDependentRecord)_records[i];
-                       pdr.updateOtherRecordReferences(oldToNewPositions);
-               }
+            // Dummy write out, so the position winds on properly
+            _records[i].writeOut(baos);
+        }
 
-               // Whatever happens, write out that record tree
-               _records[i].writeOut(baos);
-       }
-       // Update our cached copy of the bytes that make up the PPT stream
-       _docstream = baos.toByteArray();
+        // No go back through, actually writing ourselves out
+        baos.reset();
+        for(int i=0; i<_records.length; i++) {
+            // For now, we're only handling PositionDependentRecord's that
+            //  happen at the top level.
+            // In future, we'll need the handle them everywhere, but that's
+            //  a bit trickier
+            if(_records[i] instanceof PositionDependentRecord) {
+                // We've already figured out their new location, and
+                //  told them that
+                // Tell them of the positions of the other records though
+                PositionDependentRecord pdr = (PositionDependentRecord)_records[i];
+                pdr.updateOtherRecordReferences(oldToNewPositions);
+            }
+
+            // Whatever happens, write out that record tree
+            _records[i].writeOut(baos);
+        }
+        // Update our cached copy of the bytes that make up the PPT stream
+        _docstream = baos.toByteArray();
 
-       // Write the PPT stream into the POIFS layer
-       ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-       outFS.createDocument(bais,"PowerPoint Document");
+        // Write the PPT stream into the POIFS layer
+        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+        outFS.createDocument(bais,"PowerPoint Document");
 
 
-       // Update and write out the Current User atom
-       int oldLastUserEditAtomPos = (int)currentUser.getCurrentEditOffset();
-       Integer newLastUserEditAtomPos = (Integer)oldToNewPositions.get(new Integer(oldLastUserEditAtomPos));
-       if(newLastUserEditAtomPos == null) {
-               throw new HSLFException("Couldn't find the new location of the UserEditAtom that used to be at " + oldLastUserEditAtomPos);
-       }
-       currentUser.setCurrentEditOffset(newLastUserEditAtomPos.intValue());
-       currentUser.writeToFS(outFS);
+        // Update and write out the Current User atom
+        int oldLastUserEditAtomPos = (int)currentUser.getCurrentEditOffset();
+        Integer newLastUserEditAtomPos = (Integer)oldToNewPositions.get(new Integer(oldLastUserEditAtomPos));
+        if(newLastUserEditAtomPos == null) {
+            throw new HSLFException("Couldn't find the new location of the UserEditAtom that used to be at " + oldLastUserEditAtomPos);
+        }
+        currentUser.setCurrentEditOffset(newLastUserEditAtomPos.intValue());
+        currentUser.writeToFS(outFS);
 
        
-       // Write any pictures, into another stream
-       if (_pictures != null) {
-               ByteArrayOutputStream pict = new ByteArrayOutputStream();
-               for (int i = 0; i < _pictures.length; i++ ) {
-                       _pictures[i].write(pict);
-               }
-               outFS.createDocument(
-                               new ByteArrayInputStream(pict.toByteArray()), "Pictures"
-               );
-       }
+        // Write any pictures, into another stream
+        if (_pictures != null) {
+            ByteArrayOutputStream pict = new ByteArrayOutputStream();
+            for (int i = 0; i < _pictures.length; i++ ) {
+                _pictures[i].write(pict);
+            }
+            outFS.createDocument(
+                new ByteArrayInputStream(pict.toByteArray()), "Pictures"
+            );
+        }
 
-       // Send the POIFSFileSystem object out to the underlying stream
-       outFS.writeFilesystem(out);
-   }
+        // Send the POIFSFileSystem object out to the underlying stream
+        outFS.writeFilesystem(out);
+    }
 
 
        /* ******************* adding methods follow ********************* */