diff options
author | Radek Doulik <rodo@novell.com> | 2012-11-19 18:20:24 +0100 |
---|---|---|
committer | Radek Doulik <rodo@novell.com> | 2012-11-20 20:25:25 +0100 |
commit | 88bd07f118f6a5fd0143ea2a82c71ff14010187e (patch) | |
tree | 3a49b09c0893dc559b007b9f851c793b9784daa1 /oox/source/export/drawingml.cxx | |
parent | 415ac5f59ee7a5838874070a3d41af69584e7a3f (diff) |
export embedded spreadsheet(s), fixes n#780830
Change-Id: Iee8328a695b554d97f6805b64b98706b9e3d7ab9
Diffstat (limited to 'oox/source/export/drawingml.cxx')
-rw-r--r-- | oox/source/export/drawingml.cxx | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index c4adc33e2eef..58decbd92681 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -430,6 +430,30 @@ OUString DrawingML::WriteImage( const OUString& rURL ) return OUString(); } +const char* DrawingML::GetComponentDir() +{ + switch ( meDocumentType ) + { + case DOCUMENT_DOCX: return "word"; + case DOCUMENT_PPTX: return "ppt"; + case DOCUMENT_XLSX: return "xl"; + } + + return "unknown"; +} + +const char* DrawingML::GetRelationCompPrefix() +{ + switch ( meDocumentType ) + { + case DOCUMENT_DOCX: return ""; + case DOCUMENT_PPTX: + case DOCUMENT_XLSX: return "../"; + } + + return "unknown"; +} + OUString DrawingML::WriteImage( const Graphic& rGraphic ) { GfxLink aLink = rGraphic.GetLink (); @@ -491,16 +515,8 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic ) } } - const char *pComponent = ""; - switch ( meDocumentType ) - { - case DOCUMENT_DOCX: pComponent = "word"; break; - case DOCUMENT_PPTX: pComponent = "ppt"; break; - case DOCUMENT_XLSX: pComponent = "xl"; break; - } - Reference< XOutputStream > xOutStream = mpFB->openFragmentStream( OUStringBuffer() - .appendAscii( pComponent ) + .appendAscii( GetComponentDir() ) .appendAscii( "/media/image" ) .append( (sal_Int32) mnImageCounter ) .appendAscii( pExtension ) @@ -509,22 +525,11 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic ) xOutStream->writeBytes( Sequence< sal_Int8 >( (const sal_Int8*) aData, nDataSize ) ); xOutStream->closeOutput(); - const char *pImagePrefix = ""; - switch ( meDocumentType ) - { - case DOCUMENT_DOCX: - pImagePrefix = "media/image"; - break; - case DOCUMENT_PPTX: - case DOCUMENT_XLSX: - pImagePrefix = "../media/image"; - break; - } - sRelId = mpFB->addRelation( mpFS->getOutputStream(), US( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" ), OUStringBuffer() - .appendAscii( pImagePrefix ) + .appendAscii( GetRelationCompPrefix() ) + .appendAscii( "media/image" ) .append( (sal_Int32) mnImageCounter ++ ) .appendAscii( pExtension ) .makeStringAndClear() ); @@ -532,9 +537,9 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic ) return sRelId; } -OUString DrawingML::WriteBlip( Reference< XPropertySet > rXPropSet, OUString& rURL ) +OUString DrawingML::WriteBlip( Reference< XPropertySet > rXPropSet, OUString& rURL, Graphic *pGraphic ) { - OUString sRelId = WriteImage( rURL ); + OUString sRelId = pGraphic ? WriteImage( *pGraphic ) : WriteImage( rURL ); sal_Int16 nBright = 0; sal_Int32 nContrast = 0; |