mirror of https://github.com/apache/poi.git
Bug 51305: Add sprmTCellPaddingDefault support; Update Table Cell Descriptor, make it non-from-file;
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1132616 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e229a9e472
commit
a2e6747abd
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -18,11 +18,10 @@
|
|||
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 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_unused;
|
||||
protected BorderCode field_3_brcTop;
|
||||
protected BorderCode field_4_brcLeft;
|
||||
protected BorderCode field_5_brcBottom;
|
||||
protected BorderCode field_6_brcRight;
|
||||
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 getUnused()
|
||||
public short getWWidth()
|
||||
{
|
||||
return field_2_unused;
|
||||
return field_2_wWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the unused field for the TC record.
|
||||
* Set the wWidth field for the TC record.
|
||||
*/
|
||||
public void setUnused(short field_2_unused)
|
||||
public void setWWidth(short field_2_wWidth)
|
||||
{
|
||||
this.field_2_unused = field_2_unused;
|
||||
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 byte getFtsCellSpacingBottom()
|
||||
{
|
||||
return field_17_ftsCellSpacingBottom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the ftsCellSpacingBottom field for the TC record.
|
||||
*/
|
||||
public void setFtsCellSpacingBottom(byte field_17_ftsCellSpacingBottom)
|
||||
{
|
||||
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,15 +515,15 @@ 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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -231,6 +533,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setFFirstMerged(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fFirstMerged.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -240,6 +544,7 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public boolean isFFirstMerged()
|
||||
{
|
||||
return fFirstMerged.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -249,6 +554,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setFMerged(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fMerged.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -258,6 +565,7 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public boolean isFMerged()
|
||||
{
|
||||
return fMerged.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -267,6 +575,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setFVertical(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fVertical.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -276,6 +586,7 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public boolean isFVertical()
|
||||
{
|
||||
return fVertical.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -285,6 +596,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setFBackward(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fBackward.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -294,6 +607,7 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public boolean isFBackward()
|
||||
{
|
||||
return fBackward.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -303,6 +617,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setFRotateFont(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fRotateFont.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -312,6 +628,7 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public boolean isFRotateFont()
|
||||
{
|
||||
return fRotateFont.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -321,6 +638,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setFVertMerge(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fVertMerge.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -330,6 +649,7 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public boolean isFVertMerge()
|
||||
{
|
||||
return fVertMerge.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -339,6 +659,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setFVertRestart(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fVertRestart.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -348,6 +670,7 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public boolean isFVertRestart()
|
||||
{
|
||||
return fVertRestart.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -357,6 +680,8 @@ public abstract class TCAbstractType implements HDFType {
|
|||
public void setVertAlign(byte value)
|
||||
{
|
||||
field_1_rgf = (short)vertAlign.setValue(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -365,67 +690,97 @@ public abstract class TCAbstractType implements HDFType {
|
|||
*/
|
||||
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) {
|
||||
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) {
|
||||
public void setFFitText(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fFitText.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the fFitText field value.
|
||||
*/
|
||||
public boolean isFFitText() {
|
||||
public boolean isFFitText()
|
||||
{
|
||||
return fFitText.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the fNoWrap field value.
|
||||
*
|
||||
*/
|
||||
public void setFNoWrap(boolean value) {
|
||||
public void setFNoWrap(boolean value)
|
||||
{
|
||||
field_1_rgf = (short)fNoWrap.setBoolean(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the fNoWrap field value.
|
||||
*/
|
||||
public boolean isFNoWrap() {
|
||||
public boolean isFNoWrap()
|
||||
{
|
||||
return fNoWrap.isSet(field_1_rgf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the fUnused field value.
|
||||
*
|
||||
*/
|
||||
public void setFUnused(byte value) {
|
||||
public void setFUnused(byte value)
|
||||
{
|
||||
field_1_rgf = (short)fUnused.setValue(field_1_rgf, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the fUnused field value.
|
||||
*/
|
||||
public byte getFUnused() {
|
||||
public byte getFUnused()
|
||||
{
|
||||
return ( byte )fUnused.getValue(field_1_rgf);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // END OF CLASS
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -17,10 +17,9 @@
|
|||
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -18,29 +18,52 @@
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
@ -37,7 +37,23 @@
|
|||
<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"/>
|
||||
|
|
Loading…
Reference in New Issue