]> source.dussan.org Git - poi.git/commitdiff
<No Comment Entered>
authorSaid Ryan Ackley <sackley@apache.org>
Fri, 5 Mar 2004 13:07:57 +0000 (13:07 +0000)
committerSaid Ryan Ackley <sackley@apache.org>
Fri, 5 Mar 2004 13:07:57 +0000 (13:07 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353534 13f79535-47bb-0310-9956-ffa450edef68

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/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/Paragraph.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/Section.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/Table.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableCell.java

index 74a8e0b8106fa51b944273c85ee738ab00847cfc..8e6b2aeee7aec61d603dab8e8ca825a2281da70c 100644 (file)
@@ -313,6 +313,11 @@ public 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);
+    }
 
     return SprmUtils.getGrpprl(sprmList, size);
   }
index 56b1bd34ada1c956dae101f5529fa1d3802b121f..2c69bde7434e2b16cb9d73e446277f20344fac98 100644 (file)
@@ -575,6 +575,9 @@ public class CharacterSprmUncompressor
       case 0x6f:
         newCHP.setIdctHint ((byte) sprm.getOperand());
         break;
+      case 0x70:
+        newCHP.setIco24 (sprm.getOperand());
+        break;
     }
   }
 
index 675f06d4add7bf40a04becbdf4d41ea0d9a0f814..47add56d59ff12a65ffc4ebad18f5bc27212e2d6 100644 (file)
@@ -113,6 +113,7 @@ public class CharacterProperties
   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
 
   public CharacterProperties()
   {
@@ -352,6 +353,61 @@ public class CharacterProperties
     super.setIcoHighlight(color);
   }
 
+  /**
+  * Get the ico24 field for the CHP record.
+  */
+  public int getIco24()
+  {
+    if ( _ico24 == -1 )
+    {
+      switch(field_11_ico) // convert word 97 colour numbers to 0xBBGGRR value
+      {
+        case 0: // auto
+          return -1;
+        case 1: // black
+          return 0x000000;
+        case 2: // blue
+          return 0xFF0000;
+        case 3: // cyan
+          return 0xFFFF00;
+        case 4: // green
+          return 0x00FF00;
+        case 5: // magenta
+          return 0xFF00FF;
+        case 6: // red
+          return 0x0000FF;
+        case 7: // yellow
+          return 0x00FFFF;
+        case 8: // white
+          return 0x0FFFFFF;
+        case 9: // dark blue
+          return 0x800000;
+        case 10: // dark cyan
+          return 0x808000;
+        case 11: // dark green
+          return 0x008000;
+        case 12: // dark magenta
+          return 0x800080;
+        case 13: // dark red
+          return 0x000080;
+        case 14: // dark yellow
+          return 0x008080;
+        case 15: // dark grey
+          return 0x808080;
+        case 16: // light grey
+         return 0xC0C0C0;
+      }
+    }
+    return _ico24;
+  }
+
+  /**
+   * Set the ico24 field for the CHP record.
+   */
+  public void setIco24(int colour24)
+  {
+    _ico24 = colour24 & 0xFFFFFF; // only keep the 24bit 0xBBGGRR colour
+  }
 
   public Object clone()
     throws CloneNotSupportedException
index 5ee4cfb7f5a2ce49ddb5ff6dcc0d37c059372f07..ca08bf578c5c6acf1c61834249c921b09ddd279d 100644 (file)
@@ -127,12 +127,10 @@ public class CharacterRun
     _chpx = chpx.getSprmBuf();
   }
 
-//  SprmBuffer initProperties(CharacterProperties baseStyle)
-//  {
-//    byte[] grpprl = CharacterSprmCompressor.compressCharacterProperty(_props, baseStyle);
-//    _chpx = new SprmBuffer(grpprl);
-//    return _chpx;
-//  }
+  public int type()
+  {
+    return TYPE_CHARACTER;
+  }
 
   public boolean isMarkedDeleted()
   {
@@ -449,6 +447,22 @@ public class CharacterRun
     _chpx.addSprm(SPRM_HIGHLIGHT, color);
   }
 
+  /**
+  * Get the ico24 field for the CHP record.
+  */
+  public int getIco24()
+  {
+    return _props.getIco24();
+  }
+
+  /**
+   * Set the ico24 field for the CHP record.
+   */
+  public void setIco24(int colour24)
+  {
+    _props.setIco24(colour24);
+  }
+
   public Object clone()
     throws CloneNotSupportedException
   {
index 94aafc3b2acd51418bdcc15171efd4f1c793dce2..7cc3a0dcd786ac0387319ec7bfa28599c31e23ca 100644 (file)
@@ -21,4 +21,9 @@ public class ListEntry
     _overrideLevel = override.getOverrideLevel(pap.getIlvl());
     _level = tables.getLevel(override.getLsid(), pap.getIlvl());
   }
+
+  public int type()
+  {
+    return TYPE_LISTENTRY;
+  }
 }
