From 59db4be207ca6651a29366d326436ba2f40bb6ab Mon Sep 17 00:00:00 2001 From: Armin Le Grand Date: Thu, 4 Oct 2012 15:27:22 +0000 Subject: Related: #i120604# corrected 3d gradients adapted basegfx to be smarter in some areas (cherry picked from commit 888e64505474808166c29ada24178cc3e58d6c18) Conflicts: basegfx/inc/basegfx/pixel/bpixel.hxx basegfx/inc/basegfx/point/b2dhompoint.hxx basegfx/inc/basegfx/point/b3dhompoint.hxx basegfx/inc/basegfx/raster/rasterconvert3d.hxx basegfx/inc/basegfx/tuple/b2dtuple.hxx basegfx/inc/basegfx/tuple/b2i64tuple.hxx basegfx/inc/basegfx/tuple/b2ituple.hxx basegfx/inc/basegfx/tuple/b3dtuple.hxx basegfx/inc/basegfx/tuple/b3i64tuple.hxx basegfx/inc/basegfx/tuple/b3ituple.hxx basegfx/source/point/b2dhompoint.cxx basegfx/source/tuple/b2ituple.cxx Change-Id: Id92864093dd40d34bd20b130cc3b405a7b8f9d91 --- include/basegfx/tuple/b2i64tuple.hxx | 56 +++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 23 deletions(-) (limited to 'include/basegfx/tuple/b2i64tuple.hxx') diff --git a/include/basegfx/tuple/b2i64tuple.hxx b/include/basegfx/tuple/b2i64tuple.hxx index debb4cabe578..13ac79ba9aa0 100644 --- a/include/basegfx/tuple/b2i64tuple.hxx +++ b/include/basegfx/tuple/b2i64tuple.hxx @@ -196,18 +196,16 @@ namespace basegfx inline B2I64Tuple minimum(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB) { - B2I64Tuple aMin( - (rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(), - (rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY()); - return aMin; + return B2I64Tuple( + std::min(rTupB.getX(), rTupA.getX()), + std::min(rTupB.getY(), rTupA.getY())); } inline B2I64Tuple maximum(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB) { - B2I64Tuple aMax( - (rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(), - (rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY()); - return aMax; + return B2I64Tuple( + std::max(rTupB.getX(), rTupA.getX()), + std::max(rTupB.getY(), rTupA.getY())); } inline B2I64Tuple absolute(const B2I64Tuple& rTup) @@ -218,28 +216,40 @@ namespace basegfx return aAbs; } - inline B2DTuple interpolate(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, double t) + inline B2I64Tuple interpolate(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, double t) { - B2DTuple aInt( - ((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(), - ((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY()); - return aInt; + if(rOld1 == rOld2) + { + return rOld1; + } + else if(0.0 >= t) + { + return rOld1; + } + else if(1.0 <= t) + { + return rOld2; + } + else + { + return B2I64Tuple( + basegfx::fround64(((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX()), + basegfx::fround64(((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY())); + } } - inline B2DTuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2) + inline B2I64Tuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2) { - B2DTuple aAvg( - (rOld1.getX() + rOld2.getX()) * 0.5, - (rOld1.getY() + rOld2.getY()) * 0.5); - return aAvg; + return B2I64Tuple( + rOld1.getX() == rOld2.getX() ? rOld1.getX() : basegfx::fround64((rOld1.getX() + rOld2.getX()) * 0.5), + rOld1.getY() == rOld2.getY() ? rOld1.getY() : basegfx::fround64((rOld1.getY() + rOld2.getY()) * 0.5)); } - inline B2DTuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, const B2I64Tuple& rOld3) + inline B2I64Tuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, const B2I64Tuple& rOld3) { - B2DTuple aAvg( - (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0), - (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0)); - return aAvg; + return B2I64Tuple( + (rOld1.getX() == rOld2.getX() && rOld2.getX() == rOld3.getX()) ? rOld1.getX() : basegfx::fround64((rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0)), + (rOld1.getY() == rOld2.getY() && rOld2.getY() == rOld3.getY()) ? rOld1.getY() : basegfx::fround64((rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0))); } inline B2I64Tuple operator+(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB) -- cgit v1.2.3