- renamed signalRequestDone to signalPixmapRequestDone to allow a future signalTextPageRequestDone
- added error/warning/notice signals to TextDocumentConverter and add meaningful error messages
to ooo and fictionbook generator
- code cleanup in chm generator
- print improvements and error notification in kimgio generator
svn path=/trunk/playground/graphics/okular/; revision=628124
$ command_that_produce_a_document | okular -
Expand a but the Generator API so a generator can directly read from the raw data read from stdin. Generators that can not read from raw data will open the temporary file with the saved data.
svn path=/trunk/playground/graphics/okular/; revision=622774
* add full API docs
* renamed getMetaData -> metaData
* removed supportsRotation in Document and Generator
* moved Permission and SearchDirection enums into separated header core/global.h
svn path=/trunk/playground/graphics/okular/; revision=619183
* Bring QPixmap* back to make Albert happy ;)
* Store only one QPixmap per page/size and rotate it directly
* Rotate ObjectRects (boundary)
* Rotate Annotations (point coordinates)
* Don't reload pixmaps, ObjectRects and annotations on rotation
svn path=/trunk/playground/graphics/okular/; revision=606371
THe system generally works; what is missing is a good activating strategy (added in TODO - our usability expert is working on that), and a GUI to configure the editor.
The DVI backend was adapted to use this new feature.
(The PDF backend will use it soon.)
svn path=/trunk/playground/graphics/okular/; revision=605708
* Hide as much private API as possible in Generator, PixmapRequest and ExportEntry/Format
* Renamed ExportEntry to ExportFormat and made it value based
* Removed canExportToText() and exportToText() from Generator API and implemented this
functionality in exportFormats()/exportTo() in the generators
* Removed the orientation parameter from PixmapRequest and let the Document handle the rotation
of the page (pixmap) instead
CCMAIL:okular-devel@kde.org
svn path=/trunk/playground/graphics/okular/; revision=599058
Add a protected method to get the document, and hide the real document pointer as private, so the generators can't redefine it.
svn path=/trunk/playground/graphics/okular/; revision=598025
* Moved all implementations to generator.cpp
* Added 'const' where it make sense
* Adapted all generators (except gs)
svn path=/trunk/playground/graphics/okular/; revision=597525
It's only reported in case it makes sense for the format
Only implemented for pdf atm
If all pages have the same size it's reported on document properties
else there's a label shown in the new bottom bar with the size of the current page
svn path=/trunk/playground/graphics/okular/; revision=595822
Instead of telling the generators to do the work themselves (that was usually destraoying the ld pages and creating the new ones), now we just rotate the page objects deleting only their "mutable" contents.
This way, generators can just return true in their supportRotation() to make okular rotate the pages for them for free. Of course they still have to generate the page pixmaps according to the given page rotation.
Now, there's a new rotationChanged() function in the Generator API so generator that needs it can be norified about the document rotation changing.
CCMAIL: developers@okular.org
svn path=/trunk/playground/graphics/okular/; revision=593632
Now every generator has to implement this one and put (if necessary) all the code for cleaning up all the stuff related to the currently open document.
For now the return value it is not read, but generators as strongly suggested to return tru o false, whether all the operations in there went fine.
svn path=/trunk/playground/graphics/okular/; revision=562210
The text exporting option is detached from that other options and always visible (disabled if not supported), so it could be easier for the user to find it out.
svn path=/trunk/playground/graphics/okular/; revision=556922
- no need for a private empty constructor
- move the signalRequestDone 'signal' to a protected visibility, as it's not meant to be called from outside a generator
- KPDF_EXPORT_PLUGIN -> OKULAR_EXPORT_PLUGIN
svn path=/trunk/playground/graphics/okular/; revision=553077
- more const'ness in signals
- no need to redeclare the signals in the generators, as they are already in Generator
svn path=/branches/work/kde4/playground/graphics/okular/; revision=549941
document has a rotation to apply over the page's own orientation
text search really works now when rotating (at least all my tests here worked)
svn path=/branches/work/kde4/playground/graphics/okular/; revision=547644
At the moment, the exported classes are only the one needed to make oKular and its actual plugins link, nothing more. Probably some other classes could be made visibile, but I'm not an expert about that.
svn path=/branches/work/kde4/playground/graphics/okular/; revision=538771
- 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
Display contents faster, waste less memory. Added preloading to forward-
generate pages (if threading enabled and memory profile >= normal). Main
pages are always generated first, then thumbnails come, then preload ones,
etc.. Btw memory and cpu will be happier now.
(1 bug in memory and 1 in preloading still remains.. will be spotted soon)
For Developers:
Generator: dropped moc, api changes, better functions naming.
PDFGenerator and Document: moved requests queue to the Document.
The generator performs only a single request a time. A flag can be
queried to know if the generator is ready for starting another pixmap
generation or not (in case it's generating a pixmap in background).
PixmapRequest: added priority and backgound (async) attributes.
Document: queuing requests by priority in requestPixmaps.
Observer: added defines for priorities used in doc->requestpixmaps.
PageView: delayed find-ahead timer creation (not created if not needed).
Added preload PixmapRequests to the pixmap requests list.
ThumbnailsList: adapted to pixmapRequest changes and changed naming for
delayed thumbanils request.
svn path=/trunk/kdegraphics/kpdf/; revision=379820
for the file naming map and file versioning. Please wait until the commit
storm ends to report any bug. Albert and Enrico
svn path=/trunk/kdegraphics/kpdf/; revision=374920