xref: /aoo42x/main/sd/source/core/stlpool.cxx (revision 94ee63a6)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sd.hxx"
26 
27 #include <com/sun/star/lang/DisposedException.hpp>
28 #include <editeng/eeitem.hxx>
29 #include <editeng/fhgtitem.hxx>
30 #include <editeng/colritem.hxx>
31 #include <editeng/cntritem.hxx>
32 #include <editeng/shdditem.hxx>
33 #include <editeng/crsditem.hxx>
34 #include <editeng/udlnitem.hxx>
35 #include <editeng/wghtitem.hxx>
36 #include <editeng/postitem.hxx>
37 #include <editeng/fontitem.hxx>
38 #include <svl/poolitem.hxx>
39 #include <svx/xfillit0.hxx>
40 #include <svx/xlineit0.hxx>
41 #include <editeng/ulspitem.hxx>
42 #include <editeng/numitem.hxx>
43 #include <editeng/brshitem.hxx>
44 #include <editeng/editeng.hxx>
45 #include <svl/smplhint.hxx>
46 #include <editeng/langitem.hxx>
47 #include <editeng/charreliefitem.hxx>
48 #ifndef _SVX_EMPHITEM_HXX
49 #include <editeng/emphitem.hxx>
50 #endif
51 #include <svx/sdr/table/tabledesign.hxx>
52 #include <editeng/akrnitem.hxx>
53 
54 #include <svx/svdattr.hxx>
55 #include "eetext.hxx"
56 #include <svx/xtable.hxx>			// fuer RGB_Color
57 #include <editeng/bulitem.hxx>
58 #include <editeng/lrspitem.hxx>
59 #include <editeng/adjitem.hxx>
60 #include <svl/itempool.hxx>
61 
62 #define _SDR_POSITIVE
63 #define _SDR_ITEMS
64 
65 #include "stlpool.hxx"
66 #include "sdresid.hxx"
67 #include "stlsheet.hxx"
68 #include "glob.hrc"
69 #include "glob.hxx"
70 #include "drawdoc.hxx"
71 #include "sdmod.hxx"
72 #include "sdpage.hxx"
73 #include "helpids.h"
74 #include <svl/itemset.hxx>
75 #include "app.hrc"
76 
77 using ::rtl::OUString;
78 using namespace ::com::sun::star::uno;
79 using namespace ::com::sun::star::lang;
80 using namespace ::com::sun::star::style;
81 using namespace ::com::sun::star::container;
82 
83 // ----------------------------------------------------------
84 
SdStyleSheetPool(SfxItemPool const & _rPool,SdDrawDocument * pDocument)85 SdStyleSheetPool::SdStyleSheetPool(SfxItemPool const& _rPool, SdDrawDocument* pDocument)
86 :	SdStyleSheetPoolBase( _rPool )
87 ,	mpActualStyleSheet(NULL)
88 ,	mpDoc(pDocument)
89 {
90 	if( mpDoc )
91 	{
92 		rtl::Reference< SfxStyleSheetPool > xPool( this );
93 
94 		// create graphics family
95 		mxGraphicFamily = new SdStyleFamily( xPool, SD_STYLE_FAMILY_GRAPHICS );
96 		mxCellFamily = new SdStyleFamily( xPool, SD_STYLE_FAMILY_CELL );
97 
98 		mxTableFamily = sdr::table::CreateTableDesignFamily();
99 		Reference< XNamed > xNamed( mxTableFamily, UNO_QUERY );
100 		if( xNamed.is() )
101 			msTableFamilyName = xNamed->getName();
102 
103 		// create presentation families, one for each master page
104 		const sal_uInt16 nCount = mpDoc->GetMasterSdPageCount(PK_STANDARD);
105 		for( sal_uInt16 nPage = 0; nPage < nCount; ++nPage )
106 			AddStyleFamily( mpDoc->GetMasterSdPage(nPage,PK_STANDARD) );
107 
108 //		StartListening( *mpDoc );
109 	}
110 }
111 
112 // ----------------------------------------------------------
113 
~SdStyleSheetPool()114 SdStyleSheetPool::~SdStyleSheetPool()
115 {
116 	DBG_ASSERT( mpDoc == NULL, "sd::SdStyleSheetPool::~SdStyleSheetPool(), dispose me first!" );
117 }
118 
119 // ----------------------------------------------------------
120 
Create(const String & rName,SfxStyleFamily eFamily,sal_uInt16 _nMask)121 SfxStyleSheetBase* SdStyleSheetPool::Create(const String& rName, SfxStyleFamily eFamily, sal_uInt16 _nMask )
122 {
123 	return new SdStyleSheet(rName, *this, eFamily, _nMask);
124 }
125 
126 // ----------------------------------------------------------
127 
Create(const SdStyleSheet & rStyle)128 SfxStyleSheetBase* SdStyleSheetPool::Create(const SdStyleSheet& rStyle)
129 {
130 	return new SdStyleSheet( rStyle );
131 }
132 
133 // ----------------------------------------------------------
134 
GetTitleSheet(const String & rLayoutName)135 SfxStyleSheetBase* SdStyleSheetPool::GetTitleSheet(const String& rLayoutName)
136 {
137 	String aName(rLayoutName);
138 	aName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR ));
139 	aName += String(SdResId(STR_LAYOUT_TITLE));
140 	SfxStyleSheetBase* pResult = Find(aName, SD_STYLE_FAMILY_MASTERPAGE);
141 	return pResult;
142 }
143 
144 /*************************************************************************
145 |*
146 |* eine Liste der Gliederungstextvorlagen fuer ein Praesentationlayout
147 |* erstellen, der Aufrufer muss die Liste wieder loeschen
148 |*
149 \************************************************************************/
150 
CreateOutlineSheetList(const String & rLayoutName)151 List* SdStyleSheetPool::CreateOutlineSheetList (const String& rLayoutName)
152 {
153 	String aName(rLayoutName);
154 	aName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR ));
155 	aName += String(SdResId(STR_LAYOUT_OUTLINE));
156 	List* pList = new List;
157 	for (sal_uInt16 nSheet = 1; nSheet < 10; nSheet++)
158 	{
159 		String aFullName(aName);
160 		aFullName.Append( sal_Unicode( ' ' ));
161 		aFullName.Append( String::CreateFromInt32( (sal_Int32)nSheet ));
162 		SfxStyleSheetBase* pSheet = Find(aFullName, SD_STYLE_FAMILY_MASTERPAGE);
163 		pList->Insert(pSheet, LIST_APPEND);
164 	}
165 	return pList;
166 }
167 
168 /*************************************************************************
169 |*
170 |* StyleSheets mit Defaultweren fuer das genannte Praesentationslayout erzeugen
171 |*
172 \************************************************************************/
173 
CreateLayoutStyleSheets(const String & rLayoutName,sal_Bool bCheck)174 void SdStyleSheetPool::CreateLayoutStyleSheets(const String& rLayoutName, sal_Bool bCheck /*= sal_False*/ )
175 {
176     const sal_uInt16 nUsedMask = SFXSTYLEBIT_ALL & ~SFXSTYLEBIT_USERDEF;
177 
178     (void)bCheck;
179 	sal_Bool bCreated = sal_False;
180 
181 	SfxStyleSheetBase* pSheet = NULL;
182 
183 	String aPrefix(rLayoutName);
184 	String aSep( RTL_CONSTASCII_USTRINGPARAM( SD_LT_SEPARATOR ));
185 	aPrefix.Insert(aSep);
186 
187 	Font aLatinFont, aCJKFont, aCTLFont;
188 
189 	mpDoc->getDefaultFonts( aLatinFont, aCJKFont, aCTLFont );
190 
191 	// Font fuer Titel und Gliederung
192 	SvxFontItem aSvxFontItem( aLatinFont.GetFamily(), aLatinFont.GetName(), aLatinFont.GetStyleName(), aLatinFont.GetPitch(),
193 		                      aLatinFont.GetCharSet(), EE_CHAR_FONTINFO );
194 
195 	SvxFontItem aSvxFontItemCJK( aCJKFont.GetFamily(), aCJKFont.GetName(), aCJKFont.GetStyleName(), aCJKFont.GetPitch(),
196 		                         aCJKFont.GetCharSet(), EE_CHAR_FONTINFO_CJK );
197 
198 	SvxFontItem aSvxFontItemCTL( aCTLFont.GetFamily(), aCTLFont.GetName(), aCTLFont.GetStyleName(), aCTLFont.GetPitch(),
199 		                         aCTLFont.GetCharSet(), EE_CHAR_FONTINFO_CTL );
200 
201 	Font aBulletFont( GetBulletFont() );
202 
203 	/**************************************************************************
204 	* Gliederungsebenen
205 	**************************************************************************/
206 	String aName(SdResId(STR_LAYOUT_OUTLINE));
207 	String aHelpFile;
208 
209 	SfxStyleSheetBase* pParent = NULL;
210     SvxLRSpaceItem aSvxLRSpaceItem( EE_PARA_LRSPACE );
211     SvxULSpaceItem aSvxULSpaceItem( EE_PARA_ULSPACE );
212 	sal_uInt16 nLevel;
213 
214 	for( nLevel = 1; nLevel < 10; nLevel++)
215 	{
216 		String aLevelName(aName);
217 		aLevelName.Append( sal_Unicode( ' ' ));
218 		aLevelName.Append( String::CreateFromInt32( sal_Int32( nLevel )));
219 
220 		aLevelName.Insert(aPrefix, 0);
221 
222 		if (!Find(aLevelName, SD_STYLE_FAMILY_MASTERPAGE))
223 		{
224 			bCreated = sal_True;
225 			pSheet = &Make(aLevelName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
226 			pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_OUTLINE + nLevel );
227 
228 			pSheet->SetParent( String() );
229 
230 			// Attributierung fuer Level 1, die anderen Ebenen "erben"
231 			if (nLevel == 1)
232 			{
233 				SfxItemSet&     rSet = pSheet->GetItemSet();
234 
235 				rSet.Put(aSvxFontItem);
236 				rSet.Put(aSvxFontItemCJK);
237 				rSet.Put(aSvxFontItemCTL);
238 				rSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
239 				rSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
240 				rSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
241 				rSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
242 				rSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
243 				rSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
244                 rSet.Put( SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
245                 rSet.Put( SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ) );
246                 rSet.Put( SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ) );
247                 rSet.Put( SvxShadowedItem(sal_False, EE_CHAR_SHADOW ) );
248                 rSet.Put( SvxContourItem(sal_False, EE_CHAR_OUTLINE ) );
249                 rSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
250                 rSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF) );
251                 rSet.Put( SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR) );
252 				rSet.Put( XLineStyleItem(XLINE_NONE) );
253 				rSet.Put( XFillStyleItem(XFILL_NONE) );
254 				// #i16874# enable kerning by default but only for new documents
255 				rSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
256 
257 				if( nLevel == 1 )
258 				{
259 					Font f( GetBulletFont() );
260 					PutNumBulletItem( pSheet, f );
261 				}
262 			}
263 
264 			sal_uLong nFontSize = 20;
265 			short nFirstIndent = -600;
266 //			sal_uInt16 nIndent = nLevel * 1200;
267 			sal_uInt16 nUpper = 100;
268 
269 			switch (nLevel)
270 			{
271 				case 1:
272 				{
273 					nFontSize = 32;
274 					nUpper = 500;
275 					nFirstIndent = -900;
276 				}
277 				break;
278 
279 				case 2:
280 				{
281 					nFontSize = 28;
282 					nUpper = 400;
283 					nFirstIndent = -800;
284 				}
285 				break;
286 
287 				case 3:
288 				{
289 					nFontSize = 24;
290 					nUpper = 300;
291 				}
292 				break;
293 
294 				case 4:
295 				{
296 					nUpper = 200;
297 				}
298 				break;
299 			}
300 
301 			// FontSize
302 			nFontSize = (sal_uInt16)((nFontSize * 2540L) / 72);  // Pt --> 1/100 mm
303 			SfxItemSet& rOutlineSet = pSheet->GetItemSet();
304 			rOutlineSet.Put( SvxFontHeightItem( nFontSize, 100, EE_CHAR_FONTHEIGHT ) );
305 			rOutlineSet.Put( SvxFontHeightItem( nFontSize, 100, EE_CHAR_FONTHEIGHT_CJK ) );
306 			rOutlineSet.Put( SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( nFontSize ), 100, EE_CHAR_FONTHEIGHT_CTL ) );
307 
308 			// Einzuege
309 /* i35937
310             aSvxLRSpaceItem.SetTxtFirstLineOfst(nFirstIndent);
311 			aSvxLRSpaceItem.SetTxtLeft(nIndent);
312 			aSvxLRSpaceItem.SetRight(0);
313 			aSvxLRSpaceItem.SetBulletFI(sal_True);
314 			pSheet->GetItemSet().Put(aSvxLRSpaceItem);
315 */
316 			// Zeilendurchschuss (Abstand nach unten)
317 			aSvxULSpaceItem.SetUpper(nUpper);
318 			pSheet->GetItemSet().Put(aSvxULSpaceItem);
319 
320 /* i35937
321 			if (nLevel == 1)
322 			{
323 				SfxUInt16Item aBulletStateItem(EE_PARA_BULLETSTATE, 1); // Bullets sichtbar
324 				pSheet->GetItemSet().Put(aBulletStateItem);
325 			}
326 */
327 		}
328 	}
329 
330 	// if we created outline styles, we need to chain them
331 	if( bCreated )
332 	{
333 		pParent = NULL;
334 		for (nLevel = 1; nLevel < 10; nLevel++)
335 		{
336 			String aLevelName(aName);
337 			aLevelName.Append( sal_Unicode( ' ' ));
338 			aLevelName.Append( String::CreateFromInt32( sal_Int32( nLevel )));
339 
340 			aLevelName.Insert(aPrefix, 0);
341 
342 			pSheet = Find(aLevelName, SD_STYLE_FAMILY_MASTERPAGE);
343 
344 			DBG_ASSERT( pSheet, "missing layout style!");
345 
346 			if( pSheet )
347 			{
348 				if (pParent)
349 					pSheet->SetParent(pParent->GetName());
350 				pParent = pSheet;
351 			}
352 		}
353 	}
354 
355 	/**************************************************************************
356 	* Titel
357 	**************************************************************************/
358 	aName = String(SdResId(STR_LAYOUT_TITLE));
359 	aName.Insert(aPrefix, 0);
360 
361 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
362 	{
363 		bCreated = sal_True;
364 
365 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
366 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_TITLE );
367 		pSheet->SetParent(String());
368 		SfxItemSet& rTitleSet = pSheet->GetItemSet();
369 		rTitleSet.Put(XLineStyleItem(XLINE_NONE));
370 		rTitleSet.Put(XFillStyleItem(XFILL_NONE));
371 		rTitleSet.Put(aSvxFontItem);
372 		rTitleSet.Put(aSvxFontItemCJK);
373 		rTitleSet.Put(aSvxFontItemCTL);
374 		rTitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
375 		rTitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
376 		rTitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
377 		rTitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
378 		rTitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
379 		rTitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
380 		rTitleSet.Put(SvxFontHeightItem( 1552, 100, EE_CHAR_FONTHEIGHT ) );		            // 44 pt
381 		rTitleSet.Put(SvxFontHeightItem( 1552, 100, EE_CHAR_FONTHEIGHT_CJK ) );		            // 44 pt
382 		rTitleSet.Put(SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( 1552 ), 100, EE_CHAR_FONTHEIGHT_CTL ) );		            // 44 pt
383         rTitleSet.Put(SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ));
384         rTitleSet.Put(SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ));
385         rTitleSet.Put(SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ));
386         rTitleSet.Put(SvxShadowedItem(sal_False, EE_CHAR_SHADOW ));
387         rTitleSet.Put(SvxContourItem(sal_False, EE_CHAR_OUTLINE ));
388         rTitleSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
389         rTitleSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF ) );
390         rTitleSet.Put(SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR ));
391         rTitleSet.Put(SvxAdjustItem(SVX_ADJUST_CENTER, EE_PARA_JUST ));
392 		rTitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) );
393 //		rTitleSet.Put( SfxUInt16Item(EE_PARA_BULLETSTATE, 0) );
394 		// #i16874# enable kerning by default but only for new documents
395 		rTitleSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
396 
397 		aBulletFont.SetSize(Size(0,1552));					// 44 pt
398 		PutNumBulletItem( pSheet, aBulletFont );
399 	}
400 
401 	/**************************************************************************
402 	* Untertitel
403 	**************************************************************************/
404 	aName = String(SdResId(STR_LAYOUT_SUBTITLE));
405 	aName.Insert(aPrefix, 0);
406 
407 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
408 	{
409 		bCreated = sal_True;
410 
411 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
412 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_SUBTITLE );
413 		pSheet->SetParent(String());
414 		SfxItemSet& rSubtitleSet = pSheet->GetItemSet();
415 		rSubtitleSet.Put(XLineStyleItem(XLINE_NONE));
416 		rSubtitleSet.Put(XFillStyleItem(XFILL_NONE));
417 		rSubtitleSet.Put(aSvxFontItem);
418 		rSubtitleSet.Put(aSvxFontItemCJK);
419 		rSubtitleSet.Put(aSvxFontItemCTL);
420 		rSubtitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
421 		rSubtitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
422 		rSubtitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
423 		rSubtitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
424 		rSubtitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
425 		rSubtitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
426 		rSubtitleSet.Put( SvxFontHeightItem( 1129, 100, EE_CHAR_FONTHEIGHT ) );	    // 32 pt
427 		rSubtitleSet.Put( SvxFontHeightItem( 1129, 100, EE_CHAR_FONTHEIGHT_CJK ) ); // 32 pt
428 		rSubtitleSet.Put( SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( 1129 ), 100, EE_CHAR_FONTHEIGHT_CTL ) ); // 32 pt
429         rSubtitleSet.Put(SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ));
430         rSubtitleSet.Put(SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ));
431         rSubtitleSet.Put(SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ));
432         rSubtitleSet.Put(SvxShadowedItem(sal_False, EE_CHAR_SHADOW ));
433         rSubtitleSet.Put(SvxContourItem(sal_False, EE_CHAR_OUTLINE ));
434         rSubtitleSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
435         rSubtitleSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF ) );
436         rSubtitleSet.Put(SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR ));
437         rSubtitleSet.Put(SvxAdjustItem(SVX_ADJUST_CENTER, EE_PARA_JUST ));
438 		rSubtitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) );
439 //		rSubtitleSet.Put( SfxUInt16Item(EE_PARA_BULLETSTATE, 0) );
440 		// #i16874# enable kerning by default but only for new documents
441 		rSubtitleSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
442 		aSvxLRSpaceItem.SetTxtLeft(0);
443 		rSubtitleSet.Put(aSvxLRSpaceItem);
444 
445 		Font aTmpFont( GetBulletFont() );
446 		aTmpFont.SetSize(Size(0, 1129));		// 32 pt
447 		PutNumBulletItem( pSheet, aTmpFont );
448 	}
449 
450 	/**************************************************************************
451 	* Notizen
452 	**************************************************************************/
453 	aName = String(SdResId(STR_LAYOUT_NOTES));
454 	aName.Insert(aPrefix, 0);
455 
456 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
457 	{
458 		bCreated = sal_True;
459 
460 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
461 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_NOTES );
462 		pSheet->SetParent(String());
463 		SfxItemSet& rNotesSet = pSheet->GetItemSet();
464 		rNotesSet.Put(XLineStyleItem(XLINE_NONE));
465 		rNotesSet.Put(XFillStyleItem(XFILL_NONE));
466 		rNotesSet.Put(aSvxFontItem);
467 		rNotesSet.Put(aSvxFontItemCJK);
468 		rNotesSet.Put(aSvxFontItemCTL);
469 		rNotesSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
470 		rNotesSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
471 		rNotesSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
472 		rNotesSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
473 		rNotesSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
474 		rNotesSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
475 		rNotesSet.Put( SvxFontHeightItem( 705, 100, EE_CHAR_FONTHEIGHT ) );	    // 20 pt
476 		rNotesSet.Put( SvxFontHeightItem( 705, 100, EE_CHAR_FONTHEIGHT_CJK ) ); // 20 pt
477 		rNotesSet.Put( SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( 705 ), 100, EE_CHAR_FONTHEIGHT_CTL ) ); // 20 pt
478         rNotesSet.Put( SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
479         rNotesSet.Put( SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ) );
480         rNotesSet.Put( SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ) );
481         rNotesSet.Put( SvxShadowedItem(sal_False, EE_CHAR_SHADOW ) );
482         rNotesSet.Put( SvxContourItem(sal_False, EE_CHAR_OUTLINE ) );
483         rNotesSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
484         rNotesSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF) );
485         rNotesSet.Put( SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR ) );
486 //		rNotesSet.Put( SfxUInt16Item(EE_PARA_BULLETSTATE, 0) );
487         rNotesSet.Put( SvxLRSpaceItem( 0, 0, 600, -600, EE_PARA_LRSPACE  ) );
488 		// #i16874# enable kerning by default but only for new documents
489 		rNotesSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
490 
491 /* #i35937#
492 		SvxNumBulletItem aNumBullet( (const SvxNumBulletItem&) rNotesSet.Get(EE_PARA_NUMBULLET) );
493 
494 		EditEngine::ImportBulletItem( aNumBullet, 0, NULL,
495 								&(const SvxLRSpaceItem&) rNotesSet.Get( EE_PARA_LRSPACE ) );
496 
497 		( (SfxItemSet&) rNotesSet).Put( aNumBullet );
498 */
499 
500 	}
501 
502 	/**************************************************************************
503 	* Hintergrundobjekte
504 	**************************************************************************/
505 	aName = String(SdResId(STR_LAYOUT_BACKGROUNDOBJECTS));
506 	aName.Insert(aPrefix, 0);
507 
508 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
509 	{
510 		bCreated = sal_True;
511 
512 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
513 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUNDOBJECTS );
514 		pSheet->SetParent(String());
515 		SfxItemSet& rBackgroundObjectsSet = pSheet->GetItemSet();
516 		rBackgroundObjectsSet.Put(SdrShadowItem(sal_False));
517 		rBackgroundObjectsSet.Put(SdrShadowColorItem(String(), Color(COL_GRAY)));
518 		rBackgroundObjectsSet.Put(SdrShadowXDistItem(200));	// 3 mm Schattendistanz
519 		rBackgroundObjectsSet.Put(SdrShadowYDistItem(200));
520 		// #i16874# enable kerning by default but only for new documents
521 		rBackgroundObjectsSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
522 		rBackgroundObjectsSet.Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_BLOCK));
523 	}
524 
525 	/**************************************************************************
526 	* Hintergrund
527 	**************************************************************************/
528 	aName = String(SdResId(STR_LAYOUT_BACKGROUND));
529 	aName.Insert(aPrefix, 0);
530 
531 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
532 	{
533 		bCreated = sal_True;
534 
535 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
536 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUND );
537 		pSheet->SetParent(String());
538 		SfxItemSet& rBackgroundSet = pSheet->GetItemSet();
539 		rBackgroundSet.Put(XLineStyleItem(XLINE_NONE));
540 		rBackgroundSet.Put(XFillStyleItem(XFILL_NONE));
541 		// #i16874# enable kerning by default but only for new documents
542 		rBackgroundSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
543 	}
544 
545 	DBG_ASSERT( !bCheck || !bCreated, "missing layout style sheets detected!" );
546 }
547 
548 /*************************************************************************
549 |*
550 |* Graphik-StyleSheets  aus dem Quellpool in diesen Pool kopieren
551 |*
552 |* (rSourcePool kann nicht const sein, weil SfxStyleSheetPoolBase::Find
553 |*	nicht const ist)
554 |*
555 \************************************************************************/
556 
CopyGraphicSheets(SdStyleSheetPool & rSourcePool)557 void SdStyleSheetPool::CopyGraphicSheets(SdStyleSheetPool& rSourcePool)
558 {
559 	CopySheets( rSourcePool, SD_STYLE_FAMILY_GRAPHICS );
560 }
561 
CopyCellSheets(SdStyleSheetPool & rSourcePool)562 void SdStyleSheetPool::CopyCellSheets(SdStyleSheetPool& rSourcePool)
563 {
564 	CopySheets( rSourcePool, SD_STYLE_FAMILY_CELL );
565 }
566 
CopyTableStyles(SdStyleSheetPool & rSourcePool)567 void SdStyleSheetPool::CopyTableStyles(SdStyleSheetPool& rSourcePool)
568 {
569 	Reference< XIndexAccess > xSource( rSourcePool.mxTableFamily, UNO_QUERY );
570 	Reference< XNameContainer > xTarget( mxTableFamily, UNO_QUERY );
571 	Reference< XSingleServiceFactory > xFactory( mxTableFamily, UNO_QUERY );
572 
573 	if( xSource.is() && xFactory.is() && mxTableFamily.is() )
574 	{
575 		for( sal_Int32 nIndex = 0; nIndex < xSource->getCount(); nIndex++ ) try
576 		{
577 			Reference< XStyle > xSourceTableStyle( xSource->getByIndex( nIndex ), UNO_QUERY );
578 			if( xSourceTableStyle.is() )
579 			{
580 				Reference< XStyle > xNewTableStyle( xFactory->createInstance(), UNO_QUERY );
581 				if( xNewTableStyle.is() )
582 				{
583 					Reference< XNameAccess> xSourceNames( xSourceTableStyle, UNO_QUERY_THROW );
584 
585 					Sequence< OUString > aStyleNames( xSourceNames->getElementNames() );
586 					OUString* pStyleNames( aStyleNames.getArray() );
587 
588 					Reference< XNameReplace > xTargetNames( xNewTableStyle, UNO_QUERY );
589 
590 					sal_Int32 nNames = aStyleNames.getLength();
591 					while( nNames-- )
592 					{
593 						const OUString aName( *pStyleNames++ );
594 						Reference< XStyle > xSourceStyle( xSourceNames->getByName( aName ), UNO_QUERY );
595 						Reference< XStyle > xTargetStyle;
596 						if( xSourceStyle.is() ) try
597 						{
598 							mxCellFamily->getByName( xSourceStyle->getName() ) >>= xTargetStyle;
599 						}
600 						catch( Exception& )
601 						{
602 							DBG_ERROR( "sd::SdStyleSheetPool::CopyTableStyles(), exception caught!" );
603 						}
604 
605 						if( xTargetStyle.is() )
606 							xTargetNames->replaceByName( aName, Any( xTargetStyle ) );
607 					}
608 				}
609 
610                 OUString sName( Reference< XNamed >( xSourceTableStyle, UNO_QUERY_THROW )->getName() );
611                 if( xTarget->hasByName( sName ) )
612                     xTarget->replaceByName( sName, Any( xNewTableStyle ) );
613                 else
614 				    xTarget->insertByName( sName, Any( xNewTableStyle ) );
615 			}
616 		}
617 		catch( Exception& )
618 		{
619 			DBG_ERROR("sd::SdStyleSheetPool::CopyTableStyles(), exception caught!");
620 		}
621 	}
622 }
623 
CopySheets(SdStyleSheetPool & rSourcePool,SfxStyleFamily eFamily)624 void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily )
625 {
626     String aHelpFile;
627 
628 	sal_uInt32 nCount = rSourcePool.aStyles.size();
629 
630 	std::vector< std::pair< rtl::Reference< SfxStyleSheetBase >, String > > aNewStyles;
631 
632 	for (sal_uInt32 n = 0; n < nCount; n++)
633 	{
634 		rtl::Reference< SfxStyleSheetBase > xSheet( rSourcePool.aStyles[sal::static_int_cast<sal_uInt16>(n)] );
635 
636 		if( xSheet->GetFamily() == eFamily )
637 		{
638 			String aName( xSheet->GetName() );
639 			if ( !Find( aName, eFamily ) )
640 			{
641 				rtl::Reference< SfxStyleSheetBase > xNewSheet( &Make( aName, eFamily ) );
642 
643 				xNewSheet->SetMask( xSheet->GetMask() );
644 
645                 // #91588# Also set parent relation for copied style sheets
646                 String aParent( xSheet->GetParent() );
647                 if( aParent.Len() )
648 					aNewStyles.push_back( std::pair< rtl::Reference< SfxStyleSheetBase >, String >( xNewSheet, aParent ) );
649 
650                 xNewSheet->SetHelpId( aHelpFile, xSheet->GetHelpId( aHelpFile ) );
651 				xNewSheet->GetItemSet().Put( xSheet->GetItemSet() );
652 			}
653 		}
654 	}
655 
656 	// set parents on newly added stylesheets
657 	std::vector< std::pair< rtl::Reference< SfxStyleSheetBase >, String > >::iterator aIter;
658 	for( aIter = aNewStyles.begin(); aIter != aNewStyles.end(); aIter++ )
659 	{
660         DBG_ASSERT( rSourcePool.Find( (*aIter).second, eFamily ), "StyleSheet has invalid parent: Family mismatch" );
661 		(*aIter).first->SetParent( (*aIter).second );
662 	}
663 }
664 
665 
666 /*************************************************************************
667 |*
668 |* StyleSheets des genannten Praesentationslayouts aus dem Quellpool in diesen
669 |* Pool kopieren. Kopiert werden nur solche StyleSheets, die in diesem Pool
670 |* noch nicht vorhanden sind.
671 |* pCreatedSheets wird - wenn ungleich NULL - mit Zeigern auf die erzeugten
672 |* StyleSheets gefuellt.
673 |*
674 |* (rSourcePool kann nicht const sein, weil SfxStyleSheetPoolBase::Find
675 |*	nicht const ist)
676 |*
677 \************************************************************************/
678 
CopyLayoutSheets(const String & rLayoutName,SdStyleSheetPool & rSourcePool,SdStyleSheetVector & rCreatedSheets)679 void SdStyleSheetPool::CopyLayoutSheets(const String& rLayoutName, SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets)
680 {
681 	SfxStyleSheetBase* pSheet = NULL;
682 
683 	String aOutlineTag(SdResId(STR_LAYOUT_OUTLINE));
684 
685 	List* pNameList = CreateLayoutSheetNames(rLayoutName);
686 
687     String sEmpty;
688 	String* pName = (String*)pNameList->First();
689 	while (pName)
690 	{
691 		pSheet = Find(*pName, SD_STYLE_FAMILY_MASTERPAGE);
692 		if (!pSheet)
693 		{
694 			SfxStyleSheetBase* pSourceSheet = rSourcePool.Find(*pName, SD_STYLE_FAMILY_MASTERPAGE);
695 			DBG_ASSERT(pSourceSheet, "CopyLayoutSheets: Quellvorlage nicht gefunden");
696 			if (pSourceSheet)
697 			{
698 				// falls einer mit Methusalem-Doks. ankommt
699 				SfxStyleSheetBase& rNewSheet = Make(*pName, SD_STYLE_FAMILY_MASTERPAGE);
700                 rNewSheet.SetHelpId( sEmpty, pSourceSheet->GetHelpId( sEmpty ) );
701 				rNewSheet.GetItemSet().Put(pSourceSheet->GetItemSet());
702 				rCreatedSheets.push_back( SdStyleSheetRef( static_cast< SdStyleSheet* >( &rNewSheet ) ) );
703 			}
704 		}
705 		delete pName;
706 		pName = (String*)pNameList->Next();
707 	}
708 	delete pNameList;
709 
710 	// Sonderbehandlung fuer Gliederungsvorlagen: Parentbeziehungen aufbauen
711 	List* pOutlineSheets = CreateOutlineSheetList(rLayoutName);
712 	SfxStyleSheetBase* pParent = (SfxStyleSheetBase*)pOutlineSheets->First();
713 	pSheet = (SfxStyleSheetBase*)pOutlineSheets->Next();
714 	while (pSheet)
715 	{
716 		// kein Parent?
717 		if (pSheet->GetParent().Len() == 0)
718 			pSheet->SetParent(pParent->GetName());
719 		pParent = pSheet;
720 		pSheet = (SfxStyleSheetBase*)pOutlineSheets->Next();
721 	}
722 	delete pOutlineSheets;
723 }
724 
725 /*************************************************************************
726 |*
727 |* Liste mit den Namen der Praesentationsvorlagen eines Layouts erzeugen.
728 |* Die Liste und die enthaltenen Strings gehoeren dem Caller!
729 |*
730 \************************************************************************/
731 
CreateLayoutSheetNames(const String & rLayoutName) const732 List* SdStyleSheetPool::CreateLayoutSheetNames(const String& rLayoutName) const
733 {
734 	String aPrefix(rLayoutName);
735 	String aSep( RTL_CONSTASCII_USTRINGPARAM( SD_LT_SEPARATOR ));
736 	aPrefix.Insert(aSep);
737 
738 	List* pNameList = new List;
739 
740 	String aName(SdResId(STR_LAYOUT_OUTLINE));
741 	String* pName = NULL;
742 
743 	for (sal_uInt16 nLevel = 1; nLevel < 10; nLevel++)
744 	{
745 		pName = new String(aName);
746 		pName->Append( sal_Unicode( ' ' ));
747 		pName->Append( String::CreateFromInt32( sal_Int32( nLevel )));
748 		pName->Insert(aPrefix, 0);
749 		pNameList->Insert(pName, LIST_APPEND);
750 	}
751 
752 	pName = new String(SdResId(STR_LAYOUT_TITLE));
753 	pName->Insert(aPrefix, 0);
754 	pNameList->Insert(pName, LIST_APPEND);
755 
756 	pName = new String(SdResId(STR_LAYOUT_SUBTITLE));
757 	pName->Insert(aPrefix, 0);
758 	pNameList->Insert(pName, LIST_APPEND);
759 
760 	pName = new String(SdResId(STR_LAYOUT_NOTES));
761 	pName->Insert(aPrefix, 0);
762 	pNameList->Insert(pName, LIST_APPEND);
763 
764 	pName = new String(SdResId(STR_LAYOUT_BACKGROUNDOBJECTS));
765 	pName->Insert(aPrefix, 0);
766 	pNameList->Insert(pName, LIST_APPEND);
767 
768 	pName = new String(SdResId(STR_LAYOUT_BACKGROUND));
769 	pName->Insert(aPrefix, 0);
770 	pNameList->Insert(pName, LIST_APPEND);
771 
772 	return pNameList;
773 }
774 
775 /*************************************************************************
776 |*
777 |* Liste mit Zeigern auf Praesentationsvorlagen eines Layouts erzeugen.
778 |* Die Liste gehoert dem Caller!
779 |*
780 \************************************************************************/
781 
CreateLayoutSheetList(const String & rLayoutName,SdStyleSheetVector & rLayoutSheets)782 void SdStyleSheetPool::CreateLayoutSheetList(const String& rLayoutName, SdStyleSheetVector& rLayoutSheets )
783 {
784 	String aLayoutNameWithSep(rLayoutName);
785 	aLayoutNameWithSep.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR ));
786 	sal_uInt16 nLen = aLayoutNameWithSep.Len();
787 
788 	SfxStyleSheetIterator aIter(this, SD_STYLE_FAMILY_MASTERPAGE);
789 	SfxStyleSheetBase* pSheet = aIter.First();
790 
791 	while (pSheet)
792 	{
793 		if (pSheet->GetName().Match(aLayoutNameWithSep) == nLen)
794 			rLayoutSheets.push_back( SdStyleSheetRef( static_cast< SdStyleSheet* >( pSheet ) ) );
795 		pSheet = aIter.Next();
796 	}
797 }
798 
799 /*************************************************************************
800 |*
801 |* ggfs. PseudoStyleSheets erzeugen
802 |*
803 \************************************************************************/
804 
CreatePseudosIfNecessary()805 void SdStyleSheetPool::CreatePseudosIfNecessary()
806 {
807 	String aName;
808 	String aHelpFile;
809 	SfxStyleSheetBase* pSheet = NULL;
810 	SfxStyleSheetBase* pParent = NULL;
811 
812 	//sal_uInt16 nUsedMask = SFXSTYLEBIT_ALL & ~SFXSTYLEBIT_USERDEF;
813 	sal_uInt16 nUsedMask = SFXSTYLEBIT_USED;
814 
815 	aName = String(SdResId(STR_PSEUDOSHEET_TITLE));
816 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
817 	{
818 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
819 		pSheet->SetParent( String() );
820 		((SfxStyleSheet*)pSheet)->StartListening(*this);
821 	}
822 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_TITLE );
823 
824 	aName = String(SdResId(STR_PSEUDOSHEET_SUBTITLE));
825 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
826 	{
827 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
828 		pSheet->SetParent(String());
829 		((SfxStyleSheet*)pSheet)->StartListening(*this);
830 	}
831 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_SUBTITLE );
832 
833 	aName = String(SdResId(STR_PSEUDOSHEET_BACKGROUNDOBJECTS));
834 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
835 	{
836 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
837 		pSheet->SetParent( String() );
838 		((SfxStyleSheet*)pSheet)->StartListening(*this);
839 	}
840 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUNDOBJECTS );
841 
842 	aName = String(SdResId(STR_PSEUDOSHEET_BACKGROUND));
843 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
844 	{
845 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
846 		pSheet->SetParent( String() );
847 		((SfxStyleSheet*)pSheet)->StartListening(*this);
848 	}
849 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUND );
850 
851 	aName = String(SdResId(STR_PSEUDOSHEET_NOTES));
852 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
853 	{
854 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
855 		pSheet->SetParent( String() );
856 		((SfxStyleSheet*)pSheet)->StartListening(*this);
857 	}
858 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_NOTES );
859 
860 	pParent = NULL;
861 	SetSearchMask(SD_STYLE_FAMILY_PSEUDO);
862 	aName = String(SdResId(STR_PSEUDOSHEET_OUTLINE));
863 	for (sal_uInt16 nLevel = 1; nLevel < 10; nLevel++)
864 	{
865 		String aLevelName(aName);
866 		aLevelName.Append( sal_Unicode( ' ' ));
867 		aLevelName.Append( String::CreateFromInt32( sal_Int32( nLevel )));
868 
869 		if( (pSheet = Find(aLevelName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
870 		{
871 			pSheet = &Make(aLevelName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
872 
873 			if (pSheet)
874 			{
875 				if (pParent)
876 					pSheet->SetParent(pParent->GetName());
877 				pParent = pSheet;
878 				((SfxStyleSheet*)pSheet)->StartListening(*this);
879 			}
880 		}
881 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_OUTLINE + nLevel );
882 	}
883 }
884 
885 
886 /*************************************************************************
887 |*
888 |* Standard-Styles den richtigen Namen in der Programm-Sprache geben
889 |*
890 \************************************************************************/
891 
UpdateStdNames()892 void SdStyleSheetPool::UpdateStdNames()
893 {
894 	String aHelpFile;
895 	sal_uInt32  nCount = aStyles.size();
896 	List* pEraseList = NULL;
897 
898 	for( sal_uInt32 n=0; n < nCount; n++ )
899 	{
900 		SfxStyleSheetBase* pStyle = aStyles[ n ].get();
901 
902 		if( !pStyle->IsUserDefined() )
903 		{
904 			String aOldName		= pStyle->GetName();
905 			sal_uLong nHelpId		= pStyle->GetHelpId( aHelpFile );
906 			SfxStyleFamily eFam	= pStyle->GetFamily();
907 
908 			sal_Bool bHelpKnown = sal_True;
909 			String aNewName;
910 			sal_uInt16 nNameId = 0;
911 			switch( nHelpId )
912 			{
913 				case HID_STANDARD_STYLESHEET_NAME:	nNameId = STR_STANDARD_STYLESHEET_NAME;	break;
914 				case HID_POOLSHEET_OBJWITHARROW:	nNameId = STR_POOLSHEET_OBJWITHARROW;	break;
915 				case HID_POOLSHEET_OBJWITHSHADOW:	nNameId = STR_POOLSHEET_OBJWITHSHADOW;	break;
916 				case HID_POOLSHEET_OBJWITHOUTFILL:	nNameId = STR_POOLSHEET_OBJWITHOUTFILL;	break;
917 				case HID_POOLSHEET_OBJNOLINENOFILL:	nNameId = STR_POOLSHEET_OBJNOLINENOFILL;break;
918 				case HID_POOLSHEET_TEXT:			nNameId = STR_POOLSHEET_TEXT;			break;
919 				case HID_POOLSHEET_TEXTBODY:		nNameId = STR_POOLSHEET_TEXTBODY;		break;
920 				case HID_POOLSHEET_TEXTBODY_JUSTIFY:nNameId = STR_POOLSHEET_TEXTBODY_JUSTIFY;break;
921 				case HID_POOLSHEET_TEXTBODY_INDENT:	nNameId = STR_POOLSHEET_TEXTBODY_INDENT;break;
922 				case HID_POOLSHEET_TITLE:			nNameId = STR_POOLSHEET_TITLE;			break;
923 				case HID_POOLSHEET_TITLE1:			nNameId = STR_POOLSHEET_TITLE1;			break;
924 				case HID_POOLSHEET_TITLE2:			nNameId = STR_POOLSHEET_TITLE2;			break;
925 				case HID_POOLSHEET_HEADLINE:		nNameId = STR_POOLSHEET_HEADLINE;		break;
926 				case HID_POOLSHEET_HEADLINE1:		nNameId = STR_POOLSHEET_HEADLINE1;		break;
927 				case HID_POOLSHEET_HEADLINE2:		nNameId = STR_POOLSHEET_HEADLINE2;		break;
928 				case HID_POOLSHEET_MEASURE:			nNameId = STR_POOLSHEET_MEASURE;		break;
929 
930 				case HID_PSEUDOSHEET_TITLE:			nNameId = STR_PSEUDOSHEET_TITLE; 		break;
931 				case HID_PSEUDOSHEET_SUBTITLE:	 	nNameId = STR_PSEUDOSHEET_SUBTITLE; 	break;
932 				case HID_PSEUDOSHEET_OUTLINE1:
933 				case HID_PSEUDOSHEET_OUTLINE2:
934 				case HID_PSEUDOSHEET_OUTLINE3:
935 				case HID_PSEUDOSHEET_OUTLINE4:
936 				case HID_PSEUDOSHEET_OUTLINE5:
937 				case HID_PSEUDOSHEET_OUTLINE6:
938 				case HID_PSEUDOSHEET_OUTLINE7:
939 				case HID_PSEUDOSHEET_OUTLINE8:
940 				case HID_PSEUDOSHEET_OUTLINE9:		nNameId = STR_PSEUDOSHEET_OUTLINE; 		break;
941 				case HID_PSEUDOSHEET_BACKGROUNDOBJECTS:	nNameId = STR_PSEUDOSHEET_BACKGROUNDOBJECTS; break;
942 				case HID_PSEUDOSHEET_BACKGROUND:	nNameId = STR_PSEUDOSHEET_BACKGROUND; 	break;
943 				case HID_PSEUDOSHEET_NOTES:			nNameId = STR_PSEUDOSHEET_NOTES; 		break;
944 
945 				case HID_SD_CELL_STYLE_DEFAULT:			nNameId = STR_STANDARD_STYLESHEET_NAME; break;
946 				case HID_SD_CELL_STYLE_BANDED:			nNameId = STR_POOLSHEET_BANDED_CELL; break;
947 				case HID_SD_CELL_STYLE_HEADER:			nNameId = STR_POOLSHEET_HEADER; break;
948 				case HID_SD_CELL_STYLE_TOTAL:			nNameId = STR_POOLSHEET_TOTAL; break;
949 				case HID_SD_CELL_STYLE_FIRST_COLUMN:	nNameId = STR_POOLSHEET_FIRST_COLUMN; break;
950 				case HID_SD_CELL_STYLE_LAST_COLUMN:		nNameId = STR_POOLSHEET_LAST_COLUMN; break;
951 
952 				default:
953 					// 0 oder falsche (alte) HelpId
954 					bHelpKnown = sal_False;
955 			}
956 			if( bHelpKnown )
957 			{
958 				if( nNameId )
959 				{
960 					aNewName = String( SdResId( nNameId ) );
961 					if( nNameId == STR_PSEUDOSHEET_OUTLINE )
962 					{
963 						aNewName.Append( sal_Unicode( ' ' ));
964 						aNewName.Append( String::CreateFromInt32( sal_Int32( nHelpId - HID_PSEUDOSHEET_OUTLINE )));
965 					}
966 				}
967 
968 				if( aNewName.Len() && aNewName != aOldName )
969 				{
970 					SfxStyleSheetBase* pSheetFound = Find( aNewName, eFam );
971 
972 					if ( !pSheetFound )
973 					{
974 						// Sheet existiert noch nicht: Altes Sheet wird umbenannt
975 						pStyle->SetName( aNewName );	// setzt auch Parents um
976 					}
977 					else
978 					{
979 						// Sheet existiert schon: Altes Sheet muss entfernt werden
980 						if( !pEraseList )
981 						{
982 							pEraseList = new List();
983 						}
984 
985 						pEraseList->Insert( pStyle );
986 					}
987 				}
988 			}
989 		}
990 	}
991 
992 	if ( pEraseList )
993 	{
994 		// Styles, welche nicht umbenannt werden konnten, muessen entfernt werden
995 		for ( sal_uLong i = 0; i < pEraseList->Count(); i++ )
996 		{
997 			SfxStyleSheetBase* pEraseSheet = ( SfxStyleSheetBase* ) pEraseList->GetObject( i );
998 			Remove( pEraseSheet );
999 		}
1000 
1001 		delete pEraseList;
1002 		pEraseList = NULL;
1003 	}
1004 }
1005 // --------------------------------------------------------------------
1006 // Neues SvxNumBulletItem fuer das jeweilige StyleSheet setzen
1007 // --------------------------------------------------------------------
1008 
PutNumBulletItem(SfxStyleSheetBase * pSheet,Font & rBulletFont)1009 void SdStyleSheetPool::PutNumBulletItem( SfxStyleSheetBase* pSheet,
1010 										 Font& rBulletFont )
1011 {
1012 	String aHelpFile;
1013 	sal_uLong nHelpId = pSheet->GetHelpId( aHelpFile );
1014 	SfxItemSet& rSet = pSheet->GetItemSet();
1015 
1016 	switch ( nHelpId )
1017 	{
1018 		case HID_STANDARD_STYLESHEET_NAME :
1019 		{
1020 			// Standard-Vorlage
1021 			SvxNumberFormat aNumberFormat(SVX_NUM_CHAR_SPECIAL);
1022 			aNumberFormat.SetBulletFont(&rBulletFont);
1023 			aNumberFormat.SetBulletChar( 0x25CF ); // StarBats: 0xF000 + 34
1024 			aNumberFormat.SetBulletRelSize(45);
1025 			aNumberFormat.SetBulletColor(Color(COL_AUTO));
1026 			aNumberFormat.SetStart(1);
1027 			aNumberFormat.SetNumAdjust(SVX_ADJUST_LEFT);
1028 
1029 			SvxNumRule aNumRule( NUM_BULLET_REL_SIZE|NUM_BULLET_COLOR|NUM_CHAR_TEXT_DISTANCE, 10 , sal_False);
1030 
1031 			for( sal_uInt16 i = 0; i < aNumRule.GetLevelCount(); i++ )
1032 			{
1033 				const short nLSpace = (i + 1) * 600;
1034 				aNumberFormat.SetLSpace(nLSpace);
1035 				aNumberFormat.SetAbsLSpace(nLSpace);
1036 				aNumberFormat.SetFirstLineOffset(-600);
1037 				aNumRule.SetLevel( i, aNumberFormat );
1038 			}
1039 
1040 			rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) );
1041 			((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) );
1042 		}
1043 		break;
1044 
1045 		case HID_PSEUDOSHEET_TITLE:
1046 			/* #84013# title gets same bullet as subtitle and not that page symbol anymore */
1047 		case HID_PSEUDOSHEET_SUBTITLE :
1048 		{
1049 			// Untertitel-Vorlage
1050 			SvxNumRule* pDefaultRule = ((SvxNumBulletItem*) rSet.GetPool()->GetSecondaryPool()->GetPoolDefaultItem(EE_PARA_NUMBULLET))->GetNumRule();
1051 			DBG_ASSERT( pDefaultRule, "Wo ist mein Default? [CL]" );
1052 
1053 			if(pDefaultRule)
1054 			{
1055 				SvxNumRule aNumRule(pDefaultRule->GetFeatureFlags(), 10, sal_False);
1056 				for(sal_uInt16 i=0; i < aNumRule.GetLevelCount(); i++)
1057 				{
1058 					SvxNumberFormat aFrmt( pDefaultRule->GetLevel(i) );
1059 					aFrmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
1060                     // #i93908# clear suffix for bullet lists
1061                     aFrmt.SetPrefix(::rtl::OUString());
1062                     aFrmt.SetSuffix(::rtl::OUString());
1063 					aFrmt.SetStart(1);
1064 					aFrmt.SetBulletRelSize(45);
1065 					aFrmt.SetBulletChar( 0x25CF );  // StarBats: 0xF000 + 34
1066 					aFrmt.SetBulletFont(&rBulletFont);
1067 					aNumRule.SetLevel(i, aFrmt);
1068 				}
1069 
1070 				rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) );
1071 				((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) );
1072 			}
1073 		}
1074 		break;
1075 
1076 		case HID_PSEUDOSHEET_OUTLINE + 1 :
1077 		{
1078 			// Gliederungs-Vorlage
1079 			SvxNumberFormat aNumberFormat(SVX_NUM_CHAR_SPECIAL);
1080 			aNumberFormat.SetBulletColor(Color(COL_AUTO));
1081 			aNumberFormat.SetStart(1);
1082 			aNumberFormat.SetNumAdjust(SVX_ADJUST_LEFT);
1083 
1084 			SvxNumRule aNumRule( NUM_BULLET_REL_SIZE|NUM_BULLET_COLOR|NUM_CHAR_TEXT_DISTANCE|NUM_SYMBOL_ALIGNMENT,
1085 								 10, sal_False );
1086 			for( sal_uInt16 i = 0; i < aNumRule.GetLevelCount(); i++ )
1087 			{
1088 				aNumberFormat.SetBulletChar( 0x25CF );  // StarBats: 0xF000 + 34
1089 				aNumberFormat.SetBulletRelSize(45);
1090 				const short nLSpace = (i + 1) * 1200;
1091 				aNumberFormat.SetLSpace(nLSpace);
1092 				aNumberFormat.SetAbsLSpace(nLSpace);
1093 				short nFirstLineOffset = -600;
1094 
1095 				sal_uLong nFontSize = 20;
1096 				switch(i)
1097 				{
1098 					case 0:
1099 					{
1100 						nFontSize = 32;
1101 						nFirstLineOffset = -900;
1102 					}
1103 					break;
1104 
1105 					case 1:
1106 					{
1107 						aNumberFormat.SetBulletChar( 0x2013 );  // StarBats: 0xF000 + 150
1108 						aNumberFormat.SetBulletRelSize(75);
1109 						nFontSize = 32;
1110 						nFirstLineOffset = -900;
1111 					}
1112 					break;
1113 
1114 					case 2:
1115 					{
1116 						nFontSize = 28;
1117 						nFirstLineOffset = -800;
1118 					}
1119 					break;
1120 
1121 					case 3:
1122 					{
1123 						aNumberFormat.SetBulletChar( 0x2013 );  // StarBats: 0xF000 + 150
1124 						aNumberFormat.SetBulletRelSize(75);
1125 						nFontSize = 24;
1126 					}
1127 					break;
1128 				}
1129 
1130 				aNumberFormat.SetFirstLineOffset(nFirstLineOffset);
1131 				nFontSize = (sal_uInt16)((nFontSize * 2540L) / 72);  // Pt --> 1/100 mm
1132 				rBulletFont.SetSize(Size(0,846));		// 24 pt
1133 				aNumberFormat.SetBulletFont(&rBulletFont);
1134 				aNumRule.SetLevel( i, aNumberFormat );
1135 			}
1136 
1137 			rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) );
1138 			((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) );
1139 		}
1140 		break;
1141 	}
1142 }
1143 
1144 /*************************************************************************
1145 |*
1146 |* Standard Bullet-Font erzeugen (ohne Groesse)
1147 |*
1148 \************************************************************************/
1149 
GetBulletFont() const1150 Font SdStyleSheetPool::GetBulletFont() const
1151 {
1152 	Font aBulletFont( String( RTL_CONSTASCII_USTRINGPARAM( "StarSymbol" )), Size(0, 1000) );
1153 	aBulletFont.SetCharSet(RTL_TEXTENCODING_UNICODE);
1154 	aBulletFont.SetWeight(WEIGHT_NORMAL);
1155 	aBulletFont.SetUnderline(UNDERLINE_NONE);
1156 	aBulletFont.SetOverline(UNDERLINE_NONE);
1157 	aBulletFont.SetStrikeout(STRIKEOUT_NONE);
1158 	aBulletFont.SetItalic(ITALIC_NONE);
1159 	aBulletFont.SetOutline(sal_False);
1160 	aBulletFont.SetShadow(sal_False);
1161 	aBulletFont.SetColor(Color(COL_AUTO));
1162 	aBulletFont.SetTransparent(sal_True);
1163 
1164 	return aBulletFont;
1165 }
1166 
1167 // --------------------------------------------------------------------
1168 
AddStyleFamily(const SdPage * pPage)1169 void SdStyleSheetPool::AddStyleFamily( const SdPage* pPage )
1170 {
1171 	rtl::Reference< SfxStyleSheetPool > xPool( this );
1172 	maStyleFamilyMap[pPage] = new SdStyleFamily( xPool, pPage );
1173 }
1174 
1175 // --------------------------------------------------------------------
1176 
RemoveStyleFamily(const SdPage * pPage)1177 void SdStyleSheetPool::RemoveStyleFamily( const SdPage* pPage )
1178 {
1179 	SdStyleFamilyMap::iterator iter( maStyleFamilyMap.find( pPage ) );
1180 	if( iter != maStyleFamilyMap.end() )
1181 	{
1182 		SdStyleFamilyRef xStyle( (*iter).second );
1183 		maStyleFamilyMap.erase( iter );
1184 
1185 		if( xStyle.is() ) try
1186 		{
1187 			xStyle->dispose();
1188 		}
1189 		catch( Exception& )
1190 		{
1191 		}
1192 	}
1193 }
1194 
1195 // --------------------------------------------------------------------
1196 
throwIfDisposed()1197 void SdStyleSheetPool::throwIfDisposed() throw(::com::sun::star::uno::RuntimeException)
1198 {
1199 	if( mpDoc == NULL )
1200 		throw DisposedException();
1201 }
1202 
1203 // --------------------------------------------------------------------
1204 // XServiceInfo
1205 // --------------------------------------------------------------------
1206 
getImplementationName()1207 OUString SAL_CALL SdStyleSheetPool::getImplementationName() throw(RuntimeException)
1208 {
1209 	return OUString( RTL_CONSTASCII_USTRINGPARAM("SdStyleSheetPool") );
1210 }
1211 
1212 // --------------------------------------------------------------------
1213 
1214 static const sal_Char* gpServiceName = "com.sun.star.style.StyleFamilies";
1215 
supportsService(const OUString & ServiceName)1216 sal_Bool SAL_CALL SdStyleSheetPool::supportsService( const OUString& ServiceName ) throw(RuntimeException)
1217 {
1218 	return ServiceName.equalsAscii( gpServiceName );
1219 }
1220 
1221 // --------------------------------------------------------------------
1222 
getSupportedServiceNames()1223 Sequence< OUString > SAL_CALL SdStyleSheetPool::getSupportedServiceNames() throw(RuntimeException)
1224 {
1225 	OUString aStr( OUString::createFromAscii( gpServiceName ) );
1226 	return Sequence< OUString >( &aStr, 1 );
1227 }
1228 
1229 // --------------------------------------------------------------------
1230 // XNameAccess
1231 // --------------------------------------------------------------------
1232 
getByName(const OUString & aName)1233 Any SAL_CALL SdStyleSheetPool::getByName( const OUString& aName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException)
1234 {
1235 	throwIfDisposed();
1236 
1237 	if( mxGraphicFamily->getName() == aName )
1238 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxGraphicFamily.get() ) ) );
1239 
1240 	if( mxCellFamily->getName() == aName )
1241 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxCellFamily.get() ) ) );
1242 
1243 	if( msTableFamilyName == aName )
1244 		return Any( mxTableFamily );
1245 
1246 	for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ )
1247 	{
1248 		if( (*iter).second->getName() == aName )
1249 			return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( (*iter).second.get() ) ) );
1250 	}
1251 
1252 	throw NoSuchElementException();
1253 }
1254 
1255 // --------------------------------------------------------------------
1256 
getElementNames()1257 Sequence< OUString > SAL_CALL SdStyleSheetPool::getElementNames() throw(RuntimeException)
1258 {
1259 	throwIfDisposed();
1260 
1261 	Sequence< OUString > aNames( maStyleFamilyMap.size() + 3 );
1262 	OUString* pNames = aNames.getArray();
1263 
1264 	*pNames++ = mxGraphicFamily->getName();
1265 	*pNames++ = mxCellFamily->getName();
1266 	*pNames++ = msTableFamilyName;
1267 
1268 	for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ )
1269 	{
1270 		*pNames++ = (*iter).second->getName();
1271 	}
1272 
1273 	return aNames;
1274 }
1275 
1276 // --------------------------------------------------------------------
1277 
hasByName(const OUString & aName)1278 sal_Bool SAL_CALL SdStyleSheetPool::hasByName( const OUString& aName ) throw(RuntimeException)
1279 {
1280 	throwIfDisposed();
1281 
1282 	if( mxGraphicFamily->getName() == aName )
1283 		return sal_True;
1284 
1285 	if( mxCellFamily->getName() == aName )
1286 		return sal_True;
1287 
1288 	if( msTableFamilyName == aName )
1289 		return sal_True;
1290 
1291 	for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ )
1292 	{
1293 		if( (*iter).second->getName() == aName )
1294 			return sal_True;
1295 	}
1296 
1297 	return sal_False;
1298 }
1299 
1300 // --------------------------------------------------------------------
1301 // XElementAccess
1302 // --------------------------------------------------------------------
1303 
getElementType()1304 Type SAL_CALL SdStyleSheetPool::getElementType() throw(RuntimeException)
1305 {
1306 	throwIfDisposed();
1307 
1308 	return XNameAccess::static_type();
1309 }
1310 
1311 // --------------------------------------------------------------------
1312 
hasElements()1313 sal_Bool SAL_CALL SdStyleSheetPool::hasElements() throw(RuntimeException)
1314 {
1315 	return sal_True;
1316 }
1317 
1318 // --------------------------------------------------------------------
1319 // XIndexAccess
1320 // --------------------------------------------------------------------
1321 
getCount()1322 sal_Int32 SAL_CALL SdStyleSheetPool::getCount() throw(RuntimeException)
1323 {
1324 	throwIfDisposed();
1325 
1326 	return maStyleFamilyMap.size() + 3;
1327 }
1328 
1329 // --------------------------------------------------------------------
1330 
getByIndex(sal_Int32 Index)1331 Any SAL_CALL SdStyleSheetPool::getByIndex( sal_Int32 Index ) throw(IndexOutOfBoundsException, WrappedTargetException, RuntimeException)
1332 {
1333 	switch( Index )
1334 	{
1335 	case 0:
1336 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxGraphicFamily.get() ) ) );
1337 
1338 	case 1:
1339 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxCellFamily.get() ) ) );
1340 
1341 	case 2:
1342 		return Any( mxTableFamily );
1343 
1344 	default:
1345 		{
1346 			Index -= 3;
1347 			if( (Index < 0) || (Index >= sal::static_int_cast<sal_Int32>(maStyleFamilyMap.size())) )
1348 				throw IndexOutOfBoundsException();
1349 			SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() );
1350 			while( Index-- )
1351 				iter++;
1352 
1353 			return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( (*iter).second.get() ) ) );
1354 		}
1355 	}
1356 }
1357 
1358 // --------------------------------------------------------------------
1359 // XComponent
1360 // --------------------------------------------------------------------
1361 
dispose()1362 void SAL_CALL SdStyleSheetPool::dispose() throw (RuntimeException)
1363 {
1364 	if( mpDoc )
1365 	{
1366 		mxGraphicFamily->dispose();
1367 		mxGraphicFamily.clear();
1368 		mxCellFamily->dispose();
1369 		mxCellFamily.clear();
1370 
1371 		Reference< XComponent > xComp( mxTableFamily, UNO_QUERY );
1372 		if( xComp.is() )
1373 			xComp->dispose();
1374 		mxTableFamily = 0;
1375 
1376 		SdStyleFamilyMap aTempMap;
1377 		aTempMap.swap( maStyleFamilyMap );
1378 
1379 		for( SdStyleFamilyMap::iterator iter( aTempMap.begin() ); iter != aTempMap.end(); iter++ ) try
1380 		{
1381 			(*iter).second->dispose();
1382 		}
1383 		catch( Exception& )
1384 		{
1385 		}
1386 
1387 //		EndListening( *mpDoc );
1388 		mpDoc = 0;
1389 
1390 		Clear();
1391 	}
1392 }
1393 
1394 // --------------------------------------------------------------------
1395 
addEventListener(const Reference<XEventListener> &)1396 void SAL_CALL SdStyleSheetPool::addEventListener( const Reference< XEventListener >& /*xListener*/ ) throw (RuntimeException)
1397 {
1398 }
1399 
1400 // --------------------------------------------------------------------
1401 
removeEventListener(const Reference<XEventListener> &)1402 void SAL_CALL SdStyleSheetPool::removeEventListener( const Reference< XEventListener >& /*aListener*/ ) throw (RuntimeException)
1403 {
1404 }
1405 
1406 // --------------------------------------------------------------------
1407 
CreateChildList(SdStyleSheet * pSheet)1408 SdStyleSheetVector SdStyleSheetPool::CreateChildList( SdStyleSheet* pSheet )
1409 {
1410 	SdStyleSheetVector aResult;
1411 
1412 	sal_uInt16 nListenerCount = pSheet->GetListenerCount();
1413 	if (nListenerCount > 0)
1414 	{
1415 		for (sal_uInt16 n = 0; n < nListenerCount; n++)
1416 		{
1417 			SdStyleSheet* pChild = dynamic_cast< SdStyleSheet* >( pSheet->GetListener(n) );
1418 			if(pChild && pChild->GetParent() == pSheet->GetName())
1419 			{
1420 				aResult.push_back( SdStyleSheetRef( pChild ) );
1421 			}
1422 		}
1423 	}
1424 
1425 	return aResult;
1426 }
1427 
1428 // --------------------------------------------------------------------
1429 
acquire(void)1430 void SAL_CALL SdStyleSheetPool::acquire (void) throw ()
1431 {
1432 	SdStyleSheetPoolBase::acquire();
1433 }
1434 
release(void)1435 void SAL_CALL SdStyleSheetPool::release (void) throw ()
1436 {
1437 	SdStyleSheetPoolBase::release();
1438 }
1439 
1440 // --------------------------------------------------------------------
1441