Methods Summary |
---|
private org.apache.poi.hssf.record.ContinueRecord | createContinue1()
ContinueRecord c1 = new ContinueRecord();
byte[] c1Data = new byte[str.length() * 2 + 1];
try
{
c1Data[0] = 1;
System.arraycopy( str.getString().getBytes( "UTF-16LE" ), 0, c1Data, 1, str.length() * 2 );
}
catch ( UnsupportedEncodingException e )
{
throw new RuntimeException( e.getMessage() );
}
c1.setData( c1Data );
return c1;
|
private org.apache.poi.hssf.record.ContinueRecord | createContinue2()
ContinueRecord c2 = new ContinueRecord();
byte[] c2Data = new byte[str.numFormattingRuns() * 8 + 8];
int pos = 0;
for ( int i = 0; i < str.numFormattingRuns(); i++ )
{
LittleEndian.putShort( c2Data, pos, (short) str.getIndexOfFormattingRun( i ) );
pos += 2;
LittleEndian.putShort( c2Data, pos, str.getFontOfFormattingRun( i ) == str.NO_FONT ? 0 : str.getFontOfFormattingRun( i ) );
pos += 2;
pos += 4; // skip reserved
}
LittleEndian.putShort( c2Data, pos, (short) str.length() );
pos += 2;
LittleEndian.putShort( c2Data, pos, (short) 0 );
pos += 2;
pos += 4; // skip reserved
c2.setData( c2Data );
return c2;
|
protected void | fillFields(org.apache.poi.hssf.record.RecordInputStream in)
super.fillFields(in);
if (getTextLength() > 0) {
if (in.isContinueNext() && in.remaining() == 0) {
//1st Continue
in.nextRecord();
processRawString(in);
} else
throw new RecordFormatException("Expected Continue record to hold string data for TextObjectRecord");
}
if (getFormattingRunLength() > 0) {
if (in.isContinueNext() && in.remaining() == 0) {
in.nextRecord();
processFontRuns(in);
} else throw new RecordFormatException("Expected Continue Record to hold font runs for TextObjectRecord");
}
|
public int | getRecordSize()
int continue1Size = 0;
int continue2Size = 0;
if (str.length() != 0)
{
continue1Size = str.length() * 2 + 1 + 4;
continue2Size = (str.numFormattingRuns() + 1) * 8 + 4;
}
return super.getRecordSize() + continue1Size + continue2Size;
|
public org.apache.poi.hssf.usermodel.HSSFRichTextString | getStr()
return str;
|
private void | processFontRuns(org.apache.poi.hssf.record.RecordInputStream in)
while (in.remaining() > 0)
{
short index = in.readShort();
short iFont = in.readShort();
in.readInt(); // skip reserved.
str.applyFont( index, str.length(), iFont );
}
|
private void | processRawString(org.apache.poi.hssf.record.RecordInputStream in)
String s;
byte compressByte = in.readByte();
boolean isCompressed = compressByte == 0;
if ( isCompressed )
{
s = in.readCompressedUnicode(getTextLength());
}
else
{
s = in.readUnicodeLEString(getTextLength());
}
str = new HSSFRichTextString( s );
|
public int | serialize(int offset, byte[] data)
// Temporarily blank out str so that record size is calculated without the continue records.
HSSFRichTextString temp = str;
str = new HSSFRichTextString("");
int bytesWritten1 = super.serialize( offset, data );
str = temp;
int pos = offset + bytesWritten1;
if ( str.getString().equals( "" ) == false )
{
ContinueRecord c1 = createContinue1();
ContinueRecord c2 = createContinue2();
int bytesWritten2 = c1.serialize( pos, data );
pos += bytesWritten2;
int bytesWritten3 = c2.serialize( pos, data );
pos += bytesWritten3;
int size = bytesWritten1 + bytesWritten2 + bytesWritten3;
if ( size != getRecordSize() )
throw new RecordFormatException(size + " bytes written but getRecordSize() reports " + getRecordSize());
return size;
}
if ( bytesWritten1 != getRecordSize() )
throw new RecordFormatException(bytesWritten1 + " bytes written but getRecordSize() reports " + getRecordSize());
return bytesWritten1;
|
public void | setStr(org.apache.poi.hssf.usermodel.HSSFRichTextString str)
this.str = str;
|
public java.lang.String | toString()
StringBuffer buffer = new StringBuffer();
buffer.append( "[TXO]\n" );
buffer.append( " .options = " )
.append( "0x" ).append( HexDump.toHex( getOptions() ) )
.append( " (" ).append( getOptions() ).append( " )" );
buffer.append( System.getProperty( "line.separator" ) );
buffer.append( " .reserved1 = " ).append( isReserved1() ).append( '\n" );
buffer.append( " .HorizontalTextAlignment = " ).append( getHorizontalTextAlignment() ).append( '\n" );
buffer.append( " .VerticalTextAlignment = " ).append( getVerticalTextAlignment() ).append( '\n" );
buffer.append( " .reserved2 = " ).append( getReserved2() ).append( '\n" );
buffer.append( " .textLocked = " ).append( isTextLocked() ).append( '\n" );
buffer.append( " .reserved3 = " ).append( getReserved3() ).append( '\n" );
buffer.append( " .textOrientation = " )
.append( "0x" ).append( HexDump.toHex( getTextOrientation() ) )
.append( " (" ).append( getTextOrientation() ).append( " )" );
buffer.append( System.getProperty( "line.separator" ) );
buffer.append( " .reserved4 = " )
.append( "0x" ).append( HexDump.toHex( getReserved4() ) )
.append( " (" ).append( getReserved4() ).append( " )" );
buffer.append( System.getProperty( "line.separator" ) );
buffer.append( " .reserved5 = " )
.append( "0x" ).append( HexDump.toHex( getReserved5() ) )
.append( " (" ).append( getReserved5() ).append( " )" );
buffer.append( System.getProperty( "line.separator" ) );
buffer.append( " .reserved6 = " )
.append( "0x" ).append( HexDump.toHex( getReserved6() ) )
.append( " (" ).append( getReserved6() ).append( " )" );
buffer.append( System.getProperty( "line.separator" ) );
buffer.append( " .textLength = " )
.append( "0x" ).append( HexDump.toHex( getTextLength() ) )
.append( " (" ).append( getTextLength() ).append( " )" );
buffer.append( System.getProperty( "line.separator" ) );
buffer.append( " .reserved7 = " )
.append( "0x" ).append( HexDump.toHex( getReserved7() ) )
.append( " (" ).append( getReserved7() ).append( " )" );
buffer.append( System.getProperty( "line.separator" ) );
buffer.append( " .string = " ).append(str).append('\n");
buffer.append( "[/TXO]\n" );
return buffer.toString();
|