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>
|
<changes>
|
||||||
<release version="3.8-beta4" date="2011-??-??">
|
<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">51265 - Enhanced Handling of Picture Parts in XWPF</action>
|
||||||
<action dev="poi-developers" type="add">51292 - Additional HWPF Table Cell Descriptor values</action>
|
<action dev="poi-developers" type="add">51292 - Additional HWPF Table Cell Descriptor values</action>
|
||||||
</release>
|
</release>
|
||||||
|
|
|
@ -102,24 +102,20 @@ cd build/dist
|
||||||
|
|
||||||
8. Upload to the dev svn dist repo,
|
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/ 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:
|
How to upload:
|
||||||
|
|
||||||
8a svn co https://dist.apache.org/repos/dist/dev/poi
|
svn co https://dist.apache.org/repos/dist/dev/poi
|
||||||
8b add .gz and .zip packages along with checksums.
|
mkdir 3.8-RC3/
|
||||||
|
svn add 3.8-RC3
|
||||||
|
|
||||||
you should have a similar structure of files:
|
then add .gz and .zip packages along with checksums.
|
||||||
$ ls
|
|
||||||
README.html poi-bin-3.8-beta3-20110606.zip poi-src-3.8-beta3-20110606.tar.gz.md5
|
binaries should be in ./bin, sources in ./src sub-directories
|
||||||
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
|
|
||||||
|
|
||||||
8c. commit
|
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:
|
(III) After the vote:
|
||||||
|
|
|
@ -18,11 +18,10 @@
|
||||||
package org.apache.poi.hwpf.model.types;
|
package org.apache.poi.hwpf.model.types;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import org.apache.poi.hdf.model.hdftypes.HDFType;
|
import org.apache.poi.hdf.model.hdftypes.HDFType;
|
||||||
import org.apache.poi.hwpf.usermodel.BorderCode;
|
import org.apache.poi.hwpf.usermodel.BorderCode;
|
||||||
import org.apache.poi.util.BitField;
|
import org.apache.poi.util.BitField;
|
||||||
import org.apache.poi.util.BitFieldFactory;
|
|
||||||
import org.apache.poi.util.LittleEndian;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Table Cell Descriptor.
|
* Table Cell Descriptor.
|
||||||
|
@ -31,25 +30,44 @@ import org.apache.poi.util.LittleEndian;
|
||||||
|
|
||||||
* @author S. Ryan Ackley
|
* @author S. Ryan Ackley
|
||||||
*/
|
*/
|
||||||
public abstract class TCAbstractType implements HDFType {
|
public abstract class TCAbstractType
|
||||||
|
implements HDFType
|
||||||
|
{
|
||||||
|
|
||||||
protected short field_1_rgf;
|
protected short field_1_rgf;
|
||||||
private static BitField fFirstMerged = BitFieldFactory.getInstance(0x0001);
|
private static BitField fFirstMerged = new BitField(0x0001);
|
||||||
private static BitField fMerged = BitFieldFactory.getInstance(0x0002);
|
private static BitField fMerged = new BitField(0x0002);
|
||||||
private static BitField fVertical = BitFieldFactory.getInstance(0x0004);
|
private static BitField fVertical = new BitField(0x0004);
|
||||||
private static BitField fBackward = BitFieldFactory.getInstance(0x0008);
|
private static BitField fBackward = new BitField(0x0008);
|
||||||
private static BitField fRotateFont = BitFieldFactory.getInstance(0x0010);
|
private static BitField fRotateFont = new BitField(0x0010);
|
||||||
private static BitField fVertMerge = BitFieldFactory.getInstance(0x0020);
|
private static BitField fVertMerge = new BitField(0x0020);
|
||||||
private static BitField fVertRestart = BitFieldFactory.getInstance(0x0040);
|
private static BitField fVertRestart = new BitField(0x0040);
|
||||||
private static BitField vertAlign = BitFieldFactory.getInstance(0x0180);
|
private static BitField vertAlign = new BitField(0x0180);
|
||||||
private static BitField ftsWidth = new BitField(0x0E00);
|
private static BitField ftsWidth = new BitField(0x0E00);
|
||||||
private static BitField fFitText = new BitField(0x1000);
|
private static BitField fFitText = new BitField(0x1000);
|
||||||
private static BitField fNoWrap = new BitField(0x2000);
|
private static BitField fNoWrap = new BitField(0x2000);
|
||||||
private static BitField fUnused = new BitField(0xC000);
|
private static BitField fUnused = new BitField(0xC000);
|
||||||
protected short field_2_unused;
|
protected short field_2_wWidth;
|
||||||
protected BorderCode field_3_brcTop;
|
protected short field_3_wCellPaddingLeft;
|
||||||
protected BorderCode field_4_brcLeft;
|
protected short field_4_wCellPaddingTop;
|
||||||
protected BorderCode field_5_brcBottom;
|
protected short field_5_wCellPaddingBottom;
|
||||||
protected BorderCode field_6_brcRight;
|
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()
|
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()
|
public String toString()
|
||||||
{
|
{
|
||||||
|
@ -99,8 +97,56 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
buffer.append(" .fNoWrap = ").append(isFNoWrap()).append('\n');
|
buffer.append(" .fNoWrap = ").append(isFNoWrap()).append('\n');
|
||||||
buffer.append(" .fUnused = ").append(getFUnused()).append('\n');
|
buffer.append(" .fUnused = ").append(getFUnused()).append('\n');
|
||||||
|
|
||||||
buffer.append(" .unused = ");
|
buffer.append(" .wWidth = ");
|
||||||
buffer.append(" (").append(getUnused()).append(" )\n");
|
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(" .brcTop = ");
|
||||||
buffer.append(" (").append(getBrcTop()).append(" )\n");
|
buffer.append(" (").append(getBrcTop()).append(" )\n");
|
||||||
|
@ -123,7 +169,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
*/
|
*/
|
||||||
public int getSize()
|
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()
|
public BorderCode getBrcTop()
|
||||||
{
|
{
|
||||||
return field_3_brcTop;
|
return field_19_brcTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the brcTop field for the TC record.
|
* 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()
|
public BorderCode getBrcLeft()
|
||||||
{
|
{
|
||||||
return field_4_brcLeft;
|
return field_20_brcLeft;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the brcLeft field for the TC record.
|
* 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()
|
public BorderCode getBrcBottom()
|
||||||
{
|
{
|
||||||
return field_5_brcBottom;
|
return field_21_brcBottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the brcBottom field for the TC record.
|
* 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()
|
public BorderCode getBrcRight()
|
||||||
{
|
{
|
||||||
return field_6_brcRight;
|
return field_22_brcRight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the brcRight field for the TC record.
|
* 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)
|
public void setFFirstMerged(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fFirstMerged.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fFirstMerged.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -240,6 +544,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public boolean isFFirstMerged()
|
public boolean isFFirstMerged()
|
||||||
{
|
{
|
||||||
return fFirstMerged.isSet(field_1_rgf);
|
return fFirstMerged.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -249,6 +554,8 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public void setFMerged(boolean value)
|
public void setFMerged(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fMerged.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fMerged.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -258,6 +565,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public boolean isFMerged()
|
public boolean isFMerged()
|
||||||
{
|
{
|
||||||
return fMerged.isSet(field_1_rgf);
|
return fMerged.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -267,6 +575,8 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public void setFVertical(boolean value)
|
public void setFVertical(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fVertical.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fVertical.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -276,6 +586,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public boolean isFVertical()
|
public boolean isFVertical()
|
||||||
{
|
{
|
||||||
return fVertical.isSet(field_1_rgf);
|
return fVertical.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -285,6 +596,8 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public void setFBackward(boolean value)
|
public void setFBackward(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fBackward.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fBackward.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -294,6 +607,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public boolean isFBackward()
|
public boolean isFBackward()
|
||||||
{
|
{
|
||||||
return fBackward.isSet(field_1_rgf);
|
return fBackward.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -303,6 +617,8 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public void setFRotateFont(boolean value)
|
public void setFRotateFont(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fRotateFont.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fRotateFont.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -312,6 +628,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public boolean isFRotateFont()
|
public boolean isFRotateFont()
|
||||||
{
|
{
|
||||||
return fRotateFont.isSet(field_1_rgf);
|
return fRotateFont.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -321,6 +638,8 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public void setFVertMerge(boolean value)
|
public void setFVertMerge(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fVertMerge.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fVertMerge.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -330,6 +649,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public boolean isFVertMerge()
|
public boolean isFVertMerge()
|
||||||
{
|
{
|
||||||
return fVertMerge.isSet(field_1_rgf);
|
return fVertMerge.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -339,6 +659,8 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public void setFVertRestart(boolean value)
|
public void setFVertRestart(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fVertRestart.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fVertRestart.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -348,6 +670,7 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public boolean isFVertRestart()
|
public boolean isFVertRestart()
|
||||||
{
|
{
|
||||||
return fVertRestart.isSet(field_1_rgf);
|
return fVertRestart.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -357,6 +680,8 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
public void setVertAlign(byte value)
|
public void setVertAlign(byte value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)vertAlign.setValue(field_1_rgf, value);
|
field_1_rgf = (short)vertAlign.setValue(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -365,67 +690,97 @@ public abstract class TCAbstractType implements HDFType {
|
||||||
*/
|
*/
|
||||||
public byte getVertAlign()
|
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);
|
{
|
||||||
|
field_1_rgf = (short)ftsWidth.setValue(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the ftsWidth field value
|
*
|
||||||
|
* @return the ftsWidth field value.
|
||||||
*/
|
*/
|
||||||
public byte getFtsWidth() {
|
public byte getFtsWidth()
|
||||||
return (byte)ftsWidth.getValue(field_1_rgf);
|
{
|
||||||
|
return ( byte )ftsWidth.getValue(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the fFitText field value.
|
* 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);
|
{
|
||||||
|
field_1_rgf = (short)fFitText.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
*
|
||||||
* @return the fFitText field value.
|
* @return the fFitText field value.
|
||||||
*/
|
*/
|
||||||
public boolean isFFitText() {
|
public boolean isFFitText()
|
||||||
return fFitText.isSet(field_1_rgf);
|
{
|
||||||
|
return fFitText.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the fNoWrap field value.
|
* 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);
|
{
|
||||||
|
field_1_rgf = (short)fNoWrap.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return the fNoWrap field value.
|
* @return the fNoWrap field value.
|
||||||
*/
|
*/
|
||||||
public boolean isFNoWrap() {
|
public boolean isFNoWrap()
|
||||||
return fNoWrap.isSet(field_1_rgf);
|
{
|
||||||
|
return fNoWrap.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the fUnused field value.
|
* 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);
|
{
|
||||||
|
field_1_rgf = (short)fUnused.setValue(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return the fUnused field value.
|
* @return the fUnused field value.
|
||||||
*/
|
*/
|
||||||
public byte getFUnused() {
|
public byte getFUnused()
|
||||||
return ( byte )fUnused.getValue(field_1_rgf);
|
{
|
||||||
|
return ( byte )fUnused.getValue(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
} // END OF CLASS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,10 +17,9 @@
|
||||||
|
|
||||||
package org.apache.poi.hwpf.sprm;
|
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.BorderCode;
|
||||||
|
import org.apache.poi.hwpf.usermodel.TableCellDescriptor;
|
||||||
|
import org.apache.poi.hwpf.usermodel.TableProperties;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
|
|
||||||
public final class TableSprmUncompressor
|
public final class TableSprmUncompressor
|
||||||
|
@ -252,6 +251,37 @@ public final class TableSprmUncompressor
|
||||||
case 0x2b:
|
case 0x2b:
|
||||||
case 0x2c:
|
case 0x2c:
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,29 +18,52 @@
|
||||||
package org.apache.poi.hwpf.usermodel;
|
package org.apache.poi.hwpf.usermodel;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.types.TCAbstractType;
|
import org.apache.poi.hwpf.model.types.TCAbstractType;
|
||||||
|
import org.apache.poi.util.LittleEndian;
|
||||||
|
|
||||||
public final class TableCellDescriptor
|
public final class TableCellDescriptor
|
||||||
extends TCAbstractType
|
extends TCAbstractType
|
||||||
{
|
{
|
||||||
public static final int SIZE = 20;
|
public static final int SIZE = 20;
|
||||||
|
|
||||||
|
protected short field_x_unused;
|
||||||
|
|
||||||
public TableCellDescriptor()
|
public TableCellDescriptor()
|
||||||
{
|
{
|
||||||
field_3_brcTop = new BorderCode();
|
setBrcTop(new BorderCode());
|
||||||
field_4_brcLeft = new BorderCode();
|
setBrcLeft(new BorderCode());
|
||||||
field_5_brcBottom = new BorderCode();
|
setBrcBottom(new BorderCode());
|
||||||
field_6_brcRight = 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()
|
public Object clone()
|
||||||
throws CloneNotSupportedException
|
throws CloneNotSupportedException
|
||||||
{
|
{
|
||||||
TableCellDescriptor tc = (TableCellDescriptor)super.clone();
|
TableCellDescriptor tc = (TableCellDescriptor)super.clone();
|
||||||
tc.field_3_brcTop = (BorderCode)field_3_brcTop.clone();
|
tc.setBrcTop((BorderCode)getBrcTop().clone());
|
||||||
tc.field_4_brcLeft = (BorderCode)field_4_brcLeft.clone();
|
tc.setBrcLeft((BorderCode)getBrcLeft().clone());
|
||||||
tc.field_5_brcBottom = (BorderCode)field_5_brcBottom.clone();
|
tc.setBrcBottom((BorderCode)getBrcBottom().clone());
|
||||||
tc.field_6_brcRight = (BorderCode)field_6_brcRight.clone();
|
tc.setBrcRight((BorderCode)getBrcRight().clone());
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
limitations under the License.
|
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>
|
<suffix>AbstractType</suffix>
|
||||||
<extends>HDFType</extends>
|
<extends>HDFType</extends>
|
||||||
<description>Table Cell Descriptor.</description>
|
<description>Table Cell Descriptor.</description>
|
||||||
|
@ -37,7 +37,23 @@
|
||||||
<bit number="10" mask="0x2000" name="fNoWrap"/>
|
<bit number="10" mask="0x2000" name="fNoWrap"/>
|
||||||
<bit number="11" mask="0xC000" name="fUnused"/>
|
<bit number="11" mask="0xC000" name="fUnused"/>
|
||||||
</field>
|
</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="brcTop"/>
|
||||||
<field type="BorderCode" size="4" name="brcLeft"/>
|
<field type="BorderCode" size="4" name="brcLeft"/>
|
||||||
<field type="BorderCode" size="4" name="brcBottom"/>
|
<field type="BorderCode" size="4" name="brcBottom"/>
|
||||||
|
|
Loading…
Reference in New Issue