1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_sd.hxx" 30 31 #ifdef SD_DLLIMPLEMENTATION 32 #undef SD_DLLIMPLEMENTATION 33 #endif 34 35 #ifndef _SVX_SVXIDS_HRC 36 #include <svx/svxids.hrc> 37 #endif 38 39 //-> Fonts & Items 40 #include <vcl/font.hxx> 41 #include <editeng/fontitem.hxx> 42 #include <editeng/fhgtitem.hxx> 43 #include <editeng/wghtitem.hxx> 44 #include <editeng/udlnitem.hxx> 45 #include <editeng/crsditem.hxx> 46 #include <editeng/postitem.hxx> 47 #include <editeng/cntritem.hxx> 48 #include <editeng/shdditem.hxx> 49 50 //<- Fonts & Items 51 #include <editeng/bulitem.hxx> 52 #include <editeng/brshitem.hxx> 53 #include <vcl/graph.hxx> 54 #include <svl/itemset.hxx> 55 #include <svl/itempool.hxx> 56 #include <editeng/numitem.hxx> 57 #include <editeng/eeitem.hxx> 58 59 #include "bulmaper.hxx" 60 61 62 #define GetWhich(nSlot) rSet.GetPool()->GetWhich( nSlot ) 63 64 /* #i35937# 65 66 void SdBulletMapper::PreMapNumBulletForDialog( SfxItemSet& rSet ) 67 { 68 if( SFX_ITEM_SET == rSet.GetItemState( EE_PARA_NUMBULLET, sal_False ) ) 69 { 70 SvxNumRule* pRule = ((SvxNumBulletItem*)rSet.GetItem( EE_PARA_NUMBULLET ))->GetNumRule(); 71 72 if(pRule && pRule->GetNumRuleType() == SVX_RULETYPE_PRESENTATION_NUMBERING) 73 { 74 // 10er Bullet Item auf 9er Item mappen 75 SvxNumRule aNewRule( pRule->GetFeatureFlags(), 9, sal_False, SVX_RULETYPE_PRESENTATION_NUMBERING ); 76 77 for( sal_uInt16 i = 0; i < 9; i++ ) 78 aNewRule.SetLevel(i, pRule->GetLevel(i)); 79 80 rSet.Put( SvxNumBulletItem( aNewRule, EE_PARA_NUMBULLET ) ); 81 } 82 } 83 } 84 85 void SdBulletMapper::PostMapNumBulletForDialog( SfxItemSet& rSet ) 86 { 87 if( SFX_ITEM_SET == rSet.GetItemState( EE_PARA_NUMBULLET, sal_False ) ) 88 { 89 SvxNumRule* pRule = ((SvxNumBulletItem*)rSet.GetItem( EE_PARA_NUMBULLET ))->GetNumRule(); 90 91 if(pRule) 92 { 93 pRule->UnLinkGraphics(); 94 if(pRule->GetNumRuleType() == SVX_RULETYPE_PRESENTATION_NUMBERING) 95 { 96 // 9er Bullet Item auf 10er Item mappen 97 SvxNumRule aNewRule( pRule->GetFeatureFlags(), 10, sal_False, SVX_RULETYPE_PRESENTATION_NUMBERING ); 98 99 for( sal_uInt16 i = 0; i < 9; i++ ) 100 aNewRule.SetLevel(i, pRule->GetLevel(i)); 101 102 rSet.Put( SvxNumBulletItem( aNewRule, EE_PARA_NUMBULLET ) ); 103 } 104 } 105 } 106 } 107 */ 108 109 void SdBulletMapper::MapFontsInNumRule( SvxNumRule& aNumRule, const SfxItemSet& rSet ) 110 { 111 const sal_uInt16 nCount = aNumRule.GetLevelCount(); 112 for( sal_uInt16 nLevel = 0; nLevel < nCount; nLevel++ ) 113 { 114 const SvxNumberFormat& rSrcLevel = aNumRule.GetLevel(nLevel); 115 SvxNumberFormat aNewLevel( rSrcLevel ); 116 117 if(rSrcLevel.GetNumberingType() != com::sun::star::style::NumberingType::CHAR_SPECIAL && 118 rSrcLevel.GetNumberingType() != com::sun::star::style::NumberingType::NUMBER_NONE ) 119 { 120 // wenn Aufzaehlung statt Bullet gewaehlt wurde, wird der Bullet-Font 121 // dem Vorlagen-Font angeglichen 122 123 // to be implemented if module supports CJK 124 long nFontID = SID_ATTR_CHAR_FONT; 125 long nFontHeightID = SID_ATTR_CHAR_FONTHEIGHT; 126 long nWeightID = SID_ATTR_CHAR_WEIGHT; 127 long nPostureID = SID_ATTR_CHAR_POSTURE; 128 129 if( 0 ) 130 { 131 nFontID = EE_CHAR_FONTINFO_CJK; 132 nFontHeightID = EE_CHAR_FONTHEIGHT_CJK; 133 nWeightID = EE_CHAR_WEIGHT_CJK; 134 nPostureID = EE_CHAR_ITALIC_CJK; 135 } 136 else if( 0 ) 137 { 138 nFontID = EE_CHAR_FONTINFO_CTL; 139 nFontHeightID = EE_CHAR_FONTHEIGHT_CTL; 140 nWeightID = EE_CHAR_WEIGHT_CTL; 141 nPostureID = EE_CHAR_ITALIC_CTL; 142 } 143 144 Font aMyFont; 145 const SvxFontItem& rFItem = 146 (SvxFontItem&)rSet.Get(GetWhich( (sal_uInt16)nFontID )); 147 aMyFont.SetFamily(rFItem.GetFamily()); 148 aMyFont.SetName(rFItem.GetFamilyName()); 149 aMyFont.SetCharSet(rFItem.GetCharSet()); 150 aMyFont.SetPitch(rFItem.GetPitch()); 151 152 const SvxFontHeightItem& rFHItem = 153 (SvxFontHeightItem&)rSet.Get(GetWhich( (sal_uInt16)nFontHeightID )); 154 aMyFont.SetSize(Size(0, rFHItem.GetHeight())); 155 156 const SvxWeightItem& rWItem = 157 (SvxWeightItem&)rSet.Get(GetWhich( (sal_uInt16)nWeightID )); 158 aMyFont.SetWeight(rWItem.GetWeight()); 159 160 const SvxPostureItem& rPItem = 161 (SvxPostureItem&)rSet.Get(GetWhich( (sal_uInt16)nPostureID )); 162 aMyFont.SetItalic(rPItem.GetPosture()); 163 164 const SvxUnderlineItem& rUItem = (SvxUnderlineItem&)rSet.Get(GetWhich(SID_ATTR_CHAR_UNDERLINE)); 165 aMyFont.SetUnderline(rUItem.GetLineStyle()); 166 167 const SvxOverlineItem& rOItem = (SvxOverlineItem&)rSet.Get(GetWhich(SID_ATTR_CHAR_OVERLINE)); 168 aMyFont.SetOverline(rOItem.GetLineStyle()); 169 170 const SvxCrossedOutItem& rCOItem = (SvxCrossedOutItem&)rSet.Get(GetWhich(SID_ATTR_CHAR_STRIKEOUT)); 171 aMyFont.SetStrikeout(rCOItem.GetStrikeout()); 172 173 const SvxContourItem& rCItem = (SvxContourItem&)rSet.Get(GetWhich(SID_ATTR_CHAR_CONTOUR)); 174 aMyFont.SetOutline(rCItem.GetValue()); 175 176 const SvxShadowedItem& rSItem = (SvxShadowedItem&)rSet.Get(GetWhich(SID_ATTR_CHAR_SHADOWED)); 177 aMyFont.SetShadow(rSItem.GetValue()); 178 179 aNewLevel.SetBulletFont(&aMyFont); 180 // aNewLevel.SetBulletRelSize( 75 ); 181 aNumRule.SetLevel(nLevel, aNewLevel ); 182 } 183 else if( rSrcLevel.GetNumberingType() == com::sun::star::style::NumberingType::CHAR_SPECIAL ) 184 { 185 String aEmpty; 186 aNewLevel.SetPrefix( aEmpty ); 187 aNewLevel.SetSuffix( aEmpty ); 188 aNumRule.SetLevel(nLevel, aNewLevel ); 189 } 190 } 191 } 192