Ejemplo n.º 1
0
    def write_body(self):
        try:
            from matplotlib.path import Path
        except ImportError:
            Path = None
            from matplotlib.patches import Circle, Polygon
        else:
            from matplotlib.patches import Circle, PathPatch

        indices = self.X[:, 2].argsort()
        for a in indices:
            xy = self.X[a, :2]
            if a < self.natoms:
                r = self.d[a] / 2
                if ((xy[1] + r > 0) and (xy[1] - r < self.h) and
                    (xy[0] + r > 0) and (xy[0] - r < self.w)):
                    circle = Circle(xy, r, facecolor=self.colors[a])
                    circle.draw(self.renderer)
            else:
                a -= self.natoms
                c = self.T[a]
                if c != -1:
                    hxy = self.D[c]
                    if Path is None:
                        line = Polygon((xy + hxy, xy - hxy))
                    else:
                        line = PathPatch(Path((xy + hxy, xy - hxy)))
                    line.draw(self.renderer)
Ejemplo n.º 2
0
    def draw(self, renderer):
        if isSupportedRenderer(renderer):
            renderer.use_gl = True
            glcanvas = get_glcanvas()
            if self.axes is not None:
                tag = self.axes
                trans = self.axes.transAxes
            elif self.figure is not None:
                tag = self.figure
                trans = self.figure.transFigure

            gc = renderer.new_gc()
            rgbFace = self._facecolor
            gc.set_foreground(self._edgecolor, isRGBA=True)

            glcanvas.frame_request(self, trans)
            #           if not glcanvas.has_vbo_data(self):
            glcanvas.start_draw_request(self)

            if self._invalidz:
                if glcanvas.has_vbo_data(self):
                    d = glcanvas.get_vbo_data(self)
                    d[0]['v'].need_update = True
            self._invalidz = False
            renderer.gl_draw_path(gc,
                                  self._verts3d,
                                  trans,
                                  rgbFace=rgbFace,
                                  stencil_test=self.do_stencil_test)
            #           glcanvas.update_gc(self, gc)
            glcanvas.end_draw_request()
            #           else:
            #              glcanvas.update_gc(self, gc)
            gc.restore()
            renderer.use_gl = False
            finish_gl_drawing(glcanvas, renderer, tag, trans)

        else:
            Polygon.draw(self, renderer)
Ejemplo n.º 3
0
    def draw(self, renderer):
        if isSupportedRenderer(renderer):        
           renderer.use_gl = True
           glcanvas = get_glcanvas()
           if self.axes is not None:
               tag = self.axes
               trans = self.axes.transAxes
           elif self.figure is not None:
               tag = self.figure
               trans = self.figure.transFigure

           gc = renderer.new_gc()
           rgbFace = self._facecolor
           gc.set_foreground(self._edgecolor, isRGBA=True)

           glcanvas.frame_request(self, trans)
#           if not glcanvas.has_vbo_data(self):
           glcanvas.start_draw_request(self)

           if self._invalidz:
               if glcanvas.has_vbo_data(self):
                   d = glcanvas.get_vbo_data(self)
                   d[0]['v'].need_update = True
           self._invalidz = False
           renderer.gl_draw_path(gc, self._verts3d,  trans,
                              rgbFace = rgbFace,
                              stencil_test = self.do_stencil_test)
#           glcanvas.update_gc(self, gc)
           glcanvas.end_draw_request()
#           else:
#              glcanvas.update_gc(self, gc)
           gc.restore()
           renderer.use_gl = False
           finish_gl_drawing(glcanvas, renderer, tag, trans)

        else:
            Polygon.draw(self, renderer)