ded4d570fd
This adds support for multiple cell format reference indices, so the same cell format is applied to multiple cells (defined by indices) so that each doesn't need to be defined by its own reference (as they are all the same anyway and only differ by single index). The solution is to create multiple format outputs for one format entry - each for a selection index, but have other data still the same. This is a bit tricky as previously it was one format output for one format entry, which is not the case anymore. Change-Id: I074ac03e7d81e26562a6a6cc395b11cfed16766d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166131 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
68 lines
1.7 KiB
C++
68 lines
1.7 KiB
C++
/* -*- 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 <memory>
|
|
#include <vector>
|
|
#include <rtl/ustring.hxx>
|
|
#include <patattr.hxx>
|
|
|
|
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<sal_uInt32> 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<sal_uInt32> oFieldPosition = std::nullopt;
|
|
|
|
std::vector<Selection> aSelections;
|
|
std::shared_ptr<ScPatternAttr> pPattern;
|
|
|
|
std::vector<Selection> const& getSelections() const { return aSelections; }
|
|
};
|
|
|
|
/** A holder for a collection of PivotTableFormat */
|
|
class PivotTableFormats
|
|
{
|
|
std::vector<PivotTableFormat> maFormats;
|
|
|
|
public:
|
|
void add(PivotTableFormat const& rPivotTableFormat) { maFormats.push_back(rPivotTableFormat); }
|
|
|
|
size_t size() const { return maFormats.size(); }
|
|
|
|
std::vector<PivotTableFormat> const& getVector() const { return maFormats; }
|
|
};
|
|
}
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|