summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaskaran Singh <jvsg1303@gmail.com>2016-07-28 15:41:02 +0530
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-09-17 18:19:41 +0200
commitb0a7a8044a5db9f58cc4a1275b42e54d09e66f55 (patch)
tree34d8fd92020708c705c29822c07ef2750f630e0a
parentd39e1d4d87ca43bd0790669aa8aff5966a208015 (diff)
Add facility for cell alignment to orcus interface
Change-Id: If073c34bc9898f2a069815892431a2db22f43d3a
-rw-r--r--sc/source/filter/inc/orcusinterface.hxx5
-rw-r--r--sc/source/filter/orcus/interface.cxx52
2 files changed, 54 insertions, 3 deletions
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index f3520b49cde5..c6d3d5a1a2ed 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -15,6 +15,7 @@
#include <tools/color.hxx>
#include <tools/fontenum.hxx>
+#include <editeng/svxenum.hxx>
#include "sharedformulagroups.hxx"
@@ -348,6 +349,10 @@ private:
size_t mnProtectionId;
size_t mnNumberFormatId;
size_t mnStyleXf;
+ bool mbAlignment;
+
+ SvxCellHorJustify meHor_alignment;
+ SvxCellVerJustify meVer_alignment;
xf();
};
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index ff8c7465ecfc..b9d8f66fe692 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -39,6 +39,7 @@
#include <editeng/fhgtitem.hxx>
#include <editeng/lineitem.hxx>
#include <editeng/crossedoutitem.hxx>
+#include <editeng/justifyitem.hxx>
#include <formula/token.hxx>
#include <tools/datetime.hxx>
@@ -930,7 +931,10 @@ ScOrcusStyles::xf::xf():
mnBorderId(0),
mnProtectionId(0),
mnNumberFormatId(0),
- mnStyleXf(0)
+ mnStyleXf(0),
+ mbAlignment(false),
+ meHor_alignment(SVX_HOR_JUSTIFY_LEFT),
+ meVer_alignment(SVX_VER_JUSTIFY_CENTER)
{
}
@@ -992,6 +996,12 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
const number_format& rFormat = maNumberFormats[nNumberFormatId];
if (rFormat.mbHasNumberFormatAttr)
rFormat.applyToItemSet(rSet, mrDoc);
+
+ if(rXf.mbAlignment)
+ {
+ rSet.Put(SvxHorJustifyItem(rXf.meHor_alignment, ATTR_HOR_JUSTIFY));
+ rSet.Put(SvxVerJustifyItem(rXf.meVer_alignment, ATTR_VER_JUSTIFY));
+ }
}
void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, size_t xfId)
@@ -1463,12 +1473,48 @@ void ScOrcusStyles::set_xf_apply_alignment(bool /*b*/)
{
}
-void ScOrcusStyles::set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t /*align*/)
+void ScOrcusStyles::set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align)
{
+ switch (align)
+ {
+ case os::hor_alignment_t::left:
+ maCurrentXF.meHor_alignment = SVX_HOR_JUSTIFY_LEFT;
+ break;
+ case os::hor_alignment_t::right:
+ maCurrentXF.meHor_alignment = SVX_HOR_JUSTIFY_RIGHT;
+ break;
+ case os::hor_alignment_t::center:
+ maCurrentXF.meHor_alignment = SVX_HOR_JUSTIFY_CENTER;
+ break;
+ case os::hor_alignment_t::justified:
+ maCurrentXF.meHor_alignment = SVX_HOR_JUSTIFY_STANDARD;
+ break;
+ default:
+ ;
+ }
+ maCurrentXF.mbAlignment = true;
}
-void ScOrcusStyles::set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t /*align*/)
+void ScOrcusStyles::set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align)
{
+ switch (align)
+ {
+ case os::ver_alignment_t::top:
+ maCurrentXF.meVer_alignment = SVX_VER_JUSTIFY_TOP;
+ break;
+ case os::ver_alignment_t::bottom:
+ maCurrentXF.meVer_alignment = SVX_VER_JUSTIFY_BOTTOM;
+ break;
+ case os::ver_alignment_t::middle:
+ maCurrentXF.meVer_alignment = SVX_VER_JUSTIFY_CENTER;
+ break;
+ case os::ver_alignment_t::justified:
+ maCurrentXF.meVer_alignment = SVX_VER_JUSTIFY_STANDARD;
+ break;
+ default:
+ ;
+ }
+ maCurrentXF.mbAlignment = true;
}
// cell style entry