Index: org/apache/poi/hdf/model/hdftypes/StyleSheet.java =================================================================== --- org/apache/poi/hdf/model/hdftypes/StyleSheet.java (revision 1125652) +++ org/apache/poi/hdf/model/hdftypes/StyleSheet.java (working copy) @@ -17,8 +17,9 @@ package org.apache.poi.hdf.model.hdftypes; -import org.apache.poi.util.LittleEndian; import org.apache.poi.hdf.model.hdftypes.definitions.TCAbstractType; +import org.apache.poi.hwpf.usermodel.BorderCode; +import org.apache.poi.util.LittleEndian; /** * Represents a document's stylesheet. A word documents formatting is stored as @@ -1180,27 +1181,19 @@ if((varParam[2] & 0x08) > 0) { - short[] brcRight = rgtc[x].getBrcRight(); - brcRight[0] = LittleEndian.getShort(varParam, 6); - brcRight[1] = LittleEndian.getShort(varParam, 8); + rgtc[x].setBrcRight(new BorderCode(varParam, 6)); } else if((varParam[2] & 0x04) > 0) { - short[] brcBottom = rgtc[x].getBrcBottom(); - brcBottom[0] = LittleEndian.getShort(varParam, 6); - brcBottom[1] = LittleEndian.getShort(varParam, 8); + rgtc[x].setBrcBottom(new BorderCode(varParam, 6)); } else if((varParam[2] & 0x02) > 0) { - short[] brcLeft = rgtc[x].getBrcLeft(); - brcLeft[0] = LittleEndian.getShort(varParam, 6); - brcLeft[1] = LittleEndian.getShort(varParam, 8); + rgtc[x].setBrcLeft(new BorderCode(varParam, 6)); } else if((varParam[2] & 0x01) > 0) { - short[] brcTop = rgtc[x].getBrcTop(); - brcTop[0] = LittleEndian.getShort(varParam, 6); - brcTop[1] = LittleEndian.getShort(varParam, 8); + rgtc[x].setBrcTop(new BorderCode(varParam, 6)); } } break; Index: org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java =================================================================== --- org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java (revision 1125652) +++ org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java (working copy) @@ -17,9 +17,10 @@ package org.apache.poi.hdf.model.hdftypes.definitions; -import org.apache.poi.util.BitField; -import org.apache.poi.util.BitFieldFactory; 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.LittleEndian; /** * Table Cell Descriptor. @@ -32,20 +33,24 @@ implements HDFType { - private 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 short field_2_unused; - private short[] field_3_brcTop; - private short[] field_4_brcLeft; - private short[] field_5_brcBottom; - private short[] field_6_brcRight; + protected short field_1_rgf; + 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; public TCAbstractType() @@ -53,6 +58,68 @@ } + 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, (short)field_1_rgf);; + LittleEndian.putShort(data, 0x2 + offset, (short)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() + { + StringBuffer buffer = new StringBuffer(); + + buffer.append("[TC]\n"); + + buffer.append(" .rgf = "); + buffer.append(" (").append(getRgf()).append(" )\n"); + buffer.append(" .fFirstMerged = ").append(isFFirstMerged()).append('\n'); + buffer.append(" .fMerged = ").append(isFMerged()).append('\n'); + buffer.append(" .fVertical = ").append(isFVertical()).append('\n'); + buffer.append(" .fBackward = ").append(isFBackward()).append('\n'); + buffer.append(" .fRotateFont = ").append(isFRotateFont()).append('\n'); + buffer.append(" .fVertMerge = ").append(isFVertMerge()).append('\n'); + buffer.append(" .fVertRestart = ").append(isFVertRestart()).append('\n'); + buffer.append(" .vertAlign = ").append(getVertAlign()).append('\n'); + buffer.append(" .ftsWidth = ").append(getFtsWidth()).append('\n'); + buffer.append(" .fFitText = ").append(isFFitText()).append('\n'); + 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(" .brcTop = "); + buffer.append(" (").append(getBrcTop()).append(" )\n"); + + buffer.append(" .brcLeft = "); + buffer.append(" (").append(getBrcLeft()).append(" )\n"); + + buffer.append(" .brcBottom = "); + buffer.append(" (").append(getBrcBottom()).append(" )\n"); + + buffer.append(" .brcRight = "); + buffer.append(" (").append(getBrcRight()).append(" )\n"); + + buffer.append("[/TC]\n"); + return buffer.toString(); + } + /** * Size of record (exluding 4 byte header) */ @@ -98,7 +165,7 @@ /** * Get the brcTop field for the TC record. */ - public short[] getBrcTop() + public BorderCode getBrcTop() { return field_3_brcTop; } @@ -106,7 +173,7 @@ /** * Set the brcTop field for the TC record. */ - public void setBrcTop(short[] field_3_brcTop) + public void setBrcTop(BorderCode field_3_brcTop) { this.field_3_brcTop = field_3_brcTop; } @@ -114,7 +181,7 @@ /** * Get the brcLeft field for the TC record. */ - public short[] getBrcLeft() + public BorderCode getBrcLeft() { return field_4_brcLeft; } @@ -122,7 +189,7 @@ /** * Set the brcLeft field for the TC record. */ - public void setBrcLeft(short[] field_4_brcLeft) + public void setBrcLeft(BorderCode field_4_brcLeft) { this.field_4_brcLeft = field_4_brcLeft; } @@ -130,7 +197,7 @@ /** * Get the brcBottom field for the TC record. */ - public short[] getBrcBottom() + public BorderCode getBrcBottom() { return field_5_brcBottom; } @@ -138,7 +205,7 @@ /** * Set the brcBottom field for the TC record. */ - public void setBrcBottom(short[] field_5_brcBottom) + public void setBrcBottom(BorderCode field_5_brcBottom) { this.field_5_brcBottom = field_5_brcBottom; } @@ -146,7 +213,7 @@ /** * Get the brcRight field for the TC record. */ - public short[] getBrcRight() + public BorderCode getBrcRight() { return field_6_brcRight; } @@ -154,179 +221,263 @@ /** * Set the brcRight field for the TC record. */ - public void setBrcRight(short[] field_6_brcRight) + public void setBrcRight(BorderCode field_6_brcRight) { this.field_6_brcRight = field_6_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); + + } + /** + * Sets the ftsWidth field value. + * + */ + public void setFtsWidth(byte value) + { + field_1_rgf = (short)ftsWidth.setValue(field_1_rgf, value); + + + } + + /** + * + * @return the ftsWidth field value. + */ + 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); + + + } + + /** + * + * @return the fFitText field value. + */ + 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); + + + } + + /** + * + * @return the fNoWrap field value. + */ + 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); + + + } + + /** + * + * @return the fUnused field value. + */ + public byte getFUnused() + { + return ( byte )fUnused.getValue(field_1_rgf); + + } + } // END OF CLASS