class BezierPath(Line2D): def __init__(self, path, *args, **kwargs): """ Parameters ---------- path : `~.path.Path` The path to draw. **kwargs All remaining keyword arguments are passed to `.Line2D`. """ Line2D.__init__(self, [], [], *args, **kwargs) self._path = path self._invalid = False def recache(self): self._transformed_path = TransformedPath(self._path, self.get_transform()) self._invalid = False def set_path(self, path): self._path = path self._invalid = True def draw(self, renderer): if self._invalid: self.recache() if not self._visible: return renderer.open_group('line2d', gid=self.get_gid()) gc = renderer.new_gc() self._set_gc_clip(gc) gc.set_foreground(self._color) gc.set_antialiased(self._antialiased) gc.set_linewidth(self._linewidth) gc.set_alpha(self._alpha) if self.is_dashed(): cap = self._dashcapstyle join = self._dashjoinstyle else: cap = self._solidcapstyle join = self._solidjoinstyle gc.set_joinstyle(join) gc.set_capstyle(cap) gc.set_dashes(self._dashOffset, self._dashSeq) if self._lineStyles[self._linestyle] != '_draw_nothing': tpath, affine = ( self._transformed_path.get_transformed_path_and_affine()) renderer.draw_path(gc, tpath, affine.frozen()) gc.restore() renderer.close_group('line2d')
def _get_display_coordination(artist): """ Ref: matplotlib.lines.Line2D.contains It is intended to transform the coordination system to ``display``. Is it really necessary? """ transformed_path = TransformedPath(artist.get_path(), artist.get_transform()) path, affine = transformed_path.get_transformed_path_and_affine() path = affine.transform_path(path) xy = path.vertices return xy
class BezierPath(mlines.Line2D): def __init__(self, path, *kl, **kw): mlines.Line2D.__init__(self, [], [], *kl, **kw) self._path = path self._invalid = False def recache(self): self._transformed_path = TransformedPath(self._path, self.get_transform()) self._invalid = False def set_path(self, path): self._path = path self._invalid = True def draw(self, renderer): if self._invalid: self.recache() renderer.open_group('line2d') if not self._visible: return gc = renderer.new_gc() self._set_gc_clip(gc) gc.set_foreground(self._color) gc.set_antialiased(self._antialiased) gc.set_linewidth(self._linewidth) gc.set_alpha(self._alpha) if self.is_dashed(): cap = self._dashcapstyle join = self._dashjoinstyle else: cap = self._solidcapstyle join = self._solidjoinstyle gc.set_joinstyle(join) gc.set_capstyle(cap) funcname = self._lineStyles.get(self._linestyle, '_draw_nothing') if funcname != '_draw_nothing': tpath, affine = self._transformed_path.get_transformed_path_and_affine() lineFunc = getattr(self, funcname) lineFunc(renderer, gc, tpath, affine.frozen()) gc.restore() renderer.close_group('line2d')
class BezierPath(mlines.Line2D): def __init__(self, path, *kl, **kw): mlines.Line2D.__init__(self, [], [], *kl, **kw) self._path = path self._invalid = False def recache(self): self._transformed_path = TransformedPath(self._path, self.get_transform()) self._invalid = False def set_path(self, path): self._path = path self._invalid = True def draw(self, renderer): if self._invalid: self.recache() if not self._visible: return renderer.open_group('line2d') gc = renderer.new_gc() self._set_gc_clip(gc) gc.set_foreground(self._color) gc.set_antialiased(self._antialiased) gc.set_linewidth(self._linewidth) gc.set_alpha(self._alpha) if self.is_dashed(): cap = self._dashcapstyle join = self._dashjoinstyle else: cap = self._solidcapstyle join = self._solidjoinstyle gc.set_joinstyle(join) gc.set_capstyle(cap) gc.set_dashes(self._dashOffset, self._dashSeq) if self._lineStyles[self._linestyle] != '_draw_nothing': tpath, affine = ( self._transformed_path.get_transformed_path_and_affine()) renderer.draw_path(gc, tpath, affine.frozen()) gc.restore() renderer.close_group('line2d')
class BezierPath(Line2D): def __init__(self, path, *args, **kwargs): Line2D.__init__(self, [], [], *args, **kwargs) self._path = path self._invalid = False def recache(self): self._transformed_path = TransformedPath( self._path, self.get_transform()) self._invalid = False def set_path(self, path): self._path = path self._invalid = True def draw(self, renderer): if self._invalid: self.recache() if not self._visible: return renderer.open_group('line2d') gc = renderer.new_gc() self._set_gc_clip(gc) gc.set_foreground(self._color) gc.set_antialiased(self._antialiased) gc.set_linewidth(self._linewidth) gc.set_alpha(self._alpha) if self.is_dashed(): cap = self._dashcapstyle join = self._dashjoinstyle else: cap = self._solidcapstyle join = self._solidjoinstyle gc.set_joinstyle(join) gc.set_capstyle(cap) gc.set_dashes(self._dashOffset, self._dashSeq) if self._lineStyles[self._linestyle] != '_draw_nothing': tpath, affine = ( self._transformed_path.get_transformed_path_and_affine()) renderer.draw_path(gc, tpath, affine.frozen()) gc.restore() renderer.close_group('line2d')