[Libreoffice-commits] core.git: 6 commits - oox/source sc/source
Markus Mohrhard
markus.mohrhard at googlemail.com
Fri Apr 3 19:16:02 PDT 2015
oox/source/drawingml/chart/seriescontext.cxx | 11 ++++++-----
oox/source/drawingml/chart/seriesconverter.cxx | 4 ++++
oox/source/export/chartexport.cxx | 11 +++++++----
sc/source/filter/excel/excdoc.cxx | 4 ++++
sc/source/filter/excel/xelink.cxx | 15 ++++++++++++---
sc/source/filter/excel/xepage.cxx | 7 ++++++-
sc/source/filter/inc/xepage.hxx | 4 ++++
7 files changed, 43 insertions(+), 13 deletions(-)
New commits:
commit e2ed0c6e2729438a6512fc51fc0bfd6055e849f2
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 4 04:07:36 2015 +0200
finally a good step in the direction of valid external data export
Change-Id: I22cbcb9d1f15ab18a8d70c1793c64f04f27389a2
diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx
index 454c918..7962745 100644
--- a/sc/source/filter/excel/xelink.cxx
+++ b/sc/source/filter/excel/xelink.cxx
@@ -1683,14 +1683,20 @@ void XclExpSupbook::SaveXml( XclExpXmlStream& rStrm )
}
- if (!maXctList.IsEmpty() || mxExtNameBfr)
+ if (mxExtNameBfr)
+ {
+ pExternalLink->startElement(XML_definedNames, FSEND);
+ // externalName elements
+ WriteExtNameBufferXml( rStrm );
+ pExternalLink->endElement(XML_definedNames);
+ }
+
+ if (!maXctList.IsEmpty())
{
pExternalLink->startElement( XML_sheetDataSet, FSEND);
// sheetData elements
maXctList.SaveXml( rStrm );
- // externalName elements
- WriteExtNameBufferXml( rStrm );
pExternalLink->endElement( XML_sheetDataSet);
commit 1b15733a87462f7075190e5344e6d8e0b46345ca
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 4 04:06:49 2015 +0200
document when we are going to create invalid OOXML documents
That makes my life so much easier when I need to debug where we screw
up.
Change-Id: Ia0b54eef47a06c43e3d0ba66b909e398e02a6d0e
diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx
index f9e22a7..454c918 100644
--- a/sc/source/filter/excel/xelink.cxx
+++ b/sc/source/filter/excel/xelink.cxx
@@ -1390,7 +1390,10 @@ void XclExpXct::SaveXml( XclExpXmlStream& rStrm )
{
XclExpCrnList aCrnRecs;
if (!BuildCrnList( aCrnRecs))
+ {
+ SAL_WARN("sc", "generating invalid OOXML files: sheetDataSet without sheetData child element");
return;
+ }
sax_fastparser::FSHelperPtr pFS = rStrm.GetCurrentStream();
commit 78f4ed104c832b4aa1ae2d8d367f1db7de486065
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 4 03:50:50 2015 +0200
correct xlsx element order, related tdf#59663
Change-Id: Iffb7a766f15475e3600332a6c76a15a1d192d7c8
diff --git a/sc/source/filter/excel/excdoc.cxx b/sc/source/filter/excel/excdoc.cxx
index 2582712..c322625 100644
--- a/sc/source/filter/excel/excdoc.cxx
+++ b/sc/source/filter/excel/excdoc.cxx
@@ -673,6 +673,10 @@ void ExcTable::FillAsTableXml()
// all MSODRAWING and OBJ stuff of this sheet goes here
aRecList.AppendRecord( GetObjectManager().ProcessDrawing( GetSdrPage( mnScTab ) ) );
+ XclExpImgData* pImgData = xPageSett->getGraphicExport();
+ if (pImgData)
+ aRecList.AppendRecord(std::shared_ptr<XclExpRecordBase>(pImgData));
+
aRecList.AppendRecord( xExtLst );
}
diff --git a/sc/source/filter/excel/xepage.cxx b/sc/source/filter/excel/xepage.cxx
index d352025..a68f021 100644
--- a/sc/source/filter/excel/xepage.cxx
+++ b/sc/source/filter/excel/xepage.cxx
@@ -405,9 +405,14 @@ void XclExpPageSettings::SaveXml( XclExpXmlStream& rStrm )
static_cast< sal_uInt16 >( GetXclMaxPos().Col() ) ).SaveXml( rStrm );
XclExpPageBreaks( EXC_ID_VERPAGEBREAKS, maData.maVerPageBreaks,
static_cast< sal_uInt16 >( GetXclMaxPos().Row() ) ).SaveXml( rStrm );
+}
+XclExpImgData* XclExpPageSettings::getGraphicExport()
+{
if( const Graphic* pGraphic = maData.mxBrushItem->GetGraphic() )
- XclExpImgData( *pGraphic, EXC_ID8_IMGDATA ).SaveXml( rStrm );
+ return new XclExpImgData( *pGraphic, EXC_ID8_IMGDATA );
+
+ return NULL;
}
XclExpChartPageSettings::XclExpChartPageSettings( const XclExpRoot& rRoot ) :
diff --git a/sc/source/filter/inc/xepage.hxx b/sc/source/filter/inc/xepage.hxx
index 2df9be9..ea1d82c 100644
--- a/sc/source/filter/inc/xepage.hxx
+++ b/sc/source/filter/inc/xepage.hxx
@@ -24,6 +24,8 @@
#include "xlpage.hxx"
#include "xeroot.hxx"
+class XclExpImgData;
+
// Page settings records ======================================================
// Header/footer --------------------------------------------------------------
@@ -100,6 +102,8 @@ public:
virtual void Save( XclExpStream& rStrm ) SAL_OVERRIDE;
virtual void SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
+ XclExpImgData* getGraphicExport();
+
private:
XclPageData maData; /// Page settings data.
};
commit 4ca0ca862fcfb81a500b52f4ae6454d949d8681c
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 4 02:45:33 2015 +0200
make that code a bit more robust against strange internal states
Change-Id: I1fd67449b9182db8eb9fb0e58b092cef00283c2a
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index 6187f67..c12bf02 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -2598,12 +2598,15 @@ void writeLabelProperties(
{
pFS->startElement(FSNS(XML_c, XML_spPr), FSEND);
pFS->startElement(FSNS(XML_a, XML_ln), XML_w, IS(convertHmmToEmu(nLabelBorderWidth)), FSEND);
- pFS->startElement(FSNS(XML_a, XML_solidFill), FSEND);
+ if (nLabelBorderColor != -1)
+ {
+ pFS->startElement(FSNS(XML_a, XML_solidFill), FSEND);
- OString aStr = OString::number(nLabelBorderColor, 16).toAsciiUpperCase();
- pFS->singleElement(FSNS(XML_a, XML_srgbClr), XML_val, aStr.getStr(), FSEND);
+ OString aStr = OString::number(nLabelBorderColor, 16).toAsciiUpperCase();
+ pFS->singleElement(FSNS(XML_a, XML_srgbClr), XML_val, aStr.getStr(), FSEND);
- pFS->endElement(FSNS(XML_a, XML_solidFill));
+ pFS->endElement(FSNS(XML_a, XML_solidFill));
+ }
pFS->endElement(FSNS(XML_a, XML_ln));
pFS->endElement(FSNS(XML_c, XML_spPr));
}
commit 6f37dc503c8ade591a2550439e11d2c2981c074a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 4 02:41:49 2015 +0200
don't import data labels border properties for noFill borders
They are not shown anyway and just confuse us internally as they contain
a width but no color and produce invalid documents during export.
Change-Id: Ibe20a27b0172ece86dbb1f734df567b903465ebf
diff --git a/oox/source/drawingml/chart/seriesconverter.cxx b/oox/source/drawingml/chart/seriesconverter.cxx
index 1925314..7470929 100644
--- a/oox/source/drawingml/chart/seriesconverter.cxx
+++ b/oox/source/drawingml/chart/seriesconverter.cxx
@@ -168,6 +168,10 @@ void lclConvertLabelFormatting( PropertySet& rPropSet, ObjectFormatter& rFormatt
void importBorderProperties( PropertySet& rPropSet, Shape& rShape, const GraphicHelper& rGraphicHelper )
{
LineProperties& rLP = rShape.getLineProperties();
+ // no fill has the same effect as no border so skip it
+ if (rLP.maLineFill.moFillType.get() == XML_noFill)
+ return;
+
if (rLP.moLineWidth.has())
{
sal_Int32 nWidth = convertEmuToHmm(rLP.moLineWidth.get());
commit 547c58a6173535c679027c83fb3ed77f6060fd09
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 4 02:25:00 2015 +0200
fix OOXML vs MSO2007 in chart import in one more place
Change-Id: I96bafad0cc73b27c2a08b5205a35b10b4901afb9
diff --git a/oox/source/drawingml/chart/seriescontext.cxx b/oox/source/drawingml/chart/seriescontext.cxx
index 3e71233..b8ade3d 100644
--- a/oox/source/drawingml/chart/seriescontext.cxx
+++ b/oox/source/drawingml/chart/seriescontext.cxx
@@ -36,13 +36,12 @@ using ::oox::core::ContextHandlerRef;
namespace {
ContextHandlerRef lclDataLabelSharedCreateContext( ContextHandler2& rContext,
- sal_Int32 nElement, const AttributeList& rAttribs, DataLabelModelBase& orModel )
+ sal_Int32 nElement, const AttributeList& rAttribs, DataLabelModelBase& orModel, bool bMSO2007 )
{
if( rContext.isRootElement() ) switch( nElement )
{
case C_TOKEN( delete ):
- // default is 'false', not 'true' as specified
- orModel.mbDeleted = rAttribs.getBool( XML_val, false );
+ orModel.mbDeleted = rAttribs.getBool( XML_val, bMSO2007 ? false : true );
return 0;
case C_TOKEN( dLblPos ):
orModel.monLabelPos = rAttribs.getToken( XML_val, XML_TOKEN_INVALID );
@@ -108,7 +107,8 @@ ContextHandlerRef DataLabelContext::onCreateContext( sal_Int32 nElement, const A
case C_TOKEN( tx ):
return new TextContext( *this, mrModel.mxText.create() );
}
- return lclDataLabelSharedCreateContext( *this, nElement, rAttribs, mrModel );
+ bool bMSO2007 = getFilter().isMSO2007Document();
+ return lclDataLabelSharedCreateContext( *this, nElement, rAttribs, mrModel, bMSO2007 );
}
void DataLabelContext::onCharacters( const OUString& rChars )
@@ -138,7 +138,8 @@ ContextHandlerRef DataLabelsContext::onCreateContext( sal_Int32 nElement, const
mrModel.mbShowLeaderLines = rAttribs.getBool( XML_val, false );
return 0;
}
- return lclDataLabelSharedCreateContext( *this, nElement, rAttribs, mrModel );
+ bool bMSO2007 = getFilter().isMSO2007Document();
+ return lclDataLabelSharedCreateContext( *this, nElement, rAttribs, mrModel, bMSO2007 );
}
void DataLabelsContext::onCharacters( const OUString& rChars )
More information about the Libreoffice-commits
mailing list