Yes, one of those regressions is to Tiling Patterns but this refactoring is 
needed to fix it,
that’s why it’s taking so long.

-- John

On 19 Mar 2014, at 10:49, Tilman Hausherr <thaush...@t-online.de> wrote:

> I don't yet have a complete understanding of the projekt so I can't comment 
> much on the contents, but my three cents:
> 
> - if the refactoring is based on the promise to solve problem XXX, then if 
> that problem XXX isn't solved after the refactoring, then it shouldn't be 
> done, or should be reversed
> - there are still regressions from the previous refactorings. The longer you 
> wait, the less you'll remember what you did
> 
> Nevertheless, at first sight, the refactorings seem to make sense. I always 
> like the idea of having access to information from above.
> 
> Tilman
> 
> Am 18.03.2014 20:46, schrieb John Hewson:
>> Hi All
>> 
>> I’m still working on getting Tiling Patterns to render correctly, and need 
>> to make some
>> changes to core PDFBox functionality in order to proceed. My problem is that 
>> tiling
>> patterns are defined in their parent stream’s initial coordinate space, 
>> rather than the
>> coordinate space defined by the CTM. However, in PDFBox there is no way to 
>> access
>> the parent stream, so I can’t find out what it’s initial matrix is. The 
>> manner in which the
>> initial coordinate space is determined is different for pages, forms, and 
>> patterns
>> 
>> What this means is that the parent stream’s initial coordinate space needs 
>> to be passed
>> to processStream and processSubStream in PDFStreamEngine. This will 
>> necessarily be
>> a breaking change, and it will affect all downstream subclasses of 
>> PDFStreamEngine.
>> 
>> Because this has to be a breaking change, I propose that we go all the way 
>> and make
>> the new API bulletproof, 1) so that we won’t have to introduce breaking 
>> changes in the
>> future if we encounter similar issues, 2) so that the caller of the method 
>> can’t pass the
>> wrong data in the parameters. We would remove the two generic methods:
>> 
>> public void processStream(PDResources resources, COSStream cosStream, 
>> PDRectangle drawingSize, int rotation)
>> public void processSubStream(PDResources resources, COSStream cosStream)
>> 
>> and replace them with four specific methods:
>> 
>> public void processPage(PDPage page)
>> public void processForm(PDFormXObject form)
>> public void processTilingPattern(PDTilingPattern pattern)
>> public void processType3Font(PDType3Font font)
>> 
>> This would mean that the various “procesXXXX” methods have access to their 
>> parent
>> stream, and can read any of its public fields in the future without 
>> introducing breaking
>> changes by altering the method’s parameters.
>> 
>> What do you think?
>> 
>> -- John
>> 
>> 
> 

Reply via email to