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 |