| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2008 The Android Open Source Project | 2  * Copyright 2008 The Android Open Source Project | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #include "SkStrokerPriv.h" | 8 #include "SkStrokerPriv.h" | 
| 9 #include "SkGeometry.h" | 9 #include "SkGeometry.h" | 
| 10 #include "SkPath.h" | 10 #include "SkPath.h" | 
| (...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1049         SkScalar dist2 = pt_to_line(end, start, quadPts->fTangentStart); | 1049         SkScalar dist2 = pt_to_line(end, start, quadPts->fTangentStart); | 
| 1050         if (SkTMax(dist1, dist2) <= fInvResScaleSquared) { | 1050         if (SkTMax(dist1, dist2) <= fInvResScaleSquared) { | 
| 1051             return STROKER_RESULT(kDegenerate_ResultType, depth, quadPts, | 1051             return STROKER_RESULT(kDegenerate_ResultType, depth, quadPts, | 
| 1052                     "SkTMax(dist1=%g, dist2=%g) <= fInvResScaleSquared", dist1, 
      dist2); | 1052                     "SkTMax(dist1=%g, dist2=%g) <= fInvResScaleSquared", dist1, 
      dist2); | 
| 1053         } | 1053         } | 
| 1054         return STROKER_RESULT(kSplit_ResultType, depth, quadPts, | 1054         return STROKER_RESULT(kSplit_ResultType, depth, quadPts, | 
| 1055                 "(numerA=%g >= 0) == (numerB=%g >= 0)", numerA, numerB); | 1055                 "(numerA=%g >= 0) == (numerB=%g >= 0)", numerA, numerB); | 
| 1056     } | 1056     } | 
| 1057     // check to see if the denomerator is teeny relative to the numerator | 1057     // check to see if the denomerator is teeny relative to the numerator | 
| 1058     bool validDivide = SkScalarAbs(numerA) * SK_ScalarNearlyZero < SkScalarAbs(d
      enom); | 1058     bool validDivide = SkScalarAbs(numerA) * SK_ScalarNearlyZero < SkScalarAbs(d
      enom); | 
| 1059     SkASSERT(!SkScalarNearlyZero(denom / numerA) == validDivide); | 1059 // the divide check is the same as checking if the scaled denom is nearly zero | 
|  | 1060 // (commented out because on some platforms the two are not bit-identical) | 
|  | 1061 //  SkASSERT(!SkScalarNearlyZero(denom / numerA) == validDivide); | 
| 1060     if (validDivide) { | 1062     if (validDivide) { | 
| 1061         if (kCtrlPt_RayType == intersectRayType) { | 1063         if (kCtrlPt_RayType == intersectRayType) { | 
| 1062             numerA /= denom; | 1064             numerA /= denom; | 
| 1063             SkPoint* ctrlPt = &quadPts->fQuad[1]; | 1065             SkPoint* ctrlPt = &quadPts->fQuad[1]; | 
| 1064             // the intersection of the tangents need not be on the tangent segme
      nt | 1066             // the intersection of the tangents need not be on the tangent segme
      nt | 
| 1065             // so 0 <= numerA <= 1 is not necessarily true | 1067             // so 0 <= numerA <= 1 is not necessarily true | 
| 1066             ctrlPt->fX = start.fX * (1 - numerA) + quadPts->fTangentStart.fX * n
      umerA; | 1068             ctrlPt->fX = start.fX * (1 - numerA) + quadPts->fTangentStart.fX * n
      umerA; | 
| 1067             ctrlPt->fY = start.fY * (1 - numerA) + quadPts->fTangentStart.fY * n
      umerA; | 1069             ctrlPt->fY = start.fY * (1 - numerA) + quadPts->fTangentStart.fY * n
      umerA; | 
| 1068         } | 1070         } | 
| 1069         return STROKER_RESULT(kQuad_ResultType, depth, quadPts, | 1071         return STROKER_RESULT(kQuad_ResultType, depth, quadPts, | 
| (...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1754         default: | 1756         default: | 
| 1755             break; | 1757             break; | 
| 1756     } | 1758     } | 
| 1757 | 1759 | 
| 1758     if (fWidth < SkMinScalar(rw, rh) && !fDoFill) { | 1760     if (fWidth < SkMinScalar(rw, rh) && !fDoFill) { | 
| 1759         r = rect; | 1761         r = rect; | 
| 1760         r.inset(radius, radius); | 1762         r.inset(radius, radius); | 
| 1761         dst->addRect(r, reverse_direction(dir)); | 1763         dst->addRect(r, reverse_direction(dir)); | 
| 1762     } | 1764     } | 
| 1763 } | 1765 } | 
| OLD | NEW | 
|---|