Kaydet (Commit) f3221085 authored tarafından Radek Doulik's avatar Radek Doulik

export embedded spreadsheet(s), fixes n#780830

Change-Id: Iee8328a695b554d97f6805b64b98706b9e3d7ab9
üst 78770449
......@@ -81,6 +81,9 @@ protected:
rtl::OUString WriteImage( const rtl::OUString& rURL );
const char* GetComponentDir();
const char* GetRelationCompPrefix();
public:
DrawingML( ::sax_fastparser::FSHelperPtr pFS, ::oox::core::XmlFilterBase* pFB = NULL, DocumentType eDocumentType = DOCUMENT_PPTX ) : meDocumentType( eDocumentType ), mpFS( pFS ), mpFB( pFB ) {}
void SetFS( ::sax_fastparser::FSHelperPtr pFS ) { mpFS = pFS; }
......@@ -104,7 +107,7 @@ public:
void WriteStretch();
void WriteLinespacing( ::com::sun::star::style::LineSpacing& rLineSpacing );
::rtl::OUString WriteBlip( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, ::rtl::OUString& rURL );
::rtl::OUString WriteBlip( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, ::rtl::OUString& rURL, Graphic *pGraphic=NULL );
void WriteBlipMode( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet );
void WriteShapeTransformation( ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rXShape,
......
......@@ -42,6 +42,7 @@ namespace oox { namespace drawingml {
class OOX_DLLPUBLIC ShapeExport : public DrawingML {
private:
static int mnSpreadsheetCounter;
struct ShapeCheck
{
bool operator()( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape> s1, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape> s2 ) const
......@@ -61,6 +62,8 @@ public:
protected:
sal_Int32 mnShapeIdMax, mnPictureIdMax;
void WriteGraphicObjectShapePart( ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > xShape, Graphic *pGraphic=NULL );
private:
sal_Int32 mnXmlNamespace;
Fraction maFraction;
......
......@@ -421,6 +421,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 ();
......@@ -482,16 +506,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 )
......@@ -500,22 +516,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() );
......@@ -523,9 +528,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;
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment