Exemple #1
0
 def __init__(self, dist, angle, strokestyles=[]):
     pattern.__init__(self, painttype=1, tilingtype=1, xstep=dist, ystep=dist, bbox=None, trafo=trafo.rotate(angle))
     self.strokestyles = attr.mergeattrs([style.linewidth.THIN] + strokestyles)
     attr.checkattrs(self.strokestyles, [style.strokestyle])
     self.dist = dist
     self.angle = angle
     self.stroke(path.line_pt(0, 0, 0, unit.topt(dist)), self.strokestyles)
     self.stroke(path.line_pt(0, 0, unit.topt(dist), 0), self.strokestyles)
Exemple #2
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])
Exemple #3
0
    def _decocanvas(self, angle, dp, texrunner):
        dp.ensurenormpath()
        dist_pt = unit.topt(self.dist)

        c = canvas.canvas([canvas.clip(dp.path)])
        llx_pt, lly_pt, urx_pt, ury_pt = dp.path.bbox().highrestuple_pt()
        center_pt = 0.5*(llx_pt+urx_pt), 0.5*(lly_pt+ury_pt)
        radius_pt = 0.5*math.hypot(urx_pt-llx_pt, ury_pt-lly_pt) + dist_pt
        n = int(2*radius_pt / dist_pt) + 1
        for i in range(n):
            x_pt = center_pt[0] - radius_pt + i*dist_pt
            c.stroke(path.line_pt(x_pt, center_pt[1]-radius_pt, x_pt, center_pt[1]+radius_pt),
                     [trafo.rotate_pt(angle, center_pt[0], center_pt[1])] + self.strokestyles)
        return c
Exemple #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])
Exemple #5
0
    def _decocanvas(self, angle, dp, texrunner):
        dp.ensurenormpath()
        dist_pt = unit.topt(self.dist)

        c = canvas.canvas([canvas.clip(dp.path)])
        llx_pt, lly_pt, urx_pt, ury_pt = dp.path.bbox().highrestuple_pt()
        center_pt = 0.5 * (llx_pt + urx_pt), 0.5 * (lly_pt + ury_pt)
        radius_pt = 0.5 * math.hypot(urx_pt - llx_pt,
                                     ury_pt - lly_pt) + dist_pt
        n = int(2 * radius_pt / dist_pt) + 1
        for i in range(n):
            x_pt = center_pt[0] - radius_pt + i * dist_pt
            c.stroke(
                path.line_pt(x_pt, center_pt[1] - radius_pt, x_pt,
                             center_pt[1] + radius_pt),
                [trafo.rotate_pt(angle, center_pt[0], center_pt[1])] +
                self.strokestyles)
        return c