1*38d50f7bSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*38d50f7bSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*38d50f7bSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*38d50f7bSAndrew Rist * distributed with this work for additional information 6*38d50f7bSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*38d50f7bSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*38d50f7bSAndrew Rist * "License"); you may not use this file except in compliance 9*38d50f7bSAndrew Rist * with the License. You may obtain a copy of the License at 10*38d50f7bSAndrew Rist * 11*38d50f7bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*38d50f7bSAndrew Rist * 13*38d50f7bSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*38d50f7bSAndrew Rist * software distributed under the License is distributed on an 15*38d50f7bSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*38d50f7bSAndrew Rist * KIND, either express or implied. See the License for the 17*38d50f7bSAndrew Rist * specific language governing permissions and limitations 18*38d50f7bSAndrew Rist * under the License. 19*38d50f7bSAndrew Rist * 20*38d50f7bSAndrew Rist *************************************************************/ 21*38d50f7bSAndrew Rist 22*38d50f7bSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef SC_CONSOLI_HXX 25cdf0e10cSrcweir #define SC_CONSOLI_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "global.hxx" 28cdf0e10cSrcweir #include "address.hxx" 29cdf0e10cSrcweir 30cdf0e10cSrcweir class ScDocument; 31cdf0e10cSrcweir 32cdf0e10cSrcweir // ----------------------------------------------------------------------- 33cdf0e10cSrcweir 34cdf0e10cSrcweir struct ScReferenceEntry // ohne Constructor ! 35cdf0e10cSrcweir { 36cdf0e10cSrcweir SCCOL nCol; 37cdf0e10cSrcweir SCROW nRow; 38cdf0e10cSrcweir SCTAB nTab; 39cdf0e10cSrcweir }; 40cdf0e10cSrcweir 41cdf0e10cSrcweir 42cdf0e10cSrcweir //! Delta-Wert fuer Daten benutzen? 43cdf0e10cSrcweir 44cdf0e10cSrcweir class ScReferenceList // ohne Constructor ! 45cdf0e10cSrcweir { 46cdf0e10cSrcweir private: 47cdf0e10cSrcweir SCSIZE nCount; 48cdf0e10cSrcweir SCSIZE nFullSize; // inkl. Fuell-Eintraege 49cdf0e10cSrcweir ScReferenceEntry* pData; 50cdf0e10cSrcweir 51cdf0e10cSrcweir public: Init()52cdf0e10cSrcweir void Init() { nCount=0; nFullSize=0; pData=NULL; } Clear()53cdf0e10cSrcweir void Clear() { delete[] pData; } 54cdf0e10cSrcweir GetCount()55cdf0e10cSrcweir SCSIZE GetCount() { return nCount; } GetEntry(SCSIZE nPos)56cdf0e10cSrcweir const ScReferenceEntry& GetEntry( SCSIZE nPos ) { return pData[nPos]; } SetFullSize(SCSIZE nNew)57cdf0e10cSrcweir void SetFullSize( SCSIZE nNew ) { nFullSize = nNew; } 58cdf0e10cSrcweir 59cdf0e10cSrcweir void AddEntry( SCCOL nCol, SCROW nRow, SCTAB nTab ); 60cdf0e10cSrcweir }; 61cdf0e10cSrcweir 62cdf0e10cSrcweir // ----------------------------------------------------------------------- 63cdf0e10cSrcweir 64cdf0e10cSrcweir 65cdf0e10cSrcweir // 66cdf0e10cSrcweir // Reihenfolge: 67cdf0e10cSrcweir // 1) ScConsData anlegen 68cdf0e10cSrcweir // 2) Parameter (Size/Flags) 69cdf0e10cSrcweir // 3) AddFields fuer alle Bereiche (nur noetig bei bColByName oder bRowByName) 70cdf0e10cSrcweir // 4) DoneFields ( " " ) 71cdf0e10cSrcweir // 5) AddData fuer alle Bereiche 72cdf0e10cSrcweir // evtl. AddName nach jedem Bereich 73cdf0e10cSrcweir // 6) OutputToDocument 74cdf0e10cSrcweir // 75cdf0e10cSrcweir 76cdf0e10cSrcweir //! ab bestimmter Groesse ScDocument Struktur benutzen? 77cdf0e10cSrcweir 78cdf0e10cSrcweir 79cdf0e10cSrcweir class ScConsData 80cdf0e10cSrcweir { 81cdf0e10cSrcweir private: 82cdf0e10cSrcweir ScSubTotalFunc eFunction; 83cdf0e10cSrcweir sal_Bool bReference; 84cdf0e10cSrcweir sal_Bool bColByName; 85cdf0e10cSrcweir sal_Bool bRowByName; 86cdf0e10cSrcweir sal_Bool bSubTitles; 87cdf0e10cSrcweir SCSIZE nColCount; 88cdf0e10cSrcweir SCSIZE nRowCount; 89cdf0e10cSrcweir sal_Bool** ppUsed; 90cdf0e10cSrcweir double** ppSum; 91cdf0e10cSrcweir double** ppCount; 92cdf0e10cSrcweir double** ppSumSqr; 93cdf0e10cSrcweir ScReferenceList** ppRefs; 94cdf0e10cSrcweir String** ppColHeaders; 95cdf0e10cSrcweir String** ppRowHeaders; 96cdf0e10cSrcweir SCSIZE nDataCount; 97cdf0e10cSrcweir SCSIZE nTitleCount; 98cdf0e10cSrcweir String** ppTitles; 99cdf0e10cSrcweir SCSIZE** ppTitlePos; 100cdf0e10cSrcweir sal_Bool bCornerUsed; 101cdf0e10cSrcweir String aCornerText; // nur bei bColByName && bRowByName 102cdf0e10cSrcweir 103cdf0e10cSrcweir public: 104cdf0e10cSrcweir ScConsData(); 105cdf0e10cSrcweir ~ScConsData(); 106cdf0e10cSrcweir 107cdf0e10cSrcweir void SetSize( SCCOL nCols, SCROW nRows ); 108cdf0e10cSrcweir void SetFlags( ScSubTotalFunc eFunc, sal_Bool bColName, sal_Bool bRowName, sal_Bool bRef ); 109cdf0e10cSrcweir 110cdf0e10cSrcweir void InitData(sal_Bool bDelete=sal_True); 111cdf0e10cSrcweir void DeleteData(); 112cdf0e10cSrcweir 113cdf0e10cSrcweir void AddFields( ScDocument* pSrcDoc, SCTAB nTab, 114cdf0e10cSrcweir SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ); 115cdf0e10cSrcweir void DoneFields(); 116cdf0e10cSrcweir 117cdf0e10cSrcweir void AddData( ScDocument* pSrcDoc, SCTAB nTab, 118cdf0e10cSrcweir SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ); 119cdf0e10cSrcweir void AddName( const String& rName ); 120cdf0e10cSrcweir 121cdf0e10cSrcweir void OutputToDocument( ScDocument* pDestDoc, SCCOL nCol, SCROW nRow, SCTAB nTab ); 122cdf0e10cSrcweir 123cdf0e10cSrcweir void GetSize( SCCOL& rCols, SCROW& rRows ) const; 124cdf0e10cSrcweir SCROW GetInsertCount() const; 125cdf0e10cSrcweir }; 126cdf0e10cSrcweir 127cdf0e10cSrcweir 128cdf0e10cSrcweir #endif 129cdf0e10cSrcweir 130cdf0e10cSrcweir 131