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

Reply via email to