Beispiel #1
0
 def updatenormpath(self, normpath, context):
     if normpath.normsubpaths[-1].epsilon is not None:
         normpath.append(normsubpath([normline_pt(self.x_pt, self.y_pt, self.x_pt, self.y_pt)],
                                     epsilon=normpath.normsubpaths[-1].epsilon))
     else:
         normpath.append(normsubpath(epsilon=normpath.normsubpaths[-1].epsilon))
     context.x_pt = context.subfirstx_pt = self.x_pt
     context.y_pt = context.subfirsty_pt = self.y_pt
Beispiel #2
0
 def createnormpath(self, epsilon=_marker):
     if epsilon is _marker:
         return normpath([normsubpath([normline_pt(self.x_pt, self.y_pt, self.x_pt, self.y_pt)])])
     elif epsilon is None:
         return normpath([normsubpath([pdfmoveto_pt(self.x_pt, self.y_pt, self.x_pt, self.y_pt)],
                                      epsilon=epsilon)])
     else:
         return normpath([normsubpath([normline_pt(self.x_pt, self.y_pt, self.x_pt, self.y_pt)],
                                      epsilon=epsilon)])
Beispiel #3
0
 def createnormpath(self, epsilon=_marker):
     if epsilon is _marker:
         return normpath([
             normsubpath(
                 _arctobezierpath(self.x_pt, self.y_pt, self.r_pt,
                                  self.angle2, self.angle1))
         ]).reversed()
     else:
         return normpath([
             normsubpath(_arctobezierpath(self.x_pt, self.y_pt, self.r_pt,
                                          self.angle2, self.angle1),
                         epsilon=epsilon)
         ]).reversed()
Beispiel #4
0
 def decorate(self, dp, texrunner):
     r_pt = 2
     dp.ensurenormpath()
     for normsubpath in dp.path.normsubpaths:
         for i, normsubpathitem in enumerate(normsubpath.normsubpathitems):
             if isinstance(normsubpathitem, normpath.normcurve_pt):
                 dp.ornaments.stroke(
                     normpath.normpath(
                         [normpath.normsubpath([normsubpathitem])]),
                     [color.rgb.green])
             else:
                 dp.ornaments.stroke(
                     normpath.normpath(
                         [normpath.normsubpath([normsubpathitem])]),
                     [color.rgb.blue])
     for normsubpath in dp.path.normsubpaths:
         for i, normsubpathitem in enumerate(normsubpath.normsubpathitems):
             if isinstance(normsubpathitem, normpath.normcurve_pt):
                 dp.ornaments.stroke(
                     path.line_pt(normsubpathitem.x0_pt,
                                  normsubpathitem.y0_pt,
                                  normsubpathitem.x1_pt,
                                  normsubpathitem.y1_pt),
                     [style.linestyle.dashed, color.rgb.red])
                 dp.ornaments.stroke(
                     path.line_pt(normsubpathitem.x2_pt,
                                  normsubpathitem.y2_pt,
                                  normsubpathitem.x3_pt,
                                  normsubpathitem.y3_pt),
                     [style.linestyle.dashed, color.rgb.red])
                 dp.ornaments.draw(
                     path.circle_pt(normsubpathitem.x1_pt,
                                    normsubpathitem.y1_pt, r_pt),
                     [filled([color.rgb.red])])
                 dp.ornaments.draw(
                     path.circle_pt(normsubpathitem.x2_pt,
                                    normsubpathitem.y2_pt, r_pt),
                     [filled([color.rgb.red])])
     for normsubpath in dp.path.normsubpaths:
         for i, normsubpathitem in enumerate(normsubpath.normsubpathitems):
             if not i:
                 x_pt, y_pt = normsubpathitem.atbegin_pt()
                 dp.ornaments.draw(path.circle_pt(x_pt, y_pt, r_pt),
                                   [filled])
             x_pt, y_pt = normsubpathitem.atend_pt()
             dp.ornaments.draw(path.circle_pt(x_pt, y_pt, r_pt), [filled])
