summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2021-01-27 10:46:05 +0300
committerMiklos Vajna <vmiklos@collabora.com>2021-03-05 10:20:47 +0100
commitdb5b95ada67fece82e68871e5eff0c028afd8d9c (patch)
tree7f448b9ae0dcba7ea3f2ceb2fe519785ed552f50
parentbe773bc5960def8c51de0e0e41db837e001aa8fd (diff)
tdf#139940 oox: mark end before growing largest segment backwards
This fixes a regression in 7.1 (backported to 7.0.1) caused by commit 73993fdb5d4b507694cd0edf80887d19f7e2bf9a for tdf#134183. The largest segment has already been found, so we know where the next segment starts. Now if we grow it backwards, that shouldn't affect where it ends. So flag the end before growing the start, otherwise we would have to recalculate the end again. Change-Id: Iaae401d0438e533c7498be56f48fa153f7d3ff0a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110004 Tested-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Justin Luth <justin_luth@sil.org> (cherry picked from commit 247963e53cce24c199a751c8ffb17f58b3a7d473) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111926 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--chart2/qa/extras/chart2import.cxx10
-rw-r--r--oox/source/drawingml/fillproperties.cxx4
2 files changed, 13 insertions, 1 deletions
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index fa3fe8fef6e2..8e38308ff56f 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -840,6 +840,16 @@ void Chart2ImportTest::testBnc889755()
CPPUNIT_ASSERT_EQUAL(OUString("Nov-13"), aRowLabels[13]);
CPPUNIT_ASSERT_EQUAL(OUString("Dec-13"), aRowLabels[14]);
CPPUNIT_ASSERT_EQUAL(OUString("Jan-14"), aRowLabels[15]);
+
+ //tdf#139940 - the title's gradient was lost and was filled with solid blue, instead of a "blue underline".
+ uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW);
+ // Shape "Title 3"
+ uno::Reference<beans::XPropertySet> xShapeProps(xPage->getByIndex(5), uno::UNO_QUERY_THROW);
+ awt::Gradient aTransparence;
+ xShapeProps->getPropertyValue("FillTransparenceGradient") >>= aTransparence;
+ CPPUNIT_ASSERT(aTransparence.StartColor != aTransparence.EndColor);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xffffff), aTransparence.StartColor);
}
void Chart2ImportTest::testBnc882383()
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index aa97dfbe4994..a4eedfaa6d63 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -624,6 +624,9 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
aGradient.Angle = static_cast< sal_Int16 >( (8100 - (nDmlAngle / (PER_DEGREE / 10))) % 3600 );
Color aStartColor, aEndColor;
+ // Make a note where the widest segment stops, because we will try to grow it next.
+ auto aWidestSegmentEnd = std::next(aWidestSegmentStart);
+
// Try to grow the widest segment backwards: if a previous segment has the same
// color, just different transparency, include it.
while (aWidestSegmentStart != aGradientStops.begin())
@@ -638,7 +641,6 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
aWidestSegmentStart = it;
}
- auto aWidestSegmentEnd = std::next(aWidestSegmentStart);
// Try to grow the widest segment forward: if a next segment has the same
// color, just different transparency, include it.
while (aWidestSegmentEnd != std::prev(aGradientStops.end()))