Пример #1
0
class FigureCanvasWxAggModGL(FigureCanvasWxAggMod):
    glcanvas = None

    def __init__(self, *args, **kwargs):
        FigureCanvasWxAggMod.__init__(self, *args, **kwargs)
        if FigureCanvasWxAggModGL.glcanvas is None:
            win = wx.GetApp().TopWindow
            glcanvas = MyGLCanvas(win)
            FigureCanvasWxAggModGL.glcanvas = glcanvas
            glcanvas.SetMinSize((2, 2))
            glcanvas.SetMaxSize((2, 2))
            # self.SetSizer(wx.BoxSizer(wx.HORIZONTAL))
            win.GetSizer().Add(glcanvas)
            win.Layout()
            glcanvas.Refresh()

    def get_renderer(self, cleared=False):
        l, b, w, h = self.figure.bbox.bounds
        key = w, h, self.figure.dpi
        try:
            self._lastKey, self.renderer
        except AttributeError:
            need_new_renderer = True
        else:
            need_new_renderer = (self._lastKey != key)

        if need_new_renderer:
            self.renderer = RendererAgg(w, h, self.figure.dpi)
            mixin_gl_renderer(self.renderer)
            self._lastKey = key
        elif cleared:
            self.renderer.clear()
        return self.renderer

    def draw(self, *args, **kargs):
        self._update_hl_color()
        return FigureCanvasWxAggMod.draw(self, *args, **kargs)

    def draw_artist(self, drawDC=None, alist=None):
        if alist is None:
            alist = []
        gl_obj = [a for a in alist if hasattr(a, 'is_gl')]

        for o in gl_obj:
            o.is_last = False
        if len(gl_obj) > 0:
            gl_obj[-1].is_last = True
            self.renderer._k_globj = 0
            self.renderer._num_globj = len(gl_obj)
            self.renderer.no_update_id()
            #            self.renderer.no_lighting = no_lighting
            self._update_hl_color()
            FigureCanvasWxAggModGL.glcanvas._artist_mask = alist

        v = FigureCanvasWxAggMod.draw_artist(self, drawDC=drawDC, alist=alist)
        #        self.renderer.no_lighting = False
        return v

    def _update_hl_color(self):
        value = self.hl_color
        vv = list([float(x) for x in value]) + [1.0]
        vv[3] = 0.65
        FigureCanvasWxAggModGL.glcanvas._hl_color = tuple(vv[:4])

    def _onPaint(self, evt):
        #        self.glcanvas.OnPaint(evt)
        #        evt.Skip()
        FigureCanvasWxAggMod._onPaint(self, evt)

    def _onSize(self, evt=None, nocheck=False):
        FigureCanvasWxAggMod._onSize(self, evt=evt, nocheck=nocheck)
        # self.glcanvas.SetSize(self.bitmap.GetSize())

    def disable_alpha_blend(self):
        FigureCanvasWxAggModGL.glcanvas._alpha_blend = False

    def enable_alpha_blend(self):
        FigureCanvasWxAggModGL.glcanvas._alpha_blend = True
Пример #2
0
class FigureCanvasWxAggModGL(FigureCanvasWxAggMod):
    glcanvas = None
    def __init__(self, *args, **kwargs):
        FigureCanvasWxAggMod.__init__(self, *args, **kwargs)
        if FigureCanvasWxAggModGL.glcanvas is None:
            win = wx.GetApp().TopWindow 
            glcanvas = load_glcanvas()(win)
            FigureCanvasWxAggModGL.glcanvas = glcanvas
            glcanvas.SetMinSize((2,2))
            glcanvas.SetMaxSize((2,2))
            #self.SetSizer(wx.BoxSizer(wx.HORIZONTAL))
            win.GetSizer().Add(glcanvas)
            win.Layout()
            glcanvas.Refresh()
        
    def get_renderer(self, cleared=False):
        l, b, w, h = self.figure.bbox.bounds
        key = w, h, self.figure.dpi
        try: self._lastKey, self.renderer
        except AttributeError: need_new_renderer = True
        else:  need_new_renderer = (self._lastKey != key)

        if need_new_renderer:
            self.renderer = RendererAgg(w, h, self.figure.dpi)
            mixin_gl_renderer(self.renderer)
            self._lastKey = key
        elif cleared:
            self.renderer.clear()
        return self.renderer
     
    def draw(self, *args, **kargs):
        self._update_hl_color()
        return FigureCanvasWxAggMod.draw(self,  *args, **kargs)
     
    def draw_artist(self, drawDC=None, alist=None):
        if alist is None: alist = []
        gl_obj = [a for a in alist if hasattr(a, 'is_gl')]
        
        for o in gl_obj: o.is_last =  False
        if len(gl_obj) > 0:
            gl_obj[-1].is_last =  True
            self.renderer._k_globj =   0
            self.renderer._num_globj =  len(gl_obj)
            self.renderer.no_update_id()
#            self.renderer.no_lighting = no_lighting
            self._update_hl_color()            
            FigureCanvasWxAggModGL.glcanvas._artist_mask = alist

        v =  FigureCanvasWxAggMod.draw_artist(self, drawDC=drawDC, alist=alist)
#        self.renderer.no_lighting = False
        return v

    def _update_hl_color(self):
        value = self.hl_color
        vv = list([float(x) for x in value]) + [1.0]
        vv[3] = 0.65
        FigureCanvasWxAggModGL.glcanvas._hl_color = tuple(vv[:4])
        
    def _onPaint(self, evt):
#        self.glcanvas.OnPaint(evt)
#        evt.Skip()
        FigureCanvasWxAggMod._onPaint(self, evt)

    def _onSize(self, evt=None, nocheck=False):
        FigureCanvasWxAggMod._onSize(self, evt = evt, nocheck = nocheck)
        #self.glcanvas.SetSize(self.bitmap.GetSize())
        
    def disable_alpha_blend(self):
        FigureCanvasWxAggModGL.glcanvas._alpha_blend = False

    def enable_alpha_blend(self):
        FigureCanvasWxAggModGL.glcanvas._alpha_blend = True