[Libreoffice-commits] core.git: Branch 'feature/orcus-odf' - 3 commits - sc/source
Jaskaran Singh
jvsg1303 at gmail.com
Thu Jul 28 10:13:47 UTC 2016
sc/source/filter/inc/orcusinterface.hxx | 14 ++-
sc/source/filter/orcus/interface.cxx | 144 ++++++++++++++++++++++++++++----
2 files changed, 142 insertions(+), 16 deletions(-)
New commits:
commit 79368a7a1df6f637ad19e5becdca93569fd50d81
Author: Jaskaran Singh <jvsg1303 at gmail.com>
Date: Thu Jul 28 15:41:02 2016 +0530
Add facility for cell alignment to orcus interface
Change-Id: If073c34bc9898f2a069815892431a2db22f43d3a
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index bfa04ba..8359ca4 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 8bb9d26..18013dc 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)
@@ -1464,12 +1474,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
commit 26839ead5de142256d6172ebbf51f7d4392f6daa
Author: Jaskaran Singh <jvsg1303 at gmail.com>
Date: Thu Jul 28 15:40:22 2016 +0530
Reform orcus interface to set border width
Change-Id: Ic93b334205221548e4bd7920551034b1ccee4fa8
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 5a34ed8..bfa04ba 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -417,7 +417,7 @@ public:
orcus::spreadsheet::color_elem_t red,
orcus::spreadsheet::color_elem_t green,
orcus::spreadsheet::color_elem_t blue) override;
- virtual void set_border_width(orcus::spreadsheet::border_direction_t dir, orcus::length_t width) override;
+ virtual void set_border_width(orcus::spreadsheet::border_direction_t dir, double val, orcus::length_unit_t unit) override;
virtual size_t commit_border() override;
// cell protection
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 0bfa9c8..8bb9d26 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -1319,10 +1319,10 @@ void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t dir,
current_line.maColor = Color(alpha, red, green, blue);
}
-void ScOrcusStyles::set_border_width(orcus::spreadsheet::border_direction_t dir, orcus::length_t width )
+void ScOrcusStyles::set_border_width(orcus::spreadsheet::border_direction_t dir, double val, orcus::length_unit_t unit )
{
border::border_line& current_line = maCurrentBorder.border_lines[dir];
- current_line.mnWidth = translateToInternal(width.value, width.unit);
+ current_line.mnWidth = translateToInternal(val, unit);
}
size_t ScOrcusStyles::commit_border()
commit c1f241e85a03048055dc66cc0193a7edba895198
Author: Jaskaran Singh <jvsg1303 at gmail.com>
Date: Thu Jul 28 14:00:46 2016 +0530
Add odf strikeout to orcus interface
Change-Id: Ibf8d1e7b0272fe4112fda0249eafef1aa5438d9a
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 7f469e4..5a34ed8 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -260,10 +260,13 @@ private:
bool mbHasFontAttr;
bool mbHasUnderlineAttr;
+ bool mbHasStrikeout;
FontLineStyle meUnderline;
Color maUnderlineColor;
+ FontStrikeout meStrikeout;
+
font();
void applyToItemSet(SfxItemSet& rSet) const;
@@ -390,6 +393,10 @@ public:
orcus::spreadsheet::color_elem_t red,
orcus::spreadsheet::color_elem_t green,
orcus::spreadsheet::color_elem_t blue) override;
+ virtual void set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t s);
+ virtual void set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s);
+ virtual void set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s);
+ virtual void set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s);
virtual size_t commit_font() override;
// fill
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index d59b2fa..0bfa9c8 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -38,6 +38,7 @@
#include <editeng/fontitem.hxx>
#include <editeng/fhgtitem.hxx>
#include <editeng/lineitem.hxx>
+#include <editeng/crossedoutitem.hxx>
#include <formula/token.hxx>
#include <tools/datetime.hxx>
@@ -758,8 +759,10 @@ ScOrcusStyles::font::font():
maColor(COL_WHITE),
mbHasFontAttr(false),
mbHasUnderlineAttr(false),
+ mbHasStrikeout(false),
meUnderline(LINESTYLE_NONE),
- maUnderlineColor(COL_WHITE)
+ maUnderlineColor(COL_WHITE),
+ meStrikeout(STRIKEOUT_NONE)
{
}
@@ -791,11 +794,18 @@ std::ostream& operator<<(std::ostream& rStrm, const Color& rColor)
void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const
{
- FontItalic eItalic = mbItalic ? ITALIC_NORMAL : ITALIC_NONE;
- rSet.Put(SvxPostureItem(eItalic, ATTR_FONT_POSTURE));
+ if (mbHasFontAttr)
+ {
+ FontItalic eItalic = mbItalic ? ITALIC_NORMAL : ITALIC_NONE;
+ rSet.Put(SvxPostureItem(eItalic, ATTR_FONT_POSTURE));
+
+ FontWeight eWeight = mbBold ? WEIGHT_BOLD : WEIGHT_NORMAL;
+ rSet.Put(SvxWeightItem(eWeight, ATTR_FONT_WEIGHT));
- FontWeight eWeight = mbBold ? WEIGHT_BOLD : WEIGHT_NORMAL;
- rSet.Put(SvxWeightItem(eWeight, ATTR_FONT_WEIGHT));
+ rSet.Put( SvxColorItem(maColor, ATTR_FONT_COLOR));
+ rSet.Put( SvxFontItem( FAMILY_DONTKNOW, maName, maName, PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ));
+ rSet.Put( SvxFontHeightItem (translateToInternal(mnSize, orcus::length_unit_t::point), 100, ATTR_FONT_HEIGHT));
+ }
if (mbHasUnderlineAttr)
{
@@ -804,9 +814,8 @@ void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const
rSet.Put(aUnderline);
}
- rSet.Put( SvxColorItem(maColor, ATTR_FONT_COLOR));
- rSet.Put( SvxFontItem( FAMILY_DONTKNOW, maName, maName, PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ));
- rSet.Put( SvxFontHeightItem (translateToInternal(mnSize, orcus::length_unit_t::point), 100, ATTR_FONT_HEIGHT));
+ if (mbHasStrikeout)
+ rSet.Put(SvxCrossedOutItem(meStrikeout, ATTR_FONT_CROSSEDOUT));
}
void ScOrcusStyles::fill::applyToItemSet(SfxItemSet& rSet) const
@@ -941,8 +950,7 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
}
const font& rFont = maFonts[nFontId];
- if (rFont.mbHasFontAttr)
- rFont.applyToItemSet(rSet);
+ rFont.applyToItemSet(rSet);
size_t nFillId = rXf.mnFillId;
if (nFillId >= maFills.size())
@@ -1142,6 +1150,66 @@ void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t alpha,
maCurrentFont.maColor = Color(alpha, red, green, blue);
}
+void ScOrcusStyles::set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t /*s*/)
+{
+}
+
+void ScOrcusStyles::set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s)
+{
+ if (maCurrentFont.meStrikeout != STRIKEOUT_BOLD &&
+ maCurrentFont.meStrikeout != STRIKEOUT_SLASH &&
+ maCurrentFont.meStrikeout != STRIKEOUT_X)
+ {
+ switch (s)
+ {
+ case os::strikethrough_type_t::unknown:
+ maCurrentFont.meStrikeout = STRIKEOUT_DONTKNOW;
+ break;
+ case os::strikethrough_type_t::none:
+ maCurrentFont.meStrikeout = STRIKEOUT_NONE;
+ break;
+ case os::strikethrough_type_t::single:
+ maCurrentFont.meStrikeout = STRIKEOUT_SINGLE;
+ break;
+ case os::strikethrough_type_t::double_type:
+ maCurrentFont.meStrikeout = STRIKEOUT_DOUBLE;
+ break;
+ default:
+ ;
+ }
+ }
+ maCurrentFont.mbHasStrikeout = true;
+}
+
+void ScOrcusStyles::set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s)
+{
+ switch (s)
+ {
+ case os::strikethrough_width_t::bold:
+ maCurrentFont.meStrikeout = STRIKEOUT_BOLD;
+ break;
+ default:
+ ;
+ }
+ maCurrentFont.mbHasStrikeout = true;
+}
+
+void ScOrcusStyles::set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s)
+{
+ switch (s)
+ {
+ case os::strikethrough_text_t::slash:
+ maCurrentFont.meStrikeout = STRIKEOUT_SLASH;
+ break;
+ case os::strikethrough_text_t::cross:
+ maCurrentFont.meStrikeout = STRIKEOUT_X;
+ break;
+ default:
+ ;
+ }
+ maCurrentFont.mbHasStrikeout = true;
+}
+
size_t ScOrcusStyles::commit_font()
{
SAL_INFO("sc.orcus.style", "commit font");
More information about the Libreoffice-commits
mailing list