def runTest(self): subpath = geom.Subpath() subpath.AddSegment(('L', (0.0, 0.0), (3.0, 0.0))) subpath.AddSegment(('L', (3.0, 0.0), (3.0, 5.0))) subpath.AddSegment(('B', (3.0, 5.0), (0.0, 5.0), (2.0, 6.0), (1.0, 6.0))) subpath.closed = True opt = art2polyarea.ConvertOptions() pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(pa.points.pos, [(0.0, 0.0), (3.0, 0.0), (3.0, 5.0), (1.5, 5.75), (0.0, 5.0)]) self.assertEqual(pa.poly, [0, 1, 2, 3, 4]) subpath = geom.Subpath() subpath.AddSegment(('L', (0.0, 0.0), (1.0, 0.0))) opt = art2polyarea.ConvertOptions() opt.smoothness = 0 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(pa.poly, []) subpath = _MakePolySubpath([(0.0, 0.0), (0.000001, 0.0), (1.0, 0.0), (2.0, 2.0), (2.0, 2.0004), (3.0, 5.0), (0.0, -0.00003)]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(pa.points.pos, [(0.0, 0.0), (1.0, 0.0), (2.0, 2.0), (3.0, 5.0)]) self.assertEqual(pa.poly, [0, 1, 2, 3])
def runTest(self): subpath = geom.Subpath() m = 0.551784 # magic number for circle approx by 4 beziers subpath.AddSegment(('B', (0.0, 0.0), (1.0, 1.0), (m, 0.0), (1.0, 1.0 - m))) subpath.AddSegment(('B', (1.0, 1.0), (0.0, 2.0), (1.0, 1.0 + m), (m, 2.0))) subpath.AddSegment(('L', (0.0, 2.0), (0.0, 0.0))) subpath.closed = True path = geom.Path() path.AddSubpath(subpath) opt = art2polyarea.ConvertOptions() opt.subdiv_kind = "EVEN" opt.smoothness = 0 art2polyarea._SetEvenLength(opt, [path]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 10) opt.smoothness = 1 art2polyarea._SetEvenLength(opt, [path]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 18) opt.smoothness = 2 art2polyarea._SetEvenLength(opt, [path]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 26)
def runTest(self): subpath = geom.Subpath() subpath.AddSegment(('L', (0.0, 0.0), (3.0, 0.0))) subpath.AddSegment(('L', (3.0, 0.0), (3.0, 5.0))) subpath.AddSegment( ('B', (3.0, 5.0), (0.0, 5.0), (2.0, 6.0), (1.0, 6.0))) subpath.closed = True opt = art2polyarea.ConvertOptions() pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(pa.points.pos, [(0.0, 0.0), (3.0, 0.0), (3.0, 5.0), (1.5, 5.75), (0.0, 5.0)]) self.assertEqual(pa.poly, [0, 1, 2, 3, 4]) subpath = geom.Subpath() subpath.AddSegment(('L', (0.0, 0.0), (1.0, 0.0))) opt = art2polyarea.ConvertOptions() opt.smoothness = 0 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(pa.poly, []) subpath = _MakePolySubpath([(0.0, 0.0), (0.000001, 0.0), (1.0, 0.0), (2.0, 2.0), (2.0, 2.0004), (3.0, 5.0), (0.0, -0.00003)]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(pa.points.pos, [(0.0, 0.0), (1.0, 0.0), (2.0, 2.0), (3.0, 5.0)]) self.assertEqual(pa.poly, [0, 1, 2, 3])
def runTest(self): subpath = geom.Subpath() m = 0.551784 # magic number for circle approx by 4 beziers subpath.AddSegment( ('B', (0.0, 0.0), (1.0, 1.0), (m, 0.0), (1.0, 1.0 - m))) subpath.AddSegment( ('B', (1.0, 1.0), (0.0, 2.0), (1.0, 1.0 + m), (m, 2.0))) subpath.AddSegment(('L', (0.0, 2.0), (0.0, 0.0))) subpath.closed = True path = geom.Path() path.AddSubpath(subpath) opt = art2polyarea.ConvertOptions() opt.subdiv_kind = "EVEN" opt.smoothness = 0 art2polyarea._SetEvenLength(opt, [path]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 10) opt.smoothness = 1 art2polyarea._SetEvenLength(opt, [path]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 18) opt.smoothness = 2 art2polyarea._SetEvenLength(opt, [path]) pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 26)
def runTest(self): subpath = geom.Subpath() m = 0.551784 # magic number for circle approx by 4 beziers subpath.AddSegment(('B', (0.0, 0.0), (1.0, 1.0), (m, 0.0), (1.0, 1.0 - m))) subpath.AddSegment(('B', (1.0, 1.0), (0.0, 2.0), (1.0, 1.0 + m), (m, 2.0))) subpath.AddSegment(('B', (0.0, 2.0), (-1.0, 1.0), (-m, 2.0), (-1.0, 1.0 + m))) subpath.AddSegment(('B', (-1.0, 1.0), (0.0, 0.0), (-1.0, 1.0 - m), (-m, 0.0))) subpath.closed = True opt = art2polyarea.ConvertOptions() opt.subdiv_kind = "ADAPTIVE" opt.smoothness = 0 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 4) opt.smoothness = 1 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 8) opt.smoothness = 2 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 16) opt.smoothness = 3 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 32) opt.smoothness = 4 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 64) opt.smoothness = 5 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 128) opt.smoothness = 6 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 128)
def runTest(self): subpath = geom.Subpath() m = 0.551784 # magic number for circle approx by 4 beziers subpath.AddSegment( ('B', (0.0, 0.0), (1.0, 1.0), (m, 0.0), (1.0, 1.0 - m))) subpath.AddSegment( ('B', (1.0, 1.0), (0.0, 2.0), (1.0, 1.0 + m), (m, 2.0))) subpath.AddSegment( ('B', (0.0, 2.0), (-1.0, 1.0), (-m, 2.0), (-1.0, 1.0 + m))) subpath.AddSegment( ('B', (-1.0, 1.0), (0.0, 0.0), (-1.0, 1.0 - m), (-m, 0.0))) subpath.closed = True opt = art2polyarea.ConvertOptions() opt.subdiv_kind = "ADAPTIVE" opt.smoothness = 0 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 4) opt.smoothness = 1 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 8) opt.smoothness = 2 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 16) opt.smoothness = 3 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 32) opt.smoothness = 4 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 64) opt.smoothness = 5 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 128) opt.smoothness = 6 pa = art2polyarea._SubpathToPolyArea(subpath, opt, geom.Points()) self.assertEqual(len(pa.poly), 128)