sc/qa/unit/data/xlsx/condformat_databar.xlsx |binary sc/qa/unit/subsequent_filters_test.cxx | 27 +++++++++++++++++++++++++++ sc/source/filter/oox/extlstcontext.cxx | 18 +++++++++++++++--- 3 files changed, 42 insertions(+), 3 deletions(-)
New commits: commit cd262cf8585e3b7d2258703dd257cfd23c2ae44d Author: Henry Castro <hcas...@collabora.com> AuthorDate: Fri Mar 17 15:49:45 2023 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Thu Mar 23 07:15:54 2023 +0000 sc: qa: add databar unit test <x14:dataBar maxLength="100" minLength="0" border="1" axisPosition="automatic" direction="context" negativeBarBorderColorSameAsPositive="0"> <x14:cfvo type="num"> <xm:f>0</xm:f> </x14:cfvo> <x14:cfvo type="num"> <xm:f>1</xm:f> </x14:cfvo> <x14:fillColor rgb="FF63C384"/> <x14:borderColor rgb="FF63C384"/> <x14:negativeFillColor indexed="2"/> <x14:negativeBorderColor indexed="2"/> <x14:axisColor indexed="64"/> </x14:dataBar> Signed-off-by: Henry Castro <hcas...@collabora.com> Change-Id: Ib57dac07027e2c3c01ee556a3df791f49637be54 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149346 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Andras Timar <andras.ti...@collabora.com> diff --git a/sc/qa/unit/data/xlsx/condformat_databar.xlsx b/sc/qa/unit/data/xlsx/condformat_databar.xlsx new file mode 100644 index 000000000000..2d2d727322b7 Binary files /dev/null and b/sc/qa/unit/data/xlsx/condformat_databar.xlsx differ diff --git a/sc/qa/unit/subsequent_filters_test.cxx b/sc/qa/unit/subsequent_filters_test.cxx index 0f4923716490..c2c3ba68add2 100644 --- a/sc/qa/unit/subsequent_filters_test.cxx +++ b/sc/qa/unit/subsequent_filters_test.cxx @@ -166,6 +166,7 @@ public: void testCondFormatImportCellIs(); void testCondFormatThemeColor2XLSX(); // negative bar color and axis color void testCondFormatThemeColor3XLSX(); // theme index 2 and 3 are switched + void testCondFormatCfvoScaleValueXLSX(); void testComplexIconSetsXLSX(); void testTdf101104(); void testTdf64401(); @@ -288,6 +289,7 @@ public: CPPUNIT_TEST(testCondFormatImportCellIs); CPPUNIT_TEST(testCondFormatThemeColor2XLSX); CPPUNIT_TEST(testCondFormatThemeColor3XLSX); + CPPUNIT_TEST(testCondFormatCfvoScaleValueXLSX); CPPUNIT_TEST(testComplexIconSetsXLSX); CPPUNIT_TEST(testTdf101104); CPPUNIT_TEST(testTdf64401); @@ -2572,6 +2574,31 @@ void ScFiltersTest::testCondFormatThemeColor2XLSX() xDocSh->DoClose(); } +void ScFiltersTest::testCondFormatCfvoScaleValueXLSX() +{ + ScDocShellRef xDocSh = ScBootstrapFixture::loadDoc(u"condformat_databar.", FORMAT_XLSX); + + CPPUNIT_ASSERT_MESSAGE("Failed to load condformat_databar.xlsx", xDocSh.is()); + + ScDocument& rDoc = xDocSh->GetDocument(); + ScConditionalFormat* pFormat = rDoc.GetCondFormat(0, 0, 0); + const ScFormatEntry* pEntry = pFormat->GetEntry(0); + CPPUNIT_ASSERT(pEntry); + CPPUNIT_ASSERT_EQUAL(ScFormatEntry::Type::Databar, pEntry->GetType()); + const ScDataBarFormat* pDataBar = static_cast<const ScDataBarFormat*>(pEntry); + const ScDataBarFormatData* pDataBarFormatData = pDataBar->GetDataBarData(); + const ScColorScaleEntry* pLower = pDataBarFormatData->mpLowerLimit.get(); + const ScColorScaleEntry* pUpper = pDataBarFormatData->mpUpperLimit.get(); + + CPPUNIT_ASSERT_EQUAL(COLORSCALE_VALUE, pLower->GetType()); + CPPUNIT_ASSERT_EQUAL(COLORSCALE_VALUE, pUpper->GetType()); + + CPPUNIT_ASSERT_EQUAL(double(0.0), pLower->GetValue()); + CPPUNIT_ASSERT_EQUAL(double(1.0), pUpper->GetValue()); + + xDocSh->DoClose(); +} + namespace { void checkDatabarPositiveColor(const ScConditionalFormat* pFormat, const Color& rColor) commit 9d18195cc0bed315c260edc28b1b81ec33c3f091 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Fri Mar 17 11:07:14 2023 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Thu Mar 23 07:15:42 2023 +0000 sc: filter: oox: insert a new entry ScDataBarFormat if Id attribute... does not exist: <x14:cfRule type="dataBar" priority="1" id="{006000A4-0067-40D4-A5EF-00D900B80077}"> <x14:dataBar maxLength="100" minLength="0" border="1" axisPosition="automatic" direction="context" negativeBarBorderColorSameAsPositive="0"> <x14:cfvo type="num"> <xm:f>0</xm:f> </x14:cfvo> <x14:cfvo type="num"> <xm:f>1</xm:f> </x14:cfvo> <x14:fillColor rgb="FF63C384"/> <x14:borderColor rgb="FF63C384"/> <x14:negativeFillColor indexed="2"/> <x14:negativeBorderColor indexed="2"/> <x14:axisColor indexed="64"/> </x14:dataBar> </x14:cfRule> Signed-off-by: Henry Castro <hcas...@collabora.com> Change-Id: Ie2c1ba2c85d9eead963f4d9b1684d72b64fe815d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149345 Tested-by: Andras Timar <andras.ti...@collabora.com> Reviewed-by: Andras Timar <andras.ti...@collabora.com> diff --git a/sc/source/filter/oox/extlstcontext.cxx b/sc/source/filter/oox/extlstcontext.cxx index eb40c575f1b1..945e6dbfd988 100644 --- a/sc/source/filter/oox/extlstcontext.cxx +++ b/sc/source/filter/oox/extlstcontext.cxx @@ -165,11 +165,23 @@ ContextHandlerRef ExtConditionalFormattingContext::onCreateContext(sal_Int32 nEl if (aType == "dataBar") { // an ext entry does not need to have an existing corresponding entry + ScDataBarFormatData* pInfo; ExtLst::const_iterator aExt = getExtLst().find( aId ); - if(aExt == getExtLst().end()) - return nullptr; + if (aExt == getExtLst().end()) + { + pInfo = new ScDataBarFormatData(); + if (pInfo) + { + auto pFormat = std::make_unique<ScDataBarFormat>(&getScDocument()); + pFormat->SetDataBarData(pInfo); + maEntries.push_back(std::move(pFormat)); + } + } + else + { + pInfo = aExt->second; + } - ScDataBarFormatData* pInfo = aExt->second; if (!pInfo) { return nullptr;