]> source.dussan.org Git - poi.git/commitdiff
add Colorref structure and use it to store color information in CHP(X)
authorSergey Vladimirov <sergey@apache.org>
Mon, 25 Jul 2011 09:39:07 +0000 (09:39 +0000)
committerSergey Vladimirov <sergey@apache.org>
Mon, 25 Jul 2011 09:39:07 +0000 (09:39 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1150606 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hwpf/model/Colorref.java [new file with mode: 0644]
src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java
src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmCompressor.java
src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterProperties.java
src/types/definitions/chp_type.xml

diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/Colorref.java b/src/scratchpad/src/org/apache/poi/hwpf/model/Colorref.java
new file mode 100644 (file)
index 0000000..f4281d9
--- /dev/null
@@ -0,0 +1,108 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+package org.apache.poi.hwpf.model;
+
+import org.apache.poi.util.Internal;
+import org.apache.poi.util.LittleEndian;
+
+/**
+ * 24-bit color structure
+ * 
+ * @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
+ */
+@Internal
+public class Colorref implements Cloneable
+{
+    private int value;
+
+    public Colorref()
+    {
+        this.value = -1;
+    }
+
+    public Colorref( byte[] data, int offset )
+    {
+        this.value = LittleEndian.getInt( data, offset );
+    }
+
+    public Colorref( int value )
+    {
+        this.value = value;
+    }
+
+    @Override
+    public Colorref clone() throws CloneNotSupportedException
+    {
+        return new Colorref( this.value );
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+            return true;
+        if ( obj == null )
+            return false;
+        if ( getClass() != obj.getClass() )
+            return false;
+        Colorref other = (Colorref) obj;
+        if ( value != other.value )
+            return false;
+        return true;
+    }
+
+    public int getValue()
+    {
+        return value;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return value;
+    }
+
+    public boolean isEmpty()
+    {
+        return value == -1;
+    }
+
+    public void setValue( int value )
+    {
+        this.value = value;
+    }
+
+    public byte[] toByteArray()
+    {
+        if ( isEmpty() )
+            throw new IllegalStateException(
+                    "Structure state (EMPTY) is not good for serialization" );
+
+        byte[] bs = new byte[4];
+        LittleEndian.putInt( bs, 0, this.value );
+        return bs;
+    }
+
+    @Override
+    public String toString()
+    {
+        if ( isEmpty() )
+            return "[COLORREF] EMPTY";
+
+        return "[COLORREF] 0x" + Integer.toHexString( value );
+    }
+}
index 1247c295222a4e8d62fc523c97bd534913cb7a9f..cb979f0a4858acbb05c1240994622a07f2c77b8a 100644 (file)
 
 package org.apache.poi.hwpf.model.types;
 
+import org.apache.poi.hwpf.model.Colorref;
 import org.apache.poi.hwpf.model.Hyphenation;
 import org.apache.poi.hwpf.usermodel.BorderCode;
 import org.apache.poi.hwpf.usermodel.DateAndTime;
 import org.apache.poi.hwpf.usermodel.ShadingDescriptor;
 import org.apache.poi.util.BitField;
+import org.apache.poi.util.Internal;
 
 /**
  * Character Properties.
@@ -30,175 +32,178 @@ import org.apache.poi.util.BitField;
 
  * @author S. Ryan Ackley
  */
+@Internal
 public abstract class CHPAbstractType
 {
 
     protected int field_1_grpfChp;
-        private static BitField  fBold = new BitField(0x00000001);
-        private static BitField  fItalic = new BitField(0x00000002);
-        private static BitField  fRMarkDel = new BitField(0x00000004);
-        private static BitField  fOutline = new BitField(0x00000008);
-        private static BitField  fFldVanish = new BitField(0x00000010);
-        private static BitField  fSmallCaps = new BitField(0x00000020);
-        private static BitField  fCaps = new BitField(0x00000040);
-        private static BitField  fVanish = new BitField(0x00000080);
-        private static BitField  fRMark = new BitField(0x00000100);
-        private static BitField  fSpec = new BitField(0x00000200);
-        private static BitField  fStrike = new BitField(0x00000400);
-        private static BitField  fObj = new BitField(0x00000800);
-        private static BitField  fShadow = new BitField(0x00001000);
-        private static BitField  fLowerCase = new BitField(0x00002000);
-        private static BitField  fData = new BitField(0x00004000);
-        private static BitField  fOle2 = new BitField(0x00008000);
-        private static BitField  fEmboss = new BitField(0x00010000);
-        private static BitField  fImprint = new BitField(0x00020000);
-        private static BitField  fDStrike = new BitField(0x00040000);
-        private static BitField  fUsePgsuSettings = new BitField(0x00080000);
-        private static BitField  fBoldBi = new BitField(0x00100000);
-        private static BitField  fComplexScripts = new BitField(0x00200000);
-        private static BitField  fItalicBi = new BitField(0x00400000);
-        private static BitField  fBiDi = new BitField(0x00800000);
+    /**/private static BitField fBold = new BitField(0x00000001);
+    /**/private static BitField fItalic = new BitField(0x00000002);
+    /**/private static BitField fRMarkDel = new BitField(0x00000004);
+    /**/private static BitField fOutline = new BitField(0x00000008);
+    /**/private static BitField fFldVanish = new BitField(0x00000010);
+    /**/private static BitField fSmallCaps = new BitField(0x00000020);
+    /**/private static BitField fCaps = new BitField(0x00000040);
+    /**/private static BitField fVanish = new BitField(0x00000080);
+    /**/private static BitField fRMark = new BitField(0x00000100);
+    /**/private static BitField fSpec = new BitField(0x00000200);
+    /**/private static BitField fStrike = new BitField(0x00000400);
+    /**/private static BitField fObj = new BitField(0x00000800);
+    /**/private static BitField fShadow = new BitField(0x00001000);
+    /**/private static BitField fLowerCase = new BitField(0x00002000);
+    /**/private static BitField fData = new BitField(0x00004000);
+    /**/private static BitField fOle2 = new BitField(0x00008000);
+    /**/private static BitField fEmboss = new BitField(0x00010000);
+    /**/private static BitField fImprint = new BitField(0x00020000);
+    /**/private static BitField fDStrike = new BitField(0x00040000);
+    /**/private static BitField fUsePgsuSettings = new BitField(0x00080000);
+    /**/private static BitField fBoldBi = new BitField(0x00100000);
+    /**/private static BitField fComplexScripts = new BitField(0x00200000);
+    /**/private static BitField fItalicBi = new BitField(0x00400000);
+    /**/private static BitField fBiDi = new BitField(0x00800000);
     protected int field_2_hps;
     protected int field_3_ftcAscii;
     protected int field_4_ftcFE;
     protected int field_5_ftcOther;
     protected int field_6_ftcBi;
     protected int field_7_dxaSpace;
-    protected byte field_8_ico;
-    protected int field_9_pctCharWidth;
-    protected int field_10_lidDefault;
-    protected int field_11_lidFE;
-    protected byte field_12_kcd;
-    /**/public final static byte KCD_NON = 0;
-    /**/public final static byte KCD_DOT = 1;
-    /**/public final static byte KCD_COMMA = 2;
-    /**/public final static byte KCD_CIRCLE = 3;
-    /**/public final static byte KCD_UNDER_DOT = 4;
-    protected boolean field_13_fUndetermine;
-    protected byte field_14_iss;
-    /**/public final static byte ISS_NONE = 0;
-    /**/public final static byte ISS_SUPERSCRIPTED = 1;
-    /**/public final static byte ISS_SUBSCRIPTED = 2;
-    protected boolean field_15_fSpecSymbol;
-    protected byte field_16_idct;
-    protected byte field_17_idctHint;
-    protected byte field_18_kul;
-    /**/public final static byte KUL_NONE = 0;
-    /**/public final static byte KUL_SINGLE = 1;
-    /**/public final static byte KUL_BY_WORD = 2;
-    /**/public final static byte KUL_DOUBLE = 3;
-    /**/public final static byte KUL_DOTTED = 4;
-    /**/public final static byte KUL_HIDDEN = 5;
-    /**/public final static byte KUL_THICK = 6;
-    /**/public final static byte KUL_DASH = 7;
-    /**/public final static byte KUL_DOT = 8;
-    /**/public final static byte KUL_DOT_DASH = 9;
-    /**/public final static byte KUL_DOT_DOT_DASH = 10;
-    /**/public final static byte KUL_WAVE = 11;
-    /**/public final static byte KUL_DOTTED_HEAVY = 20;
-    /**/public final static byte KUL_DASHED_HEAVY = 23;
-    /**/public final static byte KUL_DOT_DASH_HEAVY = 25;
-    /**/public final static byte KUL_DOT_DOT_DASH_HEAVY = 26;
-    /**/public final static byte KUL_WAVE_HEAVY = 27;
-    /**/public final static byte KUL_DASH_LONG = 39;
-    /**/public final static byte KUL_WAVE_DOUBLE = 43;
-    /**/public final static byte KUL_DASH_LONG_HEAVY = 55;
-    protected Hyphenation field_19_hresi;
-    protected int field_20_hpsKern;
-    protected short field_21_hpsPos;
-    protected ShadingDescriptor field_22_shd;
-    protected BorderCode field_23_brc;
-    protected int field_24_ibstRMark;
-    protected byte field_25_sfxtText;
-    /**/public final static byte SFXTTEXT_NO = 0;
-    /**/public final static byte SFXTTEXT_LAS_VEGAS_LIGHTS = 1;
-    /**/public final static byte SFXTTEXT_BACKGROUND_BLINK = 2;
-    /**/public final static byte SFXTTEXT_SPARKLE_TEXT = 3;
-    /**/public final static byte SFXTTEXT_MARCHING_ANTS = 4;
-    /**/public final static byte SFXTTEXT_MARCHING_RED_ANTS = 5;
-    /**/public final static byte SFXTTEXT_SHIMMER = 6;
-    protected boolean field_26_fDblBdr;
-    protected boolean field_27_fBorderWS;
-    protected short field_28_ufel;
-        private static BitField  itypFELayout = new BitField(0x00ff);
-        private static BitField  fTNY = new BitField(0x0100);
-        private static BitField  fWarichu = new BitField(0x0200);
-        private static BitField  fKumimoji = new BitField(0x0400);
-        private static BitField  fRuby = new BitField(0x0800);
-        private static BitField  fLSFitText = new BitField(0x1000);
-        private static BitField  spare = new BitField(0xe000);
-    protected byte field_29_copt;
-        private static BitField  iWarichuBracket = new BitField(0x07);
-        private static BitField  fWarichuNoOpenBracket = new BitField(0x08);
-        private static BitField  fTNYCompress = new BitField(0x10);
-        private static BitField  fTNYFetchTxm = new BitField(0x20);
-        private static BitField  fCellFitText = new BitField(0x40);
-        private static BitField  unused = new BitField(0x80);
-    protected int field_30_hpsAsci;
-    protected int field_31_hpsFE;
-    protected int field_32_hpsBi;
-    protected int field_33_ftcSym;
-    protected int field_34_xchSym;
-    protected int field_35_fcPic;
-    protected int field_36_fcObj;
-    protected int field_37_lTagObj;
-    protected int field_38_fcData;
-    protected Hyphenation field_39_hresiOld;
-    protected int field_40_ibstRMarkDel;
-    protected DateAndTime field_41_dttmRMark;
-    protected DateAndTime field_42_dttmRMarkDel;
-    protected int field_43_istd;
-    protected int field_44_idslRMReason;
-    protected int field_45_idslReasonDel;
-    protected int field_46_cpg;
-    protected short field_47_Highlight;
-        private static BitField  icoHighlight = new BitField(0x001f);
-        private static BitField  fHighlight = new BitField(0x0020);
-    protected short field_48_CharsetFlags;
-        private static BitField  fChsDiff = new BitField(0x0001);
-        private static BitField  fMacChs = new BitField(0x0020);
-    protected short field_49_chse;
-    protected boolean field_50_fPropRMark;
-    protected int field_51_ibstPropRMark;
-    protected DateAndTime field_52_dttmPropRMark;
-    protected boolean field_53_fConflictOrig;
-    protected boolean field_54_fConflictOtherDel;
-    protected int field_55_wConflict;
-    protected int field_56_IbstConflict;
-    protected DateAndTime field_57_dttmConflict;
-    protected boolean field_58_fDispFldRMark;
-    protected int field_59_ibstDispFldRMark;
-    protected DateAndTime field_60_dttmDispFldRMark;
-    protected byte[] field_61_xstDispFldRMark;
-    protected int field_62_fcObjp;
-    protected byte field_63_lbrCRJ;
-    /**/public final static byte LBRCRJ_NONE = 0;
-    /**/public final static byte LBRCRJ_LEFT = 1;
-    /**/public final static byte LBRCRJ_RIGHT = 2;
-    /**/public final static byte LBRCRJ_BOTH = 3;
-    protected boolean field_64_fSpecVanish;
-    protected boolean field_65_fHasOldProps;
-    protected boolean field_66_fSdtVanish;
-    protected int field_67_wCharScale;
+    protected Colorref field_8_cv;
+    protected byte field_9_ico;
+    protected int field_10_pctCharWidth;
+    protected int field_11_lidDefault;
+    protected int field_12_lidFE;
+    protected byte field_13_kcd;
+    /**/protected final static byte KCD_NON = 0;
+    /**/protected final static byte KCD_DOT = 1;
+    /**/protected final static byte KCD_COMMA = 2;
+    /**/protected final static byte KCD_CIRCLE = 3;
+    /**/protected final static byte KCD_UNDER_DOT = 4;
+    protected boolean field_14_fUndetermine;
+    protected byte field_15_iss;
+    /**/protected final static byte ISS_NONE = 0;
+    /**/protected final static byte ISS_SUPERSCRIPTED = 1;
+    /**/protected final static byte ISS_SUBSCRIPTED = 2;
+    protected boolean field_16_fSpecSymbol;
+    protected byte field_17_idct;
+    protected byte field_18_idctHint;
+    protected byte field_19_kul;
+    /**/protected final static byte KUL_NONE = 0;
+    /**/protected final static byte KUL_SINGLE = 1;
+    /**/protected final static byte KUL_BY_WORD = 2;
+    /**/protected final static byte KUL_DOUBLE = 3;
+    /**/protected final static byte KUL_DOTTED = 4;
+    /**/protected final static byte KUL_HIDDEN = 5;
+    /**/protected final static byte KUL_THICK = 6;
+    /**/protected final static byte KUL_DASH = 7;
+    /**/protected final static byte KUL_DOT = 8;
+    /**/protected final static byte KUL_DOT_DASH = 9;
+    /**/protected final static byte KUL_DOT_DOT_DASH = 10;
+    /**/protected final static byte KUL_WAVE = 11;
+    /**/protected final static byte KUL_DOTTED_HEAVY = 20;
+    /**/protected final static byte KUL_DASHED_HEAVY = 23;
+    /**/protected final static byte KUL_DOT_DASH_HEAVY = 25;
+    /**/protected final static byte KUL_DOT_DOT_DASH_HEAVY = 26;
+    /**/protected final static byte KUL_WAVE_HEAVY = 27;
+    /**/protected final static byte KUL_DASH_LONG = 39;
+    /**/protected final static byte KUL_WAVE_DOUBLE = 43;
+    /**/protected final static byte KUL_DASH_LONG_HEAVY = 55;
+    protected Hyphenation field_20_hresi;
+    protected int field_21_hpsKern;
+    protected short field_22_hpsPos;
+    protected ShadingDescriptor field_23_shd;
+    protected BorderCode field_24_brc;
+    protected int field_25_ibstRMark;
+    protected byte field_26_sfxtText;
+    /**/protected final static byte SFXTTEXT_NO = 0;
+    /**/protected final static byte SFXTTEXT_LAS_VEGAS_LIGHTS = 1;
+    /**/protected final static byte SFXTTEXT_BACKGROUND_BLINK = 2;
+    /**/protected final static byte SFXTTEXT_SPARKLE_TEXT = 3;
+    /**/protected final static byte SFXTTEXT_MARCHING_ANTS = 4;
+    /**/protected final static byte SFXTTEXT_MARCHING_RED_ANTS = 5;
+    /**/protected final static byte SFXTTEXT_SHIMMER = 6;
+    protected boolean field_27_fDblBdr;
+    protected boolean field_28_fBorderWS;
+    protected short field_29_ufel;
+    /**/private static BitField itypFELayout = new BitField(0x00ff);
+    /**/private static BitField fTNY = new BitField(0x0100);
+    /**/private static BitField fWarichu = new BitField(0x0200);
+    /**/private static BitField fKumimoji = new BitField(0x0400);
+    /**/private static BitField fRuby = new BitField(0x0800);
+    /**/private static BitField fLSFitText = new BitField(0x1000);
+    /**/private static BitField spare = new BitField(0xe000);
+    protected byte field_30_copt;
+    /**/private static BitField iWarichuBracket = new BitField(0x07);
+    /**/private static BitField fWarichuNoOpenBracket = new BitField(0x08);
+    /**/private static BitField fTNYCompress = new BitField(0x10);
+    /**/private static BitField fTNYFetchTxm = new BitField(0x20);
+    /**/private static BitField fCellFitText = new BitField(0x40);
+    /**/private static BitField unused = new BitField(0x80);
+    protected int field_31_hpsAsci;
+    protected int field_32_hpsFE;
+    protected int field_33_hpsBi;
+    protected int field_34_ftcSym;
+    protected int field_35_xchSym;
+    protected int field_36_fcPic;
+    protected int field_37_fcObj;
+    protected int field_38_lTagObj;
+    protected int field_39_fcData;
+    protected Hyphenation field_40_hresiOld;
+    protected int field_41_ibstRMarkDel;
+    protected DateAndTime field_42_dttmRMark;
+    protected DateAndTime field_43_dttmRMarkDel;
+    protected int field_44_istd;
+    protected int field_45_idslRMReason;
+    protected int field_46_idslReasonDel;
+    protected int field_47_cpg;
+    protected short field_48_Highlight;
+    /**/private static BitField icoHighlight = new BitField(0x001f);
+    /**/private static BitField fHighlight = new BitField(0x0020);
+    protected short field_49_CharsetFlags;
+    /**/private static BitField fChsDiff = new BitField(0x0001);
+    /**/private static BitField fMacChs = new BitField(0x0020);
+    protected short field_50_chse;
+    protected boolean field_51_fPropRMark;
+    protected int field_52_ibstPropRMark;
+    protected DateAndTime field_53_dttmPropRMark;
+    protected boolean field_54_fConflictOrig;
+    protected boolean field_55_fConflictOtherDel;
+    protected int field_56_wConflict;
+    protected int field_57_IbstConflict;
+    protected DateAndTime field_58_dttmConflict;
+    protected boolean field_59_fDispFldRMark;
+    protected int field_60_ibstDispFldRMark;
+    protected DateAndTime field_61_dttmDispFldRMark;
+    protected byte[] field_62_xstDispFldRMark;
+    protected int field_63_fcObjp;
+    protected byte field_64_lbrCRJ;
+    /**/protected final static byte LBRCRJ_NONE = 0;
+    /**/protected final static byte LBRCRJ_LEFT = 1;
+    /**/protected final static byte LBRCRJ_RIGHT = 2;
+    /**/protected final static byte LBRCRJ_BOTH = 3;
+    protected boolean field_65_fSpecVanish;
+    protected boolean field_66_fHasOldProps;
+    protected boolean field_67_fSdtVanish;
+    protected int field_68_wCharScale;
 
     protected CHPAbstractType()
     {
         this.field_2_hps = 20;
-        this.field_10_lidDefault = 0x0400;
-        this.field_11_lidFE = 0x0400;
-        this.field_19_hresi = new Hyphenation();
-        this.field_22_shd = new ShadingDescriptor();
-        this.field_23_brc = new BorderCode();
-        this.field_35_fcPic = -1;
-        this.field_39_hresiOld = new Hyphenation();
-        this.field_41_dttmRMark = new DateAndTime();
-        this.field_42_dttmRMarkDel = new DateAndTime();
-        this.field_43_istd = 10;
-        this.field_52_dttmPropRMark = new DateAndTime();
-        this.field_57_dttmConflict = new DateAndTime();
-        this.field_60_dttmDispFldRMark = new DateAndTime();
-        this.field_61_xstDispFldRMark = new byte[0];
-        this.field_67_wCharScale = 100;
+        this.field_8_cv = new Colorref();
+        this.field_11_lidDefault = 0x0400;
+        this.field_12_lidFE = 0x0400;
+        this.field_20_hresi = new Hyphenation();
+        this.field_23_shd = new ShadingDescriptor();
+        this.field_24_brc = new BorderCode();
+        this.field_36_fcPic = -1;
+        this.field_40_hresiOld = new Hyphenation();
+        this.field_42_dttmRMark = new DateAndTime();
+        this.field_43_dttmRMarkDel = new DateAndTime();
+        this.field_44_istd = 10;
+        this.field_53_dttmPropRMark = new DateAndTime();
+        this.field_58_dttmConflict = new DateAndTime();
+        this.field_61_dttmDispFldRMark = new DateAndTime();
+        this.field_62_xstDispFldRMark = new byte[0];
+        this.field_68_wCharScale = 100;
     }
 
 
@@ -244,6 +249,8 @@ public abstract class CHPAbstractType
         builder.append(" (").append(getFtcBi()).append(" )\n");
         builder.append("    .dxaSpace             = ");
         builder.append(" (").append(getDxaSpace()).append(" )\n");
+        builder.append("    .cv                   = ");
+        builder.append(" (").append(getCv()).append(" )\n");
         builder.append("    .ico                  = ");
         builder.append(" (").append(getIco()).append(" )\n");
         builder.append("    .pctCharWidth         = ");
@@ -389,6 +396,7 @@ public abstract class CHPAbstractType
     /**
      * Collection of the 32 flags.
      */
+    @Internal
     public int getGrpfChp()
     {
         return field_1_grpfChp;
@@ -397,6 +405,7 @@ public abstract class CHPAbstractType
     /**
      * Collection of the 32 flags.
      */
+    @Internal
     public void setGrpfChp( int field_1_grpfChp )
     {
         this.field_1_grpfChp = field_1_grpfChp;
@@ -405,6 +414,7 @@ public abstract class CHPAbstractType
     /**
      * Font size in half points.
      */
+    @Internal
     public int getHps()
     {
         return field_2_hps;
@@ -413,6 +423,7 @@ public abstract class CHPAbstractType
     /**
      * Font size in half points.
      */
+    @Internal
     public void setHps( int field_2_hps )
     {
         this.field_2_hps = field_2_hps;
@@ -421,6 +432,7 @@ public abstract class CHPAbstractType
     /**
      * Font for ASCII text.
      */
+    @Internal
     public int getFtcAscii()
     {
         return field_3_ftcAscii;
@@ -429,6 +441,7 @@ public abstract class CHPAbstractType
     /**
      * Font for ASCII text.
      */
+    @Internal
     public void setFtcAscii( int field_3_ftcAscii )
     {
         this.field_3_ftcAscii = field_3_ftcAscii;
@@ -437,6 +450,7 @@ public abstract class CHPAbstractType
     /**
      * Font for East Asian text.
      */
+    @Internal
     public int getFtcFE()
     {
         return field_4_ftcFE;
@@ -445,6 +459,7 @@ public abstract class CHPAbstractType
     /**
      * Font for East Asian text.
      */
+    @Internal
     public void setFtcFE( int field_4_ftcFE )
     {
         this.field_4_ftcFE = field_4_ftcFE;
@@ -453,6 +468,7 @@ public abstract class CHPAbstractType
     /**
      * Font for non-East Asian text.
      */
+    @Internal
     public int getFtcOther()
     {
         return field_5_ftcOther;
@@ -461,6 +477,7 @@ public abstract class CHPAbstractType
     /**
      * Font for non-East Asian text.
      */
+    @Internal
     public void setFtcOther( int field_5_ftcOther )
     {
         this.field_5_ftcOther = field_5_ftcOther;
@@ -469,6 +486,7 @@ public abstract class CHPAbstractType
     /**
      * Font for Complex Scripts text.
      */
+    @Internal
     public int getFtcBi()
     {
         return field_6_ftcBi;
@@ -477,6 +495,7 @@ public abstract class CHPAbstractType
     /**
      * Font for Complex Scripts text.
      */
+    @Internal
     public void setFtcBi( int field_6_ftcBi )
     {
         this.field_6_ftcBi = field_6_ftcBi;
@@ -485,6 +504,7 @@ public abstract class CHPAbstractType
     /**
      * Space following each character in the run expressed in twip units..
      */
+    @Internal
     public int getDxaSpace()
     {
         return field_7_dxaSpace;
@@ -493,73 +513,100 @@ public abstract class CHPAbstractType
     /**
      * Space following each character in the run expressed in twip units..
      */
+    @Internal
     public void setDxaSpace( int field_7_dxaSpace )
     {
         this.field_7_dxaSpace = field_7_dxaSpace;
     }
 
+    /**
+     * 24-bit color.
+     */
+    @Internal
+    public Colorref getCv()
+    {
+        return field_8_cv;
+    }
+
+    /**
+     * 24-bit color.
+     */
+    @Internal
+    public void setCv( Colorref field_8_cv )
+    {
+        this.field_8_cv = field_8_cv;
+    }
+
     /**
      * Color of text for Word 97.
      */
+    @Internal
     public byte getIco()
     {
-        return field_8_ico;
+        return field_9_ico;
     }
 
     /**
      * Color of text for Word 97.
      */
-    public void setIco( byte field_8_ico )
+    @Internal
+    public void setIco( byte field_9_ico )
     {
-        this.field_8_ico = field_8_ico;
+        this.field_9_ico = field_9_ico;
     }
 
     /**
      * Character scale.
      */
+    @Internal
     public int getPctCharWidth()
     {
-        return field_9_pctCharWidth;
+        return field_10_pctCharWidth;
     }
 
     /**
      * Character scale.
      */
-    public void setPctCharWidth( int field_9_pctCharWidth )
+    @Internal
+    public void setPctCharWidth( int field_10_pctCharWidth )
     {
-        this.field_9_pctCharWidth = field_9_pctCharWidth;
+        this.field_10_pctCharWidth = field_10_pctCharWidth;
     }
 
     /**
      * Get the lidDefault field for the CHP record.
      */
+    @Internal
     public int getLidDefault()
     {
-        return field_10_lidDefault;
+        return field_11_lidDefault;
     }
 
     /**
      * Set the lidDefault field for the CHP record.
      */
-    public void setLidDefault( int field_10_lidDefault )
+    @Internal
+    public void setLidDefault( int field_11_lidDefault )
     {
-        this.field_10_lidDefault = field_10_lidDefault;
+        this.field_11_lidDefault = field_11_lidDefault;
     }
 
     /**
      * Get the lidFE field for the CHP record.
      */
+    @Internal
     public int getLidFE()
     {
-        return field_11_lidFE;
+        return field_12_lidFE;
     }
 
     /**
      * Set the lidFE field for the CHP record.
      */
-    public void setLidFE( int field_11_lidFE )
+    @Internal
+    public void setLidFE( int field_12_lidFE )
     {
-        this.field_11_lidFE = field_11_lidFE;
+        this.field_12_lidFE = field_12_lidFE;
     }
 
     /**
@@ -572,15 +619,16 @@ public abstract class CHPAbstractType
      * <li>{@link #KCD_CIRCLE}
      * <li>{@link #KCD_UNDER_DOT}
      */
+    @Internal
     public byte getKcd()
     {
-        return field_12_kcd;
+        return field_13_kcd;
     }
 
     /**
      * Emphasis mark.
      *
-     * @param field_12_kcd
+     * @param field_13_kcd
      *        One of 
      * <li>{@link #KCD_NON}
      * <li>{@link #KCD_DOT}
@@ -588,25 +636,28 @@ public abstract class CHPAbstractType
      * <li>{@link #KCD_CIRCLE}
      * <li>{@link #KCD_UNDER_DOT}
      */
-    public void setKcd( byte field_12_kcd )
+    @Internal
+    public void setKcd( byte field_13_kcd )
     {
-        this.field_12_kcd = field_12_kcd;
+        this.field_13_kcd = field_13_kcd;
     }
 
     /**
      * Character is undetermined.
      */
+    @Internal
     public boolean getFUndetermine()
     {
-        return field_13_fUndetermine;
+        return field_14_fUndetermine;
     }
 
     /**
      * Character is undetermined.
      */
-    public void setFUndetermine( boolean field_13_fUndetermine )
+    @Internal
+    public void setFUndetermine( boolean field_14_fUndetermine )
     {
-        this.field_13_fUndetermine = field_13_fUndetermine;
+        this.field_14_fUndetermine = field_14_fUndetermine;
     }
 
     /**
@@ -617,71 +668,79 @@ public abstract class CHPAbstractType
      * <li>{@link #ISS_SUPERSCRIPTED}
      * <li>{@link #ISS_SUBSCRIPTED}
      */
+    @Internal
     public byte getIss()
     {
-        return field_14_iss;
+        return field_15_iss;
     }
 
     /**
      * Superscript/subscript indices.
      *
-     * @param field_14_iss
+     * @param field_15_iss
      *        One of 
      * <li>{@link #ISS_NONE}
      * <li>{@link #ISS_SUPERSCRIPTED}
      * <li>{@link #ISS_SUBSCRIPTED}
      */
-    public void setIss( byte field_14_iss )
+    @Internal
+    public void setIss( byte field_15_iss )
     {
-        this.field_14_iss = field_14_iss;
+        this.field_15_iss = field_15_iss;
     }
 
     /**
      * Used by Word internally.
      */
+    @Internal
     public boolean getFSpecSymbol()
     {
-        return field_15_fSpecSymbol;
+        return field_16_fSpecSymbol;
     }
 
     /**
      * Used by Word internally.
      */
-    public void setFSpecSymbol( boolean field_15_fSpecSymbol )
+    @Internal
+    public void setFSpecSymbol( boolean field_16_fSpecSymbol )
     {
-        this.field_15_fSpecSymbol = field_15_fSpecSymbol;
+        this.field_16_fSpecSymbol = field_16_fSpecSymbol;
     }
 
     /**
      * Not stored in file.
      */
+    @Internal
     public byte getIdct()
     {
-        return field_16_idct;
+        return field_17_idct;
     }
 
     /**
      * Not stored in file.
      */
-    public void setIdct( byte field_16_idct )
+    @Internal
+    public void setIdct( byte field_17_idct )
     {
-        this.field_16_idct = field_16_idct;
+        this.field_17_idct = field_17_idct;
     }
 
     /**
      * Identifier of Character type.
      */
+    @Internal
     public byte getIdctHint()
     {
-        return field_17_idctHint;
+        return field_18_idctHint;
     }
 
     /**
      * Identifier of Character type.
      */
-    public void setIdctHint( byte field_17_idctHint )
+    @Internal
+    public void setIdctHint( byte field_18_idctHint )
     {
-        this.field_17_idctHint = field_17_idctHint;
+        this.field_18_idctHint = field_18_idctHint;
     }
 
     /**
@@ -709,15 +768,16 @@ public abstract class CHPAbstractType
      * <li>{@link #KUL_WAVE_DOUBLE}
      * <li>{@link #KUL_DASH_LONG_HEAVY}
      */
+    @Internal
     public byte getKul()
     {
-        return field_18_kul;
+        return field_19_kul;
     }
 
     /**
      * Underline code.
      *
-     * @param field_18_kul
+     * @param field_19_kul
      *        One of 
      * <li>{@link #KUL_NONE}
      * <li>{@link #KUL_SINGLE}
@@ -740,105 +800,118 @@ public abstract class CHPAbstractType
      * <li>{@link #KUL_WAVE_DOUBLE}
      * <li>{@link #KUL_DASH_LONG_HEAVY}
      */
-    public void setKul( byte field_18_kul )
+    @Internal
+    public void setKul( byte field_19_kul )
     {
-        this.field_18_kul = field_18_kul;
+        this.field_19_kul = field_19_kul;
     }
 
     /**
      * Get the hresi field for the CHP record.
      */
+    @Internal
     public Hyphenation getHresi()
     {
-        return field_19_hresi;
+        return field_20_hresi;
     }
 
     /**
      * Set the hresi field for the CHP record.
      */
-    public void setHresi( Hyphenation field_19_hresi )
+    @Internal
+    public void setHresi( Hyphenation field_20_hresi )
     {
-        this.field_19_hresi = field_19_hresi;
+        this.field_20_hresi = field_20_hresi;
     }
 
     /**
      * Kerning distance for characters in run recorded in half points.
      */
+    @Internal
     public int getHpsKern()
     {
-        return field_20_hpsKern;
+        return field_21_hpsKern;
     }
 
     /**
      * Kerning distance for characters in run recorded in half points.
      */
-    public void setHpsKern( int field_20_hpsKern )
+    @Internal
+    public void setHpsKern( int field_21_hpsKern )
     {
-        this.field_20_hpsKern = field_20_hpsKern;
+        this.field_21_hpsKern = field_21_hpsKern;
     }
 
     /**
      * Reserved (actually used as vertical offset(?) value).
      */
+    @Internal
     public short getHpsPos()
     {
-        return field_21_hpsPos;
+        return field_22_hpsPos;
     }
 
     /**
      * Reserved (actually used as vertical offset(?) value).
      */
-    public void setHpsPos( short field_21_hpsPos )
+    @Internal
+    public void setHpsPos( short field_22_hpsPos )
     {
-        this.field_21_hpsPos = field_21_hpsPos;
+        this.field_22_hpsPos = field_22_hpsPos;
     }
 
     /**
      * Shading.
      */
+    @Internal
     public ShadingDescriptor getShd()
     {
-        return field_22_shd;
+        return field_23_shd;
     }
 
     /**
      * Shading.
      */
-    public void setShd( ShadingDescriptor field_22_shd )
+    @Internal
+    public void setShd( ShadingDescriptor field_23_shd )
     {
-        this.field_22_shd = field_22_shd;
+        this.field_23_shd = field_23_shd;
     }
 
     /**
      * Border.
      */
+    @Internal
     public BorderCode getBrc()
     {
-        return field_23_brc;
+        return field_24_brc;
     }
 
     /**
      * Border.
      */
-    public void setBrc( BorderCode field_23_brc )
+    @Internal
+    public void setBrc( BorderCode field_24_brc )
     {
-        this.field_23_brc = field_23_brc;
+        this.field_24_brc = field_24_brc;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when text in run was newly typed when revision marking was enabled.
      */
+    @Internal
     public int getIbstRMark()
     {
-        return field_24_ibstRMark;
+        return field_25_ibstRMark;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when text in run was newly typed when revision marking was enabled.
      */
-    public void setIbstRMark( int field_24_ibstRMark )
+    @Internal
+    public void setIbstRMark( int field_25_ibstRMark )
     {
-        this.field_24_ibstRMark = field_24_ibstRMark;
+        this.field_25_ibstRMark = field_25_ibstRMark;
     }
 
     /**
@@ -853,15 +926,16 @@ public abstract class CHPAbstractType
      * <li>{@link #SFXTTEXT_MARCHING_RED_ANTS}
      * <li>{@link #SFXTTEXT_SHIMMER}
      */
+    @Internal
     public byte getSfxtText()
     {
-        return field_25_sfxtText;
+        return field_26_sfxtText;
     }
 
     /**
      * Text animation.
      *
-     * @param field_25_sfxtText
+     * @param field_26_sfxtText
      *        One of 
      * <li>{@link #SFXTTEXT_NO}
      * <li>{@link #SFXTTEXT_LAS_VEGAS_LIGHTS}
@@ -871,601 +945,676 @@ public abstract class CHPAbstractType
      * <li>{@link #SFXTTEXT_MARCHING_RED_ANTS}
      * <li>{@link #SFXTTEXT_SHIMMER}
      */
-    public void setSfxtText( byte field_25_sfxtText )
+    @Internal
+    public void setSfxtText( byte field_26_sfxtText )
     {
-        this.field_25_sfxtText = field_25_sfxtText;
+        this.field_26_sfxtText = field_26_sfxtText;
     }
 
     /**
      * Used internally by Word.
      */
+    @Internal
     public boolean getFDblBdr()
     {
-        return field_26_fDblBdr;
+        return field_27_fDblBdr;
     }
 
     /**
      * Used internally by Word.
      */
-    public void setFDblBdr( boolean field_26_fDblBdr )
+    @Internal
+    public void setFDblBdr( boolean field_27_fDblBdr )
     {
-        this.field_26_fDblBdr = field_26_fDblBdr;
+        this.field_27_fDblBdr = field_27_fDblBdr;
     }
 
     /**
      * Used internally by Word.
      */
+    @Internal
     public boolean getFBorderWS()
     {
-        return field_27_fBorderWS;
+        return field_28_fBorderWS;
     }
 
     /**
      * Used internally by Word.
      */
-    public void setFBorderWS( boolean field_27_fBorderWS )
+    @Internal
+    public void setFBorderWS( boolean field_28_fBorderWS )
     {
-        this.field_27_fBorderWS = field_27_fBorderWS;
+        this.field_28_fBorderWS = field_28_fBorderWS;
     }
 
     /**
      * Collection properties represented by itypFELayout and copt (East Asian layout properties).
      */
+    @Internal
     public short getUfel()
     {
-        return field_28_ufel;
+        return field_29_ufel;
     }
 
     /**
      * Collection properties represented by itypFELayout and copt (East Asian layout properties).
      */
-    public void setUfel( short field_28_ufel )
+    @Internal
+    public void setUfel( short field_29_ufel )
     {
-        this.field_28_ufel = field_28_ufel;
+        this.field_29_ufel = field_29_ufel;
     }
 
     /**
      * Collection of the 5 flags.
      */
+    @Internal
     public byte getCopt()
     {
-        return field_29_copt;
+        return field_30_copt;
     }
 
     /**
      * Collection of the 5 flags.
      */
-    public void setCopt( byte field_29_copt )
+    @Internal
+    public void setCopt( byte field_30_copt )
     {
-        this.field_29_copt = field_29_copt;
+        this.field_30_copt = field_30_copt;
     }
 
     /**
      * Font size for ASCII font.
      */
+    @Internal
     public int getHpsAsci()
     {
-        return field_30_hpsAsci;
+        return field_31_hpsAsci;
     }
 
     /**
      * Font size for ASCII font.
      */
-    public void setHpsAsci( int field_30_hpsAsci )
+    @Internal
+    public void setHpsAsci( int field_31_hpsAsci )
     {
-        this.field_30_hpsAsci = field_30_hpsAsci;
+        this.field_31_hpsAsci = field_31_hpsAsci;
     }
 
     /**
      * Font size for East Asian text.
      */
+    @Internal
     public int getHpsFE()
     {
-        return field_31_hpsFE;
+        return field_32_hpsFE;
     }
 
     /**
      * Font size for East Asian text.
      */
-    public void setHpsFE( int field_31_hpsFE )
+    @Internal
+    public void setHpsFE( int field_32_hpsFE )
     {
-        this.field_31_hpsFE = field_31_hpsFE;
+        this.field_32_hpsFE = field_32_hpsFE;
     }
 
     /**
      * Font size for Complex Scripts text.
      */
+    @Internal
     public int getHpsBi()
     {
-        return field_32_hpsBi;
+        return field_33_hpsBi;
     }
 
     /**
      * Font size for Complex Scripts text.
      */
-    public void setHpsBi( int field_32_hpsBi )
+    @Internal
+    public void setHpsBi( int field_33_hpsBi )
     {
-        this.field_32_hpsBi = field_32_hpsBi;
+        this.field_33_hpsBi = field_33_hpsBi;
     }
 
     /**
      * an index into the rgffn structure. When chp.fSpec is 1 and the character recorded for the run in the document stream is chSymbol (0x28), chp.ftcSym identifies the font code of the symbol font that will be used to display the symbol character recorded in chp.xchSym..
      */
+    @Internal
     public int getFtcSym()
     {
-        return field_33_ftcSym;
+        return field_34_ftcSym;
     }
 
     /**
      * an index into the rgffn structure. When chp.fSpec is 1 and the character recorded for the run in the document stream is chSymbol (0x28), chp.ftcSym identifies the font code of the symbol font that will be used to display the symbol character recorded in chp.xchSym..
      */
-    public void setFtcSym( int field_33_ftcSym )
+    @Internal
+    public void setFtcSym( int field_34_ftcSym )
     {
-        this.field_33_ftcSym = field_33_ftcSym;
+        this.field_34_ftcSym = field_34_ftcSym;
     }
 
     /**
      * When chp.fSpec==1 and the character recorded for the run in the document stream is chSymbol (0x28), the character stored chp.xchSym will be displayed using the font specified in chp.ftcSym..
      */
+    @Internal
     public int getXchSym()
     {
-        return field_34_xchSym;
+        return field_35_xchSym;
     }
 
     /**
      * When chp.fSpec==1 and the character recorded for the run in the document stream is chSymbol (0x28), the character stored chp.xchSym will be displayed using the font specified in chp.ftcSym..
      */
-    public void setXchSym( int field_34_xchSym )
+    @Internal
+    public void setXchSym( int field_35_xchSym )
     {
-        this.field_34_xchSym = field_34_xchSym;
+        this.field_35_xchSym = field_35_xchSym;
     }
 
     /**
      * Offset in data stream pointing to beginning of a picture when character is a picture character (character is 0x01 and chp.fSpec is 1)..
      */
+    @Internal
     public int getFcPic()
     {
-        return field_35_fcPic;
+        return field_36_fcPic;
     }
 
     /**
      * Offset in data stream pointing to beginning of a picture when character is a picture character (character is 0x01 and chp.fSpec is 1)..
      */
-    public void setFcPic( int field_35_fcPic )
+    @Internal
+    public void setFcPic( int field_36_fcPic )
     {
-        this.field_35_fcPic = field_35_fcPic;
+        this.field_36_fcPic = field_36_fcPic;
     }
 
     /**
      * Offset in data stream pointing to beginning of a picture when character is an OLE1 object character (character is 0x20 and chp.fSpec is 1, chp.fOle2 is 0)..
      */
+    @Internal
     public int getFcObj()
     {
-        return field_36_fcObj;
+        return field_37_fcObj;
     }
 
     /**
      * Offset in data stream pointing to beginning of a picture when character is an OLE1 object character (character is 0x20 and chp.fSpec is 1, chp.fOle2 is 0)..
      */
-    public void setFcObj( int field_36_fcObj )
+    @Internal
+    public void setFcObj( int field_37_fcObj )
     {
-        this.field_36_fcObj = field_36_fcObj;
+        this.field_37_fcObj = field_37_fcObj;
     }
 
     /**
      * An object ID for an OLE object, only set if chp.fSpec and chp.fOle2 are both true, and chp.fObj..
      */
+    @Internal
     public int getLTagObj()
     {
-        return field_37_lTagObj;
+        return field_38_lTagObj;
     }
 
     /**
      * An object ID for an OLE object, only set if chp.fSpec and chp.fOle2 are both true, and chp.fObj..
      */
-    public void setLTagObj( int field_37_lTagObj )
+    @Internal
+    public void setLTagObj( int field_38_lTagObj )
     {
-        this.field_37_lTagObj = field_37_lTagObj;
+        this.field_38_lTagObj = field_38_lTagObj;
     }
 
     /**
      * Points to location of picture data, only if chp.fSpec is true..
      */
+    @Internal
     public int getFcData()
     {
-        return field_38_fcData;
+        return field_39_fcData;
     }
 
     /**
      * Points to location of picture data, only if chp.fSpec is true..
      */
-    public void setFcData( int field_38_fcData )
+    @Internal
+    public void setFcData( int field_39_fcData )
     {
-        this.field_38_fcData = field_38_fcData;
+        this.field_39_fcData = field_39_fcData;
     }
 
     /**
      * Get the hresiOld field for the CHP record.
      */
+    @Internal
     public Hyphenation getHresiOld()
     {
-        return field_39_hresiOld;
+        return field_40_hresiOld;
     }
 
     /**
      * Set the hresiOld field for the CHP record.
      */
-    public void setHresiOld( Hyphenation field_39_hresiOld )
+    @Internal
+    public void setHresiOld( Hyphenation field_40_hresiOld )
     {
-        this.field_39_hresiOld = field_39_hresiOld;
+        this.field_40_hresiOld = field_40_hresiOld;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when text in run was deleted when revision marking was enabled..
      */
+    @Internal
     public int getIbstRMarkDel()
     {
-        return field_40_ibstRMarkDel;
+        return field_41_ibstRMarkDel;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when text in run was deleted when revision marking was enabled..
      */
-    public void setIbstRMarkDel( int field_40_ibstRMarkDel )
+    @Internal
+    public void setIbstRMarkDel( int field_41_ibstRMarkDel )
     {
-        this.field_40_ibstRMarkDel = field_40_ibstRMarkDel;
+        this.field_41_ibstRMarkDel = field_41_ibstRMarkDel;
     }
 
     /**
      * Date/time at which this run of text was entered/modified by the author (Only recorded when revision marking is on.).
      */
+    @Internal
     public DateAndTime getDttmRMark()
     {
-        return field_41_dttmRMark;
+        return field_42_dttmRMark;
     }
 
     /**
      * Date/time at which this run of text was entered/modified by the author (Only recorded when revision marking is on.).
      */
-    public void setDttmRMark( DateAndTime field_41_dttmRMark )
+    @Internal
+    public void setDttmRMark( DateAndTime field_42_dttmRMark )
     {
-        this.field_41_dttmRMark = field_41_dttmRMark;
+        this.field_42_dttmRMark = field_42_dttmRMark;
     }
 
     /**
      * Date/time at which this run of text was deleted by the author (Only recorded when revision marking is on.).
      */
+    @Internal
     public DateAndTime getDttmRMarkDel()
     {
-        return field_42_dttmRMarkDel;
+        return field_43_dttmRMarkDel;
     }
 
     /**
      * Date/time at which this run of text was deleted by the author (Only recorded when revision marking is on.).
      */
-    public void setDttmRMarkDel( DateAndTime field_42_dttmRMarkDel )
+    @Internal
+    public void setDttmRMarkDel( DateAndTime field_43_dttmRMarkDel )
     {
-        this.field_42_dttmRMarkDel = field_42_dttmRMarkDel;
+        this.field_43_dttmRMarkDel = field_43_dttmRMarkDel;
     }
 
     /**
      * Index to character style descriptor in the stylesheet that tags this run of text. When istd is istdNormalChar (10 decimal), characters in run are not affected by a character style. If chp.istd contains any other value, chpx of the specified character style are applied to CHP for this run before any other exceptional properties are applied..
      */
+    @Internal
     public int getIstd()
     {
-        return field_43_istd;
+        return field_44_istd;
     }
 
     /**
      * Index to character style descriptor in the stylesheet that tags this run of text. When istd is istdNormalChar (10 decimal), characters in run are not affected by a character style. If chp.istd contains any other value, chpx of the specified character style are applied to CHP for this run before any other exceptional properties are applied..
      */
-    public void setIstd( int field_43_istd )
+    @Internal
+    public void setIstd( int field_44_istd )
     {
-        this.field_43_istd = field_43_istd;
+        this.field_44_istd = field_44_istd;
     }
 
     /**
      * An index to strings displayed as reasons for actions taken by Word's AutoFormat code.
      */
+    @Internal
     public int getIdslRMReason()
     {
-        return field_44_idslRMReason;
+        return field_45_idslRMReason;
     }
 
     /**
      * An index to strings displayed as reasons for actions taken by Word's AutoFormat code.
      */
-    public void setIdslRMReason( int field_44_idslRMReason )
+    @Internal
+    public void setIdslRMReason( int field_45_idslRMReason )
     {
-        this.field_44_idslRMReason = field_44_idslRMReason;
+        this.field_45_idslRMReason = field_45_idslRMReason;
     }
 
     /**
      * An index to strings displayed as reasons for actions taken by Word's AutoFormat code.
      */
+    @Internal
     public int getIdslReasonDel()
     {
-        return field_45_idslReasonDel;
+        return field_46_idslReasonDel;
     }
 
     /**
      * An index to strings displayed as reasons for actions taken by Word's AutoFormat code.
      */
-    public void setIdslReasonDel( int field_45_idslReasonDel )
+    @Internal
+    public void setIdslReasonDel( int field_46_idslReasonDel )
     {
-        this.field_45_idslReasonDel = field_45_idslReasonDel;
+        this.field_46_idslReasonDel = field_46_idslReasonDel;
     }
 
     /**
      * Code page of run in pre-Unicode files.
      */
+    @Internal
     public int getCpg()
     {
-        return field_46_cpg;
+        return field_47_cpg;
     }
 
     /**
      * Code page of run in pre-Unicode files.
      */
-    public void setCpg( int field_46_cpg )
+    @Internal
+    public void setCpg( int field_47_cpg )
     {
-        this.field_46_cpg = field_46_cpg;
+        this.field_47_cpg = field_47_cpg;
     }
 
     /**
      * Get the Highlight field for the CHP record.
      */
+    @Internal
     public short getHighlight()
     {
-        return field_47_Highlight;
+        return field_48_Highlight;
     }
 
     /**
      * Set the Highlight field for the CHP record.
      */
-    public void setHighlight( short field_47_Highlight )
+    @Internal
+    public void setHighlight( short field_48_Highlight )
     {
-        this.field_47_Highlight = field_47_Highlight;
+        this.field_48_Highlight = field_48_Highlight;
     }
 
     /**
      * Get the CharsetFlags field for the CHP record.
      */
+    @Internal
     public short getCharsetFlags()
     {
-        return field_48_CharsetFlags;
+        return field_49_CharsetFlags;
     }
 
     /**
      * Set the CharsetFlags field for the CHP record.
      */
-    public void setCharsetFlags( short field_48_CharsetFlags )
+    @Internal
+    public void setCharsetFlags( short field_49_CharsetFlags )
     {
-        this.field_48_CharsetFlags = field_48_CharsetFlags;
+        this.field_49_CharsetFlags = field_49_CharsetFlags;
     }
 
     /**
      * Get the chse field for the CHP record.
      */
+    @Internal
     public short getChse()
     {
-        return field_49_chse;
+        return field_50_chse;
     }
 
     /**
      * Set the chse field for the CHP record.
      */
-    public void setChse( short field_49_chse )
+    @Internal
+    public void setChse( short field_50_chse )
     {
-        this.field_49_chse = field_49_chse;
+        this.field_50_chse = field_50_chse;
     }
 
     /**
      * properties have been changed with revision marking on.
      */
+    @Internal
     public boolean getFPropRMark()
     {
-        return field_50_fPropRMark;
+        return field_51_fPropRMark;
     }
 
     /**
      * properties have been changed with revision marking on.
      */
-    public void setFPropRMark( boolean field_50_fPropRMark )
+    @Internal
+    public void setFPropRMark( boolean field_51_fPropRMark )
     {
-        this.field_50_fPropRMark = field_50_fPropRMark;
+        this.field_51_fPropRMark = field_51_fPropRMark;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when properties have been changed when revision marking was enabled..
      */
+    @Internal
     public int getIbstPropRMark()
     {
-        return field_51_ibstPropRMark;
+        return field_52_ibstPropRMark;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when properties have been changed when revision marking was enabled..
      */
-    public void setIbstPropRMark( int field_51_ibstPropRMark )
+    @Internal
+    public void setIbstPropRMark( int field_52_ibstPropRMark )
     {
-        this.field_51_ibstPropRMark = field_51_ibstPropRMark;
+        this.field_52_ibstPropRMark = field_52_ibstPropRMark;
     }
 
     /**
      * Date/time at which properties of this were changed for this run of text by the author. (Only recorded when revision marking is on.).
      */
+    @Internal
     public DateAndTime getDttmPropRMark()
     {
-        return field_52_dttmPropRMark;
+        return field_53_dttmPropRMark;
     }
 
     /**
      * Date/time at which properties of this were changed for this run of text by the author. (Only recorded when revision marking is on.).
      */
-    public void setDttmPropRMark( DateAndTime field_52_dttmPropRMark )
+    @Internal
+    public void setDttmPropRMark( DateAndTime field_53_dttmPropRMark )
     {
-        this.field_52_dttmPropRMark = field_52_dttmPropRMark;
+        this.field_53_dttmPropRMark = field_53_dttmPropRMark;
     }
 
     /**
      * When chp.wConflict!=0, this is TRUE when text is part of the original version of text. When FALSE, text is alternative introduced by reconciliation operation..
      */
+    @Internal
     public boolean getFConflictOrig()
     {
-        return field_53_fConflictOrig;
+        return field_54_fConflictOrig;
     }
 
     /**
      * When chp.wConflict!=0, this is TRUE when text is part of the original version of text. When FALSE, text is alternative introduced by reconciliation operation..
      */
-    public void setFConflictOrig( boolean field_53_fConflictOrig )
+    @Internal
+    public void setFConflictOrig( boolean field_54_fConflictOrig )
     {
-        this.field_53_fConflictOrig = field_53_fConflictOrig;
+        this.field_54_fConflictOrig = field_54_fConflictOrig;
     }
 
     /**
      * When fConflictOtherDel==fTrue, the other side of a reconciliation conflict causes this text to be deleted.
      */
+    @Internal
     public boolean getFConflictOtherDel()
     {
-        return field_54_fConflictOtherDel;
+        return field_55_fConflictOtherDel;
     }
 
     /**
      * When fConflictOtherDel==fTrue, the other side of a reconciliation conflict causes this text to be deleted.
      */
-    public void setFConflictOtherDel( boolean field_54_fConflictOtherDel )
+    @Internal
+    public void setFConflictOtherDel( boolean field_55_fConflictOtherDel )
     {
-        this.field_54_fConflictOtherDel = field_54_fConflictOtherDel;
+        this.field_55_fConflictOtherDel = field_55_fConflictOtherDel;
     }
 
     /**
      * When != 0, index number that identifies all text participating in a particular conflict incident.
      */
+    @Internal
     public int getWConflict()
     {
-        return field_55_wConflict;
+        return field_56_wConflict;
     }
 
     /**
      * When != 0, index number that identifies all text participating in a particular conflict incident.
      */
-    public void setWConflict( int field_55_wConflict )
+    @Internal
+    public void setWConflict( int field_56_wConflict )
     {
-        this.field_55_wConflict = field_55_wConflict;
+        this.field_56_wConflict = field_56_wConflict;
     }
 
     /**
      * Who made this change for this side of the conflict..
      */
+    @Internal
     public int getIbstConflict()
     {
-        return field_56_IbstConflict;
+        return field_57_IbstConflict;
     }
 
     /**
      * Who made this change for this side of the conflict..
      */
-    public void setIbstConflict( int field_56_IbstConflict )
+    @Internal
+    public void setIbstConflict( int field_57_IbstConflict )
     {
-        this.field_56_IbstConflict = field_56_IbstConflict;
+        this.field_57_IbstConflict = field_57_IbstConflict;
     }
 
     /**
      * When the change was made.
      */
+    @Internal
     public DateAndTime getDttmConflict()
     {
-        return field_57_dttmConflict;
+        return field_58_dttmConflict;
     }
 
     /**
      * When the change was made.
      */
-    public void setDttmConflict( DateAndTime field_57_dttmConflict )
+    @Internal
+    public void setDttmConflict( DateAndTime field_58_dttmConflict )
     {
-        this.field_57_dttmConflict = field_57_dttmConflict;
+        this.field_58_dttmConflict = field_58_dttmConflict;
     }
 
     /**
      * the number for a ListNum field is being tracked in xstDispFldRMark. If that number is different from the current value, the number has changed. Only valid for ListNum fields..
      */
+    @Internal
     public boolean getFDispFldRMark()
     {
-        return field_58_fDispFldRMark;
+        return field_59_fDispFldRMark;
     }
 
     /**
      * the number for a ListNum field is being tracked in xstDispFldRMark. If that number is different from the current value, the number has changed. Only valid for ListNum fields..
      */
-    public void setFDispFldRMark( boolean field_58_fDispFldRMark )
+    @Internal
+    public void setFDispFldRMark( boolean field_59_fDispFldRMark )
     {
-        this.field_58_fDispFldRMark = field_58_fDispFldRMark;
+        this.field_59_fDispFldRMark = field_59_fDispFldRMark;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when ListNum field numbering has been changed when revision marking was enabled..
      */
+    @Internal
     public int getIbstDispFldRMark()
     {
-        return field_59_ibstDispFldRMark;
+        return field_60_ibstDispFldRMark;
     }
 
     /**
      * Index to author IDs stored in hsttbfRMark. Used when ListNum field numbering has been changed when revision marking was enabled..
      */
-    public void setIbstDispFldRMark( int field_59_ibstDispFldRMark )
+    @Internal
+    public void setIbstDispFldRMark( int field_60_ibstDispFldRMark )
     {
-        this.field_59_ibstDispFldRMark = field_59_ibstDispFldRMark;
+        this.field_60_ibstDispFldRMark = field_60_ibstDispFldRMark;
     }
 
     /**
      * The date for the ListNum field number change.
      */
+    @Internal
     public DateAndTime getDttmDispFldRMark()
     {
-        return field_60_dttmDispFldRMark;
+        return field_61_dttmDispFldRMark;
     }
 
     /**
      * The date for the ListNum field number change.
      */
-    public void setDttmDispFldRMark( DateAndTime field_60_dttmDispFldRMark )
+    @Internal
+    public void setDttmDispFldRMark( DateAndTime field_61_dttmDispFldRMark )
     {
-        this.field_60_dttmDispFldRMark = field_60_dttmDispFldRMark;
+        this.field_61_dttmDispFldRMark = field_61_dttmDispFldRMark;
     }
 
     /**
      * The string value of the ListNum field when revision mark tracking began.
      */
+    @Internal
     public byte[] getXstDispFldRMark()
     {
-        return field_61_xstDispFldRMark;
+        return field_62_xstDispFldRMark;
     }
 
     /**
      * The string value of the ListNum field when revision mark tracking began.
      */
-    public void setXstDispFldRMark( byte[] field_61_xstDispFldRMark )
+    @Internal
+    public void setXstDispFldRMark( byte[] field_62_xstDispFldRMark )
     {
-        this.field_61_xstDispFldRMark = field_61_xstDispFldRMark;
+        this.field_62_xstDispFldRMark = field_62_xstDispFldRMark;
     }
 
     /**
      * Offset in the data stream indicating the location of OLE object data.
      */
+    @Internal
     public int getFcObjp()
     {
-        return field_62_fcObjp;
+        return field_63_fcObjp;
     }
 
     /**
      * Offset in the data stream indicating the location of OLE object data.
      */
-    public void setFcObjp( int field_62_fcObjp )
+    @Internal
+    public void setFcObjp( int field_63_fcObjp )
     {
-        this.field_62_fcObjp = field_62_fcObjp;
+        this.field_63_fcObjp = field_63_fcObjp;
     }
 
     /**
@@ -1477,949 +1626,918 @@ public abstract class CHPAbstractType
      * <li>{@link #LBRCRJ_RIGHT}
      * <li>{@link #LBRCRJ_BOTH}
      */
+    @Internal
     public byte getLbrCRJ()
     {
-        return field_63_lbrCRJ;
+        return field_64_lbrCRJ;
     }
 
     /**
      * Line BReak code for xchCRJ.
      *
-     * @param field_63_lbrCRJ
+     * @param field_64_lbrCRJ
      *        One of 
      * <li>{@link #LBRCRJ_NONE}
      * <li>{@link #LBRCRJ_LEFT}
      * <li>{@link #LBRCRJ_RIGHT}
      * <li>{@link #LBRCRJ_BOTH}
      */
-    public void setLbrCRJ( byte field_63_lbrCRJ )
+    @Internal
+    public void setLbrCRJ( byte field_64_lbrCRJ )
     {
-        this.field_63_lbrCRJ = field_63_lbrCRJ;
+        this.field_64_lbrCRJ = field_64_lbrCRJ;
     }
 
     /**
      * Special hidden for leading emphasis (always hidden).
      */
+    @Internal
     public boolean getFSpecVanish()
     {
-        return field_64_fSpecVanish;
+        return field_65_fSpecVanish;
     }
 
     /**
      * Special hidden for leading emphasis (always hidden).
      */
-    public void setFSpecVanish( boolean field_64_fSpecVanish )
+    @Internal
+    public void setFSpecVanish( boolean field_65_fSpecVanish )
     {
-        this.field_64_fSpecVanish = field_64_fSpecVanish;
+        this.field_65_fSpecVanish = field_65_fSpecVanish;
     }
 
     /**
      * Used for character property revision marking. The chp at the time fHasOldProps is set to 1, the is the old chp..
      */
+    @Internal
     public boolean getFHasOldProps()
     {
-        return field_65_fHasOldProps;
+        return field_66_fHasOldProps;
     }
 
     /**
      * Used for character property revision marking. The chp at the time fHasOldProps is set to 1, the is the old chp..
      */
-    public void setFHasOldProps( boolean field_65_fHasOldProps )
+    @Internal
+    public void setFHasOldProps( boolean field_66_fHasOldProps )
     {
-        this.field_65_fHasOldProps = field_65_fHasOldProps;
+        this.field_66_fHasOldProps = field_66_fHasOldProps;
     }
 
     /**
      * Mark the character as hidden..
      */
+    @Internal
     public boolean getFSdtVanish()
     {
-        return field_66_fSdtVanish;
+        return field_67_fSdtVanish;
     }
 
     /**
      * Mark the character as hidden..
      */
-    public void setFSdtVanish( boolean field_66_fSdtVanish )
+    @Internal
+    public void setFSdtVanish( boolean field_67_fSdtVanish )
     {
-        this.field_66_fSdtVanish = field_66_fSdtVanish;
+        this.field_67_fSdtVanish = field_67_fSdtVanish;
     }
 
     /**
      * Get the wCharScale field for the CHP record.
      */
+    @Internal
     public int getWCharScale()
     {
-        return field_67_wCharScale;
+        return field_68_wCharScale;
     }
 
     /**
      * Set the wCharScale field for the CHP record.
      */
-    public void setWCharScale( int field_67_wCharScale )
+    @Internal
+    public void setWCharScale( int field_68_wCharScale )
     {
-        this.field_67_wCharScale = field_67_wCharScale;
+        this.field_68_wCharScale = field_68_wCharScale;
     }
 
     /**
      * Sets the fBold field value.
      * Text is bold
      */
+    @Internal
     public void setFBold( boolean value )
     {
         field_1_grpfChp = (int)fBold.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Text is bold
      * @return  the fBold field value.
      */
+    @Internal
     public boolean isFBold()
     {
         return fBold.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fItalic field value.
      * Italic
      */
+    @Internal
     public void setFItalic( boolean value )
     {
         field_1_grpfChp = (int)fItalic.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Italic
      * @return  the fItalic field value.
      */
+    @Internal
     public boolean isFItalic()
     {
         return fItalic.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fRMarkDel field value.
      * has been deleted and will be displayed with strikethrough when revision marked text is to be displayed
      */
+    @Internal
     public void setFRMarkDel( boolean value )
     {
         field_1_grpfChp = (int)fRMarkDel.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * has been deleted and will be displayed with strikethrough when revision marked text is to be displayed
      * @return  the fRMarkDel field value.
      */
+    @Internal
     public boolean isFRMarkDel()
     {
         return fRMarkDel.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fOutline field value.
      * Outlined
      */
+    @Internal
     public void setFOutline( boolean value )
     {
         field_1_grpfChp = (int)fOutline.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Outlined
      * @return  the fOutline field value.
      */
+    @Internal
     public boolean isFOutline()
     {
         return fOutline.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fFldVanish field value.
      * Used internally by Word
      */
+    @Internal
     public void setFFldVanish( boolean value )
     {
         field_1_grpfChp = (int)fFldVanish.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Used internally by Word
      * @return  the fFldVanish field value.
      */
+    @Internal
     public boolean isFFldVanish()
     {
         return fFldVanish.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fSmallCaps field value.
      * Displayed with small caps
      */
+    @Internal
     public void setFSmallCaps( boolean value )
     {
         field_1_grpfChp = (int)fSmallCaps.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Displayed with small caps
      * @return  the fSmallCaps field value.
      */
+    @Internal
     public boolean isFSmallCaps()
     {
         return fSmallCaps.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fCaps field value.
      * Displayed with caps
      */
+    @Internal
     public void setFCaps( boolean value )
     {
         field_1_grpfChp = (int)fCaps.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Displayed with caps
      * @return  the fCaps field value.
      */
+    @Internal
     public boolean isFCaps()
     {
         return fCaps.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fVanish field value.
      * text has hidden format, and is not displayed unless fPagHidden is set in the DOP
      */
+    @Internal
     public void setFVanish( boolean value )
     {
         field_1_grpfChp = (int)fVanish.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
-     * text has -hidden format, and is not displayed unless fPagHidden is set in the DOP
+     * text has hidden format, and is not displayed unless fPagHidden is set in the DOP
      * @return  the fVanish field value.
      */
+    @Internal
     public boolean isFVanish()
     {
         return fVanish.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fRMark field value.
      * text is newly typed since the last time revision marks have been accepted and will be displayed with an underline when revision marked text is to be displayed
      */
+    @Internal
     public void setFRMark( boolean value )
     {
         field_1_grpfChp = (int)fRMark.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * text is newly typed since the last time revision marks have been accepted and will be displayed with an underline when revision marked text is to be displayed
      * @return  the fRMark field value.
      */
+    @Internal
     public boolean isFRMark()
     {
         return fRMark.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fSpec field value.
      * Character is a Word special character
      */
+    @Internal
     public void setFSpec( boolean value )
     {
         field_1_grpfChp = (int)fSpec.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Character is a Word special character
      * @return  the fSpec field value.
      */
+    @Internal
     public boolean isFSpec()
     {
         return fSpec.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fStrike field value.
      * Displayed with strikethrough
      */
+    @Internal
     public void setFStrike( boolean value )
     {
         field_1_grpfChp = (int)fStrike.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Displayed with strikethrough
      * @return  the fStrike field value.
      */
+    @Internal
     public boolean isFStrike()
     {
         return fStrike.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fObj field value.
      * Embedded objec
      */
+    @Internal
     public void setFObj( boolean value )
     {
         field_1_grpfChp = (int)fObj.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Embedded objec
      * @return  the fObj field value.
      */
+    @Internal
     public boolean isFObj()
     {
         return fObj.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fShadow field value.
      * Character is drawn with a shadow
      */
+    @Internal
     public void setFShadow( boolean value )
     {
         field_1_grpfChp = (int)fShadow.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Character is drawn with a shadow
      * @return  the fShadow field value.
      */
+    @Internal
     public boolean isFShadow()
     {
         return fShadow.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fLowerCase field value.
      * Character is displayed in lower case. This field may be set to 1 only when chp.fSmallCaps is 1.
      */
+    @Internal
     public void setFLowerCase( boolean value )
     {
         field_1_grpfChp = (int)fLowerCase.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Character is displayed in lower case. This field may be set to 1 only when chp.fSmallCaps is 1.
      * @return  the fLowerCase field value.
      */
+    @Internal
     public boolean isFLowerCase()
     {
         return fLowerCase.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fData field value.
      * chp.fcPic points to an FFDATA, the data structure binary data used by Word to describe a form field. The bit chp.fData may only be 1 when chp.fSpec is also 1 and the special character in the document stream that has this property is a chPicture (0x01)
      */
+    @Internal
     public void setFData( boolean value )
     {
         field_1_grpfChp = (int)fData.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * chp.fcPic points to an FFDATA, the data structure binary data used by Word to describe a form field. The bit chp.fData may only be 1 when chp.fSpec is also 1 and the special character in the document stream that has this property is a chPicture (0x01)
      * @return  the fData field value.
      */
+    @Internal
     public boolean isFData()
     {
         return fData.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fOle2 field value.
      * chp.lTagObj specifies a particular object in the object stream that specifies the particular OLE object in the stream that should be displayed when the chPicture fSpec character that is tagged with the fOle2 is encountered. The bit chp.fOle2 may only be 1 when chp.fSpec is also 1 and the special character in the document stream that has this property is a chPicture (0x01).
      */
+    @Internal
     public void setFOle2( boolean value )
     {
         field_1_grpfChp = (int)fOle2.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * chp.lTagObj specifies a particular object in the object stream that specifies the particular OLE object in the stream that should be displayed when the chPicture fSpec character that is tagged with the fOle2 is encountered. The bit chp.fOle2 may only be 1 when chp.fSpec is also 1 and the special character in the document stream that has this property is a chPicture (0x01).
      * @return  the fOle2 field value.
      */
+    @Internal
     public boolean isFOle2()
     {
         return fOle2.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fEmboss field value.
      * Text is embossed
      */
+    @Internal
     public void setFEmboss( boolean value )
     {
         field_1_grpfChp = (int)fEmboss.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Text is embossed
      * @return  the fEmboss field value.
      */
+    @Internal
     public boolean isFEmboss()
     {
         return fEmboss.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fImprint field value.
      * Text is engraved
      */
+    @Internal
     public void setFImprint( boolean value )
     {
         field_1_grpfChp = (int)fImprint.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Text is engraved
      * @return  the fImprint field value.
      */
+    @Internal
     public boolean isFImprint()
     {
         return fImprint.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fDStrike field value.
      * Displayed with double strikethrough
      */
+    @Internal
     public void setFDStrike( boolean value )
     {
         field_1_grpfChp = (int)fDStrike.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Displayed with double strikethrough
      * @return  the fDStrike field value.
      */
+    @Internal
     public boolean isFDStrike()
     {
         return fDStrike.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fUsePgsuSettings field value.
      * Used internally by Word
      */
+    @Internal
     public void setFUsePgsuSettings( boolean value )
     {
         field_1_grpfChp = (int)fUsePgsuSettings.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Used internally by Word
      * @return  the fUsePgsuSettings field value.
      */
+    @Internal
     public boolean isFUsePgsuSettings()
     {
         return fUsePgsuSettings.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fBoldBi field value.
      * Complex Scripts text is bold
      */
+    @Internal
     public void setFBoldBi( boolean value )
     {
         field_1_grpfChp = (int)fBoldBi.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Complex Scripts text is bold
      * @return  the fBoldBi field value.
      */
+    @Internal
     public boolean isFBoldBi()
     {
         return fBoldBi.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fComplexScripts field value.
      * Complex Scripts text that requires special processing to display and process
      */
+    @Internal
     public void setFComplexScripts( boolean value )
     {
         field_1_grpfChp = (int)fComplexScripts.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Complex Scripts text that requires special processing to display and process
      * @return  the fComplexScripts field value.
      */
+    @Internal
     public boolean isFComplexScripts()
     {
         return fComplexScripts.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fItalicBi field value.
      * Complex Scripts text is italics
      */
+    @Internal
     public void setFItalicBi( boolean value )
     {
         field_1_grpfChp = (int)fItalicBi.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Complex Scripts text is italics
      * @return  the fItalicBi field value.
      */
+    @Internal
     public boolean isFItalicBi()
     {
         return fItalicBi.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the fBiDi field value.
      * Complex Scripts right-to-left text that requires special processing to display and process (character reordering; contextual shaping; display of combining characters and diacritics; specialized justification rules; cursor positioning)
      */
+    @Internal
     public void setFBiDi( boolean value )
     {
         field_1_grpfChp = (int)fBiDi.setBoolean(field_1_grpfChp, value);
-
-        
     }
 
     /**
      * Complex Scripts right-to-left text that requires special processing to display and process (character reordering; contextual shaping; display of combining characters and diacritics; specialized justification rules; cursor positioning)
      * @return  the fBiDi field value.
      */
+    @Internal
     public boolean isFBiDi()
     {
         return fBiDi.isSet(field_1_grpfChp);
-        
     }
 
     /**
      * Sets the itypFELayout field value.
      * 
      */
+    @Internal
     public void setItypFELayout( short value )
     {
-        field_28_ufel = (short)itypFELayout.setValue(field_28_ufel, value);
-
-        
+        field_29_ufel = (short)itypFELayout.setValue(field_29_ufel, value);
     }
 
     /**
      * 
      * @return  the itypFELayout field value.
      */
+    @Internal
     public short getItypFELayout()
     {
-        return ( short )itypFELayout.getValue(field_28_ufel);
-        
+        return ( short )itypFELayout.getValue(field_29_ufel);
     }
 
     /**
      * Sets the fTNY field value.
      * Tatenakayoko: Horizontal-in-vertical (range of text in a direction perpendicular to the text flow) is used
      */
+    @Internal
     public void setFTNY( boolean value )
     {
-        field_28_ufel = (short)fTNY.setBoolean(field_28_ufel, value);
-
-        
+        field_29_ufel = (short)fTNY.setBoolean(field_29_ufel, value);
     }
 
     /**
      * Tatenakayoko: Horizontal-in-vertical (range of text in a direction perpendicular to the text flow) is used
      * @return  the fTNY field value.
      */
+    @Internal
     public boolean isFTNY()
     {
-        return fTNY.isSet(field_28_ufel);
-        
+        return fTNY.isSet(field_29_ufel);
     }
 
     /**
      * Sets the fWarichu field value.
      * Two lines in one (text in the group is displayed as two half-height lines within a line)
      */
+    @Internal
     public void setFWarichu( boolean value )
     {
-        field_28_ufel = (short)fWarichu.setBoolean(field_28_ufel, value);
-
-        
+        field_29_ufel = (short)fWarichu.setBoolean(field_29_ufel, value);
     }
 
     /**
      * Two lines in one (text in the group is displayed as two half-height lines within a line)
      * @return  the fWarichu field value.
      */
+    @Internal
     public boolean isFWarichu()
     {
-        return fWarichu.isSet(field_28_ufel);
-        
+        return fWarichu.isSet(field_29_ufel);
     }
 
     /**
      * Sets the fKumimoji field value.
      * combine characters
      */
+    @Internal
     public void setFKumimoji( boolean value )
     {
-        field_28_ufel = (short)fKumimoji.setBoolean(field_28_ufel, value);
-
-        
+        field_29_ufel = (short)fKumimoji.setBoolean(field_29_ufel, value);
     }
 
     /**
      * combine characters
      * @return  the fKumimoji field value.
      */
+    @Internal
     public boolean isFKumimoji()
     {
-        return fKumimoji.isSet(field_28_ufel);
-        
+        return fKumimoji.isSet(field_29_ufel);
     }
 
     /**
      * Sets the fRuby field value.
      * Phonetic guide
      */
+    @Internal
     public void setFRuby( boolean value )
     {
-        field_28_ufel = (short)fRuby.setBoolean(field_28_ufel, value);
-
-        
+        field_29_ufel = (short)fRuby.setBoolean(field_29_ufel, value);
     }
 
     /**
      * Phonetic guide
      * @return  the fRuby field value.
      */
+    @Internal
     public boolean isFRuby()
     {
-        return fRuby.isSet(field_28_ufel);
-        
+        return fRuby.isSet(field_29_ufel);
     }
 
     /**
      * Sets the fLSFitText field value.
      * fit text
      */
+    @Internal
     public void setFLSFitText( boolean value )
     {
-        field_28_ufel = (short)fLSFitText.setBoolean(field_28_ufel, value);
-
-        
+        field_29_ufel = (short)fLSFitText.setBoolean(field_29_ufel, value);
     }
 
     /**
      * fit text
      * @return  the fLSFitText field value.
      */
+    @Internal
     public boolean isFLSFitText()
     {
-        return fLSFitText.isSet(field_28_ufel);
-        
+        return fLSFitText.isSet(field_29_ufel);
     }
 
     /**
      * Sets the spare field value.
      * Unused
      */
+    @Internal
     public void setSpare( byte value )
     {
-        field_28_ufel = (short)spare.setValue(field_28_ufel, value);
-
-        
+        field_29_ufel = (short)spare.setValue(field_29_ufel, value);
     }
 
     /**
      * Unused
      * @return  the spare field value.
      */
+    @Internal
     public byte getSpare()
     {
-        return ( byte )spare.getValue(field_28_ufel);
-        
+        return ( byte )spare.getValue(field_29_ufel);
     }
 
     /**
      * Sets the iWarichuBracket field value.
      * Bracket character for two-lines-in-one
      */
+    @Internal
     public void setIWarichuBracket( byte value )
     {
-        field_29_copt = (byte)iWarichuBracket.setValue(field_29_copt, value);
-
-        
+        field_30_copt = (byte)iWarichuBracket.setValue(field_30_copt, value);
     }
 
     /**
      * Bracket character for two-lines-in-one
      * @return  the iWarichuBracket field value.
      */
+    @Internal
     public byte getIWarichuBracket()
     {
-        return ( byte )iWarichuBracket.getValue(field_29_copt);
-        
+        return ( byte )iWarichuBracket.getValue(field_30_copt);
     }
 
     /**
      * Sets the fWarichuNoOpenBracket field value.
      * Two-lines-in-one uses no open
      */
+    @Internal
     public void setFWarichuNoOpenBracket( boolean value )
     {
-        field_29_copt = (byte)fWarichuNoOpenBracket.setBoolean(field_29_copt, value);
-
-        
+        field_30_copt = (byte)fWarichuNoOpenBracket.setBoolean(field_30_copt, value);
     }
 
     /**
      * Two-lines-in-one uses no open
      * @return  the fWarichuNoOpenBracket field value.
      */
+    @Internal
     public boolean isFWarichuNoOpenBracket()
     {
-        return fWarichuNoOpenBracket.isSet(field_29_copt);
-        
+        return fWarichuNoOpenBracket.isSet(field_30_copt);
     }
 
     /**
      * Sets the fTNYCompress field value.
      * fit text in line
      */
+    @Internal
     public void setFTNYCompress( boolean value )
     {
-        field_29_copt = (byte)fTNYCompress.setBoolean(field_29_copt, value);
-
-        
+        field_30_copt = (byte)fTNYCompress.setBoolean(field_30_copt, value);
     }
 
     /**
      * fit text in line
      * @return  the fTNYCompress field value.
      */
+    @Internal
     public boolean isFTNYCompress()
     {
-        return fTNYCompress.isSet(field_29_copt);
-        
+        return fTNYCompress.isSet(field_30_copt);
     }
 
     /**
      * Sets the fTNYFetchTxm field value.
      * fetch text metrics
      */
+    @Internal
     public void setFTNYFetchTxm( boolean value )
     {
-        field_29_copt = (byte)fTNYFetchTxm.setBoolean(field_29_copt, value);
-
-        
+        field_30_copt = (byte)fTNYFetchTxm.setBoolean(field_30_copt, value);
     }
 
     /**
      * fetch text metrics
      * @return  the fTNYFetchTxm field value.
      */
+    @Internal
     public boolean isFTNYFetchTxm()
     {
-        return fTNYFetchTxm.isSet(field_29_copt);
-        
+        return fTNYFetchTxm.isSet(field_30_copt);
     }
 
     /**
      * Sets the fCellFitText field value.
      * Fit text in cell
      */
+    @Internal
     public void setFCellFitText( boolean value )
     {
-        field_29_copt = (byte)fCellFitText.setBoolean(field_29_copt, value);
-
-        
+        field_30_copt = (byte)fCellFitText.setBoolean(field_30_copt, value);
     }
 
     /**
      * Fit text in cell
      * @return  the fCellFitText field value.
      */
+    @Internal
     public boolean isFCellFitText()
     {
-        return fCellFitText.isSet(field_29_copt);
-        
+        return fCellFitText.isSet(field_30_copt);
     }
 
     /**
      * Sets the unused field value.
      * Not used
      */
+    @Internal
     public void setUnused( boolean value )
     {
-        field_29_copt = (byte)unused.setBoolean(field_29_copt, value);
-
-        
+        field_30_copt = (byte)unused.setBoolean(field_30_copt, value);
     }
 
     /**
      * Not used
      * @return  the unused field value.
      */
+    @Internal
     public boolean isUnused()
     {
-        return unused.isSet(field_29_copt);
-        
+        return unused.isSet(field_30_copt);
     }
 
     /**
      * Sets the icoHighlight field value.
      * Highlight color (see chp.ico)
      */
+    @Internal
     public void setIcoHighlight( byte value )
     {
-        field_47_Highlight = (short)icoHighlight.setValue(field_47_Highlight, value);
-
-        
+        field_48_Highlight = (short)icoHighlight.setValue(field_48_Highlight, value);
     }
 
     /**
      * Highlight color (see chp.ico)
      * @return  the icoHighlight field value.
      */
+    @Internal
     public byte getIcoHighlight()
     {
-        return ( byte )icoHighlight.getValue(field_47_Highlight);
-        
+        return ( byte )icoHighlight.getValue(field_48_Highlight);
     }
 
     /**
      * Sets the fHighlight field value.
      * When 1, characters are highlighted with color specified by chp.icoHighlight
      */
+    @Internal
     public void setFHighlight( boolean value )
     {
-        field_47_Highlight = (short)fHighlight.setBoolean(field_47_Highlight, value);
-
-        
+        field_48_Highlight = (short)fHighlight.setBoolean(field_48_Highlight, value);
     }
 
     /**
      * When 1, characters are highlighted with color specified by chp.icoHighlight
      * @return  the fHighlight field value.
      */
+    @Internal
     public boolean isFHighlight()
     {
-        return fHighlight.isSet(field_47_Highlight);
-        
+        return fHighlight.isSet(field_48_Highlight);
     }
 
     /**
      * Sets the fChsDiff field value.
      * Pre-Unicode files, char's char set different from FIB char set
      */
+    @Internal
     public void setFChsDiff( boolean value )
     {
-        field_48_CharsetFlags = (short)fChsDiff.setBoolean(field_48_CharsetFlags, value);
-
-        
+        field_49_CharsetFlags = (short)fChsDiff.setBoolean(field_49_CharsetFlags, value);
     }
 
     /**
      * Pre-Unicode files, char's char set different from FIB char set
      * @return  the fChsDiff field value.
      */
+    @Internal
     public boolean isFChsDiff()
     {
-        return fChsDiff.isSet(field_48_CharsetFlags);
-        
+        return fChsDiff.isSet(field_49_CharsetFlags);
     }
 
     /**
      * Sets the fMacChs field value.
      * fTrue if char's are Macintosh char set
      */
+    @Internal
     public void setFMacChs( boolean value )
     {
-        field_48_CharsetFlags = (short)fMacChs.setBoolean(field_48_CharsetFlags, value);
-
-        
+        field_49_CharsetFlags = (short)fMacChs.setBoolean(field_49_CharsetFlags, value);
     }
 
     /**
      * fTrue if char's are Macintosh char set
      * @return  the fMacChs field value.
      */
+    @Internal
     public boolean isFMacChs()
     {
-        return fMacChs.isSet(field_48_CharsetFlags);
-        
+        return fMacChs.isSet(field_49_CharsetFlags);
     }
 
 }  // END OF CLASS
index 27bc5a48efe678edfcfe15caf70e372525f8d0a6..4a6445f59eb0a4137670e58103b7a44be1d89663 100644 (file)
@@ -275,11 +275,13 @@ public final class CharacterSprmCompressor
     {
       size += SprmUtils.addSprm((short)0x2859, newCHP.getSfxtText(), null, sprmList);
     }
-    if (newCHP.getIco24() != oldCHP.getIco24())
-    {
-      if(newCHP.getIco24() != -1) // don't add a sprm if we're looking at an ico = Auto
-        size += SprmUtils.addSprm((short)0x6870, newCHP.getIco24(), null, sprmList);
-    }
+        if ( !newCHP.getCv().equals( oldCHP.getCv() ) )
+        {
+            // don't add a sprm if we're looking at an ico = Auto
+            if ( !newCHP.getCv().isEmpty() )
+                size += SprmUtils.addSprm( CharacterProperties.SPRM_CCV, newCHP
+                        .getCv().getValue(), null, sprmList );
+        }
 
     return SprmUtils.getGrpprl(sprmList, size);
   }
index e40bab3581fffc6ac84904ea1d9a4d9fbdcfb77c..7b231ef439405b49d244574cdb7ce9db34985507 100644 (file)
@@ -17,6 +17,7 @@
 
 package org.apache.poi.hwpf.sprm;
 
+import org.apache.poi.hwpf.model.Colorref;
 import org.apache.poi.hwpf.model.Hyphenation;
 import org.apache.poi.hwpf.usermodel.BorderCode;
 import org.apache.poi.hwpf.usermodel.CharacterProperties;
@@ -601,9 +602,10 @@ public final class CharacterSprmUncompressor extends SprmUncompressor
       case 0x6f:
         newCHP.setIdctHint ((byte) sprm.getOperand());
         break;
-      case 0x70:
-        newCHP.setIco24 (sprm.getOperand());
-        break;
+        case 0x70:
+            // sprmCCv -- 0x6870
+            newCHP.setCv( new Colorref( sprm.getOperand() ) );
+            break;
       case 0x71:
         // sprmCShd
         break;
index aef7714f23beaa006e486e0c26141228a4ed191a..9d1582aec88dcfb61da0818136cd41246d0807b2 100644 (file)
@@ -17,6 +17,7 @@
 
 package org.apache.poi.hwpf.usermodel;
 
+import org.apache.poi.hwpf.model.Colorref;
 import org.apache.poi.hwpf.model.types.CHPAbstractType;
 
 /**
@@ -65,6 +66,10 @@ public final class CharacterProperties
   public final static short SPRM_PROPRMARK = (short)0xCA57;
   public final static short SPRM_FEMBOSS = 0x0858;
   public final static short SPRM_SFXTEXT = 0x2859;
+    /*
+     * Microsoft Office Word 97-2007 Binary File Format (.doc) Specification;
+     * Page 60 of 210
+     */
   public final static short SPRM_DISPFLDRMARK = (short)0xCA62;
   public final static short SPRM_IBSTRMARKDEL = 0x4863;
   public final static short SPRM_DTTMRMARKDEL = 0x6864;
@@ -75,8 +80,10 @@ public final class CharacterProperties
   public final static short SPRM_NONFELID = 0x486D;
   public final static short SPRM_FELID = 0x486E;
   public final static short SPRM_IDCTHINT = 0x286F;
-
-  int _ico24 = -1; // default to -1 so we can ignore it for word 97 files
+    /**
+     * change chp.cv
+     */
+    public final static short SPRM_CCV = 0x6870;
 
     public CharacterProperties()
     {
@@ -305,66 +312,69 @@ public final class CharacterProperties
     super.setIcoHighlight(color);
   }
 
-  /**
-  * Get the ico24 field for the CHP record.
-  */
-  public int getIco24()
-  {
-    if ( _ico24 == -1 )
+    /**
+     * Get the ico24 field for the CHP record.
+     */
+    public int getIco24()
     {
-      switch(getIco()) // convert word 97 colour numbers to 0xBBGGRR value
-      {
+        if ( !getCv().isEmpty() )
+            return getCv().getValue();
+
+        // convert word 97 colour numbers to 0xBBRRGGRR value
+        switch ( getIco() )
+        {
         case 0: // auto
-          return -1;
+            return -1;
         case 1: // black
-          return 0x000000;
+            return 0x00000000;
         case 2: // blue
-          return 0xFF0000;
+            return 0x00FF0000;
         case 3: // cyan
-          return 0xFFFF00;
+            return 0x00FFFF00;
         case 4: // green
-          return 0x00FF00;
+            return 0x0000FF00;
         case 5: // magenta
-          return 0xFF00FF;
+            return 0x00FF00FF;
         case 6: // red
-          return 0x0000FF;
+            return 0x000000FF;
         case 7: // yellow
-          return 0x00FFFF;
+            return 0x0000FFFF;
         case 8: // white
-          return 0x0FFFFFF;
+            return 0x00FFFFFF;
         case 9: // dark blue
-          return 0x800000;
+            return 0x00800000;
         case 10: // dark cyan
-          return 0x808000;
+            return 0x00808000;
         case 11: // dark green
-          return 0x008000;
+            return 0x00008000;
         case 12: // dark magenta
-          return 0x800080;
+            return 0x00800080;
         case 13: // dark red
-          return 0x000080;
+            return 0x00000080;
         case 14: // dark yellow
-          return 0x008080;
+            return 0x00008080;
         case 15: // dark grey
-          return 0x808080;
+            return 0x00808080;
         case 16: // light grey
-         return 0xC0C0C0;
-      }
+            return 0x00C0C0C0;
+        }
+
+        return -1;
     }
-    return _ico24;
-  }
 
-  /**
-   * Set the ico24 field for the CHP record.
-   */
-  public void setIco24(int colour24)
-  {
-    _ico24 = colour24 & 0xFFFFFF; // only keep the 24bit 0xBBGGRR colour
-  }
+    /**
+     * Set the ico24 field for the CHP record.
+     */
+    public void setIco24( int colour24 )
+    {
+        setCv( new Colorref( colour24 & 0xFFFFFF ) );
+    }
 
     public Object clone() throws CloneNotSupportedException
     {
         CharacterProperties cp = (CharacterProperties) super.clone();
 
+        cp.setCv( getCv().clone() );
         cp.setDttmRMark( (DateAndTime) getDttmRMark().clone() );
         cp.setDttmRMarkDel( (DateAndTime) getDttmRMarkDel().clone() );
         cp.setDttmPropRMark( (DateAndTime) getDttmPropRMark().clone() );
@@ -373,8 +383,6 @@ public final class CharacterProperties
         cp.setShd( (ShadingDescriptor) getShd().clone() );
         cp.setBrc( (BorderCode) getBrc().clone() );
 
-        cp._ico24 = _ico24;
-
         return cp;
     }
 }
index cbb497b11d557d5e89cdd09cee4ed593d8bbf4d8..4c797d531467d07e6ceb5b090c08f655a35208f0 100644 (file)
@@ -79,7 +79,8 @@
         <!-- rgftc[iftcCompositeMax] -->
         <field type="int" size="4" name="dxaSpace"
             description="Space following each character in the run expressed in twip units."/>
-        <!-- cv -->
+
+        <field type="Colorref" size="4" name="cv" description="24-bit color"/>
 
         <!-- Microsoft Office Word 97-2007 Binary File Format (.doc) Specification -->
         <!-- Page 104 of 210 -->