ASF Bugzilla – Attachment 26133 Details for
Bug 50052
Add support for formating of list numbers
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch to support list number format (with testcase)
diff.txt (text/plain), 7.53 KB, created by
Viliam Anirud
on 2010-10-07 04:56:05 UTC
(
hide
)
Description:
Patch to support list number format (with testcase)
Filename:
MIME Type:
Creator:
Viliam Anirud
Created:
2010-10-07 04:56:05 UTC
Size:
7.53 KB
patch
obsolete
>Index: src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java >=================================================================== >--- src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java (revision 1005331) >+++ src/scratchpad/src/org/apache/poi/hwpf/usermodel/ListEntry.java (working copy) >@@ -22,6 +22,8 @@ > import org.apache.poi.hwpf.model.ListLevel; > import org.apache.poi.hwpf.model.ListTables; > import org.apache.poi.hwpf.model.PAPX; >+import org.apache.poi.hwpf.sprm.CharacterSprmUncompressor; >+import org.apache.poi.hwpf.sprm.ParagraphSprmUncompressor; > import org.apache.poi.util.POILogFactory; > import org.apache.poi.util.POILogger; > >@@ -32,15 +34,32 @@ > > ListLevel _level; > ListFormatOverrideLevel _overrideLevel; >- >+ >+ CharacterProperties _numberProps; >+ > ListEntry(PAPX papx, Range parent, ListTables tables) > { > super(papx, parent); >- >+ > if(tables != null) { > ListFormatOverride override = tables.getOverride(_props.getIlfo()); > _overrideLevel = override.getOverrideLevel(_props.getIlvl()); >- _level = tables.getLevel(override.getLsid(), _props.getIlvl()); >+ if (_overrideLevel != null && _overrideLevel.isFormatting()) >+ _level = _overrideLevel.getLevel(); >+ else >+ _level = tables.getLevel(override.getLsid(), _props.getIlvl()); >+ >+ // first process SPRMs from the level, then from papx >+ _props = ParagraphSprmUncompressor.uncompressPAP(_doc.getStyleSheet().getParagraphStyle(papx.getIstd()), _level.getLevelProperties(), 0); >+ _props = ParagraphSprmUncompressor.uncompressPAP(_props, papx.getGrpprl(), 2); >+ >+ // FIXME Base character properties are taken from the first CharacterRun in the paragraph. This is not fully correct, but >+ // I don't know a better way. If whole paragraph is formatted some way, the number gets formatted as well, but the SPRM >+ // is not stored in _level.getNumberProperties(), but is somehow taken from the paragraph. If we base it on StyleSheet, >+ // we do not take this formatting. But if only the first word is formatted (i.e. the first CharacterRun), we format the number >+ // incorrectly. >+ CharacterProperties baseCharacterProperties = getCharacterRun(0).cloneProperties(); >+ _numberProps = CharacterSprmUncompressor.uncompressCHP(baseCharacterProperties, _level.getNumberProperties(), 0); > } else { > log.log(POILogger.WARN, "No ListTables found for ListEntry - document probably partly corrupt, and you may experience problems"); > } >@@ -50,4 +69,9 @@ > { > return TYPE_LISTENTRY; > } >+ >+ public CharacterProperties getNumberProperties() { >+ return _numberProps; >+ } >+ > } >Index: src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java >=================================================================== >--- src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java (revision 1005331) >+++ src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java (working copy) >@@ -91,7 +91,7 @@ > System.arraycopy(buf, offset, _rgbxchNums, 0, RGBXCH_NUMS_SIZE); > offset += RGBXCH_NUMS_SIZE; > >- _ixchFollow = buf[offset++]; >+ _ixchFollow = buf[offset++]; > _dxaSpace = LittleEndian.getInt(buf, offset); > offset += LittleEndian.INT_SIZE; > _dxaIndent = LittleEndian.getInt(buf, offset); >@@ -129,6 +129,71 @@ > return _iStartAt; > } > >+ /** >+ * From specification: >+ * >+ * <table> >+ * <tr><th>nfc value</th><th style='text-align:left'>Numbering scheme </td></tr> >+ * <tr><td>0</td><td>Arabic (1, 2, 3) </td></tr> >+ * <tr><td>1</td><td>Uppercase Roman numeral (I, II, III) </td></tr> >+ * <tr><td>2</td><td>Lowercase Roman numeral (i, ii, iii) </td></tr> >+ * <tr><td>3</td><td>Uppercase letter (A, B, C) </td></tr> >+ * <tr><td>4</td><td>Lowercase letter (a, b, c) </td></tr> >+ * <tr><td>5</td><td>Ordinal number (1st, 2nd, 3rd) </td></tr> >+ * <tr><td>6</td><td>Cardinal text number (One, Two Three) </td></tr> >+ * <tr><td>7</td><td>Ordinal text number (First, Second, Third) </td></tr> >+ * <tr><td>10</td><td>Kanji numbering without the digit character (dbnum1). </td></tr> >+ * <tr><td>11</td><td>Kanji numbering with the digit character (dbnum2). </td></tr> >+ * <tr><td>12</td><td>46 phonetic Katakana characters in "aiueo" order (aiueo). </td></tr> >+ * <tr><td>13</td><td>46 phonetic katakana characters in "iroha" order (iroha). </td></tr> >+ * <tr><td>14</td><td>Double Byte character </td></tr> >+ * <tr><td>15</td><td>Single Byte character </td></tr> >+ * <tr><td>16</td><td>Kanji numbering 3 (dbnum3). </td></tr> >+ * <tr><td>17</td><td>Kanji numbering 4 (dbnum4). </td></tr> >+ * <tr><td>18</td><td>Circle numbering (circlenum). </td></tr> >+ * <tr><td>19</td><td>Double-byte Arabic numbering </td></tr> >+ * <tr><td>20</td><td>46 phonetic double-byte Katakana characters (*aiueo*dbchar). </td></tr> >+ * <tr><td>21</td><td>46 phonetic double-byte katakana characters (*iroha*dbchar). </td></tr> >+ * <tr><td>22</td><td>Arabic with leading zero (01, 02, 03, ..., 10, 11) </td></tr> >+ * <tr><td>23</td><td>Bullet (no number at all) </td></tr> >+ * <tr><td>24</td><td>Korean numbering 2 (ganada). </td></tr> >+ * <tr><td>25</td><td>Korean numbering 1 (chosung). </td></tr> >+ * <tr><td>26</td><td>Chinese numbering 1 (gb1). </td></tr> >+ * <tr><td>27</td><td>Chinese numbering 2 (gb2). </td></tr> >+ * <tr><td>28</td><td>Chinese numbering 3 (gb3). </td></tr> >+ * <tr><td>29</td><td>Chinese numbering 4 (gb4). </td></tr> >+ * <tr><td>30</td><td>Chinese Zodiac numbering 1 </td></tr> >+ * <tr><td>31</td><td>Chinese Zodiac numbering 2 </td></tr> >+ * <tr><td>32</td><td>Chinese Zodiac numbering 3 </td></tr> >+ * <tr><td>33</td><td>Taiwanese double-byte numbering 1 </td></tr> >+ * <tr><td>34</td><td>Taiwanese double-byte numbering 2 </td></tr> >+ * <tr><td>35</td><td>Taiwanese double-byte numbering 3 </td></tr> >+ * <tr><td>36</td><td>Taiwanese double-byte numbering 4 </td></tr> >+ * <tr><td>37</td><td>Chinese double-byte numbering 1 </td></tr> >+ * <tr><td>38</td><td>Chinese double-byte numbering 2 </td></tr> >+ * <tr><td>39</td><td>Chinese double-byte numbering 3 </td></tr> >+ * <tr><td>40</td><td>Chinese double-byte numbering 4 </td></tr> >+ * <tr><td>41</td><td>Korean double-byte numbering 1 </td></tr> >+ * <tr><td>42</td><td>Korean double-byte numbering 2 </td></tr> >+ * <tr><td>43</td><td>Korean double-byte numbering 3 </td></tr> >+ * <tr><td>44</td><td>Korean double-byte numbering 4 </td></tr> >+ * <tr><td>45</td><td>Hebrew non-standard decimal </td></tr> >+ * <tr><td>46</td><td>Arabic Alif Ba Tah </td></tr> >+ * <tr><td>47</td><td>Hebrew Biblical standard </td></tr> >+ * <tr><td>48</td><td>Arabic Abjad style </td></tr> >+ * <tr><td>49</td><td>Hindi vowels </td></tr> >+ * <tr><td>50</td><td>Hindi consonants </td></tr> >+ * <tr><td>51</td><td>Hindi numbers </td></tr> >+ * <tr><td>52</td><td>Hindi descriptive (cardinals) </td></tr> >+ * <tr><td>53</td><td>Thai letters </td></tr> >+ * <tr><td>54</td><td>Thai numbers </td></tr> >+ * <tr><td>55</td><td>Thai descriptive (cardinals </td></tr> >+ * <tr><td>56</td><td>Vietnamese descriptive (cardinals) </td></tr> >+ * <tr><td>57</td><td>Page Number format - # - </td></tr> >+ * <tr><td>58</td><td>Lower case Russian alphabet </td></tr> >+ * <tr><td>59</td><td>Upper case Russian alphabet </td></tr> >+ * </table> >+ */ > public int getNumberFormat() > { > return _nfc; >@@ -162,8 +227,11 @@ > public void setNumberProperties(byte[] grpprl) > { > _grpprlChpx = grpprl; >- > } >+ >+ public byte[] getNumberProperties() { >+ return _grpprlChpx; >+ } > > public void setLevelProperties(byte[] grpprl) > {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 50052
:
26133
|
26134
|
26139