21#include <unordered_set>
22#include <unordered_map>
26#include <com/sun/star/sheet/ConditionOperator2.hpp>
28#include <osl/diagnose.h>
34#include <oox/token/tokens.hxx>
42#include <document.hxx>
43#include <tokenarray.hxx>
54const sal_Int32 BIFF12_CFRULE_TYPE_CELLIS = 1;
55const sal_Int32 BIFF12_CFRULE_TYPE_EXPRESSION = 2;
56const sal_Int32 BIFF12_CFRULE_TYPE_COLORSCALE = 3;
57const sal_Int32 BIFF12_CFRULE_TYPE_DATABAR = 4;
58const sal_Int32 BIFF12_CFRULE_TYPE_TOPTEN = 5;
59const sal_Int32 BIFF12_CFRULE_TYPE_ICONSET = 6;
61const sal_Int32 BIFF12_CFRULE_SUB_CELLIS = 0;
62const sal_Int32 BIFF12_CFRULE_SUB_EXPRESSION = 1;
63const sal_Int32 BIFF12_CFRULE_SUB_COLORSCALE = 2;
64const sal_Int32 BIFF12_CFRULE_SUB_DATABAR = 3;
65const sal_Int32 BIFF12_CFRULE_SUB_ICONSET = 4;
66const sal_Int32 BIFF12_CFRULE_SUB_TOPTEN = 5;
67const sal_Int32 BIFF12_CFRULE_SUB_UNIQUE = 7;
68const sal_Int32 BIFF12_CFRULE_SUB_TEXT = 8;
69const sal_Int32 BIFF12_CFRULE_SUB_BLANK = 9;
70const sal_Int32 BIFF12_CFRULE_SUB_NOTBLANK = 10;
71const sal_Int32 BIFF12_CFRULE_SUB_ERROR = 11;
72const sal_Int32 BIFF12_CFRULE_SUB_NOTERROR = 12;
73const sal_Int32 BIFF12_CFRULE_SUB_TODAY = 15;
74const sal_Int32 BIFF12_CFRULE_SUB_TOMORROW = 16;
75const sal_Int32 BIFF12_CFRULE_SUB_YESTERDAY = 17;
76const sal_Int32 BIFF12_CFRULE_SUB_LAST7DAYS = 18;
77const sal_Int32 BIFF12_CFRULE_SUB_LASTMONTH = 19;
78const sal_Int32 BIFF12_CFRULE_SUB_NEXTMONTH = 20;
79const sal_Int32 BIFF12_CFRULE_SUB_THISWEEK = 21;
80const sal_Int32 BIFF12_CFRULE_SUB_NEXTWEEK = 22;
81const sal_Int32 BIFF12_CFRULE_SUB_LASTWEEK = 23;
82const sal_Int32 BIFF12_CFRULE_SUB_THISMONTH = 24;
83const sal_Int32 BIFF12_CFRULE_SUB_ABOVEAVERAGE = 25;
84const sal_Int32 BIFF12_CFRULE_SUB_BELOWAVERAGE = 26;
85const sal_Int32 BIFF12_CFRULE_SUB_DUPLICATE = 27;
86const sal_Int32 BIFF12_CFRULE_SUB_EQABOVEAVERAGE = 29;
87const sal_Int32 BIFF12_CFRULE_SUB_EQBELOWAVERAGE = 30;
89const sal_Int32 BIFF12_CFRULE_TIMEOP_TODAY = 0;
90const sal_Int32 BIFF12_CFRULE_TIMEOP_YESTERDAY = 1;
91const sal_Int32 BIFF12_CFRULE_TIMEOP_LAST7DAYS = 2;
92const sal_Int32 BIFF12_CFRULE_TIMEOP_THISWEEK = 3;
93const sal_Int32 BIFF12_CFRULE_TIMEOP_LASTWEEK = 4;
94const sal_Int32 BIFF12_CFRULE_TIMEOP_LASTMONTH = 5;
95const sal_Int32 BIFF12_CFRULE_TIMEOP_TOMORROW = 6;
96const sal_Int32 BIFF12_CFRULE_TIMEOP_NEXTWEEK = 7;
97const sal_Int32 BIFF12_CFRULE_TIMEOP_NEXTMONTH = 8;
98const sal_Int32 BIFF12_CFRULE_TIMEOP_THISMONTH = 9;
100const sal_uInt16 BIFF12_CFRULE_STOPIFTRUE = 0x0002;
101const sal_uInt16 BIFF12_CFRULE_ABOVEAVERAGE = 0x0004;
102const sal_uInt16 BIFF12_CFRULE_BOTTOM = 0x0008;
103const sal_uInt16 BIFF12_CFRULE_PERCENT = 0x0010;
105bool isValue(std::u16string_view rStr,
double& rVal)
108 rVal = rtl::math::stringToDouble(
o3tl::trim(rStr),
'.',
',',
nullptr, &nEnd);
110 return nEnd >=
static_cast<sal_Int32
>(rStr.size());
113void SetCfvoData( ColorScaleRuleModelEntry* pEntry,
const AttributeList& rAttribs )
115 OUString aType = rAttribs.getString( XML_type, OUString() );
116 OUString aVal = rAttribs.getString(XML_val, OUString());
119 bool bVal = isValue(aVal, nVal);
120 if( !bVal || aType ==
"formula" )
122 pEntry->maFormula = aVal;
126 pEntry->mnVal = nVal;
131 pEntry->mbNum =
true;
133 else if( aType ==
"min" )
135 pEntry->mbMin =
true;
137 else if( aType ==
"max" )
139 pEntry->mbMax =
true;
141 else if( aType ==
"percent" )
143 pEntry->mbPercent =
true;
145 else if( aType ==
"percentile" )
147 pEntry->mbPercentile =
true;
179 sal_uInt32 nThemeIndex = rAttribs.
getUnsigned( XML_theme, 0 );
182 if (nThemeIndex == 0)
184 else if (nThemeIndex == 1)
186 else if (nThemeIndex == 2)
188 else if (nThemeIndex == 3)
195 double nTint = rAttribs.
getDouble(XML_tint, 0.0);
201 aColor = aDMColor.
getColor(rGraphicHelper);
215 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
273 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
292 SetCfvoData( pEntry, rAttribs );
307 mxFormat->mpUpperLimit.reset( pUpperEntry );
308 mxFormat->mpLowerLimit.reset( pLowerEntry );
322 SetCfvoData(&aNewEntry, rAttribs);
343 else if (!rFormula.isEmpty())
353 for(
size_t i = 0; pIconSetMap[
i].
pName; ++
i)
355 if(OUString::createFromAscii(pIconSetMap[i].pName) == rName)
357 eIconSetType = pIconSetMap[
i].
eType;
369 OUString aIconSet = rAttribs.
getString(XML_iconSet, OUString());
371 if (aIconSet ==
"NoIcons")
401 mbStopIfTrue( false ),
404 mbAboveAverage( true ),
405 mbEqualAverage( false )
411 static const sal_Int32 spnOperators[] = {
413 XML_greaterThan, XML_lessThan, XML_greaterThanOrEqual, XML_lessThanOrEqual };
420 static const sal_Int32 spnTypes[] = { XML_containsText, XML_notContainsText, XML_beginsWith, XML_endsWith };
422 static const sal_Int32 spnOperators[] = { XML_containsText, XML_notContains, XML_beginsWith, XML_endsWith };
428 mrCondFormat( rCondFormat ),
430 mpFormatEntry(nullptr)
466 sal_Int32
nType, nSubType, nOperator, nFmla1Size, nFmla2Size, nFmla3Size;
469 nSubType =
rStrm.readInt32();
472 nOperator =
rStrm.readInt32();
474 nFlags =
rStrm.readuInt16();
475 nFmla1Size =
rStrm.readInt32();
476 nFmla2Size =
rStrm.readInt32();
477 nFmla3Size =
rStrm.readInt32();
486 SAL_WARN_IF( !( (nFmla1Size >= 0) || ((nFmla2Size == 0) && (nFmla3Size == 0)) ),
"sc.filter",
"CondFormatRule::importCfRule - missing first formula" );
487 SAL_WARN_IF( !( (nFmla1Size > 0) == (
rStrm.getRemaining() >= 8) ),
"sc.filter",
"CondFormatRule::importCfRule - formula size mismatch" );
488 if(
rStrm.getRemaining() >= 8 )
495 OSL_ENSURE( (nFmla2Size >= 0) || (nFmla3Size == 0),
"CondFormatRule::importCfRule - missing second formula" );
496 OSL_ENSURE( (nFmla2Size > 0) == (
rStrm.getRemaining() >= 8),
"CondFormatRule::importCfRule - formula size mismatch" );
497 if(
rStrm.getRemaining() >= 8 )
503 OSL_ENSURE( (nFmla3Size > 0) == (
rStrm.getRemaining() >= 8),
"CondFormatRule::importCfRule - formula size mismatch" );
504 if(
rStrm.getRemaining() >= 8 )
522 case BIFF12_CFRULE_TYPE_CELLIS:
524 nSubType != BIFF12_CFRULE_SUB_CELLIS,
"sc.filter",
525 "CondFormatRule::importCfRule - rule type/subtype mismatch");
530 case BIFF12_CFRULE_TYPE_EXPRESSION:
534 case BIFF12_CFRULE_SUB_EXPRESSION:
535 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
538 case BIFF12_CFRULE_SUB_UNIQUE:
539 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
542 case BIFF12_CFRULE_SUB_TEXT:
546 case BIFF12_CFRULE_SUB_BLANK:
547 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
550 case BIFF12_CFRULE_SUB_NOTBLANK:
551 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
554 case BIFF12_CFRULE_SUB_ERROR:
555 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
558 case BIFF12_CFRULE_SUB_NOTERROR:
559 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
562 case BIFF12_CFRULE_SUB_TODAY:
564 nOperator != BIFF12_CFRULE_TIMEOP_TODAY,
"sc.filter",
565 "CondFormatRule::importCfRule - unexpected time operator value");
569 case BIFF12_CFRULE_SUB_TOMORROW:
571 nOperator != BIFF12_CFRULE_TIMEOP_TOMORROW,
"sc.filter",
572 "CondFormatRule::importCfRule - unexpected time operator value");
576 case BIFF12_CFRULE_SUB_YESTERDAY:
578 nOperator != BIFF12_CFRULE_TIMEOP_YESTERDAY,
580 "CondFormatRule::importCfRule - unexpected time operator value");
584 case BIFF12_CFRULE_SUB_LAST7DAYS:
586 nOperator != BIFF12_CFRULE_TIMEOP_LAST7DAYS,
588 "CondFormatRule::importCfRule - unexpected time operator value");
592 case BIFF12_CFRULE_SUB_LASTMONTH:
594 nOperator != BIFF12_CFRULE_TIMEOP_LASTMONTH,
596 "CondFormatRule::importCfRule - unexpected time operator value");
600 case BIFF12_CFRULE_SUB_NEXTMONTH:
602 nOperator != BIFF12_CFRULE_TIMEOP_NEXTMONTH,
604 "CondFormatRule::importCfRule - unexpected time operator value");
608 case BIFF12_CFRULE_SUB_THISWEEK:
610 nOperator != BIFF12_CFRULE_TIMEOP_THISWEEK,
"sc.filter",
611 "CondFormatRule::importCfRule - unexpected time operator value");
615 case BIFF12_CFRULE_SUB_NEXTWEEK:
617 nOperator != BIFF12_CFRULE_TIMEOP_NEXTWEEK,
"sc.filter",
618 "CondFormatRule::importCfRule - unexpected time operator value");
622 case BIFF12_CFRULE_SUB_LASTWEEK:
624 nOperator != BIFF12_CFRULE_TIMEOP_LASTWEEK,
"sc.filter",
625 "CondFormatRule::importCfRule - unexpected time operator value");
629 case BIFF12_CFRULE_SUB_THISMONTH:
631 nOperator != BIFF12_CFRULE_TIMEOP_THISMONTH,
633 "CondFormatRule::importCfRule - unexpected time operator value");
637 case BIFF12_CFRULE_SUB_ABOVEAVERAGE:
644 case BIFF12_CFRULE_SUB_BELOWAVERAGE:
651 case BIFF12_CFRULE_SUB_DUPLICATE:
652 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
655 case BIFF12_CFRULE_SUB_EQABOVEAVERAGE:
662 case BIFF12_CFRULE_SUB_EQBELOWAVERAGE:
671 case BIFF12_CFRULE_TYPE_COLORSCALE:
673 nSubType != BIFF12_CFRULE_SUB_COLORSCALE,
"sc.filter",
674 "CondFormatRule::importCfRule - rule type/subtype mismatch");
675 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
678 case BIFF12_CFRULE_TYPE_DATABAR:
680 nSubType != BIFF12_CFRULE_SUB_DATABAR,
"sc.filter",
681 "CondFormatRule::importCfRule - rule type/subtype mismatch");
682 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
685 case BIFF12_CFRULE_TYPE_TOPTEN:
687 nSubType != BIFF12_CFRULE_SUB_TOPTEN,
"sc.filter",
688 "CondFormatRule::importCfRule - rule type/subtype mismatch");
692 case BIFF12_CFRULE_TYPE_ICONSET:
694 nSubType != BIFF12_CFRULE_SUB_ICONSET,
"sc.filter",
695 "CondFormatRule::importCfRule - rule type/subtype mismatch");
696 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
700 OSL_FAIL(
"CondFormatRule::importCfRule - unknown rule type" );
737 OUString aReplaceFormula;
744 case XML_duplicateValues:
747 case XML_uniqueValues:
753 case XML_containsText:
754 OSL_ENSURE(
maModel.
mnOperator == XML_containsText,
"CondFormatRule::finalizeImport - unexpected operator" );
757 case XML_notContainsText:
759 OSL_ENSURE(
maModel.
mnOperator == XML_notContains,
"CondFormatRule::finalizeImport - unexpected operator" );
763 OSL_ENSURE(
maModel.
mnOperator == XML_beginsWith,
"CondFormatRule::finalizeImport - unexpected operator" );
767 OSL_ENSURE(
maModel.
mnOperator == XML_endsWith,
"CondFormatRule::finalizeImport - unexpected operator" );
772 case XML_containsBlanks:
773 aReplaceFormula =
"LEN(TRIM(#B))=0";
775 case XML_notContainsBlanks:
776 aReplaceFormula =
"LEN(TRIM(#B))>0";
778 case XML_containsErrors:
781 case XML_notContainsErrors:
800 case XML_aboveAverage:
820 if( !aReplaceFormula.isEmpty() )
823 sal_Int32 nStrPos = aReplaceFormula.getLength();
824 while( (nStrPos = aReplaceFormula.lastIndexOf(
'#', nStrPos )) >= 0 )
826 switch( aReplaceFormula[ nStrPos + 1 ] )
829 if( aAddress.isEmpty() )
831 aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aAddress );
834 OSL_FAIL(
"CondFormatRule::finalizeImport - unknown placeholder" );
867 std::unique_ptr<ScTokenArray> pTokenArray2;
880 &aTokenArray, pTokenArray2.get(), rDoc, aPos, aStyleName);
947 SAL_WARN(
"sc.filter",
"CondFormatRule::finalizeImport - unknown time period type" );
965 mpColor->AddEntries( pFormatEntry, &rDoc, aPos );
973 mpDataBar->SetData( pFormatEntry, &rDoc, aPos );
982 mpIconSet->SetData( pFormatEntry, &rDoc, aPos );
1018 mbReadyForFinalize(false)
1032 xRule->importCfRule( rAttribs );
1049 xRule->importCfRule(
rStrm );
1069 return std::make_shared<CondFormatRule>( *
this,
mpFormat );
1074 if( xRule && (xRule->getPriority() > 0) )
1076 OSL_ENSURE(
maRules.find( xRule->getPriority() ) ==
maRules.end(),
"CondFormat::insertRule - multiple rules with equal priority" );
1077 maRules[ xRule->getPriority() ] = xRule;
1089 xCondFmt->importConditionalFormatting( rAttribs );
1098 for (
auto const& it : *pList)
1100 if (it->GetRange() == rRange)
1109class ScRangeListHasher
1112 size_t operator() (
ScRangeList const& rRanges)
const
1115 for (
size_t nIdx = 0; nIdx < rRanges.
size(); ++nIdx)
1116 nHash += rRanges[nIdx].hashArea();
1125 std::unordered_set<size_t> aDoneExtCFs;
1126 typedef std::unordered_map<ScRangeList, CondFormat*, ScRangeListHasher> RangeMap;
1130 if (aRangeMap.find(rxCondFormat->getRanges()) != aRangeMap.end())
1132 aRangeMap[rxCondFormat->getRanges()] = rxCondFormat.get();
1135 size_t nExtCFIndex = 0;
1139 const ScRangeList& rRange = rxExtCondFormat->getRange();
1140 RangeMap::iterator it = aRangeMap.find(rRange);
1141 if (it != aRangeMap.end())
1144 const std::vector<std::unique_ptr<ScFormatEntry>>& rEntries = rxExtCondFormat->getEntries();
1145 const std::vector<sal_Int32>& rPriorities = rxExtCondFormat->getPriorities();
1146 size_t nEntryIdx = 0;
1147 for (
const auto& rxEntry : rEntries)
1151 sal_Int32 nPriority = rPriorities[nEntryIdx];
1152 if (nPriority == -1)
1154 xRule->setFormatEntry(nPriority, pNewEntry);
1159 aDoneExtCFs.insert(nExtCFIndex);
1168 rxCondFormat->finalizeImport();
1170 for (
const auto& rxCfRule :
maCfRules )
1173 rxCfRule->finalizeImport();
1179 if (aDoneExtCFs.count(nExtCFIndex))
1186 const ScRangeList& rRange = rxExtCondFormat->getRange();
1192 auto pNewFormat = std::make_unique<ScConditionalFormat>(0, pDoc);
1193 pFormat = pNewFormat.get();
1199 const std::vector< std::unique_ptr<ScFormatEntry> >& rEntries = rxExtCondFormat->getEntries();
1200 for (
const auto& rxEntry : rEntries)
1202 pFormat->
AddEntry(rxEntry->Clone(pDoc));
1214 xCondFmt->importCondFormatting(
rStrm );
1234 case XML_between:
return ConditionOperator2::BETWEEN;
1235 case XML_equal:
return ConditionOperator2::EQUAL;
1236 case XML_greaterThan:
return ConditionOperator2::GREATER;
1237 case XML_greaterThanOrEqual:
return ConditionOperator2::GREATER_EQUAL;
1238 case XML_lessThan:
return ConditionOperator2::LESS;
1239 case XML_lessThanOrEqual:
return ConditionOperator2::LESS_EQUAL;
1240 case XML_notBetween:
return ConditionOperator2::NOT_BETWEEN;
1241 case XML_notEqual:
return ConditionOperator2::NOT_EQUAL;
1242 case XML_duplicateValues:
return ConditionOperator2::DUPLICATE;
1269 CondFormatRef xCondFmt = std::make_shared<CondFormat>( *
this );
1307 pDataBar->
mbNeg =
true;
1353 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
1362 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
1373 const std::vector<sal_Int32>* pPriorities):
Color GetRGBColor() const
void SetType(ScColorScaleEntryType eType)
void SetFormula(const OUString &rFormula, ScDocument &rDoc, const ScAddress &rAddr, formula::FormulaGrammar::Grammar eGrammar=formula::FormulaGrammar::GRAM_DEFAULT)
void SetDateType(condformat::ScCondFormatDateType eType)
void SetStyleName(const OUString &rStyleName)
SC_DLLPUBLIC void CheckLinkFormulaNeedingCheck(const ScTokenArray &rCode)
Check token array and set link check if ocDde/ocWebservice is contained.
SC_DLLPUBLIC svl::SharedStringPool & GetSharedStringPool()
SC_DLLPUBLIC void AddCondFormatData(const ScRangeList &rRange, SCTAB nTab, sal_uInt32 nIndex)
SC_DLLPUBLIC ScConditionalFormatList * GetCondFormList(SCTAB nTab) const
SC_DLLPUBLIC sal_uLong AddCondFormat(std::unique_ptr< ScConditionalFormat > pNew, SCTAB nTab)
virtual ScFormatEntry * Clone(ScDocument *pDoc) const =0
ScAddress GetTopLeftCorner() const
static SC_DLLPUBLIC bool ConvertToTokenArray(ScDocument &rDoc, ScTokenArray &rTokenArray, const css::uno::Sequence< css::sheet::FormulaToken > &rSequence)
sal_uInt32 getUnsignedHex(sal_Int32 nAttrToken, sal_uInt32 nDefault) const
bool hasAttribute(sal_Int32 nAttrToken) const
std::optional< sal_uInt32 > getUnsigned(sal_Int32 nAttrToken) const
std::optional< sal_Int32 > getInteger(sal_Int32 nAttrToken) const
std::optional< OUString > getString(sal_Int32 nAttrToken) const
std::optional< bool > getBool(sal_Int32 nAttrToken) const
std::optional< sal_Int32 > getToken(sal_Int32 nAttrToken) const
std::optional< double > getDouble(sal_Int32 nAttrToken) const
void forEachMem(FuncType pFunc) const
GraphicHelper & getGraphicHelper() const
void addExcelTintTransformation(double fTint)
::Color getColor(const GraphicHelper &rGraphicHelper, ::Color nPhClr=API_RGB_TRANSPARENT) const
void setSrgbClr(sal_Int32 nRgb)
void convertToCellRangeList(ScRangeList &orRanges, const OUString &rString, sal_Int16 nSheet, bool bTrackOverflow)
Tries to convert the passed string to a cell range list.
A 2D cell range address list for binary filters.
std::vector< ColorScaleRuleModelEntry > maColorScaleRuleEntries
void importColor(const AttributeList &rAttribs)
ColorScaleRule(const CondFormat &rFormat)
void importCfvo(const AttributeList &rAttribs)
void AddEntries(ScColorScaleFormat *pFormat, ScDocument *pDoc, const ScAddress &rAddr)
std::unique_ptr< ColorScaleRuleModelEntry > mpLowerLimit
void importCfvo(const AttributeList &rAttribs)
DataBarRule(const CondFormat &rFormat)
std::unique_ptr< ScDataBarFormatData > mxFormat
std::unique_ptr< ColorScaleRuleModelEntry > mpUpperLimit
void importColor(const AttributeList &rAttribs)
void SetData(ScDataBarFormat *pFormat, ScDocument *pDoc, const ScAddress &rAddr)
void importAttribs(const AttributeList &rAttribs)
ScDataBarFormatData * mpTarget
void importDataBar(const AttributeList &rAttribs)
void importNegativeFillColor(const AttributeList &rAttribs)
void importCfvo(const AttributeList &rAttribs)
ExtCfDataBarRule(ScDataBarFormatData *pTarget, const WorksheetHelper &rParent)
void importAxisColor(const AttributeList &rAttribs)
std::unique_ptr< ScIconSetFormatData > mxFormatData
void importIcon(const AttributeList &rAttribs)
std::vector< ColorScaleRuleModelEntry > maEntries
void SetData(ScIconSetFormat *pFormat, ScDocument *pDoc, const ScAddress &rAddr)
IconSetRule(const WorksheetHelper &rParent)
void importFormula(const OUString &rFormula)
void importAttribs(const AttributeList &rAttribs)
void importCfvo(const AttributeList &rAttribs)
OUString createDxfStyle(sal_Int32 nDxfId) const
Creates the style sheet described by the DXF with the passed identifier.
::Color getColorByIndex(size_t nIndex) const
AddressConverter & getAddressConverter() const
Returns the converter for string to cell address/range conversion.
StylesBuffer & getStyles() const
Returns all cell formatting objects read from the styles substream.
ThemeBuffer & getTheme() const
Returns the office theme object read from the theme substorage.
::oox::core::FilterBase & getBaseFilter() const
Returns the base filter object (base class of all filters).
FormulaParser & getFormulaParser() const
Returns a shared import formula parser (import filter only!).
ScDocument & getScDocument()
SCTAB getSheetIndex() const
Returns the index of the current sheet.
SharedString intern(const OUString &rStr)
@ IconSet_3TrafficLights1
#define STATIC_ARRAY_SELECT(array, index, def)
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
std::u16string_view trim(std::u16string_view str)
std::shared_ptr< CondFormatRule > CondFormatRuleRef
css::uno::Sequence< ApiToken > ApiTokenSequence
@ CondFormat
Shared formula definition.
std::shared_ptr< CondFormat > CondFormatRef
std::shared_ptr< ExtCfDataBarRule > ExtCfDataBarRuleRef
const sal_uInt32 UNSIGNED_RGB_TRANSPARENT
bool getFlag(Type nBitField, Type nMask)
bool getType(BSTR name, Type &type)
OUString maColorScaleType