1*cde9e8dcSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*cde9e8dcSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*cde9e8dcSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*cde9e8dcSAndrew Rist * distributed with this work for additional information 6*cde9e8dcSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*cde9e8dcSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*cde9e8dcSAndrew Rist * "License"); you may not use this file except in compliance 9*cde9e8dcSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*cde9e8dcSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*cde9e8dcSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*cde9e8dcSAndrew Rist * software distributed under the License is distributed on an 15*cde9e8dcSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*cde9e8dcSAndrew Rist * KIND, either express or implied. See the License for the 17*cde9e8dcSAndrew Rist * specific language governing permissions and limitations 18*cde9e8dcSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*cde9e8dcSAndrew Rist *************************************************************/ 21*cde9e8dcSAndrew Rist 22*cde9e8dcSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_chart2.hxx" 26cdf0e10cSrcweir #include "CharacterPropertyItemConverter.hxx" 27cdf0e10cSrcweir #include "SchWhichPairs.hxx" 28cdf0e10cSrcweir #include "macros.hxx" 29cdf0e10cSrcweir #include "ItemPropertyMap.hxx" 30cdf0e10cSrcweir #include "RelativeSizeHelper.hxx" 31cdf0e10cSrcweir #include <editeng/memberids.hrc> 32cdf0e10cSrcweir #include <editeng/eeitem.hxx> 33cdf0e10cSrcweir #include <editeng/udlnitem.hxx> 34cdf0e10cSrcweir #include <editeng/fontitem.hxx> 35cdf0e10cSrcweir #include <editeng/crsditem.hxx> 36cdf0e10cSrcweir #include <editeng/postitem.hxx> 37cdf0e10cSrcweir #include <editeng/wghtitem.hxx> 38cdf0e10cSrcweir #include <editeng/fhgtitem.hxx> 39cdf0e10cSrcweir #include <svl/stritem.hxx> 40cdf0e10cSrcweir 41cdf0e10cSrcweir #include <com/sun/star/beans/XPropertyState.hpp> 42cdf0e10cSrcweir #include <com/sun/star/chart2/XFormattedString.hpp> 43cdf0e10cSrcweir 44cdf0e10cSrcweir using namespace ::com::sun::star; 45cdf0e10cSrcweir 46cdf0e10cSrcweir namespace 47cdf0e10cSrcweir { 48cdf0e10cSrcweir ::comphelper::ItemPropertyMapType & lcl_GetCharacterPropertyPropertyMap() 49cdf0e10cSrcweir { 50cdf0e10cSrcweir static ::comphelper::ItemPropertyMapType aCharacterPropertyMap( 51cdf0e10cSrcweir ::comphelper::MakeItemPropertyMap 52cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_COLOR, "CharColor", 0 ) 53cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_LANGUAGE, "CharLocale", MID_LANG_LOCALE ) 54cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_LANGUAGE_CJK, "CharLocaleAsian", MID_LANG_LOCALE ) 55cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_LANGUAGE_CTL, "CharLocaleComplex", MID_LANG_LOCALE ) 56cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_FONTHEIGHT, "CharHeight", 0 ) 57cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_ITALIC, "CharPosture", 0 ) 58cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_WEIGHT, "CharWeight", 0 ) 59cdf0e10cSrcweir 60cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_STRIKEOUT, "CharStrikeout", MID_CROSS_OUT ) 61cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_WLM, "CharWordMode", 0 ) 62cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_SHADOW, "CharShadowed", 0 ) 63cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_RELIEF, "CharRelief", 0 ) 64cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_OUTLINE, "CharContoured", 0 ) 65cdf0e10cSrcweir IPM_MAP_ENTRY( EE_CHAR_EMPHASISMARK, "CharEmphasis", 0 ) 66cdf0e10cSrcweir 67cdf0e10cSrcweir IPM_MAP_ENTRY( EE_PARA_WRITINGDIR, "WritingMode", 0 ) 68cdf0e10cSrcweir 69cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_FONTHEIGHT_CJK, "CharHeightAsian", 0 ) 70cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_FONTHEIGHT_CTL, "CharHeightComplex", 0 ) 71cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_WEIGHT_CJK, "CharWeightAsian", 0 ) 72cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_WEIGHT_CTL, "CharWeightComplex", 0 ) 73cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_ITALIC_CJK, "CharPostureAsian", 0 ) 74cdf0e10cSrcweir // IPM_MAP_ENTRY( EE_CHAR_ITALIC_CTL, "CharPostureComplex", 0 ) 75cdf0e10cSrcweir IPM_MAP_ENTRY( EE_PARA_ASIANCJKSPACING, "ParaIsCharacterDistance", 0 ) 76cdf0e10cSrcweir ); 77cdf0e10cSrcweir 78cdf0e10cSrcweir return aCharacterPropertyMap; 79cdf0e10cSrcweir } 80cdf0e10cSrcweir } // anonymous namespace 81cdf0e10cSrcweir 82cdf0e10cSrcweir // ======================================== 83cdf0e10cSrcweir 84cdf0e10cSrcweir namespace chart 85cdf0e10cSrcweir { 86cdf0e10cSrcweir namespace wrapper 87cdf0e10cSrcweir { 88cdf0e10cSrcweir 89cdf0e10cSrcweir CharacterPropertyItemConverter::CharacterPropertyItemConverter( 90cdf0e10cSrcweir const uno::Reference< beans::XPropertySet > & rPropertySet, 91cdf0e10cSrcweir SfxItemPool& rItemPool ) : 92cdf0e10cSrcweir ItemConverter( rPropertySet, rItemPool ) 93cdf0e10cSrcweir {} 94cdf0e10cSrcweir 95cdf0e10cSrcweir CharacterPropertyItemConverter::CharacterPropertyItemConverter( 96cdf0e10cSrcweir const uno::Reference< beans::XPropertySet > & rPropertySet, 97cdf0e10cSrcweir SfxItemPool& rItemPool, 98cdf0e10cSrcweir ::std::auto_ptr< awt::Size > pRefSize, 99cdf0e10cSrcweir const ::rtl::OUString & rRefSizePropertyName, 100cdf0e10cSrcweir const uno::Reference< beans::XPropertySet > & rRefSizePropSet ) : 101cdf0e10cSrcweir ItemConverter( rPropertySet, rItemPool ), 102cdf0e10cSrcweir m_pRefSize( pRefSize ), 103cdf0e10cSrcweir m_aRefSizePropertyName( rRefSizePropertyName ), 104cdf0e10cSrcweir m_xRefSizePropSet( rRefSizePropSet.is() ? rRefSizePropSet : rPropertySet ) 105cdf0e10cSrcweir {} 106cdf0e10cSrcweir 107cdf0e10cSrcweir CharacterPropertyItemConverter::~CharacterPropertyItemConverter() 108cdf0e10cSrcweir {} 109cdf0e10cSrcweir 110cdf0e10cSrcweir const sal_uInt16 * CharacterPropertyItemConverter::GetWhichPairs() const 111cdf0e10cSrcweir { 112cdf0e10cSrcweir return nCharacterPropertyWhichPairs; 113cdf0e10cSrcweir } 114cdf0e10cSrcweir 115cdf0e10cSrcweir bool CharacterPropertyItemConverter::GetItemProperty( tWhichIdType nWhichId, tPropertyNameWithMemberId & rOutProperty ) const 116cdf0e10cSrcweir { 117cdf0e10cSrcweir ::comphelper::ItemPropertyMapType & rMap( lcl_GetCharacterPropertyPropertyMap()); 118cdf0e10cSrcweir ::comphelper::ItemPropertyMapType::const_iterator aIt( rMap.find( nWhichId )); 119cdf0e10cSrcweir 120cdf0e10cSrcweir if( aIt == rMap.end()) 121cdf0e10cSrcweir return false; 122cdf0e10cSrcweir 123cdf0e10cSrcweir rOutProperty =(*aIt).second; 124cdf0e10cSrcweir return true; 125cdf0e10cSrcweir } 126cdf0e10cSrcweir 127cdf0e10cSrcweir void CharacterPropertyItemConverter::FillSpecialItem( 128cdf0e10cSrcweir sal_uInt16 nWhichId, SfxItemSet & rOutItemSet ) const 129cdf0e10cSrcweir throw( uno::Exception ) 130cdf0e10cSrcweir { 131cdf0e10cSrcweir switch( nWhichId ) 132cdf0e10cSrcweir { 133cdf0e10cSrcweir case EE_CHAR_FONTINFO: 134cdf0e10cSrcweir case EE_CHAR_FONTINFO_CJK: 135cdf0e10cSrcweir case EE_CHAR_FONTINFO_CTL: 136cdf0e10cSrcweir { 137cdf0e10cSrcweir ::rtl::OUString aPostfix; 138cdf0e10cSrcweir if( nWhichId == EE_CHAR_FONTINFO_CJK ) 139cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 140cdf0e10cSrcweir else if( nWhichId == EE_CHAR_FONTINFO_CTL ) 141cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 142cdf0e10cSrcweir 143cdf0e10cSrcweir SvxFontItem aItem( nWhichId ); 144cdf0e10cSrcweir 145cdf0e10cSrcweir aItem.PutValue( GetPropertySet()->getPropertyValue( C2U( "CharFontName" ) + aPostfix), 146cdf0e10cSrcweir MID_FONT_FAMILY_NAME ); 147cdf0e10cSrcweir aItem.PutValue( GetPropertySet()->getPropertyValue( C2U( "CharFontFamily" ) + aPostfix), 148cdf0e10cSrcweir MID_FONT_FAMILY ); 149cdf0e10cSrcweir aItem.PutValue( GetPropertySet()->getPropertyValue( C2U( "CharFontStyleName" ) + aPostfix), 150cdf0e10cSrcweir MID_FONT_STYLE_NAME ); 151cdf0e10cSrcweir aItem.PutValue( GetPropertySet()->getPropertyValue( C2U( "CharFontCharSet" ) + aPostfix), 152cdf0e10cSrcweir MID_FONT_CHAR_SET ); 153cdf0e10cSrcweir aItem.PutValue( GetPropertySet()->getPropertyValue( C2U( "CharFontPitch" ) + aPostfix), 154cdf0e10cSrcweir MID_FONT_PITCH ); 155cdf0e10cSrcweir 156cdf0e10cSrcweir rOutItemSet.Put( aItem ); 157cdf0e10cSrcweir } 158cdf0e10cSrcweir break; 159cdf0e10cSrcweir 160cdf0e10cSrcweir case EE_CHAR_UNDERLINE: 161cdf0e10cSrcweir { 162cdf0e10cSrcweir SvxUnderlineItem aItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE); 163cdf0e10cSrcweir bool bModified = false; 164cdf0e10cSrcweir 165cdf0e10cSrcweir uno::Any aValue( GetPropertySet()->getPropertyValue( C2U( "CharUnderline" ))); 166cdf0e10cSrcweir if( aValue.hasValue()) 167cdf0e10cSrcweir { 168cdf0e10cSrcweir aItem.PutValue( aValue, MID_TL_STYLE ); 169cdf0e10cSrcweir bModified = true; 170cdf0e10cSrcweir } 171cdf0e10cSrcweir 172cdf0e10cSrcweir aValue = GetPropertySet()->getPropertyValue( C2U( "CharUnderlineHasColor" )); 173cdf0e10cSrcweir if( aValue.hasValue() && 174cdf0e10cSrcweir ( *reinterpret_cast< const sal_Bool * >( aValue.getValue()) != sal_False )) 175cdf0e10cSrcweir { 176cdf0e10cSrcweir aItem.PutValue( aValue, MID_TL_HASCOLOR ); 177cdf0e10cSrcweir bModified = true; 178cdf0e10cSrcweir } 179cdf0e10cSrcweir 180cdf0e10cSrcweir aValue = GetPropertySet()->getPropertyValue( C2U( "CharUnderlineColor" )); 181cdf0e10cSrcweir if( aValue.hasValue()) 182cdf0e10cSrcweir { 183cdf0e10cSrcweir aItem.PutValue( aValue, MID_TL_COLOR ); 184cdf0e10cSrcweir bModified = true; 185cdf0e10cSrcweir } 186cdf0e10cSrcweir 187cdf0e10cSrcweir if( bModified ) 188cdf0e10cSrcweir rOutItemSet.Put( aItem ); 189cdf0e10cSrcweir } 190cdf0e10cSrcweir break; 191cdf0e10cSrcweir 192cdf0e10cSrcweir case EE_CHAR_OVERLINE: 193cdf0e10cSrcweir { 194cdf0e10cSrcweir SvxOverlineItem aItem( UNDERLINE_NONE, EE_CHAR_OVERLINE ); 195cdf0e10cSrcweir bool bModified = false; 196cdf0e10cSrcweir 197cdf0e10cSrcweir uno::Any aValue( GetPropertySet()->getPropertyValue( C2U( "CharOverline" ) ) ); 198cdf0e10cSrcweir if ( aValue.hasValue() ) 199cdf0e10cSrcweir { 200cdf0e10cSrcweir aItem.PutValue( aValue, MID_TL_STYLE ); 201cdf0e10cSrcweir bModified = true; 202cdf0e10cSrcweir } 203cdf0e10cSrcweir 204cdf0e10cSrcweir aValue = GetPropertySet()->getPropertyValue( C2U( "CharOverlineHasColor" ) ); 205cdf0e10cSrcweir if ( aValue.hasValue() && 206cdf0e10cSrcweir ( *reinterpret_cast< const sal_Bool* >( aValue.getValue() ) != sal_False ) ) 207cdf0e10cSrcweir { 208cdf0e10cSrcweir aItem.PutValue( aValue, MID_TL_HASCOLOR ); 209cdf0e10cSrcweir bModified = true; 210cdf0e10cSrcweir } 211cdf0e10cSrcweir 212cdf0e10cSrcweir aValue = GetPropertySet()->getPropertyValue( C2U( "CharOverlineColor" ) ); 213cdf0e10cSrcweir if ( aValue.hasValue() ) 214cdf0e10cSrcweir { 215cdf0e10cSrcweir aItem.PutValue( aValue, MID_TL_COLOR ); 216cdf0e10cSrcweir bModified = true; 217cdf0e10cSrcweir } 218cdf0e10cSrcweir 219cdf0e10cSrcweir if ( bModified ) 220cdf0e10cSrcweir { 221cdf0e10cSrcweir rOutItemSet.Put( aItem ); 222cdf0e10cSrcweir } 223cdf0e10cSrcweir } 224cdf0e10cSrcweir break; 225cdf0e10cSrcweir 226cdf0e10cSrcweir case EE_CHAR_ITALIC: 227cdf0e10cSrcweir case EE_CHAR_ITALIC_CJK: 228cdf0e10cSrcweir case EE_CHAR_ITALIC_CTL: 229cdf0e10cSrcweir { 230cdf0e10cSrcweir ::rtl::OUString aPostfix; 231cdf0e10cSrcweir if( nWhichId == EE_CHAR_ITALIC_CJK ) 232cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 233cdf0e10cSrcweir else if( nWhichId == EE_CHAR_ITALIC_CTL ) 234cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 235cdf0e10cSrcweir 236cdf0e10cSrcweir SvxPostureItem aItem( ITALIC_NONE, nWhichId ); 237cdf0e10cSrcweir 238cdf0e10cSrcweir uno::Any aValue( GetPropertySet()->getPropertyValue( C2U( "CharPosture" ) + aPostfix)); 239cdf0e10cSrcweir if( aValue.hasValue()) 240cdf0e10cSrcweir { 241cdf0e10cSrcweir aItem.PutValue( aValue, MID_POSTURE ); 242cdf0e10cSrcweir rOutItemSet.Put( aItem ); 243cdf0e10cSrcweir } 244cdf0e10cSrcweir } 245cdf0e10cSrcweir break; 246cdf0e10cSrcweir 247cdf0e10cSrcweir case EE_CHAR_WEIGHT: 248cdf0e10cSrcweir case EE_CHAR_WEIGHT_CJK: 249cdf0e10cSrcweir case EE_CHAR_WEIGHT_CTL: 250cdf0e10cSrcweir { 251cdf0e10cSrcweir ::rtl::OUString aPostfix; 252cdf0e10cSrcweir if( nWhichId == EE_CHAR_WEIGHT_CJK ) 253cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 254cdf0e10cSrcweir else if( nWhichId == EE_CHAR_WEIGHT_CTL ) 255cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 256cdf0e10cSrcweir 257cdf0e10cSrcweir SvxWeightItem aItem( WEIGHT_NORMAL, nWhichId ); 258cdf0e10cSrcweir 259cdf0e10cSrcweir uno::Any aValue( GetPropertySet()->getPropertyValue( C2U( "CharWeight" ) + aPostfix)); 260cdf0e10cSrcweir if( aValue.hasValue()) 261cdf0e10cSrcweir { 262cdf0e10cSrcweir aItem.PutValue( aValue, MID_WEIGHT ); 263cdf0e10cSrcweir rOutItemSet.Put( aItem ); 264cdf0e10cSrcweir } 265cdf0e10cSrcweir } 266cdf0e10cSrcweir break; 267cdf0e10cSrcweir 268cdf0e10cSrcweir case EE_CHAR_FONTHEIGHT: 269cdf0e10cSrcweir case EE_CHAR_FONTHEIGHT_CJK: 270cdf0e10cSrcweir case EE_CHAR_FONTHEIGHT_CTL: 271cdf0e10cSrcweir { 272cdf0e10cSrcweir ::rtl::OUString aPostfix; 273cdf0e10cSrcweir if( nWhichId == EE_CHAR_FONTHEIGHT_CJK ) 274cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 275cdf0e10cSrcweir else if( nWhichId == EE_CHAR_FONTHEIGHT_CTL ) 276cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 277cdf0e10cSrcweir 278cdf0e10cSrcweir SvxFontHeightItem aItem( 240, 100, nWhichId ); 279cdf0e10cSrcweir 280cdf0e10cSrcweir try 281cdf0e10cSrcweir { 282cdf0e10cSrcweir uno::Any aValue( GetPropertySet()->getPropertyValue( C2U( "CharHeight" ) + aPostfix )); 283cdf0e10cSrcweir float fHeight; 284cdf0e10cSrcweir if( aValue >>= fHeight ) 285cdf0e10cSrcweir { 286cdf0e10cSrcweir if( m_pRefSize.get()) 287cdf0e10cSrcweir { 288cdf0e10cSrcweir awt::Size aOldRefSize; 289cdf0e10cSrcweir if( GetRefSizePropertySet()->getPropertyValue( m_aRefSizePropertyName ) >>= aOldRefSize ) 290cdf0e10cSrcweir { 291cdf0e10cSrcweir // calculate font height in view 292cdf0e10cSrcweir fHeight = static_cast< float >( 293cdf0e10cSrcweir RelativeSizeHelper::calculate( fHeight, aOldRefSize, *m_pRefSize )); 294cdf0e10cSrcweir aValue <<= fHeight; 295cdf0e10cSrcweir } 296cdf0e10cSrcweir } 297cdf0e10cSrcweir 298cdf0e10cSrcweir aItem.PutValue( aValue, MID_FONTHEIGHT ); 299cdf0e10cSrcweir rOutItemSet.Put( aItem ); 300cdf0e10cSrcweir } 301cdf0e10cSrcweir } 302cdf0e10cSrcweir catch( uno::Exception & ex ) 303cdf0e10cSrcweir { 304cdf0e10cSrcweir ASSERT_EXCEPTION( ex ); 305cdf0e10cSrcweir } 306cdf0e10cSrcweir } 307cdf0e10cSrcweir break; 308cdf0e10cSrcweir 309cdf0e10cSrcweir case SID_CHAR_DLG_PREVIEW_STRING: 310cdf0e10cSrcweir { 311cdf0e10cSrcweir uno::Reference< chart2::XFormattedString > xFormattedString( GetPropertySet(), uno::UNO_QUERY ); 312cdf0e10cSrcweir if( xFormattedString.is() ) 313cdf0e10cSrcweir { 314cdf0e10cSrcweir ::rtl::OUString aString = xFormattedString->getString(); 315cdf0e10cSrcweir rOutItemSet.Put( SfxStringItem( nWhichId, aString ) ); 316cdf0e10cSrcweir } 317cdf0e10cSrcweir else 318cdf0e10cSrcweir rOutItemSet.Put( SfxStringItem( nWhichId, C2U( "" ) ) ); 319cdf0e10cSrcweir } 320cdf0e10cSrcweir break; 321cdf0e10cSrcweir 322cdf0e10cSrcweir case EE_PARA_FORBIDDENRULES: 323cdf0e10cSrcweir case EE_PARA_HANGINGPUNCTUATION: 324cdf0e10cSrcweir rOutItemSet.DisableItem( nWhichId ); 325cdf0e10cSrcweir break; 326cdf0e10cSrcweir } 327cdf0e10cSrcweir } 328cdf0e10cSrcweir 329cdf0e10cSrcweir bool CharacterPropertyItemConverter::ApplySpecialItem( 330cdf0e10cSrcweir sal_uInt16 nWhichId, const SfxItemSet & rItemSet ) 331cdf0e10cSrcweir throw( uno::Exception ) 332cdf0e10cSrcweir { 333cdf0e10cSrcweir bool bChanged = false; 334cdf0e10cSrcweir uno::Any aValue; 335cdf0e10cSrcweir 336cdf0e10cSrcweir switch( nWhichId ) 337cdf0e10cSrcweir { 338cdf0e10cSrcweir case EE_CHAR_FONTINFO: 339cdf0e10cSrcweir case EE_CHAR_FONTINFO_CJK: 340cdf0e10cSrcweir case EE_CHAR_FONTINFO_CTL: 341cdf0e10cSrcweir { 342cdf0e10cSrcweir ::rtl::OUString aPostfix; 343cdf0e10cSrcweir if( nWhichId == EE_CHAR_FONTINFO_CJK ) 344cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 345cdf0e10cSrcweir else if( nWhichId == EE_CHAR_FONTINFO_CTL ) 346cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 347cdf0e10cSrcweir 348cdf0e10cSrcweir const SvxFontItem & rItem = 349cdf0e10cSrcweir static_cast< const SvxFontItem & >( 350cdf0e10cSrcweir rItemSet.Get( nWhichId )); 351cdf0e10cSrcweir 352cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_FONT_FAMILY_NAME )) 353cdf0e10cSrcweir { 354cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharFontName" ) + aPostfix )) 355cdf0e10cSrcweir { 356cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharFontName" ) + aPostfix, aValue ); 357cdf0e10cSrcweir bChanged = true; 358cdf0e10cSrcweir } 359cdf0e10cSrcweir } 360cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_FONT_FAMILY )) 361cdf0e10cSrcweir { 362cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharFontFamily" ) + aPostfix )) 363cdf0e10cSrcweir { 364cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharFontFamily" ) + aPostfix, aValue ); 365cdf0e10cSrcweir bChanged = true; 366cdf0e10cSrcweir } 367cdf0e10cSrcweir } 368cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_FONT_STYLE_NAME )) 369cdf0e10cSrcweir { 370cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharFontStyleName" ) + aPostfix )) 371cdf0e10cSrcweir { 372cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharFontStyleName" ) + aPostfix, aValue ); 373cdf0e10cSrcweir bChanged = true; 374cdf0e10cSrcweir } 375cdf0e10cSrcweir } 376cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_FONT_CHAR_SET )) 377cdf0e10cSrcweir { 378cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharFontCharSet" ) + aPostfix )) 379cdf0e10cSrcweir { 380cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharFontCharSet" ) + aPostfix, aValue ); 381cdf0e10cSrcweir bChanged = true; 382cdf0e10cSrcweir } 383cdf0e10cSrcweir } 384cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_FONT_PITCH )) 385cdf0e10cSrcweir { 386cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharFontPitch" ) + aPostfix )) 387cdf0e10cSrcweir { 388cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharFontPitch" ) + aPostfix, aValue ); 389cdf0e10cSrcweir bChanged = true; 390cdf0e10cSrcweir } 391cdf0e10cSrcweir } 392cdf0e10cSrcweir } 393cdf0e10cSrcweir break; 394cdf0e10cSrcweir 395cdf0e10cSrcweir case EE_CHAR_UNDERLINE: 396cdf0e10cSrcweir { 397cdf0e10cSrcweir const SvxUnderlineItem & rItem = 398cdf0e10cSrcweir static_cast< const SvxUnderlineItem & >( 399cdf0e10cSrcweir rItemSet.Get( nWhichId )); 400cdf0e10cSrcweir 401cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_TL_STYLE )) 402cdf0e10cSrcweir { 403cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharUnderline" ) )) 404cdf0e10cSrcweir { 405cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharUnderline" ), aValue ); 406cdf0e10cSrcweir bChanged = true; 407cdf0e10cSrcweir } 408cdf0e10cSrcweir } 409cdf0e10cSrcweir 410cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_TL_COLOR )) 411cdf0e10cSrcweir { 412cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharUnderlineColor" ) )) 413cdf0e10cSrcweir { 414cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharUnderlineColor" ), aValue ); 415cdf0e10cSrcweir bChanged = true; 416cdf0e10cSrcweir } 417cdf0e10cSrcweir } 418cdf0e10cSrcweir 419cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_TL_HASCOLOR )) 420cdf0e10cSrcweir { 421cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharUnderlineHasColor" ) )) 422cdf0e10cSrcweir { 423cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharUnderlineHasColor" ), aValue ); 424cdf0e10cSrcweir bChanged = true; 425cdf0e10cSrcweir } 426cdf0e10cSrcweir } 427cdf0e10cSrcweir } 428cdf0e10cSrcweir break; 429cdf0e10cSrcweir 430cdf0e10cSrcweir case EE_CHAR_OVERLINE: 431cdf0e10cSrcweir { 432cdf0e10cSrcweir const SvxOverlineItem& rItem = static_cast< const SvxOverlineItem & >( rItemSet.Get( nWhichId ) ); 433cdf0e10cSrcweir 434cdf0e10cSrcweir if ( rItem.QueryValue( aValue, MID_TL_STYLE ) ) 435cdf0e10cSrcweir { 436cdf0e10cSrcweir if ( aValue != GetPropertySet()->getPropertyValue( C2U( "CharOverline" ) ) ) 437cdf0e10cSrcweir { 438cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharOverline" ), aValue ); 439cdf0e10cSrcweir bChanged = true; 440cdf0e10cSrcweir } 441cdf0e10cSrcweir } 442cdf0e10cSrcweir 443cdf0e10cSrcweir if ( rItem.QueryValue( aValue, MID_TL_COLOR ) ) 444cdf0e10cSrcweir { 445cdf0e10cSrcweir if ( aValue != GetPropertySet()->getPropertyValue( C2U( "CharOverlineColor" ) ) ) 446cdf0e10cSrcweir { 447cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharOverlineColor" ), aValue ); 448cdf0e10cSrcweir bChanged = true; 449cdf0e10cSrcweir } 450cdf0e10cSrcweir } 451cdf0e10cSrcweir 452cdf0e10cSrcweir if ( rItem.QueryValue( aValue, MID_TL_HASCOLOR ) ) 453cdf0e10cSrcweir { 454cdf0e10cSrcweir if ( aValue != GetPropertySet()->getPropertyValue( C2U( "CharOverlineHasColor" ) ) ) 455cdf0e10cSrcweir { 456cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharOverlineHasColor" ), aValue ); 457cdf0e10cSrcweir bChanged = true; 458cdf0e10cSrcweir } 459cdf0e10cSrcweir } 460cdf0e10cSrcweir } 461cdf0e10cSrcweir break; 462cdf0e10cSrcweir 463cdf0e10cSrcweir case EE_CHAR_ITALIC: 464cdf0e10cSrcweir case EE_CHAR_ITALIC_CJK: 465cdf0e10cSrcweir case EE_CHAR_ITALIC_CTL: 466cdf0e10cSrcweir { 467cdf0e10cSrcweir ::rtl::OUString aPostfix; 468cdf0e10cSrcweir if( nWhichId == EE_CHAR_ITALIC_CJK ) 469cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 470cdf0e10cSrcweir else if( nWhichId == EE_CHAR_ITALIC_CTL ) 471cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 472cdf0e10cSrcweir 473cdf0e10cSrcweir const SvxPostureItem & rItem = 474cdf0e10cSrcweir static_cast< const SvxPostureItem & >( 475cdf0e10cSrcweir rItemSet.Get( nWhichId )); 476cdf0e10cSrcweir 477cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_POSTURE )) 478cdf0e10cSrcweir { 479cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharPosture" ) + aPostfix)) 480cdf0e10cSrcweir { 481cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharPosture" ) + aPostfix, aValue ); 482cdf0e10cSrcweir bChanged = true; 483cdf0e10cSrcweir } 484cdf0e10cSrcweir } 485cdf0e10cSrcweir } 486cdf0e10cSrcweir break; 487cdf0e10cSrcweir 488cdf0e10cSrcweir case EE_CHAR_WEIGHT: 489cdf0e10cSrcweir case EE_CHAR_WEIGHT_CJK: 490cdf0e10cSrcweir case EE_CHAR_WEIGHT_CTL: 491cdf0e10cSrcweir { 492cdf0e10cSrcweir ::rtl::OUString aPostfix; 493cdf0e10cSrcweir if( nWhichId == EE_CHAR_WEIGHT_CJK ) 494cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 495cdf0e10cSrcweir else if( nWhichId == EE_CHAR_WEIGHT_CTL ) 496cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 497cdf0e10cSrcweir 498cdf0e10cSrcweir const SvxWeightItem & rItem = 499cdf0e10cSrcweir static_cast< const SvxWeightItem & >( 500cdf0e10cSrcweir rItemSet.Get( nWhichId )); 501cdf0e10cSrcweir 502cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_WEIGHT )) 503cdf0e10cSrcweir { 504cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharWeight" ) + aPostfix)) 505cdf0e10cSrcweir { 506cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharWeight" ) + aPostfix, aValue ); 507cdf0e10cSrcweir bChanged = true; 508cdf0e10cSrcweir } 509cdf0e10cSrcweir } 510cdf0e10cSrcweir } 511cdf0e10cSrcweir break; 512cdf0e10cSrcweir 513cdf0e10cSrcweir case EE_CHAR_FONTHEIGHT: 514cdf0e10cSrcweir case EE_CHAR_FONTHEIGHT_CJK: 515cdf0e10cSrcweir case EE_CHAR_FONTHEIGHT_CTL: 516cdf0e10cSrcweir { 517cdf0e10cSrcweir ::rtl::OUString aPostfix; 518cdf0e10cSrcweir if( nWhichId == EE_CHAR_FONTHEIGHT_CJK ) 519cdf0e10cSrcweir aPostfix = C2U( "Asian" ); 520cdf0e10cSrcweir else if( nWhichId == EE_CHAR_FONTHEIGHT_CTL ) 521cdf0e10cSrcweir aPostfix = C2U( "Complex" ); 522cdf0e10cSrcweir 523cdf0e10cSrcweir const SvxFontHeightItem & rItem = 524cdf0e10cSrcweir static_cast< const SvxFontHeightItem & >( 525cdf0e10cSrcweir rItemSet.Get( nWhichId )); 526cdf0e10cSrcweir 527cdf0e10cSrcweir try 528cdf0e10cSrcweir { 529cdf0e10cSrcweir if( rItem.QueryValue( aValue, MID_FONTHEIGHT ) ) 530cdf0e10cSrcweir { 531cdf0e10cSrcweir bool bSetValue = false; 532cdf0e10cSrcweir if( aValue != GetPropertySet()->getPropertyValue( C2U( "CharHeight" ) + aPostfix )) 533cdf0e10cSrcweir bSetValue = true; 534cdf0e10cSrcweir else 535cdf0e10cSrcweir { 536cdf0e10cSrcweir if( m_pRefSize.get() ) 537cdf0e10cSrcweir { 538cdf0e10cSrcweir awt::Size aNewRefSize = *m_pRefSize; 539cdf0e10cSrcweir awt::Size aOldRefSize; 540cdf0e10cSrcweir if( GetRefSizePropertySet()->getPropertyValue( m_aRefSizePropertyName ) >>= aOldRefSize ) 541cdf0e10cSrcweir { 542cdf0e10cSrcweir if( aNewRefSize.Width != aOldRefSize.Width 543cdf0e10cSrcweir || aNewRefSize.Height != aOldRefSize.Height ) 544cdf0e10cSrcweir bSetValue = true; 545cdf0e10cSrcweir } 546cdf0e10cSrcweir } 547cdf0e10cSrcweir } 548cdf0e10cSrcweir if( bSetValue ) 549cdf0e10cSrcweir { 550cdf0e10cSrcweir // set new reference size only if there was a reference size before (auto-scaling on) 551cdf0e10cSrcweir if( m_pRefSize.get() && 552cdf0e10cSrcweir GetRefSizePropertySet()->getPropertyValue( m_aRefSizePropertyName ).hasValue()) 553cdf0e10cSrcweir { 554cdf0e10cSrcweir GetRefSizePropertySet()->setPropertyValue( m_aRefSizePropertyName, 555cdf0e10cSrcweir uno::makeAny( *m_pRefSize )); 556cdf0e10cSrcweir } 557cdf0e10cSrcweir 558cdf0e10cSrcweir GetPropertySet()->setPropertyValue( C2U( "CharHeight" ) + aPostfix, aValue ); 559cdf0e10cSrcweir bChanged = true; 560cdf0e10cSrcweir } 561cdf0e10cSrcweir } 562cdf0e10cSrcweir } 563cdf0e10cSrcweir catch( uno::Exception & ex ) 564cdf0e10cSrcweir { 565cdf0e10cSrcweir ASSERT_EXCEPTION( ex ); 566cdf0e10cSrcweir } 567cdf0e10cSrcweir } 568cdf0e10cSrcweir break; 569cdf0e10cSrcweir } 570cdf0e10cSrcweir 571cdf0e10cSrcweir return bChanged; 572cdf0e10cSrcweir } 573cdf0e10cSrcweir 574cdf0e10cSrcweir uno::Reference< beans::XPropertySet > 575cdf0e10cSrcweir CharacterPropertyItemConverter::GetRefSizePropertySet() const 576cdf0e10cSrcweir { 577cdf0e10cSrcweir return m_xRefSizePropSet; 578cdf0e10cSrcweir } 579cdf0e10cSrcweir 580cdf0e10cSrcweir } // namespace wrapper 581cdf0e10cSrcweir } // namespace chart 582