/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #pragma once #include #include #include #include namespace sc { /** Type of a pivot table cell format to which a selection can be made. */ enum class FormatType { None, Data, Label }; /** Information to make a selection in the pivot table. */ struct Selection { bool bSelected = false; sal_Int32 nField = 0; std::vector nIndices; }; /** Holds cell pattern attributes and a selection information to which cells in the pivot table * the pattern should be applied. */ struct PivotTableFormat { FormatType eType = FormatType::None; bool bDataOnly = true; bool bLabelOnly = false; bool bSelected = false; bool bOutline = false; std::optional oFieldPosition = std::nullopt; std::vector aSelections; std::shared_ptr pPattern; std::vector const& getSelections() const { return aSelections; } }; /** A holder for a collection of PivotTableFormat */ class PivotTableFormats { std::vector maFormats; public: void add(PivotTableFormat const& rPivotTableFormat) { maFormats.push_back(rPivotTableFormat); } size_t size() const { return maFormats.size(); } std::vector const& getVector() const { return maFormats; } }; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */