[Libreoffice-commits] core.git: Branch 'feature/perfwork' - sc/source
Kohei Yoshida
kohei.yoshida at collabora.com
Fri Sep 26 08:22:25 PDT 2014
sc/source/filter/oox/stylesbuffer.cxx | 30 +++++++++++++++++++++---------
sc/source/filter/oox/worksheethelper.cxx | 2 ++
2 files changed, 23 insertions(+), 9 deletions(-)
New commits:
commit 198796205b60bc3662a7805276f4497b6fa0c8f7
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Fri Sep 26 11:13:43 2014 -0400
Set rotation reference directly via internal API.
Note that the original code would first set the rotation reference value
stored in the Xf, then later unconditionally overwrite it according to
the border setting. The new code only ports the second part. Perhaps
there was a bug in the original code....
Change-Id: I15b6839e9a58e8070a43db70e1a88b42ed99f2d8
diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx
index 2afedcc..210dec2 100644
--- a/sc/source/filter/oox/stylesbuffer.cxx
+++ b/sc/source/filter/oox/stylesbuffer.cxx
@@ -2194,7 +2194,7 @@ void Xf::writeToPropertyMap( PropertyMap& rPropMap ) const
// create and set cell style.
- // TODO : We should gradually move things to writeToDoc, to set cell
+ // TODO : We should gradually move things to writeToDoc(), to set cell
// styles to the document directly.
if( maModel.mbFontUsed )
@@ -2209,13 +2209,6 @@ void Xf::writeToPropertyMap( PropertyMap& rPropMap ) const
rStyles.writeBorderToPropertyMap( rPropMap, maModel.mnBorderId );
if( maModel.mbAreaUsed )
rStyles.writeFillToPropertyMap( rPropMap, maModel.mnFillId );
- if( maModel.mbAlignUsed || maModel.mbBorderUsed )
- rPropMap.setProperty( PROP_RotateReference, meRotationRef);
-
- sal_Int32 eRotRef = ::com::sun::star::table::CellVertJustify2::STANDARD;
- if (maModel.mbBorderUsed && rStyles.hasBorder(maModel.mnBorderId) && maAlignment.getApiData().mnRotation)
- eRotRef = ::com::sun::star::table::CellVertJustify2::BOTTOM;
- rPropMap.setProperty( PROP_RotateReference, eRotRef);
}
void Xf::writeToPropertySet( PropertySet& rPropSet ) const
@@ -2227,9 +2220,11 @@ void Xf::writeToPropertySet( PropertySet& rPropSet ) const
void Xf::writeToDoc( ScDocumentImport& rDoc, const table::CellRangeAddress& rRange ) const
{
+ const StylesBuffer& rStyles = getStyles();
+
if (isCellXf())
{
- const StylesBuffer& rStyles = getStyles();
+ // Cell style name.
OUString aStyleName = rStyles.createCellStyle(maModel.mnStyleXfId);
ScStyleSheet* pStyleSheet =
@@ -2243,6 +2238,23 @@ void Xf::writeToDoc( ScDocumentImport& rDoc, const table::CellRangeAddress& rRan
*pStyleSheet);
}
}
+
+ boost::scoped_ptr<ScPatternAttr> pAttr(new ScPatternAttr(rDoc.getDoc().GetPool()));
+
+ {
+ SvxRotateMode eRotateMode = SVX_ROTATE_MODE_STANDARD;
+
+ if (maModel.mbBorderUsed && rStyles.hasBorder(maModel.mnBorderId) && maAlignment.getApiData().mnRotation)
+ eRotateMode = SVX_ROTATE_MODE_BOTTOM;
+
+ SvxRotateModeItem aItem(eRotateMode, ATTR_ROTATE_MODE);
+ ScfTools::PutItem(pAttr->GetItemSet(), aItem, false);
+ }
+
+ // TODO : Move more properties from writeToPropertyMap().
+
+ rDoc.getDoc().ApplyPatternAreaTab(
+ rRange.StartColumn, rRange.StartRow, rRange.EndColumn, rRange.EndRow, rRange.Sheet, *pAttr);
}
const ::ScPatternAttr&
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 9aa8abd..de9a644 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -836,9 +836,11 @@ void WorksheetGlobals::convertColumnFormat( sal_Int32 nFirstCol, sal_Int32 nLast
{
const StylesBuffer& rStyles = getStyles();
+ // Set cell styles via UNO API. We should move these to the direct API.
PropertySet aPropSet( getCellRange( aRange ) );
rStyles.writeCellXfToPropertySet(aPropSet, nXfId);
+ // Set cell styles via direct API - the preferred approach.
ScDocumentImport& rDoc = getDocImport();
rStyles.writeCellXfToDoc(rDoc, aRange, nXfId);
}
More information about the Libreoffice-commits
mailing list