diff options
-rw-r--r-- | sc/inc/colorscale.hxx | 1 | ||||
-rw-r--r-- | sc/qa/unit/data/xlsx/condformat_theme_color.xlsx | bin | 0 -> 8937 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_filters-test.cxx | 35 | ||||
-rw-r--r-- | sc/source/core/data/colorscale.cxx | 8 |
4 files changed, 44 insertions, 0 deletions
diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx index 110a27a7c42c..593a662387d0 100644 --- a/sc/inc/colorscale.hxx +++ b/sc/inc/colorscale.hxx @@ -282,6 +282,7 @@ public: const_iterator end() const; ScColorScaleEntry* GetEntry(size_t nPos); + const ScColorScaleEntry* GetEntry(size_t nPos) const; size_t size() const; diff --git a/sc/qa/unit/data/xlsx/condformat_theme_color.xlsx b/sc/qa/unit/data/xlsx/condformat_theme_color.xlsx Binary files differnew file mode 100644 index 000000000000..8bab237406f4 --- /dev/null +++ b/sc/qa/unit/data/xlsx/condformat_theme_color.xlsx diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index 07b224f3dd7b..dbc5ac173330 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -131,6 +131,7 @@ public: void testColorScaleXLSX(); void testNewCondFormatODS(); void testNewCondFormatXLSX(); + void testCondFormatThemeColorXLSX(); void testLiteralInFormulaXLS(); @@ -237,6 +238,7 @@ public: CPPUNIT_TEST(testColorScaleXLSX); CPPUNIT_TEST(testNewCondFormatODS); CPPUNIT_TEST(testNewCondFormatXLSX); + CPPUNIT_TEST(testCondFormatThemeColorXLSX); CPPUNIT_TEST(testLiteralInFormulaXLS); CPPUNIT_TEST(testNumberFormatHTML); @@ -2342,6 +2344,39 @@ void ScFiltersTest::testNewCondFormatXLSX() xDocSh->DoClose(); } +void ScFiltersTest::testCondFormatThemeColorXLSX() +{ + ScDocShellRef xDocSh = ScBootstrapFixture::loadDoc( "condformat_theme_color.", XLSX ); + + CPPUNIT_ASSERT_MESSAGE("Failed to load condformat_theme_color.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(pEntry->GetType(), condformat::DATABAR); + const ScDataBarFormat* pDataBar = static_cast<const ScDataBarFormat*>(pEntry); + const ScDataBarFormatData* pDataBarFormatData = pDataBar->GetDataBarData(); + + CPPUNIT_ASSERT_EQUAL(Color(157, 195, 230), pDataBarFormatData->maPositiveColor); + CPPUNIT_ASSERT(pDataBarFormatData->mpNegativeColor.get()); + CPPUNIT_ASSERT_EQUAL(Color(COL_LIGHTRED), *pDataBarFormatData->mpNegativeColor.get()); + + pFormat = rDoc.GetCondFormat(0, 0, 1); + pEntry = pFormat->GetEntry(0); + CPPUNIT_ASSERT(pEntry); + CPPUNIT_ASSERT_EQUAL(pEntry->GetType(), condformat::COLORSCALE); + const ScColorScaleFormat* pColorScale = static_cast<const ScColorScaleFormat*>(pEntry); + CPPUNIT_ASSERT_EQUAL(size_t(2), pColorScale->size()); + const ScColorScaleEntry* pColorScaleEntry = pColorScale->GetEntry(0); + CPPUNIT_ASSERT(pColorScaleEntry); + CPPUNIT_ASSERT_EQUAL(Color(255, 230, 153), pColorScaleEntry->GetColor()); + + pColorScaleEntry = pColorScale->GetEntry(1); + CPPUNIT_ASSERT(pColorScaleEntry); + CPPUNIT_ASSERT_EQUAL(Color(157, 195, 230), pColorScaleEntry->GetColor()); +} + void ScFiltersTest::testLiteralInFormulaXLS() { ScDocShellRef xDocSh = loadDoc("shared-string/literal-in-formula.", XLS); diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx index 15fc61626b10..c41fc687bf14 100644 --- a/sc/source/core/data/colorscale.cxx +++ b/sc/source/core/data/colorscale.cxx @@ -679,6 +679,14 @@ ScColorScaleEntry* ScColorScaleFormat::GetEntry(size_t nPos) return &maColorScales[nPos]; } +const ScColorScaleEntry* ScColorScaleFormat::GetEntry(size_t nPos) const +{ + if (maColorScales.size() <= nPos) + return NULL; + + return &maColorScales[nPos]; +} + size_t ScColorScaleFormat::size() const { return maColorScales.size(); |