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
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