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