[poppler] RFC: whole-page search in the qt4 frontend

Albert Astals Cid aacid at kde.org
Thu Jun 28 16:49:48 PDT 2012


El Dijous, 28 de juny de 2012, a les 17:53:45, Adam Reichold va escriure:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hello,
> 
> If I remember correctly, some time ago someone proposed caching the
> TextOuputDev/TextPage used in Poppler::Page::search to improve
> performance. Instead, I would propose to add another search method to
> Poppler::Page which searches the whole page at once and returns a list
> of all occurrences.
> 
> Applications using the qt4 frontend and this method could then decide
> whether to cache this information or not. The implementation of the
> current search method would not change.
> 
> The appended patch does this. But the two search methods share some
> duplicate code. I am not sure what the best way to avoid this is.

First concern, QRectF uses float (instead of double) in some architectures, 
like ARM, so you are actually losing precision (that's why the double variant 
of search() exists). I'm not sure we should worry about that, but we probably 
should. Imagine you get the list of matches with the search() that returns the 
list and then try to use it with the ::search() that accepts a QRectF (though 
actually doesn't make much sense) to get the "next" item. That will cause the 
float->double to go wrong and you might always end up in the same item because 
of the truncation.

On the other hand using a list of QRectF is much more convinient and probably 
has enough precision for painting, so maybe we can just document that you 
should not use the results of the ::search() that returns a list as input for 
the other ::search() variants?

Opinions?

Albert

> 
> Testing this with some sample files shows large improvements (above
> 100% as measured by runtime) for searching the whole document and
> especially for short phrases that occur often.
> 
> Thanks for any comments and advice. Best regards, Adam.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.19 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iQEcBAEBAgAGBQJP7H4JAAoJEPSSjE3STU34kOcIALdNTf42b+9si+OYy3ZeLDTj
> S/0wHhAqtpCE6arBeN4kudVaSPB80MKzndHOpOHTm+KM79pjp4zYQHu3DIikBScT
> B8mo5+ut987T4gPOWpfzRi4R1DBpA7Dukla0Az48WJl8PoeE6KM0uIyskVnjWN3V
> bOqKnCcGhbtoUgIoMvlKh1gf9SJjIar/6Z9/q7mPefq59aCKQliudF/dMpfoLR9a
> G9zTWUObtm9IwAXyKTR1+o3raNKHSsZF6Q2qpECi0CtDj2LZDwTpFNc/dw35kkql
> XYHrvw7dmAPIHz8BHh2blGiCjul9FzOmdGdi8n3XI2mgquuhSCD+zbtyEe8b+eA=
> =Qm8+
> -----END PGP SIGNATURE-----


More information about the poppler mailing list