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