Example #1
0
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')
Example #2
0
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
Example #3
0
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')
Example #4
0
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')
Example #5
0
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')