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

Adam Reichold adamreichold at myopera.com
Thu Jun 28 23:23:31 PDT 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 29.06.2012 01:49, Albert Astals Cid wrote:
> El Dijous, 28 de juny de 2012, a les 17:53:45, Adam Reichold va
> escriure: 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?
> 

Personally, I think that it would be nicer doing it that way.
Especially since you will still get a deprecation warning if you call
::search with a QRectF as an argument.

Regards, Adam.

> 
>> 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. 
> _______________________________________________ poppler mailing
> list poppler at lists.freedesktop.org 
> http://lists.freedesktop.org/mailman/listinfo/poppler
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJP7UnjAAoJEPSSjE3STU34AIYH/RRgbFZYX7iT9e5s1DeonSgc
sqk6hfM95cqT54xKupxHdXUWwaweJQWgiQjkI/8nso8vVEfktBi3+7TXWB1x//oy
Fe2+zyVnDcTDfDvZQANkUiiZgGV8KCCJp4t63AVJcOXt7MzppcLcUqIPfU5fvP9V
B6RmCrabrkccyOZZkW7yye3uG+Q+cIidbA5mjULbx8Ma/kmtzFjZ4G5/osmS0m7y
bb2/XJj6j873+qoOxUrnUb0HJSLFVyiuJvBMp7ikJOIaz16G2JFVTWzalINaKRmN
f+KwWLC2TWloYAHNQEz/j2jzeqzuf1LjvF1KrosA/OLn9gpuYNqFqk7GY20Ce2M=
=PBJ0
-----END PGP SIGNATURE-----


More information about the poppler mailing list