[poppler] Followup Bug 32349 & Poppler: More shading fun ;-)

Albert Astals Cid aacid at kde.org
Sun Jan 2 15:28:45 PST 2011


A Diumenge, 2 de gener de 2011, Thomas Freitag va escriure:
> Am 01.01.2011 22:34, schrieb Albert Astals Cid:
> > A Dissabte, 1 de gener de 2011, Thomas Freitag va escriure:
> >> Please regtest this new patch. What I've done in the meantime:
> >> 
> >> a) speed up the implemenation but have enough quality left.
> >> b) implement the shading extend in a correct way, test it against the
> >> samples from the PDF spec (appendix L)
> >> c) test it against all samples from Andrea, including bug 32349&  30887.
> >> d) test it against ducks&  roses and all the PDF You send me because of
> >> regressions with former patches.
> >> 
> >> So I'm think I'm quite near of finishing the implementation, just
> >> waiting for the result of Your regtest.
> > 
> > There are a few empty pixels in the border of
> > http://bugsfiles.kde.org/attachment.cgi?id=20680
> 
> Sorry, I made such a lot changes in the last three days, that I forgot
> to remove a test case where I wanted to see where normal shading stops
> and extending shading starts, so the last circle of normal shading was
> no more painted :-(
> 
> Please try the new patch.

There is a regression on page 25 of 
http://download.tuxfamily.org/magnum/doc/magnum04.pdf

See attached files.

Albert

> 
> Thomas
> 
> > Albert
> > 
> >> Happy new year,
> >> Thomas
> >> 
> >> Am 31.12.2010 03:10, schrieb Thomas Freitag:
> >>> I made a lot of mistakes, but I'm quite close now, s. attached
> >>> rendering of Andrea's PDF. What is still up to do, is
> >>> a) speed it up again
> >>> b) implement the shading extend in a correct way (I'd already a look
> >>> at it, it's also wrong implemented in Gfx)
> >>> c) run it again through my own regression test.
> >>> 
> >>> Thomas
> >>> 
> >>> Am 30.12.2010 12:20, schrieb Thomas Freitag:
> >>>> I just recognized a bug with Andrea's PDF when drawing non centered
> >>>> circles. Want to fix that first before sending a new patch.
> >>>> 
> >>>> Thomas
> >>>> 
> >>>> Am 30.12.2010 11:29, schrieb Albert Astals Cid:
> >>>>> A Dijous, 30 de desembre de 2010, vàreu escriure:
> >>>>>> Sorry, I attached Your "new.png", not mine. Here the correct one
> >>>>>> produced with the above changes.
> >>>>> 
> >>>>> This looks good enough for me, can you send the full patch to the
> >>>>> list?
> >>>>> 
> >>>>> Thanks!
> >>>>> 
> >>>>> Albert
> >>>>> 
> >>>>>> Thomas
> >>>>>> 
> >>>>>> Am 30.12.2010 10:31, schrieb Thomas Freitag:
> >>>>>>> Hi Albert!
> >>>>>>> 
> >>>>>>> I changed the SplashRadialPattern::getColor a little bit to solve
> >>>>>>> this. It is still a little bit different from the old one, in my
> >>>>>>> opinion a little bit better, but that's just a flavour, and in
> >>>>>>> other cases it could be a little bit more worse. So if You agree,
> >>>>>>> I can send
> >>>>>>> a complete new patch.
> >>>>>>> 
> >>>>>>> BTW, as You probably see, Andrea attached his PDF to the closed bug
> >>>>>>> 32349. I saw already yesterday, that also the new rendering with
> >>>>>>> the latest patch is quite better than the old rendering, but it's
> >>>>>>> still not shown what Acrobat reader shows. I'll have an additional
> >>>>>>> look in it, but I fear that this will be again a bigger job (the
> >>>>>>> PDF has 128 radial shadings, and only some of them are still
> >>>>>>> buggy!). So (if not solvable in time) I would prefer to close this
> >>>>>>> thread first, and then reopen the bug or create a new one.
> >>>>>>> 
> >>>>>>> Do You agree, or do You have other ideas?
> >>>>>>> 
> >>>>>>> Thomas
> >>>>>>> 
> >>>>>>> FYI, here the changes:
> >>>>>>> 
> >>>>>>> GBool SplashRadialPattern::getColor(int x, int y, SplashColorPtr c)
> >>>>>>> {
> >>>>>>> 
> >>>>>>>     double xc, yc;
> >>>>>>>     int xs, ys;
> >>>>>>>     Guchar *bitmapAlpha;
> >>>>>>>     
> >>>>>>>     bitmapAlpha = bitmap->getAlphaPtr();
> >>>>>>>     ictm.transform(x, y,&xc,&yc);
> >>>>>>>     xs = splashRound(xc);
> >>>>>>>     ys = splashRound(yc);
> >>>>>>>     // Because of rounding problems, coordinates could be
> >>>>>>>     // outside the bitmap. Reset them on the outer bound now
> >>>>>>>     // and let it up to the alpha channel if they are shown:
> >>>>>>>     if (xs<   0) xs = 0;
> >>>>>>>     if (xs>= bitmap->getWidth()) xs = bitmap->getWidth() - 1;
> >>>>>>>     if (ys<   0) ys = 0;
> >>>>>>>     if (ys>= bitmap->getHeight()) ys = bitmap->getHeight() - 1;
> >>>>>>>     if (bitmapAlpha[ys * bitmap->getWidth() + xs])
> >>>>>>>     
> >>>>>>>         bitmap->getPixel(xs, ys, c);
> >>>>>>>     
> >>>>>>>     else
> >>>>>>>     
> >>>>>>>         return gFalse;
> >>>>>>>     
> >>>>>>>     return gTrue;
> >>>>>>> 
> >>>>>>> }
> >>>>>>> 
> >>>>>>> Am 29.12.2010 23:28, schrieb Albert Astals Cid:
> >>>>>>>> First page, left of the "title". A few white pixels in there.
> >>>>>>>> 
> >>>>>>>> Albert
> >>>>>>>> 
> >>>>>>>> A Dimecres, 29 de desembre de 2010, Thomas Freitag va escriure:
> >>>>>>>>> Am 29.12.2010 18:53, schrieb Andrea Canciani:
> >>>>>>>>>> On Wed, Dec 29, 2010 at 4:48 PM, Thomas Freitag
> >>>>>>>>>> 
> >>>>>>>>>> <Thomas.Freitag at kabelmail.de>     wrote:
> >>>>>>>>>>> ...
> >>>>>>>>>>> I made a mistake when solving the problem with
> >>>>>>>>>>> altona_visual_1v2a_x3.pdf. I find now a better way to solve
> >>>>>>>>>>> it, which
> >>>>>>>>>>> also gives a better look of the printer paper back again.
> >>>>>>>>>> 
> >>>>>>>>>> I'd like to point yo to another pdf whose rendering regresses
> >>>>>>>>>> with the
> >>>>>>>>>> patch: https://bugs.freedesktop.org/attachment.cgi?id=41506
> >>>>>>>>> 
> >>>>>>>>> Albert, can You please just change two lines in the former patch?
> >>>>>>>>> 1. In SplashOutputDev.cc in the constructor of
> >>>>>>>>> SplashRadialPattern, replace
> >>>>>>>>> + bitmap = new SplashBitmap(splashRound(width) + 1,
> >>>>>>>>> splashRound(height)
> >>>>>>>>> + 1, colorMode != splashModeMono1, colorMode, gTrue);
> >>>>>>>>> through
> >>>>>>>>> +      bitmap = new SplashBitmap(splashRound(width) + 2,
> >>>>>>>>> splashRound(height) + 2, colorMode != splashModeMono1, colorMode,
> >>>>>>>>> gTrue);
> >>>>>>>>> 2. In Splash.cc in the painting routine radialShadedFill, where
> >>>>>>>>> the smaller extend circle is painted, replace
> >>>>>>>>> + drawPartEllipseLine(&pipe, 2* yo - curY, xMin, xMax);
> >>>>>>>>> through
> >>>>>>>>> +                drawPartEllipseLine(&pipe, curY, xMin, xMax);
> >>>>>>>>> (curY is alfready recalculated two line before!)
> >>>>>>>>> 
> >>>>>>>>> Or just reapply the attached patch.
> >>>>>>>>> This solves the rendering regressions mailed by Andrea.
> >>>>>>>>> 
> >>>>>>>>> Thomas
> >>>>>>>>> 
> >>>>>>>>>> In the last row, half of the inner circle is transparent with
> >>>>>>>>>> poppler/master+radialsh.patch.
> >>>>>>>>>> 
> >>>>>>>>>> Andrea
> >>>>>>>>>> 
> >>>>>>>>>> PS: Sorry for removing most of the thread from this message,
> >>>>>>>>>> but gmail
> >>>>>>>>>> squashed it to just one level.
> >>>>>>>>>> _______________________________________________
> >>>>>>>>>> poppler mailing list
> >>>>>>>>>> poppler at lists.freedesktop.org
> >>>>>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
> >>>>>>>>>> 
> >>>>>>>>>> .
> >>>>> 
> >>>>> .
> >>>>> 
> >>>>> 
> >>>>> _______________________________________________
> >>>>> poppler mailing list
> >>>>> poppler at lists.freedesktop.org
> >>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
-------------- next part --------------
A non-text attachment was scrubbed...
Name: old.png
Type: image/png
Size: 10914 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20110102/5b7c500a/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: new.png
Type: image/png
Size: 10579 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20110102/5b7c500a/attachment-0003.png>


More information about the poppler mailing list