On Fri, Dec 31, 2010 at 3:10 AM, Thomas Freitag <[email protected]> wrote: > 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
Wow, that's really good! > 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. I'd like to provide another set of "difficult" radial gradients, because the test I posted isn't checking some interesting cases (in particular the case where start and end circle are tangent): http://people.freedesktop.org/~ranma42/cairo/radial/ This folder contains some pdf files and the expected rasterization. Adobe Reader seems to be unable to display these files (it just hangs), so I also created some "reduced" versions: http://people.freedesktop.org/~ranma42/cairo/radial/ Adobe Reader can display the reduced files, but all of them look incorrect in the second column (start circle tangent inside end circle). > > But first I need a little bit to sleep :-) Sorry for trying so hard to make your code fail ;P FWIW I'm doing the same against my own radial gradient implementation in pixman (which right now fails with tangent circles, but I already have a patch to fix it). Andrea > > 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 >>>>>>>> >>>>>>>> <[email protected]> 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 >>>>>>>> [email protected] >>>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler >>>>>>>> >>>>>>>> . >>> >>> . >>> >> > > _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
