On 08/26/2011 08:21 PM, Michiel de Hoon wrote: > Thanks! That solves the problem for me. > Once these changes have made it into trunk, I can commit my changes to the > MacOSX backend.
Done--I hit the merge button. Eric > > 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 ------------------------------------------------------------------------------ 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