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

Albert Astals Cid aacid at kde.org
Sat Jun 30 05:52:57 PDT 2012


El Divendres, 29 de juny de 2012, a les 08:38:03, Adam Reichold va escriure:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> - -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 29.06.2012 08:23, Adam Reichold wrote:
> > 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.
> 
> Updated the patch to include the warning.

Pushed to master with a refactor so that most of the "setup" code is shared.

To be honest I have not tried it works but it should and i'll let you confirm 
that it really does ;-)

Cheers,
  Albert

> 
> >>> 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
> > 
> > _______________________________________________ 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/
> 
> iQEcBAEBAgAGBQJP7U0bAAoJEPSSjE3STU34UtIIALWeAsaSQ8KsDhaiJrpV13xB
> O7Lj682VH3abzv7RkrMR07NBMu/cHOFSAfaS5LxLxDD/Wervoqfm1UZ2LwsCSwO3
> TodC0TU5pf5Im1xoyz92rNfkBqPRVvlFLw10BSVVWBaIvhLKOQgHj7s1U6LdqoOa
> PnT65/Gu1yJZO3yvSJN22t5ST5gtSYikkpjqaQ3Ts+D2XJQXJuRllZGaniR+fjel
> FS+V5Gj1Zi3Fjg8aLESGdTn0KosV3R8aUaacGKXhO6klxwZMI1vv+nyGsFdNTMGL
> u6c5zjD0QtKGEYx/XNhKQAf1BqnpH9qbwnSHm9xgFzVV/TC7z3DbPYT1ahttGpY=
> =VHDH
> - -----END PGP SIGNATURE-----
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.19 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iQEcBAEBAgAGBQJP7U1LAAoJEPSSjE3STU34YNAH/iA6FZJ6Y25h7Y08Zjxbcb3t
> ca16sbW8LFJ4A/ZNYP9D49wHIfhxADd2+HZ4g+jkKtNRgxv1PoqJKXH6BwQKH5lx
> RAccyeykkZVVZlXBY0vRJ91N/xwxjgmyIodSqx0xqYpbnwm7AL2hDhF1pKfx6dr2
> pHCqzJlkJyz4PVMHsUG8qrxz1Bot2/Vqr/CNdKpveqTLegBzFVCRE2MKhzkVC3Qm
> x8bm8mNRKVoFz5aaq8ZJhaWzXN9INdKLhf1y7ZO0lapr+IMp9v3+Vbxmkz0Iznr6
> QWAJ2stQ256EEbpJZoDjDnXjw8FISTIUk/f7Fh0P4E/bmzK/4sPdatUVlGcOXAQ=
> =Idbg
> -----END PGP SIGNATURE-----


More information about the poppler mailing list