[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kspread
From: Marijn Kruisselbrink <m.kruisselbrink () student ! tue ! nl>
Date: 2010-06-10 12:26:45
Message-ID: 20100610122645.84141AC8CF () svn ! kde ! org
[Download RAW message or body]
SVN commit 1136671 by mkruisselbrink:
Sligtly change the way a region is stored in a Value() instance. Previously empty \
rows/columns at the end of a range would be ignored and functions that were called \
would have no way of knowing that the actual array passed did contain those empty \
cells.
M +1 -1 CellStorage.cpp
M +21 -7 Value.cpp
M +1 -1 Value.h
--- trunk/koffice/kspread/CellStorage.cpp #1136670:1136671
@@ -499,7 +499,7 @@
Value CellStorage::valueRegion(const Region& region) const
{
// create a subStorage with adjusted origin
- return Value(d->valueStorage->subStorage(region, false));
+ return Value(d->valueStorage->subStorage(region, false), \
region.boundingRect().size()); }
void CellStorage::setValue(int column, int row, const Value& value)
--- trunk/koffice/kspread/Value.cpp #1136670:1136671
@@ -35,8 +35,22 @@
using namespace KSpread;
-typedef ValueStorage ValueArray;
+class ValueArray
+{
+public:
+ ValueArray() : m_size(0, 0) {}
+ ValueArray(const ValueStorage& storage, const QSize& size) : m_size(size), \
m_storage(storage) {}
+ ValueStorage& storage() { return m_storage; }
+ int rows() const { return qMax(m_size.height(), m_storage.rows()); }
+ int columns() const { return qMax(m_size.width(), m_storage.columns()); }
+
+ bool operator==(const ValueArray& a) const { return rows() == a.rows() && \
columns() == a.columns() && m_storage == a.m_storage; } +private:
+ QSize m_size;
+ ValueStorage m_storage;
+};
+
class Value::Private : public QSharedData
{
public:
@@ -338,11 +352,11 @@
}
// create an array value
-Value::Value(const ValueStorage& array)
+Value::Value(const ValueStorage& array, const QSize& size)
: d(Private::null())
{
d->type = Array;
- d->pa = new ValueArray(array);
+ d->pa = new ValueArray(array, size);
d->format = fmt_None;
}
@@ -521,21 +535,21 @@
{
if (d->type != Array) return *this;
if (!d->pa) return empty();
- return d->pa->lookup(column + 1, row + 1);
+ return d->pa->storage().lookup(column + 1, row + 1);
}
Value Value::element(unsigned index) const
{
if (d->type != Array) return *this;
if (!d->pa) return empty();
- return d->pa->data(index);
+ return d->pa->storage().data(index);
}
void Value::setElement(unsigned column, unsigned row, const Value& v)
{
if (d->type != Array) return;
if (!d->pa) d->pa = new ValueArray();
- d->pa->insert(column + 1, row + 1, v);
+ d->pa->storage().insert(column + 1, row + 1, v);
}
unsigned Value::columns() const
@@ -556,7 +570,7 @@
{
if (d->type != Array) return 1;
if (!d->pa) return 1;
- return d->pa->count();
+ return d->pa->storage().count();
}
// reference to empty value
--- trunk/koffice/kspread/Value.h #1136670:1136671
@@ -157,7 +157,7 @@
/**
* Creates an array value using the data from \p array.
*/
- explicit Value(const ValueStorage& array);
+ explicit Value(const ValueStorage& array, const QSize& size);
/**
* Creates a floating-point value from date/time.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic