[cu2quPen] Remove deprecated ignore_single_points
This commit is contained in:
parent
3a3b8af154
commit
64bce6fc9b
@ -31,13 +31,6 @@ class Cu2QuPen(AbstractPen):
|
|||||||
value equal, or close to UPEM / 1000.
|
value equal, or close to UPEM / 1000.
|
||||||
reverse_direction: flip the contours' direction but keep starting point.
|
reverse_direction: flip the contours' direction but keep starting point.
|
||||||
stats: a dictionary counting the point numbers of quadratic segments.
|
stats: a dictionary counting the point numbers of quadratic segments.
|
||||||
ignore_single_points: don't emit contours containing only a single point
|
|
||||||
|
|
||||||
NOTE: The "ignore_single_points" argument is deprecated since v1.3.0,
|
|
||||||
which dropped Robofab support. It's no longer needed to special-case
|
|
||||||
UFO2-style anchors (aka "named points") when using ufoLib >= 2.0,
|
|
||||||
as these are no longer drawn onto pens as single-point contours,
|
|
||||||
but are handled separately as anchors.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
@ -46,7 +39,6 @@ class Cu2QuPen(AbstractPen):
|
|||||||
max_err,
|
max_err,
|
||||||
reverse_direction=False,
|
reverse_direction=False,
|
||||||
stats=None,
|
stats=None,
|
||||||
ignore_single_points=False,
|
|
||||||
):
|
):
|
||||||
if reverse_direction:
|
if reverse_direction:
|
||||||
self.pen = ReverseContourPen(other_pen)
|
self.pen = ReverseContourPen(other_pen)
|
||||||
@ -54,17 +46,6 @@ class Cu2QuPen(AbstractPen):
|
|||||||
self.pen = other_pen
|
self.pen = other_pen
|
||||||
self.max_err = max_err
|
self.max_err = max_err
|
||||||
self.stats = stats
|
self.stats = stats
|
||||||
if ignore_single_points:
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
warnings.warn(
|
|
||||||
"ignore_single_points is deprecated and "
|
|
||||||
"will be removed in future versions",
|
|
||||||
UserWarning,
|
|
||||||
stacklevel=2,
|
|
||||||
)
|
|
||||||
self.ignore_single_points = ignore_single_points
|
|
||||||
self.start_pt = None
|
|
||||||
self.current_pt = None
|
self.current_pt = None
|
||||||
|
|
||||||
def _check_contour_is_open(self):
|
def _check_contour_is_open(self):
|
||||||
@ -75,20 +56,14 @@ class Cu2QuPen(AbstractPen):
|
|||||||
if self.current_pt is not None:
|
if self.current_pt is not None:
|
||||||
raise AssertionError("closePath or endPath is required")
|
raise AssertionError("closePath or endPath is required")
|
||||||
|
|
||||||
def _add_moveTo(self):
|
|
||||||
if self.start_pt is not None:
|
|
||||||
self.pen.moveTo(self.start_pt)
|
|
||||||
self.start_pt = None
|
|
||||||
|
|
||||||
def moveTo(self, pt):
|
def moveTo(self, pt):
|
||||||
self._check_contour_is_closed()
|
self._check_contour_is_closed()
|
||||||
self.start_pt = self.current_pt = pt
|
self.current_pt = pt
|
||||||
if not self.ignore_single_points:
|
self.pen.moveTo(pt)
|
||||||
self._add_moveTo()
|
self.current_pt = pt
|
||||||
|
|
||||||
def lineTo(self, pt):
|
def lineTo(self, pt):
|
||||||
self._check_contour_is_open()
|
self._check_contour_is_open()
|
||||||
self._add_moveTo()
|
|
||||||
self.pen.lineTo(pt)
|
self.pen.lineTo(pt)
|
||||||
self.current_pt = pt
|
self.current_pt = pt
|
||||||
|
|
||||||
@ -98,7 +73,6 @@ class Cu2QuPen(AbstractPen):
|
|||||||
if n == 1:
|
if n == 1:
|
||||||
self.lineTo(points[0])
|
self.lineTo(points[0])
|
||||||
elif n > 1:
|
elif n > 1:
|
||||||
self._add_moveTo()
|
|
||||||
self.pen.qCurveTo(*points)
|
self.pen.qCurveTo(*points)
|
||||||
self.current_pt = points[-1]
|
self.current_pt = points[-1]
|
||||||
else:
|
else:
|
||||||
@ -130,16 +104,13 @@ class Cu2QuPen(AbstractPen):
|
|||||||
|
|
||||||
def closePath(self):
|
def closePath(self):
|
||||||
self._check_contour_is_open()
|
self._check_contour_is_open()
|
||||||
if self.start_pt is None:
|
self.pen.closePath()
|
||||||
# if 'start_pt' is _not_ None, we are ignoring single-point paths
|
self.current_pt = None
|
||||||
self.pen.closePath()
|
|
||||||
self.current_pt = self.start_pt = None
|
|
||||||
|
|
||||||
def endPath(self):
|
def endPath(self):
|
||||||
self._check_contour_is_open()
|
self._check_contour_is_open()
|
||||||
if self.start_pt is None:
|
self.pen.endPath()
|
||||||
self.pen.endPath()
|
self.current_pt = None
|
||||||
self.current_pt = self.start_pt = None
|
|
||||||
|
|
||||||
def addComponent(self, glyphName, transformation):
|
def addComponent(self, glyphName, transformation):
|
||||||
self._check_contour_is_closed()
|
self._check_contour_is_closed()
|
||||||
|
@ -271,46 +271,6 @@ class TestCu2QuPen(unittest.TestCase, _TestPenMixin):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_ignore_single_points(self):
|
|
||||||
pen = DummyPen()
|
|
||||||
try:
|
|
||||||
logging.captureWarnings(True)
|
|
||||||
with CapturingLogHandler("py.warnings", level="WARNING") as log:
|
|
||||||
quadpen = Cu2QuPen(pen, MAX_ERR, ignore_single_points=True)
|
|
||||||
finally:
|
|
||||||
logging.captureWarnings(False)
|
|
||||||
quadpen.moveTo((0, 0))
|
|
||||||
quadpen.endPath()
|
|
||||||
quadpen.moveTo((1, 1))
|
|
||||||
quadpen.closePath()
|
|
||||||
|
|
||||||
self.assertGreaterEqual(len(log.records), 1)
|
|
||||||
if sys.version_info < (3, 11):
|
|
||||||
self.assertIn("ignore_single_points is deprecated", log.records[0].args[0])
|
|
||||||
else:
|
|
||||||
self.assertIn("ignore_single_points is deprecated", log.records[0].msg)
|
|
||||||
|
|
||||||
# single-point contours were ignored, so the pen commands are empty
|
|
||||||
self.assertFalse(pen.commands)
|
|
||||||
|
|
||||||
# redraw without ignoring single points
|
|
||||||
quadpen.ignore_single_points = False
|
|
||||||
quadpen.moveTo((0, 0))
|
|
||||||
quadpen.endPath()
|
|
||||||
quadpen.moveTo((1, 1))
|
|
||||||
quadpen.closePath()
|
|
||||||
|
|
||||||
self.assertTrue(pen.commands)
|
|
||||||
self.assertEqual(
|
|
||||||
str(pen).splitlines(),
|
|
||||||
[
|
|
||||||
"pen.moveTo((0, 0))",
|
|
||||||
"pen.endPath()",
|
|
||||||
"pen.moveTo((1, 1))",
|
|
||||||
"pen.closePath()",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TestCu2QuPointPen(unittest.TestCase, _TestPenMixin):
|
class TestCu2QuPointPen(unittest.TestCase, _TestPenMixin):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user