summaryrefslogtreecommitdiffstats
path: root/sc/inc/attrib.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/attrib.hxx')
-rw-r--r--sc/inc/attrib.hxx362
1 files changed, 362 insertions, 0 deletions
diff --git a/sc/inc/attrib.hxx b/sc/inc/attrib.hxx
new file mode 100644
index 000000000..92a0c3865
--- /dev/null
+++ b/sc/inc/attrib.hxx
@@ -0,0 +1,362 @@
+/* -*- 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: */