summaryrefslogtreecommitdiff
path: root/oox/source/export/drawingml.cxx
diff options
context:
space:
mode:
authorRadek Doulik <rodo@novell.com>2012-11-19 18:20:24 +0100
committerRadek Doulik <rodo@novell.com>2012-11-20 20:25:25 +0100
commit88bd07f118f6a5fd0143ea2a82c71ff14010187e (patch)
tree3a49b09c0893dc559b007b9f851c793b9784daa1 /oox/source/export/drawingml.cxx
parent415ac5f59ee7a5838874070a3d41af69584e7a3f (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.cxx53
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;