1*24acc546SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*24acc546SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*24acc546SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*24acc546SAndrew Rist  * distributed with this work for additional information
6*24acc546SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*24acc546SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*24acc546SAndrew Rist  * "License"); you may not use this file except in compliance
9*24acc546SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*24acc546SAndrew Rist  *
11*24acc546SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*24acc546SAndrew Rist  *
13*24acc546SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*24acc546SAndrew Rist  * software distributed under the License is distributed on an
15*24acc546SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*24acc546SAndrew Rist  * KIND, either express or implied.  See the License for the
17*24acc546SAndrew Rist  * specific language governing permissions and limitations
18*24acc546SAndrew Rist  * under the License.
19*24acc546SAndrew Rist  *
20*24acc546SAndrew Rist  *************************************************************/
21*24acc546SAndrew Rist 
22*24acc546SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_forms.hxx"
26cdf0e10cSrcweir #include "formcontrolfont.hxx"
27cdf0e10cSrcweir #ifndef _FRM_PROPERTY_HRC_
28cdf0e10cSrcweir #include "property.hrc"
29cdf0e10cSrcweir #endif
30cdf0e10cSrcweir #include "property.hxx"
31cdf0e10cSrcweir #include <tools/debug.hxx>
32cdf0e10cSrcweir #include <comphelper/property.hxx>
33cdf0e10cSrcweir #include <comphelper/types.hxx>
34cdf0e10cSrcweir #include <tools/color.hxx>
35cdf0e10cSrcweir #include <toolkit/helper/emptyfontdescriptor.hxx>
36cdf0e10cSrcweir #include <com/sun/star/awt/FontRelief.hpp>
37cdf0e10cSrcweir #include <com/sun/star/awt/FontEmphasisMark.hpp>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir //.........................................................................
40cdf0e10cSrcweir namespace frm
41cdf0e10cSrcweir {
42cdf0e10cSrcweir //.........................................................................
43cdf0e10cSrcweir 
44cdf0e10cSrcweir     using namespace ::comphelper;
45cdf0e10cSrcweir     using namespace ::com::sun::star::uno;
46cdf0e10cSrcweir     using namespace ::com::sun::star::awt;
47cdf0e10cSrcweir     using namespace ::com::sun::star::lang;
48cdf0e10cSrcweir     using namespace ::com::sun::star::beans;
49cdf0e10cSrcweir 
50cdf0e10cSrcweir     //------------------------------------------------------------------------------
51cdf0e10cSrcweir     namespace
52cdf0e10cSrcweir     {
lcl_extractFontDescriptorAggregate(sal_Int32 _nHandle,const FontDescriptor & _rFont)53cdf0e10cSrcweir         Any lcl_extractFontDescriptorAggregate( sal_Int32 _nHandle, const FontDescriptor& _rFont )
54cdf0e10cSrcweir         {
55cdf0e10cSrcweir             Any aValue;
56cdf0e10cSrcweir             switch ( _nHandle )
57cdf0e10cSrcweir             {
58cdf0e10cSrcweir 		    case PROPERTY_ID_FONT_NAME:
59cdf0e10cSrcweir 			    aValue <<= _rFont.Name;
60cdf0e10cSrcweir 			    break;
61cdf0e10cSrcweir 
62cdf0e10cSrcweir             case PROPERTY_ID_FONT_STYLENAME:
63cdf0e10cSrcweir 			    aValue <<= _rFont.StyleName;
64cdf0e10cSrcweir 			    break;
65cdf0e10cSrcweir 
66cdf0e10cSrcweir             case PROPERTY_ID_FONT_FAMILY:
67cdf0e10cSrcweir 			    aValue <<= (sal_Int16)_rFont.Family;
68cdf0e10cSrcweir 			    break;
69cdf0e10cSrcweir 
70cdf0e10cSrcweir             case PROPERTY_ID_FONT_CHARSET:
71cdf0e10cSrcweir 			    aValue <<= (sal_Int16)_rFont.CharSet;
72cdf0e10cSrcweir 			    break;
73cdf0e10cSrcweir 
74cdf0e10cSrcweir             case PROPERTY_ID_FONT_CHARWIDTH:
75cdf0e10cSrcweir 			    aValue <<= _rFont.CharacterWidth;
76cdf0e10cSrcweir                 break;
77cdf0e10cSrcweir 
78cdf0e10cSrcweir             case PROPERTY_ID_FONT_KERNING:
79cdf0e10cSrcweir 			    aValue <<= _rFont.Kerning;
80cdf0e10cSrcweir                 break;
81cdf0e10cSrcweir 
82cdf0e10cSrcweir             case PROPERTY_ID_FONT_ORIENTATION:
83cdf0e10cSrcweir 			    aValue <<= _rFont.Orientation;
84cdf0e10cSrcweir                 break;
85cdf0e10cSrcweir 
86cdf0e10cSrcweir             case PROPERTY_ID_FONT_PITCH:
87cdf0e10cSrcweir 			    aValue <<= _rFont.Pitch;
88cdf0e10cSrcweir                 break;
89cdf0e10cSrcweir 
90cdf0e10cSrcweir             case PROPERTY_ID_FONT_TYPE:
91cdf0e10cSrcweir 			    aValue <<= _rFont.Type;
92cdf0e10cSrcweir                 break;
93cdf0e10cSrcweir 
94cdf0e10cSrcweir             case PROPERTY_ID_FONT_WIDTH:
95cdf0e10cSrcweir 			    aValue <<= _rFont.Width;
96cdf0e10cSrcweir                 break;
97cdf0e10cSrcweir 
98cdf0e10cSrcweir             case PROPERTY_ID_FONT_HEIGHT:
99cdf0e10cSrcweir 			    aValue <<= (float)( _rFont.Height );
100cdf0e10cSrcweir 			    break;
101cdf0e10cSrcweir 
102cdf0e10cSrcweir             case PROPERTY_ID_FONT_WEIGHT:
103cdf0e10cSrcweir 			    aValue <<= (float)_rFont.Weight;
104cdf0e10cSrcweir 			    break;
105cdf0e10cSrcweir 
106cdf0e10cSrcweir             case PROPERTY_ID_FONT_SLANT:
107cdf0e10cSrcweir 			    aValue = makeAny(_rFont.Slant);
108cdf0e10cSrcweir 			    break;
109cdf0e10cSrcweir 
110cdf0e10cSrcweir             case PROPERTY_ID_FONT_UNDERLINE:
111cdf0e10cSrcweir 			    aValue <<= (sal_Int16)_rFont.Underline;
112cdf0e10cSrcweir 			    break;
113cdf0e10cSrcweir 
114cdf0e10cSrcweir             case PROPERTY_ID_FONT_STRIKEOUT:
115cdf0e10cSrcweir 			    aValue <<= (sal_Int16)_rFont.Strikeout;
116cdf0e10cSrcweir 			    break;
117cdf0e10cSrcweir 
118cdf0e10cSrcweir             case PROPERTY_ID_FONT_WORDLINEMODE:
119cdf0e10cSrcweir 			    aValue = makeAny( (sal_Bool)_rFont.WordLineMode );
120cdf0e10cSrcweir 			    break;
121cdf0e10cSrcweir 
122cdf0e10cSrcweir             default:
123cdf0e10cSrcweir                 OSL_ENSURE( sal_False, "lcl_extractFontDescriptorAggregate: invalid handle!" );
124cdf0e10cSrcweir                 break;
125cdf0e10cSrcweir             }
126cdf0e10cSrcweir             return aValue;
127cdf0e10cSrcweir         }
128cdf0e10cSrcweir     }
129cdf0e10cSrcweir 
130cdf0e10cSrcweir     //=====================================================================
131cdf0e10cSrcweir     //= FontControlModel
132cdf0e10cSrcweir     //=====================================================================
133cdf0e10cSrcweir     //---------------------------------------------------------------------
FontControlModel(bool _bToolkitCompatibleDefaults)134cdf0e10cSrcweir     FontControlModel::FontControlModel( bool _bToolkitCompatibleDefaults )
135cdf0e10cSrcweir         :m_nFontRelief( FontRelief::NONE )
136cdf0e10cSrcweir         ,m_nFontEmphasis( FontEmphasisMark::NONE )
137cdf0e10cSrcweir         ,m_bToolkitCompatibleDefaults( _bToolkitCompatibleDefaults )
138cdf0e10cSrcweir     {
139cdf0e10cSrcweir     }
140cdf0e10cSrcweir 
141cdf0e10cSrcweir     //---------------------------------------------------------------------
FontControlModel(const FontControlModel * _pOriginal)142cdf0e10cSrcweir     FontControlModel::FontControlModel( const FontControlModel* _pOriginal )
143cdf0e10cSrcweir     {
144cdf0e10cSrcweir         m_aFont = _pOriginal->m_aFont;
145cdf0e10cSrcweir 	    m_nFontRelief = _pOriginal->m_nFontRelief;
146cdf0e10cSrcweir 	    m_nFontEmphasis = _pOriginal->m_nFontEmphasis;
147cdf0e10cSrcweir         m_aTextLineColor = _pOriginal->m_aTextLineColor;
148cdf0e10cSrcweir         m_aTextColor = _pOriginal->m_aTextColor;
149cdf0e10cSrcweir         m_bToolkitCompatibleDefaults = _pOriginal->m_bToolkitCompatibleDefaults;
150cdf0e10cSrcweir     }
151cdf0e10cSrcweir 
152cdf0e10cSrcweir     //---------------------------------------------------------------------
isFontRelatedProperty(sal_Int32 _nPropertyHandle) const153cdf0e10cSrcweir     bool FontControlModel::isFontRelatedProperty( sal_Int32 _nPropertyHandle ) const
154cdf0e10cSrcweir     {
155cdf0e10cSrcweir         return isFontAggregateProperty( _nPropertyHandle )
156cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONT )
157cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONTEMPHASISMARK )
158cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONTRELIEF )
159cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_TEXTLINECOLOR )
160cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_TEXTCOLOR );
161cdf0e10cSrcweir     }
162cdf0e10cSrcweir 
163cdf0e10cSrcweir     //---------------------------------------------------------------------
isFontAggregateProperty(sal_Int32 _nPropertyHandle) const164cdf0e10cSrcweir     bool FontControlModel::isFontAggregateProperty( sal_Int32 _nPropertyHandle ) const
165cdf0e10cSrcweir     {
166cdf0e10cSrcweir         return ( _nPropertyHandle == PROPERTY_ID_FONT_CHARWIDTH )
167cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONT_ORIENTATION )
168cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONT_WIDTH )
169cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONT_NAME )
170cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_STYLENAME )
171cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_FAMILY )
172cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_CHARSET )
173cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_HEIGHT )
174cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_WEIGHT )
175cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_SLANT )
176cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_UNDERLINE )
177cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_STRIKEOUT )
178cdf0e10cSrcweir 		    || ( _nPropertyHandle == PROPERTY_ID_FONT_WORDLINEMODE )
179cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONT_PITCH )
180cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONT_KERNING )
181cdf0e10cSrcweir             || ( _nPropertyHandle == PROPERTY_ID_FONT_TYPE );
182cdf0e10cSrcweir     }
183cdf0e10cSrcweir 
184cdf0e10cSrcweir     //---------------------------------------------------------------------
getTextColor() const185cdf0e10cSrcweir     sal_Int32 FontControlModel::getTextColor( ) const
186cdf0e10cSrcweir     {
187cdf0e10cSrcweir         sal_Int32 nColor = COL_TRANSPARENT;
188cdf0e10cSrcweir         m_aTextColor >>= nColor;
189cdf0e10cSrcweir         return nColor;
190cdf0e10cSrcweir     }
191cdf0e10cSrcweir 
192cdf0e10cSrcweir     //---------------------------------------------------------------------
getTextLineColor() const193cdf0e10cSrcweir     sal_Int32 FontControlModel::getTextLineColor( ) const
194cdf0e10cSrcweir     {
195cdf0e10cSrcweir         sal_Int32 nColor = COL_TRANSPARENT;
196cdf0e10cSrcweir         m_aTextLineColor >>= nColor;
197cdf0e10cSrcweir         return nColor;
198cdf0e10cSrcweir     }
199cdf0e10cSrcweir 
200cdf0e10cSrcweir     //------------------------------------------------------------------------------
describeFontRelatedProperties(Sequence<Property> & _rProps) const201cdf0e10cSrcweir     void FontControlModel::describeFontRelatedProperties( Sequence< Property >& /* [out] */ _rProps ) const
202cdf0e10cSrcweir     {
203cdf0e10cSrcweir         sal_Int32 nPos = _rProps.getLength();
204cdf0e10cSrcweir         _rProps.realloc( nPos + 21 );
205cdf0e10cSrcweir         Property* pProperties = _rProps.getArray();
206cdf0e10cSrcweir 
207cdf0e10cSrcweir         DECL_PROP2      ( FONT,               FontDescriptor,   BOUND, MAYBEDEFAULT );
208cdf0e10cSrcweir         DECL_PROP2      ( FONTEMPHASISMARK,   sal_Int16,        BOUND, MAYBEDEFAULT );
209cdf0e10cSrcweir         DECL_PROP2      ( FONTRELIEF,         sal_Int16,        BOUND, MAYBEDEFAULT );
210cdf0e10cSrcweir         DECL_PROP3      ( TEXTCOLOR,          sal_Int32,        BOUND, MAYBEDEFAULT, MAYBEVOID );
211cdf0e10cSrcweir         DECL_PROP3      ( TEXTLINECOLOR,      sal_Int32,        BOUND, MAYBEDEFAULT, MAYBEVOID );
212cdf0e10cSrcweir 
213cdf0e10cSrcweir         DECL_PROP1      ( FONT_CHARWIDTH,     float,            MAYBEDEFAULT );
214cdf0e10cSrcweir         DECL_BOOL_PROP1 ( FONT_KERNING,                         MAYBEDEFAULT );
215cdf0e10cSrcweir         DECL_PROP1      ( FONT_ORIENTATION,   float,            MAYBEDEFAULT );
216cdf0e10cSrcweir         DECL_PROP1      ( FONT_PITCH,         sal_Int16,        MAYBEDEFAULT );
217cdf0e10cSrcweir         DECL_PROP1      ( FONT_TYPE,          sal_Int16,        MAYBEDEFAULT );
218cdf0e10cSrcweir         DECL_PROP1      ( FONT_WIDTH,         sal_Int16,        MAYBEDEFAULT );
219cdf0e10cSrcweir         DECL_PROP1      ( FONT_NAME,          ::rtl::OUString,  MAYBEDEFAULT );
220cdf0e10cSrcweir         DECL_PROP1      ( FONT_STYLENAME,     ::rtl::OUString,  MAYBEDEFAULT );
221cdf0e10cSrcweir         DECL_PROP1      ( FONT_FAMILY,        sal_Int16,        MAYBEDEFAULT );
222cdf0e10cSrcweir         DECL_PROP1      ( FONT_CHARSET,       sal_Int16,        MAYBEDEFAULT );
223cdf0e10cSrcweir         DECL_PROP1      ( FONT_HEIGHT,        float,            MAYBEDEFAULT );
224cdf0e10cSrcweir         DECL_PROP1      ( FONT_WEIGHT,        float,            MAYBEDEFAULT );
225cdf0e10cSrcweir         DECL_PROP1      ( FONT_SLANT,         sal_Int16,        MAYBEDEFAULT );
226cdf0e10cSrcweir         DECL_PROP1      ( FONT_UNDERLINE,     sal_Int16,        MAYBEDEFAULT );
227cdf0e10cSrcweir         DECL_PROP1      ( FONT_STRIKEOUT,     sal_Int16,        MAYBEDEFAULT );
228cdf0e10cSrcweir         DECL_BOOL_PROP1 ( FONT_WORDLINEMODE,                    MAYBEDEFAULT );
229cdf0e10cSrcweir     }
230cdf0e10cSrcweir 
231cdf0e10cSrcweir     //---------------------------------------------------------------------
getFastPropertyValue(Any & _rValue,sal_Int32 _nHandle) const232cdf0e10cSrcweir     void FontControlModel::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const
233cdf0e10cSrcweir     {
234cdf0e10cSrcweir         switch( _nHandle )
235cdf0e10cSrcweir         {
236cdf0e10cSrcweir         case PROPERTY_ID_TEXTCOLOR:
237cdf0e10cSrcweir 			_rValue = m_aTextColor;
238cdf0e10cSrcweir 			break;
239cdf0e10cSrcweir 
240cdf0e10cSrcweir 		case PROPERTY_ID_FONTEMPHASISMARK:
241cdf0e10cSrcweir 			_rValue <<= m_nFontEmphasis;
242cdf0e10cSrcweir 			break;
243cdf0e10cSrcweir 
244cdf0e10cSrcweir         case PROPERTY_ID_FONTRELIEF:
245cdf0e10cSrcweir 			_rValue <<= m_nFontRelief;
246cdf0e10cSrcweir 			break;
247cdf0e10cSrcweir 
248cdf0e10cSrcweir 		case PROPERTY_ID_TEXTLINECOLOR:
249cdf0e10cSrcweir 			_rValue = m_aTextLineColor;
250cdf0e10cSrcweir 			break;
251cdf0e10cSrcweir 
252cdf0e10cSrcweir         case PROPERTY_ID_FONT:
253cdf0e10cSrcweir 			_rValue = makeAny( m_aFont );
254cdf0e10cSrcweir 			break;
255cdf0e10cSrcweir 
256cdf0e10cSrcweir         default:
257cdf0e10cSrcweir             _rValue = lcl_extractFontDescriptorAggregate( _nHandle, m_aFont );
258cdf0e10cSrcweir             break;
259cdf0e10cSrcweir         }
260cdf0e10cSrcweir     }
261cdf0e10cSrcweir 
262cdf0e10cSrcweir     //---------------------------------------------------------------------
convertFastPropertyValue(Any & _rConvertedValue,Any & _rOldValue,sal_Int32 _nHandle,const Any & _rValue)263cdf0e10cSrcweir     sal_Bool FontControlModel::convertFastPropertyValue( Any& _rConvertedValue, Any& _rOldValue,
264cdf0e10cSrcweir                 sal_Int32 _nHandle, const Any& _rValue ) throw( IllegalArgumentException )
265cdf0e10cSrcweir     {
266cdf0e10cSrcweir         sal_Bool bModified = sal_False;
267cdf0e10cSrcweir         switch( _nHandle )
268cdf0e10cSrcweir         {
269cdf0e10cSrcweir 		case PROPERTY_ID_TEXTCOLOR:
270cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_aTextColor, ::getCppuType( static_cast< const sal_Int32* >( NULL ) ) );
271cdf0e10cSrcweir 			break;
272cdf0e10cSrcweir 
273cdf0e10cSrcweir         case PROPERTY_ID_TEXTLINECOLOR:
274cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_aTextLineColor, ::getCppuType( static_cast< sal_Int32* >( NULL ) ) );
275cdf0e10cSrcweir 			break;
276cdf0e10cSrcweir 
277cdf0e10cSrcweir         case PROPERTY_ID_FONTEMPHASISMARK:
278cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_nFontEmphasis );
279cdf0e10cSrcweir 			break;
280cdf0e10cSrcweir 
281cdf0e10cSrcweir         case PROPERTY_ID_FONTRELIEF:
282cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_nFontRelief );
283cdf0e10cSrcweir 			break;
284cdf0e10cSrcweir 
285cdf0e10cSrcweir         case PROPERTY_ID_FONT:
286cdf0e10cSrcweir         {
287cdf0e10cSrcweir             Any aWorkAroundGccLimitation = makeAny( m_aFont );
288cdf0e10cSrcweir             bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, aWorkAroundGccLimitation, ::getCppuType( &m_aFont ) );
289cdf0e10cSrcweir         }
290cdf0e10cSrcweir         break;
291cdf0e10cSrcweir 
292cdf0e10cSrcweir         case PROPERTY_ID_FONT_NAME:
293cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_aFont.Name );
294cdf0e10cSrcweir 			break;
295cdf0e10cSrcweir 
296cdf0e10cSrcweir         case PROPERTY_ID_FONT_STYLENAME:
297cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_aFont.StyleName );
298cdf0e10cSrcweir 			break;
299cdf0e10cSrcweir 
300cdf0e10cSrcweir         case PROPERTY_ID_FONT_FAMILY:
301cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.Family );
302cdf0e10cSrcweir 			break;
303cdf0e10cSrcweir 
304cdf0e10cSrcweir         case PROPERTY_ID_FONT_CHARSET:
305cdf0e10cSrcweir             bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.CharSet );
306cdf0e10cSrcweir 			break;
307cdf0e10cSrcweir 
308cdf0e10cSrcweir         case PROPERTY_ID_FONT_CHARWIDTH:
309cdf0e10cSrcweir             bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, float( m_aFont.CharacterWidth ) );
310cdf0e10cSrcweir             break;
311cdf0e10cSrcweir 
312cdf0e10cSrcweir         case PROPERTY_ID_FONT_KERNING:
313cdf0e10cSrcweir             bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.Kerning );
314cdf0e10cSrcweir             break;
315cdf0e10cSrcweir 
316cdf0e10cSrcweir         case PROPERTY_ID_FONT_ORIENTATION:
317cdf0e10cSrcweir             bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, float( m_aFont.Orientation ) );
318cdf0e10cSrcweir             break;
319cdf0e10cSrcweir 
320cdf0e10cSrcweir         case PROPERTY_ID_FONT_PITCH:
321cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.Pitch );
322cdf0e10cSrcweir 			break;
323cdf0e10cSrcweir 
324cdf0e10cSrcweir         case PROPERTY_ID_FONT_TYPE:
325cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.Type );
326cdf0e10cSrcweir 			break;
327cdf0e10cSrcweir 
328cdf0e10cSrcweir         case PROPERTY_ID_FONT_WIDTH:
329cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.Width );
330cdf0e10cSrcweir 			break;
331cdf0e10cSrcweir 
332cdf0e10cSrcweir         case PROPERTY_ID_FONT_HEIGHT:
333cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, float( m_aFont.Height ) );
334cdf0e10cSrcweir 			break;
335cdf0e10cSrcweir 
336cdf0e10cSrcweir         case PROPERTY_ID_FONT_WEIGHT:
337cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_aFont.Weight );
338cdf0e10cSrcweir 			break;
339cdf0e10cSrcweir 
340cdf0e10cSrcweir         case PROPERTY_ID_FONT_SLANT:
341cdf0e10cSrcweir 			bModified = tryPropertyValueEnum( _rConvertedValue, _rOldValue, _rValue, m_aFont.Slant );
342cdf0e10cSrcweir 			break;
343cdf0e10cSrcweir 
344cdf0e10cSrcweir         case PROPERTY_ID_FONT_UNDERLINE:
345cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.Underline );
346cdf0e10cSrcweir 			break;
347cdf0e10cSrcweir 
348cdf0e10cSrcweir         case PROPERTY_ID_FONT_STRIKEOUT:
349cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_aFont.Strikeout );
350cdf0e10cSrcweir 			break;
351cdf0e10cSrcweir 
352cdf0e10cSrcweir         case PROPERTY_ID_FONT_WORDLINEMODE:
353cdf0e10cSrcweir 			bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Bool)m_aFont.WordLineMode );
354cdf0e10cSrcweir 			break;
355cdf0e10cSrcweir 
356cdf0e10cSrcweir         default:
357cdf0e10cSrcweir             DBG_ERROR( "FontControlModel::convertFastPropertyValue: no font aggregate!" );
358cdf0e10cSrcweir         }
359cdf0e10cSrcweir         return bModified;
360cdf0e10cSrcweir     }
361cdf0e10cSrcweir 
362cdf0e10cSrcweir     //------------------------------------------------------------------------------
setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle,const Any & _rValue)363cdf0e10cSrcweir     void FontControlModel::setFastPropertyValue_NoBroadcast( sal_Int32 _nHandle, const Any& _rValue ) throw ( Exception )
364cdf0e10cSrcweir     {
365cdf0e10cSrcweir         switch( _nHandle )
366cdf0e10cSrcweir         {
367cdf0e10cSrcweir 		case PROPERTY_ID_TEXTCOLOR:
368cdf0e10cSrcweir 			m_aTextColor = _rValue;
369cdf0e10cSrcweir 			break;
370cdf0e10cSrcweir 
371cdf0e10cSrcweir 		case PROPERTY_ID_TEXTLINECOLOR:
372cdf0e10cSrcweir 			m_aTextLineColor = _rValue;
373cdf0e10cSrcweir 			break;
374cdf0e10cSrcweir 
375cdf0e10cSrcweir         case PROPERTY_ID_FONTEMPHASISMARK:
376cdf0e10cSrcweir 			_rValue >>= m_nFontEmphasis;
377cdf0e10cSrcweir 			break;
378cdf0e10cSrcweir 
379cdf0e10cSrcweir         case PROPERTY_ID_FONTRELIEF:
380cdf0e10cSrcweir 			_rValue >>= m_nFontRelief;
381cdf0e10cSrcweir 			break;
382cdf0e10cSrcweir 
383cdf0e10cSrcweir         case PROPERTY_ID_FONT:
384cdf0e10cSrcweir 			_rValue >>= m_aFont;
385cdf0e10cSrcweir 			break;
386cdf0e10cSrcweir 
387cdf0e10cSrcweir         case PROPERTY_ID_FONT_NAME:
388cdf0e10cSrcweir 			_rValue >>= m_aFont.Name;
389cdf0e10cSrcweir 			break;
390cdf0e10cSrcweir 
391cdf0e10cSrcweir         case PROPERTY_ID_FONT_STYLENAME:
392cdf0e10cSrcweir 			_rValue >>= m_aFont.StyleName;
393cdf0e10cSrcweir 			break;
394cdf0e10cSrcweir 
395cdf0e10cSrcweir         case PROPERTY_ID_FONT_FAMILY:
396cdf0e10cSrcweir 			_rValue >>= m_aFont.Family;
397cdf0e10cSrcweir 			break;
398cdf0e10cSrcweir 
399cdf0e10cSrcweir         case PROPERTY_ID_FONT_CHARSET:
400cdf0e10cSrcweir 			_rValue >>= m_aFont.CharSet;
401cdf0e10cSrcweir 			break;
402cdf0e10cSrcweir 
403cdf0e10cSrcweir         case PROPERTY_ID_FONT_CHARWIDTH:
404cdf0e10cSrcweir 			_rValue >>= m_aFont.CharacterWidth;
405cdf0e10cSrcweir             break;
406cdf0e10cSrcweir 
407cdf0e10cSrcweir         case PROPERTY_ID_FONT_KERNING:
408cdf0e10cSrcweir 			_rValue >>= m_aFont.Kerning;
409cdf0e10cSrcweir             break;
410cdf0e10cSrcweir 
411cdf0e10cSrcweir         case PROPERTY_ID_FONT_ORIENTATION:
412cdf0e10cSrcweir 			_rValue >>= m_aFont.Orientation;
413cdf0e10cSrcweir             break;
414cdf0e10cSrcweir 
415cdf0e10cSrcweir         case PROPERTY_ID_FONT_PITCH:
416cdf0e10cSrcweir 			_rValue >>= m_aFont.Pitch;
417cdf0e10cSrcweir             break;
418cdf0e10cSrcweir 
419cdf0e10cSrcweir         case PROPERTY_ID_FONT_TYPE:
420cdf0e10cSrcweir 			_rValue >>= m_aFont.Type;
421cdf0e10cSrcweir             break;
422cdf0e10cSrcweir 
423cdf0e10cSrcweir         case PROPERTY_ID_FONT_WIDTH:
424cdf0e10cSrcweir 			_rValue >>= m_aFont.Width;
425cdf0e10cSrcweir             break;
426cdf0e10cSrcweir 
427cdf0e10cSrcweir         case PROPERTY_ID_FONT_HEIGHT:
428cdf0e10cSrcweir         {
429cdf0e10cSrcweir             float nHeight = 0;
430cdf0e10cSrcweir             _rValue >>= nHeight;
431cdf0e10cSrcweir 			m_aFont.Height = (sal_Int16)nHeight;
432cdf0e10cSrcweir         }
433cdf0e10cSrcweir 		break;
434cdf0e10cSrcweir 
435cdf0e10cSrcweir         case PROPERTY_ID_FONT_WEIGHT:
436cdf0e10cSrcweir 			_rValue >>= m_aFont.Weight;
437cdf0e10cSrcweir 			break;
438cdf0e10cSrcweir 
439cdf0e10cSrcweir         case PROPERTY_ID_FONT_SLANT:
440cdf0e10cSrcweir             _rValue >>= m_aFont.Slant;
441cdf0e10cSrcweir 			break;
442cdf0e10cSrcweir 
443cdf0e10cSrcweir         case PROPERTY_ID_FONT_UNDERLINE:
444cdf0e10cSrcweir 			_rValue >>= m_aFont.Underline;
445cdf0e10cSrcweir 			break;
446cdf0e10cSrcweir 
447cdf0e10cSrcweir         case PROPERTY_ID_FONT_STRIKEOUT:
448cdf0e10cSrcweir 			_rValue >>= m_aFont.Strikeout;
449cdf0e10cSrcweir 			break;
450cdf0e10cSrcweir 
451cdf0e10cSrcweir         case PROPERTY_ID_FONT_WORDLINEMODE:
452cdf0e10cSrcweir         {
453cdf0e10cSrcweir             sal_Bool bWordLineMode = sal_False;
454cdf0e10cSrcweir             _rValue >>= bWordLineMode;
455cdf0e10cSrcweir 			m_aFont.WordLineMode = bWordLineMode;
456cdf0e10cSrcweir         }
457cdf0e10cSrcweir         break;
458cdf0e10cSrcweir 
459cdf0e10cSrcweir         default:
460cdf0e10cSrcweir             DBG_ERROR( "FontControlModel::setFastPropertyValue_NoBroadcast: invalid property!" );
461cdf0e10cSrcweir         }
462cdf0e10cSrcweir     }
463cdf0e10cSrcweir 
464cdf0e10cSrcweir     //------------------------------------------------------------------------------
getPropertyDefaultByHandle(sal_Int32 _nHandle) const465cdf0e10cSrcweir     Any FontControlModel::getPropertyDefaultByHandle( sal_Int32 _nHandle ) const
466cdf0e10cSrcweir     {
467cdf0e10cSrcweir         Any aReturn;
468cdf0e10cSrcweir         // some defaults which are the same, not matter if we have toolkit-compatible
469cdf0e10cSrcweir         // defaults or not
470cdf0e10cSrcweir         bool bHandled = false;
471cdf0e10cSrcweir         switch( _nHandle )
472cdf0e10cSrcweir         {
473cdf0e10cSrcweir 		case PROPERTY_ID_TEXTCOLOR:
474cdf0e10cSrcweir 		case PROPERTY_ID_TEXTLINECOLOR:
475cdf0e10cSrcweir             // void
476cdf0e10cSrcweir             bHandled = true;
477cdf0e10cSrcweir             break;
478cdf0e10cSrcweir 
479cdf0e10cSrcweir         case PROPERTY_ID_FONTEMPHASISMARK:
480cdf0e10cSrcweir 			aReturn <<= FontEmphasisMark::NONE;
481cdf0e10cSrcweir             bHandled = true;
482cdf0e10cSrcweir 			break;
483cdf0e10cSrcweir 
484cdf0e10cSrcweir 		case PROPERTY_ID_FONTRELIEF:
485cdf0e10cSrcweir 			aReturn <<= FontRelief::NONE;
486cdf0e10cSrcweir             bHandled = true;
487cdf0e10cSrcweir 			break;
488cdf0e10cSrcweir         }
489cdf0e10cSrcweir         if ( bHandled )
490cdf0e10cSrcweir             return aReturn;
491cdf0e10cSrcweir 
492cdf0e10cSrcweir         if ( m_bToolkitCompatibleDefaults )
493cdf0e10cSrcweir         {
494cdf0e10cSrcweir             EmptyFontDescriptor aEmpty;
495cdf0e10cSrcweir             if ( PROPERTY_ID_FONT == _nHandle )
496cdf0e10cSrcweir                 return makeAny( (FontDescriptor)aEmpty );
497cdf0e10cSrcweir             return lcl_extractFontDescriptorAggregate( _nHandle, aEmpty );
498cdf0e10cSrcweir         }
499cdf0e10cSrcweir 
500cdf0e10cSrcweir         switch( _nHandle )
501cdf0e10cSrcweir         {
502cdf0e10cSrcweir 		case PROPERTY_ID_FONT:
503cdf0e10cSrcweir 			aReturn <<= ::comphelper::getDefaultFont();
504cdf0e10cSrcweir 			break;
505cdf0e10cSrcweir 
506cdf0e10cSrcweir 		case PROPERTY_ID_FONT_WORDLINEMODE:
507cdf0e10cSrcweir 			aReturn = makeBoolAny(sal_False);
508cdf0e10cSrcweir 
509cdf0e10cSrcweir 		case PROPERTY_ID_FONT_NAME:
510cdf0e10cSrcweir 		case PROPERTY_ID_FONT_STYLENAME:
511cdf0e10cSrcweir 			aReturn <<= ::rtl::OUString();
512cdf0e10cSrcweir 
513cdf0e10cSrcweir 		case PROPERTY_ID_FONT_FAMILY:
514cdf0e10cSrcweir 		case PROPERTY_ID_FONT_CHARSET:
515cdf0e10cSrcweir 		case PROPERTY_ID_FONT_SLANT:
516cdf0e10cSrcweir 		case PROPERTY_ID_FONT_UNDERLINE:
517cdf0e10cSrcweir 		case PROPERTY_ID_FONT_STRIKEOUT:
518cdf0e10cSrcweir 			aReturn <<= (sal_Int16)1;
519cdf0e10cSrcweir             break;
520cdf0e10cSrcweir 
521cdf0e10cSrcweir         case PROPERTY_ID_FONT_KERNING:
522cdf0e10cSrcweir 			aReturn = makeBoolAny(sal_False);
523cdf0e10cSrcweir             break;
524cdf0e10cSrcweir 
525cdf0e10cSrcweir         case PROPERTY_ID_FONT_PITCH:
526cdf0e10cSrcweir         case PROPERTY_ID_FONT_TYPE:
527cdf0e10cSrcweir         case PROPERTY_ID_FONT_WIDTH:
528cdf0e10cSrcweir 			aReturn <<= (sal_Int16)0;
529cdf0e10cSrcweir             break;
530cdf0e10cSrcweir 
531cdf0e10cSrcweir         case PROPERTY_ID_FONT_HEIGHT:
532cdf0e10cSrcweir 		case PROPERTY_ID_FONT_WEIGHT:
533cdf0e10cSrcweir         case PROPERTY_ID_FONT_CHARWIDTH:
534cdf0e10cSrcweir         case PROPERTY_ID_FONT_ORIENTATION:
535cdf0e10cSrcweir 			aReturn <<= (float)0;
536cdf0e10cSrcweir 			break;
537cdf0e10cSrcweir 
538cdf0e10cSrcweir         default:
539cdf0e10cSrcweir             DBG_ERROR( "FontControlModel::getPropertyDefaultByHandle: invalid property!" );
540cdf0e10cSrcweir         }
541cdf0e10cSrcweir 
542cdf0e10cSrcweir         return aReturn;
543cdf0e10cSrcweir     }
544cdf0e10cSrcweir 
545cdf0e10cSrcweir //.........................................................................
546cdf0e10cSrcweir }   // namespace frm
547cdf0e10cSrcweir //.........................................................................
548