LibreOffice Module sc (master) 1
consoli.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22#include "global.hxx"
23#include "address.hxx"
24#include <vector>
25
26class ScDocument;
27class ScFunctionData;
28
29// Sequence:
30// 1) create ScConsData
31// 2) Parameter (Size/Flags)
32// 3) AddFields for all areas (only needed for bColByName or bRowByName)
33// 4) DoneFields ( " " )
34// 5) AddData for all areas
35// perhaps AddName after each area
36// 6) OutputToDocument
37
39
41{
42private:
43 struct ScReferenceEntry // without constructor !
44 {
48 };
49 typedef std::vector<ScReferenceEntry> ScReferenceList;
56 std::unique_ptr<std::unique_ptr<bool[]>[]> ppUsed;
57 std::unique_ptr<std::unique_ptr<ScFunctionData[]>[]> ppFunctionData;
58 std::unique_ptr<std::unique_ptr<ScReferenceList[]>[]> ppRefs;
59 ::std::vector<OUString> maColHeaders;
60 ::std::vector<OUString> maRowHeaders;
61 ::std::vector<OUString> maTitles;
63 std::unique_ptr<std::unique_ptr<SCSIZE[]>[]> ppTitlePos;
65 OUString aCornerText; // only for bColByName && bRowByName
66
67public:
68 ScConsData();
70
71 void SetSize( SCCOL nCols, SCROW nRows );
72 void SetFlags( ScSubTotalFunc eFunc, bool bColName, bool bRowName, bool bRef );
73
74 void InitData();
75 void DeleteData();
76
77 void AddFields( const ScDocument* pSrcDoc, SCTAB nTab,
78 SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
79 void DoneFields();
80
81 void AddData( ScDocument* pSrcDoc, SCTAB nTab,
82 SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
83 void AddName( const OUString& rName );
84
85 void OutputToDocument( ScDocument& rDestDoc, SCCOL nCol, SCROW nRow, SCTAB nTab );
86
87 void GetSize( SCCOL& rCols, SCROW& rRows ) const;
88 SCROW GetInsertCount() const;
89};
90
91/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
size_t SCSIZE
size_t typedef to be able to find places where code was changed from USHORT to size_t and is used to ...
Definition: address.hxx:44
Use structure ScDocument if a certain size is exceeded?
Definition: consoli.hxx:41
std::unique_ptr< std::unique_ptr< ScReferenceList[]>[]> ppRefs
Definition: consoli.hxx:58
std::unique_ptr< std::unique_ptr< ScFunctionData[]>[]> ppFunctionData
Definition: consoli.hxx:57
bool bColByName
Definition: consoli.hxx:52
SCROW GetInsertCount() const
Definition: consoli.cxx:369
void SetFlags(ScSubTotalFunc eFunc, bool bColName, bool bRowName, bool bRef)
Definition: consoli.cxx:148
ScSubTotalFunc eFunction
Definition: consoli.hxx:50
SCSIZE nRowCount
Definition: consoli.hxx:55
~ScConsData()
Definition: consoli.cxx:68
std::unique_ptr< std::unique_ptr< SCSIZE[]>[]> ppTitlePos
Definition: consoli.hxx:63
std::unique_ptr< std::unique_ptr< bool[]>[]> ppUsed
Definition: consoli.hxx:56
bool bRowByName
Definition: consoli.hxx:53
void OutputToDocument(ScDocument &rDestDoc, SCCOL nCol, SCROW nRow, SCTAB nTab)
Definition: consoli.cxx:391
void AddName(const OUString &rName)
Definition: consoli.cxx:206
SCSIZE nDataCount
Definition: consoli.hxx:62
void GetSize(SCCOL &rCols, SCROW &rRows) const
Definition: consoli.cxx:142
void AddFields(const ScDocument *pSrcDoc, SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: consoli.cxx:159
::std::vector< OUString > maColHeaders
Definition: consoli.hxx:59
void SetSize(SCCOL nCols, SCROW nRows)
Definition: consoli.cxx:135
OUString aCornerText
Definition: consoli.hxx:65
bool bReference
Definition: consoli.hxx:51
SCSIZE nColCount
Definition: consoli.hxx:54
bool bCornerUsed
Definition: consoli.hxx:64
void AddData(ScDocument *pSrcDoc, SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
Definition: consoli.cxx:239
void DeleteData()
Definition: consoli.cxx:72
std::vector< ScReferenceEntry > ScReferenceList
Definition: consoli.hxx:49
void InitData()
Definition: consoli.cxx:90
::std::vector< OUString > maRowHeaders
Definition: consoli.hxx:60
void DoneFields()
Definition: consoli.cxx:130
::std::vector< OUString > maTitles
Definition: consoli.hxx:61
ScConsData()
Definition: consoli.cxx:56
To calculate a single subtotal function.
Definition: subtotal.hxx:61
ScSubTotalFunc
Definition: global.hxx:860
sal_Int16 SCTAB
Definition: types.hxx:22
sal_Int16 SCCOL
Definition: types.hxx:21
sal_Int32 SCROW
Definition: types.hxx:17