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
10*cde9e8dcSAndrew Rist *
11*cde9e8dcSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*cde9e8dcSAndrew Rist *
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.
19*cde9e8dcSAndrew Rist *
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 {
lcl_GetCharacterPropertyPropertyMap()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
CharacterPropertyItemConverter(const uno::Reference<beans::XPropertySet> & rPropertySet,SfxItemPool & rItemPool)89cdf0e10cSrcweir CharacterPropertyItemConverter::CharacterPropertyItemConverter(
90cdf0e10cSrcweir const uno::Reference< beans::XPropertySet > & rPropertySet,
91cdf0e10cSrcweir SfxItemPool& rItemPool ) :
92cdf0e10cSrcweir ItemConverter( rPropertySet, rItemPool )
93cdf0e10cSrcweir {}
94cdf0e10cSrcweir
CharacterPropertyItemConverter(const uno::Reference<beans::XPropertySet> & rPropertySet,SfxItemPool & rItemPool,::std::auto_ptr<awt::Size> pRefSize,const::rtl::OUString & rRefSizePropertyName,const uno::Reference<beans::XPropertySet> & rRefSizePropSet)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
~CharacterPropertyItemConverter()107cdf0e10cSrcweir CharacterPropertyItemConverter::~CharacterPropertyItemConverter()
108cdf0e10cSrcweir {}
109cdf0e10cSrcweir
GetWhichPairs() const110cdf0e10cSrcweir const sal_uInt16 * CharacterPropertyItemConverter::GetWhichPairs() const
111cdf0e10cSrcweir {
112cdf0e10cSrcweir return nCharacterPropertyWhichPairs;
113cdf0e10cSrcweir }
114cdf0e10cSrcweir
GetItemProperty(tWhichIdType nWhichId,tPropertyNameWithMemberId & rOutProperty) const115cdf0e10cSrcweir 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
FillSpecialItem(sal_uInt16 nWhichId,SfxItemSet & rOutItemSet) const127cdf0e10cSrcweir 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
ApplySpecialItem(sal_uInt16 nWhichId,const SfxItemSet & rItemSet)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 >
GetRefSizePropertySet() const575cdf0e10cSrcweir CharacterPropertyItemConverter::GetRefSizePropertySet() const
576cdf0e10cSrcweir {
577cdf0e10cSrcweir return m_xRefSizePropSet;
578cdf0e10cSrcweir }
579cdf0e10cSrcweir
580cdf0e10cSrcweir } // namespace wrapper
581cdf0e10cSrcweir } // namespace chart
582