aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/colorLib/geometry.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/colorLib/geometry.py')
-rw-r--r--Lib/fontTools/colorLib/geometry.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/Lib/fontTools/colorLib/geometry.py b/Lib/fontTools/colorLib/geometry.py
index e62aead1..1ce161bf 100644
--- a/Lib/fontTools/colorLib/geometry.py
+++ b/Lib/fontTools/colorLib/geometry.py
@@ -1,6 +1,6 @@
"""Helpers for manipulating 2D points and vectors in COLR table."""
-from math import copysign, cos, hypot, pi
+from math import copysign, cos, hypot, isclose, pi
from fontTools.misc.roundTools import otRound
@@ -19,9 +19,7 @@ def _unit_vector(vec):
return (vec[0] / length, vec[1] / length)
-# This is the same tolerance used by Skia's SkTwoPointConicalGradient.cpp to detect
-# when a radial gradient's focal point lies on the end circle.
-_NEARLY_ZERO = 1 / (1 << 12) # 0.000244140625
+_CIRCLE_INSIDE_TOLERANCE = 1e-4
# The unit vector's X and Y components are respectively
@@ -64,10 +62,10 @@ class Circle:
def round(self):
return Circle(_round_point(self.centre), otRound(self.radius))
- def inside(self, outer_circle):
+ def inside(self, outer_circle, tolerance=_CIRCLE_INSIDE_TOLERANCE):
dist = self.radius + hypot(*_vector_between(self.centre, outer_circle.centre))
return (
- abs(outer_circle.radius - dist) <= _NEARLY_ZERO
+ isclose(outer_circle.radius, dist, rel_tol=_CIRCLE_INSIDE_TOLERANCE)
or outer_circle.radius > dist
)