33 #include <com/sun/star/sheet/ConditionOperator.hpp>
35 #include <rtl/math.hxx>
50 struct RefUpdateContext;
51 struct RefUpdateInsertTabContext;
52 struct RefUpdateDeleteTabContext;
53 struct RefUpdateMoveTabContext;
58 #define SC_COND_NOBLANKS 1
91 template<
typename charT,
typename traits>
92 inline std::basic_ostream<charT, traits> & operator <<(std::basic_ostream<charT, traits> &
stream,
const ScConditionMode& rMode)
139 stream <<
"BOTTOMPERCENT";
148 stream <<
"ABOVEEQUALAVERAGE";
151 stream <<
"BELOWEQUALAVERAGE";
169 stream <<
"NOTCONTAINSTEXT";
175 stream <<
"?(" <<
static_cast<int>(rMode) <<
")";
204 void setCallback(
const std::function<
void()>& aCallbackFunction);
240 virtual Type GetType()
const = 0;
251 virtual bool IsEqual(
const ScFormatEntry&,
bool bIgnoreSrcPos )
const;
253 virtual void startRendering();
254 virtual void endRendering();
260 template<
typename charT,
typename traits>
266 stream <<
"Condition";
269 stream <<
"ExtCondition";
272 stream <<
"Colorscale";
284 stream <<
"?(" <<
static_cast<int>(rType) <<
")";
295 if(nVal1 < nVal2 && !rtl::math::approxEqual(nVal1, nVal2))
330 static void SimplifyCompiledFormula( std::unique_ptr<ScTokenArray>& rFormula,
336 void Compile(
const OUString& rExpr1,
const OUString& rExpr2,
337 const OUString& rExprNmsp1,
const OUString& rExprNmsp2,
343 bool IsValid(
double nArg,
const ScAddress& rPos )
const;
344 bool IsValidStr(
const OUString& rArg,
const ScAddress& rPos )
const;
349 const OUString& rExpr1,
const OUString& rExpr2,
351 const OUString& rExprNmsp1,
const OUString& rExprNmsp2,
354 Type eType = Type::Condition );
372 void SetIgnoreBlank(
bool bSet);
378 void SetSrcString(
const OUString& rNew );
383 OUString GetExpression(
const ScAddress& rCursor, sal_uInt16 nPos, sal_uInt32 nNumFmt = 0,
388 std::unique_ptr<ScTokenArray> CreateFlatCopiedTokenArray( sal_uInt16 nPos )
const;
397 bool MarkUsedExternalReferences()
const;
403 static ScConditionMode GetModeFromApi(css::sheet::ConditionOperator nOperator);
408 bool NeedsRepaint()
const;
418 bool IsDuplicate(
double nArg,
const OUString& rStr)
const;
419 bool IsTopNElement(
double nArg )
const;
420 bool IsTopNPercent(
double nArg )
const;
421 bool IsBottomNElement(
double nArg )
const;
422 bool IsBottomNPercent(
double nArg )
const;
423 bool IsAboveAverage(
double nArg,
bool bEqual )
const;
424 bool IsBelowAverage(
double nArg,
bool bEqual )
const;
426 bool IsError(
const ScAddress& rPos )
const;
428 void FillCache()
const;
444 mutable std::unique_ptr<ScConditionEntryCache>
mpCache;
455 const OUString& rExpr1,
const OUString& rExpr2,
457 const OUString& rStyle,
462 Type eType = Type::Condition);
466 const OUString& rStyle );
473 const OUString&
GetStyle()
const {
return aStyleName; }
509 bool IsValid(
const ScAddress& rPos )
const;
515 void SetStyleName(
const OUString& rStyleName );
554 std::unique_ptr<ScConditionalFormat>
Clone(
ScDocument* pNewDoc =
nullptr)
const;
557 void RemoveEntry(
size_t nIndex);
563 bool IsEmpty()
const;
579 void RenameCellStyle( std::u16string_view rOld,
const OUString& rNew );
591 sal_uInt32
GetKey()
const {
return nKey; }
592 void SetKey(sal_uInt32 nNew) { nKey = nNew; }
594 bool MarkUsedExternalReferences()
const;
599 void startRendering();
609 bool operator()(std::unique_ptr<ScConditionalFormat>
const& lhs,
610 std::unique_ptr<ScConditionalFormat>
const& rhs)
const
612 return (*lhs) < (*rhs);
614 bool operator()(sal_uInt32 nKey, std::unique_ptr<ScConditionalFormat>
const& rpFormat)
const
616 return nKey < rpFormat->GetKey();
618 bool operator()(std::unique_ptr<ScConditionalFormat>
const& rpFormat, sal_uInt32 nKey)
const
620 return rpFormat->GetKey() < nKey;
628 typedef std::set<std::unique_ptr<ScConditionalFormat>,
639 void InsertNew( std::unique_ptr<ScConditionalFormat> pNew );
662 void RenameCellStyle( std::u16string_view rOld,
const OUString& rNew );
665 typedef ConditionalFormatContainer::iterator
iterator;
670 void RemoveFromDocument(
ScDocument& rDoc)
const;
674 const_iterator
begin()
const;
676 const_iterator
end()
const;
684 void startRendering();
687 sal_uInt32 getMaxKey()
const;
If set, cloned formula cells will start to listen to the document.
bool operator==(const XclFontData &rLeft, const XclFontData &rRight)
virtual Type GetType() const override
std::unique_ptr< ScTokenArray > pFormula2
std::unique_ptr< ScConditionEntryCache > mpCache
virtual void UpdateReference(sc::RefUpdateContext &) override
Context for reference update during shifting, moving or copying of cell ranges.
const OUString & GetStyle() const
condformat::ScCondFormatDateType GetDateType() const
virtual void UpdateMoveTab(sc::RefUpdateMoveTabContext &rCxt)=0
virtual void DataChanged() const
This is very similar to ScCellValue, except that it references the original value instead of copying ...
std::map< OUString, sal_Int32 > StringCacheType
bool operator()(double nVal1, double nVal2) const
ScConditionMode GetOperation() const
virtual void endRendering()
virtual void UpdateInsertTab(sc::RefUpdateInsertTabContext &) override
virtual void UpdateInsertTab(sc::RefUpdateInsertTabContext &rCxt)=0
enumrange< T >::Iterator begin(enumrange< T >)
size_t SCSIZE
size_t typedef to be able to find places where code was changed from USHORT to size_t and is used to ...
const OUString & GetSrcString() const
virtual void SetParent(ScConditionalFormat *pNew)=0
std::unique_ptr< ScFormulaListener > mpListener
virtual void UpdateReference(sc::RefUpdateContext &rCxt)=0
std::unique_ptr< ScFormulaCell > pFCell1
virtual bool IsEqual(const ScFormatEntry &, bool bIgnoreSrcPos) const
Reference< XAnimationNode > Clone(const Reference< XAnimationNode > &xSourceNode, const SdPage *pSource, const SdPage *pTarget)
virtual void UpdateMoveTab(sc::RefUpdateMoveTabContext &) override
condformat::ScCondFormatDateType meType
virtual Type GetType() const override
bool IsEqual(const ScFormatEntry &r, bool bIgnoreSrcPos) const override
virtual ScFormatEntry * Clone(ScDocument *pDoc) const =0
void UpdateStyleName(const OUString &rNew)
StringCacheType maStrings
const ScAddress & GetSrcPos() const
enumrange< T >::Iterator end(enumrange< T >)
Reference< XOutputStream > stream
virtual ScFormatEntry * Clone(ScDocument *pDoc) const override
bool operator<(const ScDPCollection::DBType &left, const ScDPCollection::DBType &right)
std::unique_ptr< Date > mpCache
virtual void SetParent(ScConditionalFormat *) override
std::unique_ptr< ScTokenArray > pFormula1
const OUString & GetStyleName() const
const formula::FormulaGrammar::Grammar eTempGrammar2
virtual void UpdateDeleteTab(sc::RefUpdateDeleteTabContext &rCxt)=0
virtual void startRendering()
ScDocument * GetDocument() const
ScConditionalFormat * pCondFormat
bool IsIgnoreBlank() const
virtual Type GetType() const override
std::map< double, sal_Int32, approx_less > ValueCacheType
const formula::FormulaGrammar::Grammar eTempGrammar1
std::unique_ptr< ScFormulaCell > pFCell2
virtual void UpdateDeleteTab(sc::RefUpdateDeleteTabContext &) override