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());
122 bool bVal = isValue(aVal, nVal);
123 if( !bVal || aType ==
"formula" )
125 pEntry->maFormula = aVal;
129 pEntry->mnVal = nVal;
135 pEntry->mbNum =
true;
137 else if( aType ==
"min" )
139 pEntry->mbMin =
true;
141 else if( aType ==
"max" )
143 pEntry->mbMax =
true;
145 else if( aType ==
"percent" )
147 pEntry->mbPercent =
true;
149 else if( aType ==
"percentile" )
151 pEntry->mbPercentile =
true;
253 sal_uInt32 nThemeIndex = rAttribs.
getUnsigned( XML_theme, 0 );
256 if (nThemeIndex == 0)
258 else if (nThemeIndex == 1)
260 else if (nThemeIndex == 2)
262 else if (nThemeIndex == 3)
265 nColor = rThemeBuffer.getColorByIndex( nThemeIndex );
269 sal_uInt32 nIndexed = rAttribs.
getUnsigned(XML_indexed, 0);
275 double nTint = rAttribs.
getDouble(XML_tint, 0.0);
281 aColor = aDMColor.
getColor(rGraphicHelper);
295 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
353 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
372 SetCfvoData( pEntry, rAttribs );
387 mxFormat->mpUpperLimit.reset( pUpperEntry );
388 mxFormat->mpLowerLimit.reset( pLowerEntry );
402 SetCfvoData(&aNewEntry, rAttribs);
423 else if (!rFormula.isEmpty())
433 for(
size_t i = 0; pIconSetMap[
i].
pName; ++
i)
435 if(OUString::createFromAscii(pIconSetMap[i].pName) == rName)
437 eIconSetType = pIconSetMap[
i].
eType;
449 OUString aIconSet = rAttribs.
getString(XML_iconSet, OUString());
451 if (aIconSet ==
"NoIcons")
481 mbStopIfTrue( false ),
484 mbAboveAverage( true ),
485 mbEqualAverage( false )
491 static const sal_Int32 spnOperators[] = {
493 XML_greaterThan, XML_lessThan, XML_greaterThanOrEqual, XML_lessThanOrEqual };
500 static const sal_Int32 spnTypes[] = { XML_containsText, XML_notContainsText, XML_beginsWith, XML_endsWith };
502 static const sal_Int32 spnOperators[] = { XML_containsText, XML_notContains, XML_beginsWith, XML_endsWith };
508 mrCondFormat( rCondFormat ),
510 mpFormatEntry(nullptr)
546 sal_Int32
nType, nSubType, nOperator, nFmla1Size, nFmla2Size, nFmla3Size;
549 nSubType =
rStrm.readInt32();
552 nOperator =
rStrm.readInt32();
554 nFlags =
rStrm.readuInt16();
555 nFmla1Size =
rStrm.readInt32();
556 nFmla2Size =
rStrm.readInt32();
557 nFmla3Size =
rStrm.readInt32();
566 SAL_WARN_IF( !( (nFmla1Size >= 0) || ((nFmla2Size == 0) && (nFmla3Size == 0)) ),
"sc.filter",
"CondFormatRule::importCfRule - missing first formula" );
567 SAL_WARN_IF( !( (nFmla1Size > 0) == (
rStrm.getRemaining() >= 8) ),
"sc.filter",
"CondFormatRule::importCfRule - formula size mismatch" );
568 if(
rStrm.getRemaining() >= 8 )
575 OSL_ENSURE( (nFmla2Size >= 0) || (nFmla3Size == 0),
"CondFormatRule::importCfRule - missing second formula" );
576 OSL_ENSURE( (nFmla2Size > 0) == (
rStrm.getRemaining() >= 8),
"CondFormatRule::importCfRule - formula size mismatch" );
577 if(
rStrm.getRemaining() >= 8 )
583 OSL_ENSURE( (nFmla3Size > 0) == (
rStrm.getRemaining() >= 8),
"CondFormatRule::importCfRule - formula size mismatch" );
584 if(
rStrm.getRemaining() >= 8 )
602 case BIFF12_CFRULE_TYPE_CELLIS:
604 nSubType != BIFF12_CFRULE_SUB_CELLIS,
"sc.filter",
605 "CondFormatRule::importCfRule - rule type/subtype mismatch");
610 case BIFF12_CFRULE_TYPE_EXPRESSION:
614 case BIFF12_CFRULE_SUB_EXPRESSION:
615 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
618 case BIFF12_CFRULE_SUB_UNIQUE:
619 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
622 case BIFF12_CFRULE_SUB_TEXT:
626 case BIFF12_CFRULE_SUB_BLANK:
627 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
630 case BIFF12_CFRULE_SUB_NOTBLANK:
631 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
634 case BIFF12_CFRULE_SUB_ERROR:
635 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
638 case BIFF12_CFRULE_SUB_NOTERROR:
639 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
642 case BIFF12_CFRULE_SUB_TODAY:
644 nOperator != BIFF12_CFRULE_TIMEOP_TODAY,
"sc.filter",
645 "CondFormatRule::importCfRule - unexpected time operator value");
649 case BIFF12_CFRULE_SUB_TOMORROW:
651 nOperator != BIFF12_CFRULE_TIMEOP_TOMORROW,
"sc.filter",
652 "CondFormatRule::importCfRule - unexpected time operator value");
656 case BIFF12_CFRULE_SUB_YESTERDAY:
658 nOperator != BIFF12_CFRULE_TIMEOP_YESTERDAY,
660 "CondFormatRule::importCfRule - unexpected time operator value");
664 case BIFF12_CFRULE_SUB_LAST7DAYS:
666 nOperator != BIFF12_CFRULE_TIMEOP_LAST7DAYS,
668 "CondFormatRule::importCfRule - unexpected time operator value");
672 case BIFF12_CFRULE_SUB_LASTMONTH:
674 nOperator != BIFF12_CFRULE_TIMEOP_LASTMONTH,
676 "CondFormatRule::importCfRule - unexpected time operator value");
680 case BIFF12_CFRULE_SUB_NEXTMONTH:
682 nOperator != BIFF12_CFRULE_TIMEOP_NEXTMONTH,
684 "CondFormatRule::importCfRule - unexpected time operator value");
688 case BIFF12_CFRULE_SUB_THISWEEK:
690 nOperator != BIFF12_CFRULE_TIMEOP_THISWEEK,
"sc.filter",
691 "CondFormatRule::importCfRule - unexpected time operator value");
695 case BIFF12_CFRULE_SUB_NEXTWEEK:
697 nOperator != BIFF12_CFRULE_TIMEOP_NEXTWEEK,
"sc.filter",
698 "CondFormatRule::importCfRule - unexpected time operator value");
702 case BIFF12_CFRULE_SUB_LASTWEEK:
704 nOperator != BIFF12_CFRULE_TIMEOP_LASTWEEK,
"sc.filter",
705 "CondFormatRule::importCfRule - unexpected time operator value");
709 case BIFF12_CFRULE_SUB_THISMONTH:
711 nOperator != BIFF12_CFRULE_TIMEOP_THISMONTH,
713 "CondFormatRule::importCfRule - unexpected time operator value");
717 case BIFF12_CFRULE_SUB_ABOVEAVERAGE:
724 case BIFF12_CFRULE_SUB_BELOWAVERAGE:
731 case BIFF12_CFRULE_SUB_DUPLICATE:
732 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
735 case BIFF12_CFRULE_SUB_EQABOVEAVERAGE:
742 case BIFF12_CFRULE_SUB_EQBELOWAVERAGE:
751 case BIFF12_CFRULE_TYPE_COLORSCALE:
753 nSubType != BIFF12_CFRULE_SUB_COLORSCALE,
"sc.filter",
754 "CondFormatRule::importCfRule - rule type/subtype mismatch");
755 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
758 case BIFF12_CFRULE_TYPE_DATABAR:
760 nSubType != BIFF12_CFRULE_SUB_DATABAR,
"sc.filter",
761 "CondFormatRule::importCfRule - rule type/subtype mismatch");
762 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
765 case BIFF12_CFRULE_TYPE_TOPTEN:
767 nSubType != BIFF12_CFRULE_SUB_TOPTEN,
"sc.filter",
768 "CondFormatRule::importCfRule - rule type/subtype mismatch");
772 case BIFF12_CFRULE_TYPE_ICONSET:
774 nSubType != BIFF12_CFRULE_SUB_ICONSET,
"sc.filter",
775 "CondFormatRule::importCfRule - rule type/subtype mismatch");
776 OSL_ENSURE( nOperator == 0,
"CondFormatRule::importCfRule - unexpected operator value" );
780 OSL_FAIL(
"CondFormatRule::importCfRule - unknown rule type" );
817 OUString aReplaceFormula;
824 case XML_duplicateValues:
827 case XML_uniqueValues:
833 case XML_containsText:
834 OSL_ENSURE(
maModel.
mnOperator == XML_containsText,
"CondFormatRule::finalizeImport - unexpected operator" );
837 case XML_notContainsText:
839 OSL_ENSURE(
maModel.
mnOperator == XML_notContains,
"CondFormatRule::finalizeImport - unexpected operator" );
843 OSL_ENSURE(
maModel.
mnOperator == XML_beginsWith,
"CondFormatRule::finalizeImport - unexpected operator" );
847 OSL_ENSURE(
maModel.
mnOperator == XML_endsWith,
"CondFormatRule::finalizeImport - unexpected operator" );
852 case XML_containsBlanks:
853 aReplaceFormula =
"LEN(TRIM(#B))=0";
855 case XML_notContainsBlanks:
856 aReplaceFormula =
"LEN(TRIM(#B))>0";
858 case XML_containsErrors:
861 case XML_notContainsErrors:
880 case XML_aboveAverage:
900 if( !aReplaceFormula.isEmpty() )
903 sal_Int32 nStrPos = aReplaceFormula.getLength();
904 while( (nStrPos = aReplaceFormula.lastIndexOf(
'#', nStrPos )) >= 0 )
906 switch( aReplaceFormula[ nStrPos + 1 ] )
909 if( aAddress.isEmpty() )
911 aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aAddress );
914 OSL_FAIL(
"CondFormatRule::finalizeImport - unknown placeholder" );
947 std::unique_ptr<ScTokenArray> pTokenArray2;
960 &aTokenArray, pTokenArray2.get(), rDoc, aPos, aStyleName);
1027 SAL_WARN(
"sc.filter",
"CondFormatRule::finalizeImport - unknown time period type" );
1045 mpColor->AddEntries( pFormatEntry, &rDoc, aPos );
1053 mpDataBar->SetData( pFormatEntry, &rDoc, aPos );
1062 mpIconSet->SetData( pFormatEntry, &rDoc, aPos );
1098 mbReadyForFinalize(false)
1118 xRule->importCfRule( rAttribs );
1134 xRule->importCfRule(
rStrm );
1160 return std::make_shared<CondFormatRule>( *
this,
mpFormat );
1165 if( xRule && (xRule->getPriority() > 0) )
1167 OSL_ENSURE(
maRules.find( xRule->getPriority() ) ==
maRules.end(),
"CondFormat::insertRule - multiple rules with equal priority" );
1168 maRules[ xRule->getPriority() ] = xRule;
1180 xCondFmt->importConditionalFormatting( rAttribs );
1189 for (
auto const& it : *pList)
1191 if (it->GetRange() == rRange)
1200class ScRangeListHasher
1203 size_t operator() (
ScRangeList const& rRanges)
const
1206 for (
size_t nIdx = 0; nIdx < rRanges.
size(); ++nIdx)
1207 nHash += rRanges[nIdx].hashArea();
1218 if ( rRule && rRule->GetDataBarData() == pTarget )
1219 rRule->finalizeImport();
1230 if (xCondFmt == rCondFmt)
1233 if (aRanges == rCondFmt->getRanges())
1235 xFoundFmt = rCondFmt;
1242 xRule->mpFormat = xFoundFmt->mpFormat;
1243 xFoundFmt->insertRule(xRule);
1246 return static_cast<bool>(xFoundFmt);
1251 std::unordered_set<size_t> aDoneExtCFs;
1252 typedef std::unordered_map<ScRangeList, CondFormat*, ScRangeListHasher> RangeMap;
1256 if (aRangeMap.find(rxCondFormat->getRanges()) != aRangeMap.end())
1258 aRangeMap[rxCondFormat->getRanges()] = rxCondFormat.get();
1261 size_t nExtCFIndex = 0;
1265 const ScRangeList& rRange = rxExtCondFormat->getRange();
1266 RangeMap::iterator it = aRangeMap.find(rRange);
1267 if (it != aRangeMap.end())
1270 const std::vector<std::unique_ptr<ScFormatEntry>>& rEntries = rxExtCondFormat->getEntries();
1271 const std::vector<sal_Int32>& rPriorities = rxExtCondFormat->getPriorities();
1272 size_t nEntryIdx = 0;
1273 for (
const auto& rxEntry : rEntries)
1279 sal_Int32 nPriority = rPriorities[nEntryIdx];
1280 if (nPriority == -1)
1282 xRule->setFormatEntry(nPriority, pNewEntry);
1287 aDoneExtCFs.insert(nExtCFIndex);
1304 if (rNextRules.empty() || rMinRules.empty())
1306 if (rNextRules.begin()->first < rMinRules.begin()->first)
1317 rxCondFormat->finalizeImport();
1319 for (
const auto& rxCfRule :
maCfRules )
1322 rxCfRule->finalizeImport();
1328 if (aDoneExtCFs.count(nExtCFIndex))
1335 const ScRangeList& rRange = rxExtCondFormat->getRange();
1341 auto pNewFormat = std::make_unique<ScConditionalFormat>(0, pDoc);
1342 pFormat = pNewFormat.get();
1348 const std::vector< std::unique_ptr<ScFormatEntry> >& rEntries = rxExtCondFormat->getEntries();
1349 for (
const auto& rxEntry : rEntries)
1351 pFormat->
AddEntry(rxEntry->Clone(pDoc));
1363 xCondFmt->importCondFormatting(
rStrm );
1388 case XML_between:
return ConditionOperator2::BETWEEN;
1389 case XML_equal:
return ConditionOperator2::EQUAL;
1390 case XML_greaterThan:
return ConditionOperator2::GREATER;
1391 case XML_greaterThanOrEqual:
return ConditionOperator2::GREATER_EQUAL;
1392 case XML_lessThan:
return ConditionOperator2::LESS;
1393 case XML_lessThanOrEqual:
return ConditionOperator2::LESS_EQUAL;
1394 case XML_notBetween:
return ConditionOperator2::NOT_BETWEEN;
1395 case XML_notEqual:
return ConditionOperator2::NOT_EQUAL;
1396 case XML_duplicateValues:
return ConditionOperator2::DUPLICATE;
1423 CondFormatRef xCondFmt = std::make_shared<CondFormat>( *
this );
1467 pDataBar->
mbNeg =
true;
1498 sal_Int32 nSize = 0;
1499 rtl_math_ConversionStatus eStatus = rtl_math_ConversionStatus_Ok;
1527 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
1536 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
1545 ::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
1556 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 SetValue(double nValue)
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)
void importPositiveFillColor(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.
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::unique_ptr< sal_Int32[]> pData
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
OUString msScaleTypeValue