Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <SwStyleNameMapper.hxx>
21 : #include <tools/resmgr.hxx>
22 : #include <poolfmt.hxx>
23 : #include <rcid.hrc>
24 : #ifdef _NEED_TO_DEBUG_MAPPING
25 : #include <stdlib.h>
26 : #endif
27 :
28 : extern ResMgr* pSwResMgr;
29 : // Initialise UI names to 0
30 : boost::ptr_vector<String> *SwStyleNameMapper::pTextUINameArray = 0,
31 : *SwStyleNameMapper::pListsUINameArray = 0,
32 : *SwStyleNameMapper::pExtraUINameArray = 0,
33 : *SwStyleNameMapper::pRegisterUINameArray = 0,
34 : *SwStyleNameMapper::pDocUINameArray = 0,
35 : *SwStyleNameMapper::pHTMLUINameArray = 0,
36 : *SwStyleNameMapper::pFrmFmtUINameArray = 0,
37 : *SwStyleNameMapper::pChrFmtUINameArray = 0,
38 : *SwStyleNameMapper::pHTMLChrFmtUINameArray = 0,
39 : *SwStyleNameMapper::pPageDescUINameArray = 0,
40 : *SwStyleNameMapper::pNumRuleUINameArray = 0,
41 :
42 : // Initialise programmatic names to 0
43 : *SwStyleNameMapper::pTextProgNameArray = 0,
44 : *SwStyleNameMapper::pListsProgNameArray = 0,
45 : *SwStyleNameMapper::pExtraProgNameArray = 0,
46 : *SwStyleNameMapper::pRegisterProgNameArray = 0,
47 : *SwStyleNameMapper::pDocProgNameArray = 0,
48 : *SwStyleNameMapper::pHTMLProgNameArray = 0,
49 : *SwStyleNameMapper::pFrmFmtProgNameArray = 0,
50 : *SwStyleNameMapper::pChrFmtProgNameArray = 0,
51 : *SwStyleNameMapper::pHTMLChrFmtProgNameArray = 0,
52 : *SwStyleNameMapper::pPageDescProgNameArray = 0,
53 : *SwStyleNameMapper::pNumRuleProgNameArray = 0;
54 :
55 : NameToIdHash *SwStyleNameMapper::pParaUIMap = 0,
56 : *SwStyleNameMapper::pCharUIMap = 0,
57 : *SwStyleNameMapper::pPageUIMap = 0,
58 : *SwStyleNameMapper::pFrameUIMap = 0,
59 : *SwStyleNameMapper::pNumRuleUIMap = 0,
60 :
61 : *SwStyleNameMapper::pParaProgMap = 0,
62 : *SwStyleNameMapper::pCharProgMap = 0,
63 : *SwStyleNameMapper::pPageProgMap = 0,
64 : *SwStyleNameMapper::pFrameProgMap = 0,
65 : *SwStyleNameMapper::pNumRuleProgMap = 0;
66 :
67 : // SwTableEntry so we can pass the length to the String CTOR
68 : struct SwTableEntry
69 : {
70 : sal_uInt8 nLength;
71 : const sal_Char *pChar;
72 : };
73 :
74 : #define ENTRY( s ) { sizeof (s)-1, s }
75 :
76 : // Hard coded Programmatic Name tables
77 : const struct SwTableEntry TextProgNameTable [] =
78 : {
79 : ENTRY( "Standard" ), // RES_POOLCOLL_STANDARD
80 : ENTRY( "Text body" ),
81 : ENTRY( "First line indent" ),
82 : ENTRY( "Hanging indent" ),
83 : ENTRY( "Text body indent" ),
84 : ENTRY( "Salutation" ),
85 : ENTRY( "Signature" ),
86 : ENTRY( "List Indent" ), // RES_POOLCOLL_CONFRONTATION
87 : ENTRY( "Marginalia" ),
88 : ENTRY( "Heading" ),
89 : ENTRY( "Heading 1" ),
90 : ENTRY( "Heading 2" ),
91 : ENTRY( "Heading 3" ),
92 : ENTRY( "Heading 4" ),
93 : ENTRY( "Heading 5" ),
94 : ENTRY( "Heading 6" ),
95 : ENTRY( "Heading 7" ),
96 : ENTRY( "Heading 8" ),
97 : ENTRY( "Heading 9" ),
98 : ENTRY( "Heading 10" ), // RES_POOLCOLL_TEXT_END
99 : { 0, NULL }
100 : };
101 :
102 : const struct SwTableEntry ListsProgNameTable [] =
103 : {
104 : ENTRY( "List" ), // STR_POCO_PRGM_NUMBUL_BASE
105 : ENTRY( "Numbering 1 Start" ), // STR_POCO_PRGM_NUM_LEVEL1S
106 : ENTRY( "Numbering 1" ),
107 : ENTRY( "Numbering 1 End" ),
108 : ENTRY( "Numbering 1 Cont." ),
109 : ENTRY( "Numbering 2 Start" ),
110 : ENTRY( "Numbering 2" ),
111 : ENTRY( "Numbering 2 End" ),
112 : ENTRY( "Numbering 2 Cont." ),
113 : ENTRY( "Numbering 3 Start" ),
114 : ENTRY( "Numbering 3" ),
115 : ENTRY( "Numbering 3 End" ),
116 : ENTRY( "Numbering 3 Cont." ),
117 : ENTRY( "Numbering 4 Start" ),
118 : ENTRY( "Numbering 4" ),
119 : ENTRY( "Numbering 4 End" ),
120 : ENTRY( "Numbering 4 Cont." ),
121 : ENTRY( "Numbering 5 Start" ),
122 : ENTRY( "Numbering 5" ),
123 : ENTRY( "Numbering 5 End" ),
124 : ENTRY( "Numbering 5 Cont." ),
125 : ENTRY( "List 1 Start" ),
126 : ENTRY( "List 1" ),
127 : ENTRY( "List 1 End" ),
128 : ENTRY( "List 1 Cont." ),
129 : ENTRY( "List 2 Start" ),
130 : ENTRY( "List 2" ),
131 : ENTRY( "List 2 End" ),
132 : ENTRY( "List 2 Cont." ),
133 : ENTRY( "List 3 Start" ),
134 : ENTRY( "List 3" ),
135 : ENTRY( "List 3 End" ),
136 : ENTRY( "List 3 Cont." ),
137 : ENTRY( "List 4 Start" ),
138 : ENTRY( "List 4" ),
139 : ENTRY( "List 4 End" ),
140 : ENTRY( "List 4 Cont." ),
141 : ENTRY( "List 5 Start" ),
142 : ENTRY( "List 5" ),
143 : ENTRY( "List 5 End" ),
144 : ENTRY( "List 5 Cont." ), // STR_POCO_PRGM_BUL_NONUM5
145 : { 0, NULL }
146 : };
147 :
148 : const struct SwTableEntry ExtraProgNameTable [] =
149 : {
150 : ENTRY( "Header" ), // RES_POOLCOLL_EXTRA_BEGIN
151 : ENTRY( "Header left" ),
152 : ENTRY( "Header right" ),
153 : ENTRY( "Footer" ),
154 : ENTRY( "Footer left" ),
155 : ENTRY( "Footer right" ),
156 : ENTRY( "Table Contents" ),
157 : ENTRY( "Table Heading" ),
158 : ENTRY( "Caption" ),
159 : ENTRY( "Illustration" ),
160 : ENTRY( "Table" ),
161 : ENTRY( "Text" ),
162 : ENTRY( "Frame contents" ),
163 : ENTRY( "Footnote" ),
164 : ENTRY( "Addressee" ),
165 : ENTRY( "Sender" ),
166 : ENTRY( "Endnote" ),
167 : ENTRY( "Drawing" ), // RES_POOLCOLL_LABEL_DRAWING
168 : { 0, NULL }
169 : };
170 :
171 : const struct SwTableEntry RegisterProgNameTable [] =
172 : {
173 : ENTRY( "Index" ), // STR_POCO_PRGM_REGISTER_BASE
174 : ENTRY( "Index Heading" ), // STR_POCO_PRGM_TOX_IDXH
175 : ENTRY( "Index 1" ),
176 : ENTRY( "Index 2" ),
177 : ENTRY( "Index 3" ),
178 : ENTRY( "Index Separator" ),
179 : ENTRY( "Contents Heading" ),
180 : ENTRY( "Contents 1" ),
181 : ENTRY( "Contents 2" ),
182 : ENTRY( "Contents 3" ),
183 : ENTRY( "Contents 4" ),
184 : ENTRY( "Contents 5" ),
185 : ENTRY( "User Index Heading" ),
186 : ENTRY( "User Index 1" ),
187 : ENTRY( "User Index 2" ),
188 : ENTRY( "User Index 3" ),
189 : ENTRY( "User Index 4" ),
190 : ENTRY( "User Index 5" ),
191 : ENTRY( "Contents 6" ),
192 : ENTRY( "Contents 7" ),
193 : ENTRY( "Contents 8" ),
194 : ENTRY( "Contents 9" ),
195 : ENTRY( "Contents 10" ),
196 : ENTRY( "Illustration Index Heading" ),
197 : ENTRY( "Illustration Index 1" ),
198 : ENTRY( "Object index heading" ),
199 : ENTRY( "Object index 1" ),
200 : ENTRY( "Table index heading" ),
201 : ENTRY( "Table index 1" ),
202 : ENTRY( "Bibliography Heading" ),
203 : ENTRY( "Bibliography 1" ),
204 : ENTRY( "User Index 6" ),
205 : ENTRY( "User Index 7" ),
206 : ENTRY( "User Index 8" ),
207 : ENTRY( "User Index 9" ),
208 : ENTRY( "User Index 10" ), // STR_POCO_PRGM_TOX_USER10
209 : { 0, NULL }
210 : };
211 :
212 : const struct SwTableEntry DocProgNameTable [] =
213 : {
214 : ENTRY( "Title" ), // STR_POCO_PRGM_DOC_TITEL
215 : ENTRY( "Subtitle" ),
216 : { 0, NULL }
217 : };
218 :
219 : const struct SwTableEntry HTMLProgNameTable [] =
220 : {
221 : ENTRY( "Quotations" ),
222 : ENTRY( "Preformatted Text" ),
223 : ENTRY( "Horizontal Line" ),
224 : ENTRY( "List Contents" ),
225 : ENTRY( "List Heading" ), // STR_POCO_PRGM_HTML_DT
226 : { 0, NULL }
227 : };
228 :
229 : const struct SwTableEntry FrmFmtProgNameTable [] =
230 : {
231 : ENTRY( "Frame" ), // RES_POOLFRM_FRAME
232 : ENTRY( "Graphics" ),
233 : ENTRY( "OLE" ),
234 : ENTRY( "Formula" ),
235 : ENTRY( "Marginalia" ),
236 : ENTRY( "Watermark" ),
237 : ENTRY( "Labels" ), // RES_POOLFRM_LABEL
238 : { 0, NULL }
239 : };
240 :
241 : const struct SwTableEntry ChrFmtProgNameTable [] =
242 : {
243 : ENTRY( "Footnote Symbol" ), // RES_POOLCHR_FOOTNOTE
244 : ENTRY( "Page Number" ),
245 : ENTRY( "Caption characters" ),
246 : ENTRY( "Drop Caps" ),
247 : ENTRY( "Numbering Symbols" ),
248 : ENTRY( "Bullet Symbols" ),
249 : ENTRY( "Internet link" ),
250 : ENTRY( "Visited Internet Link" ),
251 : ENTRY( "Placeholder" ),
252 : ENTRY( "Index Link" ),
253 : ENTRY( "Endnote Symbol" ),
254 : ENTRY( "Line numbering" ),
255 : ENTRY( "Main index entry" ),
256 : ENTRY( "Footnote anchor" ),
257 : ENTRY( "Endnote anchor" ),
258 : ENTRY( "Rubies" ), // RES_POOLCHR_RUBYTEXT
259 : ENTRY( "Vertical Numbering Symbols" ), // RES_POOLCHR_VERT_NUMBER
260 : { 0, NULL }
261 : };
262 :
263 : const struct SwTableEntry HTMLChrFmtProgNameTable [] =
264 : {
265 : ENTRY( "Emphasis" ), // RES_POOLCHR_HTML_EMPHASIS
266 : ENTRY( "Citation" ),
267 : ENTRY( "Strong Emphasis" ),
268 : ENTRY( "Source Text" ),
269 : ENTRY( "Example" ),
270 : ENTRY( "User Entry" ),
271 : ENTRY( "Variable" ),
272 : ENTRY( "Definition" ),
273 : ENTRY( "Teletype" ), // RES_POOLCHR_HTML_TELETYPE
274 : { 0, NULL }
275 : };
276 :
277 : const struct SwTableEntry PageDescProgNameTable [] =
278 : {
279 : ENTRY( "Standard" ), // STR_POOLPAGE_PRGM_STANDARD
280 : ENTRY( "First Page" ),
281 : ENTRY( "Left Page" ),
282 : ENTRY( "Right Page" ),
283 : ENTRY( "Envelope" ),
284 : ENTRY( "Index" ),
285 : ENTRY( "HTML" ),
286 : ENTRY( "Footnote" ),
287 : ENTRY( "Endnote" ), // STR_POOLPAGE_PRGM_ENDNOTE
288 : ENTRY( "Landscape" ),
289 : { 0, NULL }
290 : };
291 :
292 : const struct SwTableEntry NumRuleProgNameTable [] =
293 : {
294 : ENTRY( "Numbering 1" ), // STR_POOLNUMRULE_PRGM_NUM1
295 : ENTRY( "Numbering 2" ),
296 : ENTRY( "Numbering 3" ),
297 : ENTRY( "Numbering 4" ),
298 : ENTRY( "Numbering 5" ),
299 : ENTRY( "List 1" ),
300 : ENTRY( "List 2" ),
301 : ENTRY( "List 3" ),
302 : ENTRY( "List 4" ),
303 : ENTRY( "List 5" ), // STR_POOLNUMRULE_PRGM_BUL5
304 : { 0, NULL }
305 : };
306 : #undef ENTRY
307 :
308 3794 : bool SwStyleNameMapper::SuffixIsUser ( const String & rString )
309 : {
310 3794 : const sal_Unicode *pChar = rString.GetBuffer();
311 3794 : sal_Int32 nLen = rString.Len();
312 3794 : bool bRet = false;
313 7388 : if( nLen > 8 &&
314 3068 : pChar[nLen-7] == ' ' &&
315 526 : pChar[nLen-6] == '(' &&
316 0 : pChar[nLen-5] == 'u' &&
317 0 : pChar[nLen-4] == 's' &&
318 0 : pChar[nLen-3] == 'e' &&
319 0 : pChar[nLen-2] == 'r' &&
320 0 : pChar[nLen-1] == ')' )
321 0 : bRet = true;
322 3794 : return bRet;
323 : }
324 5398 : void SwStyleNameMapper::CheckSuffixAndDelete ( String & rString )
325 : {
326 5398 : const sal_Unicode *pChar = rString.GetBuffer();
327 5398 : xub_StrLen nLen = rString.Len();
328 9266 : if (nLen > 8 &&
329 3638 : pChar[nLen-7] == ' ' &&
330 230 : pChar[nLen-6] == '(' &&
331 0 : pChar[nLen-5] == 'u' &&
332 0 : pChar[nLen-4] == 's' &&
333 0 : pChar[nLen-3] == 'e' &&
334 0 : pChar[nLen-2] == 'r' &&
335 0 : pChar[nLen-1] == ')')
336 : {
337 0 : rString.Erase ( nLen - 7, 7 );
338 : }
339 5398 : }
340 93885 : const NameToIdHash & SwStyleNameMapper::getHashTable ( SwGetPoolIdFromName eFlags, bool bProgName )
341 : {
342 93885 : NameToIdHash *pHash = 0;
343 : const boost::ptr_vector<String> *pStrings;
344 :
345 93885 : switch ( eFlags )
346 : {
347 : case nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL:
348 : {
349 : sal_uInt16 nIndex;
350 : sal_uInt16 nId;
351 :
352 73813 : pHash = bProgName ? pParaProgMap : pParaUIMap;
353 73813 : if ( !pHash )
354 : {
355 : pHash = new NameToIdHash ( RES_POOLCOLL_TEXT_END - RES_POOLCOLL_TEXT_BEGIN +
356 : RES_POOLCOLL_LISTS_END - RES_POOLCOLL_LISTS_BEGIN +
357 : RES_POOLCOLL_EXTRA_END - RES_POOLCOLL_EXTRA_BEGIN +
358 : RES_POOLCOLL_REGISTER_END - RES_POOLCOLL_REGISTER_BEGIN +
359 : RES_POOLCOLL_DOC_END - RES_POOLCOLL_DOC_BEGIN +
360 42 : RES_POOLCOLL_HTML_END - RES_POOLCOLL_HTML_BEGIN );
361 42 : pStrings = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
362 882 : for ( nIndex = 0, nId = RES_POOLCOLL_TEXT_BEGIN ; nId < RES_POOLCOLL_TEXT_END ; nId++,nIndex++ )
363 840 : (*pHash)[&((*pStrings)[nIndex])] = nId;
364 42 : pStrings = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
365 1764 : for ( nIndex = 0, nId = RES_POOLCOLL_LISTS_BEGIN ; nId < RES_POOLCOLL_LISTS_END ; nId++,nIndex++ )
366 1722 : (*pHash)[&((*pStrings)[nIndex])] = nId;
367 42 : pStrings = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
368 798 : for ( nIndex = 0, nId = RES_POOLCOLL_EXTRA_BEGIN ; nId < RES_POOLCOLL_EXTRA_END ; nId++,nIndex++ )
369 756 : (*pHash)[&((*pStrings)[nIndex])] = nId;
370 42 : pStrings = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
371 1554 : for ( nIndex = 0, nId = RES_POOLCOLL_REGISTER_BEGIN ; nId < RES_POOLCOLL_REGISTER_END ; nId++,nIndex++ )
372 1512 : (*pHash)[&((*pStrings)[nIndex])] = nId;
373 42 : pStrings = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
374 126 : for ( nIndex = 0, nId = RES_POOLCOLL_DOC_BEGIN ; nId < RES_POOLCOLL_DOC_END ; nId++,nIndex++ )
375 84 : (*pHash)[&((*pStrings)[nIndex])] = nId;
376 42 : pStrings = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
377 252 : for ( nIndex = 0, nId = RES_POOLCOLL_HTML_BEGIN ; nId < RES_POOLCOLL_HTML_END ; nId++,nIndex++ )
378 210 : (*pHash)[&((*pStrings)[nIndex])] = nId;
379 :
380 42 : if ( bProgName )
381 20 : pParaProgMap = pHash;
382 : else
383 22 : pParaUIMap = pHash;
384 : }
385 : }
386 73813 : break;
387 : case nsSwGetPoolIdFromName::GET_POOLID_CHRFMT:
388 : {
389 12720 : pHash = bProgName ? pCharProgMap : pCharUIMap;
390 12720 : if ( !pHash )
391 : {
392 : sal_uInt16 nIndex;
393 : sal_uInt16 nId;
394 :
395 : pHash = new NameToIdHash ( RES_POOLCHR_NORMAL_END - RES_POOLCHR_NORMAL_BEGIN +
396 38 : RES_POOLCHR_HTML_END - RES_POOLCHR_HTML_BEGIN );
397 38 : pStrings = bProgName ? &GetChrFmtProgNameArray() : &GetChrFmtUINameArray();
398 684 : for ( nIndex = 0, nId = RES_POOLCHR_NORMAL_BEGIN ; nId < RES_POOLCHR_NORMAL_END ; nId++,nIndex++ )
399 646 : (*pHash)[&((*pStrings)[nIndex])] = nId;
400 38 : pStrings = bProgName ? &GetHTMLChrFmtProgNameArray() : &GetHTMLChrFmtUINameArray();
401 380 : for ( nIndex = 0, nId = RES_POOLCHR_HTML_BEGIN ; nId < RES_POOLCHR_HTML_END ; nId++,nIndex++ )
402 342 : (*pHash)[&((*pStrings)[nIndex])] = nId;
403 38 : if (bProgName )
404 17 : pCharProgMap = pHash;
405 : else
406 21 : pCharUIMap = pHash;
407 : }
408 : }
409 12720 : break;
410 : case nsSwGetPoolIdFromName::GET_POOLID_FRMFMT:
411 : {
412 1210 : pHash = bProgName ? pFrameProgMap : pFrameUIMap;
413 1210 : if ( !pHash )
414 : {
415 28 : pHash = new NameToIdHash ( RES_POOLFRM_END - RES_POOLFRM_BEGIN );
416 28 : pStrings = bProgName ? &GetFrmFmtProgNameArray() : &GetFrmFmtUINameArray();
417 224 : for ( sal_uInt16 nIndex=0,nId = RES_POOLFRM_BEGIN ; nId < RES_POOLFRM_END ; nId++,nIndex++ )
418 196 : (*pHash)[&((*pStrings)[nIndex])] = nId;
419 28 : if ( bProgName )
420 14 : pFrameProgMap = pHash;
421 : else
422 14 : pFrameUIMap = pHash;
423 : }
424 : }
425 1210 : break;
426 : case nsSwGetPoolIdFromName::GET_POOLID_PAGEDESC:
427 : {
428 4569 : pHash = bProgName ? pPageProgMap : pPageUIMap;
429 4569 : if ( !pHash )
430 : {
431 40 : pHash = new NameToIdHash ( RES_POOLPAGE_END - RES_POOLPAGE_BEGIN );
432 40 : pStrings = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
433 440 : for ( sal_uInt16 nIndex=0,nId = RES_POOLPAGE_BEGIN ; nId < RES_POOLPAGE_END ; nId++,nIndex++ )
434 400 : (*pHash)[&((*pStrings)[nIndex])] = nId;
435 40 : if ( bProgName )
436 20 : pPageProgMap = pHash;
437 : else
438 20 : pPageUIMap = pHash;
439 : }
440 : }
441 4569 : break;
442 : case nsSwGetPoolIdFromName::GET_POOLID_NUMRULE:
443 : {
444 1573 : pHash = bProgName ? pNumRuleProgMap : pNumRuleUIMap;
445 1573 : if ( !pHash )
446 : {
447 34 : pHash = new NameToIdHash ( RES_POOLNUMRULE_END - RES_POOLNUMRULE_BEGIN );
448 34 : pStrings = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
449 374 : for ( sal_uInt16 nIndex=0,nId = RES_POOLNUMRULE_BEGIN ; nId < RES_POOLNUMRULE_END ; nId++,nIndex++ )
450 : {
451 340 : (*pHash)[&((*pStrings)[nIndex])] = nId;
452 : }
453 34 : if ( bProgName )
454 17 : pNumRuleProgMap = pHash;
455 : else
456 17 : pNumRuleUIMap = pHash;
457 : }
458 : }
459 1573 : break;
460 : }
461 : #ifdef _NEED_TO_DEBUG_MAPPING
462 : static bool bTested = false;
463 : if ( !bTested )
464 : {
465 : bTested = true;
466 : {
467 : for ( sal_uInt16 nIndex = 0, nId = RES_POOLCOLL_TEXT_BEGIN ; nId < RES_POOLCOLL_TEXT_END ; nId++,nIndex++ )
468 : {
469 : String aString, bString;
470 : FillUIName ( nId, aString );
471 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
472 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
473 : FillProgName ( nNewId, aString );
474 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
475 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
476 : if ( nNewId != nId )
477 : abort();
478 : }
479 : for ( nIndex = 0, nId = RES_POOLCOLL_LISTS_BEGIN ; nId < RES_POOLCOLL_LISTS_END ; nId++,nIndex++ )
480 : {
481 : String aString, bString;
482 : FillUIName ( nId, aString );
483 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
484 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
485 : FillProgName ( nNewId, aString );
486 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
487 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
488 : if ( nNewId != nId )
489 : abort();
490 : }
491 : for ( nIndex = 0, nId = RES_POOLCOLL_EXTRA_BEGIN ; nId < RES_POOLCOLL_EXTRA_END ; nId++,nIndex++ )
492 : {
493 : String aString, bString;
494 : FillUIName ( nId, aString );
495 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
496 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
497 : FillProgName ( nNewId, aString );
498 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
499 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
500 : if ( nNewId != nId )
501 : abort();
502 : }
503 : for ( nIndex = 0, nId = RES_POOLCOLL_REGISTER_BEGIN ; nId < RES_POOLCOLL_REGISTER_END ; nId++,nIndex++ )
504 : {
505 : String aString, bString;
506 : FillUIName ( nId, aString );
507 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
508 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
509 : FillProgName ( nNewId, aString );
510 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
511 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
512 : if ( nNewId != nId )
513 : abort();
514 : }
515 : for ( nIndex = 0, nId = RES_POOLCOLL_DOC_BEGIN ; nId < RES_POOLCOLL_DOC_END ; nId++,nIndex++ )
516 : {
517 : String aString, bString;
518 : FillUIName ( nId, aString );
519 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
520 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
521 : FillProgName ( nNewId, aString );
522 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
523 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
524 : if ( nNewId != nId )
525 : abort();
526 : }
527 : for ( nIndex = 0, nId = RES_POOLCOLL_HTML_BEGIN ; nId < RES_POOLCOLL_HTML_END ; nId++,nIndex++ )
528 : {
529 : String aString, bString;
530 : FillUIName ( nId, aString );
531 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
532 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
533 : FillProgName ( nNewId, aString );
534 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
535 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
536 : if ( nNewId != nId )
537 : abort();
538 : }
539 : }
540 : {
541 : for ( sal_uInt16 nIndex = 0, nId = RES_POOLCHR_NORMAL_BEGIN ; nId < RES_POOLCHR_NORMAL_END ; nId++,nIndex++ )
542 : {
543 : String aString, bString;
544 : FillUIName ( nId, aString );
545 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
546 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
547 : FillProgName ( nNewId, aString );
548 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
549 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
550 : if ( nNewId != nId )
551 : abort();
552 : }
553 : for ( nIndex = 0, nId = RES_POOLCHR_HTML_BEGIN ; nId < RES_POOLCHR_HTML_END ; nId++,nIndex++ )
554 : {
555 : String aString, bString;
556 : FillUIName ( nId, aString );
557 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
558 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
559 : FillProgName ( nNewId, aString );
560 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
561 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
562 : if ( nNewId != nId )
563 : abort();
564 : }
565 : }
566 : {
567 : for ( sal_uInt16 nIndex=0,nId = RES_POOLFRM_BEGIN ; nId < RES_POOLFRM_END ; nId++,nIndex++ )
568 : {
569 : String aString, bString;
570 : FillUIName ( nId, aString );
571 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
572 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
573 : FillProgName ( nNewId, aString );
574 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
575 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
576 : if ( nNewId != nId )
577 : abort();
578 : }
579 : }
580 : {
581 : for ( sal_uInt16 nIndex=0,nId = RES_POOLPAGE_BEGIN ; nId < RES_POOLPAGE_END ; nId++,nIndex++ )
582 : {
583 : String aString, bString;
584 : FillUIName ( nId, aString );
585 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
586 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
587 : FillProgName ( nNewId, aString );
588 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
589 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
590 : if ( nNewId != nId )
591 : abort();
592 : }
593 : }
594 : {
595 : for ( sal_uInt16 nIndex=0,nId = RES_POOLNUMRULE_BEGIN ; nId < RES_POOLNUMRULE_END ; nId++,nIndex++ )
596 : {
597 : String aString, bString;
598 : FillUIName ( nId, aString );
599 : bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
600 : sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
601 : FillProgName ( nNewId, aString );
602 : bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
603 : nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
604 : if ( nNewId != nId )
605 : abort();
606 : }
607 : }
608 : }
609 : #endif
610 93885 : return *pHash;
611 : }
612 : // This gets the UI Name from the programmatic name
613 40 : const String& SwStyleNameMapper::GetUIName ( const String& rName, SwGetPoolIdFromName eFlags )
614 : {
615 40 : sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
616 40 : return nId != USHRT_MAX ? GetUIName( nId, rName ) : rName;
617 : }
618 :
619 :
620 : // Get the programmatic Name from the UI name
621 46 : const String& SwStyleNameMapper::GetProgName( const String& rName, SwGetPoolIdFromName eFlags )
622 : {
623 46 : sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
624 46 : return nId != USHRT_MAX ? GetProgName( nId, rName ) : rName;
625 : }
626 :
627 : // Get the programmatic name from the UI name in rName and put it into rFillName
628 13412 : void SwStyleNameMapper::FillProgName ( const String& rName, String& rFillName, SwGetPoolIdFromName eFlags, bool bDisambiguate )
629 : {
630 13412 : sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
631 13412 : if ( bDisambiguate && nId == USHRT_MAX )
632 : {
633 : // rName isn't in our UI name table...check if it's in the programmatic one
634 3794 : nId = GetPoolIdFromProgName ( rName, eFlags );
635 :
636 3794 : rFillName = rName;
637 7588 : if (nId == USHRT_MAX )
638 : {
639 : // It isn't ...make sure the suffix isn't already " (user)"...if it is,
640 : // we need to add another one
641 3794 : if ( SuffixIsUser ( rFillName ) )
642 0 : rFillName.AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " (user)" ) );
643 : }
644 : else
645 : {
646 : // It's in the programmatic name table...append suffix
647 0 : rFillName.AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " (user)" ) );
648 : }
649 : }
650 : else
651 : {
652 : // If we aren't trying to disambiguate, then just do a normal fill
653 9618 : fillNameFromId ( nId, rFillName, true);
654 : }
655 13412 : }
656 : // Get the UI name from the programmatic name in rName and put it into rFillName
657 13930 : void SwStyleNameMapper::FillUIName ( const String& rName, String& rFillName, SwGetPoolIdFromName eFlags, bool bDisambiguate )
658 : {
659 13930 : sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
660 13930 : if ( bDisambiguate && nId == USHRT_MAX )
661 : {
662 5398 : rFillName = rName;
663 : // rName isn't in our Prog name table...check if it has a " (user)" suffix, if so remove it
664 5398 : CheckSuffixAndDelete ( rFillName );
665 : }
666 : else
667 : {
668 : // If we aren't trying to disambiguate, then just do a normal fill
669 8532 : fillNameFromId ( nId, rFillName, false);
670 : }
671 13930 : }
672 :
673 0 : const String& SwStyleNameMapper::getNameFromId( sal_uInt16 nId, const String& rFillName, bool bProgName )
674 : {
675 0 : sal_uInt16 nStt = 0;
676 0 : const boost::ptr_vector<String>* pStrArr = 0;
677 :
678 0 : switch( (USER_FMT | COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID) & nId )
679 : {
680 : case COLL_TEXT_BITS:
681 0 : if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
682 : {
683 0 : pStrArr = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
684 0 : nStt = RES_POOLCOLL_TEXT_BEGIN;
685 : }
686 0 : break;
687 : case COLL_LISTS_BITS:
688 0 : if( RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END )
689 : {
690 0 : pStrArr = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
691 0 : nStt = RES_POOLCOLL_LISTS_BEGIN;
692 : }
693 0 : break;
694 : case COLL_EXTRA_BITS:
695 0 : if( RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END )
696 : {
697 0 : pStrArr = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
698 0 : nStt = RES_POOLCOLL_EXTRA_BEGIN;
699 : }
700 0 : break;
701 : case COLL_REGISTER_BITS:
702 0 : if( RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END )
703 : {
704 0 : pStrArr = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
705 0 : nStt = RES_POOLCOLL_REGISTER_BEGIN;
706 : }
707 0 : break;
708 : case COLL_DOC_BITS:
709 0 : if( RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END )
710 : {
711 0 : pStrArr = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
712 0 : nStt = RES_POOLCOLL_DOC_BEGIN;
713 : }
714 0 : break;
715 : case COLL_HTML_BITS:
716 0 : if( RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END )
717 : {
718 0 : pStrArr = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
719 0 : nStt = RES_POOLCOLL_HTML_BEGIN;
720 : }
721 0 : break;
722 : case POOLGRP_CHARFMT:
723 0 : if( RES_POOLCHR_NORMAL_BEGIN <= nId && nId < RES_POOLCHR_NORMAL_END )
724 : {
725 0 : pStrArr = bProgName ? &GetChrFmtProgNameArray() : &GetChrFmtUINameArray();
726 0 : nStt = RES_POOLCHR_NORMAL_BEGIN;
727 : }
728 0 : else if( RES_POOLCHR_HTML_BEGIN <= nId && nId < RES_POOLCHR_HTML_END )
729 : {
730 0 : pStrArr = bProgName ? &GetHTMLChrFmtProgNameArray() : &GetHTMLChrFmtUINameArray();
731 0 : nStt = RES_POOLCHR_HTML_BEGIN;
732 : }
733 0 : break;
734 : case POOLGRP_FRAMEFMT:
735 0 : if( RES_POOLFRM_BEGIN <= nId && nId < RES_POOLFRM_END )
736 : {
737 0 : pStrArr = bProgName ? &GetFrmFmtProgNameArray() : &GetFrmFmtUINameArray();
738 0 : nStt = RES_POOLFRM_BEGIN;
739 : }
740 0 : break;
741 : case POOLGRP_PAGEDESC:
742 0 : if( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END )
743 : {
744 0 : pStrArr = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
745 0 : nStt = RES_POOLPAGE_BEGIN;
746 : }
747 0 : break;
748 : case POOLGRP_NUMRULE:
749 0 : if( RES_POOLNUMRULE_BEGIN <= nId && nId < RES_POOLNUMRULE_END )
750 : {
751 0 : pStrArr = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
752 0 : nStt = RES_POOLNUMRULE_BEGIN;
753 : }
754 0 : break;
755 : }
756 0 : return pStrArr ? (pStrArr->operator[] ( nId - nStt ) ) : rFillName;
757 : }
758 18190 : void SwStyleNameMapper::fillNameFromId( sal_uInt16 nId, String& rFillName, bool bProgName )
759 : {
760 18190 : sal_uInt16 nStt = 0;
761 18190 : const boost::ptr_vector<String>* pStrArr = 0;
762 :
763 18190 : switch( (USER_FMT | COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID) & nId )
764 : {
765 : case COLL_TEXT_BITS:
766 9715 : if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
767 : {
768 9715 : pStrArr = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
769 9715 : nStt = RES_POOLCOLL_TEXT_BEGIN;
770 : }
771 9715 : break;
772 : case COLL_LISTS_BITS:
773 984 : if( RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END )
774 : {
775 984 : pStrArr = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
776 984 : nStt = RES_POOLCOLL_LISTS_BEGIN;
777 : }
778 984 : break;
779 : case COLL_EXTRA_BITS:
780 1796 : if( RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END )
781 : {
782 1796 : pStrArr = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
783 1796 : nStt = RES_POOLCOLL_EXTRA_BEGIN;
784 : }
785 1796 : break;
786 : case COLL_REGISTER_BITS:
787 992 : if( RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END )
788 : {
789 992 : pStrArr = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
790 992 : nStt = RES_POOLCOLL_REGISTER_BEGIN;
791 : }
792 992 : break;
793 : case COLL_DOC_BITS:
794 126 : if( RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END )
795 : {
796 126 : pStrArr = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
797 126 : nStt = RES_POOLCOLL_DOC_BEGIN;
798 : }
799 126 : break;
800 : case COLL_HTML_BITS:
801 608 : if( RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END )
802 : {
803 608 : pStrArr = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
804 608 : nStt = RES_POOLCOLL_HTML_BEGIN;
805 : }
806 608 : break;
807 : case POOLGRP_CHARFMT:
808 1416 : if( RES_POOLCHR_NORMAL_BEGIN <= nId && nId < RES_POOLCHR_NORMAL_END )
809 : {
810 970 : pStrArr = bProgName ? &GetChrFmtProgNameArray() : &GetChrFmtUINameArray();
811 970 : nStt = RES_POOLCHR_NORMAL_BEGIN;
812 : }
813 446 : else if( RES_POOLCHR_HTML_BEGIN <= nId && nId < RES_POOLCHR_HTML_END )
814 : {
815 446 : pStrArr = bProgName ? &GetHTMLChrFmtProgNameArray() : &GetHTMLChrFmtUINameArray();
816 446 : nStt = RES_POOLCHR_HTML_BEGIN;
817 : }
818 1416 : break;
819 : case POOLGRP_FRAMEFMT:
820 532 : if( RES_POOLFRM_BEGIN <= nId && nId < RES_POOLFRM_END )
821 : {
822 532 : pStrArr = bProgName ? &GetFrmFmtProgNameArray() : &GetFrmFmtUINameArray();
823 532 : nStt = RES_POOLFRM_BEGIN;
824 : }
825 532 : break;
826 : case POOLGRP_PAGEDESC:
827 1927 : if( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END )
828 : {
829 1927 : pStrArr = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
830 1927 : nStt = RES_POOLPAGE_BEGIN;
831 : }
832 1927 : break;
833 : case POOLGRP_NUMRULE:
834 94 : if( RES_POOLNUMRULE_BEGIN <= nId && nId < RES_POOLNUMRULE_END )
835 : {
836 94 : pStrArr = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
837 94 : nStt = RES_POOLNUMRULE_BEGIN;
838 : }
839 94 : break;
840 : }
841 18190 : if (pStrArr)
842 18190 : rFillName = (pStrArr->operator[] ( nId - nStt ) );
843 18190 : }
844 : // Get the UI Name from the pool ID
845 40 : void SwStyleNameMapper::FillUIName ( sal_uInt16 nId, String& rFillName )
846 : {
847 40 : fillNameFromId ( nId, rFillName, false );
848 40 : }
849 : // Get the UI Name from the pool ID
850 0 : const String& SwStyleNameMapper::GetUIName ( sal_uInt16 nId, const String& rName )
851 : {
852 0 : return getNameFromId ( nId, rName, false );
853 : }
854 :
855 : // Get the programmatic Name from the pool ID
856 0 : void SwStyleNameMapper::FillProgName ( sal_uInt16 nId, String& rFillName )
857 : {
858 0 : fillNameFromId ( nId, rFillName, true );
859 0 : }
860 : // Get the programmatic Name from the pool ID
861 0 : const String& SwStyleNameMapper::GetProgName ( sal_uInt16 nId, const String& rName )
862 : {
863 0 : return getNameFromId ( nId, rName, true );
864 : }
865 : // This gets the PoolId from the UI Name
866 76121 : sal_uInt16 SwStyleNameMapper::GetPoolIdFromUIName( const String& rName, SwGetPoolIdFromName eFlags )
867 : {
868 76121 : const NameToIdHash & rHashMap = getHashTable ( eFlags, false );
869 76121 : NameToIdHash::const_iterator aIter = rHashMap.find ( &rName );
870 76121 : return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
871 : }
872 : // Get the Pool ID from the programmatic name
873 17764 : sal_uInt16 SwStyleNameMapper::GetPoolIdFromProgName( const String& rName, SwGetPoolIdFromName eFlags )
874 : {
875 17764 : const NameToIdHash & rHashMap = getHashTable ( eFlags, true );
876 17764 : NameToIdHash::const_iterator aIter = rHashMap.find ( &rName );
877 17764 : return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
878 : }
879 :
880 225 : boost::ptr_vector<String>* SwStyleNameMapper::NewUINameArray( boost::ptr_vector<String>*& pNameArray, sal_uInt16 nStt, sal_uInt16 nEnd )
881 : {
882 225 : if( !pNameArray )
883 : {
884 225 : pNameArray = new boost::ptr_vector<String>;
885 225 : pNameArray->reserve(nEnd - nStt);
886 4148 : while( nStt < nEnd )
887 : {
888 3698 : const ResId rRId( nStt, *pSwResMgr );
889 3698 : pNameArray->push_back(new String(rRId));
890 3698 : ++nStt;
891 : }
892 : }
893 225 : return pNameArray;
894 : }
895 :
896 10738 : const boost::ptr_vector<String>& SwStyleNameMapper::GetTextUINameArray()
897 : {
898 : return pTextUINameArray ? *pTextUINameArray :
899 : *NewUINameArray( pTextUINameArray, RC_POOLCOLL_TEXT_BEGIN,
900 : ( RC_POOLCOLL_TEXT_BEGIN +
901 10738 : (RES_POOLCOLL_TEXT_END - RES_POOLCOLL_TEXT_BEGIN )) );
902 : }
903 :
904 944 : const boost::ptr_vector<String>& SwStyleNameMapper::GetListsUINameArray()
905 : {
906 : return pListsUINameArray ? *pListsUINameArray :
907 : *NewUINameArray( pListsUINameArray, RC_POOLCOLL_LISTS_BEGIN,
908 : ( RC_POOLCOLL_LISTS_BEGIN +
909 944 : (RES_POOLCOLL_LISTS_END - RES_POOLCOLL_LISTS_BEGIN )) );
910 : }
911 :
912 1934 : const boost::ptr_vector<String>& SwStyleNameMapper::GetExtraUINameArray()
913 : {
914 : return pExtraUINameArray ? *pExtraUINameArray :
915 : *NewUINameArray( pExtraUINameArray, RC_POOLCOLL_EXTRA_BEGIN,
916 : ( RC_POOLCOLL_EXTRA_BEGIN +
917 1934 : (RES_POOLCOLL_EXTRA_END - RES_POOLCOLL_EXTRA_BEGIN )) );
918 : }
919 :
920 992 : const boost::ptr_vector<String>& SwStyleNameMapper::GetRegisterUINameArray()
921 : {
922 : return pRegisterUINameArray ? *pRegisterUINameArray :
923 : *NewUINameArray( pRegisterUINameArray, RC_POOLCOLL_REGISTER_BEGIN,
924 : ( RC_POOLCOLL_REGISTER_BEGIN +
925 992 : (RES_POOLCOLL_REGISTER_END - RES_POOLCOLL_REGISTER_BEGIN )) );
926 : }
927 :
928 480 : const boost::ptr_vector<String>& SwStyleNameMapper::GetDocUINameArray()
929 : {
930 : return pDocUINameArray ? *pDocUINameArray :
931 : *NewUINameArray( pDocUINameArray, RC_POOLCOLL_DOC_BEGIN,
932 : ( RC_POOLCOLL_DOC_BEGIN +
933 480 : (RES_POOLCOLL_DOC_END - RES_POOLCOLL_DOC_BEGIN )) );
934 : }
935 :
936 404 : const boost::ptr_vector<String>& SwStyleNameMapper::GetHTMLUINameArray()
937 : {
938 : return pHTMLUINameArray ? *pHTMLUINameArray :
939 : *NewUINameArray( pHTMLUINameArray, RC_POOLCOLL_HTML_BEGIN,
940 : ( RC_POOLCOLL_HTML_BEGIN +
941 404 : (RES_POOLCOLL_HTML_END - RES_POOLCOLL_HTML_BEGIN )) );
942 : }
943 :
944 494 : const boost::ptr_vector<String>& SwStyleNameMapper::GetFrmFmtUINameArray()
945 : {
946 : return pFrmFmtUINameArray ? *pFrmFmtUINameArray :
947 : *NewUINameArray( pFrmFmtUINameArray, RC_POOLFRMFMT_BEGIN,
948 : ( RC_POOLFRMFMT_BEGIN +
949 494 : (RES_POOLFRM_END - RES_POOLFRM_BEGIN )) );
950 : }
951 :
952 395 : const boost::ptr_vector<String>& SwStyleNameMapper::GetChrFmtUINameArray()
953 : {
954 : return pChrFmtUINameArray ? *pChrFmtUINameArray :
955 : *NewUINameArray( pChrFmtUINameArray, RC_POOLCHRFMT_BEGIN,
956 : ( RC_POOLCHRFMT_BEGIN +
957 395 : (RES_POOLCHR_NORMAL_END - RES_POOLCHR_NORMAL_BEGIN )) );
958 : }
959 :
960 233 : const boost::ptr_vector<String>& SwStyleNameMapper::GetHTMLChrFmtUINameArray()
961 : {
962 : return pHTMLChrFmtUINameArray ? *pHTMLChrFmtUINameArray :
963 : *NewUINameArray( pHTMLChrFmtUINameArray, RC_POOLCHRFMT_HTML_BEGIN,
964 : ( RC_POOLCHRFMT_HTML_BEGIN +
965 233 : (RES_POOLCHR_HTML_END - RES_POOLCHR_HTML_BEGIN )) );
966 : }
967 :
968 1521 : const boost::ptr_vector<String>& SwStyleNameMapper::GetPageDescUINameArray()
969 : {
970 : return pPageDescUINameArray ? *pPageDescUINameArray :
971 : *NewUINameArray( pPageDescUINameArray, RC_POOLPAGEDESC_BEGIN,
972 : ( RC_POOLPAGEDESC_BEGIN +
973 1521 : (RES_POOLPAGE_END - RES_POOLPAGE_BEGIN )) );
974 : }
975 :
976 92 : const boost::ptr_vector<String>& SwStyleNameMapper::GetNumRuleUINameArray()
977 : {
978 : return pNumRuleUINameArray ? *pNumRuleUINameArray :
979 : *NewUINameArray( pNumRuleUINameArray, RC_POOLNUMRULE_BEGIN,
980 : ( RC_POOLNUMRULE_BEGIN +
981 92 : (RES_POOLNUMRULE_END - RES_POOLNUMRULE_BEGIN )) );
982 : }
983 :
984 207 : boost::ptr_vector<String>* SwStyleNameMapper::NewProgNameArray( boost::ptr_vector<String>*& pProgNameArray, const SwTableEntry *pTable, sal_uInt8 nCount )
985 : {
986 207 : if( !pProgNameArray )
987 : {
988 207 : pProgNameArray = new boost::ptr_vector<String>;
989 207 : pProgNameArray->reserve(nCount);
990 3804 : while (pTable->nLength)
991 : {
992 3390 : pProgNameArray->push_back(new String( pTable->pChar, pTable->nLength, RTL_TEXTENCODING_ASCII_US ));
993 3390 : pTable++;
994 : }
995 : }
996 207 : return pProgNameArray;
997 : }
998 :
999 5870 : const boost::ptr_vector<String>& SwStyleNameMapper::GetTextProgNameArray()
1000 : {
1001 : return pTextProgNameArray ? *pTextProgNameArray :
1002 : *NewProgNameArray( pTextProgNameArray, TextProgNameTable,
1003 5870 : sizeof ( TextProgNameTable ) / sizeof ( SwTableEntry ) );
1004 : }
1005 :
1006 442 : const boost::ptr_vector<String>& SwStyleNameMapper::GetListsProgNameArray()
1007 : {
1008 : return pListsProgNameArray ? *pListsProgNameArray :
1009 : *NewProgNameArray( pListsProgNameArray, ListsProgNameTable,
1010 442 : sizeof ( ListsProgNameTable ) / sizeof ( SwTableEntry ) );
1011 : }
1012 :
1013 944 : const boost::ptr_vector<String>& SwStyleNameMapper::GetExtraProgNameArray()
1014 : {
1015 : return pExtraProgNameArray ? *pExtraProgNameArray :
1016 : *NewProgNameArray( pExtraProgNameArray, ExtraProgNameTable,
1017 944 : sizeof ( ExtraProgNameTable ) / sizeof ( SwTableEntry ) );
1018 : }
1019 :
1020 402 : const boost::ptr_vector<String>& SwStyleNameMapper::GetRegisterProgNameArray()
1021 : {
1022 : return pRegisterProgNameArray ? *pRegisterProgNameArray :
1023 : *NewProgNameArray( pRegisterProgNameArray, RegisterProgNameTable,
1024 402 : sizeof ( RegisterProgNameTable ) / sizeof ( SwTableEntry ) );
1025 : }
1026 :
1027 48 : const boost::ptr_vector<String>& SwStyleNameMapper::GetDocProgNameArray()
1028 : {
1029 : return pDocProgNameArray ? *pDocProgNameArray :
1030 : *NewProgNameArray( pDocProgNameArray, DocProgNameTable,
1031 48 : sizeof ( DocProgNameTable ) / sizeof ( SwTableEntry ) );
1032 : }
1033 :
1034 606 : const boost::ptr_vector<String>& SwStyleNameMapper::GetHTMLProgNameArray()
1035 : {
1036 : return pHTMLProgNameArray ? *pHTMLProgNameArray :
1037 : *NewProgNameArray( pHTMLProgNameArray, HTMLProgNameTable,
1038 606 : sizeof ( HTMLProgNameTable ) / sizeof ( SwTableEntry ) );
1039 : }
1040 :
1041 82 : const boost::ptr_vector<String>& SwStyleNameMapper::GetFrmFmtProgNameArray()
1042 : {
1043 : return pFrmFmtProgNameArray ? *pFrmFmtProgNameArray :
1044 : *NewProgNameArray( pFrmFmtProgNameArray, FrmFmtProgNameTable,
1045 82 : sizeof ( FrmFmtProgNameTable ) / sizeof ( SwTableEntry ) );
1046 : }
1047 :
1048 761 : const boost::ptr_vector<String>& SwStyleNameMapper::GetChrFmtProgNameArray()
1049 : {
1050 : return pChrFmtProgNameArray ? *pChrFmtProgNameArray :
1051 : *NewProgNameArray( pChrFmtProgNameArray, ChrFmtProgNameTable,
1052 761 : sizeof ( ChrFmtProgNameTable ) / sizeof ( SwTableEntry ) );
1053 : }
1054 :
1055 399 : const boost::ptr_vector<String>& SwStyleNameMapper::GetHTMLChrFmtProgNameArray()
1056 : {
1057 : return pHTMLChrFmtProgNameArray ? *pHTMLChrFmtProgNameArray :
1058 : *NewProgNameArray( pHTMLChrFmtProgNameArray, HTMLChrFmtProgNameTable,
1059 399 : sizeof ( HTMLChrFmtProgNameTable ) / sizeof ( SwTableEntry ) );
1060 : }
1061 :
1062 562 : const boost::ptr_vector<String>& SwStyleNameMapper::GetPageDescProgNameArray()
1063 : {
1064 : return pPageDescProgNameArray ? *pPageDescProgNameArray :
1065 : *NewProgNameArray( pPageDescProgNameArray, PageDescProgNameTable,
1066 562 : sizeof ( PageDescProgNameTable ) / sizeof ( SwTableEntry ) );
1067 : }
1068 :
1069 57 : const boost::ptr_vector<String>& SwStyleNameMapper::GetNumRuleProgNameArray()
1070 : {
1071 : return pNumRuleProgNameArray ? *pNumRuleProgNameArray :
1072 : *NewProgNameArray( pNumRuleProgNameArray, NumRuleProgNameTable,
1073 57 : sizeof ( NumRuleProgNameTable ) / sizeof ( SwTableEntry ) );
1074 : }
1075 :
1076 :
1077 16 : const String SwStyleNameMapper::GetSpecialExtraProgName( const String& rExtraUIName )
1078 : {
1079 16 : String aRes = rExtraUIName;
1080 16 : bool bChgName = false;
1081 16 : const boost::ptr_vector<String>& rExtraArr(GetExtraUINameArray());
1082 : static sal_uInt16 nIds[] =
1083 : {
1084 : RES_POOLCOLL_LABEL_DRAWING - RES_POOLCOLL_EXTRA_BEGIN,
1085 : RES_POOLCOLL_LABEL_ABB - RES_POOLCOLL_EXTRA_BEGIN,
1086 : RES_POOLCOLL_LABEL_TABLE - RES_POOLCOLL_EXTRA_BEGIN,
1087 : RES_POOLCOLL_LABEL_FRAME- RES_POOLCOLL_EXTRA_BEGIN,
1088 : 0
1089 : };
1090 : const sal_uInt16 * pIds;
1091 40 : for ( pIds = nIds; *pIds; ++pIds)
1092 : {
1093 40 : if (aRes == rExtraArr[ *pIds ])
1094 : {
1095 16 : bChgName = true;
1096 16 : break;
1097 : }
1098 : }
1099 16 : if (bChgName)
1100 16 : aRes = GetExtraProgNameArray()[*pIds];
1101 16 : return aRes;
1102 : }
1103 :
1104 334 : const String SwStyleNameMapper::GetSpecialExtraUIName( const String& rExtraProgName )
1105 : {
1106 334 : String aRes = rExtraProgName;
1107 334 : bool bChgName = false;
1108 334 : const boost::ptr_vector<String>& rExtraArr(GetExtraProgNameArray());
1109 : static sal_uInt16 nIds[] =
1110 : {
1111 : RES_POOLCOLL_LABEL_DRAWING - RES_POOLCOLL_EXTRA_BEGIN,
1112 : RES_POOLCOLL_LABEL_ABB - RES_POOLCOLL_EXTRA_BEGIN,
1113 : RES_POOLCOLL_LABEL_TABLE - RES_POOLCOLL_EXTRA_BEGIN,
1114 : RES_POOLCOLL_LABEL_FRAME- RES_POOLCOLL_EXTRA_BEGIN,
1115 : 0
1116 : };
1117 : const sal_uInt16 * pIds;
1118 :
1119 890 : for ( pIds = nIds; *pIds; ++pIds)
1120 : {
1121 868 : if (aRes == rExtraArr[ *pIds ])
1122 : {
1123 312 : bChgName = true;
1124 312 : break;
1125 : }
1126 : }
1127 334 : if (bChgName)
1128 312 : aRes = GetExtraUINameArray()[*pIds];
1129 334 : return aRes;
1130 : }
1131 :
1132 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|