[Libreoffice-commits] core.git: 2 commits - starmath/qa starmath/source vcl/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Sun May 5 06:05:51 UTC 2019
starmath/qa/cppunit/test_node.cxx | 8 ++++++--
starmath/source/node.cxx | 5 ++++-
starmath/source/rect.cxx | 2 ++
vcl/source/animate/Animation.cxx | 25 +++++++++----------------
4 files changed, 21 insertions(+), 19 deletions(-)
New commits:
commit 13894996601daf10d133f4a71eb0b26794d782bc
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Sat May 4 21:46:31 2019 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sun May 5 08:05:16 2019 +0200
handle empty Rectangle better in starmath
which required fixing a unit test to call Prepare, otherwise the nodes
are not ready for layout
Change-Id: I763c1b05d4dfafa73ebaee55d080876848de94f6
Reviewed-on: https://gerrit.libreoffice.org/71800
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/starmath/qa/cppunit/test_node.cxx b/starmath/qa/cppunit/test_node.cxx
index a4c7df456399..7ee441ec1941 100644
--- a/starmath/qa/cppunit/test_node.cxx
+++ b/starmath/qa/cppunit/test_node.cxx
@@ -72,17 +72,21 @@ void NodeTest::testTdf47813()
#undef MATRIX
ScopedVclPtrInstance<VirtualDevice> pOutputDevice;
SmFormat aFmt;
+ pNodeA->Prepare(aFmt, *mxDocShell, 0);
pNodeA->Arrange(*pOutputDevice, aFmt);
+ pNodeC->Prepare(aFmt, *mxDocShell, 0);
pNodeC->Arrange(*pOutputDevice, aFmt);
+ pNodeL->Prepare(aFmt, *mxDocShell, 0);
pNodeL->Arrange(*pOutputDevice, aFmt);
+ pNodeR->Prepare(aFmt, *mxDocShell, 0);
pNodeR->Arrange(*pOutputDevice, aFmt);
long nWidthA = pNodeA->GetRect().GetWidth();
long nWidthC = pNodeC->GetRect().GetWidth();
long nWidthL = pNodeL->GetRect().GetWidth();
long nWidthR = pNodeR->GetRect().GetWidth();
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, nWidthC/static_cast<double>(nWidthA), 0.01);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, nWidthL/static_cast<double>(nWidthA), 0.01);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, nWidthR/static_cast<double>(nWidthA), 0.01);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, nWidthL/static_cast<double>(nWidthA), 0.02);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, nWidthR/static_cast<double>(nWidthA), 0.02);
}
void NodeTest::testTdf52225()
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index 97d97582826d..fcdcbbdb2e07 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -2064,6 +2064,7 @@ void SmTextNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell, i
SetRectHorAlign( RectHorAlign::Left );
maText = GetToken().aText;
+ assert(!maText.isEmpty());
GetFont() = rFormat.GetFont(GetFontDesc());
if (IsItalic( GetFont() ))
@@ -2402,7 +2403,9 @@ void SmMathSymbolNode::AdaptToY(OutputDevice &rDev, sal_uLong nHeight)
// get denominator of error factor for height
long nTmpBorderWidth = GetFont().GetBorderWidth();
- long nDenom = SmRect(aTmpDev, nullptr, GetText(), nTmpBorderWidth).GetHeight();
+ long nDenom = 0;
+ if (!GetText().isEmpty())
+ nDenom = SmRect(aTmpDev, nullptr, GetText(), nTmpBorderWidth).GetHeight();
// scale fontwidth with this error factor
aFntSize.setHeight( aFntSize.Height() * nHeight );
diff --git a/starmath/source/rect.cxx b/starmath/source/rect.cxx
index ab32022aac2a..113cf4998a65 100644
--- a/starmath/source/rect.cxx
+++ b/starmath/source/rect.cxx
@@ -38,6 +38,7 @@ bool SmGetGlyphBoundRect(const vcl::RenderContext &rDev,
// basically the same as 'GetTextBoundRect' (in class 'OutputDevice')
// but with a string as argument.
{
+ assert(!rText.isEmpty());
// handle special case first
if (rText.isEmpty())
{
@@ -183,6 +184,7 @@ SmRect::SmRect(const OutputDevice &rDev, const SmFormat *pFormat,
: aTopLeft(0, 0)
, aSize(rDev.GetTextWidth(rText), rDev.GetTextHeight())
{
+ assert(!rText.isEmpty());
const FontMetric aFM (rDev.GetFontMetric());
bool bIsMath = aFM.GetFamilyName().equalsIgnoreAsciiCase( FONTNAME_MATH );
bool bAllowSmaller = bIsMath && !SmIsMathAlpha(rText);
commit d83b1383ffbe98502c196cccae4bcb2eb3978f6a
Author: Adrien Ollier <adr.ollier at hotmail.fr>
AuthorDate: Sat May 4 07:20:36 2019 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sun May 5 08:05:08 2019 +0200
using an algorithm of the STL
makes the function shorter
Change-Id: I22118d9b86e5497cb9b566efe9151f2da646cb16
Signed-off-by: Adrien Ollier <adr.ollier at hotmail.fr>
Reviewed-on: https://gerrit.libreoffice.org/71806
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/vcl/source/animate/Animation.cxx b/vcl/source/animate/Animation.cxx
index 1382178aa6a0..3aeeadc649a8 100644
--- a/vcl/source/animate/Animation.cxx
+++ b/vcl/source/animate/Animation.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <algorithm>
#include <sal/config.h>
#include <tools/stream.hxx>
@@ -107,28 +108,20 @@ void Animation::Clear()
bool Animation::IsTransparent() const
{
- tools::Rectangle aRect(Point(), maGlobalSize);
- bool bRet = false;
+ tools::Rectangle aRect{ Point(), maGlobalSize };
// If some small bitmap needs to be replaced by the background,
// we need to be transparent, in order to be displayed correctly
// as the application (?) does not invalidate on non-transparent
// graphics due to performance reasons.
- for (auto const& pAnimationBitmap : maList)
- {
- if (Disposal::Back == pAnimationBitmap->meDisposal
- && tools::Rectangle(pAnimationBitmap->maPositionPixel, pAnimationBitmap->maSizePixel)
- != aRect)
- {
- bRet = true;
- break;
- }
- }
- if (!bRet)
- bRet = maBitmapEx.IsTransparent();
-
- return bRet;
+ return std::any_of(maList.begin(), maList.end(),
+ [&aRect](const std::unique_ptr<AnimationBitmap>& pAnim) -> bool {
+ return pAnim->meDisposal == Disposal::Back
+ && tools::Rectangle{ pAnim->maPositionPixel, pAnim->maSizePixel }
+ != aRect;
+ })
+ || maBitmapEx.IsTransparent();
}
sal_uLong Animation::GetSizeBytes() const
More information about the Libreoffice-commits
mailing list