|
|
@@ -50,9 +50,9 @@ public final class SlideShowDumper { |
|
|
|
private byte[] docstream; |
|
|
|
|
|
|
|
/** Do we try to use DDF to understand the escher objects? */ |
|
|
|
private boolean ddfEscher = false; |
|
|
|
private boolean ddfEscher; |
|
|
|
/** Do we use our own built-in basic escher groker to understand the escher objects? */ |
|
|
|
private boolean basicEscher = false; |
|
|
|
private boolean basicEscher; |
|
|
|
|
|
|
|
private PrintStream out; |
|
|
|
|
|
|
@@ -182,7 +182,7 @@ public void walkTree(int depth, int startPos, int maxLen) throws IOException { |
|
|
|
|
|
|
|
out.println(); |
|
|
|
if (type != 0L && container == 0x0f) { |
|
|
|
if (type == 1035l || type == 1036l) { |
|
|
|
if (type == 1035L || type == 1036L) { |
|
|
|
// Special Handling of 1035=PPDrawingGroup and 1036=PPDrawing |
|
|
|
if(ddfEscher) { |
|
|
|
// Seems to be: |
|
|
@@ -240,11 +240,11 @@ public void walkTree(int depth, int startPos, int maxLen) throws IOException { |
|
|
|
} |
|
|
|
|
|
|
|
// Handle records that seem to lie |
|
|
|
if(atomType == 61451l) { |
|
|
|
if(atomType == 61451L) { |
|
|
|
// Normally claims a size of 8 |
|
|
|
recordLen = (int)atomLen + 8; |
|
|
|
} |
|
|
|
if(atomType == 61453l) { |
|
|
|
if(atomType == 61453L) { |
|
|
|
// Returns EscherContainerRecord, but really msofbtClientTextbox |
|
|
|
recordLen = (int)atomLen + 8; |
|
|
|
record.fillFields( contents, 0, erf ); |
|
|
@@ -253,7 +253,7 @@ public void walkTree(int depth, int startPos, int maxLen) throws IOException { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Decide on what to do, based on how the lenghts match up |
|
|
|
// Decide on what to do, based on how the lengths match up |
|
|
|
if(recordLen == 8 && atomLen > 8 ) { |
|
|
|
// Assume it has children, rather than being corrupted |
|
|
|
walkEscherDDF((indent+3), pos + 8, (int)atomLen ); |
|
|
@@ -295,7 +295,7 @@ public void walkTree(int depth, int startPos, int maxLen) throws IOException { |
|
|
|
out.println(String.format(Locale.ROOT, ind+"%2$s", "That's an Escher Record: ", typeName)); |
|
|
|
|
|
|
|
// Record specific dumps |
|
|
|
if(type == 61453l) { |
|
|
|
if(type == 61453L) { |
|
|
|
// Text Box. Print out first 8 bytes of data, then 8 4 later |
|
|
|
HexDump.dump(docstream, 0, out, pos+8, 8); |
|
|
|
HexDump.dump(docstream, 0, out, pos+20, 8); |
|
|
@@ -307,7 +307,7 @@ public void walkTree(int depth, int startPos, int maxLen) throws IOException { |
|
|
|
out.println(); |
|
|
|
|
|
|
|
// Look in children if we are a container |
|
|
|
if(type == 61443l || type == 61444l) { |
|
|
|
if(type == 61443L || type == 61444L) { |
|
|
|
walkEscherBasic((indent+3), pos+8, (int)atomlen); |
|
|
|
} |
|
|
|
|