[ https://issues.apache.org/jira/browse/PDFBOX-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14049492#comment-14049492 ]
John Hewson commented on PDFBOX-2126: ------------------------------------- {quote} I must say I am not able to understand how your last commit works. It seems just to check whether the clip has changed in G2D, but not whether a new clip has been set in PDGraphicsState? {quote} My last commit was no good, I've reverted it in [r1607219|http://svn.apache.org/r1607219]. This means that the issue with the file from PDFBOX-1772 is back. I don't have a fix currently. > Optimize clipping > ----------------- > > Key: PDFBOX-2126 > URL: https://issues.apache.org/jira/browse/PDFBOX-2126 > Project: PDFBox > Issue Type: Improvement > Components: Rendering > Affects Versions: 2.0.0 > Reporter: Petr Slaby > Attachments: ClipPath.1.patch, ClipPath.patch, PDFBOX-1772.pdf, > PDFBOX-1772.pdf-1-bad.png, example_010.pdf, pdfbox-1772.pdf-1-good.png, > screenshot.png > > > As already stated in a TODO comment in PageDrawer, the call of > Graphics2D#setClip() is time and memory consuming. The attached patch > optimizes clipping by calling Graphics2D#setClip() only if the clipping path > has changed. The effect depends on the document, e.g. the attached one > renders in 10.5s without the optimization and in 5.5 seconds in the optimized > version. > The clipping has to be re-applied whenever the transform in Graphics2D > changes. This is not explicitly checked for, the implementation rather > depends on the cached value being reset manually. Currently this is only > needed at one place when processing annotations (AcroForms). Also, the > implementation relies upon the clipping path object stored in PDGraphicsState > to never change so that a comparison using == can be used. This works fine, > but needs a bit of awareness in future changes. To make the design more > clean, the clipping path could be made private to PDGraphcisState and thus > really "immutable" from outside. -- This message was sent by Atlassian JIRA (v6.2#6252)