[Libreoffice-commits] core.git: Branch 'feature/perfwork' - sc/source
Kohei Yoshida
kohei.yoshida at collabora.com
Thu Sep 25 16:58:02 PDT 2014
sc/source/filter/inc/stylesbuffer.hxx | 3 ++
sc/source/filter/oox/stylesbuffer.cxx | 38 ++++++++++++++++++++++++++++---
sc/source/filter/oox/worksheethelper.cxx | 11 ++++++--
3 files changed, 46 insertions(+), 6 deletions(-)
New commits:
commit baebfeca06ad107937aa2c655d914720f71a5635
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Thu Sep 25 19:38:51 2014 -0400
Set cell style name to the document directly, bypassing the UNO API.
Change-Id: I28decfdfd8248fb9b95416b9b269a4ffabcc6370
diff --git a/sc/source/filter/inc/stylesbuffer.hxx b/sc/source/filter/inc/stylesbuffer.hxx
index b2e1186..c2f364e 100644
--- a/sc/source/filter/inc/stylesbuffer.hxx
+++ b/sc/source/filter/inc/stylesbuffer.hxx
@@ -669,6 +669,8 @@ public:
/** Writes all formatting attributes to the passed property set. */
void writeToPropertySet( PropertySet& rPropSet ) const;
+ void writeToDoc( ScDocumentImport& rDoc, const css::table::CellRangeAddress& rRange ) const;
+
const ::ScPatternAttr& createPattern( bool bSkipPoolDefs = false );
private:
@@ -912,6 +914,7 @@ public:
/** Writes the cell formatting attributes of the specified XF to the passed property set. */
void writeCellXfToPropertySet( PropertySet& rPropSet, sal_Int32 nXfId ) const;
+ void writeCellXfToDoc( ScDocumentImport& rDoc, const css::table::CellRangeAddress& rRange, sal_Int32 nXfId ) const;
bool hasBorder( sal_Int32 nBorderId ) const;
private:
diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx
index adead6d..2afedcc 100644
--- a/sc/source/filter/oox/stylesbuffer.cxx
+++ b/sc/source/filter/oox/stylesbuffer.cxx
@@ -77,6 +77,7 @@
#include "attrib.hxx"
#include "globstr.hrc"
#include "xlconst.hxx"
+#include <documentimport.hxx>
using ::com::sun::star::table::BorderLine2;
namespace oox {
@@ -2191,9 +2192,10 @@ void Xf::writeToPropertyMap( PropertyMap& rPropMap ) const
{
StylesBuffer& rStyles = getStyles();
- // create and set cell style
- if( isCellXf() )
- rPropMap.setProperty( PROP_CellStyle, rStyles.createCellStyle( maModel.mnStyleXfId ));
+ // create and set cell style.
+
+ // TODO : We should gradually move things to writeToDoc, to set cell
+ // styles to the document directly.
if( maModel.mbFontUsed )
rStyles.writeFontToPropertyMap( rPropMap, maModel.mnFontId );
@@ -2223,6 +2225,26 @@ void Xf::writeToPropertySet( PropertySet& rPropSet ) const
rPropSet.setProperties( aPropMap );
}
+void Xf::writeToDoc( ScDocumentImport& rDoc, const table::CellRangeAddress& rRange ) const
+{
+ if (isCellXf())
+ {
+ const StylesBuffer& rStyles = getStyles();
+ OUString aStyleName = rStyles.createCellStyle(maModel.mnStyleXfId);
+
+ ScStyleSheet* pStyleSheet =
+ static_cast<ScStyleSheet*>(
+ rDoc.getDoc().GetStyleSheetPool()->Find(aStyleName, SFX_STYLE_FAMILY_PARA));
+
+ if (pStyleSheet)
+ {
+ rDoc.getDoc().ApplyStyleAreaTab(
+ rRange.StartColumn, rRange.StartRow, rRange.EndColumn, rRange.EndRow, rRange.Sheet,
+ *pStyleSheet);
+ }
+ }
+}
+
const ::ScPatternAttr&
Xf::createPattern( bool bSkipPoolDefs )
{
@@ -3148,6 +3170,16 @@ void StylesBuffer::writeCellXfToPropertySet( PropertySet& rPropSet, sal_Int32 nX
pXf->writeToPropertySet( rPropSet );
}
+void StylesBuffer::writeCellXfToDoc(
+ ScDocumentImport& rDoc, const table::CellRangeAddress& rRange, sal_Int32 nXfId ) const
+{
+ Xf* pXf = maCellXfs.get(nXfId).get();
+ if (!pXf)
+ return;
+
+ pXf->writeToDoc(rDoc, rRange);
+}
+
bool StylesBuffer::hasBorder( sal_Int32 nBorderId ) const
{
Border* pBorder = maBorders.get( nBorderId ).get();
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 7ba4baf..9aa8abd 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -301,7 +301,7 @@ public:
are cached and converted in the finalizeImport() call. */
void setColumnModel( const ColumnModel& rModel );
/** Converts column default cell formatting. */
- void convertColumnFormat( sal_Int32 nFirstCol, sal_Int32 nLastCol, sal_Int32 nXfId ) const;
+ void convertColumnFormat( sal_Int32 nFirstCol, sal_Int32 nLastCol, sal_Int32 nXfId );
/** Sets default height and hidden state for all unused rows in the sheet. */
void setDefaultRowSettings( double fHeight, bool bCustomHeight, bool bHidden, bool bThickTop, bool bThickBottom );
@@ -829,13 +829,18 @@ void WorksheetGlobals::setColumnModel( const ColumnModel& rModel )
}
}
-void WorksheetGlobals::convertColumnFormat( sal_Int32 nFirstCol, sal_Int32 nLastCol, sal_Int32 nXfId ) const
+void WorksheetGlobals::convertColumnFormat( sal_Int32 nFirstCol, sal_Int32 nLastCol, sal_Int32 nXfId )
{
CellRangeAddress aRange( getSheetIndex(), nFirstCol, 0, nLastCol, mrMaxApiPos.Row );
if( getAddressConverter().validateCellRange( aRange, true, false ) )
{
+ const StylesBuffer& rStyles = getStyles();
+
PropertySet aPropSet( getCellRange( aRange ) );
- getStyles().writeCellXfToPropertySet( aPropSet, nXfId );
+ rStyles.writeCellXfToPropertySet(aPropSet, nXfId);
+
+ ScDocumentImport& rDoc = getDocImport();
+ rStyles.writeCellXfToDoc(rDoc, aRange, nXfId);
}
}
More information about the Libreoffice-commits
mailing list