diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2016-10-29 15:31:29 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2016-10-29 16:17:06 +0000 |
commit | 1c708eee636c0cdf3da2ec62849618f3262044bc (patch) | |
tree | 9591959c2b6e3e5172d4f2189f8628c4c0f21db1 /svx | |
parent | 8a0318e4f81ed4ec8871010669a300f6aff4e80d (diff) |
tdf#103473: Ensure positive rectangle size
Also remove conversion of both negative scales into rotation,
because it is handled by flip; use strict comparison instead of
approximate float less because it's correct here, and also because
basegfx::fTools::less ultimately uses rtl_math_approxEqual, which
description states: attention
approxEqual( value!=0.0, 0.0 ) _never_ yields true.
Unit test included.
Change-Id: Ia878fce360cf8aed539d95f2d4a1a3ad94379978
Reviewed-on: https://gerrit.libreoffice.org/30373
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/svdotext.cxx | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index d799110844c7..7dd1b8d1d47e 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -1671,17 +1671,17 @@ void SdrTextObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b double fShearX(0.0); rMatrix.decompose(aScale, aTranslate, fRotate, fShearX); - // #i75086# Old DrawingLayer (GeoStat and geometry) does not support holding negative scalings - // in X and Y which equal a 180 degree rotation. Recognize it and react accordingly - if(basegfx::fTools::less(aScale.getX(), 0.0) && basegfx::fTools::less(aScale.getY(), 0.0)) + // flip? + bool bFlipX = aScale.getX() < 0.0, + bFlipY = aScale.getY() < 0.0; + if (bFlipX) { aScale.setX(fabs(aScale.getX())); + } + if (bFlipY) + { aScale.setY(fabs(aScale.getY())); - fRotate = fmod(fRotate + F_PI, F_2PI); } - // flip? - bool bFlipX = basegfx::fTools::less(aScale.getX(), 0.0), - bFlipY = basegfx::fTools::less(aScale.getY(), 0.0); // reset object shear and rotations aGeo.nRotationAngle = 0; |