summaryrefslogtreecommitdiffstats
path: root/sc/inc/fillinfo.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/fillinfo.hxx')
-rw-r--r--sc/inc/fillinfo.hxx208
1 files changed, 208 insertions, 0 deletions
diff --git a/sc/inc/fillinfo.hxx b/sc/inc/fillinfo.hxx
new file mode 100644
index 000000000..0e17f179c
--- /dev/null
+++ b/sc/inc/fillinfo.hxx
@@ -0,0 +1,208 @@
+/* -*- 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 .
+ */
+
+#ifndef INCLUDED_SC_INC_FILLINFO_HXX
+#define INCLUDED_SC_INC_FILLINFO_HXX
+
+#include <sal/config.h>
+
+#include <memory>
+
+#include <svx/framelinkarray.hxx>
+#include "colorscale.hxx"
+#include "cellvalue.hxx"
+#include <o3tl/typed_flags_set.hxx>
+#include <optional>
+
+class SfxItemSet;
+class SvxBrushItem;
+class SvxBoxItem;
+class SvxLineItem;
+class SvxShadowItem;
+
+class ScPatternAttr;
+
+enum class ScRotateDir : sal_uInt8 {
+ NONE, Standard, Left, Right, Center
+};
+
+enum class ScClipMark : sal_uInt8 {
+ NONE = 0x00, Left = 0x01, Right = 0x02
+};
+namespace o3tl {
+ template<> struct typed_flags<ScClipMark> : is_typed_flags<ScClipMark, 0x03> {};
+}
+
+const sal_uInt8 SC_CLIPMARK_SIZE = 64;
+
+enum ScShadowPart
+{
+ SC_SHADOW_HSTART,
+ SC_SHADOW_VSTART,
+ SC_SHADOW_HORIZ,
+ SC_SHADOW_VERT,
+ SC_SHADOW_CORNER
+};
+
+struct ScDataBarInfo
+{
+ double mnZero; // 0 to 100
+ Color maColor;
+ double mnLength; // -100 to 100
+ bool mbGradient;
+ bool mbShowValue;
+ Color maAxisColor;
+
+ bool operator==(const ScDataBarInfo& r) const
+ {
+ if( mnZero != r.mnZero )
+ return false;
+ if( maColor != r.maColor )
+ return false;
+ if(mnLength != r.mnLength)
+ return false;
+ if (mbGradient != r.mbGradient)
+ return false;
+
+ return true;
+ }
+
+ bool operator!=(const ScDataBarInfo& r) const
+ {
+ return !(*this == r);
+ }
+};
+
+struct ScIconSetInfo
+{
+ sal_Int32 nIconIndex;
+ ScIconSetType eIconSetType;
+ bool mbShowValue;
+};
+
+struct CellInfo
+{
+ CellInfo()
+ : pPatternAttr(nullptr)
+ , pConditionSet(nullptr)
+ , pBackground(nullptr) // TODO: omit?
+ , pLinesAttr(nullptr)
+ , mpTLBRLine(nullptr)
+ , mpBLTRLine(nullptr)
+ , pShadowAttr(nullptr)
+ , pHShadowOrigin(nullptr)
+ , pVShadowOrigin(nullptr)
+ , eHShadowPart(SC_SHADOW_HSTART)
+ , eVShadowPart(SC_SHADOW_HSTART)
+ , nClipMark(ScClipMark::NONE)
+ , nWidth(0)
+ , nRotateDir(ScRotateDir::NONE)
+ , bEmptyCellText(false)
+ , bMerged(false)
+ , bHOverlapped(false)
+ , bVOverlapped(false)
+ , bAutoFilter(false)
+ , bPivotButton(false)
+ , bPivotPopupButton(false)
+ , bFilterActive(false)
+ , bPrinted(false) // view-internal
+ , bHideGrid(false) // view-internal
+ , bEditEngine(false) // view-internal
+ {
+ }
+
+ CellInfo(const CellInfo&) = delete;
+ const CellInfo& operator=(const CellInfo&) = delete;
+
+ ScRefCellValue maCell;
+
+ const ScPatternAttr* pPatternAttr;
+ const SfxItemSet* pConditionSet;
+ std::optional<Color> mxColorScale;
+ std::unique_ptr<const ScDataBarInfo> pDataBar;
+ std::unique_ptr<const ScIconSetInfo> pIconSet;
+
+ const SvxBrushItem* pBackground;
+
+ const SvxBoxItem* pLinesAttr; /// original item from document.
+ const SvxLineItem* mpTLBRLine; /// original item from document.
+ const SvxLineItem* mpBLTRLine; /// original item from document.
+
+ const SvxShadowItem* pShadowAttr; // original item (internal)
+
+ const SvxShadowItem* pHShadowOrigin;
+ const SvxShadowItem* pVShadowOrigin;
+
+ ScShadowPart eHShadowPart : 4; // shadow effective for drawing
+ ScShadowPart eVShadowPart : 4;
+ ScClipMark nClipMark;
+ sal_uInt16 nWidth;
+ ScRotateDir nRotateDir;
+
+ bool bEmptyCellText : 1;
+ bool bMerged : 1;
+ bool bHOverlapped : 1;
+ bool bVOverlapped : 1;
+ bool bAutoFilter : 1;
+ bool bPivotButton:1;
+ bool bPivotPopupButton:1;
+ bool bFilterActive:1;
+ bool bPrinted : 1; // when required (pagebreak mode)
+ bool bHideGrid : 1; // output-internal
+ bool bEditEngine : 1; // output-internal
+};
+
+const SCCOL SC_ROTMAX_NONE = SCCOL_MAX;
+
+struct RowInfo
+{
+ RowInfo() = default;
+ RowInfo(const RowInfo&) = delete;
+ const RowInfo& operator=(const RowInfo&) = delete;
+
+ CellInfo* pCellInfo;
+
+ sal_uInt16 nHeight;
+ SCROW nRowNo;
+ SCCOL nRotMaxCol; // SC_ROTMAX_NONE, if nothing
+
+ bool bEmptyBack:1;
+ bool bAutoFilter:1;
+ bool bPivotButton:1;
+ bool bChanged:1; // TRUE, if not tested
+};
+
+struct ScTableInfo
+{
+ svx::frame::Array maArray;
+ std::unique_ptr<RowInfo[]>
+ mpRowInfo;
+ SCSIZE mnArrCount;
+ SCSIZE mnArrCapacity;
+ bool mbPageMode;
+
+ explicit ScTableInfo(const SCSIZE capacity = 1024);
+ ~ScTableInfo();
+ ScTableInfo(const ScTableInfo&) = delete;
+ const ScTableInfo& operator=(const ScTableInfo&) = delete;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */