diff options
Diffstat (limited to 'chart2/source/tools/CharacterProperties.cxx')
-rw-r--r-- | chart2/source/tools/CharacterProperties.cxx | 608 |
1 files changed, 608 insertions, 0 deletions
diff --git a/chart2/source/tools/CharacterProperties.cxx b/chart2/source/tools/CharacterProperties.cxx new file mode 100644 index 000000000000..cca655780a79 --- /dev/null +++ b/chart2/source/tools/CharacterProperties.cxx @@ -0,0 +1,608 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_chart2.hxx" +#include "CharacterProperties.hxx" +#include "ContainerHelper.hxx" +#include "macros.hxx" + +#include <com/sun/star/beans/PropertyAttribute.hpp> +#include <com/sun/star/style/XStyle.hpp> +#include <com/sun/star/awt/FontSlant.hpp> +#include <com/sun/star/lang/Locale.hpp> + +#include <com/sun/star/awt/FontFamily.hpp> +#include <com/sun/star/awt/CharSet.hpp> +#include <com/sun/star/awt/FontPitch.hpp> +#include <com/sun/star/awt/FontUnderline.hpp> +#include <com/sun/star/awt/FontWeight.hpp> +#include <com/sun/star/awt/FontSlant.hpp> +#include <com/sun/star/style/CaseMap.hpp> +#include <com/sun/star/text/FontRelief.hpp> +#include <com/sun/star/text/FontEmphasis.hpp> +#include <com/sun/star/text/RubyAdjust.hpp> +#include <com/sun/star/awt/FontStrikeout.hpp> +#include <com/sun/star/text/WritingMode2.hpp> +#include <com/sun/star/i18n/ScriptType.hpp> + +#include <comphelper/InlineContainer.hxx> + + +// header for struct SvtLinguConfig +#ifndef _SVTOOLS_LINGUCFG_HXX_ +#include <unotools/lingucfg.hxx> +#endif +#ifndef INCLUDED_I18NPOOL_MSLANGID_HXX +#include <i18npool/mslangid.hxx> +#endif +#ifndef _SV_OUTDEV_HXX +#include <vcl/outdev.hxx> +#endif + +using namespace ::com::sun::star; + +using ::com::sun::star::beans::Property; + +using ::rtl::OUString; + +namespace chart +{ + +void CharacterProperties::AddPropertiesToVector( + ::std::vector< Property > & rOutProperties ) +{ + // CharacterProperties + rOutProperties.push_back( + Property( C2U( "CharFontName" ), + PROP_CHAR_FONT_NAME, + ::getCppuType( reinterpret_cast< const OUString * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + rOutProperties.push_back( + Property( C2U( "CharFontStyleName" ), + PROP_CHAR_FONT_STYLE_NAME, + ::getCppuType( reinterpret_cast< const OUString * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT + | beans::PropertyAttribute::MAYBEVOID )); + // CharFontFamily (see awt.FontFamily) + rOutProperties.push_back( + Property( C2U( "CharFontFamily" ), + PROP_CHAR_FONT_FAMILY, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontCharSet (see awt.CharSet) + rOutProperties.push_back( + Property( C2U( "CharFontCharSet" ), + PROP_CHAR_FONT_CHAR_SET, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontPitch (see awt.FontPitch) + rOutProperties.push_back( + Property( C2U( "CharFontPitch" ), + PROP_CHAR_FONT_PITCH, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharColor + rOutProperties.push_back( + Property( C2U( "CharColor" ), + PROP_CHAR_COLOR, + ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharBackColor +// rOutProperties.push_back( +// Property( C2U( "CharBackColor" ), +// PROP_CHAR_BACKGROUND_COLOR, +// ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT)); + // CharEscapement + rOutProperties.push_back( + Property( C2U( "CharEscapement" ), + PROP_CHAR_ESCAPEMENT, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEVOID )); + // CharHeight + rOutProperties.push_back( + Property( C2U( "CharHeight" ), + PROP_CHAR_CHAR_HEIGHT, + ::getCppuType( reinterpret_cast< const float * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharUnderline (see awt.FontUnderline) + rOutProperties.push_back( + Property( C2U( "CharUnderline" ), + PROP_CHAR_UNDERLINE, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharUnderlineColor + rOutProperties.push_back( + Property( C2U( "CharUnderlineColor" ), + PROP_CHAR_UNDERLINE_COLOR, + ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT + | beans::PropertyAttribute::MAYBEVOID )); + // CharUnderlineHasColor + rOutProperties.push_back( + Property( C2U( "CharUnderlineHasColor" ), + PROP_CHAR_UNDERLINE_HAS_COLOR, + ::getBooleanCppuType(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharWeight (see awt.FontWeight) + rOutProperties.push_back( + Property( C2U( "CharWeight" ), + PROP_CHAR_WEIGHT, + ::getCppuType( reinterpret_cast< const float * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharPosture + rOutProperties.push_back( + Property( C2U( "CharPosture" ), + PROP_CHAR_POSTURE, + ::getCppuType( reinterpret_cast< const awt::FontSlant * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + rOutProperties.push_back( + Property( C2U( "CharAutoKerning" ), + PROP_CHAR_AUTO_KERNING, + ::getBooleanCppuType(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT + | beans::PropertyAttribute::MAYBEVOID )); + rOutProperties.push_back( + Property( C2U( "CharKerning" ), + PROP_CHAR_KERNING, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT + | beans::PropertyAttribute::MAYBEVOID )); + // CharCaseMap (see style.CaseMap) +// rOutProperties.push_back( +// Property( C2U( "CharCaseMap" ), +// PROP_CHAR_CASE_MAPPING, +// ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); + + + // CharRotation +// rOutProperties.push_back( +// Property( C2U( "CharRotation" ), +// PROP_CHAR_ROTATION, +// ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); + +// // CharScaleWidth +// rOutProperties.push_back( +// Property( C2U( "CharScaleWidth" ), +// PROP_CHAR_SCALE_WIDTH, +// ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharEscapementHeight + rOutProperties.push_back( + Property( C2U( "CharEscapementHeight" ), + PROP_CHAR_ESCAPEMENT_HEIGHT, + ::getCppuType( reinterpret_cast< const sal_Int8 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEVOID )); + + // CharCrossedOut +// rOutProperties.push_back( +// Property( C2U( "CharCrossedOut" ), +// PROP_CHAR_CROSSED_OUT, +// ::getBooleanCppuType(), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharStrikeout (see awt.FontStrikeout) + rOutProperties.push_back( + Property( C2U( "CharStrikeout" ), + PROP_CHAR_STRIKE_OUT, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharWordMode + rOutProperties.push_back( + Property( C2U( "CharWordMode" ), + PROP_CHAR_WORD_MODE, + ::getBooleanCppuType(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFlash +// rOutProperties.push_back( +// Property( C2U( "CharFlash" ), +// PROP_CHAR_FLASH, +// ::getBooleanCppuType(), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharLocale + rOutProperties.push_back( + Property( C2U( "CharLocale" ), + PROP_CHAR_LOCALE, + ::getCppuType( reinterpret_cast< const lang::Locale * >(0)), + //#i111967# no PropertyChangeEvent is fired on change so far + beans::PropertyAttribute::MAYBEDEFAULT )); + // CharShadowed + rOutProperties.push_back( + Property( C2U( "CharShadowed" ), + PROP_CHAR_SHADOWED, + ::getBooleanCppuType(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharContoured + rOutProperties.push_back( + Property( C2U( "CharContoured" ), + PROP_CHAR_CONTOURED, + ::getBooleanCppuType(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharRelief (see text.FontRelief) + rOutProperties.push_back( + Property( C2U( "CharRelief" ), + PROP_CHAR_RELIEF, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + + // CharEmphasize (see text.FontEmphasis) + rOutProperties.push_back( + Property( C2U( "CharEmphasis" ), + PROP_CHAR_EMPHASIS, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); +// // RubyText +// rOutProperties.push_back( +// Property( C2U( "RubyText" ), +// PROP_CHAR_RUBY_TEXT, +// ::getCppuType( reinterpret_cast< const OUString * >(0)), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); +// // RubyAdjust (see text.RubyAdjust) +// rOutProperties.push_back( +// Property( C2U( "RubyAdjust" ), +// PROP_CHAR_RUBY_ADJUST, +// ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); +// // RubyCharStyleName +// rOutProperties.push_back( +// Property( C2U( "RubyStyleName" ), +// PROP_CHAR_RUBY_STYLE_NAME, +// ::getCppuType( reinterpret_cast< const OUString * >(0)), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); +// // RubyIsAbove +// rOutProperties.push_back( +// Property( C2U( "RubyIsAbove" ), +// PROP_CHAR_RUBY_IS_ABOVE, +// ::getBooleanCppuType(), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); +// // CharNoHyphenation +// rOutProperties.push_back( +// Property( C2U( "InhibitHyphenation" ), +// PROP_CHAR_INHIBIT_HYPHENATION, +// ::getBooleanCppuType(), +// beans::PropertyAttribute::BOUND +// | beans::PropertyAttribute::MAYBEDEFAULT )); + + // CharacterPropertiesAsian + // ===== + // CharFontNameAsian + rOutProperties.push_back( + Property( C2U( "CharFontNameAsian" ), + PROP_CHAR_ASIAN_FONT_NAME, + ::getCppuType( reinterpret_cast< const OUString * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontStyleNameAsian + rOutProperties.push_back( + Property( C2U( "CharFontStyleNameAsian" ), + PROP_CHAR_ASIAN_FONT_STYLE_NAME, + ::getCppuType( reinterpret_cast< const OUString * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT + | beans::PropertyAttribute::MAYBEVOID )); + // CharFontFamilyAsian (see awt.FontFamily) + rOutProperties.push_back( + Property( C2U( "CharFontFamilyAsian" ), + PROP_CHAR_ASIAN_FONT_FAMILY, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontCharSetAsian (see awt.CharSet) + rOutProperties.push_back( + Property( C2U( "CharFontCharSetAsian" ), + PROP_CHAR_ASIAN_CHAR_SET, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontPitchAsian (see awt.FontPitch) + rOutProperties.push_back( + Property( C2U( "CharFontPitchAsian" ), + PROP_CHAR_ASIAN_FONT_PITCH, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharHeightAsian + rOutProperties.push_back( + Property( C2U( "CharHeightAsian" ), + PROP_CHAR_ASIAN_CHAR_HEIGHT, + ::getCppuType( reinterpret_cast< const float * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharWeightAsian + rOutProperties.push_back( + Property( C2U( "CharWeightAsian" ), + PROP_CHAR_ASIAN_WEIGHT, + ::getCppuType( reinterpret_cast< const float * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharPostureAsian + rOutProperties.push_back( + Property( C2U( "CharPostureAsian" ), + PROP_CHAR_ASIAN_POSTURE, + ::getCppuType( reinterpret_cast< const awt::FontSlant * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharLocaleAsian + rOutProperties.push_back( + Property( C2U( "CharLocaleAsian" ), + PROP_CHAR_ASIAN_LOCALE, + ::getCppuType( reinterpret_cast< const lang::Locale * >(0)), + //#i111967# no PropertyChangeEvent is fired on change so far + beans::PropertyAttribute::MAYBEDEFAULT )); + + // CharacterPropertiesComplex + // === + // CharFontNameComplex + rOutProperties.push_back( + Property( C2U( "CharFontNameComplex" ), + PROP_CHAR_COMPLEX_FONT_NAME, + ::getCppuType( reinterpret_cast< const OUString * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontStyleNameComplex + rOutProperties.push_back( + Property( C2U( "CharFontStyleNameComplex" ), + PROP_CHAR_COMPLEX_FONT_STYLE_NAME, + ::getCppuType( reinterpret_cast< const OUString * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT + | beans::PropertyAttribute::MAYBEVOID )); + // CharFontFamilyComplex (see awt.FontFamily) + rOutProperties.push_back( + Property( C2U( "CharFontFamilyComplex" ), + PROP_CHAR_COMPLEX_FONT_FAMILY, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontCharSetComplex (see awt.CharSet) + rOutProperties.push_back( + Property( C2U( "CharFontCharSetComplex" ), + PROP_CHAR_COMPLEX_CHAR_SET, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharFontPitchComplex (see awt.FontPitch) + rOutProperties.push_back( + Property( C2U( "CharFontPitchComplex" ), + PROP_CHAR_COMPLEX_FONT_PITCH, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharHeightComplex + rOutProperties.push_back( + Property( C2U( "CharHeightComplex" ), + PROP_CHAR_COMPLEX_CHAR_HEIGHT, + ::getCppuType( reinterpret_cast< const float * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharWeightComplex + rOutProperties.push_back( + Property( C2U( "CharWeightComplex" ), + PROP_CHAR_COMPLEX_WEIGHT, + ::getCppuType( reinterpret_cast< const float * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharPostureComplex + rOutProperties.push_back( + Property( C2U( "CharPostureComplex" ), + PROP_CHAR_COMPLEX_POSTURE, + ::getCppuType( reinterpret_cast< const awt::FontSlant * >(0)), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + // CharLocaleComplex + rOutProperties.push_back( + Property( C2U( "CharLocaleComplex" ), + PROP_CHAR_COMPLEX_LOCALE, + ::getCppuType( reinterpret_cast< const lang::Locale * >(0)), + //#i111967# no PropertyChangeEvent is fired on change so far + beans::PropertyAttribute::MAYBEDEFAULT )); + + // Writing Mode left to right vs right to left + rOutProperties.push_back( + Property( C2U( "WritingMode" ), + PROP_WRITING_MODE, + ::getCppuType( reinterpret_cast< const sal_Int16 * >(0)), /*com::sun::star::text::WritingMode2*/ + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); + + rOutProperties.push_back( + Property( C2U( "ParaIsCharacterDistance" ), + PROP_PARA_IS_CHARACTER_DISTANCE, + ::getBooleanCppuType(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT )); +} + +void CharacterProperties::AddDefaultsToMap( + ::chart::tPropertyValueMap & rOutMap ) +{ + const float fDefaultFontHeight = 13.0; + + SvtLinguConfig aLinguConfig; + lang::Locale aDefaultLocale; + aLinguConfig.GetProperty(C2U("DefaultLocale")) >>= aDefaultLocale; + lang::Locale aDefaultLocale_CJK; + aLinguConfig.GetProperty(C2U("DefaultLocale_CJK")) >>= aDefaultLocale_CJK; + lang::Locale aDefaultLocale_CTL; + aLinguConfig.GetProperty(C2U("DefaultLocale_CTL")) >>= aDefaultLocale_CTL; + + using namespace ::com::sun::star::i18n::ScriptType; + LanguageType nLang; + nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aDefaultLocale), LATIN); + Font aFont = OutputDevice::GetDefaultFont( DEFAULTFONT_LATIN_SPREADSHEET, nLang, DEFAULTFONT_FLAGS_ONLYONE, 0 ); + nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage( aDefaultLocale_CJK), ASIAN); + Font aFontCJK = OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_SPREADSHEET, nLang, DEFAULTFONT_FLAGS_ONLYONE, 0 ); + nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage( aDefaultLocale_CTL), COMPLEX); + Font aFontCTL = OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_SPREADSHEET, nLang, DEFAULTFONT_FLAGS_ONLYONE, 0 ); + + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_NAME, OUString( aFont.GetName() ) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_STYLE_NAME, OUString(aFont.GetStyleName()) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_FAMILY, sal_Int16(aFont.GetFamily()) );//awt::FontFamily::SWISS + ::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 + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FONT_PITCH, sal_Int16(aFont.GetPitch()) );//awt::FontPitch::VARIABLE + ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_CHAR_COLOR, -1 ); //automatic color (COL_AUTO) + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CHAR_HEIGHT, fDefaultFontHeight ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_UNDERLINE, awt::FontUnderline::NONE ); + ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_CHAR_UNDERLINE_COLOR, -1 ); //automatic color (COL_AUTO) + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_UNDERLINE_HAS_COLOR, false ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_WEIGHT, awt::FontWeight::NORMAL ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_POSTURE, awt::FontSlant_NONE ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_AUTO_KERNING, true ); + ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_KERNING, 0 ); + +// ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CASE_MAPPING, style::CaseMap::NONE ); +// ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_ROTATION, 0 ); +// ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_SCALE_WIDTH, 71 ); + +// ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CROSSED_OUT, false ); + ::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_CHAR_STRIKE_OUT, awt::FontStrikeout::NONE ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_WORD_MODE, false ); +// ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_FLASH, false ); + + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_LOCALE, aDefaultLocale ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_SHADOWED, false ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_CONTOURED, false ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RELIEF, text::FontRelief::NONE ); + + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_EMPHASIS, text::FontEmphasis::NONE ); + +// ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RUBY_ADJUST, text::RubyAdjust_INDENT_BLOCK ); +// ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RUBY_STYLE_NAME, ?? ); +// ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_RUBY_IS_ABOVE, true ); +// ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_INHIBIT_HYPHENATION, false ); + + // Asian (com.sun.star.style.CharacterPropertiesAsian) + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultFontHeight ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_WEIGHT, awt::FontWeight::NORMAL ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_POSTURE, awt::FontSlant_NONE ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_LOCALE, aDefaultLocale_CJK ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_NAME, OUString( aFontCJK.GetName() ) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_STYLE_NAME, OUString(aFontCJK.GetStyleName()) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_FAMILY, sal_Int16(aFontCJK.GetFamily()) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_CHAR_SET, sal_Int16(aFontCJK.GetCharSet()) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_ASIAN_FONT_PITCH, sal_Int16(aFontCJK.GetPitch()) ); + + // Complex Text Layout (com.sun.star.style.CharacterPropertiesComplex) + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultFontHeight ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_WEIGHT, awt::FontWeight::NORMAL ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_POSTURE, awt::FontSlant_NONE ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_LOCALE, aDefaultLocale_CTL ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_NAME, OUString( aFontCTL.GetName() ) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_STYLE_NAME, OUString(aFontCTL.GetStyleName()) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_FAMILY, sal_Int16(aFontCTL.GetFamily()) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_CHAR_SET, sal_Int16(aFontCTL.GetCharSet()) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_CHAR_COMPLEX_FONT_PITCH, sal_Int16(aFontCTL.GetPitch()) ); + + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_WRITING_MODE, sal_Int16( com::sun::star::text::WritingMode2::PAGE ) ); + ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_PARA_IS_CHARACTER_DISTANCE, sal_True ); +} + +bool CharacterProperties::IsCharacterPropertyHandle( sal_Int32 nHandle ) +{ + return ( FAST_PROPERTY_ID_START_CHAR_PROP <= nHandle && + nHandle < CharacterProperties::FAST_PROPERTY_ID_END_CHAR_PROP ); +} + +// static +awt::FontDescriptor CharacterProperties::createFontDescriptorFromPropertySet( + const uno::Reference< beans::XMultiPropertySet > & xMultiPropSet ) +{ + awt::FontDescriptor aResult; + // Note: keep this sorted! + ::comphelper::MakeVector< OUString > aPropNames + ( C2U("CharFontCharSet")); // CharSet + aPropNames + ( C2U("CharFontFamily")) // Family + ( C2U("CharFontName")) // Name + ( C2U("CharFontPitch")) // Pitch + ( C2U("CharFontStyleName")) // StyleName + ( C2U("CharHeight")) // Height + ( C2U("CharPosture")) // Slant + ( C2U("CharStrikeout")) // Strikeout + ( C2U("CharUnderline")) // Underline + ( C2U("CharWeight")) // Weight + ( C2U("CharWordMode")) // WordLineMode + ; + + uno::Sequence< OUString > aPropNameSeq( ContainerHelper::ContainerToSequence( aPropNames )); + uno::Sequence< uno::Any > aValues( xMultiPropSet->getPropertyValues( aPropNameSeq )); + + sal_Int32 i=0; + // Note keep this sorted according to the list above (comments are the fieldnames) + aValues[ i++ ] >>= aResult.CharSet; + aValues[ i++ ] >>= aResult.Family; + aValues[ i++ ] >>= aResult.Name; + aValues[ i++ ] >>= aResult.Pitch; + aValues[ i++ ] >>= aResult.StyleName; + float fCharHeight = 0; + aValues[ i++ ] >>= fCharHeight; + aResult.Height = static_cast< sal_Int16 >( fCharHeight ); + aValues[ i++ ] >>= aResult.Slant; + aValues[ i++ ] >>= aResult.Strikeout; + aValues[ i++ ] >>= aResult.Underline; + aValues[ i++ ] >>= aResult.Weight; + aValues[ i++ ] >>= aResult.WordLineMode; + OSL_ASSERT( i == aValues.getLength()); + + return aResult; +} + +} // namespace chart |