Index: src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java (revision )
@@ -99,6 +99,21 @@
"";
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(field_1_color1)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(field_2_color2)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(field_3_color3)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(field_4_color4)).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
public int getColor1()
{
return field_1_color1;
Index: src/java/org/apache/poi/ddf/EscherMetafileBlip.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherMetafileBlip.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherMetafileBlip.java (revision )
@@ -262,6 +262,28 @@
" Remaining Data: " + HexDump.toHex(remainingData, 32)));
}
+ @Override
+ public String toXml(String tab) {
+ String extraData = "";
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_1_UID ) + '\n' +
+ (field_2_UID == null ? "" : (" UID2: 0x" + HexDump.toHex( field_2_UID ) + '\n'))).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_2_cb )).append("\n")
+ .append(tab).append("\t").append("").append(getBounds()).append("\n")
+ .append(tab).append("\t").append("").append(getSizeEMU()).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_5_cbSave )).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_6_fCompression )).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_7_fFilter )).append("\n")
+ .append(tab).append("\t").append("").append(extraData).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(remainingData, 32)).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* Return the blip signature
*
Index: src/java/org/apache/poi/ddf/EscherBlipRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherBlipRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherBlipRecord.java (revision )
@@ -81,4 +81,17 @@
" Instance: 0x" + HexDump.toHex( getInstance() ) + '\n' +
" Extra Data:" + '\n' + extraData;
}
+
+ @Override
+ public String toXml(String tab) {
+ String extraData = HexDump.toHex(field_pictureData, 32);
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(extraData).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java (revision )
@@ -97,6 +97,21 @@
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(field_1_dx1).append("\n")
+ .append(tab).append("\t").append("").append(field_2_dy1).append("\n")
+ .append(tab).append("\t").append("").append(field_3_dx2).append("\n")
+ .append(tab).append("\t").append("").append(field_4_dy2).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* Retrieves offset within the parent coordinate space for the top left point.
*/
Index: src/java/org/apache/poi/ddf/EscherSpRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherSpRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherSpRecord.java (revision )
@@ -115,6 +115,20 @@
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(HexDump.toHex(getShapeType())).append("\n")
+ .append(tab).append("\t").append("").append(field_1_shapeId).append("\n")
+ .append(tab).append("\t").append("").append(decodeFlags(field_2_flags) + " (0x" + HexDump.toHex(field_2_flags) + ")").append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* Converts the shape flags into a more descriptive name.
*/
Index: src/java/org/apache/poi/ddf/UnknownEscherRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/UnknownEscherRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/UnknownEscherRecord.java (revision )
@@ -18,6 +18,7 @@
package org.apache.poi.ddf;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.apache.poi.util.HexDump;
@@ -141,6 +142,27 @@
" numchildren: " + getChildRecords().size() + '\n' +
theDumpHex +
children.toString();
+ }
+
+ @Override
+ public String toXml(String tab) {
+ String theDumpHex = HexDump.toHex(thedata, 32);
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("").append(isContainerRecord()).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(HexDump.toHex(_childRecords.size())).append("\n");
+ for ( Iterator iterator = _childRecords.iterator(); iterator
+ .hasNext(); )
+ {
+ EscherRecord record = iterator.next();
+ builder.append(record.toXml(tab+"\t"));
+ }
+ builder.append(theDumpHex).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
}
public void addChildRecord(EscherRecord childRecord) {
Index: src/java/org/apache/poi/ddf/EscherDgRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherDgRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherDgRecord.java (revision )
@@ -92,7 +92,19 @@
" Instance: 0x" + HexDump.toHex(getInstance()) + '\n' +
" NumShapes: " + field_1_numShapes + '\n' +
" LastMSOSPID: " + field_2_lastMSOSPID + '\n';
+ }
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(field_1_numShapes).append("\n")
+ .append(tab).append("\t").append("").append(field_2_lastMSOSPID).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
}
/**
Index: src/java/org/apache/poi/hssf/record/EscherAggregate.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/hssf/record/EscherAggregate.java (revision 1311869)
+++ src/java/org/apache/poi/hssf/record/EscherAggregate.java (revision )
@@ -329,7 +329,19 @@
return result.toString();
}
-
+
+ public String toXml(String tab){
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getRecordName()).append(">\n");
+ for ( Iterator iterator = getEscherRecords().iterator(); iterator.hasNext(); )
+ {
+ EscherRecord escherRecord = (EscherRecord) iterator.next();
+ builder.append( escherRecord.toXml(tab+"\t") );
+ }
+ builder.append(tab).append("").append(getRecordName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* Collapses the drawing records into an aggregate.
*/
Index: src/java/org/apache/poi/ddf/EscherOptRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherOptRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherOptRecord.java (revision )
@@ -16,6 +16,7 @@
==================================================================== */
package org.apache.poi.ddf;
+import org.apache.poi.util.HexDump;
import org.apache.poi.util.Internal;
/**
@@ -70,5 +71,19 @@
+ " can have only '0x3' version" );
super.setVersion( value );
+ }
+
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n");
+ for (EscherProperty property: getEscherProperties()){
+ builder.append(property.toXml(tab+"\t"));
+ }
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
}
}
Index: src/java/org/apache/poi/ddf/EscherClientDataRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherClientDataRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherClientDataRecord.java (revision )
@@ -99,6 +99,32 @@
}
+ @Override
+ public String toXml(String tab) {
+ String extraData;
+ ByteArrayOutputStream b = new ByteArrayOutputStream();
+ try
+ {
+ HexDump.dump(this.remainingData, 0, b, 0);
+ extraData = b.toString();
+ }
+ catch ( Exception e )
+ {
+ extraData = "error";
+ }
+ if (extraData.contains("No Data")){
+ extraData = "No Data";
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(extraData).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* Any data recording this record.
*/
Index: src/java/org/apache/poi/ddf/EscherBSERecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherBSERecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherBSERecord.java (revision )
@@ -330,6 +330,28 @@
" Extra Data:" + '\n' + extraData;
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(field_1_blipTypeWin32).append("\n")
+ .append(tab).append("\t").append("").append(field_2_blipTypeMacOS).append("\n")
+ .append(tab).append("\t").append("").append(field_3_uid == null ? "" : HexDump.toHex(field_3_uid)).append("\n")
+ .append(tab).append("\t").append("").append(field_4_tag).append("\n")
+ .append(tab).append("\t").append("").append(field_5_size).append("\n")
+ .append(tab).append("\t").append("[").append(field_6_ref).append("]\n")
+ .append(tab).append("\t").append("").append(field_7_offset).append("\n")
+ .append(tab).append("\t").append("").append(field_8_usage).append("\n")
+ .append(tab).append("\t").append("").append(field_9_name).append("\n")
+ .append(tab).append("\t").append("").append(field_10_unused2).append("\n")
+ .append(tab).append("\t").append("").append(field_11_unused3).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* Retrieve the string representation given a blip id.
*/
Index: src/java/org/apache/poi/ddf/EscherComplexProperty.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherComplexProperty.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherComplexProperty.java (revision )
@@ -134,4 +134,14 @@
+ ", data: " + System.getProperty("line.separator") + dataStr;
}
+ public String toXml(String tab){
+ String dataStr = HexDump.toHex( _complexData, 32);
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
+ .append("\" name=\"").append(getName()).append("\" blipId=\"")
+ .append(isBlipId()).append("\">\n");
+ builder.append("\t").append(tab).append(dataStr);
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append("/>\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/EscherRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherRecord.java (revision )
@@ -22,10 +22,7 @@
import java.util.Collections;
import java.util.List;
-import org.apache.poi.util.BitField;
-import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.Internal;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.*;
/**
* The base abstract record from which all escher records are defined. Subclasses will need
@@ -296,5 +293,22 @@
public void setVersion( short value )
{
_options = fVersion.setShortValue( _options, value );
+ }
+
+ /**
+ * @param tab - each children must be a right of his parent
+ * @return
+ */
+ public String toXml(String tab){
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(_recordId)).append("\n")
+ .append(tab).append("\t").append("").append(_options).append("\n")
+ .append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
+ public String toXml(){
+ return toXml("");
}
}
Index: src/java/org/apache/poi/ddf/EscherPictBlip.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherPictBlip.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherPictBlip.java (revision )
@@ -213,4 +213,24 @@
" Filter: " + HexDump.toHex( field_7_fFilter ) + '\n' +
" Extra Data:" + '\n' + extraData;
}
+
+ @Override
+ public String toXml(String tab) {
+ String extraData = "";
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_1_UID )).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_2_cb )).append("\n")
+ .append(tab).append("\t").append("").append(getBounds()).append("\n")
+ .append(tab).append("\t").append("").append(getSizeEMU()).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_5_cbSave )).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_6_fCompression )).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex( field_7_fFilter )).append("\n")
+ .append(tab).append("\t").append("").append(extraData).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java (revision )
@@ -160,6 +160,41 @@
}
+ @Override
+ public String toXml(String tab) {
+ String extraData;
+ ByteArrayOutputStream b = new ByteArrayOutputStream();
+ try
+ {
+ HexDump.dump(this.remainingData, 0, b, 0);
+ extraData = b.toString();
+ }
+ catch ( Exception e )
+ {
+ extraData = "error\n";
+ }
+ if (extraData.contains("No Data")){
+ extraData = "No Data";
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(field_1_flag).append("\n")
+ .append(tab).append("\t").append("").append(field_2_col1).append("\n")
+ .append(tab).append("\t").append("").append(field_3_dx1).append("\n")
+ .append(tab).append("\t").append("").append(field_4_row1).append("\n")
+ .append(tab).append("\t").append("").append(field_5_dy1).append("\n")
+ .append(tab).append("\t").append("").append(field_6_col2).append("\n")
+ .append(tab).append("\t").append("").append(field_7_dx2).append("\n")
+ .append(tab).append("\t").append("").append(field_8_row2).append("\n")
+ .append(tab).append("\t").append("").append(field_9_dy2).append("\n")
+ .append(tab).append("\t").append("").append(extraData).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* 0 = Move and size with Cells, 2 = Move but don't size with cells, 3 = Don't move or size with cells.
*/
Index: src/java/org/apache/poi/ddf/EscherBoolProperty.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherBoolProperty.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherBoolProperty.java (revision )
@@ -18,6 +18,8 @@
package org.apache.poi.ddf;
+import org.apache.poi.util.HexDump;
+
/**
* Represents a boolean property. The actual utility of this property is in doubt because many
* of the properties marked as boolean seem to actually contain special values. In other words
@@ -65,4 +67,11 @@
// + ", value: " + (getValue() != 0);
// }
+ public String toXml(String tab){
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
+ .append("\" name=\"").append(getName()).append("\" blipId=\"")
+ .append(isBlipId()).append("\" value=\"").append(isTrue()).append("\"").append("/>\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/EscherProperty.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherProperty.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherProperty.java (revision )
@@ -72,7 +72,14 @@
public int getPropertySize() {
return 6;
}
-
+
+ public String toXml(String tab){
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"").append(getId()).append("\" name=\"").append(getName()).append("\" blipId=\"")
+ .append(isBlipId()).append("\"/>\n");
+ return builder.toString();
+ }
+
/**
* Escher properties consist of a simple fixed length part and a complex variable length part.
* The fixed length part is serialized first.
Index: src/java/org/apache/poi/ddf/EscherArrayProperty.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherArrayProperty.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherArrayProperty.java (revision )
@@ -135,6 +135,18 @@
+ ", data: " + '\n' + results.toString();
}
+ public String toXml(String tab){
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
+ .append("\" name=\"").append(getName()).append("\" blipId=\"")
+ .append(isBlipId()).append("\">\n");
+ for (int i = 0; i < getNumberOfElementsInArray(); i++) {
+ builder.append("\t").append(tab).append("").append(HexDump.toHex(getElement(i))).append("\n");
+ }
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* We have this method because the way in which arrays in escher works
* is screwed for seemly arbitary reasons. While most properties are
Index: src/java/org/apache/poi/ddf/EscherBitmapBlip.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherBitmapBlip.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherBitmapBlip.java (revision )
@@ -114,4 +114,29 @@
" Marker: 0x" + HexDump.toHex( field_2_marker ) + nl +
" Extra Data:" + nl + extraData;
}
+
+ @Override
+ public String toXml(String tab) {
+ String extraData;
+ ByteArrayOutputStream b = new ByteArrayOutputStream();
+ try
+ {
+ HexDump.dump( this.field_pictureData, 0, b, 0 );
+ extraData = b.toString();
+ }
+ catch ( Exception e )
+ {
+ extraData = e.toString();
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(field_1_UID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(field_2_marker)).append("\n")
+ .append(tab).append("\t").append("").append(extraData).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/EscherDggRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherDggRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherDggRecord.java (revision )
@@ -142,6 +142,21 @@
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(field_1_shapeIdMax).append("\n")
+ .append(tab).append("\t").append("").append(getNumIdClusters()).append("\n")
+ .append(tab).append("\t").append("").append(field_3_numShapesSaved).append("\n")
+ .append(tab).append("\t").append("").append(field_4_drawingsSaved).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
public int getShapeIdMax() {
return field_1_shapeIdMax;
}
Index: src/java/org/apache/poi/ddf/EscherSpgrRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherSpgrRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherSpgrRecord.java (revision )
@@ -97,6 +97,21 @@
" RectHeight: " + field_4_rectY2 + '\n';
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(field_1_rectX1).append("\n")
+ .append(tab).append("\t").append("").append(field_2_rectY1).append("\n")
+ .append(tab).append("\t").append("").append(field_3_rectX2).append("\n")
+ .append(tab).append("\t").append("").append(field_4_rectY2).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* The starting top-left coordinate of child records.
*/
Index: src/java/org/apache/poi/ddf/EscherRGBProperty.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherRGBProperty.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherRGBProperty.java (revision )
@@ -17,6 +17,8 @@
package org.apache.poi.ddf;
+import org.apache.poi.util.HexDump;
+
/**
* A color property.
*
@@ -51,4 +53,11 @@
return (byte) ( (propertyValue >> 16) & 0xFF );
}
+ public String toXml(String tab){
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
+ .append("\" name=\"").append(getName()).append("\" blipId=\"")
+ .append(isBlipId()).append("\" value=\"0x").append(HexDump.toHex(propertyValue)).append("\"/>\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/EscherBlipWMFRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherBlipWMFRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherBlipWMFRecord.java (revision )
@@ -350,6 +350,40 @@
" Data:" + nl + extraData;
}
+ @Override
+ public String toXml(String tab) {
+ String extraData;
+ ByteArrayOutputStream b = new ByteArrayOutputStream();
+ try
+ {
+ HexDump.dump( this.field_12_data, 0, b, 0 );
+ extraData = b.toString();
+ }
+ catch ( Exception e )
+ {
+ extraData = e.toString();
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(field_1_secondaryUID)).append("\n")
+ .append(tab).append("\t").append("").append(field_2_cacheOfSize).append("\n")
+ .append(tab).append("\t").append("").append(field_3_boundaryTop).append("\n")
+ .append(tab).append("\t").append("").append(field_4_boundaryLeft).append("\n")
+ .append(tab).append("\t").append("").append(field_5_boundaryWidth).append("\n")
+ .append(tab).append("\t").append("").append(field_6_boundaryHeight).append("\n")
+ .append(tab).append("\t").append("").append(field_7_width).append("\n")
+ .append(tab).append("\t").append("").append(field_8_height).append("\n")
+ .append(tab).append("\t").append("").append(field_9_cacheOfSavedSize).append("\n")
+ .append(tab).append("\t").append("").append(field_10_compressionFlag).append("\n")
+ .append(tab).append("\t").append("").append(field_11_filter).append("\n")
+ .append(tab).append("\t").append("").append(extraData).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
/**
* Compress the contents of the provided array
*
Index: src/java/org/apache/poi/ddf/EscherSimpleProperty.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherSimpleProperty.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherSimpleProperty.java (revision )
@@ -118,4 +118,12 @@
+ ", value: " + propertyValue + " (0x" + HexDump.toHex(propertyValue) + ")";
}
+ public String toXml(String tab){
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
+ .append("\" name=\"").append(getName()).append("\" blipId=\"")
+ .append(isBlipId()).append("\" complex=\"").append(isComplex()).append("\" value=\"").append("0x")
+ .append(HexDump.toHex(propertyValue)).append("\"/>\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java (revision )
@@ -176,4 +176,19 @@
return stringBuilder.toString();
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("").append(getChildRecords().size()).append("\n")
+ .append(tab).append("\t").append("").append(isContainerRecord()).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n");
+ for (EscherProperty property: getEscherProperties()){
+ builder.append(property.toXml(tab+"\t"));
+ }
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/ddf/EscherContainerRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherContainerRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherContainerRecord.java (revision )
@@ -255,6 +255,26 @@
+ children.toString();
}
+ @Override
+ public String toXml(String tab) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getRecordId())).append("\n")
+ .append(tab).append("\t").append("").append(getRecordName()).append("\n")
+ .append(tab).append("\t").append("").append(isContainerRecord()).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(HexDump.toHex(_childRecords.size())).append("\n");
+ for ( Iterator iterator = _childRecords.iterator(); iterator
+ .hasNext(); )
+ {
+ EscherRecord record = iterator.next();
+ builder.append(record.toXml(tab+"\t"));
+ }
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
+
public T getChildById( short recordId )
{
for ( EscherRecord childRecord : _childRecords )
Index: src/java/org/apache/poi/ddf/EscherTextboxRecord.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/ddf/EscherTextboxRecord.java (revision 1311869)
+++ src/java/org/apache/poi/ddf/EscherTextboxRecord.java (revision )
@@ -139,6 +139,31 @@
theDumpHex;
}
+ @Override
+ public String toXml(String tab) {
+ String theDumpHex = "";
+ try
+ {
+ if (thedata.length != 0)
+ {
+ theDumpHex += HexDump.dump(thedata, 0, 0);
+ }
+ }
+ catch ( Exception e )
+ {
+ theDumpHex = "Error!!";
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append(tab).append("<").append(getClass().getSimpleName()).append(">\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(RECORD_ID)).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getVersion())).append("\n")
+ .append(tab).append("\t").append("0x").append(HexDump.toHex(getInstance())).append("\n")
+ .append(tab).append("\t").append("").append(isContainerRecord()).append("\n")
+ .append(tab).append("\t").append("").append(getChildRecords().size()).append("\n")
+ .append(tab).append("\t").append("").append(theDumpHex).append("\n");
+ builder.append(tab).append("").append(getClass().getSimpleName()).append(">\n");
+ return builder.toString();
+ }
}
Index: src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java (revision )
+++ src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java (revision )
@@ -0,0 +1,79 @@
+package org.apache.poi.hssf.dev;
+
+import org.apache.poi.ddf.EscherRecord;
+import org.apache.poi.hssf.model.InternalWorkbook;
+import org.apache.poi.hssf.record.*;
+import org.apache.poi.hssf.usermodel.HSSFPatriarch;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+
+import java.io.*;
+import java.lang.reflect.Field;
+import java.util.List;
+
+/**
+ * Utility for representing drawings contained in a binary Excel file as a XML tree
+ * @author Evgeniy Berlog
+ * date: 10.04.12
+ */
+public class BiffDrawingToXml {
+
+ public static void main(String[] params) throws IOException {
+ FileOutputStream test = new FileOutputStream("D:\\temp\\test.xml");
+ FileInputStream inp = new FileInputStream("D:\\temp\\workbook.xls");
+ writeToFile(test, inp);
+ }
+
+ public static void writeToFile(FileOutputStream fos, InputStream xlsWorkbook) throws IOException {
+ POIFSFileSystem fs = new POIFSFileSystem(xlsWorkbook);
+ HSSFWorkbook workbook = new HSSFWorkbook(fs);
+ InternalWorkbook internalWorkbook = getInternalWorkbook(workbook);
+ DrawingGroupRecord r = (DrawingGroupRecord) internalWorkbook.findFirstRecordBySid( DrawingGroupRecord.sid );
+ r.decode();
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("\n");
+ String tab = "\t";
+ List escherRecords = r.getEscherRecords();
+ for (EscherRecord record : escherRecords){
+ builder.append(record.toXml(tab));
+ }
+ int sheetCount = workbook.getNumberOfSheets();
+ for(int i=0; i < sheetCount; i++) {
+ builder.append(tab).append("\n");
+ builder.append(getHSSFPatriarchBoundAggregate(workbook.getSheetAt(i).getDrawingPatriarch()).toXml(tab + "\t"));
+ builder.append(tab).append("\n");
+ }
+ builder.append("\n");
+ fos.write(builder.toString().getBytes());
+ fos.close();
+ }
+
+ private static EscherAggregate getHSSFPatriarchBoundAggregate(HSSFPatriarch patriarch) {
+ Field boundAggregateField = null;
+ try {
+ boundAggregateField = patriarch.getClass().getDeclaredField("_boundAggregate");
+ boundAggregateField.setAccessible(true);
+ return (EscherAggregate) boundAggregateField.get(patriarch);
+ } catch (NoSuchFieldException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private static InternalWorkbook getInternalWorkbook(HSSFWorkbook workbook) {
+ Field internalSheetField = null;
+ try {
+ internalSheetField = workbook.getClass().getDeclaredField("workbook");
+ internalSheetField.setAccessible(true);
+ return (InternalWorkbook) internalSheetField.get(workbook);
+ } catch (NoSuchFieldException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}