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>
55const sal_Int32 BIFF12_CFRULE_TYPE_CELLIS = 1;
56const sal_Int32 BIFF12_CFRULE_TYPE_EXPRESSION = 2;
57const sal_Int32 BIFF12_CFRULE_TYPE_COLORSCALE = 3;
58const sal_Int32 BIFF12_CFRULE_TYPE_DATABAR = 4;
59const sal_Int32 BIFF12_CFRULE_TYPE_TOPTEN = 5;
60const sal_Int32 BIFF12_CFRULE_TYPE_ICONSET = 6;
62const sal_Int32 BIFF12_CFRULE_SUB_CELLIS = 0;
63const sal_Int32 BIFF12_CFRULE_SUB_EXPRESSION = 1;
64const sal_Int32 BIFF12_CFRULE_SUB_COLORSCALE = 2;
65const sal_Int32 BIFF12_CFRULE_SUB_DATABAR = 3;
66const sal_Int32 BIFF12_CFRULE_SUB_ICONSET = 4;
67const sal_Int32 BIFF12_CFRULE_SUB_TOPTEN = 5;
68const sal_Int32 BIFF12_CFRULE_SUB_UNIQUE = 7;
69const sal_Int32 BIFF12_CFRULE_SUB_TEXT = 8;
70const sal_Int32 BIFF12_CFRULE_SUB_BLANK = 9;
71const sal_Int32 BIFF12_CFRULE_SUB_NOTBLANK = 10;
72const sal_Int32 BIFF12_CFRULE_SUB_ERROR = 11;
73const sal_Int32 BIFF12_CFRULE_SUB_NOTERROR = 12;
74const sal_Int32 BIFF12_CFRULE_SUB_TODAY = 15;
75const sal_Int32 BIFF12_CFRULE_SUB_TOMORROW = 16;
76const sal_Int32 BIFF12_CFRULE_SUB_YESTERDAY = 17;
77const sal_Int32 BIFF12_CFRULE_SUB_LAST7DAYS = 18;
78const sal_Int32 BIFF12_CFRULE_SUB_LASTMONTH = 19;
79const sal_Int32 BIFF12_CFRULE_SUB_NEXTMONTH = 20;
80const sal_Int32 BIFF12_CFRULE_SUB_THISWEEK = 21;
81const sal_Int32 BIFF12_CFRULE_SUB_NEXTWEEK = 22;
82const sal_Int32 BIFF12_CFRULE_SUB_LASTWEEK = 23;
83const sal_Int32 BIFF12_CFRULE_SUB_THISMONTH = 24;
84const sal_Int32 BIFF12_CFRULE_SUB_ABOVEAVERAGE = 25;
85const sal_Int32 BIFF12_CFRULE_SUB_BELOWAVERAGE = 26;
86const sal_Int32 BIFF12_CFRULE_SUB_DUPLICATE = 27;
87const sal_Int32 BIFF12_CFRULE_SUB_EQABOVEAVERAGE = 29;
88const sal_Int32 BIFF12_CFRULE_SUB_EQBELOWAVERAGE = 30;
90const sal_Int32 BIFF12_CFRULE_TIMEOP_TODAY = 0;
91const sal_Int32 BIFF12_CFRULE_TIMEOP_YESTERDAY = 1;
92const sal_Int32 BIFF12_CFRULE_TIMEOP_LAST7DAYS = 2;
93const sal_Int32 BIFF12_CFRULE_TIMEOP_THISWEEK = 3;
94const sal_Int32 BIFF12_CFRULE_TIMEOP_LASTWEEK = 4;
95const sal_Int32 BIFF12_CFRULE_TIMEOP_LASTMONTH = 5;
96const sal_Int32 BIFF12_CFRULE_TIMEOP_TOMORROW = 6;
97const sal_Int32 BIFF12_CFRULE_TIMEOP_NEXTWEEK = 7;
98const sal_Int32 BIFF12_CFRULE_TIMEOP_NEXTMONTH = 8;
99const sal_Int32 BIFF12_CFRULE_TIMEOP_THISMONTH = 9;
101const sal_uInt16 BIFF12_CFRULE_STOPIFTRUE = 0x0002;
102const sal_uInt16 BIFF12_CFRULE_ABOVEAVERAGE = 0x0004;
103const sal_uInt16 BIFF12_CFRULE_BOTTOM = 0x0008;
104const sal_uInt16 BIFF12_CFRULE_PERCENT = 0x0010;
106bool isValue(std::u16string_view rStr,
double& rVal)
109 rVal = rtl::math::stringToDouble(
o3tl::trim(rStr),
'.',
',',
nullptr, &nEnd);
111 return nEnd >=
static_cast<sal_Int32
>(rStr.size());
114void SetCfvoData( ColorScaleRuleModelEntry* pEntry,
const AttributeList& rAttribs )
116 OUString aType = rAttribs.getString( XML_type, OUString() );
117 OUString aVal = rAttribs.getString(XML_val, OUString());
120 bool bVal = isValue(aVal, nVal);
121 if( !bVal || aType ==
"formula" )
123 pEntry->maFormula = aVal;
127 pEntry->mnVal = nVal;
132 pEntry->mbNum =
true;
134 else if( aType ==
"min" )
136 pEntry->mbMin =
true;
138 else if( aType ==
"max" )
140 pEntry->mbMax =
true;
142 else if( aType ==
"percent" )
144 pEntry->mbPercent =
true;
146 else if( aType ==
"percentile" )
148 pEntry->mbPercentile =
true;
180 sal_uInt32 nThemeIndex = rAttribs.
getUnsigned( XML_theme, 0 );
183 if (nThemeIndex == 0)
185 else if (nThemeIndex == 1)
187 else if (nThemeIndex == 2)
189 else if (nThemeIndex == 3)
196 double nTint = rAttribs.
getDouble(XML_tint, 0.0);
202 aColor = aDMColor.
getColor(rGraphicHelper);
216 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
274 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
293 SetCfvoData( pEntry, rAttribs );
308 mxFormat->mpUpperLimit.reset( pUpperEntry );
309 mxFormat->mpLowerLimit.reset( pLowerEntry );
323 SetCfvoData(&aNewEntry, rAttribs);
344 else if (!rFormula.isEmpty())
354 for(
size_t i = 0; pIconSetMap[
i].
pName; ++
i)
356 if(OUString::createFromAscii(pIconSetMap[i].pName) == rName)
358 eIconSetType = pIconSetMap[
i].
eType;
370 OUString aIconSet = rAttribs.
getString(XML_iconSet, OUString());
372 if (aIconSet ==
"NoIcons")
402 mbStopIfTrue( false ),
405 mbAboveAverage( true ),
406 mbEqualAverage( false )
412 static const sal_Int32 spnOperators[] = {
414 XML_greaterThan, XML_lessThan, XML_greaterThanOrEqual, XML_lessThanOrEqual };
421 static const sal_Int32 spnTypes[] = { XML_containsText, XML_notContainsText, XML_beginsWith, XML_endsWith };
423 static const sal_Int32 spnOperators[] = { XML_containsText, XML_notContains, XML_beginsWith, XML_endsWith };
429 mrCondFormat( rCondFormat ),
431 mpFormatEntry(nullptr)
467 sal_Int32
nType, nSubType, nOperator, nFmla1Size, nFmla2Size, nFmla3Size;
470 nSubType =
rStrm.readInt32();
473 nOperator =
rStrm.readInt32();
475 nFlags =
rStrm.readuInt16();
476 nFmla1Size =
rStrm.readInt32();
477 nFmla2Size =
rStrm.readInt32();
478 nFmla3Size =
rStrm.readInt32();
487 SAL_WARN_IF( !( (nFmla1Size >= 0) || ((nFmla2Size == 0) && (nFmla3Size == 0)) ),
"sc.filter",
"CondFormatRule::importCfRule - missing first formula" );
488 SAL_WARN_IF( !( (nFmla1Size > 0) == (
rStrm.getRemaining() >= 8) ),
"sc.filter",
"CondFormatRule::importCfRule - formula size mismatch" );
489 if(
rStrm.getRemaining() >= 8 )
496 OSL_ENSURE( (nFmla2Size >= 0) || (nFmla3Size == 0),
"CondFormatRule::importCfRule - missing second formula" );
497 OSL_ENSURE( (nFmla2Size > 0) == (
rStrm.getRemaining() >= 8),
"CondFormatRule::importCfRule - formula size mismatch" );
498 if(
rStrm.getRemaining() >= 8 )
504 OSL_ENSURE( (nFmla3Size > 0) == (
rStrm.getRemaining() >= 8),
"CondFormatRule::importCfRule - formula size mismatch" );
505 if(
rStrm.getRemaining() >= 8 )
523 case BIFF12_CFRULE_TYPE_CELLIS:
525 nSubType != BIFF12_CFRULE_SUB_CELLIS,
"sc.filter",
526 "CondFormatRule::importCfRule - rule type/subtype mismatch");
531 case BIFF12_CFRULE_TYPE_EXPRESSION:
535 case BIFF12_CFRULE_SUB_EXPRESSION:
536 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
539 case BIFF12_CFRULE_SUB_UNIQUE:
540 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
543 case BIFF12_CFRULE_SUB_TEXT:
547 case BIFF12_CFRULE_SUB_BLANK:
548 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
551 case BIFF12_CFRULE_SUB_NOTBLANK:
552 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
555 case BIFF12_CFRULE_SUB_ERROR:
556 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
559 case BIFF12_CFRULE_SUB_NOTERROR:
560 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
563 case BIFF12_CFRULE_SUB_TODAY:
565 nOperator != BIFF12_CFRULE_TIMEOP_TODAY,
"sc.filter",
566 "CondFormatRule::importCfRule - unexpected time operator value");
570 case BIFF12_CFRULE_SUB_TOMORROW:
572 nOperator != BIFF12_CFRULE_TIMEOP_TOMORROW,
"sc.filter",
573 "CondFormatRule::importCfRule - unexpected time operator value");
577 case BIFF12_CFRULE_SUB_YESTERDAY:
579 nOperator != BIFF12_CFRULE_TIMEOP_YESTERDAY,
581 "CondFormatRule::importCfRule - unexpected time operator value");
585 case BIFF12_CFRULE_SUB_LAST7DAYS:
587 nOperator != BIFF12_CFRULE_TIMEOP_LAST7DAYS,
589 "CondFormatRule::importCfRule - unexpected time operator value");
593 case BIFF12_CFRULE_SUB_LASTMONTH:
595 nOperator != BIFF12_CFRULE_TIMEOP_LASTMONTH,
597 "CondFormatRule::importCfRule - unexpected time operator value");
601 case BIFF12_CFRULE_SUB_NEXTMONTH:
603 nOperator != BIFF12_CFRULE_TIMEOP_NEXTMONTH,
605 "CondFormatRule::importCfRule - unexpected time operator value");
609 case BIFF12_CFRULE_SUB_THISWEEK:
611 nOperator != BIFF12_CFRULE_TIMEOP_THISWEEK,
"sc.filter",
612 "CondFormatRule::importCfRule - unexpected time operator value");
616 case BIFF12_CFRULE_SUB_NEXTWEEK:
618 nOperator != BIFF12_CFRULE_TIMEOP_NEXTWEEK,
"sc.filter",
619 "CondFormatRule::importCfRule - unexpected time operator value");
623 case BIFF12_CFRULE_SUB_LASTWEEK:
625 nOperator != BIFF12_CFRULE_TIMEOP_LASTWEEK,
"sc.filter",
626 "CondFormatRule::importCfRule - unexpected time operator value");
630 case BIFF12_CFRULE_SUB_THISMONTH:
632 nOperator != BIFF12_CFRULE_TIMEOP_THISMONTH,
634 "CondFormatRule::importCfRule - unexpected time operator value");
638 case BIFF12_CFRULE_SUB_ABOVEAVERAGE:
645 case BIFF12_CFRULE_SUB_BELOWAVERAGE:
652 case BIFF12_CFRULE_SUB_DUPLICATE:
653 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
656 case BIFF12_CFRULE_SUB_EQABOVEAVERAGE:
663 case BIFF12_CFRULE_SUB_EQBELOWAVERAGE:
672 case BIFF12_CFRULE_TYPE_COLORSCALE:
674 nSubType != BIFF12_CFRULE_SUB_COLORSCALE,
"sc.filter",
675 "CondFormatRule::importCfRule - rule type/subtype mismatch");
676 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
679 case BIFF12_CFRULE_TYPE_DATABAR:
681 nSubType != BIFF12_CFRULE_SUB_DATABAR,
"sc.filter",
682 "CondFormatRule::importCfRule - rule type/subtype mismatch");
683 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
686 case BIFF12_CFRULE_TYPE_TOPTEN:
688 nSubType != BIFF12_CFRULE_SUB_TOPTEN,
"sc.filter",
689 "CondFormatRule::importCfRule - rule type/subtype mismatch");
693 case BIFF12_CFRULE_TYPE_ICONSET:
695 nSubType != BIFF12_CFRULE_SUB_ICONSET,
"sc.filter",
696 "CondFormatRule::importCfRule - rule type/subtype mismatch");
697 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
701 OSL_FAIL(
"CondFormatRule::importCfRule - unknown rule type" );
738 OUString aReplaceFormula;
745 case XML_duplicateValues:
748 case XML_uniqueValues:
754 case XML_containsText:
755 OSL_ENSURE(
maModel.
mnOperator == XML_containsText,
"CondFormatRule::finalizeImport - unexpected operator" );
758 case XML_notContainsText:
760 OSL_ENSURE(
maModel.
mnOperator == XML_notContains,
"CondFormatRule::finalizeImport - unexpected operator" );
764 OSL_ENSURE(
maModel.
mnOperator == XML_beginsWith,
"CondFormatRule::finalizeImport - unexpected operator" );
768 OSL_ENSURE(
maModel.
mnOperator == XML_endsWith,
"CondFormatRule::finalizeImport - unexpected operator" );
773 case XML_containsBlanks:
774 aReplaceFormula =
"LEN(TRIM(#B))=0";
776 case XML_notContainsBlanks:
777 aReplaceFormula =
"LEN(TRIM(#B))>0";
779 case XML_containsErrors:
782 case XML_notContainsErrors:
801 case XML_aboveAverage:
821 if( !aReplaceFormula.isEmpty() )
824 sal_Int32 nStrPos = aReplaceFormula.getLength();
825 while( (nStrPos = aReplaceFormula.lastIndexOf(
'#', nStrPos )) >= 0 )
827 switch( aReplaceFormula[ nStrPos + 1 ] )
830 if( aAddress.isEmpty() )
832 aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aAddress );
835 OSL_FAIL(
"CondFormatRule::finalizeImport - unknown placeholder" );
868 std::unique_ptr<ScTokenArray> pTokenArray2;
881 &aTokenArray, pTokenArray2.get(), rDoc, aPos, aStyleName);
948 SAL_WARN(
"sc.filter",
"CondFormatRule::finalizeImport - unknown time period type" );
966 mpColor->AddEntries( pFormatEntry, &rDoc, aPos );
974 mpDataBar->SetData( pFormatEntry, &rDoc, aPos );
983 mpIconSet->SetData( pFormatEntry, &rDoc, aPos );
1019 mbReadyForFinalize(false)
1033 xRule->importCfRule( rAttribs );
1050 xRule->importCfRule(
rStrm );
1070 return std::make_shared<CondFormatRule>( *
this,
mpFormat );
1075 if( xRule && (xRule->getPriority() > 0) )
1077 OSL_ENSURE(
maRules.find( xRule->getPriority() ) ==
maRules.end(),
"CondFormat::insertRule - multiple rules with equal priority" );
1078 maRules[ xRule->getPriority() ] = xRule;
1090 xCondFmt->importConditionalFormatting( rAttribs );
1099 for (
auto const& it : *pList)
1101 if (it->GetRange() == rRange)
1110class ScRangeListHasher
1113 size_t operator() (
ScRangeList const& rRanges)
const
1116 for (
size_t nIdx = 0; nIdx < rRanges.
size(); ++nIdx)
1117 nHash += rRanges[nIdx].hashArea();
1126 std::unordered_set<size_t> aDoneExtCFs;
1127 typedef std::unordered_map<ScRangeList, CondFormat*, ScRangeListHasher> RangeMap;
1131 if (aRangeMap.find(rxCondFormat->getRanges()) != aRangeMap.end())
1133 aRangeMap[rxCondFormat->getRanges()] = rxCondFormat.get();
1136 size_t nExtCFIndex = 0;
1140 const ScRangeList& rRange = rxExtCondFormat->getRange();
1141 RangeMap::iterator it = aRangeMap.find(rRange);
1142 if (it != aRangeMap.end())
1145 const std::vector<std::unique_ptr<ScFormatEntry>>& rEntries = rxExtCondFormat->getEntries();
1146 const std::vector<sal_Int32>& rPriorities = rxExtCondFormat->getPriorities();
1147 size_t nEntryIdx = 0;
1148 for (
const auto& rxEntry : rEntries)
1152 sal_Int32 nPriority = rPriorities[nEntryIdx];
1153 if (nPriority == -1)
1155 xRule->setFormatEntry(nPriority, pNewEntry);
1160 aDoneExtCFs.insert(nExtCFIndex);
1177 if (rNextRules.empty() || rMinRules.empty())
1179 if (rNextRules.begin()->first < rMinRules.begin()->first)
1190 rxCondFormat->finalizeImport();
1192 for (
const auto& rxCfRule :
maCfRules )
1195 rxCfRule->finalizeImport();
1201 if (aDoneExtCFs.count(nExtCFIndex))
1208 const ScRangeList& rRange = rxExtCondFormat->getRange();
1214 auto pNewFormat = std::make_unique<ScConditionalFormat>(0, pDoc);
1215 pFormat = pNewFormat.get();
1221 const std::vector< std::unique_ptr<ScFormatEntry> >& rEntries = rxExtCondFormat->getEntries();
1222 for (
const auto& rxEntry : rEntries)
1224 pFormat->
AddEntry(rxEntry->Clone(pDoc));
1236 xCondFmt->importCondFormatting(
rStrm );
1256 case XML_between:
return ConditionOperator2::BETWEEN;
1257 case XML_equal:
return ConditionOperator2::EQUAL;
1258 case XML_greaterThan:
return ConditionOperator2::GREATER;
1259 case XML_greaterThanOrEqual:
return ConditionOperator2::GREATER_EQUAL;
1260 case XML_lessThan:
return ConditionOperator2::LESS;
1261 case XML_lessThanOrEqual:
return ConditionOperator2::LESS_EQUAL;
1262 case XML_notBetween:
return ConditionOperator2::NOT_BETWEEN;
1263 case XML_notEqual:
return ConditionOperator2::NOT_EQUAL;
1264 case XML_duplicateValues:
return ConditionOperator2::DUPLICATE;
1291 CondFormatRef xCondFmt = std::make_shared<CondFormat>( *
this );
1329 pDataBar->
mbNeg =
true;
1375 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
1384 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
1395 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, std::u16string_view aString, 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::basic_string_view< charT, traits > trim(std::basic_string_view< charT, traits > 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