<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">Hi</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">There will be a variety of drawinglayer related patches going through as I work though some performance issues.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">So for drawinglayer code, we generally start with a hierarchy of drawinglayer objects.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Then we call that hierarchy recursively, and it produces as output a list of more primitive drawinglayer objects.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Then we iterate over that list of "primitive" objects and do something - usually rendering, sometimes hit-testing, sometimes something else.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">What I am doing is attempting to remove the intermediate creation of drawinglayer objects (which is fairly expensive), and instead use a visitor pattern (represented by the Primitive2DDecompositionVisitor abstract class)</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Along the way I also intend to remove some buffering of these intermediate objects, since it is generally less expensive to just visit the higher-level tree.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Regards, Noel Grandin</div></div>