[Libreoffice-commits] core.git: 2 commits - include/oox oox/source
Xisco Fauli
anistenis at gmail.com
Sun Jun 2 15:16:45 PDT 2013
include/oox/drawingml/table/tableproperties.hxx | 2
oox/source/drawingml/table/tableproperties.cxx | 146 +++++++++++++++++++++++-
2 files changed, 145 insertions(+), 3 deletions(-)
New commits:
commit 355329a3cdbd8e4f2b7c6032ba0538a9a2a13d86
Author: Xisco Fauli <anistenis at gmail.com>
Date: Sun Jun 2 23:58:27 2013 +0200
Don't merge this file
Change-Id: I5efca8bf4969252198e06ac3309064e8d69c0e55
diff --git a/oox/inc/oox/drawingml/table/tableproperties.hxx b/oox/inc/oox/drawingml/table/tableproperties.hxx
deleted file mode 100644
index 2928966..0000000
--- a/oox/inc/oox/drawingml/table/tableproperties.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/**************************************************************
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- *************************************************************/
-
-
-
-#ifndef OOX_DRAWINGML_TABLEPROPERTIES_HXX
-#define OOX_DRAWINGML_TABLEPROPERTIES_HXX
-
-#include "oox/drawingml/table/tablerow.hxx"
-#include "oox/drawingml/table/tablestyle.hxx"
-#include "oox/helper/propertymap.hxx"
-#include "oox/drawingml/color.hxx"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/optional.hpp>
-#include <vector>
-#include <map>
-
-namespace oox { namespace drawingml { namespace table {
-
-class TableProperties
-{
-public:
-
- TableProperties();
- ~TableProperties();
-
- std::vector< sal_Int32 >& getTableGrid() { return mvTableGrid; };
- std::vector< TableRow >& getTableRows() { return mvTableRows; };
-
- rtl::OUString& getStyleId(){ return maStyleId; };
- boost::shared_ptr< TableStyle >& getTableStyle(){ return mpTableStyle; };
- sal_Bool& isRtl(){ return mbRtl; };
- sal_Bool& isFirstRow(){ return mbFirstRow; };
- sal_Bool& isFirstCol(){ return mbFirstCol; };
- sal_Bool& isLastRow(){ return mbLastRow; };
- sal_Bool& isLastCol(){ return mbLastCol; };
- sal_Bool& isBandRow(){ return mbBandRow; };
- sal_Bool& isBandCol(){ return mbBandCol; };
-
- void apply( const TablePropertiesPtr& );
- void pushToPropSet( const ::oox::core::XmlFilterBase& rFilterBase,
- const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > & xPropSet, ::oox::drawingml::TextListStylePtr pMasterTextListStyle );
-
-private:
-
- const TableStyle& getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase, sal_Bool &isCreateTabStyle);
-
- rtl::OUString maStyleId; // either StyleId is available
- boost::shared_ptr< TableStyle > mpTableStyle; // or the complete TableStyle
- std::vector< sal_Int32 > mvTableGrid;
- std::vector< TableRow > mvTableRows;
-
- sal_Bool mbRtl;
- sal_Bool mbFirstRow;
- sal_Bool mbFirstCol;
- sal_Bool mbLastRow;
- sal_Bool mbLastCol;
- sal_Bool mbBandRow;
- sal_Bool mbBandCol;
-};
-
-} } }
-
-#endif // OOX_DRAWINGML_TABLEPROPERTIES_HXX
commit f39f7ba614749d99362a2059919521eee6bdb6fc
Author: Zhe Wang <wangzcdl at apache.org>
Date: Fri Sep 7 03:49:09 2012 +0000
Fix issue #i120723#: Table style is lost when import PPTX by AOO
* subversion/main/oox/inc/oox/drawingml/table/tableproperties.hxx
* subversion/main/oox/source/drawingml/table/tableproperties.cxx
[]if the imported table in pptx just have tableStyleId, should fill the tablestyle's content.
Patch by: Ma Bingbing <jiazema at gmail.com>
Suggested by: Wang Zhe <kingwisemmx at gmail.com>
Found by:Ma Bingbing <jiazema at gmail.com>
Review by: Wang Zhe <kingwisemmx at gmail.com>(cherry picked from commit 74b1435a4d39eac71e36fb1c387b24af4b353fa0)
Conflicts:
oox/inc/oox/drawingml/table/tableproperties.hxx
oox/source/drawingml/table/tableproperties.cxx
Change-Id: I554169522a95343662781c3f169c6485c38a6800
diff --git a/include/oox/drawingml/table/tableproperties.hxx b/include/oox/drawingml/table/tableproperties.hxx
index 8c584b1..da5462b 100644
--- a/include/oox/drawingml/table/tableproperties.hxx
+++ b/include/oox/drawingml/table/tableproperties.hxx
@@ -57,7 +57,7 @@ public:
private:
- const TableStyle& getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase );
+ const TableStyle& getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase, sal_Bool &isCreateTabStyle);
OUString maStyleId; // either StyleId is available
boost::shared_ptr< TableStyle > mpTableStyle; // or the complete TableStyle
diff --git a/oox/inc/oox/drawingml/table/tableproperties.hxx b/oox/inc/oox/drawingml/table/tableproperties.hxx
new file mode 100644
index 0000000..2928966
--- /dev/null
+++ b/oox/inc/oox/drawingml/table/tableproperties.hxx
@@ -0,0 +1,83 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+
+
+#ifndef OOX_DRAWINGML_TABLEPROPERTIES_HXX
+#define OOX_DRAWINGML_TABLEPROPERTIES_HXX
+
+#include "oox/drawingml/table/tablerow.hxx"
+#include "oox/drawingml/table/tablestyle.hxx"
+#include "oox/helper/propertymap.hxx"
+#include "oox/drawingml/color.hxx"
+
+#include <boost/shared_ptr.hpp>
+#include <boost/optional.hpp>
+#include <vector>
+#include <map>
+
+namespace oox { namespace drawingml { namespace table {
+
+class TableProperties
+{
+public:
+
+ TableProperties();
+ ~TableProperties();
+
+ std::vector< sal_Int32 >& getTableGrid() { return mvTableGrid; };
+ std::vector< TableRow >& getTableRows() { return mvTableRows; };
+
+ rtl::OUString& getStyleId(){ return maStyleId; };
+ boost::shared_ptr< TableStyle >& getTableStyle(){ return mpTableStyle; };
+ sal_Bool& isRtl(){ return mbRtl; };
+ sal_Bool& isFirstRow(){ return mbFirstRow; };
+ sal_Bool& isFirstCol(){ return mbFirstCol; };
+ sal_Bool& isLastRow(){ return mbLastRow; };
+ sal_Bool& isLastCol(){ return mbLastCol; };
+ sal_Bool& isBandRow(){ return mbBandRow; };
+ sal_Bool& isBandCol(){ return mbBandCol; };
+
+ void apply( const TablePropertiesPtr& );
+ void pushToPropSet( const ::oox::core::XmlFilterBase& rFilterBase,
+ const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > & xPropSet, ::oox::drawingml::TextListStylePtr pMasterTextListStyle );
+
+private:
+
+ const TableStyle& getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase, sal_Bool &isCreateTabStyle);
+
+ rtl::OUString maStyleId; // either StyleId is available
+ boost::shared_ptr< TableStyle > mpTableStyle; // or the complete TableStyle
+ std::vector< sal_Int32 > mvTableGrid;
+ std::vector< TableRow > mvTableRows;
+
+ sal_Bool mbRtl;
+ sal_Bool mbFirstRow;
+ sal_Bool mbFirstCol;
+ sal_Bool mbLastRow;
+ sal_Bool mbLastCol;
+ sal_Bool mbBandRow;
+ sal_Bool mbBandCol;
+};
+
+} } }
+
+#endif // OOX_DRAWINGML_TABLEPROPERTIES_HXX
diff --git a/oox/source/drawingml/table/tableproperties.cxx b/oox/source/drawingml/table/tableproperties.cxx
index 440a0a5..b617ac9 100644
--- a/oox/source/drawingml/table/tableproperties.cxx
+++ b/oox/source/drawingml/table/tableproperties.cxx
@@ -99,7 +99,132 @@ namespace
struct theDefaultTableStyle : public ::rtl::Static< TableStyle, theDefaultTableStyle > {};
}
-const TableStyle& TableProperties::getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase )
+//for pptx just has table style id
+static void SetTableStyleProperties(TableStyle* &pTableStyle , const sal_Int32& tblFillClr,const sal_Int32& tblTextClr, const sal_Int32& lineBdrClr)
+{
+ //whole table fill style and color
+ oox::drawingml::FillPropertiesPtr pWholeTabFillProperties( new oox::drawingml::FillProperties );
+ pWholeTabFillProperties->moFillType.set(XML_solidFill);
+ pWholeTabFillProperties->maFillColor.setSchemeClr(tblFillClr);
+ pWholeTabFillProperties->maFillColor.addTransformation(XML_tint,20000);
+ pTableStyle->getWholeTbl().getFillProperties() = pWholeTabFillProperties;
+ //whole table text color
+ ::oox::drawingml::Color tableTextColor;
+ tableTextColor.setSchemeClr(tblTextClr);
+ pTableStyle->getWholeTbl().getTextColor() = tableTextColor;
+ //whole table line border
+ oox::drawingml::LinePropertiesPtr pLeftBorder( new oox::drawingml::LineProperties);
+ pLeftBorder->moLineWidth = 12700;
+ pLeftBorder->moPresetDash = XML_sng;
+ pLeftBorder->maLineFill.moFillType.set(XML_solidFill);
+ pLeftBorder->maLineFill.maFillColor.setSchemeClr(lineBdrClr);
+ pTableStyle->getWholeTbl().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_left,pLeftBorder));
+ pTableStyle->getWholeTbl().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_right,pLeftBorder));
+ pTableStyle->getWholeTbl().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_top,pLeftBorder));
+ pTableStyle->getWholeTbl().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_bottom,pLeftBorder));
+ pTableStyle->getWholeTbl().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_insideH,pLeftBorder));
+ pTableStyle->getWholeTbl().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_insideV,pLeftBorder));
+
+ //Band1H style
+ oox::drawingml::FillPropertiesPtr pBand1HFillProperties( new oox::drawingml::FillProperties );
+ pBand1HFillProperties->moFillType.set(XML_solidFill);
+ pBand1HFillProperties->maFillColor.setSchemeClr(tblFillClr);
+ pBand1HFillProperties->maFillColor.addTransformation(XML_tint,40000);
+ pTableStyle->getBand1H().getFillProperties() = pBand1HFillProperties;
+
+ //Band1V style
+ pTableStyle->getBand1V().getFillProperties() = pBand1HFillProperties;
+
+ //tet bold for 1st row/last row/column
+ ::boost::optional< sal_Bool > textBoldStyle(sal_True);
+ pTableStyle->getFirstRow().getTextBoldStyle() = textBoldStyle;
+ pTableStyle->getLastRow().getTextBoldStyle() = textBoldStyle;
+ pTableStyle->getFirstCol().getTextBoldStyle() = textBoldStyle;
+ pTableStyle->getLastCol().getTextBoldStyle() = textBoldStyle;
+}
+
+ sal_Bool CreateTableStyle(TableStyle* &pTableStyle , const OUString& styleId)
+{
+ sal_Bool createdTblStyle = sal_False;
+ if(!styleId.compareToAscii("{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}")){ //Medium Style 2 Accenat 1
+ pTableStyle = new TableStyle();
+ createdTblStyle = sal_True;
+ //first row style
+ //fill color and type
+ oox::drawingml::FillPropertiesPtr pFstRowFillProperties( new oox::drawingml::FillProperties );
+ pFstRowFillProperties->moFillType.set(XML_solidFill);
+ pFstRowFillProperties->maFillColor.setSchemeClr(XML_accent1);
+ pTableStyle->getFirstRow().getFillProperties() = pFstRowFillProperties;
+ //text color
+ ::oox::drawingml::Color fstRowTextColor;
+ fstRowTextColor.setSchemeClr(XML_lt1);
+ pTableStyle->getFirstRow().getTextColor() = fstRowTextColor;
+ //bottom line border
+ oox::drawingml::LinePropertiesPtr pFstBottomBorder( new oox::drawingml::LineProperties);
+ pFstBottomBorder->moLineWidth = 38100;
+ pFstBottomBorder->moPresetDash = XML_sng;
+ pFstBottomBorder->maLineFill.moFillType.set(XML_solidFill);
+ pFstBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pTableStyle->getFirstRow().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_bottom,pFstBottomBorder));
+
+ //last row style
+ pTableStyle->getLastRow().getFillProperties() = pFstRowFillProperties;
+ pTableStyle->getLastRow().getTextColor() = fstRowTextColor;
+ pTableStyle->getLastRow().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_top,pFstBottomBorder));
+
+ //first column style
+ pTableStyle->getFirstRow().getFillProperties() = pFstRowFillProperties;
+ pTableStyle->getFirstRow().getTextColor() = fstRowTextColor;
+
+ //last column style
+ pTableStyle->getLastCol().getFillProperties() = pFstRowFillProperties;
+ pTableStyle->getLastCol().getTextColor() = fstRowTextColor;
+
+ SetTableStyleProperties(pTableStyle, XML_accent1, XML_dk1, XML_lt1);
+ }
+ else if (!styleId.compareToAscii("{21E4AEA4-8DFA-4A89-87EB-49C32662AFE0}")) //Medium Style 2 Accent 2
+ {
+ pTableStyle = new TableStyle();
+ createdTblStyle = sal_True;
+ oox::drawingml::FillPropertiesPtr pFstRowFillProperties( new oox::drawingml::FillProperties );
+ pFstRowFillProperties->moFillType.set(XML_solidFill);
+ pFstRowFillProperties->maFillColor.setSchemeClr(XML_accent2);
+ pTableStyle->getFirstRow().getFillProperties() = pFstRowFillProperties;
+
+ ::oox::drawingml::Color fstRowTextColor;
+ fstRowTextColor.setSchemeClr(XML_lt1);
+ pTableStyle->getFirstRow().getTextColor() = fstRowTextColor;
+
+ oox::drawingml::LinePropertiesPtr pFstBottomBorder( new oox::drawingml::LineProperties);
+ pFstBottomBorder->moLineWidth = 38100;
+ pFstBottomBorder->moPresetDash = XML_sng;
+ pFstBottomBorder->maLineFill.moFillType.set(XML_solidFill);
+ pFstBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pTableStyle->getFirstRow().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_bottom,pFstBottomBorder));
+
+ pTableStyle->getLastRow().getFillProperties() = pFstRowFillProperties;
+ pTableStyle->getLastRow().getTextColor() = fstRowTextColor;
+ pTableStyle->getLastRow().getLineBorders().insert(std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(XML_top,pFstBottomBorder));
+
+ pTableStyle->getFirstCol().getFillProperties() = pFstRowFillProperties;
+ pTableStyle->getFirstCol().getTextColor() = fstRowTextColor;
+
+ pTableStyle->getLastCol().getFillProperties() = pFstRowFillProperties;
+ pTableStyle->getLastCol().getTextColor() = fstRowTextColor;
+
+ SetTableStyleProperties(pTableStyle, XML_accent2, XML_dk1, XML_lt1);
+ }
+ else if (!styleId.compareToAscii("{C4B1156A-380E-4F78-BDF5-A606A8083BF9}")) //Medium Style 4 Accent 4
+ {
+ pTableStyle = new TableStyle();
+ createdTblStyle = sal_True;
+ SetTableStyleProperties(pTableStyle, XML_accent4, XML_dk1, XML_accent4);
+ }
+
+ return createdTblStyle;
+}
+
+const TableStyle& TableProperties::getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase, sal_Bool &isCreateTabStyle )
{
::oox::core::XmlFilterBase& rBase( const_cast< ::oox::core::XmlFilterBase& >( rFilterBase ) );
@@ -120,6 +245,11 @@ const TableStyle& TableProperties::getUsedTableStyle( const ::oox::core::XmlFilt
}
++aIter;
}
+ //if the pptx just has table style id, but no table style content, we will create the table style ourselves
+ if ( !pTableStyle )
+ {
+ isCreateTabStyle = CreateTableStyle(pTableStyle , aStyleId);
+ }
}
if ( !pTableStyle )
@@ -137,7 +267,8 @@ void TableProperties::pushToPropSet( const ::oox::core::XmlFilterBase& rFilterBa
CreateTableColumns( xColumnRowRange->getColumns(), mvTableGrid );
CreateTableRows( xColumnRowRange->getRows(), mvTableRows );
- const TableStyle& rTableStyle( getUsedTableStyle( rFilterBase ) );
+ sal_Bool mbOwnTblStyle = sal_False;
+ const TableStyle& rTableStyle( getUsedTableStyle( rFilterBase, mbOwnTblStyle ) );
sal_Int32 nRow = 0;
const std::vector< TableRow >::const_iterator aTableRowEnd( mvTableRows.end() );
for (std::vector< TableRow >::iterator aTableRowIter( mvTableRows.begin() );
@@ -161,6 +292,17 @@ void TableProperties::pushToPropSet( const ::oox::core::XmlFilterBase& rFilterBa
}
}
}
+
+ if(mbOwnTblStyle == sal_True)
+ {
+ TableStyle* pTableStyle = (TableStyle*)&rTableStyle;
+ if(pTableStyle != NULL)
+ {
+ delete pTableStyle;
+ pTableStyle = NULL;
+ }
+ mbOwnTblStyle = sal_False;
+ }
}
} } }
More information about the Libreoffice-commits
mailing list