[poppler] about patterns

Leonard Rosenthol leonardr at pdfsages.com
Sat Aug 19 17:34:07 PDT 2006


At 05:54 AM 8/19/2006, Rafael Rodríguez wrote:
>for those who don't know, i'm the one with the SoK kpdf/okular project:

         I didn't - thanks for the link.


>I'm having a really hard time in understanding the not very much commented
>code handling tiling patterns in Gfx.cc. Is this code inherited from kpdf, or
>has it been touched by any of you?

         AFAIK, it's still 100% the original Xpdf sources.

         What don't you understand?  (and I 
assume you've read the relevant sections of the PDF Reference, yes).

         Tiling patterns are pretty simple - you 
simply "replay" the pattern each time with 
appropriate transformation handling.  That's 
probably one reason for the performance problems 
- - Xpdf doesn't cache anything nor does it use a 
"display list architecture", while Acrobat does 
both.  So in the case of a tiled pattern, Xpdf 
must reparse and rerender each time.

         Replacing Xpdf with a DL-based 
architecture would be a MAJOR piece of work - BUT 
you might be able to find a way to cache a one 
rendered instance of the pattern and simply blit 
that multiple times.  Be aware that some of the 
keys in the /Pattern dictionary may have values 
that preclude simple caching/blitting 
schemes...but you could at least handle the simple cases for a start.


>At first I thought that the code about patterns was supposed to work and it
>only needed optimization, but I've discovered that it doesn't. I can attach a
>one page pdf file if you want (~126 kb) which isn't rendered fine.

         Please do, as I have not seen a case 
where it renders incorrectly - and I've been 
working with Xpdf for almost 10 years now.


Leonard

---------------------------------------------------------------------------
Leonard Rosenthol                            <mailto:leonardr at pdfsages.com>
Chief Technical Officer                      <http://www.pdfsages.com>
PDF Sages, Inc.                              215-938-7080 (voice)
                                              215-938-0880 (fax)



More information about the poppler mailing list