[Libreoffice-commits] .: Branch 'feature/smaller-base-cell' - sc/inc sc/Library_sc.mk sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Nov 7 11:24:41 PST 2012


 sc/Library_sc.mk                       |    1 
 sc/inc/cell.hxx                        |    1 
 sc/inc/celltextwidths.hxx              |   37 +++++++++++++++++++++++++++++++++
 sc/source/core/data/cell.cxx           |    1 
 sc/source/core/data/celltextwidths.cxx |   35 +++++++++++++++++++++++++++++++
 sc/source/core/data/column.cxx         |   18 ++--------------
 sc/source/core/data/documen8.cxx       |    1 
 sc/source/core/data/table1.cxx         |    1 
 sc/source/core/data/table5.cxx         |    2 +
 9 files changed, 81 insertions(+), 16 deletions(-)

New commits:
commit c3ff0f589a5cd22bda09a8e90e97f3da8810ad3a
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Wed Nov 7 09:30:48 2012 -0500

    Let's use a separate class to manage storage of cell text widths.
    
    Change-Id: I5c823dea4d2e1fd17fae466be26ebff2aa24ecb6

diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 4ac291e..bef4866 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -93,6 +93,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
 	sc/source/core/data/bcaslot \
 	sc/source/core/data/cell \
 	sc/source/core/data/cell2 \
+	sc/source/core/data/celltextwidths \
 	sc/source/core/data/clipparam \
 	sc/source/core/data/column \
 	sc/source/core/data/column2 \
diff --git a/sc/inc/cell.hxx b/sc/inc/cell.hxx
index 79e99db..3ec6084 100644
--- a/sc/inc/cell.hxx
+++ b/sc/inc/cell.hxx
@@ -47,7 +47,6 @@
 #include "scdllapi.h"
 
 #define USE_MEMPOOL
-#define TEXTWIDTH_DIRTY     0xffff
 
 // in addition to SCRIPTTYPE_... flags from scripttypeitem.hxx:
 // set (in nScriptType) if type has not been determined yet
diff --git a/sc/inc/celltextwidths.hxx b/sc/inc/celltextwidths.hxx
new file mode 100644
index 0000000..ef4499b
--- /dev/null
+++ b/sc/inc/celltextwidths.hxx
@@ -0,0 +1,37 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef __SC_CELLTEXTWIDTHS_HXX__
+#define __SC_CELLTEXTWIDTHS_HXX__
+
+#include "address.hxx"
+#include "sal/types.h"
+
+#include <mdds/multi_type_vector.hpp>
+#include <mdds/multi_type_vector_trait.hpp>
+
+class ScCellTextWidths
+{
+    typedef mdds::multi_type_vector<mdds::mtv::element_block_func> StoreType;
+    StoreType maStore;
+
+public:
+    static sal_uInt16 Dirty;
+
+    ScCellTextWidths();
+
+    sal_uInt16 get(SCROW nRow) const;
+    void set(SCROW nRow, sal_uInt16 nWidth);
+};
+
+#define TEXTWIDTH_DIRTY ScCellTextWidths::Dirty
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/cell.cxx b/sc/source/core/data/cell.cxx
index e27339e..c4325a5 100644
--- a/sc/source/core/data/cell.cxx
+++ b/sc/source/core/data/cell.cxx
@@ -49,6 +49,7 @@
 #include "externalrefmgr.hxx"
 #include "macromgr.hxx"
 #include "dbdata.hxx"
+#include "celltextwidths.hxx"
 
 #include <editeng/editobj.hxx>
 #include <svl/intitem.hxx>
diff --git a/sc/source/core/data/celltextwidths.cxx b/sc/source/core/data/celltextwidths.cxx
new file mode 100644
index 0000000..39240d3
--- /dev/null
+++ b/sc/source/core/data/celltextwidths.cxx
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "celltextwidths.hxx"
+
+sal_uInt16 ScCellTextWidths::Dirty = 0xFFFF;
+
+ScCellTextWidths::ScCellTextWidths() :
+    maStore(MAXROWCOUNT) {}
+
+sal_uInt16 ScCellTextWidths::get(SCROW nRow) const
+{
+    switch (maStore.get_type(nRow))
+    {
+        case mdds::mtv::element_type_ushort:
+            return maStore.get<unsigned short>(nRow);
+        default:
+            ;
+    }
+    return Dirty;
+}
+
+void ScCellTextWidths::set(SCROW nRow, sal_uInt16 nWidth)
+{
+    // We only use unsigned short type in this container.
+    maStore.set(nRow, static_cast<unsigned short>(nWidth));
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 8c9c1c2..0323eaf 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -38,6 +38,7 @@
 #include "markdata.hxx"
 #include "detfunc.hxx"          // for Notes in Sort/Swap
 #include "postit.hxx"
+#include "celltextwidths.hxx"
 
 #include <svl/poolcach.hxx>
 #include <svl/zforlist.hxx>
@@ -45,8 +46,6 @@
 
 #include <cstring>
 #include <map>
-#include <mdds/multi_type_vector.hpp>
-#include <mdds/multi_type_vector_trait.hpp>
 
 using ::editeng::SvxBorderLine;
 using namespace formula;
@@ -66,11 +65,7 @@ inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
 
 struct ScColumnImpl
 {
-    typedef mdds::multi_type_vector<mdds::mtv::element_block_func> TextWidthType;
-
-    TextWidthType maTextWidths;
-
-    ScColumnImpl() : maTextWidths(MAXROWCOUNT) {}
+    ScCellTextWidths maTextWidths;
 };
 
 ScNeededSizeOptions::ScNeededSizeOptions() :
@@ -2167,14 +2162,7 @@ bool ScColumn::SearchStyleRange(
 
 sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
 {
-    switch (mpImpl->maTextWidths.get_type(nRow))
-    {
-        case mdds::mtv::element_type_ushort:
-            return mpImpl->maTextWidths.get<unsigned short>(nRow);
-        default:
-            ;
-    }
-    return TEXTWIDTH_DIRTY;
+    return mpImpl->maTextWidths.get(nRow);
 }
 
 void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx
index 4286cfd..ca97f9e 100644
--- a/sc/source/core/data/documen8.cxx
+++ b/sc/source/core/data/documen8.cxx
@@ -94,6 +94,7 @@
 #include "dpobject.hxx"
 #include "docuno.hxx"
 #include "scresid.hxx"
+#include "celltextwidths.hxx"
 
 #define GET_SCALEVALUE(set,id)  ((const SfxUInt16Item&)(set.Get( id ))).GetValue()
 
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index 3d28f54..53b3c23 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -53,6 +53,7 @@
 #include "dbdata.hxx"
 #include "colorscale.hxx"
 #include "conditio.hxx"
+#include "celltextwidths.hxx"
 
 #include <vector>
 
diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx
index 3e244c2..8f7ec5e 100644
--- a/sc/source/core/data/table5.cxx
+++ b/sc/source/core/data/table5.cxx
@@ -45,6 +45,8 @@
 #include "tabprotection.hxx"
 #include "globstr.hrc"
 #include "segmenttree.hxx"
+#include "celltextwidths.hxx"
+
 #include <com/sun/star/sheet/TablePageBreakData.hpp>
 
 #include <algorithm>


More information about the Libreoffice-commits mailing list