]> source.dussan.org Git - poi.git/commitdiff
Bug 51305: Add sprmTCellPaddingDefault support; Update Table Cell Descriptor, make...
authorYegor Kozlov <yegor@apache.org>
Mon, 6 Jun 2011 12:43:17 +0000 (12:43 +0000)
committerYegor Kozlov <yegor@apache.org>
Mon, 6 Jun 2011 12:43:17 +0000 (12:43 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1132616 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/documentation/release-guide.txt
src/scratchpad/src/org/apache/poi/hwpf/model/types/TCAbstractType.java
src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableCellDescriptor.java
src/types/definitions/tc_type.xml

index 090b2109f423d60360195d9402cf6ac28db978c5..af03d5562c6fd81c5b620468907184d2e56cd1dc 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.8-beta4" date="2011-??-??">
+           <action dev="poi-developers" type="add">51305 - Add sprmTCellPaddingDefault support in HWPF</action>
            <action dev="poi-developers" type="add">51265 - Enhanced Handling of Picture Parts in XWPF</action>
            <action dev="poi-developers" type="add">51292 - Additional HWPF Table Cell Descriptor values</action>
         </release>
index 7dc13fc20b4551e83d8fcd82bde4d463d411a760..be1103fd74ff7acd9944915cbcf01706a5d13ebd 100644 (file)
@@ -102,24 +102,20 @@ cd build/dist
 
    8. Upload to the dev svn dist repo, 
       https://dist.apache.org/repos/dist/dev/poi/ eg
-      https://dist.apache.org/repos/dist/dev/poi/3.8-RC2/
+      https://dist.apache.org/repos/dist/dev/poi/3.8-RC3/
 
 How to upload:
 
-8a  svn co https://dist.apache.org/repos/dist/dev/poi
-8b  add .gz and .zip  packages along with checksums. 
+svn co https://dist.apache.org/repos/dist/dev/poi
+mkdir 3.8-RC3/
+svn add 3.8-RC3
 
-you should have a similar structure of files:
-$ ls
-README.html                             poi-bin-3.8-beta3-20110606.zip         poi-src-3.8-beta3-20110606.tar.gz.md5
-maven                                   poi-bin-3.8-beta3-20110606.zip.asc     poi-src-3.8-beta3-20110606.tar.gz.sha1
-poi-bin-3.8-beta3-20110606.tar.gz       poi-bin-3.8-beta3-20110606.zip.md5     poi-src-3.8-beta3-20110606.zip
-poi-bin-3.8-beta3-20110606.tar.gz.asc   poi-bin-3.8-beta3-20110606.zip.sha1    poi-src-3.8-beta3-20110606.zip.asc
-poi-bin-3.8-beta3-20110606.tar.gz.md5   poi-src-3.8-beta3-20110606.tar.gz      poi-src-3.8-beta3-20110606.zip.md5
-poi-bin-3.8-beta3-20110606.tar.gz.sha1  poi-src-3.8-beta3-20110606.tar.gz.asc  poi-src-3.8-beta3-20110606.zip.sha1
+then add .gz and .zip  packages along with checksums. 
+
+ binaries should be in ./bin, sources in ./src sub-directories
 
 8c. commit
-After commit the files should be acessible at https://dist.apache.org/repos/dist/dev/poi/
+After commit the files should be acessible at https://dist.apache.org/repos/dist/dev/poi/3.8-RC2/
 
 
  (III) After the vote:
index a0cd02c89f1eb0b538c07518c6a6dd1a99f0ed6e..13ebdd9bc4f399111a6500bcba1a0e15e7335029 100644 (file)
 package org.apache.poi.hwpf.model.types;
 
 
+
 import org.apache.poi.hdf.model.hdftypes.HDFType;
 import org.apache.poi.hwpf.usermodel.BorderCode;
 import org.apache.poi.util.BitField;
-import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
 
 /**
  * Table Cell Descriptor.
@@ -31,25 +30,44 @@ import org.apache.poi.util.LittleEndian;
 
  * @author S. Ryan Ackley
  */
-public abstract class TCAbstractType implements HDFType {
+public abstract class TCAbstractType
+    implements HDFType
+{
+
     protected  short field_1_rgf;
-    private static BitField fFirstMerged = BitFieldFactory.getInstance(0x0001);
-    private static BitField fMerged = BitFieldFactory.getInstance(0x0002);
-    private static BitField fVertical = BitFieldFactory.getInstance(0x0004);
-    private static BitField fBackward = BitFieldFactory.getInstance(0x0008);
-    private static BitField fRotateFont = BitFieldFactory.getInstance(0x0010);
-    private static BitField fVertMerge = BitFieldFactory.getInstance(0x0020);
-    private static BitField fVertRestart = BitFieldFactory.getInstance(0x0040);
-    private static BitField vertAlign = BitFieldFactory.getInstance(0x0180);
-    private static BitField ftsWidth = new BitField(0x0E00);
-    private static BitField fFitText = new BitField(0x1000);
-    private static BitField fNoWrap = new BitField(0x2000);
-    private static BitField fUnused = new BitField(0xC000);
-    protected  short field_2_unused;
-    protected  BorderCode field_3_brcTop;
-    protected  BorderCode field_4_brcLeft;
-    protected  BorderCode field_5_brcBottom;
-    protected  BorderCode field_6_brcRight;
+        private static BitField  fFirstMerged = new BitField(0x0001);
+        private static BitField  fMerged = new BitField(0x0002);
+        private static BitField  fVertical = new BitField(0x0004);
+        private static BitField  fBackward = new BitField(0x0008);
+        private static BitField  fRotateFont = new BitField(0x0010);
+        private static BitField  fVertMerge = new BitField(0x0020);
+        private static BitField  fVertRestart = new BitField(0x0040);
+        private static BitField  vertAlign = new BitField(0x0180);
+        private static BitField  ftsWidth = new BitField(0x0E00);
+        private static BitField  fFitText = new BitField(0x1000);
+        private static BitField  fNoWrap = new BitField(0x2000);
+        private static BitField  fUnused = new BitField(0xC000);
+    protected  short field_2_wWidth;
+    protected  short field_3_wCellPaddingLeft;
+    protected  short field_4_wCellPaddingTop;
+    protected  short field_5_wCellPaddingBottom;
+    protected  short field_6_wCellPaddingRight;
+    protected  byte field_7_ftsCellPaddingLeft;
+    protected  byte field_8_ftsCellPaddingTop;
+    protected  byte field_9_ftsCellPaddingBottom;
+    protected  byte field_10_ftsCellPaddingRight;
+    protected  short field_11_wCellSpacingLeft;
+    protected  short field_12_wCellSpacingTop;
+    protected  short field_13_wCellSpacingBottom;
+    protected  short field_14_wCellSpacingRight;
+    protected  byte field_15_ftsCellSpacingLeft;
+    protected  byte field_16_ftsCellSpacingTop;
+    protected  byte field_17_ftsCellSpacingBottom;
+    protected  byte field_18_ftsCellSpacingRight;
+    protected  BorderCode field_19_brcTop;
+    protected  BorderCode field_20_brcLeft;
+    protected  BorderCode field_21_brcBottom;
+    protected  BorderCode field_22_brcRight;
 
 
     public TCAbstractType()
@@ -57,26 +75,6 @@ public abstract class TCAbstractType implements HDFType {
 
     }
 
-    protected void fillFields(byte [] data, int offset)
-    {
-        field_1_rgf                     = LittleEndian.getShort(data, 0x0 + offset);
-        field_2_unused                  = LittleEndian.getShort(data, 0x2 + offset);
-        field_3_brcTop                  = new BorderCode(data, 0x4 + offset);
-        field_4_brcLeft                 = new BorderCode(data, 0x8 + offset);
-        field_5_brcBottom               = new BorderCode(data, 0xc + offset);
-        field_6_brcRight                = new BorderCode(data, 0x10 + offset);
-
-    }
-
-    public void serialize(byte[] data, int offset)
-    {
-        LittleEndian.putShort(data, 0x0 + offset, field_1_rgf);
-        LittleEndian.putShort(data, 0x2 + offset, field_2_unused);
-        field_3_brcTop.serialize(data, 0x4 + offset);
-        field_4_brcLeft.serialize(data, 0x8 + offset);
-        field_5_brcBottom.serialize(data, 0xc + offset);
-        field_6_brcRight.serialize(data, 0x10 + offset);
-    }
 
     public String toString()
     {
@@ -99,8 +97,56 @@ public abstract class TCAbstractType implements HDFType {
         buffer.append("         .fNoWrap                  = ").append(isFNoWrap()).append('\n');
         buffer.append("         .fUnused                  = ").append(getFUnused()).append('\n');
 
-        buffer.append("    .unused               = ");
-        buffer.append(" (").append(getUnused()).append(" )\n");
+        buffer.append("    .wWidth               = ");
+        buffer.append(" (").append(getWWidth()).append(" )\n");
+
+        buffer.append("    .wCellPaddingLeft     = ");
+        buffer.append(" (").append(getWCellPaddingLeft()).append(" )\n");
+
+        buffer.append("    .wCellPaddingTop      = ");
+        buffer.append(" (").append(getWCellPaddingTop()).append(" )\n");
+
+        buffer.append("    .wCellPaddingBottom   = ");
+        buffer.append(" (").append(getWCellPaddingBottom()).append(" )\n");
+
+        buffer.append("    .wCellPaddingRight    = ");
+        buffer.append(" (").append(getWCellPaddingRight()).append(" )\n");
+
+        buffer.append("    .ftsCellPaddingLeft   = ");
+        buffer.append(" (").append(getFtsCellPaddingLeft()).append(" )\n");
+
+        buffer.append("    .ftsCellPaddingTop    = ");
+        buffer.append(" (").append(getFtsCellPaddingTop()).append(" )\n");
+
+        buffer.append("    .ftsCellPaddingBottom = ");
+        buffer.append(" (").append(getFtsCellPaddingBottom()).append(" )\n");
+
+        buffer.append("    .ftsCellPaddingRight  = ");
+        buffer.append(" (").append(getFtsCellPaddingRight()).append(" )\n");
+
+        buffer.append("    .wCellSpacingLeft     = ");
+        buffer.append(" (").append(getWCellSpacingLeft()).append(" )\n");
+
+        buffer.append("    .wCellSpacingTop      = ");
+        buffer.append(" (").append(getWCellSpacingTop()).append(" )\n");
+
+        buffer.append("    .wCellSpacingBottom   = ");
+        buffer.append(" (").append(getWCellSpacingBottom()).append(" )\n");
+
+        buffer.append("    .wCellSpacingRight    = ");
+        buffer.append(" (").append(getWCellSpacingRight()).append(" )\n");
+
+        buffer.append("    .ftsCellSpacingLeft   = ");
+        buffer.append(" (").append(getFtsCellSpacingLeft()).append(" )\n");
+
+        buffer.append("    .ftsCellSpacingTop    = ");
+        buffer.append(" (").append(getFtsCellSpacingTop()).append(" )\n");
+
+        buffer.append("    .ftsCellSpacingBottom = ");
+        buffer.append(" (").append(getFtsCellSpacingBottom()).append(" )\n");
+
+        buffer.append("    .ftsCellSpacingRight  = ");
+        buffer.append(" (").append(getFtsCellSpacingRight()).append(" )\n");
 
         buffer.append("    .brcTop               = ");
         buffer.append(" (").append(getBrcTop()).append(" )\n");
@@ -123,7 +169,7 @@ public abstract class TCAbstractType implements HDFType {
      */
     public int getSize()
     {
-        return 4 +  + 2 + 2 + 4 + 4 + 4 + 4;
+        return 4 +  + 2 + 2 + 2 + 2 + 2 + 2 + 1 + 1 + 1 + 1 + 2 + 2 + 2 + 2 + 1 + 1 + 1 + 1 + 4 + 4 + 4 + 4;
     }
 
 
@@ -145,19 +191,275 @@ public abstract class TCAbstractType implements HDFType {
     }
 
     /**
-     * Get the unused field for the TC record.
+     * Get the wWidth field for the TC record.
+     */
+    public short getWWidth()
+    {
+        return field_2_wWidth;
+    }
+
+    /**
+     * Set the wWidth field for the TC record.
+     */
+    public void setWWidth(short field_2_wWidth)
+    {
+        this.field_2_wWidth = field_2_wWidth;
+    }
+
+    /**
+     * Get the wCellPaddingLeft field for the TC record.
+     */
+    public short getWCellPaddingLeft()
+    {
+        return field_3_wCellPaddingLeft;
+    }
+
+    /**
+     * Set the wCellPaddingLeft field for the TC record.
+     */
+    public void setWCellPaddingLeft(short field_3_wCellPaddingLeft)
+    {
+        this.field_3_wCellPaddingLeft = field_3_wCellPaddingLeft;
+    }
+
+    /**
+     * Get the wCellPaddingTop field for the TC record.
+     */
+    public short getWCellPaddingTop()
+    {
+        return field_4_wCellPaddingTop;
+    }
+
+    /**
+     * Set the wCellPaddingTop field for the TC record.
+     */
+    public void setWCellPaddingTop(short field_4_wCellPaddingTop)
+    {
+        this.field_4_wCellPaddingTop = field_4_wCellPaddingTop;
+    }
+
+    /**
+     * Get the wCellPaddingBottom field for the TC record.
+     */
+    public short getWCellPaddingBottom()
+    {
+        return field_5_wCellPaddingBottom;
+    }
+
+    /**
+     * Set the wCellPaddingBottom field for the TC record.
+     */
+    public void setWCellPaddingBottom(short field_5_wCellPaddingBottom)
+    {
+        this.field_5_wCellPaddingBottom = field_5_wCellPaddingBottom;
+    }
+
+    /**
+     * Get the wCellPaddingRight field for the TC record.
+     */
+    public short getWCellPaddingRight()
+    {
+        return field_6_wCellPaddingRight;
+    }
+
+    /**
+     * Set the wCellPaddingRight field for the TC record.
+     */
+    public void setWCellPaddingRight(short field_6_wCellPaddingRight)
+    {
+        this.field_6_wCellPaddingRight = field_6_wCellPaddingRight;
+    }
+
+    /**
+     * Get the ftsCellPaddingLeft field for the TC record.
+     */
+    public byte getFtsCellPaddingLeft()
+    {
+        return field_7_ftsCellPaddingLeft;
+    }
+
+    /**
+     * Set the ftsCellPaddingLeft field for the TC record.
+     */
+    public void setFtsCellPaddingLeft(byte field_7_ftsCellPaddingLeft)
+    {
+        this.field_7_ftsCellPaddingLeft = field_7_ftsCellPaddingLeft;
+    }
+
+    /**
+     * Get the ftsCellPaddingTop field for the TC record.
+     */
+    public byte getFtsCellPaddingTop()
+    {
+        return field_8_ftsCellPaddingTop;
+    }
+
+    /**
+     * Set the ftsCellPaddingTop field for the TC record.
+     */
+    public void setFtsCellPaddingTop(byte field_8_ftsCellPaddingTop)
+    {
+        this.field_8_ftsCellPaddingTop = field_8_ftsCellPaddingTop;
+    }
+
+    /**
+     * Get the ftsCellPaddingBottom field for the TC record.
+     */
+    public byte getFtsCellPaddingBottom()
+    {
+        return field_9_ftsCellPaddingBottom;
+    }
+
+    /**
+     * Set the ftsCellPaddingBottom field for the TC record.
+     */
+    public void setFtsCellPaddingBottom(byte field_9_ftsCellPaddingBottom)
+    {
+        this.field_9_ftsCellPaddingBottom = field_9_ftsCellPaddingBottom;
+    }
+
+    /**
+     * Get the ftsCellPaddingRight field for the TC record.
+     */
+    public byte getFtsCellPaddingRight()
+    {
+        return field_10_ftsCellPaddingRight;
+    }
+
+    /**
+     * Set the ftsCellPaddingRight field for the TC record.
+     */
+    public void setFtsCellPaddingRight(byte field_10_ftsCellPaddingRight)
+    {
+        this.field_10_ftsCellPaddingRight = field_10_ftsCellPaddingRight;
+    }
+
+    /**
+     * Get the wCellSpacingLeft field for the TC record.
+     */
+    public short getWCellSpacingLeft()
+    {
+        return field_11_wCellSpacingLeft;
+    }
+
+    /**
+     * Set the wCellSpacingLeft field for the TC record.
+     */
+    public void setWCellSpacingLeft(short field_11_wCellSpacingLeft)
+    {
+        this.field_11_wCellSpacingLeft = field_11_wCellSpacingLeft;
+    }
+
+    /**
+     * Get the wCellSpacingTop field for the TC record.
+     */
+    public short getWCellSpacingTop()
+    {
+        return field_12_wCellSpacingTop;
+    }
+
+    /**
+     * Set the wCellSpacingTop field for the TC record.
+     */
+    public void setWCellSpacingTop(short field_12_wCellSpacingTop)
+    {
+        this.field_12_wCellSpacingTop = field_12_wCellSpacingTop;
+    }
+
+    /**
+     * Get the wCellSpacingBottom field for the TC record.
+     */
+    public short getWCellSpacingBottom()
+    {
+        return field_13_wCellSpacingBottom;
+    }
+
+    /**
+     * Set the wCellSpacingBottom field for the TC record.
+     */
+    public void setWCellSpacingBottom(short field_13_wCellSpacingBottom)
+    {
+        this.field_13_wCellSpacingBottom = field_13_wCellSpacingBottom;
+    }
+
+    /**
+     * Get the wCellSpacingRight field for the TC record.
+     */
+    public short getWCellSpacingRight()
+    {
+        return field_14_wCellSpacingRight;
+    }
+
+    /**
+     * Set the wCellSpacingRight field for the TC record.
+     */
+    public void setWCellSpacingRight(short field_14_wCellSpacingRight)
+    {
+        this.field_14_wCellSpacingRight = field_14_wCellSpacingRight;
+    }
+
+    /**
+     * Get the ftsCellSpacingLeft field for the TC record.
+     */
+    public byte getFtsCellSpacingLeft()
+    {
+        return field_15_ftsCellSpacingLeft;
+    }
+
+    /**
+     * Set the ftsCellSpacingLeft field for the TC record.
+     */
+    public void setFtsCellSpacingLeft(byte field_15_ftsCellSpacingLeft)
+    {
+        this.field_15_ftsCellSpacingLeft = field_15_ftsCellSpacingLeft;
+    }
+
+    /**
+     * Get the ftsCellSpacingTop field for the TC record.
+     */
+    public byte getFtsCellSpacingTop()
+    {
+        return field_16_ftsCellSpacingTop;
+    }
+
+    /**
+     * Set the ftsCellSpacingTop field for the TC record.
+     */
+    public void setFtsCellSpacingTop(byte field_16_ftsCellSpacingTop)
+    {
+        this.field_16_ftsCellSpacingTop = field_16_ftsCellSpacingTop;
+    }
+
+    /**
+     * Get the ftsCellSpacingBottom field for the TC record.
      */
-    public short getUnused()
+    public byte getFtsCellSpacingBottom()
     {
-        return field_2_unused;
+        return field_17_ftsCellSpacingBottom;
     }
 
     /**
-     * Set the unused field for the TC record.
+     * Set the ftsCellSpacingBottom field for the TC record.
      */
-    public void setUnused(short field_2_unused)
+    public void setFtsCellSpacingBottom(byte field_17_ftsCellSpacingBottom)
     {
-        this.field_2_unused = field_2_unused;
+        this.field_17_ftsCellSpacingBottom = field_17_ftsCellSpacingBottom;
+    }
+
+    /**
+     * Get the ftsCellSpacingRight field for the TC record.
+     */
+    public byte getFtsCellSpacingRight()
+    {
+        return field_18_ftsCellSpacingRight;
+    }
+
+    /**
+     * Set the ftsCellSpacingRight field for the TC record.
+     */
+    public void setFtsCellSpacingRight(byte field_18_ftsCellSpacingRight)
+    {
+        this.field_18_ftsCellSpacingRight = field_18_ftsCellSpacingRight;
     }
 
     /**
@@ -165,15 +467,15 @@ public abstract class TCAbstractType implements HDFType {
      */
     public BorderCode getBrcTop()
     {
-        return field_3_brcTop;
+        return field_19_brcTop;
     }
 
     /**
      * Set the brcTop field for the TC record.
      */
-    public void setBrcTop(BorderCode field_3_brcTop)
+    public void setBrcTop(BorderCode field_19_brcTop)
     {
-        this.field_3_brcTop = field_3_brcTop;
+        this.field_19_brcTop = field_19_brcTop;
     }
 
     /**
@@ -181,15 +483,15 @@ public abstract class TCAbstractType implements HDFType {
      */
     public BorderCode getBrcLeft()
     {
-        return field_4_brcLeft;
+        return field_20_brcLeft;
     }
 
     /**
      * Set the brcLeft field for the TC record.
      */
-    public void setBrcLeft(BorderCode field_4_brcLeft)
+    public void setBrcLeft(BorderCode field_20_brcLeft)
     {
-        this.field_4_brcLeft = field_4_brcLeft;
+        this.field_20_brcLeft = field_20_brcLeft;
     }
 
     /**
@@ -197,15 +499,15 @@ public abstract class TCAbstractType implements HDFType {
      */
     public BorderCode getBrcBottom()
     {
-        return field_5_brcBottom;
+        return field_21_brcBottom;
     }
 
     /**
      * Set the brcBottom field for the TC record.
      */
-    public void setBrcBottom(BorderCode field_5_brcBottom)
+    public void setBrcBottom(BorderCode field_21_brcBottom)
     {
-        this.field_5_brcBottom = field_5_brcBottom;
+        this.field_21_brcBottom = field_21_brcBottom;
     }
 
     /**
@@ -213,219 +515,272 @@ public abstract class TCAbstractType implements HDFType {
      */
     public BorderCode getBrcRight()
     {
-        return field_6_brcRight;
+        return field_22_brcRight;
     }
 
     /**
      * Set the brcRight field for the TC record.
      */
-    public void setBrcRight(BorderCode field_6_brcRight)
+    public void setBrcRight(BorderCode field_22_brcRight)
     {
-        this.field_6_brcRight = field_6_brcRight;
+        this.field_22_brcRight = field_22_brcRight;
     }
 
     /**
      * Sets the fFirstMerged field value.
-     *
+     * 
      */
     public void setFFirstMerged(boolean value)
     {
         field_1_rgf = (short)fFirstMerged.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the fFirstMerged field value.
      */
     public boolean isFFirstMerged()
     {
         return fFirstMerged.isSet(field_1_rgf);
+        
     }
 
     /**
      * Sets the fMerged field value.
-     *
+     * 
      */
     public void setFMerged(boolean value)
     {
         field_1_rgf = (short)fMerged.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the fMerged field value.
      */
     public boolean isFMerged()
     {
         return fMerged.isSet(field_1_rgf);
+        
     }
 
     /**
      * Sets the fVertical field value.
-     *
+     * 
      */
     public void setFVertical(boolean value)
     {
         field_1_rgf = (short)fVertical.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the fVertical field value.
      */
     public boolean isFVertical()
     {
         return fVertical.isSet(field_1_rgf);
+        
     }
 
     /**
      * Sets the fBackward field value.
-     *
+     * 
      */
     public void setFBackward(boolean value)
     {
         field_1_rgf = (short)fBackward.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the fBackward field value.
      */
     public boolean isFBackward()
     {
         return fBackward.isSet(field_1_rgf);
+        
     }
 
     /**
      * Sets the fRotateFont field value.
-     *
+     * 
      */
     public void setFRotateFont(boolean value)
     {
         field_1_rgf = (short)fRotateFont.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the fRotateFont field value.
      */
     public boolean isFRotateFont()
     {
         return fRotateFont.isSet(field_1_rgf);
+        
     }
 
     /**
      * Sets the fVertMerge field value.
-     *
+     * 
      */
     public void setFVertMerge(boolean value)
     {
         field_1_rgf = (short)fVertMerge.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the fVertMerge field value.
      */
     public boolean isFVertMerge()
     {
         return fVertMerge.isSet(field_1_rgf);
+        
     }
 
     /**
      * Sets the fVertRestart field value.
-     *
+     * 
      */
     public void setFVertRestart(boolean value)
     {
         field_1_rgf = (short)fVertRestart.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the fVertRestart field value.
      */
     public boolean isFVertRestart()
     {
         return fVertRestart.isSet(field_1_rgf);
+        
     }
 
     /**
      * Sets the vertAlign field value.
-     *
+     * 
      */
     public void setVertAlign(byte value)
     {
         field_1_rgf = (short)vertAlign.setValue(field_1_rgf, value);
+
+        
     }
 
     /**
-     *
+     * 
      * @return  the vertAlign field value.
      */
     public byte getVertAlign()
     {
-        return (byte)vertAlign.getValue(field_1_rgf);
+        return ( byte )vertAlign.getValue(field_1_rgf);
+        
     }
 
     /**
-     * Sets the ftsWidth field value
+     * Sets the ftsWidth field value.
+     * 
      */
-    public void setFtsWidth(byte value) {
-       field_1_rgf = (short)ftsWidth.setValue(field_1_rgf, value);
+    public void setFtsWidth(byte value)
+    {
+        field_1_rgf = (short)ftsWidth.setValue(field_1_rgf, value);
+
+        
     }
 
     /**
-     * @return the ftsWidth field value
+     * 
+     * @return  the ftsWidth field value.
      */
-    public byte getFtsWidth() {
-       return (byte)ftsWidth.getValue(field_1_rgf);
+    public byte getFtsWidth()
+    {
+        return ( byte )ftsWidth.getValue(field_1_rgf);
+        
     }
-    
+
     /**
      * Sets the fFitText field value.
      * 
      */
-    public void setFFitText(boolean value) {
-       field_1_rgf = (short)fFitText.setBoolean(field_1_rgf, value);
+    public void setFFitText(boolean value)
+    {
+        field_1_rgf = (short)fFitText.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
+     * 
      * @return  the fFitText field value.
      */
-    public boolean isFFitText() {
-       return fFitText.isSet(field_1_rgf);
+    public boolean isFFitText()
+    {
+        return fFitText.isSet(field_1_rgf);
+        
     }
-    
+
     /**
      * Sets the fNoWrap field value.
      * 
      */
-    public void setFNoWrap(boolean value) {
-       field_1_rgf = (short)fNoWrap.setBoolean(field_1_rgf, value);
+    public void setFNoWrap(boolean value)
+    {
+        field_1_rgf = (short)fNoWrap.setBoolean(field_1_rgf, value);
+
+        
     }
 
     /**
      * 
      * @return  the fNoWrap field value.
      */
-    public boolean isFNoWrap() {
-       return fNoWrap.isSet(field_1_rgf);
+    public boolean isFNoWrap()
+    {
+        return fNoWrap.isSet(field_1_rgf);
+        
     }
-    
+
     /**
      * Sets the fUnused field value.
      * 
      */
-    public void setFUnused(byte value) {
-       field_1_rgf = (short)fUnused.setValue(field_1_rgf, value);
+    public void setFUnused(byte value)
+    {
+        field_1_rgf = (short)fUnused.setValue(field_1_rgf, value);
+
+        
     }
 
     /**
      * 
      * @return  the fUnused field value.
      */
-    public byte getFUnused() {
-       return ( byte )fUnused.getValue(field_1_rgf);
+    public byte getFUnused()
+    {
+        return ( byte )fUnused.getValue(field_1_rgf);
+        
     }
-}
+
+
+}  // END OF CLASS
+
+
+
+
index 85ea4479732c07c13ffa7d1c173289c88aca92c1..8f9455d7b63d93673f41af0bf8cf0b10b2829874 100644 (file)
 
 package org.apache.poi.hwpf.sprm;
 
-import org.apache.poi.hwpf.usermodel.TableProperties;
-import org.apache.poi.hwpf.usermodel.TableCellDescriptor;
 import org.apache.poi.hwpf.usermodel.BorderCode;
-
+import org.apache.poi.hwpf.usermodel.TableCellDescriptor;
+import org.apache.poi.hwpf.usermodel.TableProperties;
 import org.apache.poi.util.LittleEndian;
 
 public final class TableSprmUncompressor
@@ -252,6 +251,37 @@ public final class TableSprmUncompressor
       case 0x2b:
       case 0x2c:
         break;
+      case 0x34:
+        // sprmTCellPaddingDefault -- (0xd634)
+        // TODO: extract into CSSA structure
+        byte itcFirst = sprm.getGrpprl()[sprm.getGrpprlOffset()];
+        byte itcLim = sprm.getGrpprl()[sprm.getGrpprlOffset() + 1];
+        byte grfbrc = sprm.getGrpprl()[sprm.getGrpprlOffset() + 2];
+        byte ftsWidth = sprm.getGrpprl()[sprm.getGrpprlOffset() + 3];
+        short wWidth = LittleEndian.getShort(sprm.getGrpprl(),
+            sprm.getGrpprlOffset() + 4);
+
+        for (int c = itcFirst; c < itcLim; c++) {
+          TableCellDescriptor tableCellDescriptor = newTAP.getRgtc()[c];
+
+          if ((grfbrc & 0x01) != 0) {
+            tableCellDescriptor.setFtsCellPaddingTop(ftsWidth);
+            tableCellDescriptor.setWCellPaddingTop(wWidth);
+          }
+          if ((grfbrc & 0x02) != 0) {
+            tableCellDescriptor.setFtsCellPaddingLeft(ftsWidth);
+            tableCellDescriptor.setWCellPaddingLeft(wWidth);
+          }
+          if ((grfbrc & 0x04) != 0) {
+            tableCellDescriptor.setFtsCellPaddingBottom(ftsWidth);
+            tableCellDescriptor.setWCellPaddingBottom(wWidth);
+          }
+          if ((grfbrc & 0x08) != 0) {
+            tableCellDescriptor.setFtsCellPaddingRight(ftsWidth);
+            tableCellDescriptor.setWCellPaddingRight(wWidth);
+          }
+        }
+        break;
       default:
         break;
     }
index 8d196fce7292ab8e6d604a893011d6db35e8811b..963ce0c6c34a69778a5779129b94430e183ac169 100644 (file)
 package org.apache.poi.hwpf.usermodel;
 
 import org.apache.poi.hwpf.model.types.TCAbstractType;
+import org.apache.poi.util.LittleEndian;
 
 public final class TableCellDescriptor
   extends TCAbstractType
 {
   public static final int SIZE = 20;
 
+  protected  short field_x_unused;
+
   public TableCellDescriptor()
   {
-    field_3_brcTop = new BorderCode();
-    field_4_brcLeft = new BorderCode();
-    field_5_brcBottom = new BorderCode();
-    field_6_brcRight = new BorderCode();
+    setBrcTop(new BorderCode());
+    setBrcLeft(new BorderCode());
+    setBrcBottom(new BorderCode());
+    setBrcRight(new BorderCode());
+
+  }
 
+  protected void fillFields(byte[] data, int offset)
+  {
+    field_1_rgf = LittleEndian.getShort(data, 0x0 + offset);
+    field_x_unused = LittleEndian.getShort(data, 0x2 + offset);
+    setBrcTop(new BorderCode(data, 0x4 + offset));
+    setBrcLeft(new BorderCode(data, 0x8 + offset));
+    setBrcBottom(new BorderCode(data, 0xc + offset));
+    setBrcRight(new BorderCode(data, 0x10 + offset));
+  }
+
+  public void serialize(byte[] data, int offset)
+  {
+      LittleEndian.putShort(data, 0x0 + offset, field_1_rgf);
+      LittleEndian.putShort(data, 0x2 + offset, field_x_unused);
+      getBrcTop().serialize(data, 0x4 + offset);
+      getBrcLeft().serialize(data, 0x8 + offset);
+      getBrcBottom().serialize(data, 0xc + offset);
+      getBrcRight().serialize(data, 0x10 + offset);
   }
 
   public Object clone()
     throws CloneNotSupportedException
   {
     TableCellDescriptor tc = (TableCellDescriptor)super.clone();
-    tc.field_3_brcTop = (BorderCode)field_3_brcTop.clone();
-    tc.field_4_brcLeft = (BorderCode)field_4_brcLeft.clone();
-    tc.field_5_brcBottom = (BorderCode)field_5_brcBottom.clone();
-    tc.field_6_brcRight = (BorderCode)field_6_brcRight.clone();
+    tc.setBrcTop((BorderCode)getBrcTop().clone());
+    tc.setBrcLeft((BorderCode)getBrcLeft().clone());
+    tc.setBrcBottom((BorderCode)getBrcBottom().clone());
+    tc.setBrcRight((BorderCode)getBrcRight().clone());
     return tc;
   }
 
index 47ee8a7f323a7ea99f6a8d64796956756580ed11..c3d79440617a1530ca912f8085690dd1ddfbeafe 100644 (file)
@@ -17,7 +17,7 @@
    limitations under the License.
    ====================================================================
 -->
-<record fromfile="true" id="0x101B" name="TC" package="org.apache.poi.hwpf.model.types">
+<record fromfile="false" id="0x101B" name="TC" package="org.apache.poi.hwpf.model.types">
     <suffix>AbstractType</suffix>
     <extends>HDFType</extends>
     <description>Table Cell Descriptor.</description>
         <bit number="10" mask="0x2000" name="fNoWrap"/>
         <bit number="11" mask="0xC000" name="fUnused"/>
       </field>
-      <field type="short" size="2" name="unused"/>
+      <field type="short" size="2" name="wWidth"/>
+      <field type="short" size="2" name="wCellPaddingLeft"/>
+      <field type="short" size="2" name="wCellPaddingTop"/>
+      <field type="short" size="2" name="wCellPaddingBottom"/>
+      <field type="short" size="2" name="wCellPaddingRight"/>
+      <field type="byte" size="1" name="ftsCellPaddingLeft"/>
+      <field type="byte" size="1" name="ftsCellPaddingTop"/>
+      <field type="byte" size="1" name="ftsCellPaddingBottom"/>
+      <field type="byte" size="1" name="ftsCellPaddingRight"/>
+      <field type="short" size="2" name="wCellSpacingLeft"/>
+      <field type="short" size="2" name="wCellSpacingTop"/>
+      <field type="short" size="2" name="wCellSpacingBottom"/>
+      <field type="short" size="2" name="wCellSpacingRight"/>
+      <field type="byte" size="1" name="ftsCellSpacingLeft"/>
+      <field type="byte" size="1" name="ftsCellSpacingTop"/>
+      <field type="byte" size="1" name="ftsCellSpacingBottom"/>
+      <field type="byte" size="1" name="ftsCellSpacingRight"/>
       <field type="BorderCode" size="4" name="brcTop"/>
       <field type="BorderCode" size="4" name="brcLeft"/>
       <field type="BorderCode" size="4" name="brcBottom"/>