index e8c01a0530cf215e3c25052b0a3df1ee0c9463af..32fccf42022f58a9cf9642d965b8cf2ab7133804 100644 (file)
@@ -131,7 +131,7 @@ public class Paragraph
 
   protected Paragraph(int startIdx, int endIdx, Table parent)
   {
-    super(startIdx, endIdx, Range.PARAGRAPH_INDEX, parent);
+    super(startIdx, endIdx, Range.TYPE_PARAGRAPH, parent);
     PAPX papx = (PAPX)_paragraphs.get(_parEnd - 1);
     _props = papx.getParagraphProperties(_doc.getStyleSheet());
     _papx = papx.getSprmBuf();
@@ -144,6 +144,11 @@ public class Paragraph
     _papx = papx;
   }
 
+  public int type()
+  {
+    return TYPE_PARAGRAPH;
+  }
+
   public boolean isInTable()
   {
     return _props.getFInTable() != 0;
index dd2534fa794f18c0d5ca8b2343dec49a7b022ca3..9df7ac4bebbf932d3633a374943eb806ab499716 100644 (file)
@@ -95,10 +95,13 @@ import java.lang.ref.WeakReference;
 public class Range
 {
 
-  public static final int PARAGRAPH_INDEX = 0;
-  public static final int CHARACTER_INDEX = 1;
-  public static final int SECTION_INDEX = 2;
-  public static final int TEXT_INDEX = 3;
+  public static final int TYPE_PARAGRAPH = 0;
+  public static final int TYPE_CHARACTER= 1;
+  public static final int TYPE_SECTION = 2;
+  public static final int TYPE_TEXT = 3;
+  public static final int TYPE_LISTENTRY = 4;
+  public static final int TYPE_TABLE = 5;
+  public static final int TYPE_UNDEFINED = 6;
 
   private WeakReference _parent;
   protected int _start;
@@ -121,7 +124,6 @@ public class Range
   int _textStart;
   int _textEnd;
 
-
 //  protected Range()
 //  {
 //
@@ -162,28 +164,28 @@ public class Range
 
     switch (idxType)
     {
-      case PARAGRAPH_INDEX:
+      case TYPE_PARAGRAPH:
         _parStart = parent._parStart + startIdx;
         _parEnd = parent._parStart + endIdx;
         _start = ((PropertyNode)_paragraphs.get(_parStart)).getStart();
         _end = ((PropertyNode)_paragraphs.get(_parEnd)).getEnd();
         _parRangeFound = true;
         break;
-      case CHARACTER_INDEX:
+      case TYPE_CHARACTER:
         _charStart = parent._charStart + startIdx;
         _charEnd = parent._charStart + endIdx;
         _start = ((PropertyNode)_characters.get(_charStart)).getStart();
         _end = ((PropertyNode)_characters.get(_charEnd)).getEnd();
         _charRangeFound = true;
         break;
-     case SECTION_INDEX:
+     case TYPE_SECTION:
         _sectionStart = parent._sectionStart + startIdx;
         _sectionEnd = parent._sectionStart + endIdx;
         _start = ((PropertyNode)_sections.get(_sectionStart)).getStart();
         _end = ((PropertyNode)_sections.get(_sectionEnd)).getEnd();
         _sectionRangeFound = true;
         break;
-     case TEXT_INDEX:
+     case TYPE_TEXT:
         _textStart = parent._textStart + startIdx;
         _textEnd = parent._textStart + endIdx;
         _start = ((PropertyNode)_text.get(_textStart)).getStart();
@@ -436,6 +438,11 @@ public class Range
     return pap;
   }
 
+  public int type()
+  {
+    return TYPE_UNDEFINED;
+  }
+
   private void initAll()
   {
     initText();
index fdc086a6499a53cb1dd427cae22732ba9b610c0c..e0f88d179421faca7d1ff8e127dfeed568ea4c84 100644 (file)
@@ -68,6 +68,11 @@ public class Section
     _props = sepx.getSectionProperties();
   }
 
+  public int type()
+  {
+    return TYPE_SECTION;
+  }
+
   public Object clone()
      throws CloneNotSupportedException
    {
index 20a3ff2523a9f295c28b51665c53ecf496c55654..8bea1cab5a4aab619414def92a276d1c77b135d4 100644 (file)
@@ -9,7 +9,7 @@ public class Table
 
   Table(int startIdx, int endIdx, Range parent, int levelNum)
   {
-    super(startIdx, endIdx, Range.PARAGRAPH_INDEX, parent);
+    super(startIdx, endIdx, Range.TYPE_PARAGRAPH, parent);
     _rows = new ArrayList();
     int numParagraphs = numParagraphs();
 
@@ -33,6 +33,11 @@ public class Table
     return _rows.size();
   }
 
+  public int type()
+  {
+    return TYPE_TABLE;
+  }
+
   public TableRow getRow(int index)
   {
     return (TableRow)_rows.get(index);
index 6e0e3bbe47740e8bc58baaaa99a80934d189c689..9b67897f946f76d6ec06d007cc8a751cc9ff3e3b 100644 (file)
@@ -8,7 +8,7 @@ public class TableCell
 
   public TableCell(int startIdx, int endIdx, TableRow parent, int levelNum, TableCellDescriptor tcd)
   {
-    super(startIdx, endIdx, Range.PARAGRAPH_INDEX, parent);
+    super(startIdx, endIdx, Range.TYPE_PARAGRAPH, parent);
     _levelNum = levelNum;
   }