Kaydet (Commit) 82aa4dbd authored tarafından Juan Picca's avatar Juan Picca Kaydeden (comit) David Tardon

Fraction: rewrite 'GetDenominator()==0' conditions

Change-Id: Ie42972db98da48b60b3f5314e019046b2a2ee0e7
Reviewed-on: https://gerrit.libreoffice.org/12238Reviewed-by: 's avatarDavid Tardon <dtardon@redhat.com>
Tested-by: 's avatarDavid Tardon <dtardon@redhat.com>
üst 3f66df98
......@@ -104,10 +104,16 @@ void CrookStretchPoly(XPolyPolygon& rPoly, const Point& rCenter, const Point& rR
inline void ResizePoint(Point& rPnt, const Point& rRef, Fraction xFact, Fraction yFact)
{
if (xFact.GetDenominator()==0) xFact=Fraction(xFact.GetNumerator(),1); // DivZero abfangen
if (yFact.GetDenominator()==0) yFact=Fraction(yFact.GetNumerator(),1); // DivZero abfangen
rPnt.X()=rRef.X()+ Round(((double)(rPnt.X()-rRef.X())*xFact.GetNumerator())/xFact.GetDenominator());
rPnt.Y()=rRef.Y()+ Round(((double)(rPnt.Y()-rRef.Y())*yFact.GetNumerator())/yFact.GetDenominator());
if (!xFact.IsValid()) {
SAL_WARN( "svx.svdraw", "invalid fraction xFact, using Fraction(1,1)" );
xFact = Fraction(1,1);
}
if (!yFact.IsValid()) {
SAL_WARN( "svx.svdraw", "invalid fraction yFact, using Fraction(1,1)" );
yFact = Fraction(1,1);
}
rPnt.X() = rRef.X() + Round( (rPnt.X() - rRef.X()) * double(xFact) );
rPnt.Y() = rRef.Y() + Round( (rPnt.Y() - rRef.Y()) * double(yFact) );
}
inline void RotatePoint(Point& rPnt, const Point& rRef, double sn, double cs)
......
......@@ -37,36 +37,24 @@ void ResizeRect(Rectangle& rRect, const Point& rRef, const Fraction& rxFact, con
Fraction xFact(rxFact);
Fraction yFact(ryFact);
{
if (xFact.GetDenominator()==0) {
long nWdt=rRect.Right()-rRect.Left();
if (xFact.GetNumerator()>=0) { // catch divisions by zero
xFact=Fraction(xFact.GetNumerator(),1);
if (nWdt==0) rRect.Right()++;
} else {
xFact=Fraction(xFact.GetNumerator(),-1);
if (nWdt==0) rRect.Left()--;
}
}
rRect.Left() =rRef.X()+Round(((double)(rRect.Left() -rRef.X())*xFact.GetNumerator())/xFact.GetDenominator());
rRect.Right() =rRef.X()+Round(((double)(rRect.Right() -rRef.X())*xFact.GetNumerator())/xFact.GetDenominator());
if (!xFact.IsValid()) {
SAL_WARN( "svx.svdraw", "invalid fraction xFract, using Fraction(1,1)" );
xFact = Fraction(1,1);
long nWdt = rRect.Right() - rRect.Left();
if (nWdt == 0) rRect.Right()++;
}
{
if (yFact.GetDenominator()==0) {
long nHgt=rRect.Bottom()-rRect.Top();
if (yFact.GetNumerator()>=0) { // catch divisions by zero
yFact=Fraction(yFact.GetNumerator(),1);
if (nHgt==0) rRect.Bottom()++;
} else {
yFact=Fraction(yFact.GetNumerator(),-1);
if (nHgt==0) rRect.Top()--;
}
yFact=Fraction(yFact.GetNumerator(),1); // catch divisions by zero
}
rRect.Top() =rRef.Y()+Round(((double)(rRect.Top() -rRef.Y())*yFact.GetNumerator())/yFact.GetDenominator());
rRect.Bottom()=rRef.Y()+Round(((double)(rRect.Bottom()-rRef.Y())*yFact.GetNumerator())/yFact.GetDenominator());
rRect.Left() = rRef.X() + Round( (rRect.Left() - rRef.X()) * double(xFact) );
rRect.Right() = rRef.X() + Round( (rRect.Right() - rRef.X()) * double(xFact) );
if (!yFact.IsValid()) {
SAL_WARN( "svx.svdraw", "invalid fraction yFract, using Fraction(1,1)" );
yFact = Fraction(1,1);
long nHgt = rRect.Bottom() - rRect.Top();
if (nHgt == 0) rRect.Bottom()++;
}
rRect.Top() = rRef.Y() + Round( (rRect.Top() - rRef.Y()) * double(yFact) );
rRect.Bottom() = rRef.Y() + Round( (rRect.Bottom() - rRef.Y()) * double(yFact) );
if (!bNoJustify) rRect.Justify();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment