xmloff/inc/EnhancedCustomShapeToken.hxx | 2 xmloff/inc/xmloff/xmltoken.hxx | 1 xmloff/source/core/xmltoken.cxx | 1 xmloff/source/draw/EnhancedCustomShapeToken.cxx | 2 xmloff/source/draw/shapeexport4.cxx | 64 ++++++++++++++++++++-- xmloff/source/draw/ximpcustomshape.cxx | 68 ++++++++++++++++++++++++ 6 files changed, 132 insertions(+), 6 deletions(-)
New commits: commit d101eac309d15fdf6031be898823b3f8d1e4911a Author: Radek Doulik <r...@novell.com> Date: Fri Feb 1 12:25:23 2013 +0100 export darken/darkeless/lighten/lightenless commands Change-Id: I4531ab82a52e3da41f12409185f7c0730381aa23 diff --git a/xmloff/source/draw/shapeexport4.cxx b/xmloff/source/draw/shapeexport4.cxx index 7b80346..41f3652 100644 --- a/xmloff/source/draw/shapeexport4.cxx +++ b/xmloff/source/draw/shapeexport4.cxx @@ -425,6 +425,30 @@ void ImpExportEnhancedPath( SvXMLExport& rExport, i += 2; } break; + case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::DARKEN : + if ( bExtended ) + aStrBuffer.append( (sal_Unicode)'H' ); + else + bNeedExtended = true; + break; + case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::DARKENLESS : + if ( bExtended ) + aStrBuffer.append( (sal_Unicode)'I' ); + else + bNeedExtended = true; + break; + case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LIGHTEN : + if ( bExtended ) + aStrBuffer.append( (sal_Unicode)'J' ); + else + bNeedExtended = true; + break; + case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LIGHTENLESS : + if ( bExtended ) + aStrBuffer.append( (sal_Unicode)'K' ); + else + bNeedExtended = true; + break; default : // ups, seems to be something wrong { aSegment.Count = 1; diff --git a/xmloff/source/draw/ximpcustomshape.cxx b/xmloff/source/draw/ximpcustomshape.cxx index bbd85a3..39221f7 100644 --- a/xmloff/source/draw/ximpcustomshape.cxx +++ b/xmloff/source/draw/ximpcustomshape.cxx @@ -711,6 +711,34 @@ void GetEnhancedPath( std::vector< com::sun::star::beans::PropertyValue >& rDest nIndex++; } break; + case 'H' : + { + nLatestSegmentCommand = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::DARKEN; + nParametersNeeded = 0; + nIndex++; + } + break; + case 'I' : + { + nLatestSegmentCommand = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::DARKENLESS; + nParametersNeeded = 0; + nIndex++; + } + break; + case 'J' : + { + nLatestSegmentCommand = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LIGHTEN; + nParametersNeeded = 0; + nIndex++; + } + break; + case 'K' : + { + nLatestSegmentCommand = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LIGHTENLESS; + nParametersNeeded = 0; + nIndex++; + } + break; case 'W' : { nLatestSegmentCommand = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO; commit 6016589874e419a4a276041b2361400fbabc568f Author: Radek Doulik <r...@novell.com> Date: Thu Jan 31 12:05:50 2013 +0100 export subpath sizes (these are for example in pptx custom shape presets) Change-Id: Iab21d0845d0cb6e4dadeffb5f7b9ebab1e4b955a diff --git a/xmloff/inc/EnhancedCustomShapeToken.hxx b/xmloff/inc/EnhancedCustomShapeToken.hxx index 66b9737..755db2f 100644 --- a/xmloff/inc/EnhancedCustomShapeToken.hxx +++ b/xmloff/inc/EnhancedCustomShapeToken.hxx @@ -93,6 +93,7 @@ namespace xmloff { namespace EnhancedCustomShapeToken { EAS_handle_polar, EAS_handle_radius_range_minimum, EAS_handle_radius_range_maximum, + EAS_sub_view_size, EAS_CustomShapeEngine, EAS_CustomShapeData, @@ -154,6 +155,7 @@ namespace xmloff { namespace EnhancedCustomShapeToken { EAS_SameLetterHeights, EAS_Position, EAS_AdjustmentValues, + EAS_SubViewSize, EAS_Last, EAS_NotFound diff --git a/xmloff/inc/xmloff/xmltoken.hxx b/xmloff/inc/xmloff/xmltoken.hxx index dca9fcf..8c3be4e 100644 --- a/xmloff/inc/xmloff/xmltoken.hxx +++ b/xmloff/inc/xmloff/xmltoken.hxx @@ -1733,6 +1733,7 @@ namespace xmloff { namespace token { XML_SUBTOTAL_FIELD, XML_SUBTOTAL_RULE, XML_SUBTOTAL_RULES, + XML_SUB_VIEW_SIZE, XML_SUFFIX, XML_SUM, XML_SWISS, diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx index b21d7fa..e436e59 100644 --- a/xmloff/source/core/xmltoken.cxx +++ b/xmloff/source/core/xmltoken.cxx @@ -1738,6 +1738,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 e82f175..6c86b01 100644 --- a/xmloff/source/draw/EnhancedCustomShapeToken.cxx +++ b/xmloff/source/draw/EnhancedCustomShapeToken.cxx @@ -121,6 +121,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 }, @@ -182,6 +183,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 28bfd29..7b80346 100644 --- a/xmloff/source/draw/shapeexport4.cxx +++ b/xmloff/source/draw/shapeexport4.cxx @@ -920,8 +920,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 f8966a1..bbd85a3 100644 --- a/xmloff/source/draw/ximpcustomshape.cxx +++ b/xmloff/source/draw/ximpcustomshape.cxx @@ -481,6 +481,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 ) { @@ -869,6 +906,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; commit 848be9a20843bed374c90ef2677aae9298cfe6c6 Author: Radek Doulik <r...@novell.com> Date: Thu Jul 19 16:06:52 2012 +0200 odf: export old path without unsupported commands in draw namespace as well - to preserve at least some data for older versions of Libre Office Change-Id: I2a33706c2a2344e45b57a00469a7387072f8602b diff --git a/xmloff/source/draw/shapeexport4.cxx b/xmloff/source/draw/shapeexport4.cxx index 43e75f9..28bfd29 100644 --- a/xmloff/source/draw/shapeexport4.cxx +++ b/xmloff/source/draw/shapeexport4.cxx @@ -323,13 +323,14 @@ void ImpExportHandles( SvXMLExport& rExport, const uno::Sequence< beans::Propert } void ImpExportEnhancedPath( SvXMLExport& rExport, - const uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair >& rCoordinates, - const uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment >& rSegments ) + const uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair >& rCoordinates, + const uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment >& rSegments, + bool bExtended = false ) { rtl::OUString aStr; rtl::OUStringBuffer aStrBuffer; - sal_uInt16 aNamespace = XML_NAMESPACE_DRAW; + bool bNeedExtended = false; sal_Int32 i, j, k, l; @@ -415,8 +416,15 @@ void ImpExportEnhancedPath( SvXMLExport& rExport, case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::QUADRATICCURVETO : aStrBuffer.append( (sal_Unicode)'Q' ); nParameter = 2; break; case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ARCANGLETO : - aStrBuffer.append( (sal_Unicode)'G' ); nParameter = 2; aNamespace = XML_NAMESPACE_DRAW_EXT; break; - + if ( bExtended ) { + aStrBuffer.append( (sal_Unicode)'G' ); + nParameter = 2; + } else { + aStrBuffer.setLength( aStrBuffer.getLength() - 1); + bNeedExtended = true; + i += 2; + } + break; default : // ups, seems to be something wrong { aSegment.Count = 1; @@ -445,7 +453,9 @@ void ImpExportEnhancedPath( SvXMLExport& rExport, } } aStr = aStrBuffer.makeStringAndClear(); - rExport.AddAttribute( aNamespace, XML_ENHANCED_PATH, aStr ); + rExport.AddAttribute( bExtended ? XML_NAMESPACE_DRAW_EXT : XML_NAMESPACE_DRAW, XML_ENHANCED_PATH, aStr ); + if ( !bExtended && bNeedExtended ) + ImpExportEnhancedPath( rExport, rCoordinates, rSegments, true ); } void ImpExportEnhancedGeometry( SvXMLExport& rExport, const uno::Reference< beans::XPropertySet >& xPropSet ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits