summaryrefslogtreecommitdiff
path: root/chart2/source/view/main/PropertyMapper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/view/main/PropertyMapper.cxx')
-rw-r--r--chart2/source/view/main/PropertyMapper.cxx532
1 files changed, 532 insertions, 0 deletions
diff --git a/chart2/source/view/main/PropertyMapper.cxx b/chart2/source/view/main/PropertyMapper.cxx
new file mode 100644
index 000000000000..18b5f2717afd
--- /dev/null
+++ b/chart2/source/view/main/PropertyMapper.cxx
@@ -0,0 +1,532 @@
+/*************************************************************************
+ *
+ * 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 "PropertyMapper.hxx"
+#include "ContainerHelper.hxx"
+#include "macros.hxx"
+
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <com/sun/star/drawing/LineJoint.hpp>
+
+//.............................................................................
+namespace chart
+{
+//.............................................................................
+using namespace ::com::sun::star;
+
+namespace
+{
+
+void lcl_overwriteOrAppendValues(
+ tPropertyNameValueMap &rMap, const tPropertyNameValueMap& rOverwriteMap )
+{
+ tPropertyNameValueMap::const_iterator aIt( rOverwriteMap.begin() );
+ tPropertyNameValueMap::const_iterator aEnd( rOverwriteMap.end() );
+
+ for( ; aIt != aEnd; ++aIt )
+ rMap[ aIt->first ] = aIt->second;
+}
+
+} // anonymous namespace
+
+void PropertyMapper::setMappedProperties(
+ const uno::Reference< beans::XPropertySet >& xTarget
+ , const uno::Reference< beans::XPropertySet >& xSource
+ , const tPropertyNameMap& rMap
+ , tPropertyNameValueMap* pOverwriteMap )
+{
+ if( !xTarget.is() || !xSource.is() )
+ return;
+
+ tNameSequence aNames;
+ tAnySequence aValues;
+ getMultiPropertyLists(aNames, aValues, xSource, rMap );
+ if(pOverwriteMap && (aNames.getLength() == aValues.getLength()))
+ {
+ tPropertyNameValueMap aNewMap;
+ for( sal_Int32 nI=0; nI<aNames.getLength(); ++nI )
+ aNewMap[ aNames[nI] ] = aValues[nI];
+ lcl_overwriteOrAppendValues( aNewMap, *pOverwriteMap );
+ aNames = ContainerHelper::MapKeysToSequence( aNewMap );
+ aValues = ContainerHelper::MapValuesToSequence( aNewMap );
+ }
+
+ PropertyMapper::setMultiProperties( aNames, aValues, xTarget );
+}
+
+void PropertyMapper::getValueMap(
+ tPropertyNameValueMap& rValueMap
+ , const tPropertyNameMap& rNameMap
+ , const uno::Reference< beans::XPropertySet >& xSourceProp
+ )
+{
+ tPropertyNameMap::const_iterator aIt( rNameMap.begin() );
+ tPropertyNameMap::const_iterator aEnd( rNameMap.end() );
+
+ for( ; aIt != aEnd; ++aIt )
+ {
+ rtl::OUString aTarget = aIt->first;
+ rtl::OUString aSource = aIt->second;
+ try
+ {
+ uno::Any aAny( xSourceProp->getPropertyValue(aSource) );
+ if( aAny.hasValue() )
+ rValueMap.insert( tPropertyNameValueMap::value_type( aTarget, aAny ) );
+ }
+ catch( uno::Exception& e )
+ {
+ ASSERT_EXCEPTION( e );
+ }
+ }
+}
+
+void PropertyMapper::getMultiPropertyLists(
+ tNameSequence& rNames
+ , tAnySequence& rValues
+ , const uno::Reference< beans::XPropertySet >& xSourceProp
+ , const tPropertyNameMap& rNameMap
+ )
+{
+ tPropertyNameValueMap aValueMap;
+ getValueMap( aValueMap, rNameMap, xSourceProp );
+ getMultiPropertyListsFromValueMap( rNames, rValues, aValueMap );
+}
+
+void PropertyMapper::getMultiPropertyListsFromValueMap(
+ tNameSequence& rNames
+ , tAnySequence& rValues
+ , const tPropertyNameValueMap& rValueMap
+ )
+{
+ sal_Int32 nPropertyCount = rValueMap.size();
+ rNames.realloc(nPropertyCount);
+ rValues.realloc(nPropertyCount);
+
+ //fill sequences
+ tPropertyNameValueMap::const_iterator aValueIt( rValueMap.begin() );
+ tPropertyNameValueMap::const_iterator aValueEnd( rValueMap.end() );
+ sal_Int32 nN=0;
+ for( ; aValueIt != aValueEnd; ++aValueIt )
+ {
+ const uno::Any& rAny = aValueIt->second;
+ if( rAny.hasValue() )
+ {
+ //do not set empty anys because of performance (otherwise SdrAttrObj::ItemChange will take much longer)
+ rNames[nN] = aValueIt->first;
+ rValues[nN] = rAny;
+ ++nN;
+ }
+ }
+ //reduce to real property count
+ rNames.realloc(nN);
+ rValues.realloc(nN);
+}
+
+uno::Any* PropertyMapper::getValuePointer( tAnySequence& rPropValues
+ , const tNameSequence& rPropNames
+ , const rtl::OUString& rPropName )
+{
+ sal_Int32 nCount = rPropNames.getLength();
+ for( sal_Int32 nN = 0; nN < nCount; nN++ )
+ {
+ if(rPropNames[nN].equals(rPropName))
+ return &rPropValues[nN];
+ }
+ return NULL;
+}
+
+uno::Any* PropertyMapper::getValuePointerForLimitedSpace( tAnySequence& rPropValues
+ , const tNameSequence& rPropNames
+ , bool bLimitedHeight)
+{
+ return PropertyMapper::getValuePointer( rPropValues, rPropNames
+ , bLimitedHeight ? C2U("TextMaximumFrameHeight") : C2U("TextMaximumFrameWidth") );
+}
+
+/*
+//set some properties from service style::CharacterProperties:
+//-------- tabpage: Zeichen -----------
+//Schriftart z.B. Albany UNO_NAME_EDIT_CHAR_FONTNAME == UNO_NAME_EDIT_CHAR_FONTSTYLENAME //UNO_NAME_CHAR_FONT
+//Schriftschnitt z.B. kursiv UNO_NAME_EDIT_CHAR_POSTURE UNO_NAME_CHAR_POSTURE awt::FontSlant NONE OBLIQUE ITALIC DONTKNOW REVERSE_OBLIQUE REVERSE_ITALIC
+//Schriftgrad (Punktgrösse z.B. 12) UNO_NAME_EDIT_CHAR_HEIGHT == UNO_NAME_CHAR_HEIGHT
+ //? UNO_NAME_EDIT_CHAR_WEIGHT == UNO_NAME_CHAR_WEIGHT
+//Sprache UNO_NAME_EDIT_CHAR_LOCALE lang::Locale
+
+//-------- tabpage: Schrifteffekt -----------
+//Unterstreichung UNO_NAME_CHAR_UNDERLINE sal_Int16 awt::FontUnderline_NONE _SINGLE _DOUBLE _DOTTED _DONTKNOW _DASH ...
+//Unterstreichung-farbe ??? 'CharUnderlineColor' + CharUnderlineHasColor
+//Durchstreichung z.B. doppelt "CharStrikeout" sal_Int16 awt::FontStrikeout_NONE _SINGLE _DOUBLE ...
+//wortweise-Durchstreichung ja/nein "CharWordMode" bool
+//Schriftfarbe UNO_NAME_EDIT_CHAR_COLOR sal_Int32 UNO_NAME_CHAR_COLOR
+//ReliefArt ohne/erhaben/tief "CharRelief" sal_Int16 text::FontRelief_NONE FontRelief_EMBOSSED FontRelief_ENGRAVED
+//Kontur "CharContoured" bool
+//Schatten UNO_NAME_CHAR_SHADOWED bool
+*/
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForCharacterProperties()
+{
+ //shape property -- chart model object property
+ static tMakePropertyNameMap m_aShapePropertyMapForCharacterProperties =
+ tMakePropertyNameMap
+// ( C2U( "CharBackColor" ), C2U("TextBackgroundColor") )
+// ( C2U( "CharCaseMap" ), C2U("CaseMapping") )
+ ( C2U( "CharColor" ), C2U("CharColor") )
+ ( C2U( "CharContoured" ), C2U("CharContoured") )
+/////// ( C2U( "CharCrossedOut" ), C2U("CharCrossedOut") ) //setting this explicitly somehow conflicts with CharStrikeout
+ ( C2U( "CharEmphasis" ), C2U("CharEmphasis") )//the service style::CharacterProperties describes a property called 'CharEmphasize' wich is nowhere implemented
+// ( C2U( "CharEscapement" ), C2U("CharEscapement") ) //#i98344# @future: add these to properties again, if the user interface offers the possibility to change them; then make sure that older wrong files are corrected on import
+// ( C2U( "CharEscapementHeight" ), C2U("CharEscapementHeight") ) //#i98344# @future: add these to properties again, if the user interface offers the possibility to change them; then make sure that older wrong files are corrected on import
+// ( C2U( "CharFlash" ), C2U("Flashing") )
+
+ ( C2U( "CharFontFamily" ), C2U("CharFontFamily") )
+ ( C2U( "CharFontFamilyAsian" ), C2U("CharFontFamilyAsian") )
+ ( C2U( "CharFontFamilyComplex" ), C2U("CharFontFamilyComplex") )
+ ( C2U( "CharFontCharSet" ), C2U("CharFontCharSet") )
+ ( C2U( "CharFontCharSetAsian" ), C2U("CharFontCharSetAsian") )
+ ( C2U( "CharFontCharSetComplex" ), C2U("CharFontCharSetComplex") )
+ ( C2U( "CharFontName" ), C2U("CharFontName") )
+ ( C2U( "CharFontNameAsian" ), C2U("CharFontNameAsian") )
+ ( C2U( "CharFontNameComplex" ), C2U("CharFontNameComplex") )
+ ( C2U( "CharFontPitch" ), C2U("CharFontPitch") )
+ ( C2U( "CharFontPitchAsian" ), C2U("CharFontPitchAsian") )
+ ( C2U( "CharFontPitchComplex" ), C2U("CharFontPitchComplex") )
+ ( C2U( "CharFontStyleName" ), C2U("CharFontStyleName") )
+ ( C2U( "CharFontStyleNameAsian" ), C2U("CharFontStyleNameAsian") )
+ ( C2U( "CharFontStyleNameComplex" ),C2U("CharFontStyleNameComplex") )
+
+ ( C2U( "CharHeight" ), C2U("CharHeight") )
+ ( C2U( "CharHeightAsian" ), C2U("CharHeightAsian") )
+ ( C2U( "CharHeightComplex" ), C2U("CharHeightComplex") )
+ ( C2U( "CharKerning" ), C2U("CharKerning") )
+ ( C2U( "CharLocale" ), C2U("CharLocale") )
+ ( C2U( "CharLocaleAsian" ), C2U("CharLocaleAsian") )
+ ( C2U( "CharLocaleComplex" ), C2U("CharLocaleComplex") )
+// ( C2U( "CharNoHyphenation" ), C2U("InhibitHyphenation") )
+ ( C2U( "CharPosture" ), C2U("CharPosture") )
+ ( C2U( "CharPostureAsian" ), C2U("CharPostureAsian") )
+ ( C2U( "CharPostureComplex" ), C2U("CharPostureComplex") )
+ ( C2U( "CharRelief" ), C2U("CharRelief") )
+// ( C2U( "CharRotation" ), C2U("Rotation") ) --> additional feature ...
+// ( C2U( "CharScaleWidth" ), C2U("CharScaleWidth") )
+ ( C2U( "CharShadowed" ), C2U("CharShadowed") )
+ ( C2U( "CharStrikeout" ), C2U("CharStrikeout") )
+ ( C2U( "CharUnderline" ), C2U("CharUnderline") )
+ ( C2U( "CharUnderlineColor" ), C2U("CharUnderlineColor") )
+ ( C2U( "CharUnderlineHasColor" ), C2U("CharUnderlineHasColor") )
+ ( C2U( "CharOverline" ), C2U("CharOverline") )
+ ( C2U( "CharOverlineColor" ), C2U("CharOverlineColor") )
+ ( C2U( "CharOverlineHasColor" ), C2U("CharOverlineHasColor") )
+ ( C2U( "CharWeight" ), C2U("CharWeight") )
+ ( C2U( "CharWeightAsian" ), C2U("CharWeightAsian") )
+ ( C2U( "CharWeightComplex" ), C2U("CharWeightComplex") )
+ ( C2U( "CharWordMode" ), C2U("CharWordMode") )
+
+ ( C2U( "WritingMode" ), C2U("WritingMode") )
+
+// ( C2U( "RubyText" ), C2U("RubyText") )
+// ( C2U( "RubyAdjust" ), C2U("RubyAdjust") )
+// ( C2U( "RubyCharStyleName" ), C2U("RubyStyleName") )
+// ( C2U( "RubyIsAbove" ), C2U("RubyIsAbove") )
+ ( C2U( "ParaIsCharacterDistance" ), C2U("ParaIsCharacterDistance") )
+ ;
+ return m_aShapePropertyMapForCharacterProperties;
+}
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForParagraphProperties()
+{
+ //shape property -- chart model object property
+ static tMakePropertyNameMap m_aShapePropertyMapForParagraphProperties =
+ tMakePropertyNameMap
+ ( C2U( "ParaAdjust" ), C2U("ParaAdjust") )
+ ( C2U( "ParaBottomMargin" ), C2U("ParaBottomMargin") )
+ ( C2U( "ParaIsHyphenation" ), C2U("ParaIsHyphenation") )
+ ( C2U( "ParaLastLineAdjust" ), C2U("ParaLastLineAdjust") )
+ ( C2U( "ParaLeftMargin" ), C2U("ParaLeftMargin") )
+ ( C2U( "ParaRightMargin" ), C2U("ParaRightMargin") )
+ ( C2U( "ParaTopMargin" ), C2U("ParaTopMargin") )
+ ;
+ return m_aShapePropertyMapForParagraphProperties;
+}
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForFillProperties()
+{
+ //shape property -- chart model object property
+ static tMakePropertyNameMap m_aShapePropertyMapForFillProperties =
+ tMakePropertyNameMap
+ ( C2U( "FillBackground" ), C2U( "FillBackground" ) )
+ ( C2U( "FillBitmapName" ), C2U( "FillBitmapName" ) )
+ ( C2U( "FillColor" ), C2U( "FillColor" ) )
+ ( C2U( "FillGradientName" ), C2U( "FillGradientName" ) )
+ ( C2U( "FillGradientStepCount" ), C2U( "FillGradientStepCount" ) )
+ ( C2U( "FillHatchName" ), C2U( "FillHatchName" ) )
+ ( C2U( "FillStyle" ), C2U( "FillStyle" ) )
+ ( C2U( "FillTransparence" ), C2U( "FillTransparence" ) )
+ ( C2U( "FillTransparenceGradientName" ), C2U("FillTransparenceGradientName") )
+ //bitmap properties
+ ( C2U( "FillBitmapMode" ), C2U( "FillBitmapMode" ) )
+ ( C2U( "FillBitmapSizeX" ), C2U( "FillBitmapSizeX" ) )
+ ( C2U( "FillBitmapSizeY" ), C2U( "FillBitmapSizeY" ) )
+ ( C2U( "FillBitmapLogicalSize" ), C2U( "FillBitmapLogicalSize" ) )
+ ( C2U( "FillBitmapOffsetX" ), C2U( "FillBitmapOffsetX" ) )
+ ( C2U( "FillBitmapOffsetY" ), C2U( "FillBitmapOffsetY" ) )
+ ( C2U( "FillBitmapRectanglePoint" ),C2U( "FillBitmapRectanglePoint" ) )
+ ( C2U( "FillBitmapPositionOffsetX" ),C2U( "FillBitmapPositionOffsetX" ) )
+ ( C2U( "FillBitmapPositionOffsetY" ),C2U( "FillBitmapPositionOffsetY" ) )
+ ;
+ return m_aShapePropertyMapForFillProperties;
+}
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForLineProperties()
+{
+ //shape property -- chart model object property
+ static tMakePropertyNameMap m_aShapePropertyMapForLineProperties =
+ tMakePropertyNameMap
+ ( C2U( "LineColor" ), C2U( "LineColor" ) )
+ ( C2U( "LineDashName" ), C2U( "LineDashName" ) )
+ ( C2U( "LineJoint" ), C2U( "LineJoint" ) )
+ ( C2U( "LineStyle" ), C2U( "LineStyle" ) )
+ ( C2U( "LineTransparence" ), C2U( "LineTransparence" ) )
+ ( C2U( "LineWidth" ), C2U( "LineWidth" ) )
+ ;
+ return m_aShapePropertyMapForLineProperties;
+}
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForFillAndLineProperties()
+{
+ static tMakePropertyNameMap m_aShapePropertyMapForFillAndLineProperties =
+ tMakePropertyNameMap
+ ( PropertyMapper::getPropertyNameMapForFillProperties() )
+ ( PropertyMapper::getPropertyNameMapForLineProperties() )
+ ;
+
+ return m_aShapePropertyMapForFillAndLineProperties;
+}
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForTextShapeProperties()
+{
+ static tMakePropertyNameMap m_aShapePropertyMapForTextShapeProperties =
+ tMakePropertyNameMap
+ ( PropertyMapper::getPropertyNameMapForCharacterProperties() )
+ ( PropertyMapper::getPropertyNameMapForFillProperties() )
+ ( PropertyMapper::getPropertyNameMapForLineProperties() )
+// ( PropertyMapper::getPropertyNameMapForParagraphProperties() )
+ // some text properties
+// ( C2U( "TextHorizontalAdjust" ), C2U( "TextHorizontalAdjust" ) )
+// ( C2U( "TextVerticalAdjust" ), C2U( "TextVerticalAdjust" ) )
+// ( C2U( "TextAutoGrowHeight" ), C2U( "TextAutoGrowHeight" ) )
+// ( C2U( "TextAutoGrowWidth" ), C2U( "TextAutoGrowWidth" ) )
+// ( C2U( "TextLeftDistance" ), C2U( "TextLeftDistance" ) )
+// ( C2U( "TextRightDistance" ), C2U( "TextRightDistance" ) )
+// ( C2U( "TextUpperDistance" ), C2U( "TextUpperDistance" ) )
+// ( C2U( "TextLowerDistance" ), C2U( "TextLowerDistance" ) )
+ ;
+
+ return m_aShapePropertyMapForTextShapeProperties;
+}
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForLineSeriesProperties()
+{
+ //shape property -- chart model object property
+ static tMakePropertyNameMap m_aShapePropertyMapForLineSeriesProperties =
+ tMakePropertyNameMap
+ ( C2U( "LineColor" ), C2U("Color") )
+ ( C2U( "LineDashName" ), C2U("LineDashName") )
+// ( C2U( "LineJoint" ), C2U("LineJoint") )
+ ( C2U( "LineStyle" ), C2U("LineStyle") )
+ ( C2U( "LineTransparence" ), C2U("Transparency") )
+ ( C2U( "LineWidth" ), C2U("LineWidth") )
+
+ ;
+ return m_aShapePropertyMapForLineSeriesProperties;
+}
+
+const tMakePropertyNameMap& PropertyMapper::getPropertyNameMapForFilledSeriesProperties()
+{
+ //shape property -- chart model object property
+ static tMakePropertyNameMap m_aShapePropertyMapForFilledSeriesProperties =
+ tMakePropertyNameMap
+ ( C2U( "FillBackground"), C2U("FillBackground") )
+ ( C2U( "FillBitmapName" ), C2U("FillBitmapName") )
+ ( C2U( "FillColor" ), C2U("Color") )
+ ( C2U( "FillGradientName" ), C2U("GradientName") )
+ ( C2U( "FillGradientStepCount" ), C2U( "GradientStepCount" ) )
+ ( C2U( "FillHatchName" ), C2U("HatchName") )
+ ( C2U( "FillStyle" ), C2U("FillStyle") )
+ ( C2U( "FillTransparence" ), C2U("Transparency") )
+ ( C2U( "FillTransparenceGradientName" ), C2U("TransparencyGradientName") )
+ //bitmap properties
+ ( C2U( "FillBitmapMode" ), C2U( "FillBitmapMode" ) )
+ ( C2U( "FillBitmapSizeX" ), C2U( "FillBitmapSizeX" ) )
+ ( C2U( "FillBitmapSizeY" ), C2U( "FillBitmapSizeY" ) )
+ ( C2U( "FillBitmapLogicalSize" ), C2U( "FillBitmapLogicalSize" ) )
+ ( C2U( "FillBitmapOffsetX" ), C2U( "FillBitmapOffsetX" ) )
+ ( C2U( "FillBitmapOffsetY" ), C2U( "FillBitmapOffsetY" ) )
+ ( C2U( "FillBitmapRectanglePoint" ),C2U( "FillBitmapRectanglePoint" ) )
+ ( C2U( "FillBitmapPositionOffsetX" ),C2U( "FillBitmapPositionOffsetX" ) )
+ ( C2U( "FillBitmapPositionOffsetY" ),C2U( "FillBitmapPositionOffsetY" ) )
+ //line properties
+ ( C2U( "LineColor" ), C2U("BorderColor") )
+ ( C2U( "LineDashName" ), C2U("BorderDashName") )
+// ( C2U( "LineJoint" ), C2U("LineJoint") )
+ ( C2U( "LineStyle" ), C2U("BorderStyle") )
+ ( C2U( "LineTransparence" ), C2U("BorderTransparency") )
+ ( C2U( "LineWidth" ), C2U("BorderWidth") )
+ ;
+ return m_aShapePropertyMapForFilledSeriesProperties;
+}
+
+void PropertyMapper::setMultiProperties(
+ const tNameSequence& rNames
+ , const tAnySequence& rValues
+ , const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet >& xTarget )
+{
+ bool bSuccess = false;
+ try
+ {
+ uno::Reference< beans::XMultiPropertySet > xShapeMultiProp( xTarget, uno::UNO_QUERY );
+ if( xShapeMultiProp.is() )
+ {
+ xShapeMultiProp->setPropertyValues( rNames, rValues );
+ bSuccess = true;
+ }
+ }
+ catch( uno::Exception& e )
+ {
+ ASSERT_EXCEPTION( e ); //if this occurs more often think of removing the XMultiPropertySet completly for better performance
+ }
+
+ if(!bSuccess)
+ try
+ {
+ sal_Int32 nCount = std::max( rNames.getLength(), rValues.getLength() );
+ rtl::OUString aPropName;
+ uno::Any aValue;
+ for( sal_Int32 nN = 0; nN < nCount; nN++ )
+ {
+ aPropName = rNames[nN];
+ aValue = rValues[nN];
+
+ try
+ {
+ xTarget->setPropertyValue( aPropName, aValue );
+ }
+ catch( uno::Exception& e )
+ {
+ ASSERT_EXCEPTION( e );
+ }
+ }
+ }
+ catch( uno::Exception& e )
+ {
+ ASSERT_EXCEPTION( e );
+ }
+}
+
+void PropertyMapper::getTextLabelMultiPropertyLists(
+ const uno::Reference< beans::XPropertySet >& xSourceProp
+ , tNameSequence& rPropNames, tAnySequence& rPropValues
+ , bool bName
+ , sal_Int32 nLimitedSpace
+ , bool bLimitedHeight )
+{
+ //fill character properties into the ValueMap
+ tPropertyNameValueMap aValueMap;
+ PropertyMapper::getValueMap( aValueMap
+ , PropertyMapper::getPropertyNameMapForCharacterProperties()
+ , xSourceProp );
+
+ //some more shape properties apart from character properties, position-matrix and label string
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("LineStyle"), uno::makeAny(drawing::LineStyle_NONE) ) ); // drawing::LineStyle
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextHorizontalAdjust"), uno::makeAny(drawing::TextHorizontalAdjust_CENTER) ) ); // drawing::TextHorizontalAdjust - needs to be overwritten
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextVerticalAdjust"), uno::makeAny(drawing::TextVerticalAdjust_CENTER) ) ); //drawing::TextVerticalAdjust - needs to be overwritten
+ //aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextWritingMode"), uno::makeAny(eWritingMode) ) ); //text::WritingMode
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextAutoGrowHeight"), uno::makeAny(sal_True) ) ); // sal_Bool
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextAutoGrowWidth"), uno::makeAny(sal_True) ) ); // sal_Bool
+ if( bName )
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("Name"), uno::makeAny( rtl::OUString() ) ) ); //CID rtl::OUString - needs to be overwritten for each point
+
+ if( nLimitedSpace > 0 )
+ {
+ if(bLimitedHeight)
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextMaximumFrameHeight"), uno::makeAny(nLimitedSpace) ) ); //sal_Int32
+ else
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextMaximumFrameWidth"), uno::makeAny(nLimitedSpace) ) ); //sal_Int32
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("ParaIsHyphenation"), uno::makeAny(sal_True) ) );
+ }
+
+ /*
+ //@todo ?: add paragraph properties:
+ //(uno::makeAny(eParaAdjust)) //ParaAdjust - style::ParagraphAdjust
+ //(uno::makeAny( (sal_Bool)rAxisLabelProperties.bLineBreakAllowed )) //ParaIsHyphenation - sal_Bool
+ style::ParagraphAdjust eParaAdjust( style::ParagraphAdjust_LEFT );
+ if( eHorizontalAdjust == drawing::TextHorizontalAdjust_RIGHT )
+ eParaAdjust = style::ParagraphAdjust_RIGHT;
+ */
+
+ PropertyMapper::getMultiPropertyListsFromValueMap( rPropNames, rPropValues, aValueMap );
+}
+
+void PropertyMapper::getPreparedTextShapePropertyLists(
+ const uno::Reference< beans::XPropertySet >& xSourceProp
+ , tNameSequence& rPropNames, tAnySequence& rPropValues )
+{
+ //fill character, line and fill properties into the ValueMap
+ tPropertyNameValueMap aValueMap;
+ PropertyMapper::getValueMap( aValueMap
+ , PropertyMapper::getPropertyNameMapForTextShapeProperties()
+ , xSourceProp );
+
+ // auto-grow makes sure the shape has the correct size after setting text
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextHorizontalAdjust"), uno::makeAny( drawing::TextHorizontalAdjust_CENTER )));
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextVerticalAdjust"), uno::makeAny( drawing::TextVerticalAdjust_CENTER )));
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextAutoGrowHeight"), uno::makeAny( true )));
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextAutoGrowWidth"), uno::makeAny( true )));
+
+ // set some distance to the border, in case it is shown
+ const sal_Int32 nWidthDist = 250;
+ const sal_Int32 nHeightDist = 125;
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextLeftDistance"), uno::makeAny( nWidthDist )));
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextRightDistance"), uno::makeAny( nWidthDist )));
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextUpperDistance"), uno::makeAny( nHeightDist )));
+ aValueMap.insert( tPropertyNameValueMap::value_type( C2U("TextLowerDistance"), uno::makeAny( nHeightDist )));
+
+ // use a line-joint showing the border of thick lines like two rectangles
+ // filled in between.
+ aValueMap[C2U("LineJoint")] <<= drawing::LineJoint_ROUND;
+
+ PropertyMapper::getMultiPropertyListsFromValueMap( rPropNames, rPropValues, aValueMap );
+}
+
+//.............................................................................
+} //namespace chart
+//.............................................................................