<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 9, 2016 at 5:27 PM, Chris Barker <span dir="ltr"><<a href="mailto:chris.barker@noaa.gov" target="_blank">chris.barker@noaa.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Tue, Feb 9, 2016 at 8:52 AM, Benjamin Root <span dir="ltr"><<a href="mailto:ben.v.root@gmail.com" target="_blank">ben.v.root@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>as well as the figure/canvas/manager 
relationships for interactivity.<br></div></div></div></blockquote><div><br></div></span><div>this is a big one -- I tried to debug the wxAgg backend once, and it was simply littered with calls to render the screen -- and it was next to impossible to figure out when rendering was actually supposed to happen.</div></div></div></div></blockquote><div><br></div><div>The relationship between the backend classes is documented in `backend_base.py`.</div><div><br></div><div>The interaction is essentially:</div><div><br></div><div>1) The GUI framework receives an event to redraw the window</div><div>2) This triggers the `paint` callback method</div><div>3) This calls the figure's draw method which renders the figure into an image buffer</div><div>4) The image buffer is copied to the window's image buffer</div><div>5) The GUI framework through layers of abstraction we don't have to concern ourselves with paints the window's image buffer to the screen</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> I suspect class were simply added all over the place until it seemed to work.</div></div></div></div></blockquote><div><br></div><div>The backend classes are actually some of the better-reasoned parts of the code base.  For more information, see <a href="http://www.aosabook.org/en/matplotlib.html">http://www.aosabook.org/en/matplotlib.html</a></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>I can image other back-end suffer from the same issues.</div><div><br></div><div></rant></div></div><div class="gmail_extra"><br></div><br clear="all"><div>-CHB</div><span class=""><font color="#888888"><div><br></div>-- <br><div><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            <a href="tel:%28206%29%20526-6959" value="+12065266959" target="_blank">(206) 526-6959</a>   voice<br>7600 Sand Point Way NE   <a href="tel:%28206%29%20526-6329" value="+12065266329" target="_blank">(206) 526-6329</a>   fax<br>Seattle, WA  98115       <a href="tel:%28206%29%20526-6317" value="+12065266317" target="_blank">(206) 526-6317</a>   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</font></span></div></div>
<br>_______________________________________________<br>
Matplotlib-devel mailing list<br>
<a href="mailto:Matplotlib-devel@python.org">Matplotlib-devel@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/matplotlib-devel" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/matplotlib-devel</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Michael Droettboom<div>Continuum Analytics</div></div></div>
</div></div>