Thanks! That solves the problem for me. Once these changes have made it into trunk, I can commit my changes to the MacOSX backend.
Thanks, --Michiel --- On Fri, 8/26/11, Eric Firing <efir...@hawaii.edu> wrote: > From: Eric Firing <efir...@hawaii.edu> > Subject: Re: [matplotlib-devel] graphics context: use alpha value from > foreground color if present > To: matplotlib-devel@lists.sourceforge.net > Date: Friday, August 26, 2011, 10:20 PM > On 08/26/2011 06:23 AM, Michiel de > Hoon wrote: > > Dear all, > > > > I am currently modifying the MacOSX backend to make > its interactive/non-interactive behavior consistent with the > other backends in matplotlib. > > When I was testing the backend, I found a new bug that > seems to be related to a recent change in backend_bases.py: > > Michiel, > > Thank you for doing this work on the MacOSX backend; sorry > to have > introduced a bug that you stumbled over. > > > > > https://github.com/matplotlib/matplotlib/commit/4c078ddf68cc0ecc1a5f36009a3e3a8b4921b037#lib/matplotlib/backend_bases.py > > > > After this commit, GraphicsContextBase.set_alpha has > no effect if alpha==None; previously it would set alpha to > 1.0. > > > > The bug appears here in Text.draw in text.py: > > > > gc = > renderer.new_gc() > > > gc.set_foreground(self.get_color()) > > > gc.set_alpha(self.get_alpha()) > > > > In this code, self is a Text object, which derives > from the Artist class, which initializes its _alpha member > to None. So self.get_alpha() returns None, and gc.set_alpha > has no effect. The alpha value used then depends on whatever > was present in the gc before the call to new_gc, which is > backend-dependent; the MacOSX and cairo backends end up with > an incorrect alpha value. > > > > I guess the easiest solution is to initialize _alpha > in the Artist class to 1.0 instead of to None. > > See https://github.com/matplotlib/matplotlib/pull/437 > > The problem was occurring because the macosx and cairo > backends were > recycling their graphics context objects instead of making > new > instances, so they were not getting initialized. I > made a local fix by > initializing the _alpha attributes; it may be that other > initialization > is actually needed as well, and that the > GraphicsContextBase.__init__ > method should be called, but I have not looked into > that. The small fix > solves the immediate problem. > > In addition, I realized that a small change in > GraphicsContextBase was > needed to properly support backends that have their own > set_alpha and > set_foreground methods in their gc class. > > Eric > > > > > Thanks, > > --Michiel > > ------------------------------------------------------------------------------ > EMC VNX: the world's simplest storage, starting under $10K > The only unified storage solution that offers unified > management > Up to 160% more powerful than alternatives and 25% more > efficient. > Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev > _______________________________________________ > Matplotlib-devel mailing list > Matplotlib-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel > ------------------------------------------------------------------------------ EMC VNX: the world's simplest storage, starting under $10K The only unified storage solution that offers unified management Up to 160% more powerful than alternatives and 25% more efficient. Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev _______________________________________________ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel