22#include <com/sun/star/i18n/NativeNumberMode.hpp>
23#include <com/sun/star/lang/IllegalArgumentException.hpp>
24#include <com/sun/star/style/NumberingType.hpp>
25#include <com/sun/star/beans/PropertyValue.hpp>
26#include <com/sun/star/configuration/theDefaultProvider.hpp>
27#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
28#include <osl/diagnose.h>
37#define C_CYR_A "\xD0\x90"
38#define C_CYR_B "\xD0\x91"
40#define S_CYR_A "\xD0\xB0"
41#define S_CYR_B "\xD0\xB1"
44#define C_GR_A "\xCE\x91"
45#define C_GR_B "\xCE\x92"
47#define S_GR_A "\xCE\xB1"
48#define S_GR_B "\xCE\xB2"
51#define S_HE_ALEPH "\xD7\x90"
52#define S_HE_YOD "\xD7\x99"
53#define S_HE_QOF "\xD7\xA7"
56#define S_AR_ONE "\xd9\xa1"
57#define S_AR_TWO "\xd9\xa2"
58#define S_AR_THREE "\xd9\xa3"
61#define S_FA_ONE "\xDB\xB1"
62#define S_FA_TWO "\xDB\xB2"
63#define S_FA_THREE "\xDB\xB3"
66#define S_HI_ONE "\xE0\xA5\xA7"
67#define S_HI_TWO "\xE0\xA5\xA8"
68#define S_HI_THREE "\xE0\xA5\xA9"
71#define S_DAGGER "\xE2\x80\xA0"
72#define S_DBL_DAGGER "\xE2\x80\xA1"
73#define S_SECTION "\xC2\xA7"
76#include <rtl/ustring.hxx>
77#include <rtl/ustrbuf.hxx>
89 0x0623, 0x0628, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E,
90 0x062F, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635,
91 0x0636, 0x0637, 0x0638, 0x0639, 0x063A, 0x0641, 0x0642,
92 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649
96 0x0627, 0x0628, 0x062c, 0x062f, 0x0647, 0x0648, 0x0632, 0x062d,
97 0x0637, 0x064a, 0x0643, 0x0644, 0x0645, 0x0646, 0x0633, 0x0639,
98 0x0641, 0x0635, 0x0642, 0x0631, 0x0634, 0x062a, 0x062b, 0x062e,
99 0x0630, 0x0636, 0x0638, 0x063a
103 0x0E01, 0x0E02, 0x0E04, 0x0E07,
104 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F,
105 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17,
106 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F,
107 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
108 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E
112 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
113 0x05D8, 0x05D9, 0x05DB, 0x05DC, 0x05DE, 0x05E0, 0x05E1, 0x05E2,
114 0x05E4, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA
118 0x0915, 0x0916, 0x0917, 0x0918, 0x0919, 0x091A, 0x091B, 0x091C,
119 0x091D, 0x091E, 0x091F, 0x0920, 0x0921, 0x0922, 0x0923, 0x0924,
120 0x0925, 0x0926, 0x0927, 0x0928, 0x092A, 0x092B, 0x092C, 0x092D,
121 0x092E, 0x092F, 0x0930, 0x0932, 0x0935, 0x0936, 0x0937, 0x0938,
126 0x1780, 0x1781, 0x1782, 0x1783, 0x1784, 0x1785, 0x1786, 0x1787,
127 0x1788, 0x1789, 0x178A, 0x178B, 0x178C, 0x178D, 0x178E, 0x178F,
128 0x1790, 0x1791, 0x1792, 0x1793, 0x1794, 0x1795, 0x1796, 0x1797,
129 0x1798, 0x1799, 0x179A, 0x179B, 0x179C, 0x179F,
130 0x17A0, 0x17A1, 0x17A2
134 0x0E81, 0x0E82, 0x0E84, 0x0E87, 0x0E88, 0x0E8A, 0x0E8D, 0x0E94,
135 0x0E95, 0x0E96, 0x0E97, 0x0E99, 0x0E9A, 0x0E9B, 0x0E9C,
136 0x0E9D, 0x0E9E, 0x0E9F, 0x0EA1, 0x0EA2, 0x0EA3, 0x0EA5, 0x0EA7,
137 0x0EAA, 0x0EAB, 0x0EAD, 0x0EAE, 0x0EAF, 0x0EAE, 0x0EDC, 0x0EDD
141 0x0F40, 0x0F41, 0x0F42, 0x0F44, 0x0F45, 0x0F46, 0x0F47, 0x0F49,
142 0x0F4F, 0x0F50, 0x0F51, 0x0F53, 0x0F54, 0x0F55, 0x0F56, 0x0F58,
143 0x0F59, 0x0F5A, 0x0F5B, 0x0F5D, 0x0F5E, 0x0F5F, 0x0F60, 0x0F61,
144 0x0F62, 0x0F63, 0x0F64, 0x0F66, 0x0F67, 0x0F68
148 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006, 0x1007,
149 0x1008,0x100A, 0x100B, 0x100C, 0x100D, 0x100E, 0x100F,
150 0x1010, 0x1011, 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017,
151 0x1018, 0x1019, 0x101A, 0x101B, 0x101C, 0x101D, 0x101E, 0x101F,
157 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418,
158 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422,
159 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042E,
165 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438,
166 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442,
167 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044E,
173 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
174 0x0418, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420,
175 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428,
176 0x0429, 0x042B, 0x042D, 0x042E, 0x042F
181 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
182 0x0438, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440,
183 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
184 0x0449, 0x044B, 0x044D, 0x044E, 0x044F
189 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0402, 0x0415, 0x0416,
190 0x0417, 0x0418, 0x0408, 0x041A, 0x041B, 0x0409, 0x041C, 0x041D,
191 0x040A, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x040B, 0x0423,
192 0x0424, 0x0425, 0x0426, 0x0427, 0x040F, 0x0428
197 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0452, 0x0435, 0x0436,
198 0x0437, 0x0438, 0x0458, 0x043A, 0x043B, 0x0459, 0x043C, 0x043D,
199 0x045A, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x045B, 0x0443,
200 0x0444, 0x0445, 0x0446, 0x0447, 0x045F, 0x0448
205 0x0410, 0x0411, 0x0412, 0x0413, 0x0490, 0x0414, 0x0415, 0x0404,
206 0x0416, 0x0417, 0x0418, 0x0406, 0x0407, 0x0419, 0x041A, 0x041B,
207 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423,
208 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042C, 0x042E,
214 0x0430, 0x0431, 0x0432, 0x0433, 0x0491, 0x0434, 0x0435, 0x0454,
215 0x0436, 0x0437, 0x0438, 0x0456, 0x0457, 0x0439, 0x043A, 0x043B,
216 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443,
217 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044C, 0x044E,
222 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x03DB, 0x0396, 0x0397, 0x0398,
223 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03DF,
224 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03E0
228 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03DB, 0x03B6, 0x03B7, 0x03B8,
229 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03DF,
230 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03E1
234 0x0622, 0x0628, 0x067E, 0x062A, 0x062B, 0x062C, 0x0686, 0x062D,
235 0x062E, 0x062F, 0x0630, 0x0631, 0x0632, 0x0698, 0x0633, 0x0634,
236 0x0635, 0x0636, 0x0637, 0x0638, 0x0639, 0x0640, 0x0641, 0x0642,
237 0x06A9, 0x06AF, 0x0644, 0x0645, 0x0646, 0x0648, 0x0647, 0x06CC
241 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
242 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52,
243 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A
247 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
248 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72,
249 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A
253 0x002a, 0x2020, 0x2021, 0x00a7
262 {0x0686, 0x0647, 0x0627, 0x0631, 0},
263 {0x067e, 0x0646, 0x062c, 0},
265 {0x0647, 0x0641, 0x062a, 0},
266 {0x0647, 0x0634, 0x062a, 0},
269 {0x06cc, 0x0627, 0x0632, 0x062f, 0x0647, 0},
270 {0x062f, 0x0648, 0x0627, 0x0632, 0x062f, 0x0647, 0},
271 {0x0633, 0x06cc, 0x0632, 0x062f, 0x0647, 0},
272 {0x0686, 0x0647, 0x0627, 0x0631, 0x062f, 0x0647, 0},
273 {0x067e, 0x0627, 0x0646, 0x0632, 0x062f, 0x0647, 0},
274 {0x0634, 0x0627, 0x0646, 0x0632, 0x062f, 0x0647, 0},
275 {0x0647, 0x0641, 0x062f, 0x0647, 0},
276 {0x0647, 0x062c, 0x062f, 0x0647, 0},
277 {0x0646, 0x0648, 0x0632, 0x062f, 0x0647, 0}
281 {0x0628, 0x06cc, 0x0633, 0x062a, 0},
283 {0x0686, 0x0647, 0x0644, 0},
284 {0x067e, 0x0646, 0x062c, 0x0627, 0x0647, 0},
285 {0x0634, 0x0635, 0x062a, 0},
286 {0x0647, 0x0641, 0x062a, 0x0627, 0x062f, 0},
287 {0x0647, 0x0634, 0x062a, 0x0627, 0x062f, 0},
288 {0x0646, 0x0648, 0x062f, 0}
293 {0x062f, 0x0648, 0x06cc, 0x0633, 0x062a, 0},
294 {0x0633, 0x06cc, 0x0635, 0x062f, 0},
295 {0x0686, 0x0647, 0x0627, 0x0631, 0x0635, 0x062f, 0},
296 {0x067e, 0x0627, 0x0646, 0x0635, 0x062f, 0},
297 {0x0634, 0x0635, 0x062f, 0},
298 {0x0647, 0x0641, 0x062a, 0x0635, 0x062f, 0},
299 {0x0647, 0x0634, 0x062a, 0x0635, 0x062f, 0},
300 {0x0646, 0x0647, 0x0635, 0x062f, 0}
304 {0x0647, 0x0632, 0x0627, 0x0631, 0},
305 {0x0645, 0x06cc, 0x0644, 0x06cc, 0x0648, 0x0646, 0},
306 {0x0645, 0x06cc, 0x0644, 0x06cc, 0x0627, 0x0631, 0x062f, 0}
359 static const char coRomanArr[] =
"MDCLXVI--";
360 const char* cRomanStr = coRomanArr;
361 sal_uInt16 nMask = 1000;
362 sal_uInt32 nOver1000 =
n / nMask;
363 n -= ( nOver1000 * nMask );
367 sTmp.append(*coRomanArr);
378 sTmp.append(*(cRomanStr-1));
384 case 3: sTmp.append(*cRomanStr); [[fallthrough]];
385 case 2: sTmp.append(*cRomanStr); [[fallthrough]];
386 case 1: sTmp.append(*cRomanStr);
break;
387 case 4: sTmp.append(OUStringChar(*cRomanStr) + OUStringChar(*(cRomanStr-nDiff)));
break;
388 case 5: sTmp.append(*(cRomanStr-nDiff));
break;
394 return sTmp.makeStringAndClear();
408 s += OUStringChar(
table[
n % tableSize ] );
418 int repeat_count =
n / tableSize + 1;
420 for(
int i=0;
i<repeat_count;
i++ )
421 s += OUStringChar(
table[
n%tableSize ] );
432 lcl_formatChars2( table_capital, table_small, tableSize, (
n-tableSize)/tableSize, s );
433 s += OUStringChar( table_small[
n % tableSize ] );
435 s += OUStringChar( table_capital[
n % tableSize ] );
444 int repeat_count =
n / tableSize + 1;
445 s += OUStringChar( table_capital[
n%tableSize ] );
447 for(
int i=1;
i<repeat_count;
i++ )
448 s += OUStringChar( table_small[
n%tableSize ] );
462 OUStringBuffer aTemp(64);
463 static constexpr OUStringLiteral asPersianWord_conjunction_data =
u" \u0648 ";
464 OUString asPersianWord_conjunction( asPersianWord_conjunction_data );
465 unsigned char nSection = 0;
467 while (
int nPart = nNumber % 1000)
472 throw IllegalArgumentException();
477 if ((nDigit = nPart % 100) < 20)
479 if (!aTemp.isEmpty())
480 aTemp.insert( 0,
u' ');
485 if ((nDigit = nPart % 10) != 0)
487 if (!aTemp.isEmpty())
488 aTemp.insert( 0, asPersianWord_conjunction);
491 if ((nDigit = (nPart / 10) % 10) != 0)
493 if (!aTemp.isEmpty())
494 aTemp.insert( 0, asPersianWord_conjunction);
499 if ((nDigit = nPart / 100) != 0)
501 if (!aTemp.isEmpty())
502 aTemp.insert( 0, asPersianWord_conjunction);
513 OUStringBuffer aTemp(64);
514 int digit1 = nNumber % 10;
515 int digit2 = nNumber / 10;
526#define STIGMA u'\x03DB'
527#define LEFT_KERAIA u'\x0375'
528#define MYRIAD_SYM u'\x039C'
530#define SIGMA_OFFSET 19
544 throw IllegalArgumentException();
548 for (
int v =
n;
v > 0;
v /= 10,
i++) {
565 return sb.makeStringAndClear();
575 if (
n > divisor - 1) {
584 for (
int i = 0;
i < myriadPower;
i++)
603 return s ==
u" " || (!s.empty() && s[0]==0);
612 OUString aRet = OUString::number(nNumber);
613 sal_Int32 nDiff = nLimit - aRet.getLength();
622 for (sal_Int32
i = 0;
i < nDiff; ++
i)
627 return aBuffer.makeStringAndClear();
635 [&
name](
const beans::PropertyValue& rProp) { return rProp.Name.equalsAscii(name); });
638 throw IllegalArgumentException();
644 const Locale& aLocale )
663 sal_Int16 natNum = 0;
664 sal_Int16 tableSize = 0;
666 bool bRecycleSymbol =
false;
667 OUString sNatNumParams;
671 sal_Int16 numType = -1;
673 sal_Int32 number = -1;
680 if (prop.Name ==
"Prefix")
682 else if (prop.Name ==
"Suffix")
683 prop.Value >>= suffix;
684 else if (prop.Name ==
"NumberingType")
685 prop.Value >>= numType;
686 else if (prop.Name ==
"Value")
687 prop.Value >>= number;
691 throw IllegalArgumentException();
700 using namespace style::NumberingType;
703 case CHARS_UPPER_LETTER:
706 case CHARS_LOWER_LETTER:
710 natNum = NativeNumberMode::NATNUM12;
711 sNatNumParams =
"capitalize ordinal-number";
715 natNum = NativeNumberMode::NATNUM12;
716 sNatNumParams =
"capitalize";
720 natNum = NativeNumberMode::NATNUM12;
721 sNatNumParams =
"capitalize ordinal";
731 result += OUString::number( number );
738 case PAGE_DESCRIPTOR:
741 throw IllegalArgumentException();
742 case CHARS_UPPER_LETTER_N:
745 case CHARS_LOWER_LETTER_N:
748 case TRANSLITERATION:
750 const OUString &tmp = OUString::number( number );
751 OUString transliteration;
755 translit->loadModuleByImplName(transliteration, aLocale);
756 result +=
translit->transliterateString2String(tmp, 0, tmp.getLength());
759 result += OUString::number( number );
764 case NATIVE_NUMBERING:
765 natNum = NativeNumberMode::NATNUM1;
768 case FULLWIDTH_ARABIC:
769 natNum = NativeNumberMode::NATNUM3;
772 case NUMBER_LOWER_ZH:
773 natNum = NativeNumberMode::NATNUM12;
774 locale.Language =
"zh";
776 case NUMBER_UPPER_ZH:
777 natNum = NativeNumberMode::NATNUM5;
778 locale.Language =
"zh";
780 case NUMBER_UPPER_ZH_TW:
781 natNum = NativeNumberMode::NATNUM5;
782 locale.Language =
"zh";
783 locale.Country =
"TW";
785 case NUMBER_TRADITIONAL_JA:
786 natNum = NativeNumberMode::NATNUM8;
787 locale.Language =
"ja";
789 case NUMBER_UPPER_KO:
790 natNum = NativeNumberMode::NATNUM8;
791 locale.Language =
"ko";
793 case NUMBER_HANGUL_KO:
794 natNum = NativeNumberMode::NATNUM11;
795 locale.Language =
"ko";
797 case NUMBER_DIGITAL_KO:
798 natNum = NativeNumberMode::NATNUM9;
799 locale.Language =
"ko";
801 case NUMBER_DIGITAL2_KO:
802 natNum = NativeNumberMode::NATNUM1;
803 locale.Language =
"ko";
805 case NUMBER_LEGAL_KO:
806 if (number < 1 || number >= 100)
808 natNum = NativeNumberMode::NATNUM11;
809 locale.Language =
"ko";
829 case AIU_FULLWIDTH_JA:
832 bRecycleSymbol =
true;
834 case AIU_HALFWIDTH_JA:
837 bRecycleSymbol =
true;
839 case IROHA_FULLWIDTH_JA:
842 bRecycleSymbol =
true;
844 case IROHA_HALFWIDTH_JA:
847 bRecycleSymbol =
true;
852 bRecycleSymbol =
true;
854 case HANGUL_SYLLABLE_KO:
857 bRecycleSymbol =
true;
859 case HANGUL_CIRCLED_JAMO_KO:
862 bRecycleSymbol =
true;
864 case HANGUL_CIRCLED_SYLLABLE_KO:
867 bRecycleSymbol =
true;
872 case CHARS_ARABIC_ABJAD:
875 case NUMBER_ARABIC_INDIC:
876 natNum = NativeNumberMode::NATNUM1;
877 locale.Language =
"ar";
879 case NUMBER_EAST_ARABIC_INDIC:
880 natNum = NativeNumberMode::NATNUM1;
881 locale.Language =
"fa";
883 case NUMBER_INDIC_DEVANAGARI:
884 natNum = NativeNumberMode::NATNUM1;
885 locale.Language =
"hi";
894 natNum = NativeNumberMode::NATNUM1;
895 locale.Language =
"he";
912 case CHARS_CYRILLIC_UPPER_LETTER_BG:
918 case CHARS_CYRILLIC_LOWER_LETTER_BG:
923 case CHARS_CYRILLIC_UPPER_LETTER_N_BG:
929 case CHARS_CYRILLIC_LOWER_LETTER_N_BG:
934 case CHARS_CYRILLIC_UPPER_LETTER_RU:
940 case CHARS_CYRILLIC_LOWER_LETTER_RU:
945 case CHARS_CYRILLIC_UPPER_LETTER_N_RU:
951 case CHARS_CYRILLIC_LOWER_LETTER_N_RU:
956 case CHARS_CYRILLIC_UPPER_LETTER_SR:
962 case CHARS_CYRILLIC_LOWER_LETTER_SR:
967 case CHARS_CYRILLIC_UPPER_LETTER_N_SR:
973 case CHARS_CYRILLIC_LOWER_LETTER_N_SR:
979 case CHARS_CYRILLIC_UPPER_LETTER_UK:
985 case CHARS_CYRILLIC_LOWER_LETTER_UK:
990 case CHARS_CYRILLIC_UPPER_LETTER_N_UK:
996 case CHARS_CYRILLIC_LOWER_LETTER_N_UK:
1002 case CHARS_GREEK_LOWER_LETTER:
1006 case CHARS_GREEK_UPPER_LETTER:
1014 case CHARS_PERSIAN_WORD:
1018 case SYMBOL_CHICAGO:
1039 natNum = NativeNumberMode::NATNUM12;
1040 locale.Language =
"hu-Hung";
1045 throw IllegalArgumentException();
1051 result +=
mxNatNum->getNativeNumberStringParams(OUString::number(number), locale,
1052 natNum, sNatNumParams);
1053 }
else if (tableSize) {
1054 if ( number > tableSize && !bRecycleSymbol)
1055 result += OUString::number( number);
1057 result += OUStringChar(
table[--number % tableSize]);
1066#define LANG_ALL (1 << 0)
1067#define LANG_CJK (1 << 1)
1068#define LANG_CTL (1 << 2)
1080 {style::NumberingType::CHARS_UPPER_LETTER,
"A",
LANG_ALL},
1081 {style::NumberingType::CHARS_LOWER_LETTER,
"a",
LANG_ALL},
1082 {style::NumberingType::ROMAN_UPPER,
"I",
LANG_ALL},
1083 {style::NumberingType::ROMAN_LOWER,
"i",
LANG_ALL},
1084 {style::NumberingType::ARABIC,
"1",
LANG_ALL},
1085 {style::NumberingType::NUMBER_NONE,
"''",
LANG_ALL},
1086 {style::NumberingType::CHAR_SPECIAL,
"Bullet",
LANG_ALL},
1087 {style::NumberingType::PAGE_DESCRIPTOR,
"Page",
LANG_ALL},
1088 {style::NumberingType::BITMAP,
"Bitmap",
LANG_ALL},
1090 {style::NumberingType::TEXT_NUMBER,
"1st",
LANG_ALL},
1091 {style::NumberingType::TEXT_CARDINAL,
"One",
LANG_ALL},
1092 {style::NumberingType::TEXT_ORDINAL,
"First",
LANG_ALL},
1093 {style::NumberingType::CHARS_UPPER_LETTER_N,
"AAA",
LANG_ALL},
1094 {style::NumberingType::CHARS_LOWER_LETTER_N,
"aaa",
LANG_ALL},
1095 {style::NumberingType::NATIVE_NUMBERING,
"Native Numbering",
LANG_CJK|
LANG_CTL},
1096 {style::NumberingType::FULLWIDTH_ARABIC,
nullptr,
LANG_CJK},
1097 {style::NumberingType::CIRCLE_NUMBER,
nullptr,
LANG_CJK},
1100 {style::NumberingType::NUMBER_LOWER_ZH,
"一, 二, 三, ...",
LANG_CJK},
1101 {style::NumberingType::NUMBER_UPPER_ZH,
nullptr,
LANG_CJK},
1102 {style::NumberingType::NUMBER_UPPER_ZH_TW,
nullptr,
LANG_CJK},
1103 {style::NumberingType::TIAN_GAN_ZH,
nullptr,
LANG_CJK},
1104 {style::NumberingType::DI_ZI_ZH,
nullptr,
LANG_CJK},
1105 {style::NumberingType::NUMBER_TRADITIONAL_JA,
nullptr,
LANG_CJK},
1106 {style::NumberingType::AIU_FULLWIDTH_JA,
nullptr,
LANG_CJK},
1107 {style::NumberingType::AIU_HALFWIDTH_JA,
nullptr,
LANG_CJK},
1108 {style::NumberingType::IROHA_FULLWIDTH_JA,
nullptr,
LANG_CJK},
1109 {style::NumberingType::IROHA_HALFWIDTH_JA,
nullptr,
LANG_CJK},
1110 {style::NumberingType::NUMBER_UPPER_KO,
nullptr,
LANG_CJK},
1111 {style::NumberingType::NUMBER_HANGUL_KO,
nullptr,
LANG_CJK},
1112 {style::NumberingType::HANGUL_JAMO_KO,
nullptr,
LANG_CJK},
1113 {style::NumberingType::HANGUL_SYLLABLE_KO,
nullptr,
LANG_CJK},
1114 {style::NumberingType::HANGUL_CIRCLED_JAMO_KO,
nullptr,
LANG_CJK},
1115 {style::NumberingType::HANGUL_CIRCLED_SYLLABLE_KO,
nullptr,
LANG_CJK},
1116 {style::NumberingType::NUMBER_LEGAL_KO,
nullptr,
LANG_CJK},
1117 {style::NumberingType::NUMBER_DIGITAL_KO,
nullptr,
LANG_CJK},
1118 {style::NumberingType::NUMBER_DIGITAL2_KO,
nullptr,
LANG_CJK},
1119 {style::NumberingType::CHARS_ARABIC,
nullptr,
LANG_CTL},
1120 {style::NumberingType::CHARS_ARABIC_ABJAD,
nullptr,
LANG_CTL},
1124 {style::NumberingType::CHARS_THAI,
nullptr,
LANG_CTL},
1125 {style::NumberingType::CHARS_HEBREW,
nullptr,
LANG_CTL},
1127 {style::NumberingType::CHARS_NEPALI,
nullptr,
LANG_CTL},
1128 {style::NumberingType::CHARS_KHMER,
nullptr,
LANG_CTL},
1129 {style::NumberingType::CHARS_LAO,
nullptr,
LANG_CTL},
1130 {style::NumberingType::CHARS_MYANMAR,
nullptr,
LANG_CTL},
1131 {style::NumberingType::CHARS_TIBETAN,
nullptr,
LANG_CTL},
1148 {style::NumberingType::CHARS_PERSIAN,
nullptr,
LANG_CTL},
1149 {style::NumberingType::CHARS_PERSIAN_WORD,
nullptr,
LANG_CTL},
1150 {style::NumberingType::SZEKELY_ROVAS,
nullptr,
LANG_CTL},
1153 {style::NumberingType::ARABIC_ZERO,
"01, 02, 03, ...",
LANG_ALL},
1154 {style::NumberingType::ARABIC_ZERO3,
"001, 002, 003, ...",
LANG_ALL},
1155 {style::NumberingType::ARABIC_ZERO4,
"0001, 0002, 0003, ...",
LANG_ALL},
1156 {style::NumberingType::ARABIC_ZERO5,
"00001, 00002, 00003, ...",
LANG_ALL},
1169 Locale aLocale(
"en", OUString(), OUString());
1171 auto aPropertiesRange = asNonConstRange(
aProperties);
1172 aPropertiesRange[0].Name =
"NumberingType";
1174 aPropertiesRange[1].Name =
"Value";
1175 for (sal_Int32 j = 1; j <= 3; j++) {
1176 aPropertiesRange[1].Value <<= j;
1186 case css::style::NumberingType::NUMBER_DIGITAL_KO:
1188 result.append(
" (ko-x-digital)");
1190 case css::style::NumberingType::NUMBER_DIGITAL2_KO:
1197 return result.makeStringAndClear();
1206 configuration::theDefaultProvider::get(
m_xContext);
1208 if (! xConfigProvider.is())
1213 {
"nodepath",
uno::Any(OUString(
"/org.openoffice.Office.Common/I18N"))}
1217 "com.sun.star.configuration.ConfigurationAccess", aArgs);
1224 bool enabled =
false;
1226 aEnabled >>= enabled;
1234 sal_Int16* pArray = aRet.getArray();
1252 return it->second->nType;
1286 return "com.sun.star.text.DefaultNumberingProvider";
1302extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1304 css::uno::XComponentContext *context,
1305 css::uno::Sequence<css::uno::Any>
const &)
Reference< XComponentContext > m_xContext
PropertiesInfo aProperties
std::map< OUString, const Supported_NumberingType * > maSupportedTypesCache
virtual css::uno::Sequence< sal_Int16 > SAL_CALL getSupportedNumberingTypes() override
virtual OUString SAL_CALL getNumberingIdentifier(sal_Int16 NumberingType) override
bool isScriptFlagEnabled(const OUString &aName)
virtual sal_Bool SAL_CALL hasNumberingType(const OUString &NumberingIdentifier) override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
css::uno::Reference< css::uno::XComponentContext > m_xContext
css::uno::Reference< css::container::XHierarchicalNameAccess > xHierarchicalNameAccess
DefaultNumberingProvider(const css::uno::Reference< css::uno::XComponentContext > &rxContext)
virtual sal_Int16 SAL_CALL getNumberingType(const OUString &NumberingIdentifier) override
OUString makeNumberingIdentifier(sal_Int16 index)
virtual ~DefaultNumberingProvider() override
rtl::Reference< TransliterationImpl > translit
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
rtl::Reference< NativeNumberSupplierService > mxNatNum
virtual css::uno::Sequence< css::uno::Reference< css::container::XIndexAccess > > SAL_CALL getDefaultOutlineNumberings(const css::lang::Locale &aLocale) override
virtual OUString SAL_CALL makeNumberingString(const css::uno::Sequence< css::beans::PropertyValue > &aProperties, const css::lang::Locale &aLocale) override
virtual OUString SAL_CALL getImplementationName() override
virtual css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > SAL_CALL getDefaultContinuousNumberingLevels(const css::lang::Locale &aLocale) override
static rtl::Reference< LocaleDataImpl > get()
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_text_DefaultNumberingProvider_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
#define SAL_N_ELEMENTS(arr)
css::uno::Sequence< css::uno::Any > InitAnyPropertySequence(::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
Constant values shared between i18npool and, for example, the number formatter.
static void lcl_formatChars1(const sal_Unicode table[], int tableSize, int n, OUString &s)
const sal_Unicode lowerLetter[]
const sal_Unicode table_PersianWord_decade2[][6]
const sal_Unicode table_CyrillicUpperLetter_uk[]
const sal_Unicode table_PersianWord_decadeX[][8]
const sal_Unicode table_CyrillicLowerLetter_sr[]
const sal_Unicode table_HangulCircledJamo_ko[]
const sal_Unicode table_CyrillicLowerLetter_ru[]
const Supported_NumberingType aSupportedTypes[]
const sal_Unicode table_Alphabet_my[]
static void lcl_formatChars3(const sal_Unicode table_capital[], const sal_Unicode table_small[], int tableSize, int n, OUString &s)
const sal_Unicode table_HangulCircledSyllable_ko[]
const sal_Unicode table_Alphabet_fa[]
const sal_Unicode table_TianGan_zh[]
const sal_Unicode table_CyrillicUpperLetter_ru[]
const sal_Unicode table_GreekUpperLetter[]
const sal_Unicode table_CyrillicLowerLetter_uk[]
const sal_Unicode table_IROHAFullWidth_ja_JP[]
static bool should_ignore(std::u16string_view s)
const sal_Unicode table_AIUHalfWidth_ja_JP[]
const sal_Unicode table_Alphabet_lo[]
static OUString toRoman(sal_Int32 n)
const sal_Unicode table_HangulJamo_ko[]
const sal_Unicode table_Alphabet_ar[]
const sal_Unicode table_KoreanLegalWord_decade1[][3]
const sal_Unicode table_PersianWord_decade1[][7]
const sal_Unicode table_KoreanLegalWord_decade2[][3]
const sal_Unicode table_AIUFullWidth_ja_JP[]
const sal_Unicode table_PersianWord_decade3[][7]
const sal_Int32 nSupported_NumberingTypes
const sal_Unicode table_Alphabet_he[]
static void lcl_formatChars(const sal_Unicode table[], int tableSize, int n, OUString &s)
const sal_Unicode table_Alphabet_km[]
const sal_Unicode table_Alphabet_ne[]
static void lcl_formatPersianWord(sal_Int32 nNumber, OUString &rsResult)
Returns number's representation in persian words up to 999999999999 respectively limited by sal_Int32...
const sal_Unicode table_HangulSyllable_ko[]
const sal_Unicode table_CyrillicUpperLetter_sr[]
const sal_Unicode table_CyrillicLowerLetter_bg[]
static void lcl_formatCharsGR(const sal_Unicode table[], int n, OUString &s)
static OUString lcl_formatArabicZero(sal_Int32 nNumber, sal_Int32 nLimit)
Turn nNumber into a string and pad the result to nLimit by inserting zero characters at the start.
static void lcl_formatChars2(const sal_Unicode table_capital[], const sal_Unicode table_small[], int tableSize, int n, OUString &s)
static OUString gr_smallNum(const sal_Unicode table[], int n)
const sal_Unicode table_Alphabet_dz[]
const sal_Unicode upperLetter[]
const sal_Unicode table_Alphabet_ar_abjad[]
const sal_Unicode table_IROHAHalfWidth_ja_JP[]
const sal_Unicode table_DiZi_zh[]
const sal_Unicode table_GreekLowerLetter[]
static void lcl_formatKoreanLegalWord(sal_Int32 nNumber, OUString &rsResult)
const sal_Unicode table_Alphabet_th[]
const sal_Unicode table_CircledNumber[]
const sal_Unicode table_Chicago[]
const sal_Unicode table_CyrillicUpperLetter_bg[]
static Any getPropertyByName(const Sequence< beans::PropertyValue > &aProperties, const char *name)
Supported_NumberingType(sal_Int16 nType_, const char *pSymbol, sal_Int16 opt)
std::unique_ptr< char[]> aBuffer