Beispiel #5
0
 def updatenormpath(self, normpath, context):
     if normpath.normsubpaths[-1].closed:
         normpath.append(normsubpath([normline_pt(context.x_pt, context.y_pt,
                                                      *_arcpoint(self.x_pt, self.y_pt, self.r_pt, self.angle1))],
                                     epsilon=normpath.normsubpaths[-1].epsilon))
     else:
         normpath.normsubpaths[-1].append(normline_pt(context.x_pt, context.y_pt,
                                                      *_arcpoint(self.x_pt, self.y_pt, self.r_pt, self.angle1)))
     normpath.normsubpaths[-1].extend(_arctobezierpath(self.x_pt, self.y_pt, self.r_pt, self.angle1, self.angle2))
     context.x_pt, context.y_pt = _arcpoint(self.x_pt, self.y_pt, self.r_pt, self.angle2)
Beispiel #6
0
 def updatenormpath(self, normpath, context):
     if normpath.normsubpaths[-1].closed:
         normpath.append(normsubpath([normline_pt(context.x_pt, context.y_pt,
                                                      *_arcpoint(self.x_pt, self.y_pt, self.r_pt, self.angle1))],
                                     epsilon=normpath.normsubpaths[-1].epsilon))
     else:
         normpath.normsubpaths[-1].append(normline_pt(context.x_pt, context.y_pt,
                                                      *_arcpoint(self.x_pt, self.y_pt, self.r_pt, self.angle1)))
     bpathitems = _arctobezierpath(self.x_pt, self.y_pt, self.r_pt, self.angle2, self.angle1)
     bpathitems.reverse()
     for bpathitem in bpathitems:
         normpath.normsubpaths[-1].append(bpathitem.reversed())
     context.x_pt, context.y_pt = _arcpoint(self.x_pt, self.y_pt, self.r_pt, self.angle2)
Beispiel #7
0
 def decorate(self, dp, texrunner):
     r_pt = 2
     dp.ensurenormpath()
     for normsubpath in dp.path.normsubpaths:
         for i, normsubpathitem in enumerate(normsubpath.normsubpathitems):
             if isinstance(normsubpathitem, normpath.normcurve_pt):
                 dp.ornaments.stroke(normpath.normpath([normpath.normsubpath([normsubpathitem])]), [color.rgb.green])
             else:
                 dp.ornaments.stroke(normpath.normpath([normpath.normsubpath([normsubpathitem])]), [color.rgb.blue])
     for normsubpath in dp.path.normsubpaths:
         for i, normsubpathitem in enumerate(normsubpath.normsubpathitems):
             if isinstance(normsubpathitem, normpath.normcurve_pt):
                 dp.ornaments.stroke(path.line_pt(normsubpathitem.x0_pt, normsubpathitem.y0_pt, normsubpathitem.x1_pt, normsubpathitem.y1_pt), [style.linestyle.dashed, color.rgb.red])
                 dp.ornaments.stroke(path.line_pt(normsubpathitem.x2_pt, normsubpathitem.y2_pt, normsubpathitem.x3_pt, normsubpathitem.y3_pt), [style.linestyle.dashed, color.rgb.red])
                 dp.ornaments.draw(path.circle_pt(normsubpathitem.x1_pt, normsubpathitem.y1_pt, r_pt), [filled([color.rgb.red])])
                 dp.ornaments.draw(path.circle_pt(normsubpathitem.x2_pt, normsubpathitem.y2_pt, r_pt), [filled([color.rgb.red])])
     for normsubpath in dp.path.normsubpaths:
         for i, normsubpathitem in enumerate(normsubpath.normsubpathitems):
             if not i:
                 x_pt, y_pt = normsubpathitem.atbegin_pt()
                 dp.ornaments.draw(path.circle_pt(x_pt, y_pt, r_pt), [filled])
             x_pt, y_pt = normsubpathitem.atend_pt()
             dp.ornaments.draw(path.circle_pt(x_pt, y_pt, r_pt), [filled])
Beispiel #8
0
 def createnormpath(self, epsilon=_marker):
     if epsilon is _marker:
         return normpath([normsubpath(_arctobezierpath(self.x_pt, self.y_pt, self.r_pt, self.angle2, self.angle1))]).reversed()
     else:
         return normpath([normsubpath(_arctobezierpath(self.x_pt, self.y_pt, self.r_pt, self.angle2, self.angle1),
                                      epsilon=epsilon)]).reversed()