"""linecap of paths""" def __init__(self, value=0): attr.exclusiveattr.__init__(self, linecap) self.value = value def processPS(self, file, writer, context, registry, bbox): file.write("%d setlinecap\n" % self.value) def processPDF(self, file, writer, context, registry, bbox): file.write("%d J\n" % self.value) linecap.butt = linecap(0) linecap.round = linecap(1) linecap.square = linecap(2) linecap.clear = attr.clearclass(linecap) class linejoin(attr.exclusiveattr, strokestyle): """linejoin of paths""" def __init__(self, value=0): attr.exclusiveattr.__init__(self, linejoin) self.value = value def processPS(self, file, writer, context, registry, bbox): file.write("%d setlinejoin\n" % self.value) def processPDF(self, file, writer, context, registry, bbox): file.write("%d j\n" % self.value)
attr.exclusiveattr.__init__(self, _stroked) self.styles = attr.mergeattrs(styles) attr.checkattrs(self.styles, [style.strokestyle]) def __call__(self, styles=[]): # XXX or should we also merge self.styles return _stroked(styles) def decorate(self, dp, texrunner): if dp.strokestyles is not None: raise RuntimeError("Cannot stroke an already stroked path") dp.strokestyles = self.styles stroked = _stroked() stroked.clear = attr.clearclass(_stroked) class _filled(deco, attr.exclusiveattr): """filled is a decorator, which fills the interior of the path""" def __init__(self, styles=[]): attr.exclusiveattr.__init__(self, _filled) self.styles = attr.mergeattrs(styles) attr.checkattrs(self.styles, [style.fillstyle]) def __call__(self, styles=[]): # XXX or should we also merge self.styles return _filled(styles) def decorate(self, dp, texrunner): if dp.fillstyles is not None:
def __init__(self, styles=[]): attr.exclusiveattr.__init__(self, _stroked) self.styles = attr.mergeattrs(styles) attr.checkattrs(self.styles, [style.strokestyle]) def __call__(self, styles=[]): # XXX or should we also merge self.styles return _stroked(styles) def decorate(self, dp, texrunner): if dp.strokestyles is not None: raise RuntimeError("Cannot stroke an already stroked path") dp.strokestyles = self.styles stroked = _stroked() stroked.clear = attr.clearclass(_stroked) class _filled(deco, attr.exclusiveattr): """filled is a decorator, which fills the interior of the path""" def __init__(self, styles=[]): attr.exclusiveattr.__init__(self, _filled) self.styles = attr.mergeattrs(styles) attr.checkattrs(self.styles, [style.fillstyle]) def __call__(self, styles=[]): # XXX or should we also merge self.styles return _filled(styles)
_UCRc = UCRc if UCRm is not None: _UCRm = UCRm if UCRy is not None: _UCRy = UCRy if BG is not None: _BG = BG class color(attr.exclusiveattr, style.strokestyle, style.fillstyle): """base class for all colors""" def __init__(self): attr.exclusiveattr.__init__(self, color) clear = attr.clearclass(color) class grey(color): """grey tones""" def __init__(self, gray): color.__init__(self) if gray < 0 or gray > 1: raise ValueError self.color = {"gray": gray} def processPS(self, file, writer, context, registry, bbox): file.write("%(gray)g setgray\n" % self.color) def processPDF(self, file, writer, context, registry, bbox): if context.strokeattr: file.write("%(gray)f G\n" % self.color)
_UCRm = UCRm if UCRy is not None: _UCRy = UCRy if BG is not None: _BG = BG class color(attr.exclusiveattr, style.strokestyle, style.fillstyle): """base class for all colors""" def __init__(self): attr.exclusiveattr.__init__(self, color) clear = attr.clearclass(color) class grey(color): """grey tones""" def __init__(self, gray): color.__init__(self) if gray<0 or gray>1: raise ValueError self.color = {"gray": gray} def processPS(self, file, writer, context, registry, bbox): file.write("%(gray)g setgray\n" % self.color) def processPDF(self, file, writer, context, registry, bbox):
patternbbox, xstep, ystep, patterntrafo, patternproc, writer, registry, patternregistry)) # activate pattern if context.colorspace != "Pattern": # we only set the fill color space (see next comment) file.write("/Pattern cs\n") context.colorspace = "Pattern" if context.strokeattr: # using patterns as stroke colors doesn't seem to work, so # we just don't do this... warnings.warn("ignoring stroke color for patterns in PDF") if context.fillattr: file.write("/%s scn\n"% self.id) pattern.clear = attr.clearclass(pattern) _base = 0.1 * unit.v_cm class hatched(pattern): def __init__(self, dist, angle, strokestyles=[]): pattern.__init__(self, painttype=1, tilingtype=1, xstep=dist, ystep=100*unit.t_pt, 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, -50, 0, 50), self.strokestyles) def __call__(self, dist=None, angle=None, strokestyles=None): if dist is None: