diff options
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/msfilter/escherex.cxx | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx index 25a84438a26c..5af60c8c90c3 100644 --- a/filter/source/msfilter/escherex.cxx +++ b/filter/source/msfilter/escherex.cxx @@ -70,6 +70,7 @@ #include <com/sun/star/drawing/ProjectionMode.hpp> #include <com/sun/star/text/XSimpleText.hpp> #include <com/sun/star/drawing/ShadeMode.hpp> +#include <com/sun/star/drawing/TextFitToSizeType.hpp> #include <vcl/hatch.hxx> #include <com/sun/star/awt/XGraphics.hpp> #include <com/sun/star/awt/FontSlant.hpp> @@ -3033,6 +3034,42 @@ void EscherPropertyContainer::CreateCustomShapeProperties( const MSO_SPT eShapeT nTextPathFlags &=~0x20; } } + //export gTextAlign attr + if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextHorizontalAdjust" ) ), sal_True ) ) + { + MSO_GeoTextAlign gTextAlign = mso_alignTextCenter; + SdrFitToSizeType eFTS( ((SdrTextFitToSizeTypeItem&)pCustoShape->GetMergedItem( SDRATTR_TEXT_FITTOSIZE )).GetValue() ); + drawing::TextHorizontalAdjust eHA( drawing::TextHorizontalAdjust_LEFT ); + aAny >>= eHA; + switch( eHA ) + { + case drawing::TextHorizontalAdjust_LEFT : + gTextAlign = mso_alignTextLeft; + break; + case drawing::TextHorizontalAdjust_CENTER: + gTextAlign = mso_alignTextCenter; + break; + case drawing::TextHorizontalAdjust_RIGHT: + gTextAlign = mso_alignTextRight; + break; + case drawing::TextHorizontalAdjust_BLOCK: + { + SdrFitToSizeType eFTS( ((SdrTextFitToSizeTypeItem&)pCustoShape->GetMergedItem( SDRATTR_TEXT_FITTOSIZE )).GetValue() ); + if ( eFTS == SDRTEXTFIT_ALLLINES) + { + gTextAlign = mso_alignTextStretch; + } + else + { + gTextAlign = mso_alignTextWordJust; + } + break; + } + default: + break; + } + AddOpt(DFF_Prop_gtextAlign,gTextAlign); + } } if ( nTextPathFlags != nTextPathFlagsOrg ) AddOpt( DFF_Prop_gtextFStrikethrough, nTextPathFlags ); |