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