| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights | 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights |
| 5 * reserved. | 5 * reserved. |
| 6 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) | 6 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) |
| 7 * Copyright (C) 2010 Daniel Bates (dbates@intudata.com) | 7 * Copyright (C) 2010 Daniel Bates (dbates@intudata.com) |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 return toSymbolic(number, alphabet, size); | 167 return toSymbolic(number, alphabet, size); |
| 168 } | 168 } |
| 169 | 169 |
| 170 static void toHebrewUnder1000(int number, Vector<UChar>& letters) { | 170 static void toHebrewUnder1000(int number, Vector<UChar>& letters) { |
| 171 // FIXME: CSS3 mentions various refinements not implemented here. | 171 // FIXME: CSS3 mentions various refinements not implemented here. |
| 172 // FIXME: Should take a look at Mozilla's HebrewToText function (in | 172 // FIXME: Should take a look at Mozilla's HebrewToText function (in |
| 173 // nsBulletFrame). | 173 // nsBulletFrame). |
| 174 ASSERT(number >= 0 && number < 1000); | 174 ASSERT(number >= 0 && number < 1000); |
| 175 int fourHundreds = number / 400; | 175 int fourHundreds = number / 400; |
| 176 for (int i = 0; i < fourHundreds; i++) | 176 for (int i = 0; i < fourHundreds; i++) |
| 177 letters.prepend(1511 + 3); | 177 letters.push_front(1511 + 3); |
| 178 number %= 400; | 178 number %= 400; |
| 179 if (number / 100) | 179 if (number / 100) |
| 180 letters.prepend(1511 + (number / 100) - 1); | 180 letters.push_front(1511 + (number / 100) - 1); |
| 181 number %= 100; | 181 number %= 100; |
| 182 if (number == 15 || number == 16) { | 182 if (number == 15 || number == 16) { |
| 183 letters.prepend(1487 + 9); | 183 letters.push_front(1487 + 9); |
| 184 letters.prepend(1487 + number - 9); | 184 letters.push_front(1487 + number - 9); |
| 185 } else { | 185 } else { |
| 186 if (int tens = number / 10) { | 186 if (int tens = number / 10) { |
| 187 static const UChar hebrewTens[9] = {1497, 1499, 1500, 1502, 1504, | 187 static const UChar hebrewTens[9] = {1497, 1499, 1500, 1502, 1504, |
| 188 1505, 1506, 1508, 1510}; | 188 1505, 1506, 1508, 1510}; |
| 189 letters.prepend(hebrewTens[tens - 1]); | 189 letters.push_front(hebrewTens[tens - 1]); |
| 190 } | 190 } |
| 191 if (int ones = number % 10) | 191 if (int ones = number % 10) |
| 192 letters.prepend(1487 + ones); | 192 letters.push_front(1487 + ones); |
| 193 } | 193 } |
| 194 } | 194 } |
| 195 | 195 |
| 196 static String toHebrew(int number) { | 196 static String toHebrew(int number) { |
| 197 // FIXME: CSS3 mentions ways to make this work for much larger numbers. | 197 // FIXME: CSS3 mentions ways to make this work for much larger numbers. |
| 198 ASSERT(number >= 0 && number <= 999999); | 198 ASSERT(number >= 0 && number <= 999999); |
| 199 | 199 |
| 200 if (number == 0) { | 200 if (number == 0) { |
| 201 static const UChar hebrewZero[3] = {0x05E1, 0x05E4, 0x05D0}; | 201 static const UChar hebrewZero[3] = {0x05E1, 0x05E4, 0x05D0}; |
| 202 return String(hebrewZero, 3); | 202 return String(hebrewZero, 3); |
| 203 } | 203 } |
| 204 | 204 |
| 205 Vector<UChar> letters; | 205 Vector<UChar> letters; |
| 206 if (number > 999) { | 206 if (number > 999) { |
| 207 toHebrewUnder1000(number / 1000, letters); | 207 toHebrewUnder1000(number / 1000, letters); |
| 208 letters.prepend('\''); | 208 letters.push_front('\''); |
| 209 number = number % 1000; | 209 number = number % 1000; |
| 210 } | 210 } |
| 211 toHebrewUnder1000(number, letters); | 211 toHebrewUnder1000(number, letters); |
| 212 return String(letters); | 212 return String(letters); |
| 213 } | 213 } |
| 214 | 214 |
| 215 static int toArmenianUnder10000(int number, | 215 static int toArmenianUnder10000(int number, |
| 216 bool upper, | 216 bool upper, |
| 217 bool addCircumflex, | 217 bool addCircumflex, |
| 218 UChar letters[9]) { | 218 UChar letters[9]) { |
| (...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 934 return toHebrew(count); | 934 return toHebrew(count); |
| 935 } | 935 } |
| 936 | 936 |
| 937 ASSERT_NOT_REACHED(); | 937 ASSERT_NOT_REACHED(); |
| 938 return ""; | 938 return ""; |
| 939 } | 939 } |
| 940 | 940 |
| 941 } // namespace ListMarkerText | 941 } // namespace ListMarkerText |
| 942 | 942 |
| 943 } // namespace blink | 943 } // namespace blink |
| OLD | NEW |