okular/ui/pageviewannotator.h
Enrico Ros 1e9f0e590a Another milestone has been reached: complete saving/restoring of
annotations in the 'document tie file'. Every attribute of kpdf dss
can be dumped to disk. Only rendering prevents HEAD merging now! :-)

Annotations:
  Storage: full annotations saving/loding on the tied XML is implemented.
    every annotation put on a page (either loaded from a pdf or created
    internally is loaded and saved when opening/closing a document).
    Attributes are dumped to XML and reloaded from it via qdom
  DataStructures: internal changes, better naming, some attributes fused.
    PopupAnnotation has become WindowAnnotation
  PDF16Parser: 100% completeness for the types we support

PDFGenerator:
  adapted to annotation ds changes. better parsing on a couple of attrs.
  correctly handle 'F'.

Misc:
  Document: remove/cleanup debugs, Page: performance testing stuff added,
  PagePainter: setPen( annot->color ), PageV..or: typo,
  TODO: many changes

svn path=/branches/kpdf_annotations/kdegraphics/kpdf/; revision=398789
2005-03-18 18:49:45 +00:00

70 lines
2.6 KiB
C++

/***************************************************************************
* Copyright (C) 2005 by Enrico Ros <eros.kde@email.it> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#ifndef _KPDF_PAGEVIEWANNOTATOR_H_
#define _KPDF_PAGEVIEWANNOTATOR_H_
#include <qobject.h>
#include <qdom.h>
// engines are defined and implemented in the cpp
class AnnotatorEngine;
/**
* @short PageView object devoted to annotation creation/handling.
*
* PageViewAnnotator is the kpdf class used for visually creating annotations.
* It uses internal 'engines' for interacting with user events and attaches
* the newly created annotation to the document when the creation is complete.
* In the meanwhile all PageView events (actually mouse/paint ones) are routed
* to this class that performs a rough visual representation of what the
* annotation will become when finished.
*
* "data/tools.xml" is the file that contains Annotations/Engine association
* for the items placed in the toolbar. The XML is parsed (1) when populating
* the toolbar and (2)after selecting a toolbar item, in which case an Ann is
* initialized with the values in the XML and an engine is created to handle
* that annotation.
*/
class PageViewAnnotator : public QObject
{
Q_OBJECT
public:
PageViewAnnotator( PageView * parent, KPDFDocument * storage );
~PageViewAnnotator();
// called to show/hide the editing toolbar
void setEnabled( bool enabled );
// methods used when creating the annotation
bool routeEvents() const;
void routeEvent( QMouseEvent * event, PageViewItem * item );
bool routePaints( const QRect & wantedRect ) const;
void routePaint( QPainter * painter, const QRect & paintRect );
private slots:
void slotToolSelected( int toolID );
void slotSaveToolbarOrientation( int side );
private:
// global class pointers
KPDFDocument * m_document;
PageView * m_pageView;
PageViewToolBar * m_toolBar;
AnnotatorEngine * m_engine;
QDomElement m_toolsDefinition;
// creation related variables
int m_lastToolID;
QRect m_lastDrawnRect;
PageViewItem * m_lockedItem;
};
#endif