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 a5e5b26013
commit de22f56bec

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 * 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 * 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 * letter to a paragraph. I've seen this used in the first paragraph of a book
* book *
*
* @author Ryan Ackley * @author Ryan Ackley
*/ */
public final class DropCapSpecifier public final class DropCapSpecifier
{ {
private short _info; private short _fdct;
private static BitField _type = BitFieldFactory.getInstance(0x07); private static BitField _lines = BitFieldFactory.getInstance( 0xf8 );
private static BitField _lines = BitFieldFactory.getInstance(0xf8); private static BitField _type = BitFieldFactory.getInstance( 0x07 );
public DropCapSpecifier(byte[] buf, int offset) public DropCapSpecifier()
{ {
this(LittleEndian.getShort(buf, offset)); this._fdct = 0;
} }
public DropCapSpecifier(short info) public DropCapSpecifier( byte[] buf, int offset )
{ {
_info = info; this( LittleEndian.getShort( buf, offset ) );
} }
public short toShort() public DropCapSpecifier( short fdct )
{ {
return _info; 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() + ")";
}
} }