1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_chart2.hxx" 26 #include "CharacterProperties.hxx" 27 #include "ContainerHelper.hxx" 28 #include "macros.hxx" 29 30 #include <com/sun/star/beans/PropertyAttribute.hpp> 31 #include <com/sun/star/style/XStyle.hpp> 32 #include <com/sun/star/awt/FontSlant.hpp> 33 #include <com/sun/star/lang/Locale.hpp> 34 35 #include <com/sun/star/awt/FontFamily.hpp> 36 #include <com/sun/star/awt/CharSet.hpp> 37 #include <com/sun/star/awt/FontPitch.hpp> 38 #include <com/sun/star/awt/FontUnderline.hpp> 39 #include <com/sun/star/awt/FontWeight.hpp> 40 #include <com/sun/star/awt/FontSlant.hpp> 41 #include <com/sun/star/style/CaseMap.hpp> 42 #include <com/sun/star/text/FontRelief.hpp> 43 #include <com/sun/star/text/FontEmphasis.hpp> 44 #include <com/sun/star/text/RubyAdjust.hpp> 45 #include <com/sun/star/awt/FontStrikeout.hpp> 46 #include <com/sun/star/text/WritingMode2.hpp> 47 #include <com/sun/star/i18n/ScriptType.hpp> 48 49 #include <comphelper/InlineContainer.hxx> 50 51 52 // header for struct SvtLinguConfig 53 #ifndef _SVTOOLS_LINGUCFG_HXX_ 54 #include <unotools/lingucfg.hxx> 55 #endif 56 #ifndef INCLUDED_I18NPOOL_MSLANGID_HXX 57 #include <i18npool/mslangid.hxx> 58 #endif 59 #ifndef _SV_OUTDEV_HXX 60 #include <vcl/outdev.hxx> 61 #endif 62 63 using namespace ::com::sun::star; 64 65 using ::com::sun::star::beans::Property; 66 67 using ::rtl::OUString; 68 69 namespace chart 70 { 71 72 void CharacterProperties::AddPropertiesToVector( 73 ::std::vector< Property > & rOutProperties ) 74 { 75 // CharacterProperties 76 rOutProperties.push_back( 77 Property( C2U( "CharFontName" ), 78 PROP_CHAR_FONT_NAME, 79 ::getCppuType( reinterpret_cast< const OUString * >(0)), 80 beans::PropertyAttribute::BOUND 81 | beans::PropertyAttribute::MAYBEDEFAULT )); 82 rOutProperties.push_back( 83 Property( C2U( "CharFontStyleName" ), 84 PROP_CHAR_FONT_STYLE_NAME, 85 ::getCppuType( reinterpret_cast< const OUString * >(0)), 86 beans::PropertyAttribute::BOUND 87 | beans::PropertyAttribute::MAYBEDEFAULT 88 | beans::PropertyAttribute::MAYBEVOID )); 89 // CharFontFamily (see awt.FontFamily) 90 rOutProperties.push_back( 91 Property( C2U( "CharFontFamily" ), 92 PROP_CHAR_FONT_FAMILY, 93 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 94 beans::PropertyAttribute::BOUND 95 | beans::PropertyAttribute::MAYBEDEFAULT )); 96 // CharFontCharSet (see awt.CharSet) 97 rOutProperties.push_back( 98 Property( C2U( "CharFontCharSet" ), 99 PROP_CHAR_FONT_CHAR_SET, 100 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 101 beans::PropertyAttribute::BOUND 102 | beans::PropertyAttribute::MAYBEDEFAULT )); 103 // CharFontPitch (see awt.FontPitch) 104 rOutProperties.push_back( 105 Property( C2U( "CharFontPitch" ), 106 PROP_CHAR_FONT_PITCH, 107 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 108 beans::PropertyAttribute::BOUND 109 | beans::PropertyAttribute::MAYBEDEFAULT )); 110 // CharColor 111 rOutProperties.push_back( 112 Property( C2U( "CharColor" ), 113 PROP_CHAR_COLOR, 114 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 115 beans::PropertyAttribute::BOUND 116 | beans::PropertyAttribute::MAYBEDEFAULT )); 117 // CharBackColor 118 // rOutProperties.push_back( 119 // Property( C2U( "CharBackColor" ), 120 // PROP_CHAR_BACKGROUND_COLOR, 121 // ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 122 // beans::PropertyAttribute::BOUND 123 // | beans::PropertyAttribute::MAYBEDEFAULT)); 124 // CharEscapement 125 rOutProperties.push_back( 126 Property( C2U( "CharEscapement" ), 127 PROP_CHAR_ESCAPEMENT, 128 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 129 beans::PropertyAttribute::BOUND 130 | beans::PropertyAttribute::MAYBEVOID )); 131 // CharHeight 132 rOutProperties.push_back( 133 Property( C2U( "CharHeight" ), 134 PROP_CHAR_CHAR_HEIGHT, 135 ::getCppuType( reinterpret_cast< const float * >(0)), 136 beans::PropertyAttribute::BOUND 137 | beans::PropertyAttribute::MAYBEDEFAULT )); 138 // CharUnderline (see awt.FontUnderline) 139 rOutProperties.push_back( 140 Property( C2U( "CharUnderline" ), 141 PROP_CHAR_UNDERLINE, 142 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 143 beans::PropertyAttribute::BOUND 144 | beans::PropertyAttribute::MAYBEDEFAULT )); 145 // CharUnderlineColor 146 rOutProperties.push_back( 147 Property( C2U( "CharUnderlineColor" ), 148 PROP_CHAR_UNDERLINE_COLOR, 149 ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), 150 beans::PropertyAttribute::BOUND 151 | beans::PropertyAttribute::MAYBEDEFAULT 152 | beans::PropertyAttribute::MAYBEVOID )); 153 // CharUnderlineHasColor 154 rOutProperties.push_back( 155 Property( C2U( "CharUnderlineHasColor" ), 156 PROP_CHAR_UNDERLINE_HAS_COLOR, 157 ::getBooleanCppuType(), 158 beans::PropertyAttribute::BOUND 159 | beans::PropertyAttribute::MAYBEDEFAULT )); 160 // CharOverline (see awt.FontUnderline) 161 rOutProperties.push_back( 162 Property( C2U( "CharOverline" ), 163 PROP_CHAR_OVERLINE, 164 ::getCppuType( reinterpret_cast< const sal_Int16* >( 0 ) ), 165 beans::PropertyAttribute::BOUND 166 | beans::PropertyAttribute::MAYBEDEFAULT ) ); 167 // CharOverlineColor 168 rOutProperties.push_back( 169 Property( C2U( "CharOverlineColor" ), 170 PROP_CHAR_OVERLINE_COLOR, 171 ::getCppuType( reinterpret_cast< const sal_Int32* >( 0 ) ), 172 beans::PropertyAttribute::BOUND 173 | beans::PropertyAttribute::MAYBEDEFAULT 174 | beans::PropertyAttribute::MAYBEVOID ) ); 175 // CharOverlineHasColor 176 rOutProperties.push_back( 177 Property( C2U( "CharOverlineHasColor" ), 178 PROP_CHAR_OVERLINE_HAS_COLOR, 179 ::getBooleanCppuType(), 180 beans::PropertyAttribute::BOUND 181 | beans::PropertyAttribute::MAYBEDEFAULT ) ); 182 // CharWeight (see awt.FontWeight) 183 rOutProperties.push_back( 184 Property( C2U( "CharWeight" ), 185 PROP_CHAR_WEIGHT, 186 ::getCppuType( reinterpret_cast< const float * >(0)), 187 beans::PropertyAttribute::BOUND 188 | beans::PropertyAttribute::MAYBEDEFAULT )); 189 // CharPosture 190 rOutProperties.push_back( 191 Property( C2U( "CharPosture" ), 192 PROP_CHAR_POSTURE, 193 ::getCppuType( reinterpret_cast< const awt::FontSlant * >(0)), 194 beans::PropertyAttribute::BOUND 195 | beans::PropertyAttribute::MAYBEDEFAULT )); 196 rOutProperties.push_back( 197 Property( C2U( "CharAutoKerning" ), 198 PROP_CHAR_AUTO_KERNING, 199 ::getBooleanCppuType(), 200 beans::PropertyAttribute::BOUND 201 | beans::PropertyAttribute::MAYBEDEFAULT 202 | beans::PropertyAttribute::MAYBEVOID )); 203 rOutProperties.push_back( 204 Property( C2U( "CharKerning" ), 205 PROP_CHAR_KERNING, 206 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 207 beans::PropertyAttribute::BOUND 208 | beans::PropertyAttribute::MAYBEDEFAULT 209 | beans::PropertyAttribute::MAYBEVOID )); 210 // CharCaseMap (see style.CaseMap) 211 // rOutProperties.push_back( 212 // Property( C2U( "CharCaseMap" ), 213 // PROP_CHAR_CASE_MAPPING, 214 // ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 215 // beans::PropertyAttribute::BOUND 216 // | beans::PropertyAttribute::MAYBEDEFAULT )); 217 218 219 // CharRotation 220 // rOutProperties.push_back( 221 // Property( C2U( "CharRotation" ), 222 // PROP_CHAR_ROTATION, 223 // ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 224 // beans::PropertyAttribute::BOUND 225 // | beans::PropertyAttribute::MAYBEDEFAULT )); 226 227 // // CharScaleWidth 228 // rOutProperties.push_back( 229 // Property( C2U( "CharScaleWidth" ), 230 // PROP_CHAR_SCALE_WIDTH, 231 // ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 232 // beans::PropertyAttribute::BOUND 233 // | beans::PropertyAttribute::MAYBEDEFAULT )); 234 // CharEscapementHeight 235 rOutProperties.push_back( 236 Property( C2U( "CharEscapementHeight" ), 237 PROP_CHAR_ESCAPEMENT_HEIGHT, 238 ::getCppuType( reinterpret_cast< const sal_Int8 * >(0)), 239 beans::PropertyAttribute::BOUND 240 | beans::PropertyAttribute::MAYBEVOID )); 241 242 // CharCrossedOut 243 // rOutProperties.push_back( 244 // Property( C2U( "CharCrossedOut" ), 245 // PROP_CHAR_CROSSED_OUT, 246 // ::getBooleanCppuType(), 247 // beans::PropertyAttribute::BOUND 248 // | beans::PropertyAttribute::MAYBEDEFAULT )); 249 // CharStrikeout (see awt.FontStrikeout) 250 rOutProperties.push_back( 251 Property( C2U( "CharStrikeout" ), 252 PROP_CHAR_STRIKE_OUT, 253 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 254 beans::PropertyAttribute::BOUND 255 | beans::PropertyAttribute::MAYBEDEFAULT )); 256 // CharWordMode 257 rOutProperties.push_back( 258 Property( C2U( "CharWordMode" ), 259 PROP_CHAR_WORD_MODE, 260 ::getBooleanCppuType(), 261 beans::PropertyAttribute::BOUND 262 | beans::PropertyAttribute::MAYBEDEFAULT )); 263 // CharFlash 264 // rOutProperties.push_back( 265 // Property( C2U( "CharFlash" ), 266 // PROP_CHAR_FLASH, 267 // ::getBooleanCppuType(), 268 // beans::PropertyAttribute::BOUND 269 // | beans::PropertyAttribute::MAYBEDEFAULT )); 270 // CharLocale 271 rOutProperties.push_back( 272 Property( C2U( "CharLocale" ), 273 PROP_CHAR_LOCALE, 274 ::getCppuType( reinterpret_cast< const lang::Locale * >(0)), 275 //#i111967# no PropertyChangeEvent is fired on change so far 276 beans::PropertyAttribute::MAYBEDEFAULT )); 277 // CharShadowed 278 rOutProperties.push_back( 279 Property( C2U( "CharShadowed" ), 280 PROP_CHAR_SHADOWED, 281 ::getBooleanCppuType(), 282 beans::PropertyAttribute::BOUND 283 | beans::PropertyAttribute::MAYBEDEFAULT )); 284 // CharContoured 285 rOutProperties.push_back( 286 Property( C2U( "CharContoured" ), 287 PROP_CHAR_CONTOURED, 288 ::getBooleanCppuType(), 289 beans::PropertyAttribute::BOUND 290 | beans::PropertyAttribute::MAYBEDEFAULT )); 291 // CharRelief (see text.FontRelief) 292 rOutProperties.push_back( 293 Property( C2U( "CharRelief" ), 294 PROP_CHAR_RELIEF, 295 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 296 beans::PropertyAttribute::BOUND 297 | beans::PropertyAttribute::MAYBEDEFAULT )); 298 299 // CharEmphasize (see text.FontEmphasis) 300 rOutProperties.push_back( 301 Property( C2U( "CharEmphasis" ), 302 PROP_CHAR_EMPHASIS, 303 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 304 beans::PropertyAttribute::BOUND 305 | beans::PropertyAttribute::MAYBEDEFAULT )); 306 // // RubyText 307 // rOutProperties.push_back( 308 // Property( C2U( "RubyText" ), 309 // PROP_CHAR_RUBY_TEXT, 310 // ::getCppuType( reinterpret_cast< const OUString * >(0)), 311 // beans::PropertyAttribute::BOUND 312 // | beans::PropertyAttribute::MAYBEDEFAULT )); 313 // // RubyAdjust (see text.RubyAdjust) 314 // rOutProperties.push_back( 315 // Property( C2U( "RubyAdjust" ), 316 // PROP_CHAR_RUBY_ADJUST, 317 // ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 318 // beans::PropertyAttribute::BOUND 319 // | beans::PropertyAttribute::MAYBEDEFAULT )); 320 // // RubyCharStyleName 321 // rOutProperties.push_back( 322 // Property( C2U( "RubyStyleName" ), 323 // PROP_CHAR_RUBY_STYLE_NAME, 324 // ::getCppuType( reinterpret_cast< const OUString * >(0)), 325 // beans::PropertyAttribute::BOUND 326 // | beans::PropertyAttribute::MAYBEDEFAULT )); 327 // // RubyIsAbove 328 // rOutProperties.push_back( 329 // Property( C2U( "RubyIsAbove" ), 330 // PROP_CHAR_RUBY_IS_ABOVE, 331 // ::getBooleanCppuType(), 332 // beans::PropertyAttribute::BOUND 333 // | beans::PropertyAttribute::MAYBEDEFAULT )); 334 // // CharNoHyphenation 335 // rOutProperties.push_back( 336 // Property( C2U( "InhibitHyphenation" ), 337 // PROP_CHAR_INHIBIT_HYPHENATION, 338 // ::getBooleanCppuType(), 339 // beans::PropertyAttribute::BOUND 340 // | beans::PropertyAttribute::MAYBEDEFAULT )); 341 342 // CharacterPropertiesAsian 343 // ===== 344 // CharFontNameAsian 345 rOutProperties.push_back( 346 Property( C2U( "CharFontNameAsian" ), 347 PROP_CHAR_ASIAN_FONT_NAME, 348 ::getCppuType( reinterpret_cast< const OUString * >(0)), 349 beans::PropertyAttribute::BOUND 350 | beans::PropertyAttribute::MAYBEDEFAULT )); 351 // CharFontStyleNameAsian 352 rOutProperties.push_back( 353 Property( C2U( "CharFontStyleNameAsian" ), 354 PROP_CHAR_ASIAN_FONT_STYLE_NAME, 355 ::getCppuType( reinterpret_cast< const OUString * >(0)), 356 beans::PropertyAttribute::BOUND 357 | beans::PropertyAttribute::MAYBEDEFAULT 358 | beans::PropertyAttribute::MAYBEVOID )); 359 // CharFontFamilyAsian (see awt.FontFamily) 360 rOutProperties.push_back( 361 Property( C2U( "CharFontFamilyAsian" ), 362 PROP_CHAR_ASIAN_FONT_FAMILY, 363 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 364 beans::PropertyAttribute::BOUND 365 | beans::PropertyAttribute::MAYBEDEFAULT )); 366 // CharFontCharSetAsian (see awt.CharSet) 367 rOutProperties.push_back( 368 Property( C2U( "CharFontCharSetAsian" ), 369 PROP_CHAR_ASIAN_CHAR_SET, 370 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 371 beans::PropertyAttribute::BOUND 372 | beans::PropertyAttribute::MAYBEDEFAULT )); 373 // CharFontPitchAsian (see awt.FontPitch) 374 rOutProperties.push_back( 375 Property( C2U( "CharFontPitchAsian" ), 376 PROP_CHAR_ASIAN_FONT_PITCH, 377 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 378 beans::PropertyAttribute::BOUND 379 | beans::PropertyAttribute::MAYBEDEFAULT )); 380 // CharHeightAsian 381 rOutProperties.push_back( 382 Property( C2U( "CharHeightAsian" ), 383 PROP_CHAR_ASIAN_CHAR_HEIGHT, 384 ::getCppuType( reinterpret_cast< const float * >(0)), 385 beans::PropertyAttribute::BOUND 386 | beans::PropertyAttribute::MAYBEDEFAULT )); 387 // CharWeightAsian 388 rOutProperties.push_back( 389 Property( C2U( "CharWeightAsian" ), 390 PROP_CHAR_ASIAN_WEIGHT, 391 ::getCppuType( reinterpret_cast< const float * >(0)), 392 beans::PropertyAttribute::BOUND 393 | beans::PropertyAttribute::MAYBEDEFAULT )); 394 // CharPostureAsian 395 rOutProperties.push_back( 396 Property( C2U( "CharPostureAsian" ), 397 PROP_CHAR_ASIAN_POSTURE, 398 ::getCppuType( reinterpret_cast< const awt::FontSlant * >(0)), 399 beans::PropertyAttribute::BOUND 400 | beans::PropertyAttribute::MAYBEDEFAULT )); 401 // CharLocaleAsian 402 rOutProperties.push_back( 403 Property( C2U( "CharLocaleAsian" ), 404 PROP_CHAR_ASIAN_LOCALE, 405 ::getCppuType( reinterpret_cast< const lang::Locale * >(0)), 406 //#i111967# no PropertyChangeEvent is fired on change so far 407 beans::PropertyAttribute::MAYBEDEFAULT )); 408 409 // CharacterPropertiesComplex 410 // === 411 // CharFontNameComplex 412 rOutProperties.push_back( 413 Property( C2U( "CharFontNameComplex" ), 414 PROP_CHAR_COMPLEX_FONT_NAME, 415 ::getCppuType( reinterpret_cast< const OUString * >(0)), 416 beans::PropertyAttribute::BOUND 417 | beans::PropertyAttribute::MAYBEDEFAULT )); 418 // CharFontStyleNameComplex 419 rOutProperties.push_back( 420 Property( C2U( "CharFontStyleNameComplex" ), 421 PROP_CHAR_COMPLEX_FONT_STYLE_NAME, 422 ::getCppuType( reinterpret_cast< const OUString * >(0)), 423 beans::PropertyAttribute::BOUND 424 | beans::PropertyAttribute::MAYBEDEFAULT 425 | beans::PropertyAttribute::MAYBEVOID )); 426 // CharFontFamilyComplex (see awt.FontFamily) 427 rOutProperties.push_back( 428 Property( C2U( "CharFontFamilyComplex" ), 429 PROP_CHAR_COMPLEX_FONT_FAMILY, 430 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 431 beans::PropertyAttribute::BOUND 432 | beans::PropertyAttribute::MAYBEDEFAULT )); 433 // CharFontCharSetComplex (see awt.CharSet) 434 rOutProperties.push_back( 435 Property( C2U( "CharFontCharSetComplex" ), 436 PROP_CHAR_COMPLEX_CHAR_SET, 437 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 438 beans::PropertyAttribute::BOUND 439 | beans::PropertyAttribute::MAYBEDEFAULT )); 440 // CharFontPitchComplex (see awt.FontPitch) 441 rOutProperties.push_back( 442 Property( C2U( "CharFontPitchComplex" ), 443 PROP_CHAR_COMPLEX_FONT_PITCH, 444 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), 445 beans::PropertyAttribute::BOUND 446 | beans::PropertyAttribute::MAYBEDEFAULT )); 447 // CharHeightComplex 448 rOutProperties.push_back( 449 Property( C2U( "CharHeightComplex" ), 450 PROP_CHAR_COMPLEX_CHAR_HEIGHT, 451 ::getCppuType( reinterpret_cast< const float * >(0)), 452 beans::PropertyAttribute::BOUND 453 | beans::PropertyAttribute::MAYBEDEFAULT )); 454 // CharWeightComplex 455 rOutProperties.push_back( 456 Property( C2U( "CharWeightComplex" ), 457 PROP_CHAR_COMPLEX_WEIGHT, 458 ::getCppuType( reinterpret_cast< const float * >(0)), 459 beans::PropertyAttribute::BOUND 460 | beans::PropertyAttribute::MAYBEDEFAULT )); 461 // CharPostureComplex 462 rOutProperties.push_back( 463 Property( C2U( "CharPostureComplex" ), 464 PROP_CHAR_COMPLEX_POSTURE, 465 ::getCppuType( reinterpret_cast< const awt::FontSlant * >(0)), 466 beans::PropertyAttribute::BOUND 467 | beans::PropertyAttribute::MAYBEDEFAULT )); 468 // CharLocaleComplex 469 rOutProperties.push_back( 470 Property( C2U( "CharLocaleComplex" ), 471 PROP_CHAR_COMPLEX_LOCALE, 472 ::getCppuType( reinterpret_cast< const lang::Locale * >(0)), 473 //#i111967# no PropertyChangeEvent is fired on change so far 474 beans::PropertyAttribute::MAYBEDEFAULT )); 475 476 // Writing Mode left to right vs right to left 477 rOutProperties.push_back( 478 Property( C2U( "WritingMode" ), 479 PROP_WRITING_MODE, 480 ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), /*com::sun::star::text::WritingMode2*/ 481 beans::PropertyAttribute::BOUND 482 | beans::PropertyAttribute::MAYBEDEFAULT )); 483 484 rOutProperties.push_back( 485 Property( C2U( "ParaIsCharacterDistance" ), 486 PROP_PARA_IS_CHARACTER_DISTANCE, 487 ::getBooleanCppuType(), 488 beans::PropertyAttribute::BOUND 489 | beans::PropertyAttribute::MAYBEDEFAULT )); 490 } 491 492 void CharacterProperties::AddDefaultsToMap( 493 ::chart::tPropertyValueMap & rOutMap ) 494 { 495 const float fDefaultFontHeight = 13.0; 496 497 SvtLinguConfig aLinguConfig; 498 lang::Locale aDefaultLocale; 499 aLinguConfig.GetProperty(C2U("DefaultLocale")) >>= aDefaultLocale; 500 lang::Locale aDefaultLocale_CJK; 501 aLinguConfig.GetProperty(C2U("DefaultLocale_CJK")) >>= aDefaultLocale_CJK; 502 lang::Locale aDefaultLocale_CTL; 503 aLinguConfig.GetProperty(C2U("DefaultLocale_CTL")) >>= aDefaultLocale_CTL; 504 505 using namespace ::com::sun::star::i18n::ScriptType; 506 LanguageType nLang; 507 nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aDefaultLocale), LATIN); 508 Font aFont = OutputDevice::GetDefaultFont( DEFAULTFONT_LATIN_SPREADSHEET, nLang, DEFAULTFONT_FLAGS_ONLYONE, 0 ); 509 nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage( aDefaultLocale_CJK), ASIAN); 510 Font aFontCJK = OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_SPREADSHEET, nLang, DEFAULTFONT_FLAGS_ONLYONE, 0 ); 511 nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage( aDefaultLocale_CTL), COMPLEX); 512 Font aFontCTL = OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_SPREADSHEET, nLang, DEFAULTFONT_FLAGS_ONLYONE, 0 ); 513 514 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_NAME, OUString( aFont.GetName() ) ); 515 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_STYLE_NAME, OUString(aFont.GetStyleName()) ); 516 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_FAMILY, sal_Int16(aFont.GetFamily()) );//awt::FontFamily::SWISS 517 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_CHAR_SET, sal_Int16(aFont.GetCharSet()) );//use awt::CharSet::DONTKNOW instead of SYSTEM to avoid assertion issue 50249 518 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_PITCH, sal_Int16(aFont.GetPitch()) );//awt::FontPitch::VARIABLE 519 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_CHAR_COLOR, -1 ); //automatic color (COL_AUTO) 520 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CHAR_HEIGHT, fDefaultFontHeight ); 521 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_UNDERLINE, awt::FontUnderline::NONE ); 522 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_CHAR_UNDERLINE_COLOR, -1 ); //automatic color (COL_AUTO) 523 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_UNDERLINE_HAS_COLOR, false ); 524 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_OVERLINE, awt::FontUnderline::NONE ); 525 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_CHAR_OVERLINE_COLOR, -1 ); //automatic color (COL_AUTO) 526 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_OVERLINE_HAS_COLOR, false ); 527 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_WEIGHT, awt::FontWeight::NORMAL ); 528 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_POSTURE, awt::FontSlant_NONE ); 529 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_AUTO_KERNING, true ); 530 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_KERNING, 0 ); 531 532 // ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CASE_MAPPING, style::CaseMap::NONE ); 533 // ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_ROTATION, 0 ); 534 // ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_SCALE_WIDTH, 71 ); 535 536 // ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CROSSED_OUT, false ); 537 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_STRIKE_OUT, awt::FontStrikeout::NONE ); 538 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_WORD_MODE, false ); 539 // ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FLASH, false ); 540 541 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_LOCALE, aDefaultLocale ); 542 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_SHADOWED, false ); 543 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CONTOURED, false ); 544 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RELIEF, text::FontRelief::NONE ); 545 546 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_EMPHASIS, text::FontEmphasis::NONE ); 547 548 // ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RUBY_ADJUST, text::RubyAdjust_INDENT_BLOCK ); 549 // ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RUBY_STYLE_NAME, ?? ); 550 // ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RUBY_IS_ABOVE, true ); 551 // ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_INHIBIT_HYPHENATION, false ); 552 553 // Asian (com.sun.star.style.CharacterPropertiesAsian) 554 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultFontHeight ); 555 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_WEIGHT, awt::FontWeight::NORMAL ); 556 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_POSTURE, awt::FontSlant_NONE ); 557 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_LOCALE, aDefaultLocale_CJK ); 558 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_NAME, OUString( aFontCJK.GetName() ) ); 559 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_STYLE_NAME, OUString(aFontCJK.GetStyleName()) ); 560 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_FAMILY, sal_Int16(aFontCJK.GetFamily()) ); 561 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_CHAR_SET, sal_Int16(aFontCJK.GetCharSet()) ); 562 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_PITCH, sal_Int16(aFontCJK.GetPitch()) ); 563 564 // Complex Text Layout (com.sun.star.style.CharacterPropertiesComplex) 565 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultFontHeight ); 566 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_WEIGHT, awt::FontWeight::NORMAL ); 567 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_POSTURE, awt::FontSlant_NONE ); 568 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_LOCALE, aDefaultLocale_CTL ); 569 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_NAME, OUString( aFontCTL.GetName() ) ); 570 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_STYLE_NAME, OUString(aFontCTL.GetStyleName()) ); 571 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_FAMILY, sal_Int16(aFontCTL.GetFamily()) ); 572 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_CHAR_SET, sal_Int16(aFontCTL.GetCharSet()) ); 573 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_PITCH, sal_Int16(aFontCTL.GetPitch()) ); 574 575 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_WRITING_MODE, sal_Int16( com::sun::star::text::WritingMode2::PAGE ) ); 576 ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_PARA_IS_CHARACTER_DISTANCE, sal_True ); 577 } 578 579 bool CharacterProperties::IsCharacterPropertyHandle( sal_Int32 nHandle ) 580 { 581 return ( FAST_PROPERTY_ID_START_CHAR_PROP <= nHandle && 582 nHandle < CharacterProperties::FAST_PROPERTY_ID_END_CHAR_PROP ); 583 } 584 585 awt::FontDescriptor CharacterProperties::createFontDescriptorFromPropertySet( 586 const uno::Reference< beans::XMultiPropertySet > & xMultiPropSet ) 587 { 588 awt::FontDescriptor aResult; 589 // Note: keep this sorted! 590 ::comphelper::MakeVector< OUString > aPropNames 591 ( C2U("CharFontCharSet")); // CharSet 592 aPropNames 593 ( C2U("CharFontFamily")) // Family 594 ( C2U("CharFontName")) // Name 595 ( C2U("CharFontPitch")) // Pitch 596 ( C2U("CharFontStyleName")) // StyleName 597 ( C2U("CharHeight")) // Height 598 ( C2U("CharPosture")) // Slant 599 ( C2U("CharStrikeout")) // Strikeout 600 ( C2U("CharUnderline")) // Underline 601 ( C2U("CharWeight")) // Weight 602 ( C2U("CharWordMode")) // WordLineMode 603 ; 604 605 uno::Sequence< OUString > aPropNameSeq( ContainerHelper::ContainerToSequence( aPropNames )); 606 uno::Sequence< uno::Any > aValues( xMultiPropSet->getPropertyValues( aPropNameSeq )); 607 608 sal_Int32 i=0; 609 // Note keep this sorted according to the list above (comments are the fieldnames) 610 aValues[ i++ ] >>= aResult.CharSet; 611 aValues[ i++ ] >>= aResult.Family; 612 aValues[ i++ ] >>= aResult.Name; 613 aValues[ i++ ] >>= aResult.Pitch; 614 aValues[ i++ ] >>= aResult.StyleName; 615 float fCharHeight = 0; 616 aValues[ i++ ] >>= fCharHeight; 617 aResult.Height = static_cast< sal_Int16 >( fCharHeight ); 618 aValues[ i++ ] >>= aResult.Slant; 619 aValues[ i++ ] >>= aResult.Strikeout; 620 aValues[ i++ ] >>= aResult.Underline; 621 aValues[ i++ ] >>= aResult.Weight; 622 aValues[ i++ ] >>= aResult.WordLineMode; 623 OSL_ASSERT( i == aValues.getLength()); 624 625 return aResult; 626 } 627 628 } // namespace chart 629