]> source.dussan.org Git - poi.git/commitdiff
improve DropCapSpecifier, add field getters/setters, toString(), isEmpty(), hashCode...
authorSergey Vladimirov <sergey@apache.org>
Sat, 9 Jul 2011 11:34:16 +0000 (11:34 +0000)
committerSergey Vladimirov <sergey@apache.org>
Sat, 9 Jul 2011 11:34:16 +0000 (11:34 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1144649 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java

index b2da9f5eac7f54d1ced834cf8079d3fa82eda560..5f008acdedf8029feb8032675487a2232b9067d2 100644 (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);
-
-  public DropCapSpecifier(byte[] buf, int offset)
-  {
-    this(LittleEndian.getShort(buf, offset));
-  }
-
-  public DropCapSpecifier(short info)
-  {
-    _info = info;
-  }
-
-  public short toShort()
-  {
-    return _info;
-  }
+    private short _fdct;
+        private static BitField _lines = BitFieldFactory.getInstance( 0xf8 );
+        private static BitField _type = BitFieldFactory.getInstance( 0x07 );
+
+    public DropCapSpecifier()
+    {
+        this._fdct = 0;
+    }
+
+    public DropCapSpecifier( byte[] buf, int offset )
+    {
+        this( LittleEndian.getShort( buf, offset ) );
+    }
+
+    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() + ")";
+    }
 }