improve DropCapSpecifier, add field getters/setters, toString(), isEmpty(), hashCode(), equals()

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1144649 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Sergey Vladimirov 2011-07-09 11:34:16 +00:00
parent 4318687913
commit ba1fcae896
1 changed files with 78 additions and 18 deletions

View File

@ -24,29 +24,89 @@ import org.apache.poi.util.LittleEndian;
/**
* This data structure is used by a paragraph to determine how it should drop
* its first letter. I think its the visual effect that will show a giant first
* letter to a paragraph. I've seen this used in the first paragraph of a
* book
*
* letter to a paragraph. I've seen this used in the first paragraph of a book
*
* @author Ryan Ackley
*/
public final class DropCapSpecifier
{
private short _info;
private static BitField _type = BitFieldFactory.getInstance(0x07);
private static BitField _lines = BitFieldFactory.getInstance(0xf8);
private short _fdct;
private static BitField _lines = BitFieldFactory.getInstance( 0xf8 );
private static BitField _type = BitFieldFactory.getInstance( 0x07 );
public DropCapSpecifier(byte[] buf, int offset)
{
this(LittleEndian.getShort(buf, offset));
}
public DropCapSpecifier()
{
this._fdct = 0;
}
public DropCapSpecifier(short info)
{
_info = info;
}
public DropCapSpecifier( byte[] buf, int offset )
{
this( LittleEndian.getShort( buf, offset ) );
}
public short toShort()
{
return _info;
}
public DropCapSpecifier( short fdct )
{
this._fdct = fdct;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj )
return true;
if ( obj == null )
return false;
if ( getClass() != obj.getClass() )
return false;
DropCapSpecifier other = (DropCapSpecifier) obj;
if ( _fdct != other._fdct )
return false;
return true;
}
public byte getCountOfLinesToDrop()
{
return (byte) _lines.getValue( _fdct );
}
public byte getDropCapType()
{
return (byte) _type.getValue( _fdct );
}
@Override
public int hashCode()
{
return _fdct;
}
public boolean isEmpty()
{
return _fdct == 0;
}
public void setCountOfLinesToDrop( byte value )
{
_fdct = (short) _lines.setValue( _fdct, value );
}
public void setDropCapType( byte value )
{
_fdct = (short) _type.setValue( _fdct, value );
}
public short toShort()
{
return _fdct;
}
@Override
public String toString()
{
if ( isEmpty() )
return "[DCS] EMPTY";
return "[DCS] (type: " + getDropCapType() + "; count: "
+ getCountOfLinesToDrop() + ")";
}
}