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

Thomas Freitag Thomas.Freitag at kabelmail.de
Sun Jan 2 02:19:41 PST 2011


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.

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 --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20110102/70cef78c/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: radialsh.patch
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20110102/70cef78c/attachment.asc>


More information about the poppler mailing list