[Libreoffice-commits] core.git: 28 commits - framework/source sc/inc sc/source vcl/opengl
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Thu Aug 27 17:04:36 PDT 2015
framework/source/layoutmanager/toolbarlayoutmanager.cxx | 12
framework/source/loadenv/loadenv.cxx | 29
sc/inc/documentimport.hxx | 1
sc/inc/stlpool.hxx | 3
sc/source/filter/inc/orcusinterface.hxx | 230 +++++
sc/source/filter/inc/worksheethelper.hxx | 2
sc/source/filter/oox/worksheethelper.cxx | 4
sc/source/filter/orcus/interface.cxx | 663 +++++++++++++++-
vcl/opengl/gdiimpl.cxx | 4
9 files changed, 888 insertions(+), 60 deletions(-)
New commits:
commit 1f43fa330a2ebc26127edce07318124011f21f56
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Jan 27 04:31:56 2015 +0100
initial work for conditional formatting import for orcus
Conflicts:
sc/source/filter/inc/orcusinterface.hxx
Change-Id: If79f58c44072b7c2c20fc2026b2a6eed6d202b63
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index dec7d38..a61a282 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -79,6 +79,64 @@ public:
virtual size_t commit_segments() SAL_OVERRIDE;
};
+class ScOrcusConditionalFormat : public orcus::spreadsheet::iface::import_conditional_format
+{
+public:
+ ScOrcusConditionalFormat(SCTAB nTab, ScDocument& rDoc);
+ virtual ~ScOrcusConditionalFormat();
+
+ virtual void set_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red,
+ orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) SAL_OVERRIDE;
+
+ virtual void set_formula(const char* p, size_t n) SAL_OVERRIDE;
+
+ virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) SAL_OVERRIDE;
+
+ virtual void set_date(orcus::spreadsheet::condition_date_t date) SAL_OVERRIDE;
+
+ virtual void commit_condition() SAL_OVERRIDE;
+
+ virtual void set_icon_name(const char* p, size_t n) SAL_OVERRIDE;
+
+ virtual void set_databar_gradient(bool gradient) SAL_OVERRIDE;
+
+ virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) SAL_OVERRIDE;
+
+ virtual void set_databar_color_positive(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red,
+ orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) SAL_OVERRIDE;
+
+ virtual void set_databar_color_negative(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red,
+ orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) SAL_OVERRIDE;
+
+ virtual void set_min_databar_length(double length) SAL_OVERRIDE;
+
+ virtual void set_max_databar_length(double length) SAL_OVERRIDE;
+
+ virtual void set_show_value(bool show) SAL_OVERRIDE;
+
+ virtual void set_iconset_reverse(bool reverse) SAL_OVERRIDE;
+
+ virtual void set_xf_id(size_t xf) SAL_OVERRIDE;
+
+ virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) SAL_OVERRIDE;
+
+ virtual void set_type(orcus::spreadsheet::conditional_format_t type) SAL_OVERRIDE;
+
+ virtual void commit_entry() SAL_OVERRIDE;
+
+ virtual void set_range(const char* p, size_t n) SAL_OVERRIDE;
+
+ virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start,
+ orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) SAL_OVERRIDE;
+
+ virtual void commit_format() SAL_OVERRIDE;
+
+private:
+
+ SCTAB mnTab;
+ ScDocument& mrDoc;
+};
+
class ScOrcusAutoFilter : public orcus::spreadsheet::iface::import_auto_filter
{
public:
@@ -130,6 +188,7 @@ class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet
sc::SharedFormulaGroups maFormulaGroups;
ScOrcusAutoFilter maAutoFilter;
ScOrcusSheetProperties maProperties;
+ ScOrcusConditionalFormat maConditionalFormat;
typedef std::map<size_t, ScRangeData*> SharedFormulaContainer;
SharedFormulaContainer maSharedFormulas;
@@ -144,6 +203,7 @@ public:
virtual orcus::spreadsheet::iface::import_auto_filter* get_auto_filter() SAL_OVERRIDE { return &maAutoFilter; }
virtual orcus::spreadsheet::iface::import_table* get_table() SAL_OVERRIDE;
virtual orcus::spreadsheet::iface::import_sheet_properties* get_sheet_properties() SAL_OVERRIDE;
+ virtual orcus::spreadsheet::iface::import_conditional_format* get_conditional_format() SAL_OVERRIDE;
// Orcus import interface
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) SAL_OVERRIDE;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index b9291a8..c65324a 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -281,6 +281,127 @@ void ScOrcusSheetProperties::set_merge_cell_range(const char* /*p_range*/, size_
{
}
+ScOrcusConditionalFormat::ScOrcusConditionalFormat(SCTAB nTab, ScDocument& rDoc):
+ mnTab(nTab),
+ mrDoc(rDoc)
+{
+ (void)mnTab;
+ (void)mrDoc;
+}
+
+ScOrcusConditionalFormat::~ScOrcusConditionalFormat()
+{
+}
+
+void ScOrcusConditionalFormat::set_color(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
+ os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_color");
+}
+
+void ScOrcusConditionalFormat::set_condition_type(os::condition_type_t /*type*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_condition_type");
+}
+
+void ScOrcusConditionalFormat::set_formula(const char* /*p*/, size_t /*n*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_formula");
+}
+
+void ScOrcusConditionalFormat::set_date(os::condition_date_t /*date*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_date");
+}
+
+void ScOrcusConditionalFormat::commit_condition()
+{
+ SAL_INFO("sc.orcus.condformat", "commit_condition");
+}
+
+void ScOrcusConditionalFormat::set_icon_name(const char* /*p*/, size_t /*n*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_icon_name");
+}
+
+void ScOrcusConditionalFormat::set_databar_gradient(bool /*gradient*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_databar_gradient");
+}
+
+void ScOrcusConditionalFormat::set_databar_axis(os::databar_axis_t /*axis*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_databar_axis");
+}
+
+void ScOrcusConditionalFormat::set_databar_color_positive(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
+ os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_databar_color_positive");
+}
+
+void ScOrcusConditionalFormat::set_databar_color_negative(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
+ os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_databar_color_negative");
+}
+
+void ScOrcusConditionalFormat::set_min_databar_length(double /*length*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_min_databar_length");
+}
+
+void ScOrcusConditionalFormat::set_max_databar_length(double /*length*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_max_databar_length");
+}
+
+void ScOrcusConditionalFormat::set_show_value(bool /*show*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_show_value");
+}
+
+void ScOrcusConditionalFormat::set_iconset_reverse(bool /*reverse*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_iconset_reverse");
+}
+
+void ScOrcusConditionalFormat::set_xf_id(size_t /*xf*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_xf_id");
+}
+
+void ScOrcusConditionalFormat::set_operator(os::condition_operator_t /*condition_type*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_operator");
+}
+
+void ScOrcusConditionalFormat::set_type(os::conditional_format_t /*type*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_type");
+}
+
+void ScOrcusConditionalFormat::commit_entry()
+{
+ SAL_INFO("sc.orcus.condformat", "commit_entry");
+}
+
+void ScOrcusConditionalFormat::set_range(const char* /*p*/, size_t /*n*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_range");
+}
+
+void ScOrcusConditionalFormat::set_range(os::row_t /*row_start*/, os::col_t /*col_start*/,
+ os::row_t /*row_end*/, os::col_t /*col_end*/)
+{
+ SAL_INFO("sc.orcus.condformat", "set_range");
+}
+
+void ScOrcusConditionalFormat::commit_format()
+{
+ SAL_INFO("sc.orcus.condformat", "commit_format");
+}
+
ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& rFactory) :
mrDoc(rDoc),
mnTab(nTab),
@@ -288,6 +409,7 @@ ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& r
mrStyles(static_cast<ScOrcusStyles&>(*mrFactory.get_styles())),
maAutoFilter(rDoc.getDoc()),
maProperties(mnTab, mrDoc),
+ maConditionalFormat(mnTab, rDoc.getDoc()),
mnCellCount(0)
{
}
@@ -312,6 +434,11 @@ os::iface::import_sheet_properties* ScOrcusSheet::get_sheet_properties()
return &maProperties;
}
+os::iface::import_conditional_format* ScOrcusSheet::get_conditional_format()
+{
+ return &maConditionalFormat;
+}
+
void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n)
{
OUString aVal(p, n, RTL_TEXTENCODING_UTF8);
diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx
index 5e2785c..ac6624f 100644
--- a/vcl/opengl/gdiimpl.cxx
+++ b/vcl/opengl/gdiimpl.cxx
@@ -898,6 +898,8 @@ void OpenGLSalGraphicsImpl::DrawTextureRect( OpenGLTexture& rTexture, const SalT
{
OpenGLZone aZone;
+ SAL_INFO("vcl.opengl", "draw texture rect");
+
GLfloat aTexCoord[8];
rTexture.GetCoord( aTexCoord, rPosAry, bInverted );
mpProgram->SetTextureCoord( aTexCoord );
@@ -908,6 +910,8 @@ void OpenGLSalGraphicsImpl::DrawTexture( OpenGLTexture& rTexture, const SalTwoRe
{
OpenGLZone aZone;
+ SAL_INFO("vcl.opengl", "draw texture");
+
if( !UseProgram( "textureVertexShader", "textureFragmentShader" ) )
return;
mpProgram->SetTexture( "sampler", rTexture );
commit 81abc70a5bdbb3db4d3874f4e7e7150fc3f56698
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Jan 27 04:31:25 2015 +0100
call it as well
Change-Id: I8ac7ebdf8af13ebd76a3c044fea5b0156808c852
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 8b3a616..b9291a8 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -682,6 +682,8 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
SAL_WARN("sc.orcus.style", "invalid border id");
return;
}
+ const border& rBorder = maBorders[nBorderId];
+ rBorder.applyToItemSet(rSet);
size_t nProtectionId = rXf.mnProtectionId;
if (nProtectionId >= maProtections.size())
@@ -689,6 +691,8 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
SAL_WARN("sc.orcus.style", "invalid protection id");
return;
}
+ const protection& rProtection = maProtections[nProtectionId];
+ rProtection.applyToItemSet(rSet);
size_t nNumberFormatId = rXf.mnNumberFormatId;
if (nNumberFormatId >= maNumberFormats.size())
@@ -696,6 +700,8 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
SAL_WARN("sc.orcus.style", "invalid number format id");
return;
}
+ const number_format& rFormat = maNumberFormats[nNumberFormatId];
+ rFormat.applyToItemSet(rSet);
}
bool ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, size_t xfId)
commit f631b8ce62fd2b12d43d9d9dcf45afd4b3ff4a15
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Jan 27 04:30:59 2015 +0100
implement the applyToItemSet for more properties
Change-Id: I120fe6b4c52c40560aa589debb610aeccc438b81
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 0586b43..8b3a616 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -622,10 +622,22 @@ ScOrcusStyles::protection::protection():
{
}
+void ScOrcusStyles::protection::applyToItemSet(SfxItemSet& /*rSet*/) const
+{
+}
+
ScOrcusStyles::border::border()
{
}
+void ScOrcusStyles::border::applyToItemSet(SfxItemSet& /*rSet*/) const
+{
+}
+
+void ScOrcusStyles::number_format::applyToItemSet(SfxItemSet& /*rSet*/) const
+{
+}
+
ScOrcusStyles::xf::xf():
mnFontId(0),
mnFillId(0),
commit f4191be4c839acff8707a7502268213bfbb2d620
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Jan 16 22:16:46 2015 +0100
add applyToItemSet method to all properties
Change-Id: Iaa67f0c6c619af248074d9c1a436a1e59563fd2b
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 5862276..dec7d38 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -218,8 +218,9 @@ private:
struct border
{
-
border();
+
+ void applyToItemSet(SfxItemSet& rSet) const;
};
border maCurrentBorder;
@@ -231,6 +232,7 @@ private:
bool mbLocked;
protection();
+ void applyToItemSet(SfxItemSet& rSet) const;
};
protection maCurrentProtection;
@@ -239,6 +241,8 @@ private:
struct number_format
{
OUString maCode;
+
+ void applyToItemSet(SfxItemSet& rSet) const;
};
number_format maCurrentNumberFormat;
commit bd38b1f18456fc7b7a8bf1ecfd9286c26f6c4736
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Jan 11 22:04:42 2015 +0100
apply fill properties to item set
Change-Id: I89d8d84d199a991d75b9c613fd72d66c18642b12
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 7e4987b..0586b43 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -661,6 +661,9 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
return;
}
+ const fill& rFill = maFills[nFillId];
+ rFill.applyToItemSet(rSet);
+
size_t nBorderId = rXf.mnBorderId;
if (nBorderId >= maBorders.size())
{
commit b5cebea8b3cc949c4d68053090b0b1ff3a8ae15b
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Jan 11 21:38:50 2015 +0100
import the background color
Change-Id: I63dfc5b879abcb63cc4d0d67389467d76f94bca9
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 718fa4c..7e4987b 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -608,9 +608,12 @@ void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const
void ScOrcusStyles::fill::applyToItemSet(SfxItemSet& rSet) const
{
if (maPattern.equalsIgnoreAsciiCase("none"))
+ {
+ SAL_INFO("sc.orcus.style", "no fill style");
return;
+ }
- rSet.Put(SvxBrushItem(maFgColor, ATTR_BACKGROUND));
+ rSet.Put(SvxBrushItem(maBgColor, ATTR_BACKGROUND));
}
ScOrcusStyles::protection::protection():
commit b16c40efa77b8ad3e1d485222158ea20935aba47
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Jan 11 21:37:52 2015 +0100
make sure to print numbers as ints and not as characters
Change-Id: I8409ac35a6368c80d0f9bf6b49619a63ce502a5a
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index cba4b70..718fa4c 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -586,7 +586,7 @@ namespace {
std::ostream& operator<<(std::ostream& rStrm, const Color& rColor)
{
- rStrm << "Red: " << rColor.GetRed() << ", Green: " << rColor.GetGreen() << ", Blue: " << rColor.GetBlue();
+ rStrm << "Red: " << (int)rColor.GetRed() << ", Green: " << (int)rColor.GetGreen() << ", Blue: " << (int)rColor.GetBlue();
return rStrm;
}
commit 650e9065c9821d28d146cc3b3a68b676d5e878cc
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Jan 11 16:48:33 2015 +0100
make sure that the cell properties are really imported
Conflicts:
sc/source/filter/orcus/interface.cxx
Change-Id: I6cac96214fd57162fb4421c9dbc9e54c20207385
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 06551c2..5862276 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -30,6 +30,7 @@
class ScDocumentImport;
class ScOrcusSheet;
+class ScOrcusStyles;
class ScOrcusFactory;
class ScRangeData;
class SfxItemSet;
@@ -125,6 +126,7 @@ class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet
ScDocumentImport& mrDoc;
SCTAB mnTab;
ScOrcusFactory& mrFactory;
+ ScOrcusStyles& mrStyles;
sc::SharedFormulaGroups maFormulaGroups;
ScOrcusAutoFilter maAutoFilter;
ScOrcusSheetProperties maProperties;
@@ -273,6 +275,9 @@ private:
public:
ScOrcusStyles(ScDocument& rDoc);
+
+ bool applyXfToItemSet(SfxItemSet& rSet, size_t xfId);
+
// font
virtual void set_font_count(size_t n) SAL_OVERRIDE;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 0957714..cba4b70 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -20,6 +20,8 @@
#include "dbdata.hxx"
#include "stlpool.hxx"
#include "scitems.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
#include <editeng/postitem.hxx>
#include <editeng/wghtitem.hxx>
@@ -283,6 +285,7 @@ ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& r
mrDoc(rDoc),
mnTab(nTab),
mrFactory(rFactory),
+ mrStyles(static_cast<ScOrcusStyles&>(*mrFactory.get_styles())),
maAutoFilter(rDoc.getDoc()),
maProperties(mnTab, mrDoc),
mnCellCount(0)
@@ -368,9 +371,13 @@ void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/, size_t xf_in
SAL_INFO("sc.orcus.style", "set format: " << xf_index);
}
-void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/,
- os::row_t /*row_end*/, os::col_t /*col_end*/, size_t /*xf_index*/)
+void ScOrcusSheet::set_format(os::row_t row_start, os::col_t col_start,
+ os::row_t row_end, os::col_t col_end, size_t xf_index)
{
+ SAL_INFO("sc.orcus.style", "set format range: " << xf_index);
+ ScPatternAttr aPattern(mrDoc.getDoc().GetPool());
+ mrStyles.applyXfToItemSet(aPattern.GetItemSet(), xf_index);
+ mrDoc.getDoc().ApplyPatternAreaTab(col_start, row_start, col_end, row_end, mnTab, aPattern);
}
namespace {
@@ -673,6 +680,20 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
}
}
+bool ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, size_t xfId)
+{
+ SAL_INFO("sc.orcus.style", "applyXfToitemSet: " << xfId);
+ if (maCellXfs.size() <= xfId)
+ {
+ SAL_WARN("sc.orcus.style", "invalid xf id");
+ return false;
+ }
+
+ const xf& rXf = maCellXfs[xfId];
+ applyXfToItemSet(rSet, rXf);
+ return true;
+}
+
void ScOrcusStyles::set_font_count(size_t /*n*/)
{
// needed at all?
commit 5486dc71336e6e1f0f20d16e526712439131f949
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Jan 11 15:29:45 2015 +0100
use a consistent log area for orcus styles
Change-Id: I8d020d541cbe1ccd4fbc38f2ba0ba63351ddfaa4
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 10a1ce4..0957714 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -363,8 +363,9 @@ void ScOrcusSheet::set_date_time(
cellInserted();
}
-void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/, size_t /*xf_index*/)
+void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/, size_t xf_index)
{
+ SAL_INFO("sc.orcus.style", "set format: " << xf_index);
}
void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/,
@@ -573,6 +574,18 @@ ScOrcusStyles::font::font():
{
}
+/*
+namespace {
+
+std::ostream& operator<<(std::ostream& rStrm, const Color& rColor)
+{
+ rStrm << "Red: " << rColor.GetRed() << ", Green: " << rColor.GetGreen() << ", Blue: " << rColor.GetBlue();
+ return rStrm;
+}
+
+}
+*/
+
void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const
{
FontItalic eItalic = mbItalic ? ITALIC_NORMAL : ITALIC_NONE;
@@ -624,7 +637,7 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
size_t nFontId = rXf.mnFontId;
if (nFontId >= maFonts.size())
{
- SAL_WARN("sc.orcus.styles", "invalid font id");
+ SAL_WARN("sc.orcus.style", "invalid font id");
return;
}
@@ -634,28 +647,28 @@ void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
size_t nFillId = rXf.mnFillId;
if (nFillId >= maFills.size())
{
- SAL_WARN("sc.orcus.styles", "invalid fill id");
+ SAL_WARN("sc.orcus.style", "invalid fill id");
return;
}
size_t nBorderId = rXf.mnBorderId;
if (nBorderId >= maBorders.size())
{
- SAL_WARN("sc.orcus.styles", "invalid border id");
+ SAL_WARN("sc.orcus.style", "invalid border id");
return;
}
size_t nProtectionId = rXf.mnProtectionId;
if (nProtectionId >= maProtections.size())
{
- SAL_WARN("sc.orcus.styles", "invalid protection id");
+ SAL_WARN("sc.orcus.style", "invalid protection id");
return;
}
size_t nNumberFormatId = rXf.mnNumberFormatId;
if (nNumberFormatId >= maNumberFormats.size())
{
- SAL_WARN("sc.orcus.styles", "invalid number format id");
+ SAL_WARN("sc.orcus.style", "invalid number format id");
return;
}
}
@@ -771,7 +784,7 @@ void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t /*di
size_t ScOrcusStyles::commit_border()
{
- SAL_INFO("sc.orcus.styles", "commit border");
+ SAL_INFO("sc.orcus.style", "commit border");
return 0;
}
@@ -788,7 +801,7 @@ void ScOrcusStyles::set_cell_locked(bool b)
size_t ScOrcusStyles::commit_cell_protection()
{
- SAL_INFO("sc.orcus.styles", "commit cell protection");
+ SAL_INFO("sc.orcus.style", "commit cell protection");
maProtections.push_back(maCurrentProtection);
return maProtections.size() - 1;
}
@@ -809,7 +822,7 @@ void ScOrcusStyles::set_number_format_code(const char* s, size_t n)
size_t ScOrcusStyles::commit_number_format()
{
- SAL_INFO("sc.orcus.styles", "commit number format");
+ SAL_INFO("sc.orcus.style", "commit number format");
maNumberFormats.push_back(maCurrentNumberFormat);
return maNumberFormats.size() - 1;
}
@@ -823,7 +836,7 @@ void ScOrcusStyles::set_cell_style_xf_count(size_t /*n*/)
size_t ScOrcusStyles::commit_cell_style_xf()
{
- SAL_INFO("sc.orcus.styles", "commit cell style xf");
+ SAL_INFO("sc.orcus.style", "commit cell style xf");
maCellStyleXfs.push_back(maCurrentXF);
return maCellStyleXfs.size() - 1;
}
@@ -837,7 +850,7 @@ void ScOrcusStyles::set_cell_xf_count(size_t /*n*/)
size_t ScOrcusStyles::commit_cell_xf()
{
- SAL_INFO("sc.orcus.styles", "commit cell xf");
+ SAL_INFO("sc.orcus.style", "commit cell xf");
maCellXfs.push_back(maCurrentXF);
return maCellXfs.size() - 1;
}
@@ -924,10 +937,10 @@ void ScOrcusStyles::set_cell_style_builtin(size_t index)
size_t ScOrcusStyles::commit_cell_style()
{
- SAL_INFO("sc.orcus.styles", "commit cell styles");
+ SAL_INFO("sc.orcus.style", "commit cell style: " << maCurrentCellStyle.maName);
if (maCurrentCellStyle.mnXFId >= maCellStyleXfs.size())
{
- SAL_WARN("sc.orcus.styles", "invalid xf id for commit cell style");
+ SAL_WARN("sc.orcus.style", "invalid xf id for commit cell style");
return 0;
}
commit 2cf73ac4257959b0767c965476a07494c911115f
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Jan 10 22:33:22 2015 +0100
correct import for row height and col width
Change-Id: Id26ae200b3262769e66528e1d00639471e72c0d7
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index e1db595..10a1ce4 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -228,22 +228,33 @@ double translateToInternal(double nVal, orcus::length_unit_t unit)
switch(unit)
{
case orcus::length_unit_inch:
+ return nVal * 72.0 * 20.0;
+ break;
case orcus::length_unit_twip:
+ return nVal;
+ break;
case orcus::length_unit_point:
+ return nVal * 20.0;
+ break;
case orcus::length_unit_centimeter:
+ return nVal * 20.0 * 72.0 / 2.54;
+ break;
case orcus::length_unit_unknown:
+ SAL_WARN("sc,orcus", "unknown unit");
+ break;
default:
break;
}
- return 0;
+ return nVal;
}
}
-void ScOrcusSheetProperties::set_column_width(os::col_t col, double width, orcus::length_unit_t /*unit*/)
+void ScOrcusSheetProperties::set_column_width(os::col_t col, double width, orcus::length_unit_t unit)
{
- mrDoc.getDoc().SetColWidthOnly(col, mnTab, width);
+ double nNewWidth = translateToInternal(width, unit);
+ mrDoc.getDoc().SetColWidthOnly(col, mnTab, nNewWidth);
}
void ScOrcusSheetProperties::set_column_hidden(os::col_t col, bool hidden)
@@ -252,9 +263,10 @@ void ScOrcusSheetProperties::set_column_hidden(os::col_t col, bool hidden)
mrDoc.getDoc().SetColHidden(col, col, mnTab, hidden);
}
-void ScOrcusSheetProperties::set_row_height(os::row_t row, double height, orcus::length_unit_t /*unit*/)
+void ScOrcusSheetProperties::set_row_height(os::row_t row, double height, orcus::length_unit_t unit)
{
- mrDoc.getDoc().SetRowHeightOnly(row, row,mnTab, height);
+ double nNewHeight = translateToInternal(height, unit);
+ mrDoc.getDoc().SetRowHeightOnly(row, row,mnTab, nNewHeight);
}
void ScOrcusSheetProperties::set_row_hidden(os::row_t row, bool hidden)
commit 9a556f56939e131f62de88cd0286f24c0fa6dc9c
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Jan 9 18:39:35 2015 +0100
temp
Change-Id: Ia71c6f0b673f58b804403841a92f7ab30a619e3e
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 9cad8e9..e1db595 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -221,6 +221,26 @@ ScOrcusSheetProperties::~ScOrcusSheetProperties()
{
}
+namespace {
+
+double translateToInternal(double nVal, orcus::length_unit_t unit)
+{
+ switch(unit)
+ {
+ case orcus::length_unit_inch:
+ case orcus::length_unit_twip:
+ case orcus::length_unit_point:
+ case orcus::length_unit_centimeter:
+ case orcus::length_unit_unknown:
+ default:
+ break;
+ }
+ return 0;
+}
+
+
+}
+
void ScOrcusSheetProperties::set_column_width(os::col_t col, double width, orcus::length_unit_t /*unit*/)
{
mrDoc.getDoc().SetColWidthOnly(col, mnTab, width);
commit f1310337481f30465f47f46adac98f88b1f95104
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Oct 28 14:46:26 2014 +0100
implement import_sheet_properties interface
Conflicts:
sc/source/filter/inc/orcusinterface.hxx
sc/source/filter/orcus/interface.cxx
Change-Id: Ifed14df422c067fb6faacf370cbe9e1acf336d24
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index b72f6a8..06551c2 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -101,6 +101,25 @@ private:
ScRange maRange;
};
+class ScOrcusSheetProperties : public orcus::spreadsheet::iface::import_sheet_properties
+{
+ ScDocumentImport& mrDoc;
+ SCTAB mnTab;
+public:
+ ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport& rDoc);
+ virtual ~ScOrcusSheetProperties();
+
+ virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) SAL_OVERRIDE;
+
+ virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) SAL_OVERRIDE;
+
+ virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) SAL_OVERRIDE;
+
+ virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) SAL_OVERRIDE;
+
+ virtual void set_merge_cell_range(const char* p_range, size_t n_range) SAL_OVERRIDE;
+};
+
class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet
{
ScDocumentImport& mrDoc;
@@ -108,6 +127,7 @@ class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet
ScOrcusFactory& mrFactory;
sc::SharedFormulaGroups maFormulaGroups;
ScOrcusAutoFilter maAutoFilter;
+ ScOrcusSheetProperties maProperties;
typedef std::map<size_t, ScRangeData*> SharedFormulaContainer;
SharedFormulaContainer maSharedFormulas;
@@ -121,6 +141,7 @@ public:
virtual orcus::spreadsheet::iface::import_auto_filter* get_auto_filter() SAL_OVERRIDE { return &maAutoFilter; }
virtual orcus::spreadsheet::iface::import_table* get_table() SAL_OVERRIDE;
+ virtual orcus::spreadsheet::iface::import_sheet_properties* get_sheet_properties() SAL_OVERRIDE;
// Orcus import interface
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) SAL_OVERRIDE;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 8ab43e1..9cad8e9 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -211,8 +211,51 @@ void ScOrcusFactory::setStatusIndicator(const uno::Reference<task::XStatusIndica
mxStatusIndicator = rIndicator;
}
+ScOrcusSheetProperties::ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport& rDoc):
+ mrDoc(rDoc),
+ mnTab(nTab)
+{
+}
+
+ScOrcusSheetProperties::~ScOrcusSheetProperties()
+{
+}
+
+void ScOrcusSheetProperties::set_column_width(os::col_t col, double width, orcus::length_unit_t /*unit*/)
+{
+ mrDoc.getDoc().SetColWidthOnly(col, mnTab, width);
+}
+
+void ScOrcusSheetProperties::set_column_hidden(os::col_t col, bool hidden)
+{
+ if (hidden)
+ mrDoc.getDoc().SetColHidden(col, col, mnTab, hidden);
+}
+
+void ScOrcusSheetProperties::set_row_height(os::row_t row, double height, orcus::length_unit_t /*unit*/)
+{
+ mrDoc.getDoc().SetRowHeightOnly(row, row,mnTab, height);
+}
+
+void ScOrcusSheetProperties::set_row_hidden(os::row_t row, bool hidden)
+{
+ if (hidden)
+ mrDoc.getDoc().SetRowHidden(row, row, mnTab, hidden);
+}
+
+void ScOrcusSheetProperties::set_merge_cell_range(const char* /*p_range*/, size_t /*n_range*/)
+{
+}
+
ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& rFactory) :
- mrDoc(rDoc), mnTab(nTab), mrFactory(rFactory), maAutoFilter(rDoc.getDoc()), mnCellCount(0) {}
+ mrDoc(rDoc),
+ mnTab(nTab),
+ mrFactory(rFactory),
+ maAutoFilter(rDoc.getDoc()),
+ maProperties(mnTab, mrDoc),
+ mnCellCount(0)
+{
+}
void ScOrcusSheet::cellInserted()
{
@@ -229,6 +272,11 @@ os::iface::import_table* ScOrcusSheet::get_table()
return NULL;
}
+os::iface::import_sheet_properties* ScOrcusSheet::get_sheet_properties()
+{
+ return &maProperties;
+}
+
void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n)
{
OUString aVal(p, n, RTL_TEXTENCODING_UTF8);
commit 8cb21b2a88a5dc48457b30306173d650425919f6
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Oct 28 14:33:33 2014 +0100
prevent default operator=
Change-Id: Ibcd843a992b06b73e628b0249fb9f3ea723510d2
diff --git a/sc/inc/documentimport.hxx b/sc/inc/documentimport.hxx
index aa69458..e7fc0b6 100644
--- a/sc/inc/documentimport.hxx
+++ b/sc/inc/documentimport.hxx
@@ -42,6 +42,7 @@ class SC_DLLPUBLIC ScDocumentImport : boost::noncopyable
ScDocumentImportImpl* mpImpl;
ScDocumentImport(); // disabled
+ ScDocumentImport& operator=(const ScDocumentImport&); //disabled
public:
commit 6ae1b105e38e537ae3d38186913069a2334bd66f
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Oct 28 00:12:06 2014 +0100
don't protect the gnumeric filter with the USE_ORCUS flag
Change-Id: Id91c7844879bea589bf97f999fd0c69669dfa7f6
diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx
index 3f2db03b0..aca4c09 100644
--- a/framework/source/loadenv/loadenv.cxx
+++ b/framework/source/loadenv/loadenv.cxx
@@ -666,13 +666,6 @@ namespace {
bool queryOrcusTypeAndFilter(const uno::Sequence<beans::PropertyValue>& rDescriptor, OUString& rType, OUString& rFilter)
{
- // depending on the experimental mode
- uno::Reference< uno::XComponentContext > xContext = comphelper::getProcessComponentContext();
- if (!xContext.is() || !officecfg::Office::Common::Misc::ExperimentalMode::get(xContext))
- {
- return false;
- }
-
OUString aURL;
sal_Int32 nSize = rDescriptor.getLength();
for (sal_Int32 i = 0; i < nSize; ++i)
@@ -688,10 +681,6 @@ bool queryOrcusTypeAndFilter(const uno::Sequence<beans::PropertyValue>& rDescrip
if (aURL.isEmpty() || aURL.copy(0,8).equalsIgnoreAsciiCase("private:"))
return false;
- OUString aUseOrcus;
- rtl::Bootstrap::get("LIBO_USE_ORCUS", aUseOrcus);
- bool bUseOrcus = (aUseOrcus == "YES");
-
// TODO : Type must be set to be generic_Text (or any other type that
// exists) in order to find a usable loader. Exploit it as a temporary
// hack.
@@ -703,6 +692,17 @@ bool queryOrcusTypeAndFilter(const uno::Sequence<beans::PropertyValue>& rDescrip
return true;
}
+ // depending on the experimental mode
+ uno::Reference< uno::XComponentContext > xContext = comphelper::getProcessComponentContext();
+ if (!xContext.is() || !officecfg::Office::Common::Misc::ExperimentalMode::get(xContext))
+ {
+ return false;
+ }
+
+ OUString aUseOrcus;
+ rtl::Bootstrap::get("LIBO_USE_ORCUS", aUseOrcus);
+ bool bUseOrcus = (aUseOrcus == "YES");
+
if (!bUseOrcus)
return false;
commit 63a4e2338c17264c4a734482b754ee9c6df8c94a
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Aug 26 15:18:19 2014 +0200
import cell fill color
Change-Id: Icbc6ef69a00f05ffa7bb78227968c13a16cdc7a0
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 8269b9b..b72f6a8 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -186,6 +186,8 @@ private:
OUString maPattern;
Color maFgColor;
Color maBgColor;
+
+ void applyToItemSet(SfxItemSet& rSet) const;
};
fill maCurrentFill;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 9d0a1e8..8ab43e1 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -24,6 +24,7 @@
#include <editeng/postitem.hxx>
#include <editeng/wghtitem.hxx>
#include <editeng/colritem.hxx>
+#include <editeng/brushitem.hxx>
#include <editeng/udlnitem.hxx>
#include <formula/token.hxx>
@@ -504,6 +505,14 @@ void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const
rSet.Put(SvxUnderlineItem(meUnderline, ATTR_FONT_UNDERLINE));
}
+void ScOrcusStyles::fill::applyToItemSet(SfxItemSet& rSet) const
+{
+ if (maPattern.equalsIgnoreAsciiCase("none"))
+ return;
+
+ rSet.Put(SvxBrushItem(maFgColor, ATTR_BACKGROUND));
+}
+
ScOrcusStyles::protection::protection():
mbHidden(false),
mbLocked(false)
@@ -637,22 +646,26 @@ void ScOrcusStyles::set_fill_count(size_t /*n*/)
// needed at all?
}
-void ScOrcusStyles::set_fill_pattern_type(const char* /*s*/, size_t /*n*/)
+void ScOrcusStyles::set_fill_pattern_type(const char* s, size_t n)
{
+ maCurrentFill.maPattern = OUString(s, n, RTL_TEXTENCODING_UTF8);
}
-void ScOrcusStyles::set_fill_fg_color(orcus::spreadsheet::color_elem_t /*alpha*/, orcus::spreadsheet::color_elem_t /*red*/, orcus::spreadsheet::color_elem_t /*green*/, orcus::spreadsheet::color_elem_t /*blue*/)
+void ScOrcusStyles::set_fill_fg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue)
{
+ maCurrentFill.maFgColor = Color(alpha, red, green, blue);
}
-void ScOrcusStyles::set_fill_bg_color(orcus::spreadsheet::color_elem_t /*alpha*/, orcus::spreadsheet::color_elem_t /*red*/, orcus::spreadsheet::color_elem_t /*green*/, orcus::spreadsheet::color_elem_t /*blue*/)
+void ScOrcusStyles::set_fill_bg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue)
{
+ maCurrentFill.maBgColor = Color(alpha, red, green, blue);
}
size_t ScOrcusStyles::commit_fill()
{
SAL_INFO("sc.orcus.style", "commit fill");
- return 0;
+ maFills.push_back(maCurrentFill);
+ return maFills.size() - 1;
}
// border
commit 910755289a9d32f47d282049eb9d384cbc2fd083
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Aug 26 15:17:19 2014 +0200
we need to create the default styles in the interface right now
We should fix this but it needs some work in the import code.
Change-Id: If9ce52f6aa2b30faf832a89f39abef4b853a5ec1
diff --git a/sc/inc/stlpool.hxx b/sc/inc/stlpool.hxx
index e83aef0..15acaf8 100644
--- a/sc/inc/stlpool.hxx
+++ b/sc/inc/stlpool.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_SC_INC_STLPOOL_HXX
#include <svl/style.hxx>
+#include "scdllapi.h"
class ScStyleSheet;
class ScDocument;
@@ -42,7 +43,7 @@ public:
SfxStyleSheetBase* GetActualStyleSheet ()
{ return pActualStyleSheet; }
- void CreateStandardStyles();
+ void SC_DLLPUBLIC CreateStandardStyles();
void CopyStdStylesFrom( ScStyleSheetPool* pSrcPool );
void CopyStyleFrom( ScStyleSheetPool* pSrcPool,
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 905326d..9d0a1e8 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -481,6 +481,7 @@ size_t ScOrcusSharedStrings::commit_segments()
ScOrcusStyles::ScOrcusStyles(ScDocument& rDoc):
mrDoc(rDoc)
{
+ mrDoc.GetStyleSheetPool()->CreateStandardStyles();
}
ScOrcusStyles::font::font():
commit bf8279d836b612a029a94d21f909e28023207ac3
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Aug 26 15:14:41 2014 +0200
import font underline
Change-Id: I4857d9d49b9f6ef1b92a1d5f61f9f9e852620949
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index cd08d5c..8269b9b 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -14,6 +14,7 @@
#include "documentimport.hxx"
#include <tools/color.hxx>
+#include <tools/fontenum.hxx>
#include "sharedformulagroups.hxx"
@@ -170,6 +171,7 @@ private:
OUString maName;
double mnSize;
Color maColor;
+ FontUnderline meUnderline;
font();
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 281a31f..905326d 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -24,6 +24,7 @@
#include <editeng/postitem.hxx>
#include <editeng/wghtitem.hxx>
#include <editeng/colritem.hxx>
+#include <editeng/udlnitem.hxx>
#include <formula/token.hxx>
#include <tools/datetime.hxx>
@@ -485,7 +486,8 @@ ScOrcusStyles::ScOrcusStyles(ScDocument& rDoc):
ScOrcusStyles::font::font():
mbBold(false),
mbItalic(false),
- mnSize(10)
+ mnSize(10),
+ meUnderline(UNDERLINE_NONE)
{
}
@@ -498,6 +500,7 @@ void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const
rSet.Put(SvxWeightItem(eWeight, ATTR_FONT_WEIGHT));
rSet.Put(SvxColorItem(maColor, ATTR_FONT_COLOR));
+ rSet.Put(SvxUnderlineItem(meUnderline, ATTR_FONT_UNDERLINE));
}
ScOrcusStyles::protection::protection():
@@ -593,8 +596,22 @@ void ScOrcusStyles::set_font_size(double point)
maCurrentFont.mnSize = point;
}
-void ScOrcusStyles::set_font_underline(orcus::spreadsheet::underline_t /*e*/)
+void ScOrcusStyles::set_font_underline(orcus::spreadsheet::underline_t e)
{
+ switch(e)
+ {
+ case orcus::spreadsheet::underline_single:
+ case orcus::spreadsheet::underline_single_accounting:
+ maCurrentFont.meUnderline = UNDERLINE_SINGLE;
+ break;
+ case orcus::spreadsheet::underline_double:
+ case orcus::spreadsheet::underline_double_accounting:
+ maCurrentFont.meUnderline = UNDERLINE_DOUBLE;
+ break;
+ case orcus::spreadsheet::underline_none:
+ maCurrentFont.meUnderline = UNDERLINE_NONE;
+ break;
+ }
}
void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t alpha,
commit 0bd4408a88e58cedd0ca2c35c8a9396c91ad2ee8
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Aug 23 15:25:05 2014 +0200
next step on correct styles import from orcus
Change-Id: I5d7487dee3120b2a74affe6b081d0c1ea338edc0
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 2e4cc4c..cd08d5c 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -31,6 +31,7 @@ class ScDocumentImport;
class ScOrcusSheet;
class ScOrcusFactory;
class ScRangeData;
+class SfxItemSet;
namespace com { namespace sun { namespace star { namespace task {
@@ -160,6 +161,7 @@ public:
class ScOrcusStyles : public orcus::spreadsheet::iface::import_styles
{
private:
+ ScDocument& mrDoc;
struct font
{
@@ -170,6 +172,8 @@ private:
Color maColor;
font();
+
+ void applyToItemSet(SfxItemSet& rSet) const;
};
font maCurrentFont;
@@ -220,6 +224,7 @@ private:
size_t mnBorderId;
size_t mnProtectionId;
size_t mnNumberFormatId;
+ size_t mnStyleXf;
xf();
};
@@ -239,7 +244,10 @@ private:
cell_style maCurrentCellStyle;
+ void applyXfToItemSet(SfxItemSet& rSet, const xf& rXf);
+
public:
+ ScOrcusStyles(ScDocument& rDoc);
// font
virtual void set_font_count(size_t n) SAL_OVERRIDE;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index ed2718a..281a31f 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -18,6 +18,12 @@
#include "globstr.hrc"
#include "compiler.hxx"
#include "dbdata.hxx"
+#include "stlpool.hxx"
+#include "scitems.hxx"
+
+#include <editeng/postitem.hxx>
+#include <editeng/wghtitem.hxx>
+#include <editeng/colritem.hxx>
#include <formula/token.hxx>
#include <tools/datetime.hxx>
@@ -52,6 +58,7 @@ ScOrcusFactory::ScOrcusFactory(ScDocument& rDoc) :
maDoc(rDoc),
maGlobalSettings(maDoc),
maSharedStrings(*this),
+ maStyles(rDoc),
mnProgress(0) {}
orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::append_sheet(const char* sheet_name, size_t sheet_name_length)
@@ -470,6 +477,11 @@ size_t ScOrcusSharedStrings::commit_segments()
return mrFactory.addString(OStringToOUString(aStr, RTL_TEXTENCODING_UTF8));
}
+ScOrcusStyles::ScOrcusStyles(ScDocument& rDoc):
+ mrDoc(rDoc)
+{
+}
+
ScOrcusStyles::font::font():
mbBold(false),
mbItalic(false),
@@ -477,6 +489,17 @@ ScOrcusStyles::font::font():
{
}
+void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const
+{
+ 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));
+
+ rSet.Put(SvxColorItem(maColor, ATTR_FONT_COLOR));
+}
+
ScOrcusStyles::protection::protection():
mbHidden(false),
mbLocked(false)
@@ -492,7 +515,8 @@ ScOrcusStyles::xf::xf():
mnFillId(0),
mnBorderId(0),
mnProtectionId(0),
- mnNumberFormatId(0)
+ mnNumberFormatId(0),
+ mnStyleXf(0)
{
}
@@ -502,6 +526,47 @@ ScOrcusStyles::cell_style::cell_style():
{
}
+void ScOrcusStyles::applyXfToItemSet(SfxItemSet& rSet, const xf& rXf)
+{
+ size_t nFontId = rXf.mnFontId;
+ if (nFontId >= maFonts.size())
+ {
+ SAL_WARN("sc.orcus.styles", "invalid font id");
+ return;
+ }
+
+ const font& rFont = maFonts[nFontId];
+ rFont.applyToItemSet(rSet);
+
+ size_t nFillId = rXf.mnFillId;
+ if (nFillId >= maFills.size())
+ {
+ SAL_WARN("sc.orcus.styles", "invalid fill id");
+ return;
+ }
+
+ size_t nBorderId = rXf.mnBorderId;
+ if (nBorderId >= maBorders.size())
+ {
+ SAL_WARN("sc.orcus.styles", "invalid border id");
+ return;
+ }
+
+ size_t nProtectionId = rXf.mnProtectionId;
+ if (nProtectionId >= maProtections.size())
+ {
+ SAL_WARN("sc.orcus.styles", "invalid protection id");
+ return;
+ }
+
+ size_t nNumberFormatId = rXf.mnNumberFormatId;
+ if (nNumberFormatId >= maNumberFormats.size())
+ {
+ SAL_WARN("sc.orcus.styles", "invalid number format id");
+ return;
+ }
+}
+
void ScOrcusStyles::set_font_count(size_t /*n*/)
{
// needed at all?
@@ -542,6 +607,7 @@ void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t alpha,
size_t ScOrcusStyles::commit_font()
{
+ SAL_INFO("sc.orcus.style", "commit font");
maFonts.push_back(maCurrentFont);
return maFonts.size() - 1;
}
@@ -567,6 +633,7 @@ void ScOrcusStyles::set_fill_bg_color(orcus::spreadsheet::color_elem_t /*alpha*/
size_t ScOrcusStyles::commit_fill()
{
+ SAL_INFO("sc.orcus.style", "commit fill");
return 0;
}
@@ -593,6 +660,7 @@ void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t /*di
size_t ScOrcusStyles::commit_border()
{
+ SAL_INFO("sc.orcus.styles", "commit border");
return 0;
}
@@ -609,6 +677,7 @@ void ScOrcusStyles::set_cell_locked(bool b)
size_t ScOrcusStyles::commit_cell_protection()
{
+ SAL_INFO("sc.orcus.styles", "commit cell protection");
maProtections.push_back(maCurrentProtection);
return maProtections.size() - 1;
}
@@ -629,6 +698,7 @@ void ScOrcusStyles::set_number_format_code(const char* s, size_t n)
size_t ScOrcusStyles::commit_number_format()
{
+ SAL_INFO("sc.orcus.styles", "commit number format");
maNumberFormats.push_back(maCurrentNumberFormat);
return maNumberFormats.size() - 1;
}
@@ -642,6 +712,7 @@ void ScOrcusStyles::set_cell_style_xf_count(size_t /*n*/)
size_t ScOrcusStyles::commit_cell_style_xf()
{
+ SAL_INFO("sc.orcus.styles", "commit cell style xf");
maCellStyleXfs.push_back(maCurrentXF);
return maCellStyleXfs.size() - 1;
}
@@ -655,6 +726,7 @@ void ScOrcusStyles::set_cell_xf_count(size_t /*n*/)
size_t ScOrcusStyles::commit_cell_xf()
{
+ SAL_INFO("sc.orcus.styles", "commit cell xf");
maCellXfs.push_back(maCurrentXF);
return maCellXfs.size() - 1;
}
@@ -697,8 +769,9 @@ void ScOrcusStyles::set_xf_protection(size_t index)
maCurrentXF.mnProtectionId = index;
}
-void ScOrcusStyles::set_xf_style_xf(size_t /*index*/)
+void ScOrcusStyles::set_xf_style_xf(size_t index)
{
+ maCurrentXF.mnStyleXf = index;
}
void ScOrcusStyles::set_xf_apply_alignment(bool /*b*/)
@@ -740,6 +813,20 @@ void ScOrcusStyles::set_cell_style_builtin(size_t index)
size_t ScOrcusStyles::commit_cell_style()
{
+ SAL_INFO("sc.orcus.styles", "commit cell styles");
+ if (maCurrentCellStyle.mnXFId >= maCellStyleXfs.size())
+ {
+ SAL_WARN("sc.orcus.styles", "invalid xf id for commit cell style");
+ return 0;
+ }
+
+ ScStyleSheetPool* pPool = mrDoc.GetStyleSheetPool();
+ SfxStyleSheetBase& rBase = pPool->Make(maCurrentCellStyle.maName, SFX_STYLE_FAMILY_PARA);
+ SfxItemSet& rSet = rBase.GetItemSet();
+
+ xf& rXf = maCellStyleXfs[maCurrentCellStyle.mnXFId];
+ applyXfToItemSet(rSet, rXf);
+
return 0;
}
commit ab036f3b3ce069ad34924208c0e697d0d92a0f85
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Aug 23 15:24:04 2014 +0200
import font color correctly
Change-Id: I7996da193d24e81a625070ddfc7d17311af38774
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 3bb0885..ed2718a 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -532,11 +532,12 @@ void ScOrcusStyles::set_font_underline(orcus::spreadsheet::underline_t /*e*/)
{
}
-void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t,
- orcus::spreadsheet::color_elem_t,
- orcus::spreadsheet::color_elem_t,
- orcus::spreadsheet::color_elem_t)
+void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t alpha,
+ orcus::spreadsheet::color_elem_t red,
+ orcus::spreadsheet::color_elem_t green,
+ orcus::spreadsheet::color_elem_t blue)
{
+ maCurrentFont.maColor = Color(alpha, red, green, blue);
}
size_t ScOrcusStyles::commit_font()
commit b0a2cc695ea3ab3b6e66bc7822135ea6e1cc1b3f
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Aug 22 11:22:03 2014 +0200
remove crazy whitespaces
Conflicts:
framework/source/loadenv/loadenv.cxx
Change-Id: Ia104e5dedbaf19dff5b0eaf4eb6f4c355570cc00
diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx
index e2c1d63..3f2db03b0 100644
--- a/framework/source/loadenv/loadenv.cxx
+++ b/framework/source/loadenv/loadenv.cxx
@@ -1084,9 +1084,9 @@ bool LoadEnv::impl_loadContent()
// So we prevent our code against wrong using. Why?
// It could be, that using of this progress could make trouble. e.g. He make window visible ...
// but shouldn't do that. But if no indicator is available ... nobody has a chance to do that!
- bool bHidden = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_HIDDEN() , false );
- bool bMinimized = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_MINIMIZED() , false );
- bool bPreview = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_PREVIEW() , false );
+ bool bHidden = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_HIDDEN(), false);
+ bool bMinimized = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_MINIMIZED(), false);
+ bool bPreview = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_PREVIEW(), false);
css::uno::Reference< css::task::XStatusIndicator > xProgress = m_lMediaDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_STATUSINDICATOR(), css::uno::Reference< css::task::XStatusIndicator >());
if (!bHidden && !bMinimized && !bPreview && !xProgress.is())
commit c427f2ee1773a4cb7b5b2b83c0b91e07e5a30781
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Aug 22 11:21:44 2014 +0200
make experimental orcus import work again
Change-Id: I2e599331669c3018557835ab227395c54c247ac9
diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx
index 6f6cc12..e2c1d63 100644
--- a/framework/source/loadenv/loadenv.cxx
+++ b/framework/source/loadenv/loadenv.cxx
@@ -767,6 +767,7 @@ void LoadEnv::impl_detectTypeAndFilter()
m_lMediaDescriptor[utl::MediaDescriptor::PROP_TYPENAME()] <<= sType;
m_lMediaDescriptor[utl::MediaDescriptor::PROP_FILTERNAME()] <<= sFilter;
m_lMediaDescriptor[utl::MediaDescriptor::PROP_FILTERPROVIDER()] <<= OUString("orcus");
+ m_lMediaDescriptor[utl::MediaDescriptor::PROP_DOCUMENTSERVICE()] <<= OUString("com.sun.star.sheet.SpreadsheetDocument");
return;
}
commit cb24ff3e1dde0c999158a91a657569c28c01a86e
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Aug 22 09:03:42 2014 +0200
tep for correct styles import from orcus
Change-Id: Ifdd4686b5fd8a00dbe8ff74400a909697895e30b
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 2e687ec..2e4cc4c 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -13,6 +13,8 @@
#include "address.hxx"
#include "documentimport.hxx"
+#include <tools/color.hxx>
+
#include "sharedformulagroups.hxx"
#include <rtl/strbuf.hxx>
@@ -23,6 +25,7 @@
#include <boost/ptr_container/ptr_vector.hpp>
#include <map>
#include <unordered_map>
+#include <vector>
class ScDocumentImport;
class ScOrcusSheet;
@@ -156,6 +159,85 @@ public:
class ScOrcusStyles : public orcus::spreadsheet::iface::import_styles
{
+private:
+
+ struct font
+ {
+ bool mbBold;
+ bool mbItalic;
+ OUString maName;
+ double mnSize;
+ Color maColor;
+
+ font();
+ };
+
+ font maCurrentFont;
+ std::vector<font> maFonts;
+
+ struct fill
+ {
+ OUString maPattern;
+ Color maFgColor;
+ Color maBgColor;
+ };
+
+ fill maCurrentFill;
+ std::vector<fill> maFills;
+
+ struct border
+ {
+
+ border();
+ };
+
+ border maCurrentBorder;
+ std::vector<border> maBorders;
+
+ struct protection
+ {
+ bool mbHidden;
+ bool mbLocked;
+
+ protection();
+ };
+
+ protection maCurrentProtection;
+ std::vector<protection> maProtections;
+
+ struct number_format
+ {
+ OUString maCode;
+ };
+
+ number_format maCurrentNumberFormat;
+ std::vector<number_format> maNumberFormats;
+
+ struct xf
+ {
+ size_t mnFontId;
+ size_t mnFillId;
+ size_t mnBorderId;
+ size_t mnProtectionId;
+ size_t mnNumberFormatId;
+
+ xf();
+ };
+
+ xf maCurrentXF;
+ std::vector<xf> maCellStyleXfs;
+ std::vector<xf> maCellXfs;
+
+ struct cell_style
+ {
+ OUString maName;
+ size_t mnXFId;
+ size_t mnBuiltInId;
+
+ cell_style();
+ };
+
+ cell_style maCurrentCellStyle;
public:
// font
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 35ecc83..3bb0885 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -470,25 +470,62 @@ size_t ScOrcusSharedStrings::commit_segments()
return mrFactory.addString(OStringToOUString(aStr, RTL_TEXTENCODING_UTF8));
}
+ScOrcusStyles::font::font():
+ mbBold(false),
+ mbItalic(false),
+ mnSize(10)
+{
+}
+
+ScOrcusStyles::protection::protection():
+ mbHidden(false),
+ mbLocked(false)
+{
+}
+
+ScOrcusStyles::border::border()
+{
+}
+
+ScOrcusStyles::xf::xf():
+ mnFontId(0),
+ mnFillId(0),
+ mnBorderId(0),
+ mnProtectionId(0),
+ mnNumberFormatId(0)
+{
+}
+
+ScOrcusStyles::cell_style::cell_style():
+ mnXFId(0),
+ mnBuiltInId(0)
+{
+}
+
void ScOrcusStyles::set_font_count(size_t /*n*/)
{
// needed at all?
}
-void ScOrcusStyles::set_font_bold(bool /*b*/)
+void ScOrcusStyles::set_font_bold(bool b)
{
+ maCurrentFont.mbBold = b;
}
-void ScOrcusStyles::set_font_italic(bool /*b*/)
+void ScOrcusStyles::set_font_italic(bool b)
{
+ maCurrentFont.mbItalic = b;
}
-void ScOrcusStyles::set_font_name(const char* /*s*/, size_t /*n*/)
+void ScOrcusStyles::set_font_name(const char* s, size_t n)
{
+ OUString aName(s, n, RTL_TEXTENCODING_UTF8);
+ maCurrentFont.maName = aName;
}
-void ScOrcusStyles::set_font_size(double /*point*/)
+void ScOrcusStyles::set_font_size(double point)
{
+ maCurrentFont.mnSize = point;
}
void ScOrcusStyles::set_font_underline(orcus::spreadsheet::underline_t /*e*/)
@@ -504,7 +541,8 @@ void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t,
size_t ScOrcusStyles::commit_font()
{
- return 0;
+ maFonts.push_back(maCurrentFont);
+ return maFonts.size() - 1;
}
// fill
@@ -558,17 +596,20 @@ size_t ScOrcusStyles::commit_border()
}
// cell protection
-void ScOrcusStyles::set_cell_hidden(bool /*b*/)
+void ScOrcusStyles::set_cell_hidden(bool b)
{
+ maCurrentProtection.mbHidden = b;
}
-void ScOrcusStyles::set_cell_locked(bool /*b*/)
+void ScOrcusStyles::set_cell_locked(bool b)
{
+ maCurrentProtection.mbLocked = b;
}
size_t ScOrcusStyles::commit_cell_protection()
{
- return 0;
+ maProtections.push_back(maCurrentProtection);
+ return maProtections.size() - 1;
}
void ScOrcusStyles::set_number_format_count(size_t)
@@ -579,13 +620,16 @@ void ScOrcusStyles::set_number_format_identifier(size_t)
{
}
-void ScOrcusStyles::set_number_format_code(const char* /*s*/, size_t /*n*/)
+void ScOrcusStyles::set_number_format_code(const char* s, size_t n)
{
+ OUString aCode(s, n, RTL_TEXTENCODING_UTF8);
+ maCurrentNumberFormat.maCode = aCode;
}
size_t ScOrcusStyles::commit_number_format()
{
- return 0;
+ maNumberFormats.push_back(maCurrentNumberFormat);
+ return maNumberFormats.size() - 1;
}
// cell style xf
@@ -597,7 +641,8 @@ void ScOrcusStyles::set_cell_style_xf_count(size_t /*n*/)
size_t ScOrcusStyles::commit_cell_style_xf()
{
- return 0;
+ maCellStyleXfs.push_back(maCurrentXF);
+ return maCellStyleXfs.size() - 1;
}
// cell xf
@@ -609,7 +654,8 @@ void ScOrcusStyles::set_cell_xf_count(size_t /*n*/)
size_t ScOrcusStyles::commit_cell_xf()
{
- return 0;
+ maCellXfs.push_back(maCurrentXF);
+ return maCellXfs.size() - 1;
}
// dxf
@@ -625,25 +671,29 @@ size_t ScOrcusStyles::commit_dxf()
// xf (cell format) - used both by cell xf and cell style xf.
-void ScOrcusStyles::set_xf_number_format(size_t /*index*/)
+void ScOrcusStyles::set_xf_number_format(size_t index)
{
- // no number format interfaces implemented yet
+ maCurrentXF.mnNumberFormatId = index;
}
-void ScOrcusStyles::set_xf_font(size_t /*index*/)
+void ScOrcusStyles::set_xf_font(size_t index)
{
+ maCurrentXF.mnFontId = index;
}
-void ScOrcusStyles::set_xf_fill(size_t /*index*/)
+void ScOrcusStyles::set_xf_fill(size_t index)
{
+ maCurrentXF.mnFillId = index;
}
-void ScOrcusStyles::set_xf_border(size_t /*index*/)
+void ScOrcusStyles::set_xf_border(size_t index)
{
+ maCurrentXF.mnBorderId = index;
}
-void ScOrcusStyles::set_xf_protection(size_t /*index*/)
+void ScOrcusStyles::set_xf_protection(size_t index)
{
+ maCurrentXF.mnProtectionId = index;
}
void ScOrcusStyles::set_xf_style_xf(size_t /*index*/)
@@ -670,17 +720,21 @@ void ScOrcusStyles::set_cell_style_count(size_t /*n*/)
// needed at all?
}
-void ScOrcusStyles::set_cell_style_name(const char* /*s*/, size_t /*n*/)
+void ScOrcusStyles::set_cell_style_name(const char* s, size_t n)
{
+ OUString aName(s, n, RTL_TEXTENCODING_UTF8);
+ maCurrentCellStyle.maName = aName;
}
-void ScOrcusStyles::set_cell_style_xf(size_t /*index*/)
+void ScOrcusStyles::set_cell_style_xf(size_t index)
{
+ maCurrentCellStyle.mnXFId = index;
}
-void ScOrcusStyles::set_cell_style_builtin(size_t /*index*/)
+void ScOrcusStyles::set_cell_style_builtin(size_t index)
{
// not needed for gnumeric
+ maCurrentCellStyle.mnBuiltInId = index;
}
size_t ScOrcusStyles::commit_cell_style()
commit 83ce673e63fe26784c4fed370c7c3ec886a53780
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Aug 22 09:03:30 2014 +0200
parse the range for autofilter
Change-Id: Ia47e42db3a66a8d620803468182e8b9d3465b8e4
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index c48163d..2e687ec 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -92,6 +92,8 @@ public:
private:
ScDocument& mrDoc;
+
+ ScRange maRange;
};
class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 7ab97b1..35ecc83 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -704,6 +704,8 @@ void ScOrcusAutoFilter::set_range(const char* p_ref, size_t n_ref)
{
OUString aRange(p_ref, n_ref, RTL_TEXTENCODING_UTF8);
SAL_INFO("sc.orcus.autofilter", "set_range: " << aRange);
+
+ maRange.Parse(aRange);
}
void ScOrcusAutoFilter::set_column(orcus::spreadsheet::col_t col)
commit 57a8c00e4be5580f2532acfb8b1ab16edb3cdc0c
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Aug 19 17:31:02 2014 +0200
import table as ScDBData
Conflicts:
sc/source/filter/inc/orcusinterface.hxx
sc/source/filter/orcus/interface.cxx
Change-Id: Ibce6247b19ca7c0788743baba24d07722500efd0
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 8677bbf..c48163d 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -284,5 +284,48 @@ public:
void setStatusIndicator(const com::sun::star::uno::Reference<com::sun::star::task::XStatusIndicator>& rIndicator);
};
+class ScOrcusTable : public orcus::spreadsheet::iface::import_table
+{
+private:
+ SCTAB mnTab;
+ ScDocument& mrDoc;
+ ScOrcusAutoFilter maAutoFilter;
+
+ ScRange maRange;
+ OUString maName;
+
+public:
+ ScOrcusTable(SCTAB nTab, ScDocument& rDoc);
+ virtual ~ScOrcusTable();
+
+ virtual orcus::spreadsheet::iface::import_auto_filter* get_auto_filter() SAL_OVERRIDE;
+
+ virtual void set_identifier(size_t id) SAL_OVERRIDE;
+
+ virtual void set_range(const char* p_ref, size_t n_ref) SAL_OVERRIDE;
+
+ virtual void set_totals_row_count(size_t row_count) SAL_OVERRIDE;
+
+ virtual void set_name(const char* p, size_t n) SAL_OVERRIDE;
+
+ virtual void set_display_name(const char* p, size_t n) SAL_OVERRIDE;
+
+ virtual void set_column_count(size_t n) SAL_OVERRIDE;
+
+ virtual void set_column_identifier(size_t id) SAL_OVERRIDE;
+ virtual void set_column_name(const char* p, size_t n) SAL_OVERRIDE;
+ virtual void set_column_totals_row_label(const char* p, size_t n) SAL_OVERRIDE;
+ virtual void set_column_totals_row_function(orcus::spreadsheet::totals_row_function_t func) SAL_OVERRIDE;
+ virtual void commit_column() SAL_OVERRIDE;
+
+ virtual void set_style_name(const char* p, size_t n) SAL_OVERRIDE;
+ virtual void set_style_show_first_column(bool b) SAL_OVERRIDE;
+ virtual void set_style_show_last_column(bool b) SAL_OVERRIDE;
+ virtual void set_style_show_row_stripes(bool b) SAL_OVERRIDE;
+ virtual void set_style_show_column_stripes(bool b) SAL_OVERRIDE;
+
+ virtual void commit() SAL_OVERRIDE;
+};
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index 04f61ee..7ab97b1 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -17,6 +17,7 @@
#include "docoptio.hxx"
#include "globstr.hrc"
#include "compiler.hxx"
+#include "dbdata.hxx"
#include <formula/token.hxx>
#include <tools/datetime.hxx>
@@ -726,4 +727,138 @@ void ScOrcusAutoFilter::commit()
SAL_INFO("sc.orcus.autofilter", "commit");
}
+ScOrcusTable::ScOrcusTable(SCTAB nTab, ScDocument& rDoc):
+ mnTab(nTab),
+ mrDoc(rDoc),
+ maAutoFilter(rDoc)
+{
+}
+
+ScOrcusTable::~ScOrcusTable()
+{
+}
+
+os::iface::import_auto_filter* ScOrcusTable::get_auto_filter()
+{
+ return &maAutoFilter;
+}
+
+void ScOrcusTable::set_identifier(size_t id)
+{
+ SAL_INFO("sc.orcus.table", "set_identifier :" << id);
+}
+
+namespace {
+
+std::ostream& operator<<(std::ostream& rStrm, const ScAddress& rAddr)
+{
+ rStrm << "Col: " << rAddr.Col() << ", Row: " << rAddr.Row() << ", Tab: " << rAddr.Tab();
+ return rStrm;
+}
+
+std::ostream& operator<<(std::ostream& rStrm, const ScRange& rRange)
+{
+ rStrm << "aStart: " << rRange.aStart << std::endl;
+ rStrm << "aEnd: " << rRange.aEnd;
+ return rStrm;
+}
+
+}
+
+void ScOrcusTable::set_range(const char* p_ref, size_t n_ref)
+{
+ OUString aRange(p_ref, n_ref, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.table", "set_range: " << aRange);
+
+ maRange.Parse(aRange);
+ SAL_INFO("sc.orcus.table", "set_range translated range: " << maRange);
+}
+
+void ScOrcusTable::set_totals_row_count(size_t row_count)
+{
+ SAL_INFO("sc.orcus.table", "set_totals_row_count: " << row_count);
+}
+
+void ScOrcusTable::set_name(const char* p, size_t n)
+{
+ maName = OUString(p, n, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.table", "set_name: " << maName);
+}
+
+void ScOrcusTable::set_display_name(const char* p, size_t n)
+{
+ OUString aName(p, n, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.table", "set_display_name: " << aName);
+}
+
+void ScOrcusTable::set_column_count(size_t n)
+{
+ SAL_INFO("sc.orcus.table", "set_column_count: " << n);
+}
+
+void ScOrcusTable::set_column_identifier(size_t id)
+{
+ SAL_INFO("sc.orcus.table", "set_column_identifier: " << id);
+}
+
+void ScOrcusTable::set_column_name(const char* p, size_t n)
+{
+ OUString aName(p, n, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.table", "set_column_name: " << aName);
+}
+
+void ScOrcusTable::set_column_totals_row_label(const char* p, size_t n)
+{
+ OUString aLabel(p, n, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.table", "set_column_totals_row_label: " << aLabel);
+}
+
+void ScOrcusTable::set_column_totals_row_function(os::totals_row_function_t )
+{
+ SAL_INFO("sc.orcus.table", "set_column_totals_row_function");
+}
+
+void ScOrcusTable::commit_column()
+{
+ SAL_INFO("sc.orcus.table", "commit_column");
+}
+
+void ScOrcusTable::set_style_name(const char* p, size_t n)
+{
+ OUString aName(p, n, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.table", "set_style_name: " << aName);
+}
+
+void ScOrcusTable::set_style_show_first_column(bool b)
+{
+ SAL_INFO("sc.orcus.table", "set_style_show_first_column: " << b);
+}
+
+void ScOrcusTable::set_style_show_last_column(bool b)
+{
+ SAL_INFO("sc.orcus.table", "set_style_show_last_column: " << b);
+}
+
+void ScOrcusTable::set_style_show_row_stripes(bool b)
+{
+ SAL_INFO("sc.orcus.table", "set_style_show_row_stripes: " << b);
+}
+
+void ScOrcusTable::set_style_show_column_stripes(bool b)
+{
+ SAL_INFO("sc.orcus.table", "set_style_show_column_stripes: " << b);
+}
+
+void ScOrcusTable::commit()
+{
+ SAL_INFO("sc.orcus.table", "commit");
+
+ ScDBData* pDBData = new ScDBData(maName, mnTab,
+ maRange.aStart.Col(), maRange.aStart.Row(),
+ maRange.aEnd.Col(), maRange.aEnd.Row());
+
+ if(!mrDoc.GetDBCollection()->getNamedDBs().insert(pDBData))
+ delete pDBData;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 27f69931fcc6062a7bd4da8c321c5422d23da603
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Aug 18 07:56:31 2014 +0200
add more orcus debug output
Change-Id: I6f9135d0532026dffbb43c3b32d32cfc811a5823
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index a8e3f67..04f61ee 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -699,24 +699,31 @@ ScOrcusAutoFilter::~ScOrcusAutoFilter()
{
}
-void ScOrcusAutoFilter::set_range(const char* /*p_ref*/, size_t /*n_ref*/)
+void ScOrcusAutoFilter::set_range(const char* p_ref, size_t n_ref)
{
+ OUString aRange(p_ref, n_ref, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.autofilter", "set_range: " << aRange);
}
-void ScOrcusAutoFilter::set_column(orcus::spreadsheet::col_t /*col*/)
+void ScOrcusAutoFilter::set_column(orcus::spreadsheet::col_t col)
{
+ SAL_INFO("sc.orcus.autofilter", "set_column: " << col);
}
-void ScOrcusAutoFilter::append_column_match_value(const char* /*p*/, size_t /*n*/)
+void ScOrcusAutoFilter::append_column_match_value(const char* p, size_t n)
{
+ OUString aString(p, n, RTL_TEXTENCODING_UTF8);
+ SAL_INFO("sc.orcus.autofilter", "append_column_match_value: " << aString);
}
void ScOrcusAutoFilter::commit_column()
{
+ SAL_INFO("sc.orcus.autofilter", "commit column");
}
void ScOrcusAutoFilter::commit()
{
+ SAL_INFO("sc.orcus.autofilter", "commit");
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit c2559c5b08bc5ce61c2d7c4d634db880204b5494
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Aug 18 01:36:43 2014 +0200
make these types future proof
Our core already supports more than 32k sheets and we should not use
sal_Int16 anymore for sheets.
Change-Id: Ifeb321cba044b255ef2e7d34da0908c27877d6ae
diff --git a/sc/source/filter/inc/worksheethelper.hxx b/sc/source/filter/inc/worksheethelper.hxx
index e11d6aa..0d61437 100644
--- a/sc/source/filter/inc/worksheethelper.hxx
+++ b/sc/source/filter/inc/worksheethelper.hxx
@@ -191,7 +191,7 @@ public:
/** Returns the type of this sheet. */
WorksheetType getSheetType() const;
/** Returns the index of the current sheet. */
- sal_Int16 getSheetIndex() const;
+ sal_Int32 getSheetIndex() const;
/** Returns the XSpreadsheet interface of the current sheet. */
const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet >&
getSheet() const;
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 40a2874..4effbef 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -219,7 +219,7 @@ public:
/** Returns the type of this sheet. */
inline WorksheetType getSheetType() const { return meSheetType; }
/** Returns the index of the current sheet. */
- inline sal_Int16 getSheetIndex() const { return maUsedArea.Sheet; }
+ inline sal_Int32 getSheetIndex() const { return maUsedArea.Sheet; }
/** Returns the XSpreadsheet interface of the current sheet. */
inline const Reference< XSpreadsheet >& getSheet() const { return mxSheet; }
@@ -1407,7 +1407,7 @@ WorksheetType WorksheetHelper::getSheetType() const
return mrSheetGlob.getSheetType();
}
-sal_Int16 WorksheetHelper::getSheetIndex() const
+sal_Int32 WorksheetHelper::getSheetIndex() const
{
return mrSheetGlob.getSheetIndex();
}
commit be3fa5caa2ef94abd56dea1a23e0ed551f360f8c
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Aug 18 07:51:05 2014 +0200
add ScOrcusSheet::get_table method
Change-Id: I2369e29e96cf33dbe263b090dee0d1100ecce8de
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx
index 633b43d..8677bbf 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -113,6 +113,7 @@ public:
ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& rFactory);
virtual orcus::spreadsheet::iface::import_auto_filter* get_auto_filter() SAL_OVERRIDE { return &maAutoFilter; }
+ virtual orcus::spreadsheet::iface::import_table* get_table() SAL_OVERRIDE;
// Orcus import interface
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) SAL_OVERRIDE;
diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx
index d897143..a8e3f67 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -214,6 +214,11 @@ void ScOrcusSheet::cellInserted()
}
}
+os::iface::import_table* ScOrcusSheet::get_table()
+{
+ return NULL;
+}
+
void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n)
{
OUString aVal(p, n, RTL_TEXTENCODING_UTF8);
commit edebac799d43b032fa63576a5bf936b470685d8d
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Wed Aug 26 14:00:09 2015 +0200
cosmetic clean-up
Change-Id: I7e6689e07873dcb85c2bf1aac0db2ecddc01fe4b
diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.cxx b/framework/source/layoutmanager/toolbarlayoutmanager.cxx
index b9f2ebc..041339e 100644
--- a/framework/source/layoutmanager/toolbarlayoutmanager.cxx
+++ b/framework/source/layoutmanager/toolbarlayoutmanager.cxx
@@ -1032,13 +1032,17 @@ void ToolbarLayoutManager::setParentWindow(
{
SolarMutexGuard aGuard;
VclPtr< ::DockingAreaWindow > pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xTopDockWindow ).get() );
- if( pWindow ) pWindow->SetAlign( WindowAlign::Top );
+ if( pWindow )
+ pWindow->SetAlign( WindowAlign::Top );
pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xBottomDockWindow ).get() );
- if( pWindow ) pWindow->SetAlign( WindowAlign::Bottom );
+ if( pWindow )
+ pWindow->SetAlign( WindowAlign::Bottom );
pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xLeftDockWindow ).get() );
- if( pWindow ) pWindow->SetAlign( WindowAlign::Left );
+ if( pWindow )
+ pWindow->SetAlign( WindowAlign::Left );
pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xRightDockWindow ).get() );
- if( pWindow ) pWindow->SetAlign( WindowAlign::Right );
+ if( pWindow )
+ pWindow->SetAlign( WindowAlign::Right );
implts_reparentToolbars();
}
else
More information about the Libreoffice-commits
mailing list