1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
22 Strictly adhere to the following sequence when creating a pivot table:
24 pPivot->SetColFields(aColArr, aColCount)
25 pPivot->SetRowFields(aRowArr, aRowCount)
26 pPivot->SetDataFields(aDataArr, aDataCount)
27 if (pPivot->CreateData())
33 Make sure that either ColArr or RowArr contains a PivotDataField entry.
41 #include "address.hxx"
42 #include "dpglobal.hxx"
43 #include "dpmacros.hxx"
46 #include <boost/ptr_container/ptr_vector.hpp>
48 #define PIVOT_DATA_FIELD (MAXCOLCOUNT)
49 #include <com/sun/star/uno/Sequence.hxx>
50 #include <com/sun/star/sheet/DataPilotFieldReference.hpp>
51 #include <com/sun/star/sheet/DataPilotFieldSortInfo.hpp>
52 #include <com/sun/star/sheet/DataPilotFieldLayoutInfo.hpp>
53 #include <com/sun/star/sheet/DataPilotFieldAutoShowInfo.hpp>
58 ::rtl::OUString maName
; /// Original name of the dimension.
59 ::rtl::OUString maLayoutName
; /// Layout name (display name)
61 explicit ScDPName(const ::rtl::OUString
& rName
, const ::rtl::OUString
& rLayoutName
);
64 // ============================================================================
68 rtl::OUString maName
; /// Original name of the dimension.
69 rtl::OUString maLayoutName
; /// Layout name (display name)
70 rtl::OUString maSubtotalName
;
71 SCCOL mnCol
; /// 0-based field index (not the source column index)
72 long mnOriginalDim
; /// original dimension index (>= 0 for duplicated dimension)
73 sal_uInt16 mnFuncMask
; /// Page/Column/Row subtotal function.
74 sal_Int32 mnUsedHier
; /// Used hierarchy.
75 sal_Int32 mnFlags
; /// Flags from the DataPilotSource dimension
76 bool mbShowAll
:1; /// true = Show all (also empty) results.
77 bool mbIsValue
:1; /// true = Sum or count in data field.
82 ::rtl::OUString maName
;
83 ::rtl::OUString maLayoutName
;
90 * return the name that should be displayed in the dp dialogs i.e.
91 * when the layout name is present, use it, or else use the original
94 ::rtl::OUString SC_DLLPUBLIC
getDisplayName() const;
96 ::std::vector
<Member
> maMembers
;
97 ::com::sun::star::uno::Sequence
< ::rtl::OUString
> maHiers
; /// Hierarchies.
98 ::com::sun::star::sheet::DataPilotFieldSortInfo maSortInfo
; /// Sorting info.
99 ::com::sun::star::sheet::DataPilotFieldLayoutInfo maLayoutInfo
; /// Layout info.
100 ::com::sun::star::sheet::DataPilotFieldAutoShowInfo maShowInfo
; /// AutoShow info.
105 * return the name that should be displayed in the dp dialogs i.e. when
106 * the layout name is present, use it, or else use the original name.
108 ::rtl::OUString SC_DLLPUBLIC
getDisplayName() const;
111 typedef boost::ptr_vector
<ScDPLabelData
> ScDPLabelDataVector
;
115 SCCOL nCol
; /// 0-based dimension index (not source column index)
116 long mnOriginalDim
; /// >= 0 for duplicated field.
117 sal_uInt16 nFuncMask
;
118 sal_uInt8 mnDupCount
;
119 ::com::sun::star::sheet::DataPilotFieldReference maFieldRef
;
121 explicit ScPivotField( SCCOL nNewCol
= 0, sal_uInt16 nNewFuncMask
= PIVOT_FUNC_NONE
);
122 ScPivotField( const ScPivotField
& r
);
124 long getOriginalDim() const;
125 bool operator==( const ScPivotField
& r
) const;
128 typedef ::std::vector
< ScPivotField
> ScPivotFieldVector
;
132 SCCOL nCol
; // Cursor Position /
133 SCROW nRow
; // or start of destination area
135 ScDPLabelDataVector maLabelArray
;
136 ScPivotFieldVector maPageFields
;
137 ScPivotFieldVector maColFields
;
138 ScPivotFieldVector maRowFields
;
139 ScPivotFieldVector maDataFields
;
140 bool bIgnoreEmptyRows
;
141 bool bDetectCategories
;
146 ScPivotParam( const ScPivotParam
& r
);
149 ScPivotParam
& operator= ( const ScPivotParam
& r
);
150 bool operator== ( const ScPivotParam
& r
) const;
151 void SetLabelData(const ScDPLabelDataVector
& r
);
154 struct ScPivotFuncData
158 sal_uInt16 mnFuncMask
;
159 sal_uInt8 mnDupCount
;
160 ::com::sun::star::sheet::DataPilotFieldReference maFieldRef
;
162 explicit ScPivotFuncData( SCCOL nCol
, sal_uInt16 nFuncMask
);
163 explicit ScPivotFuncData(
164 SCCOL nCol
, long nOriginalDim
, sal_uInt16 nFuncMask
, sal_uInt8 nDupCount
,
165 const ::com::sun::star::sheet::DataPilotFieldReference
& rFieldRef
);
167 bool operator== (const ScPivotFuncData
& r
) const;
169 #if DEBUG_PIVOT_TABLE
174 typedef ::std::vector
< ScPivotFuncData
> ScPivotFuncDataVector
;
175 typedef std::vector
<ScDPName
> ScDPNameVec
;
179 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */