[Libreoffice-commits] core.git: 14 commits - sc/qa sc/source
Markus Mohrhard
markus.mohrhard at googlemail.com
Sat May 16 21:49:12 PDT 2015
sc/qa/unit/ucalc.cxx | 160 ++++++++++++++++++++++++++++++
sc/qa/unit/ucalc.hxx | 4
sc/source/core/data/colorscale.cxx | 99 +++++++++---------
sc/source/filter/oox/condformatbuffer.cxx | 5
sc/source/ui/condformat/condformatdlg.cxx | 4
5 files changed, 220 insertions(+), 52 deletions(-)
New commits:
commit 1e8d6bb3e64700b0309bbc3331109d08404972e8
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 06:44:47 2015 +0200
add a few more databar length tests
Change-Id: I178a028d65acaf80fdfe23c3911c1f178650b9c1
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 430a1fb..ad0ae3d 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5970,6 +5970,26 @@ void Test::testDataBarLengthAutomaticAxis()
testDataBarLengthImpl(m_pDoc, aValues2, ScRange(1,0,0,1,15,0),
-4, COLORSCALE_VALUE, 8, COLORSCALE_VALUE, 1.0/3.0 * 100, databar::AUTOMATIC);
+ ScDataBarLengthData aValues3[] = {
+ { 2, 0.0 },
+ { 3, 25.0 },
+ { 4, 50.0 },
+ { 6, 100.0 },
+ { 0, -200 }
+ };
+ testDataBarLengthImpl(m_pDoc, aValues3, ScRange(2,0,0,2,3,0),
+ 0, COLORSCALE_MIN, 0, COLORSCALE_MAX, 0, databar::AUTOMATIC);
+
+ ScDataBarLengthData aValues4[] = {
+ { 2, 40.0 },
+ { 3, 60.0 },
+ { 4, 80.0 },
+ { 5, 100.0 },
+ { 0, -200 }
+ };
+ testDataBarLengthImpl(m_pDoc, aValues4, ScRange(3,0,0,3,3,0),
+ 0, COLORSCALE_AUTO, 0, COLORSCALE_AUTO, 0, databar::AUTOMATIC);
+
m_pDoc->DeleteTab(0);
}
commit 0b43d4232e0f6eacfdca8334c6cc19eece47d79a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 05:45:20 2015 +0200
add tests for last round of fixes
Change-Id: I5c6d079e8da8797edae4f0649524fcd70c84f2bf
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 78e7af6..430a1fb 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5890,7 +5890,7 @@ struct ScDataBarLengthData
void testDataBarLengthImpl(ScDocument* pDoc, ScDataBarLengthData* pData, const ScRange& rRange,
double nMinVal, ScColorScaleEntryType eMinType,
double nMaxVal, ScColorScaleEntryType eMaxType,
- double nZeroPos)
+ double nZeroPos, databar::ScAxisPosition eAxisPos)
{
ScConditionalFormat* pFormat = new ScConditionalFormat(1, pDoc);
ScRangeList aRangeList(rRange);
@@ -5902,6 +5902,8 @@ void testDataBarLengthImpl(ScDocument* pDoc, ScDataBarLengthData* pData, const S
pFormat->AddEntry(pDatabar);
ScDataBarFormatData* pFormatData = new ScDataBarFormatData();
+ pFormatData->meAxisPosition = eAxisPos;
+
pFormatData->mpLowerLimit.reset(new ScColorScaleEntry());
pFormatData->mpLowerLimit->SetValue(nMinVal);
pFormatData->mpLowerLimit->SetType(eMinType);
@@ -5927,7 +5929,7 @@ void testDataBarLengthImpl(ScDocument* pDoc, ScDataBarLengthData* pData, const S
}
-void Test::testDataBarLength()
+void Test::testDataBarLengthAutomaticAxis()
{
m_pDoc->InsertTab(0, "Test");
@@ -5944,7 +5946,7 @@ void Test::testDataBarLength()
};
testDataBarLengthImpl(m_pDoc, aValues, ScRange(0,0,0,0,7,0),
- 3, COLORSCALE_VALUE, 7, COLORSCALE_VALUE, 0.0);
+ 3, COLORSCALE_VALUE, 7, COLORSCALE_VALUE, 0.0, databar::AUTOMATIC);
ScDataBarLengthData aValues2[] = {
{ -6, -100 },
@@ -5966,7 +5968,52 @@ void Test::testDataBarLength()
{ 0, -200 }
};
testDataBarLengthImpl(m_pDoc, aValues2, ScRange(1,0,0,1,15,0),
- -4, COLORSCALE_VALUE, 8, COLORSCALE_VALUE, 1.0/3.0 * 100);
+ -4, COLORSCALE_VALUE, 8, COLORSCALE_VALUE, 1.0/3.0 * 100, databar::AUTOMATIC);
+
+ m_pDoc->DeleteTab(0);
+}
+
+void Test::testDataBarLengthMiddleAxis()
+{
+ m_pDoc->InsertTab(0, "Test");
+
+ ScDataBarLengthData aValues[] = {
+ { 1, 25.0 },
+ { 2, 25.0 },
+ { 3, 37.5 },
+ { 4, 50.0 },
+ { 5, 62.5 },
+ { 6, 75.0 },
+ { 7, 87.5 },
+ { 8, 100.0 },
+ { 9, 100.0 },
+ { 0, -200 }
+ };
+
+ testDataBarLengthImpl(m_pDoc, aValues, ScRange(0,0,0,0,8,0),
+ 2, COLORSCALE_VALUE, 8, COLORSCALE_VALUE, 50.0, databar::MIDDLE);
+
+ ScDataBarLengthData aValues2[] = {
+ { -6, -50 },
+ { -5, -50 },
+ { -4, -50 },
+ { -3, -37.5 },
+ { -2, -25.0 },
+ { -1, -12.5 },
+ { 0, 0.0 },
+ { 1, 12.5 },
+ { 2, 25.0 },
+ { 3, 37.5 },
+ { 4, 50.0 },
+ { 5, 62.5 },
+ { 6, 75.0 },
+ { 7, 87.5 },
+ { 8, 100.0 },
+ { 9, 100.0 },
+ { 0, -200 }
+ };
+ testDataBarLengthImpl(m_pDoc, aValues2, ScRange(1,0,0,1,15,0),
+ -4, COLORSCALE_VALUE, 8, COLORSCALE_VALUE, 50.0, databar::MIDDLE);
m_pDoc->DeleteTab(0);
}
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index ff8356e..a2bd053 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -419,7 +419,8 @@ public:
void testCondCopyPasteSheetBetweenDoc();
void testCondCopyPasteSheet();
void testIconSet();
- void testDataBarLength();
+ void testDataBarLengthAutomaticAxis();
+ void testDataBarLengthMiddleAxis();
void testImportStream();
void testDeleteContents();
@@ -632,7 +633,8 @@ public:
CPPUNIT_TEST(testCondCopyPasteSheetBetweenDoc);
CPPUNIT_TEST(testCondCopyPasteSheet);
CPPUNIT_TEST(testIconSet);
- CPPUNIT_TEST(testDataBarLength);
+ CPPUNIT_TEST(testDataBarLengthAutomaticAxis);
+ CPPUNIT_TEST(testDataBarLengthMiddleAxis);
CPPUNIT_TEST(testImportStream);
CPPUNIT_TEST(testDeleteContents);
CPPUNIT_TEST(testTransliterateText);
commit 2649cbd38433f1e20da167d54b2caf6a69a9be7a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 05:45:07 2015 +0200
a few more databar length fixes
Change-Id: I29f27d3a84d16d9d6e9d51c4e86881fff6aa4b96
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index cf55990..9be59b7 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -936,19 +936,19 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
{
pInfo->mnZero = 50;
double nAbsMax = std::max(std::abs(nMin), std::abs(nMax));
- if (nValue < 0)
+ if (nValue < 0 && nMin < 0)
{
if (nValue < nMin)
- pInfo->mnLength = -nMaxLength;
+ pInfo->mnLength = nMaxLength * (nMin/nAbsMax);
else
pInfo->mnLength = nMaxLength * (nValue/nAbsMax);
}
else
{
if (nValue > nMax)
- pInfo->mnLength = nMaxLength;
+ pInfo->mnLength = nMaxLength * (nMax/nAbsMax);
else
- pInfo->mnLength = nMaxLength * (nValue/nAbsMax);
+ pInfo->mnLength = nMaxLength * (std::max(nValue, nMin)/nAbsMax);
}
}
commit 2d09ea9537cababd3ea8d44e5b4225791beac1bc
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 05:01:34 2015 +0200
also test zero position
Change-Id: I74dac1362acb04453c51d93ce9fd400a4ce22f2f
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 6114eb3..78e7af6 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5889,7 +5889,8 @@ struct ScDataBarLengthData
void testDataBarLengthImpl(ScDocument* pDoc, ScDataBarLengthData* pData, const ScRange& rRange,
double nMinVal, ScColorScaleEntryType eMinType,
- double nMaxVal, ScColorScaleEntryType eMaxType)
+ double nMaxVal, ScColorScaleEntryType eMaxType,
+ double nZeroPos)
{
ScConditionalFormat* pFormat = new ScConditionalFormat(1, pDoc);
ScRangeList aRangeList(rRange);
@@ -5919,6 +5920,7 @@ void testDataBarLengthImpl(ScDocument* pDoc, ScDataBarLengthData* pData, const S
ScDataBarInfo* pInfo = pDatabar->GetDataBarInfo(ScAddress(nCol, i, 0));
CPPUNIT_ASSERT(pInfo);
ASSERT_DOUBLES_EQUAL(pData[i].nLength, pInfo->mnLength);
+ ASSERT_DOUBLES_EQUAL(nZeroPos, pInfo->mnZero);
}
delete pFormat;
}
@@ -5942,7 +5944,7 @@ void Test::testDataBarLength()
};
testDataBarLengthImpl(m_pDoc, aValues, ScRange(0,0,0,0,7,0),
- 3, COLORSCALE_VALUE, 7, COLORSCALE_VALUE);
+ 3, COLORSCALE_VALUE, 7, COLORSCALE_VALUE, 0.0);
ScDataBarLengthData aValues2[] = {
{ -6, -100 },
@@ -5964,7 +5966,7 @@ void Test::testDataBarLength()
{ 0, -200 }
};
testDataBarLengthImpl(m_pDoc, aValues2, ScRange(1,0,0,1,15,0),
- -4, COLORSCALE_VALUE, 8, COLORSCALE_VALUE);
+ -4, COLORSCALE_VALUE, 8, COLORSCALE_VALUE, 1.0/3.0 * 100);
m_pDoc->DeleteTab(0);
}
commit 3257372f3434cca2428bfdbc57dd777135c65b34
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 04:53:55 2015 +0200
add more databar length tests
Change-Id: I16ea569d360e75290b9b5a54b915c83dd99db759
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 4a76629..6114eb3 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5909,12 +5909,12 @@ void testDataBarLengthImpl(ScDocument* pDoc, ScDataBarLengthData* pData, const S
pFormatData->mpUpperLimit->SetType(eMaxType);
pDatabar->SetDataBarData(pFormatData);
- for (size_t i = 0; pData[i].nVal != 0; ++i)
+ for (size_t i = 0; pData[i].nLength != -200; ++i)
{
pDoc->SetValue(nCol, i, 0, pData[i].nVal);
}
- for (size_t i = 0; pData[i].nVal != 0; ++i)
+ for (size_t i = 0; pData[i].nLength != -200; ++i)
{
ScDataBarInfo* pInfo = pDatabar->GetDataBarInfo(ScAddress(nCol, i, 0));
CPPUNIT_ASSERT(pInfo);
@@ -5937,12 +5937,35 @@ void Test::testDataBarLength()
{ 6, 75.0 },
{ 7, 100.0 },
{ 8, 100.0 },
- { 0, 0 }
+ { 9, 100.0 },
+ { 0, -200 }
};
testDataBarLengthImpl(m_pDoc, aValues, ScRange(0,0,0,0,7,0),
3, COLORSCALE_VALUE, 7, COLORSCALE_VALUE);
+ ScDataBarLengthData aValues2[] = {
+ { -6, -100 },
+ { -5, -100 },
+ { -4, -100 },
+ { -3, -75.0 },
+ { -2, -50.0 },
+ { -1, -25.0 },
+ { 0, 0.0 },
+ { 1, 12.5 },
+ { 2, 25.0 },
+ { 3, 37.5 },
+ { 4, 50.0 },
+ { 5, 62.5 },
+ { 6, 75.0 },
+ { 7, 87.5 },
+ { 8, 100.0 },
+ { 9, 100.0 },
+ { 0, -200 }
+ };
+ testDataBarLengthImpl(m_pDoc, aValues2, ScRange(1,0,0,1,15,0),
+ -4, COLORSCALE_VALUE, 8, COLORSCALE_VALUE);
+
m_pDoc->DeleteTab(0);
}
commit 8ad59d194491af8317b3770e83d93d2e32508947
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 04:53:22 2015 +0200
more databar length bugs fixed
Change-Id: I921e6dbbf62c3bd5c3c8552161ba6f5d25a0185b
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 4652587..cf55990 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -912,13 +912,15 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
else
pInfo->mnZero = 0;
+ double nMinNonNegative = std::max(0.0, nMin);
+ double nMaxNonPositive = std::min(0.0, nMax);
//calculate the length
if(nValue < 0 && nMin < 0)
{
if (nValue < nMin)
pInfo->mnLength = -100;
else
- pInfo->mnLength = -100 * (nValue-nMax)/(nMin-nMax);
+ pInfo->mnLength = -100 * (nValue-nMaxNonPositive)/(nMin-nMaxNonPositive);
}
else
{
@@ -927,7 +929,7 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
else if (nValue <= nMin)
pInfo->mnLength = 0;
else
- pInfo->mnLength = 100 * (nValue-nMin)/(nMax-nMin);
+ pInfo->mnLength = 100 * (nValue-nMinNonNegative)/(nMax-nMinNonNegative);
}
}
else if( mpFormatData->meAxisPosition == databar::MIDDLE)
commit a5f65a5c2836b000bc0b6f92d5a2a3d13133de71
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 03:11:46 2015 +0200
extract code into own method
Change-Id: I13fe9fcdbc056480b7eb66304f9ddef48bab3bd4
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index c9a46f8..4a76629 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5879,50 +5879,70 @@ void Test::testIconSet()
m_pDoc->DeleteTab(0);
}
-void Test::testDataBarLength()
+namespace {
+
+struct ScDataBarLengthData
{
- m_pDoc->InsertTab(0, "Test");
+ double nVal;
+ double nLength;
+};
- ScConditionalFormat* pFormat = new ScConditionalFormat(1, m_pDoc);
- ScRangeList aRangeList(ScRange(0,0,0,0,7,0));
+void testDataBarLengthImpl(ScDocument* pDoc, ScDataBarLengthData* pData, const ScRange& rRange,
+ double nMinVal, ScColorScaleEntryType eMinType,
+ double nMaxVal, ScColorScaleEntryType eMaxType)
+{
+ ScConditionalFormat* pFormat = new ScConditionalFormat(1, pDoc);
+ ScRangeList aRangeList(rRange);
pFormat->SetRange(aRangeList);
- ScDataBarFormat* pDatabar = new ScDataBarFormat(m_pDoc);
+ SCCOL nCol = rRange.aStart.Col();
+
+ ScDataBarFormat* pDatabar = new ScDataBarFormat(pDoc);
pFormat->AddEntry(pDatabar);
ScDataBarFormatData* pFormatData = new ScDataBarFormatData();
pFormatData->mpLowerLimit.reset(new ScColorScaleEntry());
- pFormatData->mpLowerLimit->SetValue(3);
- pFormatData->mpLowerLimit->SetType(COLORSCALE_VALUE);
+ pFormatData->mpLowerLimit->SetValue(nMinVal);
+ pFormatData->mpLowerLimit->SetType(eMinType);
pFormatData->mpUpperLimit.reset(new ScColorScaleEntry());
- pFormatData->mpUpperLimit->SetValue(7);
- pFormatData->mpUpperLimit->SetType(COLORSCALE_VALUE);
+ pFormatData->mpUpperLimit->SetValue(nMaxVal);
+ pFormatData->mpUpperLimit->SetType(eMaxType);
pDatabar->SetDataBarData(pFormatData);
- struct {
- double nVal; double nLength;
- } aValues[] = {
+ for (size_t i = 0; pData[i].nVal != 0; ++i)
+ {
+ pDoc->SetValue(nCol, i, 0, pData[i].nVal);
+ }
+
+ for (size_t i = 0; pData[i].nVal != 0; ++i)
+ {
+ ScDataBarInfo* pInfo = pDatabar->GetDataBarInfo(ScAddress(nCol, i, 0));
+ CPPUNIT_ASSERT(pInfo);
+ ASSERT_DOUBLES_EQUAL(pData[i].nLength, pInfo->mnLength);
+ }
+ delete pFormat;
+}
+
+}
+
+void Test::testDataBarLength()
+{
+ m_pDoc->InsertTab(0, "Test");
+
+ ScDataBarLengthData aValues[] = {
{ 2, 0 },
{ 3, 0 },
{ 4, 25.0 },
{ 5, 50.0 },
{ 6, 75.0 },
{ 7, 100.0 },
- { 8, 100.0 }
+ { 8, 100.0 },
+ { 0, 0 }
};
- for (size_t i = 0; i < SAL_N_ELEMENTS(aValues); ++i)
- {
- m_pDoc->SetValue(0, i, 0, aValues[i].nVal);
- }
+ testDataBarLengthImpl(m_pDoc, aValues, ScRange(0,0,0,0,7,0),
+ 3, COLORSCALE_VALUE, 7, COLORSCALE_VALUE);
- for (size_t i = 0; i < SAL_N_ELEMENTS(aValues); ++i)
- {
- ScDataBarInfo* pInfo = pDatabar->GetDataBarInfo(ScAddress(0, i, 0));
- CPPUNIT_ASSERT(pInfo);
- ASSERT_DOUBLES_EQUAL(aValues[i].nLength, pInfo->mnLength);
- }
- delete pFormat;
m_pDoc->DeleteTab(0);
}
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 2369bac..4652587 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -913,7 +913,7 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
pInfo->mnZero = 0;
//calculate the length
- if(nValue < 0)
+ if(nValue < 0 && nMin < 0)
{
if (nValue < nMin)
pInfo->mnLength = -100;
commit 31719b052740766c43df508999b691af9075aa3d
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 03:07:45 2015 +0200
initial test for databar length calculation
Change-Id: I6fb47b7987733e4047008430a62f77d58cc592ad
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 6503ddc..c9a46f8 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5879,6 +5879,53 @@ void Test::testIconSet()
m_pDoc->DeleteTab(0);
}
+void Test::testDataBarLength()
+{
+ m_pDoc->InsertTab(0, "Test");
+
+ ScConditionalFormat* pFormat = new ScConditionalFormat(1, m_pDoc);
+ ScRangeList aRangeList(ScRange(0,0,0,0,7,0));
+ pFormat->SetRange(aRangeList);
+
+ ScDataBarFormat* pDatabar = new ScDataBarFormat(m_pDoc);
+ pFormat->AddEntry(pDatabar);
+
+ ScDataBarFormatData* pFormatData = new ScDataBarFormatData();
+ pFormatData->mpLowerLimit.reset(new ScColorScaleEntry());
+ pFormatData->mpLowerLimit->SetValue(3);
+ pFormatData->mpLowerLimit->SetType(COLORSCALE_VALUE);
+ pFormatData->mpUpperLimit.reset(new ScColorScaleEntry());
+ pFormatData->mpUpperLimit->SetValue(7);
+ pFormatData->mpUpperLimit->SetType(COLORSCALE_VALUE);
+ pDatabar->SetDataBarData(pFormatData);
+
+ struct {
+ double nVal; double nLength;
+ } aValues[] = {
+ { 2, 0 },
+ { 3, 0 },
+ { 4, 25.0 },
+ { 5, 50.0 },
+ { 6, 75.0 },
+ { 7, 100.0 },
+ { 8, 100.0 }
+ };
+
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aValues); ++i)
+ {
+ m_pDoc->SetValue(0, i, 0, aValues[i].nVal);
+ }
+
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aValues); ++i)
+ {
+ ScDataBarInfo* pInfo = pDatabar->GetDataBarInfo(ScAddress(0, i, 0));
+ CPPUNIT_ASSERT(pInfo);
+ ASSERT_DOUBLES_EQUAL(aValues[i].nLength, pInfo->mnLength);
+ }
+ delete pFormat;
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testImportStream()
{
sc::AutoCalcSwitch aAC(*m_pDoc, true); // turn on auto calc.
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 1cec088..ff8356e 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -419,6 +419,7 @@ public:
void testCondCopyPasteSheetBetweenDoc();
void testCondCopyPasteSheet();
void testIconSet();
+ void testDataBarLength();
void testImportStream();
void testDeleteContents();
@@ -631,6 +632,7 @@ public:
CPPUNIT_TEST(testCondCopyPasteSheetBetweenDoc);
CPPUNIT_TEST(testCondCopyPasteSheet);
CPPUNIT_TEST(testIconSet);
+ CPPUNIT_TEST(testDataBarLength);
CPPUNIT_TEST(testImportStream);
CPPUNIT_TEST(testDeleteContents);
CPPUNIT_TEST(testTransliterateText);
commit a8fc28682da6223520706f990598f58362fad9d5
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 03:07:30 2015 +0200
another databar length calculation bug
Change-Id: I164e1da11fe43b87c9fba32249439cbce860da6a
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index d9876eb..2369bac 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -924,6 +924,8 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
{
if ( nValue > nMax )
pInfo->mnLength = 100;
+ else if (nValue <= nMin)
+ pInfo->mnLength = 0;
else
pInfo->mnLength = 100 * (nValue-nMin)/(nMax-nMin);
}
commit de72cead8f8f9e20302b8aa2d174c2359260d1a2
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 03:07:03 2015 +0200
add missing DeleteTab in test
Change-Id: I396b9416e60aeba6576be7e3accdc9b2ae6575c4
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index c5d7a98..6503ddc 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5876,6 +5876,7 @@ void Test::testIconSet()
}
delete pEntry;
+ m_pDoc->DeleteTab(0);
}
void Test::testImportStream()
commit fed568a27f1810beb93fc127ee7392b1a6131628
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun May 17 02:12:37 2015 +0200
fix more conditional format crashes, tdf#90982
Change-Id: I009df010f93641310c31031f535d50fb42a655ba
diff --git a/sc/source/ui/condformat/condformatdlg.cxx b/sc/source/ui/condformat/condformatdlg.cxx
index e256f74..9f4d302 100644
--- a/sc/source/ui/condformat/condformatdlg.cxx
+++ b/sc/source/ui/condformat/condformatdlg.cxx
@@ -324,6 +324,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, ListBox*, pBox)
case condformat::entry::ICONSET:
return 0;
}
+ itr->disposeAndClear();
*itr = VclPtr<ScColorScale3FrmtEntry>::Create(this, mpDoc, maPos);
mpDialogParent->InvalidateRefData();
(*itr)->SetActive();
@@ -332,6 +333,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, ListBox*, pBox)
if((*itr)->GetType() == condformat::entry::CONDITION)
return 0;
+ itr->disposeAndClear();
*itr = VclPtr<ScConditionFrmtEntry>::Create(this, mpDoc, mpDialogParent, maPos);
mpDialogParent->InvalidateRefData();
(*itr)->SetActive();
@@ -340,6 +342,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, ListBox*, pBox)
if((*itr)->GetType() == condformat::entry::FORMULA)
return 0;
+ itr->disposeAndClear();
*itr = VclPtr<ScFormulaFrmtEntry>::Create(this, mpDoc, mpDialogParent, maPos);
mpDialogParent->InvalidateRefData();
(*itr)->SetActive();
@@ -348,6 +351,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, ListBox*, pBox)
if((*itr)->GetType() == condformat::entry::DATE)
return 0;
+ itr->disposeAndClear();
*itr = VclPtr<ScDateFrmtEntry>::Create( this, mpDoc );
mpDialogParent->InvalidateRefData();
(*itr)->SetActive();
commit 01f29d865e62f6a5371f4459c66f035e56326f5b
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat May 16 20:22:00 2015 +0200
fix incorrect databar length calculation
Change-Id: I8d6fda8b78daa228fff62f2af8f5f14c7aa03312
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 35d0cf7..d9876eb 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -892,8 +892,12 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
}
else if (mpFormatData->meAxisPosition == databar::AUTOMATIC)
{
- double nMaxNegative = 0;
- double nMinPositive = 0;
+ // if auto is used we may need to adjust it
+ // for the length calculation
+ if (mpFormatData->mpLowerLimit->GetType() == COLORSCALE_AUTO && nMin > 0)
+ nMin = 0;
+ if (mpFormatData->mpUpperLimit->GetType() == COLORSCALE_MAX && nMax < 0)
+ nMax = 0;
//calculate the zero position first
if(nMin < 0)
@@ -908,27 +912,20 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
else
pInfo->mnZero = 0;
- // if max or min is used we may need to adjust it
- // for the length calculation
- if (mpFormatData->mpLowerLimit->GetType() == COLORSCALE_MIN && nMin > 0)
- nMinPositive = nMin;
- if (mpFormatData->mpUpperLimit->GetType() == COLORSCALE_MAX && nMax < 0)
- nMaxNegative = nMax;
-
//calculate the length
if(nValue < 0)
{
if (nValue < nMin)
pInfo->mnLength = -100;
else
- pInfo->mnLength = -100 * (nValue-nMaxNegative)/(nMin-nMaxNegative);
+ pInfo->mnLength = -100 * (nValue-nMax)/(nMin-nMax);
}
else
{
if ( nValue > nMax )
pInfo->mnLength = 100;
else
- pInfo->mnLength = (nValue-nMinPositive)/(nMax-nMinPositive)*100;
+ pInfo->mnLength = 100 * (nValue-nMin)/(nMax-nMin);
}
}
else if( mpFormatData->meAxisPosition == databar::MIDDLE)
commit c35dc39928824fc258080dd1ba2eb0569559e544
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat May 16 20:01:31 2015 +0200
little refactoring in databar code
Change-Id: Icf2943604106440ff0b1979ebe10497f01fea784
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 176b1c8..35d0cf7 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -890,66 +890,64 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
}
pInfo->mnZero = 0;
}
- else
+ else if (mpFormatData->meAxisPosition == databar::AUTOMATIC)
{
- double nMinPositive = 0;
double nMaxNegative = 0;
+ double nMinPositive = 0;
+
//calculate the zero position first
- if(mpFormatData->meAxisPosition == databar::AUTOMATIC)
+ if(nMin < 0)
{
- if(nMin < 0)
+ if(nMax < 0)
+ pInfo->mnZero = 100;
+ else
{
- if(nMax < 0)
- pInfo->mnZero = 100;
- else
- {
- pInfo->mnZero = -100*nMin/(nMax-nMin);
- }
+ pInfo->mnZero = -100*nMin/(nMax-nMin);
}
- else
- pInfo->mnZero = 0;
+ }
+ else
+ pInfo->mnZero = 0;
- // if max or min is used we may need to adjust it
- // for the length calculation
- if (mpFormatData->mpLowerLimit->GetType() == COLORSCALE_MIN && nMin > 0)
- nMinPositive = nMin;
- if (mpFormatData->mpUpperLimit->GetType() == COLORSCALE_MAX && nMax < 0)
- nMaxNegative = nMax;
+ // if max or min is used we may need to adjust it
+ // for the length calculation
+ if (mpFormatData->mpLowerLimit->GetType() == COLORSCALE_MIN && nMin > 0)
+ nMinPositive = nMin;
+ if (mpFormatData->mpUpperLimit->GetType() == COLORSCALE_MAX && nMax < 0)
+ nMaxNegative = nMax;
- //calculate the length
- if(nValue < 0)
- {
- if (nValue < nMin)
- pInfo->mnLength = -100;
- else
- pInfo->mnLength = -100 * (nValue-nMaxNegative)/(nMin-nMaxNegative);
- }
+ //calculate the length
+ if(nValue < 0)
+ {
+ if (nValue < nMin)
+ pInfo->mnLength = -100;
else
- {
- if ( nValue > nMax )
- pInfo->mnLength = 100;
- else
- pInfo->mnLength = (nValue-nMinPositive)/(nMax-nMinPositive)*100;
- }
+ pInfo->mnLength = -100 * (nValue-nMaxNegative)/(nMin-nMaxNegative);
}
- else if( mpFormatData->meAxisPosition == databar::MIDDLE)
+ else
{
- pInfo->mnZero = 50;
- double nAbsMax = std::max(std::abs(nMin), std::abs(nMax));
- if (nValue < 0)
- {
- if (nValue < nMin)
- pInfo->mnLength = -nMaxLength;
- else
- pInfo->mnLength = nMaxLength * (nValue/nAbsMax);
- }
+ if ( nValue > nMax )
+ pInfo->mnLength = 100;
else
- {
- if (nValue > nMax)
- pInfo->mnLength = nMaxLength;
- else
- pInfo->mnLength = nMaxLength * (nValue/nAbsMax);
- }
+ pInfo->mnLength = (nValue-nMinPositive)/(nMax-nMinPositive)*100;
+ }
+ }
+ else if( mpFormatData->meAxisPosition == databar::MIDDLE)
+ {
+ pInfo->mnZero = 50;
+ double nAbsMax = std::max(std::abs(nMin), std::abs(nMax));
+ if (nValue < 0)
+ {
+ if (nValue < nMin)
+ pInfo->mnLength = -nMaxLength;
+ else
+ pInfo->mnLength = nMaxLength * (nValue/nAbsMax);
+ }
+ else
+ {
+ if (nValue > nMax)
+ pInfo->mnLength = nMaxLength;
+ else
+ pInfo->mnLength = nMaxLength * (nValue/nAbsMax);
}
}
commit 598f0e26c16f18b6ea03ef1e0e6d7d9dddf6d10f
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat May 16 16:47:37 2015 +0200
don't use alpha for now in cond format OOXML colors
Change-Id: I1be02cf847b75352ef4c013265ef62a2d7af341c
diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx
index 927513c..955b304 100644
--- a/sc/source/filter/oox/condformatbuffer.cxx
+++ b/sc/source/filter/oox/condformatbuffer.cxx
@@ -164,12 +164,13 @@ namespace {
::Color ARgbToARgbComponents( sal_uInt32& nRgb )
{
- sal_Int32 ornA = 255 - ((nRgb >> 24) & 0xFF);
+ // sal_Int32 ornA = 255 - ((nRgb >> 24) & 0xFF);
+ //
sal_Int32 ornR = (nRgb >> 16) & 0xFF;
sal_Int32 ornG = (nRgb >> 8) & 0xFF;
sal_Int32 ornB = nRgb & 0xFF;
- return ::Color(ornA, ornR, ornG, ornB);
+ return ::Color(/*ornA*/ 0, ornR, ornG, ornB);
}
::Color importOOXColor(const AttributeList& rAttribs, ThemeBuffer& rThemeBuffer, GraphicHelper& rGraphicHelper)
More information about the Libreoffice-commits
mailing list