[poppler] [PATCH] Arthur backend fixes; poppler-qt4 direct rendering

Albert Astals Cid aacid at kde.org
Tue Nov 2 12:43:06 PDT 2010


A Dimarts, 2 de novembre de 2010, Matthias Fauconneau va escriure:
> > Please never answer me only, always mail the list.
> 
> Sorry, I really shouldn't use gmail web interface.

No problem.

> 
> > No, there is not, there are unofficial patches for it, but that's all.
> 
> I used the official gentoo ebuild in portage and it has a qt use flag
> to enable it.
> The ebuild doesn't seem to use any patches.
> But it really doesn't matter since the rendering is worse and
> introduce an unnecessary cairo dependency.
> 
> > It's wrong, look at how splashoutputdev does it (yes i know it sucks)
> 
> Sorry, I only quickly valgrinded the app and added the matching delete
> for the new.
> so if I understand it right, I have to use unref() instead even if I
> directly allocated

Yep, the API sucks.

> 
> > No way we can tell without having the files, probably Arthur is doing
> > antialias and Splash is not.
> 
> Do you want the link to my test files ?
> As you can see in the screenshot, Splash output is antialised. but
> there are minor differences in the pathes.

I don't really think it's worth investigating unless someone is very bored.

About the patch,

+    m_image = new QImage(width, height, QImage::Format_RGB32);
     for (y = 0; y < height; y++) {
-      dest = (unsigned int *) (buffer + y * 4 * width);
-      pix = imgStr->getLine();
-      colorMap->getRGBLine (pix, dest, width);
+        dest = (unsigned int *)m_image->scanLine(y);
+        colorMap->getRGBLine (imgStr->getLine(), dest, width);
+        for (x = 0; x < width; x++) { *dest = *dest | 0xff000000; dest++; }
     }
-
-    m_image = new QImage(buffer, width, height, QImage::Format_RGB32);

Are you sure you need the 
for (x = 0; x < width; x++) { *dest = *dest | 0xff000000; dest++; }
?

The format you are using is Format_RGB32 so in my understanding you can having 
any garbage you want in the first byte that should not affect rendering.

Albert


More information about the poppler mailing list