Fix researched by Christopher Reichert
Will backport to 4.6 if works fine in trunk for a while
BUGS: 266535
svn path=/trunk/KDE/kdegraphics/okular/; revision=1224201
instead of always creating (with new[]) the memory buffer for the chars, try to pack them into the space of the QChar*, if they are very few (2 on 32bit, 4 on 64bit)
this way the number of new[]+delete[] needed for storing text is slightly reduced, especially for documents with fine-grained text extraction (pdf, dvi, fb2, odt)
svn path=/trunk/KDE/kdegraphics/okular/; revision=1066934
this way, we can choose the comparing strategy before starting the search
also, make the comparer function use stringref, so we avoid copying data from the original strings (meaning less memory used, and slightly faster)
provide two comparing strategies, case sensitive and case insensitive, to continue doing the same job done so far
svn path=/trunk/KDE/kdegraphics/okular/; revision=1066591
search verbatim in the text page, while any other change in the query should be done at a Document level.
BUG: 172244
svn path=/trunk/KDE/kdegraphics/okular/; revision=873277
This way, we can save about 4 int's for each text entity; this is not much for small documents,
but with big documents with lots of text (eg, the PDF specs) we can save a lot (more than 50MB!).
CCBUG: 161213
svn path=/trunk/KDE/kdegraphics/okular/; revision=803048
Works pretty well -- the only problem left is that when changing the search direction, the first match is the current match.
svn path=/trunk/KDE/kdegraphics/okular/; revision=785629
Adapt the text selection to merge correctly depending on the current rotation.
Drawback: darker overlap zones if two lines overlap.
svn path=/trunk/KDE/kdegraphics/okular/; revision=708745
* Update some copyright years and mail addresses
* Search does not block the GUI anymore YUHUUUUU
Well, it it does but it's almost unperceptible, that means the searching methods of Document no longer return a bool but a void and the Document::searchFinished signal is used to know if something was found, nothing was found or the user pressed the cancel button !YES! one can cancel search now :-)
* TextPage no longer holds the area and the current transformed area, it took TOO MUCH memory, now we transform the area each time, it's much more CPU intensive but i could not measure a time loss while searching big documents and i could measure HUNDREDS of MB of usage less.
* MICRO optimization: Change some code to not detach some containers
* I still don't have ADSL so this is something like a "blind" commit, Pino will check it compiles against current KDE, not against what's on my computers
svn path=/trunk/KDE/kdegraphics/okular/; revision=699701
- make the output looking more or less like before (using nospace() or removing the spaces)
- remove endl and '\n' at the end of debug outputs
- fixing the QDebug operator<<'s around
- isolate the debug area number of the core into a separate header, and apply it instead of the numbers found in textpage.cpp
svn path=/trunk/KDE/kdegraphics/okular/; revision=694667
Fixing also the text extraction when using the rectangular selection across two or more pages.
svn path=/trunk/playground/graphics/okular/; revision=616264
This gives another speedup when using the text selection.
(And, rename okularDeleter to okularPtrUtils.)
svn path=/trunk/playground/graphics/okular/; revision=616089
abbreviations for its items.
Replaced the 'bool strictCase' parameter of Page::findText
with 'Qt::CaseSensitivity caseSensitivity' for better readable code.
svn path=/trunk/playground/graphics/okular/; revision=607203
* putting it in an own view mode
* associating the selection to every page
* using a better algorithm to calculate the selection, even in a page range
* moving its drawing from the page view to the page painter, so it's possibile to draw it just like it's done with eg annotations
Other changes (more or less related):
* moved the annotation popup to a better place, so it won't interfere with annotation drawing
* commented some debug code in TextPage
svn path=/trunk/playground/graphics/okular/; revision=588795
Also, the structure for backward search is there, (just...) need to add a findTextInternalBackward and do the job there.
svn path=/branches/work/kde4/playground/graphics/okular/; revision=545298
- 1. editor-like text selection, and I do mean it, its not pseudo-editor
(like the ones acroread and kviewshell have) it doesnt intersect the
selection area with words under it, no, it does a lot more, including
work on cursors and searching for the text area closest to the given
cursor
- 2. rotation support, change the orientation of the documents if
you need too :)
- 3. the kfaxview backend works beautifully, porting kviewshell backends
is damn easy ! djvu and dvi will be next!
- 4. Hardware Blending of selection rectangles! We now use XRender
instead of KImageEffect, makes a damn faster blend!
- 5. Overview mode - as seen in Kviewshell, but quite a bit extended,
the kviewshell is only one state, while we support it in both
continous and non-continous form
- BTW. I coded all those features myself, (apart from kfaxview backend library)
it is an impressive bit right? but oKular cant be run by only one person,
join in on the fun! i can introduce you into the code just mail niedakh@gmail.com
svn path=/trunk/playground/graphics/oKular/kpdf/; revision=509871
- Page: rotation does not switch height and width
- Document/Part/Generator:
1. Add API for attaching stuff to the interface: ActionCollection and the Navigation Panel
also add possibility to merge an XML .rc file with menu layout. Relevant functions are:
QString Generator::getXMLFile(), returns a QString with your .rc file name.
void Generator::setupGUI (KActionCollection* , QToolbox* ), add your components to the user interface
2. Supporting backend settings:
If during startup, backends which provide a configuration ([X-KDE-oKularHasInternalSettings]
set to true) are found, a menu item: configure backends is created, clicking on it results in
loading all the generators that have settings, but not those that dont. the Generator::addPages(KConfigDialog *dlg)
function should be overloaded by a generator and dlg->addPage should be used to add pages.
If a user opens a file that needs an already loaded generator, the already loaded one is used instead of loading another.
3. Error/Warning/Notice sending support, to send a notice/error/warning, add a relevant notice/error/warning(QString& txt ,int duration)
to the generator class, and sending a message to the user is as simple as emitting a signal!
4. Intercepting of events generated by the PageView is done by Generator::handleEvent(QEvent*), subclass it, do a switch on QEvent::type(), handle your
event and return true if pageview is to proceed with its handling or false if not.
5. Support configuring the KPrinter on the generator side, use Generator::canConfigurePrinter(), return true there, and you get a nonconfigured KPrinter in your
Generator::print()
6. PixmapRequest handling update:
a.) Generator::canGeneratePixmap is now Generator::canGeneratePixmap(bool async)
b.) Document::sendGeneratorRequests is a slot now
c.) Old way of sending pixmaps (Document::requestPixmaps(QValueList<PixmapRequest*> checking if we can generate pixmap if not, waiting for receiving)
is replaced with: requestPixmaps only queues the pixmap all checking if w can generate is done in sendGeneratorReqest, the sendGeneratorRequest is
run in three places:
1. in requestPixmaps when we receive a request
2. in requestDone if pixmapStack is not empty
3. sendGeneratorRequest, apart from removing invalid requests, takes the current request and if generator canGeratePixmap(request->async)
it removes the pixmap from stack and sends to generator if not, QTimer::singleshots to itself after 20ms, it ends when stack has no valid pixmap request
7. Added a commented out zoom field to PixmapGenerator, mightcome in handy sometime
- TextPage: add instructions that handle simplyfing the RegularAreaRect, no more double painted borders in selection rectangles, this rocks.
svn path=/trunk/playground/graphics/oKular/kpdf/; revision=445196
* moving all xpdf stuff from core and part to inside generator_pdf
* adding abstract KPDFText class and KPDFTextEntity to hold either
glyph, or word or textline
- support for importing PS files as pdf like on annots branch
- synced with annots branch
- abstract text layer with search for words in different lines
- added RegularArea<NormalizedShape,Shape> template class
which inherits QValueList<NormalizedShape*> and is used
to hold regular areas of given shape (finite collections of the shape)
- loading of relevant generators via ktrader for given mimetype
- the deliverables 1 and 2 of my SoC proposition are delivered
next: 1. fix one spotted regression and 2. code ghostview backend
svn path=/trunk/playground/graphics/oKular/kpdf/; revision=434883