8b1318324e
Continuation of https://gerrit.libreoffice.org/c/core/+/88475 Change-Id: Ic41ae7df362a796c56e95b38ccb534bbe045ead7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113497 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
362 lines
15 KiB
C++
362 lines
15 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/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <svl/poolitem.hxx>
|
|
#include <svl/intitem.hxx>
|
|
#include <svl/eitem.hxx>
|
|
#include <svx/sdangitm.hxx>
|
|
#include <o3tl/sorted_vector.hxx>
|
|
#include <o3tl/typed_flags_set.hxx>
|
|
#include "scdllapi.h"
|
|
#include "global.hxx"
|
|
|
|
// flags for cells hidden by merge
|
|
// and control for auto filter
|
|
enum class ScMF {
|
|
NONE = 0x0000,
|
|
Hor = 0x0001,
|
|
Ver = 0x0002,
|
|
Auto = 0x0004, /// autofilter arrow
|
|
Button = 0x0008, /// field button for datapilot
|
|
Scenario = 0x0010,
|
|
ButtonPopup = 0x0020, /// dp button with popup arrow
|
|
HiddenMember = 0x0040, /// dp field button with presence of hidden member
|
|
DpTable = 0x0080, /// dp table output
|
|
All = 0x00FF
|
|
};
|
|
namespace o3tl {
|
|
template<> struct typed_flags<ScMF> : is_typed_flags<ScMF, 0xff> {};
|
|
}
|
|
|
|
class EditTextObject;
|
|
namespace editeng { class SvxBorderLine; }
|
|
|
|
bool SC_DLLPUBLIC ScHasPriority( const ::editeng::SvxBorderLine* pThis, const ::editeng::SvxBorderLine* pOther );
|
|
|
|
class SC_DLLPUBLIC ScMergeAttr final : public SfxPoolItem
|
|
{
|
|
SCCOL nColMerge;
|
|
SCROW nRowMerge;
|
|
public:
|
|
ScMergeAttr();
|
|
ScMergeAttr( SCCOL nCol, SCROW nRow );
|
|
ScMergeAttr( const ScMergeAttr& );
|
|
virtual ~ScMergeAttr() override;
|
|
|
|
virtual bool operator==( const SfxPoolItem& ) const override;
|
|
virtual ScMergeAttr* Clone( SfxItemPool *pPool = nullptr ) const override;
|
|
|
|
SCCOL GetColMerge() const {return nColMerge; }
|
|
SCROW GetRowMerge() const {return nRowMerge; }
|
|
|
|
bool IsMerged() const { return nColMerge>1 || nRowMerge>1; }
|
|
|
|
ScMergeAttr& operator=(const ScMergeAttr& rMerge)
|
|
{
|
|
nColMerge = rMerge.nColMerge;
|
|
nRowMerge = rMerge.nRowMerge;
|
|
return *this;
|
|
}
|
|
|
|
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
|
|
};
|
|
|
|
class SC_DLLPUBLIC ScMergeFlagAttr final : public SfxInt16Item
|
|
{
|
|
public:
|
|
ScMergeFlagAttr();
|
|
ScMergeFlagAttr(ScMF nFlags);
|
|
virtual ~ScMergeFlagAttr() override;
|
|
|
|
ScMergeFlagAttr(ScMergeFlagAttr const &) = default;
|
|
ScMergeFlagAttr(ScMergeFlagAttr &&) = default;
|
|
ScMergeFlagAttr & operator =(ScMergeFlagAttr const &) = delete; // due to SfxInt16Item
|
|
ScMergeFlagAttr & operator =(ScMergeFlagAttr &&) = delete; // due to SfxInt16Item
|
|
|
|
ScMergeFlagAttr* Clone(SfxItemPool * pPool = nullptr) const override;
|
|
|
|
ScMF GetValue() const { return static_cast<ScMF>(SfxInt16Item::GetValue()); }
|
|
|
|
bool IsHorOverlapped() const { return bool( GetValue() & ScMF::Hor ); }
|
|
bool IsVerOverlapped() const { return bool( GetValue() & ScMF::Ver ); }
|
|
bool IsOverlapped() const { return bool( GetValue() & ( ScMF::Hor | ScMF::Ver ) ); }
|
|
|
|
bool HasAutoFilter() const { return bool( GetValue() & ScMF::Auto ); }
|
|
|
|
bool IsScenario() const { return bool( GetValue() & ScMF::Scenario ); }
|
|
|
|
bool HasPivotButton() const;
|
|
bool HasPivotPopupButton() const;
|
|
|
|
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
|
|
};
|
|
|
|
class SC_DLLPUBLIC ScProtectionAttr final : public SfxPoolItem
|
|
{
|
|
bool bProtection; ///< protect cell
|
|
bool bHideFormula; ///< hide formula
|
|
bool bHideCell; ///< hide cell
|
|
bool bHidePrint; ///< don't print cell
|
|
public:
|
|
static SfxPoolItem* CreateDefault();
|
|
ScProtectionAttr();
|
|
ScProtectionAttr( bool bProtect,
|
|
bool bHFormula = false,
|
|
bool bHCell = false,
|
|
bool bHPrint = false);
|
|
ScProtectionAttr( const ScProtectionAttr& );
|
|
virtual ~ScProtectionAttr() override;
|
|
|
|
OUString GetValueText() const;
|
|
virtual bool GetPresentation(
|
|
SfxItemPresentation ePres,
|
|
MapUnit eCoreMetric,
|
|
MapUnit ePresMetric,
|
|
OUString& rText,
|
|
const IntlWrapper& rIntl ) const override;
|
|
|
|
virtual bool operator==( const SfxPoolItem& ) const override;
|
|
virtual ScProtectionAttr* Clone( SfxItemPool *pPool = nullptr ) const override;
|
|
|
|
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
|
|
virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
|
|
|
|
bool GetProtection() const { return bProtection; }
|
|
void SetProtection( bool bProtect);
|
|
bool GetHideFormula() const { return bHideFormula; }
|
|
void SetHideFormula( bool bHFormula);
|
|
bool GetHideCell() const { return bHideCell; }
|
|
void SetHideCell( bool bHCell);
|
|
bool GetHidePrint() const { return bHidePrint; }
|
|
void SetHidePrint( bool bHPrint);
|
|
ScProtectionAttr& operator=(const ScProtectionAttr& rProtection)
|
|
{
|
|
bProtection = rProtection.bProtection;
|
|
bHideFormula = rProtection.bHideFormula;
|
|
bHideCell = rProtection.bHideCell;
|
|
bHidePrint = rProtection.bHidePrint;
|
|
return *this;
|
|
}
|
|
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
|
|
};
|
|
|
|
// page format item: contents of header and footer
|
|
|
|
#define SC_HF_LEFTAREA 1
|
|
#define SC_HF_CENTERAREA 2
|
|
#define SC_HF_RIGHTAREA 3
|
|
|
|
class SC_DLLPUBLIC ScPageHFItem final : public SfxPoolItem
|
|
{
|
|
std::unique_ptr<EditTextObject> pLeftArea;
|
|
std::unique_ptr<EditTextObject> pCenterArea;
|
|
std::unique_ptr<EditTextObject> pRightArea;
|
|
|
|
public:
|
|
ScPageHFItem( sal_uInt16 nWhich );
|
|
ScPageHFItem( const ScPageHFItem& rItem );
|
|
virtual ~ScPageHFItem() override;
|
|
|
|
virtual bool operator==( const SfxPoolItem& ) const override;
|
|
virtual ScPageHFItem* Clone( SfxItemPool *pPool = nullptr ) const override;
|
|
|
|
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
|
|
virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
|
|
|
|
const EditTextObject* GetLeftArea() const { return pLeftArea.get(); }
|
|
const EditTextObject* GetCenterArea() const { return pCenterArea.get(); }
|
|
const EditTextObject* GetRightArea() const { return pRightArea.get(); }
|
|
|
|
void SetLeftArea( const EditTextObject& rNew );
|
|
void SetCenterArea( const EditTextObject& rNew );
|
|
void SetRightArea( const EditTextObject& rNew );
|
|
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
|
|
};
|
|
|
|
// page format item: contents of header and footer
|
|
|
|
class SC_DLLPUBLIC ScViewObjectModeItem final : public SfxEnumItem<ScVObjMode>
|
|
{
|
|
public:
|
|
ScViewObjectModeItem( sal_uInt16 nWhich );
|
|
ScViewObjectModeItem( sal_uInt16 nWhich, ScVObjMode eMode );
|
|
virtual ~ScViewObjectModeItem() override;
|
|
|
|
ScViewObjectModeItem(ScViewObjectModeItem const &) = default;
|
|
ScViewObjectModeItem(ScViewObjectModeItem &&) = default;
|
|
ScViewObjectModeItem & operator =(ScViewObjectModeItem const &) = delete; // due to SfxEnumItem<ScVObjMode>
|
|
ScViewObjectModeItem & operator =(ScViewObjectModeItem &&) = delete; // due to SfxEnumItem<ScVObjMode>
|
|
|
|
virtual sal_uInt16 GetValueCount() const override;
|
|
virtual ScViewObjectModeItem* Clone( SfxItemPool *pPool = nullptr ) const override;
|
|
virtual bool GetPresentation( SfxItemPresentation ePres,
|
|
MapUnit eCoreMetric,
|
|
MapUnit ePresMetric,
|
|
OUString& rText,
|
|
const IntlWrapper& rIntl ) const override;
|
|
};
|
|
|
|
/** Member ID for "page scale to width" value in QueryValue() and PutValue(). */
|
|
const sal_uInt8 SC_MID_PAGE_SCALETO_WIDTH = 1;
|
|
/** Member ID for "page scale to height" value in QueryValue() and PutValue(). */
|
|
const sal_uInt8 SC_MID_PAGE_SCALETO_HEIGHT = 2;
|
|
|
|
/** Contains the "scale to width/height" attribute in page styles. */
|
|
class SC_DLLPUBLIC ScPageScaleToItem final : public SfxPoolItem
|
|
{
|
|
public:
|
|
/** Default c'tor sets the width and height to 0. */
|
|
explicit ScPageScaleToItem();
|
|
explicit ScPageScaleToItem( sal_uInt16 nWidth, sal_uInt16 nHeight );
|
|
|
|
virtual ~ScPageScaleToItem() override;
|
|
|
|
ScPageScaleToItem(ScPageScaleToItem const &) = default;
|
|
ScPageScaleToItem(ScPageScaleToItem &&) = default;
|
|
ScPageScaleToItem & operator =(ScPageScaleToItem const &) = delete; // due to SfxPoolItem
|
|
ScPageScaleToItem & operator =(ScPageScaleToItem &&) = delete; // due to SfxPoolItem
|
|
|
|
virtual ScPageScaleToItem* Clone( SfxItemPool* = nullptr ) const override;
|
|
|
|
virtual bool operator==( const SfxPoolItem& rCmp ) const override;
|
|
|
|
sal_uInt16 GetWidth() const { return mnWidth; }
|
|
sal_uInt16 GetHeight() const { return mnHeight; }
|
|
bool IsValid() const { return mnWidth || mnHeight; }
|
|
|
|
void SetWidth( sal_uInt16 nWidth ) { mnWidth = nWidth; }
|
|
void SetHeight( sal_uInt16 nHeight ) { mnHeight = nHeight; }
|
|
void Set( sal_uInt16 nWidth, sal_uInt16 nHeight )
|
|
{ mnWidth = nWidth; mnHeight = nHeight; }
|
|
|
|
virtual bool GetPresentation( SfxItemPresentation ePresentation,
|
|
MapUnit, MapUnit,
|
|
OUString& rText,
|
|
const IntlWrapper& ) const override;
|
|
|
|
virtual bool QueryValue( css::uno::Any& rAny, sal_uInt8 nMemberId = 0 ) const override;
|
|
virtual bool PutValue( const css::uno::Any& rAny, sal_uInt8 nMemberId ) override;
|
|
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
|
|
|
|
private:
|
|
sal_uInt16 mnWidth;
|
|
sal_uInt16 mnHeight;
|
|
};
|
|
|
|
typedef o3tl::sorted_vector<sal_uInt32> ScCondFormatIndexes;
|
|
|
|
class ScCondFormatItem final : public SfxPoolItem
|
|
{
|
|
public:
|
|
explicit ScCondFormatItem();
|
|
explicit ScCondFormatItem(sal_uInt32 nIndex);
|
|
explicit ScCondFormatItem(const ScCondFormatIndexes& );
|
|
explicit ScCondFormatItem(ScCondFormatIndexes&&) noexcept;
|
|
|
|
virtual ~ScCondFormatItem() override;
|
|
|
|
virtual bool operator==(const SfxPoolItem& rCmp ) const override;
|
|
virtual bool operator<(const SfxPoolItem& rCmp) const override;
|
|
virtual bool IsSortable() const override { return true; }
|
|
virtual ScCondFormatItem* Clone( SfxItemPool* = nullptr ) const override;
|
|
|
|
const ScCondFormatIndexes& GetCondFormatData() const { return maIndex;}
|
|
|
|
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
|
|
|
|
private:
|
|
ScCondFormatIndexes maIndex;
|
|
};
|
|
|
|
class SC_DLLPUBLIC ScRotateValueItem final : public SdrAngleItem
|
|
{
|
|
public:
|
|
ScRotateValueItem(Degree100 nAngle);
|
|
virtual ScRotateValueItem* Clone(SfxItemPool* pPool=nullptr) const override;
|
|
|
|
virtual bool GetPresentation( SfxItemPresentation ePresentation,
|
|
MapUnit, MapUnit,
|
|
OUString& rText,
|
|
const IntlWrapper& rIntl) const override;
|
|
};
|
|
|
|
class SC_DLLPUBLIC ScShrinkToFitCell final : public SfxBoolItem
|
|
{
|
|
public:
|
|
ScShrinkToFitCell(bool bShrink = false);
|
|
virtual ScShrinkToFitCell* Clone(SfxItemPool *pPool = nullptr) const override;
|
|
virtual bool GetPresentation(SfxItemPresentation ePres,
|
|
MapUnit eCoreMetric,
|
|
MapUnit ePresMetric,
|
|
OUString &rText,
|
|
const IntlWrapper& rIntl) const override;
|
|
};
|
|
|
|
class SC_DLLPUBLIC ScVerticalStackCell final : public SfxBoolItem
|
|
{
|
|
public:
|
|
ScVerticalStackCell(bool bStack = false);
|
|
virtual ScVerticalStackCell* Clone(SfxItemPool *pPool = nullptr) const override;
|
|
virtual bool GetPresentation(SfxItemPresentation ePres,
|
|
MapUnit eCoreMetric,
|
|
MapUnit ePresMetric,
|
|
OUString &rText,
|
|
const IntlWrapper& rIntl) const override;
|
|
};
|
|
|
|
class SC_DLLPUBLIC ScLineBreakCell final : public SfxBoolItem
|
|
{
|
|
public:
|
|
ScLineBreakCell(bool bLineBreak = false);
|
|
virtual ScLineBreakCell* Clone(SfxItemPool *pPool = nullptr) const override;
|
|
virtual bool GetPresentation(SfxItemPresentation ePres,
|
|
MapUnit eCoreMetric,
|
|
MapUnit ePresMetric,
|
|
OUString &rText,
|
|
const IntlWrapper& rIntl) const override;
|
|
};
|
|
|
|
class ScHyphenateCell final : public SfxBoolItem
|
|
{
|
|
public:
|
|
ScHyphenateCell(bool bHyphenate= false);
|
|
virtual ScHyphenateCell* Clone(SfxItemPool *pPool = nullptr) const override;
|
|
virtual bool GetPresentation(SfxItemPresentation ePres,
|
|
MapUnit eCoreMetric,
|
|
MapUnit ePresMetric,
|
|
OUString &rText,
|
|
const IntlWrapper& rIntl) const override;
|
|
};
|
|
|
|
class SC_DLLPUBLIC ScIndentItem final : public SfxUInt16Item
|
|
{
|
|
public:
|
|
ScIndentItem(sal_uInt16 nIndent = 0);
|
|
virtual ScIndentItem* Clone(SfxItemPool* pPool=nullptr) const override;
|
|
|
|
virtual bool GetPresentation( SfxItemPresentation ePresentation,
|
|
MapUnit, MapUnit,
|
|
OUString& rText,
|
|
const IntlWrapper& rIntl) const override;
|
|
};
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|