Warning, /office/calligra/sheets/doc/NOTES.limits is written in an unsupported language. File is not indexed.

0001 Calligra Sheets column/row limits
0002 =================================
0003 
0004 Restrictions by sizeof(int); i <= 2^31-1:
0005 -----------------------------------------
0006 - PointStorage.h:
0007     QVector<T>'s index is an int; Provides access to all cells.
0008     Therefore, sizeof(col)*sizeof(row) <= sizeof(int); sizeof(col/row) = 2^16;
0009     As QVector and QRect depend on (signed) int: max(col/row) = 2^15-1
0010         -> Global.h: KS_colMax = 2^15-1, KS_rowMax = 2^15-1
0011         -> Cell::Private: restriction by bit fields; 16 bits per column/row
0012         -> Region.h:
0013             uint qHash(QPoint); column coded in first 16 bits, row in the last
0014             Can be extended by just considering the last 16 bits of the col/row,
0015             even if bigger than 16 bits. Leads to hash collisions, but works.
0016         -> Cell.h:
0017             uint qHash(Cell); column coded in first 16 bits, row in the last
0018             Can be extended by just considering the last 16 bits of the col/row,
0019             even if bigger than 16 bits. Leads to hash collisions, but works.
0020         -> Column-/RowCluster: restricted to 2^15
0021             Can be extended easily by increasing one of the cluster levels,
0022             preferably the first.
0023     The limitation could be lifted, if a clustered array is used in PointStorage
0024     and PointStorage::data(int), ::col(int), ::row(int) get ported to qint64.
0025 - QRect: based on int
0026 
0027 Minor issues, that would need adjustment:
0028 -----------------------------------------
0029 - Headers.h: The RowHeader's width should display all row numbers correctly.
0030 - Sheet: QHash<QString, QRegion> *StyleRegion; QRegion is restricted (on Windows 95/98/ME)
0031 
0032 Other restrictions:
0033 -------------------
0034 - Rect-/StyleStorage.h:
0035     Based on QRectF, which is based on qreal (double or float). Numbers range
0036     from 0..2^52 or 0..2^23, resp., with an exponent of 0, i.e. mantissa * 2^0.
0037     Other exponents lead to "integer gaps"; step size != 1 (Actually, if a
0038     number could be expressed with an other exponent without inaccurrancy, this
0039     will be done, but that does not matter here. It's possible to encode it with
0040     e=0.)
0041 
0042 Performance:
0043 ------------
0044 - Copying cell contents is done cell-by-cell. PointStorage is arranged in rows,
0045   i.e. copying of rows could be optimized, but for columns a traversal of all
0046   occupied columns is necessary.
0047   Go the same way as in Cluster and follow a two-levelled approach? Could be an
0048   option for further optimizations for copying areas, but would give headaches
0049   at the cluster boundaries.