On 07/04/2010 09:32 PM, John Hunter wrote: > On Sat, Jul 3, 2010 at 11:53 AM, Ryan May<rma...@gmail.com> wrote: > >> On Sat, Jul 3, 2010 at 1:11 AM, Ryan May<rma...@gmail.com> wrote: >> >>> Alright, before I go to bed, I found the following line in >>> src/_backend_agg.cpp at line 709 (in draw_markers()) makes all the >>> difference: >>> >>> set_clipbox(gc.cliprect, rendererBase); >>> >>> Commenting out this line fixes my problem. I'm not sure why it's a >>> problem, (maybe a missing restore to previous state somewhere?). I'll >>> look into this tomorrow, but it would probably be a lot easier with >>> someone familiar with the code. >>> >> Following up again, it seems like the problem is that draw_marker is >> calling set_clipbox() on the rendererBase instead of theRasterizer, >> which is done at 7 other places in the code (as opposed to only one >> other location for rendererBase). Since rendererBase is used for >> restore_region, this makes sense as to why it would fix my problem. I >> can confirm making the change fixes my problem and doesn't cause any >> other issues in my (admittedly brief so far) testing. >> >> (If this isn't the proper fix, an alternative is to call >> rendererBase.reset_clipping(true), but I really think this is working >> around the issue). >> >> Can someone more familiar with the agg backend weigh in here? I'm >> pretty comfortable with the fix, but don't want to be responsible for >> breaking pretty much all of matplotlib. >> > Does marker clipping still work with the proposed change? > Unfortunately, not.
Ryan's suggestion to call rendererBase.reset_clipping(true) upon exit of draw_markers does seem to work both for the blitting and clipping, however. I don't think this is working around the issue -- I think it's probably the correct solution. The clipping state really should probably be reset around every backend call -- but this is the first instance we've seen where the stickiness is a problem, so I think I'll only fix it here (and not reset all the clipping calls to theRasterizer). I've committed this change to 8515. Mike > The only thing that is special about marker drawing is we use cached > marker rasters to make drawing many of them efficient, but I don't > recall anymore whether this required special clipping treatment. > > JDH > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Sprint > What will you do first with EVO, the first 4G phone? > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > _______________________________________________ > Matplotlib-devel mailing list > Matplotlib-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-devel > -- Michael Droettboom Science Software Branch Space Telescope Science Institute Baltimore, Maryland, USA ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel