summaryrefslogtreecommitdiff
path: root/xmloff/source
diff options
context:
space:
mode:
authorRadek Doulik <rodo@novell.com>2013-01-31 12:05:50 +0100
committerRadek Doulik <rodo@novell.com>2013-04-05 16:48:15 +0200
commit7c5d35a66ef78837aa6fdc02eea723ce8ef012fa (patch)
treee385e5749c90cdce0f0139e7b0003466fcef2501 /xmloff/source
parentec1c30d34d9c9445ab6e22e280a9868cf910a3bc (diff)
export subpath sizes (these are for example in pptx custom shape presets)
Change-Id: Iab21d0845d0cb6e4dadeffb5f7b9ebab1e4b955a
Diffstat (limited to 'xmloff/source')
-rw-r--r--xmloff/source/core/xmltoken.cxx1
-rw-r--r--xmloff/source/draw/EnhancedCustomShapeToken.cxx2
-rw-r--r--xmloff/source/draw/shapeexport4.cxx18
-rw-r--r--xmloff/source/draw/ximpcustomshape.cxx40
4 files changed, 61 insertions, 0 deletions
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index 5c8014671b18..ae4c35924119 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -1737,6 +1737,7 @@ namespace xmloff { namespace token {
TOKEN( "subtotal-field", XML_SUBTOTAL_FIELD ),
TOKEN( "subtotal-rule", XML_SUBTOTAL_RULE ),
TOKEN( "subtotal-rules", XML_SUBTOTAL_RULES ),
+ TOKEN( "sub-view-size", XML_SUB_VIEW_SIZE ),
TOKEN( "suffix", XML_SUFFIX ),
TOKEN( "sum", XML_SUM ),
TOKEN( "swiss", XML_SWISS ),
diff --git a/xmloff/source/draw/EnhancedCustomShapeToken.cxx b/xmloff/source/draw/EnhancedCustomShapeToken.cxx
index 1e12ee2fe697..ba70abd924c5 100644
--- a/xmloff/source/draw/EnhancedCustomShapeToken.cxx
+++ b/xmloff/source/draw/EnhancedCustomShapeToken.cxx
@@ -112,6 +112,7 @@ static const TokenTable pTokenTableArray[] =
{ "handle-polar", EAS_handle_polar },
{ "handle-radius-range-minimum", EAS_handle_radius_range_minimum },
{ "handle-radius-range-maximum", EAS_handle_radius_range_maximum },
+ { "sub-view-size", EAS_sub_view_size },
{ "CustomShapeEngine", EAS_CustomShapeEngine },
{ "CustomShapeData", EAS_CustomShapeData },
@@ -173,6 +174,7 @@ static const TokenTable pTokenTableArray[] =
{ "SameLetterHeights", EAS_SameLetterHeights },
{ "Position", EAS_Position },
{ "AdjustmentValues", EAS_AdjustmentValues },
+ { "SubViewSize", EAS_SubViewSize },
{ "Last", EAS_Last },
{ "NotFound", EAS_NotFound }
diff --git a/xmloff/source/draw/shapeexport4.cxx b/xmloff/source/draw/shapeexport4.cxx
index d47b6bbd1a86..1bb54812714d 100644
--- a/xmloff/source/draw/shapeexport4.cxx
+++ b/xmloff/source/draw/shapeexport4.cxx
@@ -908,8 +908,26 @@ void ImpExportEnhancedGeometry( SvXMLExport& rExport, const uno::Reference< bean
for ( i = 0; i < nCount; i++ )
{
const beans::PropertyValue& rProp = aPathPropSeq[ i ];
+
switch( EASGet( rProp.Name ) )
{
+ case EAS_SubViewSize:
+ {
+ uno::Sequence< awt::Size > aSubViewSizes;
+ rProp.Value >>= aSubViewSizes;
+
+ for ( int nIdx = 0; nIdx < aSubViewSizes.getLength(); nIdx++ )
+ {
+ if ( nIdx )
+ aStrBuffer.append(' ');
+ ::sax::Converter::convertNumber( aStrBuffer, aSubViewSizes[nIdx].Width );
+ aStrBuffer.append(' ');
+ ::sax::Converter::convertNumber( aStrBuffer, aSubViewSizes[nIdx].Height );
+ }
+ aStr = aStrBuffer.makeStringAndClear();
+ rExport.AddAttribute( XML_NAMESPACE_DRAW_EXT, XML_SUB_VIEW_SIZE, aStr );
+ }
+ break;
case EAS_ExtrusionAllowed :
{
sal_Bool bExtrusionAllowed = sal_Bool();
diff --git a/xmloff/source/draw/ximpcustomshape.cxx b/xmloff/source/draw/ximpcustomshape.cxx
index 3b145ca526fc..a3406ed9ea9c 100644
--- a/xmloff/source/draw/ximpcustomshape.cxx
+++ b/xmloff/source/draw/ximpcustomshape.cxx
@@ -472,6 +472,43 @@ void GetDoubleSequence( std::vector< com::sun::star::beans::PropertyValue >& rDe
}
}
+void GetSizeSequence( std::vector< com::sun::star::beans::PropertyValue >& rDest,
+ const rtl::OUString& rValue, const EnhancedCustomShapeTokenEnum eDestProp )
+{
+ std::vector< sal_Int32 > vNum;
+ sal_Int32 nIndex = 0;
+ do
+ {
+ sal_Int32 n;
+ rtl::OUString aToken( rValue.getToken( 0, ' ', nIndex ) );
+ if (!::sax::Converter::convertNumber( n, aToken ))
+ break;
+ else
+ vNum.push_back( n );
+ }
+ while ( nIndex >= 0 );
+
+ if ( !vNum.empty() )
+ {
+ uno::Sequence< awt::Size > aSizeSeq( vNum.size() / 2 );
+ std::vector< sal_Int32 >::const_iterator aIter = vNum.begin();
+ std::vector< sal_Int32 >::const_iterator aEnd = vNum.end();
+ awt::Size* pValues = aSizeSeq.getArray();
+
+ while ( aIter != aEnd ) {
+ pValues->Width = *aIter++;
+ if ( aIter != aEnd )
+ pValues->Height = *aIter++;
+ pValues ++;
+ }
+
+ beans::PropertyValue aProp;
+ aProp.Name = EASGet( eDestProp );
+ aProp.Value <<= aSizeSeq;
+ rDest.push_back( aProp );
+ }
+}
+
void GetEnhancedParameter( std::vector< com::sun::star::beans::PropertyValue >& rDest, // e.g. draw:handle-position
const rtl::OUString& rValue, const EnhancedCustomShapeTokenEnum eDestProp )
{
@@ -860,6 +897,9 @@ void XMLEnhancedCustomShapeContext::StartElement( const uno::Reference< xml::sax
mrCustomShapeGeometry.push_back( aProp );
}
break;
+ case EAS_sub_view_size:
+ GetSizeSequence( maPath, rValue, EAS_SubViewSize );
+ break;
case EAS_text_rotate_angle :
GetDouble( mrCustomShapeGeometry, rValue, EAS_TextRotateAngle );
break;