Okular

annotations.h
1 /*
2  SPDX-FileCopyrightText: 2005 Enrico Ros <[email protected]>
3 
4  SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef _OKULAR_ANNOTATIONS_H_
8 #define _OKULAR_ANNOTATIONS_H_
9 
10 #include <QDateTime>
11 #include <QDomDocument>
12 #include <QDomElement>
13 #include <QFont>
14 #include <QLinkedList>
15 #include <QRect>
16 #include <QString>
17 
18 #include "area.h"
19 #include "okularcore_export.h"
20 
21 namespace Okular
22 {
23 class Action;
24 class Annotation;
25 class AnnotationObjectRect;
26 class AnnotationPrivate;
27 class Document;
28 class EmbeddedFile;
29 class Page;
30 class PagePrivate;
31 class Sound;
32 class Movie;
33 class TextAnnotationPrivate;
34 class LineAnnotationPrivate;
35 class GeomAnnotationPrivate;
36 class HighlightAnnotationPrivate;
37 class StampAnnotationPrivate;
38 class InkAnnotationPrivate;
39 class CaretAnnotationPrivate;
40 class FileAttachmentAnnotationPrivate;
41 class SoundAnnotationPrivate;
42 class MovieAnnotationPrivate;
43 class ScreenAnnotationPrivate;
44 class WidgetAnnotationPrivate;
45 class RichMediaAnnotationPrivate;
46 
47 /**
48  * @short Helper class for (recursive) annotation retrieval/storage.
49  */
50 class OKULARCORE_EXPORT AnnotationUtils
51 {
52 public:
53  /**
54  * Restore an annotation (with revisions if needed) from the dom @p element.
55  *
56  * Returns a pointer to the complete annotation or 0 if element is invalid.
57  */
58  static Annotation *createAnnotation(const QDomElement &element);
59 
60  /**
61  * Saves the @p annotation as a child of @p element taking
62  * care of saving all revisions if it has any.
63  */
64  static void storeAnnotation(const Annotation *annotation, QDomElement &element, QDomDocument &document);
65 
66  /**
67  * Returns the child element with the given @p name from the direct
68  * children of @p parentNode or a null element if not found.
69  */
70  static QDomElement findChildElement(const QDomNode &parentNode, const QString &name);
71 
72  /**
73  * Returns the geometry of the given @p annotation scaled by
74  * @p scaleX and @p scaleY.
75  */
76  static QRect annotationGeometry(const Annotation *annotation, double scaleX, double scaleY);
77 
78  /**
79  * Returns a pixmap for a stamp symbol
80  *
81  * @p name Name of a Okular stamp symbol, icon or path to an image
82  * @p size Size of the pixmap side
83  * @p keepAspectRatio Whether to keep aspect ratio of the stamp or not
84  *
85  * @since 21.12
86  */
87  static QPixmap loadStamp(const QString &nameOrPath, int size, bool keepAspectRatio = true);
88 };
89 
90 /**
91  * @short Annotation struct holds properties shared by all annotations.
92  *
93  * An Annotation is an object (text note, highlight, sound, popup window, ..)
94  * contained by a Page in the document.
95  */
96 class OKULARCORE_EXPORT Annotation
97 {
98  /// @cond PRIVATE
99  friend class AnnotationObjectRect;
100  friend class Document;
101  friend class DocumentPrivate;
102  friend class ObjectRect;
103  friend class Page;
104  friend class PagePrivate;
105  /// @endcond
106 
107 public:
108  /**
109  * Describes the type of annotation as defined in PDF standard.
110  */
111  enum SubType {
112  AText = 1, ///< A textual annotation
113  ALine = 2, ///< A line annotation
114  AGeom = 3, ///< A geometrical annotation
115  AHighlight = 4, ///< A highlight annotation
116  AStamp = 5, ///< A stamp annotation
117  AInk = 6, ///< An ink annotation
118  ACaret = 8, ///< A caret annotation
119  AFileAttachment = 9, ///< A file attachment annotation
120  ASound = 10, ///< A sound annotation
121  AMovie = 11, ///< A movie annotation
122  AScreen = 12, ///< A screen annotation
123  AWidget = 13, ///< A widget annotation
124  ARichMedia = 14, ///< A rich media annotation
125  A_BASE = 0 ///< The annotation base class
126  };
127 
128  /**
129  * Describes additional properties of an annotation.
130  */
131  enum Flag {
132  Hidden = 1, ///< Is not shown in the document
133  FixedSize = 2, ///< Has a fixed size
134  FixedRotation = 4, ///< Has a fixed rotation
135  DenyPrint = 8, ///< Cannot be printed
136  DenyWrite = 16, ///< Cannot be changed
137  DenyDelete = 32, ///< Cannot be deleted
138  ToggleHidingOnMouse = 64, ///< Can be hidden/shown by mouse click
139  External = 128, ///< Is stored external
140  ExternallyDrawn = 256, ///< Is drawn externally (by the generator which provided it) @since 0.10 (KDE 4.4)
141  BeingMoved = 512, ///< Is being moved (mouse drag and drop). If ExternallyDrawn, the generator must not draw it @since 0.15 (KDE 4.9)
142  BeingResized = 1024 ///< Is being resized (mouse drag and drop). If ExternallyDrawn, the generator must not draw it @since 1.1.0
143  };
144 
145  /**
146  * Describes possible line styles for @see ALine annotation.
147  */
148  enum LineStyle {
149  Solid = 1, ///< A solid line
150  Dashed = 2, ///< A dashed line
151  Beveled = 4, ///< A beveled line
152  Inset = 8, ///< An inset line
153  Underline = 16 ///< An underline
154  };
155 
156  /**
157  * Describes possible line effects for @see ALine annotation.
158  */
159  enum LineEffect {
160  NoEffect = 1, ///< No effect
161  Cloudy = 2 ///< The cloudy effect
162  };
163 
164  /**
165  * Describes the scope of revision information.
166  */
168  Reply = 1, ///< Belongs to a reply
169  Group = 2, ///< Belongs to a group
170  Delete = 4 ///< Belongs to a deleted paragraph
171  };
172 
173  /**
174  * Describes the type of revision information.
175  */
177  None = 1, ///< Not specified
178  Marked = 2, ///< Is marked
179  Unmarked = 4, ///< Is unmarked
180  Accepted = 8, ///< Has been accepted
181  Rejected = 16, ///< Was rejected
182  Cancelled = 32, ///< Has been cancelled
183  Completed = 64 ///< Has been completed
184  };
185 
186  /**
187  * Describes the type of additional actions.
188  *
189  * @since 0.16 (KDE 4.10)
190  */
192  PageOpening, ///< Performed when the page containing the annotation is opened.
193  PageClosing, ///< Performed when the page containing the annotation is closed.
194  CursorEntering, ///< Performed when the cursor enters the annotation's active area @since 1.5
195  CursorLeaving, ///< Performed when the cursor exists the annotation's active area @since 1.5
196  MousePressed, ///< Performed when the mouse button is pressed inside the annotation's active area @since 1.5
197  MouseReleased, ///< Performed when the mouse button is released inside the annotation's active area @since 1.5
198  FocusIn, ///< Performed when the annotation receives the input focus @since 1.5
199  FocusOut, ///< Performed when the annotation loses the input focus @since 1.5
200  };
201 
202  /**
203  * A function to be called when the annotation is destroyed.
204  *
205  * @warning the function must *not* call any virtual function,
206  * nor subcast.
207  *
208  * @since 0.7 (KDE 4.1)
209  */
210  typedef void (*DisposeDataFunction)(const Okular::Annotation *);
211 
212  /**
213  * Destroys the annotation.
214  */
215  virtual ~Annotation();
216 
217  /**
218  * Sets the @p author of the annotation.
219  */
220  void setAuthor(const QString &author);
221 
222  /**
223  * Returns the author of the annotation.
224  */
225  QString author() const;
226 
227  /**
228  * Sets the @p contents of the annotation.
229  */
230  void setContents(const QString &contents);
231 
232  /**
233  * Returns the contents of the annotation.
234  */
235  QString contents() const;
236 
237  /**
238  * Sets the unique @p name of the annotation.
239  */
240  void setUniqueName(const QString &name);
241 
242  /**
243  * Returns the unique name of the annotation.
244  */
245  QString uniqueName() const;
246 
247  /**
248  * Sets the last modification @p date of the annotation.
249  *
250  * The date must be before or equal to QDateTime::currentDateTime()
251  */
252  void setModificationDate(const QDateTime &date);
253 
254  /**
255  * Returns the last modification date of the annotation.
256  */
257  QDateTime modificationDate() const;
258 
259  /**
260  * Sets the creation @p date of the annotation.
261  *
262  * The date must be before or equal to @see modificationDate()
263  */
264  void setCreationDate(const QDateTime &date);
265 
266  /**
267  * Returns the creation date of the annotation.
268  */
269  QDateTime creationDate() const;
270 
271  /**
272  * Sets the @p flags of the annotation.
273  * @see @ref Flag
274  */
275  void setFlags(int flags);
276 
277  /**
278  * Returns the flags of the annotation.
279  * @see @ref Flag
280  */
281  int flags() const;
282 
283  /**
284  * Sets the bounding @p rectangle of the annotation.
285  */
286  void setBoundingRectangle(const NormalizedRect &rectangle);
287 
288  /**
289  * Returns the bounding rectangle of the annotation.
290  */
291  NormalizedRect boundingRectangle() const;
292 
293  /**
294  * Returns the transformed bounding rectangle of the annotation.
295  *
296  * This rectangle must be used when showing annotations on screen
297  * to have them rotated correctly.
298  */
299  NormalizedRect transformedBoundingRectangle() const;
300 
301  /**
302  * Move the annotation by the specified coordinates.
303  *
304  * @see canBeMoved()
305  */
306  void translate(const NormalizedPoint &coord);
307 
308  /**
309  * Adjust the annotation by the specified coordinates.
310  * Adds coordinates of @p deltaCoord1 to annotations top left corner,
311  * and @p deltaCoord2 to the bottom right.
312  *
313  * @see canBeResized()
314  */
315  void adjust(const NormalizedPoint &deltaCoord1, const NormalizedPoint &deltaCoord2);
316 
317  /**
318  * The Style class contains all information about style of the
319  * annotation.
320  */
321  class OKULARCORE_EXPORT Style
322  {
323  public:
324  /**
325  * Creates a new style.
326  */
327  Style();
328 
329  /**
330  * Destroys the style.
331  */
332  ~Style();
333 
334  Style(const Style &other);
335  Style &operator=(const Style &other);
336 
337  /**
338  * Sets the @p color of the style.
339  */
340  void setColor(const QColor &color);
341 
342  /**
343  * Returns the color of the style.
344  */
345  QColor color() const;
346 
347  /**
348  * Sets the @p opacity of the style.
349  */
350  void setOpacity(double opacity);
351 
352  /**
353  * Returns the opacity of the style.
354  */
355  double opacity() const;
356 
357  /**
358  * Sets the @p width of the style.
359  */
360  void setWidth(double width);
361 
362  /**
363  * Returns the width of the style.
364  */
365  double width() const;
366 
367  /**
368  * Sets the line @p style of the style.
369  */
370  void setLineStyle(LineStyle style);
371 
372  /**
373  * Returns the line style of the style.
374  */
375  LineStyle lineStyle() const;
376 
377  /**
378  * Sets the x-corners of the style.
379  */
380  void setXCorners(double xCorners);
381 
382  /**
383  * Returns the x-corners of the style.
384  */
385  double xCorners() const;
386 
387  /**
388  * Sets the y-corners of the style.
389  */
390  void setYCorners(double yCorners);
391 
392  /**
393  * Returns the y-corners of the style.
394  */
395  double yCorners() const;
396 
397  /**
398  * Sets the @p marks of the style.
399  */
400  void setMarks(int marks);
401 
402  /**
403  * Returns the marks of the style.
404  */
405  int marks() const;
406 
407  /**
408  * Sets the @p spaces of the style.
409  */
410  void setSpaces(int spaces);
411 
412  /**
413  * Returns the spaces of the style.
414  */
415  int spaces() const;
416 
417  /**
418  * Sets the line @p effect of the style.
419  */
420  void setLineEffect(LineEffect effect);
421 
422  /**
423  * Returns the line effect of the style.
424  */
425  LineEffect lineEffect() const;
426 
427  /**
428  * Sets the effect @p intensity of the style.
429  */
430  void setEffectIntensity(double intensity);
431 
432  /**
433  * Returns the effect intensity of the style.
434  */
435  double effectIntensity() const;
436 
437  private:
438  class Private;
439  Private *const d;
440  };
441 
442  /**
443  * Returns a reference to the style object of the annotation.
444  */
445  Style &style();
446 
447  /**
448  * Returns a const reference to the style object of the annotation.
449  */
450  const Style &style() const;
451 
452  /**
453  * The Window class contains all information about the popup window
454  * of the annotation that is used to edit the content and properties.
455  */
456  class OKULARCORE_EXPORT Window
457  {
458  public:
459  /**
460  * Creates a new window.
461  */
462  Window();
463 
464  /**
465  * Destroys the window.
466  */
467  ~Window();
468 
469  Window(const Window &other);
470  Window &operator=(const Window &other);
471 
472  /**
473  * Sets the @p flags of the window.
474  */
475  void setFlags(int flags);
476 
477  /**
478  * Returns the flags of the window.
479  */
480  int flags() const;
481 
482  /**
483  * Sets the top-left @p point of the window.
484  */
485  void setTopLeft(const NormalizedPoint &point);
486 
487  /**
488  * Returns the top-left point of the window.
489  */
490  NormalizedPoint topLeft() const;
491 
492  /**
493  * Sets the @p width of the window.
494  */
495  void setWidth(int width);
496 
497  /**
498  * Returns the width of the window.
499  */
500  int width() const;
501 
502  /**
503  * Sets the @p height of the window.
504  */
505  void setHeight(int height);
506 
507  /**
508  * Returns the height of the window.
509  */
510  int height() const;
511 
512  /**
513  * Sets the @p title of the window.
514  */
515  void setTitle(const QString &title);
516 
517  /**
518  * Returns the title of the window.
519  */
520  QString title() const;
521 
522  /**
523  * Sets the @p summary of the window.
524  */
525  void setSummary(const QString &summary);
526 
527  /**
528  * Returns the summary of the window.
529  */
530  QString summary() const;
531 
532  private:
533  class Private;
534  Private *const d;
535  };
536 
537  /**
538  * Returns a reference to the window object of the annotation.
539  */
540  Window &window();
541 
542  /**
543  * Returns a const reference to the window object of the annotation.
544  */
545  const Window &window() const;
546 
547  /**
548  * The Revision class contains all information about the revision
549  * of the annotation.
550  */
551  class OKULARCORE_EXPORT Revision
552  {
553  public:
554  /**
555  * Creates a new revision.
556  */
557  Revision();
558 
559  /**
560  * Destroys the revision.
561  */
562  ~Revision();
563 
564  Revision(const Revision &other);
565  Revision &operator=(const Revision &other);
566 
567  /**
568  * Sets the @p annotation the revision belongs to.
569  */
570  void setAnnotation(Annotation *annotation);
571 
572  /**
573  * Returns the annotation the revision belongs to.
574  */
575  Annotation *annotation() const;
576 
577  /**
578  * Sets the @p scope of the revision.
579  * @see RevisionScope
580  */
581  void setScope(RevisionScope scope);
582 
583  /**
584  * Returns the scope of the revision.
585  */
586  RevisionScope scope() const;
587 
588  /**
589  * Sets the @p type of the revision.
590  * @see RevisionType
591  */
592  void setType(RevisionType type);
593 
594  /**
595  * Returns the type of the revision.
596  */
597  RevisionType type() const;
598 
599  private:
600  class Private;
601  Private *const d;
602  };
603 
604  /**
605  * Returns a reference to the revision list of the annotation.
606  */
607  QLinkedList<Revision> &revisions();
608 
609  /**
610  * Returns a reference to the revision list of the annotation.
611  */
612  const QLinkedList<Revision> &revisions() const;
613 
614  /**
615  * Sets the "native" @p id of the annotation.
616  *
617  * This is for use of the Generator, that can optionally store an
618  * handle (a pointer, an identifier, etc) of the "native" annotation
619  * object, if any.
620  *
621  * @note Okular makes no use of this
622  *
623  * @since 0.7 (KDE 4.1)
624  */
625  void setNativeId(const QVariant &id);
626 
627  /**
628  * Returns the "native" id of the annotation.
629  *
630  * @since 0.7 (KDE 4.1)
631  */
632  QVariant nativeId() const;
633 
634  /**
635  * Sets a function to be called when the annotation is destroyed.
636  *
637  * @warning the function must *not* call any virtual function,
638  * nor subcast.
639  *
640  * @since 0.7 (KDE 4.1)
641  */
642  void setDisposeDataFunction(DisposeDataFunction func);
643 
644  /**
645  * Returns whether the annotation can be moved.
646  *
647  * @since 0.7 (KDE 4.1)
648  */
649  bool canBeMoved() const;
650 
651  /**
652  * Returns whether the annotation can be resized.
653  */
654  bool canBeResized() const;
655 
656  /**
657  * Returns whether the annotation dialog should be open after creation of the annotation or not
658  *
659  * @since 0.13 (KDE 4.7)
660  */
661  bool openDialogAfterCreation() const;
662 
663  /**
664  * Returns the sub type of the annotation.
665  */
666  virtual SubType subType() const = 0;
667 
668  /**
669  * Stores the annotation as xml in @p document under the given parent @p node.
670  */
671  virtual void store(QDomNode &node, QDomDocument &document) const;
672 
673  /**
674  * Retrieve the QDomNode representing this annotation's properties
675 
676  * @since 0.17 (KDE 4.11)
677  */
678  QDomNode getAnnotationPropertiesDomNode() const;
679 
680  /**
681  * Sets annotations internal properties according to the contents of @p node
682  *
683  * @since 0.17 (KDE 4.11)
684  */
685  void setAnnotationProperties(const QDomNode &node);
686 
687 protected:
688  /// @cond PRIVATE
689  explicit Annotation(AnnotationPrivate &dd);
690  Annotation(AnnotationPrivate &dd, const QDomNode &description);
691  Q_DECLARE_PRIVATE(Annotation)
692  AnnotationPrivate *d_ptr;
693  /// @endcond
694 
695 private:
696  Q_DISABLE_COPY(Annotation)
697 };
698 
699 /**
700  * @short Native annotation interface
701  *
702  * Generators can subclass it to provide native annotation support.
703  * Generators can use Annotation::setNativeId to store per-annotation data.
704  *
705  * @since 0.15 (KDE 4.9)
706  */
707 class OKULARCORE_EXPORT AnnotationProxy
708 {
709 public:
710  enum Capability {
711  Addition, ///< Generator can create native annotations
712  Modification, ///< Generator can edit native annotations
713  Removal ///< Generator can remove native annotations
714  };
715 
716  AnnotationProxy();
717 
718  /**
719  * Destroys the annotation proxy.
720  */
721  virtual ~AnnotationProxy();
722 
723  AnnotationProxy(const AnnotationProxy &) = delete;
724  AnnotationProxy &operator=(const AnnotationProxy &) = delete;
725 
726  /**
727  * Query for the supported capabilities.
728  */
729  virtual bool supports(Capability capability) const = 0;
730 
731  /**
732  * Called when a new @p annotation is added to a @p page.
733  *
734  * @note Only called if supports(Addition) == true
735  */
736  virtual void notifyAddition(Annotation *annotation, int page) = 0;
737 
738  /**
739  * Called after an existing @p annotation at a given @p page is modified.
740  *
741  * Generator can call @p annotation getters to get the new values.
742  * @p appearanceChanged tells if a non-visible property was modified
743  *
744  * @note Only called if supports(Modification) == true
745  */
746  virtual void notifyModification(const Annotation *annotation, int page, bool appearanceChanged) = 0;
747 
748  /**
749  * Called when an existing @p annotation at a given @p page is removed.
750  *
751  * @note Only called if supports(Removal) == true
752  */
753  virtual void notifyRemoval(Annotation *annotation, int page) = 0;
754 };
755 
756 class OKULARCORE_EXPORT TextAnnotation : public Annotation
757 {
758 public:
759  /**
760  * Describes the type of the text.
761  */
762  enum TextType {
763  Linked, ///< The annotation is linked to a text
764  InPlace ///< The annotation is located next to the text
765  };
766 
767  /**
768  * Describes the style of the text.
769  */
770  enum InplaceIntent {
771  Unknown, ///< Unknown style
772  Callout, ///< Callout style
773  TypeWriter ///< Type writer style
774  };
775 
776  /**
777  * Creates a new text annotation.
778  */
779  TextAnnotation();
780 
781  /**
782  * Creates a new text annotation from the xml @p description
783  */
784  explicit TextAnnotation(const QDomNode &description);
785 
786  /**
787  * Destroys the text annotation.
788  */
789  ~TextAnnotation() override;
790 
791  /**
792  * Sets the text @p type of the text annotation.
793  * @see TextType
794  */
795  void setTextType(TextType type);
796 
797  /**
798  * Returns the text type of the text annotation.
799  */
800  TextType textType() const;
801 
802  /**
803  * Sets the @p icon of the text annotation.
804  */
805  void setTextIcon(const QString &icon);
806 
807  /**
808  * Returns the icon of the text annotation.
809  */
810  QString textIcon() const;
811 
812  /**
813  * Sets the @p font of the text annotation.
814  */
815  void setTextFont(const QFont &font);
816 
817  /**
818  * Returns the font of the text annotation.
819  */
820  QFont textFont() const;
821 
822  /**
823  * Sets the @p color of inplace text.
824  *
825  * @since 1.6
826  */
827  void setTextColor(const QColor &color);
828 
829  /**
830  * Returns the color of inplace text.
831  *
832  * @since 1.6
833  */
834  QColor textColor() const;
835 
836  /**
837  * Sets the inplace @p alignment of the text annotation.
838  * 0:left, 1:center, 2:right
839  */
840  void setInplaceAlignment(int alignment);
841 
842  /**
843  * Returns the inplace alignment of the text annotation.
844  * 0:left, 1:center, 2:right
845  */
846  int inplaceAlignment() const;
847 
848  /**
849  * Sets the inplace callout @p point at @p index.
850  *
851  * @p index must be between 0 and 2.
852  */
853  void setInplaceCallout(const NormalizedPoint &point, int index);
854 
855  /**
856  * Returns the inplace callout point for @p index.
857  *
858  * @p index must be between 0 and 2.
859  */
860  NormalizedPoint inplaceCallout(int index) const;
861 
862  /**
863  * Returns the transformed (e.g. rotated) inplace callout point for @p index.
864  *
865  * @p index must be between 0 and 2.
866  */
867  NormalizedPoint transformedInplaceCallout(int index) const;
868 
869  /**
870  * Returns the inplace @p intent of the text annotation.
871  * @see InplaceIntent
872  */
873  void setInplaceIntent(InplaceIntent intent);
874 
875  /**
876  * Returns the inplace intent of the text annotation.
877  */
878  InplaceIntent inplaceIntent() const;
879 
880  /**
881  * Returns the sub type of the text annotation.
882  */
883  SubType subType() const override;
884 
885  /**
886  * Stores the text annotation as xml in @p document under the given parent @p node.
887  */
888  void store(QDomNode &node, QDomDocument &document) const override;
889 
890 private:
891  Q_DECLARE_PRIVATE(TextAnnotation)
892  Q_DISABLE_COPY(TextAnnotation)
893 };
894 
895 class OKULARCORE_EXPORT LineAnnotation : public Annotation
896 {
897 public:
898  /**
899  * Describes the line ending style.
900  */
901  enum TermStyle {
902  Square, ///< Using a square
903  Circle, ///< Using a circle
904  Diamond, ///< Using a diamond
905  OpenArrow, ///< Using an open arrow
906  ClosedArrow, ///< Using a closed arrow
907  None, ///< No special ending style
908  Butt, ///< Using a butt ending
909  ROpenArrow, ///< Using an arrow opened at the right side
910  RClosedArrow, ///< Using an arrow closed at the right side
911  Slash ///< Using a slash
912  };
913 
914  /**
915  * Describes the line intent.
916  */
917  enum LineIntent {
918  Unknown, ///< Unknown intent
919  Arrow, ///< Arrow intent
920  Dimension, ///< Dimension intent
921  PolygonCloud ///< Polygon cloud intent
922  };
923 
924  /**
925  * Creates a new line annotation.
926  */
927  LineAnnotation();
928 
929  /**
930  * Creates a new line annotation from the xml @p description
931  */
932  explicit LineAnnotation(const QDomNode &description);
933 
934  /**
935  * Destroys the line annotation.
936  */
937  ~LineAnnotation() override;
938 
939  /**
940  * Sets the normalized line @p points of the line annotation.
941  */
942  void setLinePoints(const QLinkedList<NormalizedPoint> &points);
943 
944  /**
945  * Returns the normalized line points of the line annotation.
946  */
947  QLinkedList<NormalizedPoint> linePoints() const;
948 
949  /**
950  * Returns the transformed (e.g. rotated) normalized line points
951  * of the line annotation.
952  */
953  QLinkedList<NormalizedPoint> transformedLinePoints() const;
954 
955  /**
956  * Sets the line starting @p style of the line annotation.
957  * @see TermStyle
958  */
959  void setLineStartStyle(TermStyle style);
960 
961  /**
962  * Returns the line starting style of the line annotation.
963  */
964  TermStyle lineStartStyle() const;
965 
966  /**
967  * Sets the line ending @p style of the line annotation.
968  * @see TermStyle
969  */
970  void setLineEndStyle(TermStyle style);
971 
972  /**
973  * Returns the line ending style of the line annotation.
974  */
975  TermStyle lineEndStyle() const;
976 
977  /**
978  * Sets whether the line shall be @p closed.
979  */
980  void setLineClosed(bool closed);
981 
982  /**
983  * Returns whether the line shall be closed.
984  */
985  bool lineClosed() const;
986 
987  /**
988  * Sets the inner line @p color of the line annotation.
989  */
990  void setLineInnerColor(const QColor &color);
991 
992  /**
993  * Returns the inner line color of the line annotation.
994  */
995  QColor lineInnerColor() const;
996 
997  /**
998  * Sets the leading forward @p point of the line annotation.
999  */
1000  void setLineLeadingForwardPoint(double point);
1001 
1002  /**
1003  * Returns the leading forward point of the line annotation.
1004  */
1005  double lineLeadingForwardPoint() const;
1006 
1007  /**
1008  * Sets the leading backward @p point of the line annotation.
1009  */
1010  void setLineLeadingBackwardPoint(double point);
1011 
1012  /**
1013  * Returns the leading backward point of the line annotation.
1014  */
1015  double lineLeadingBackwardPoint() const;
1016 
1017  /**
1018  * Sets whether the caption shall be @p shown.
1019  */
1020  void setShowCaption(bool shown);
1021 
1022  /**
1023  * Returns whether the caption shall be shown.
1024  */
1025  bool showCaption() const;
1026 
1027  /**
1028  * Sets the line @p intent of the line annotation.
1029  * @see LineIntent
1030  */
1031  void setLineIntent(LineIntent intent);
1032 
1033  /**
1034  * Returns the line intent of the line annotation.
1035  */
1036  LineIntent lineIntent() const;
1037 
1038  /**
1039  * Returns the sub type of the line annotation.
1040  */
1041  SubType subType() const override;
1042 
1043  /**
1044  * Stores the line annotation as xml in @p document under the given parent @p node.
1045  */
1046  void store(QDomNode &node, QDomDocument &document) const override;
1047 
1048 private:
1049  Q_DECLARE_PRIVATE(LineAnnotation)
1050  Q_DISABLE_COPY(LineAnnotation)
1051 };
1052 
1053 class OKULARCORE_EXPORT GeomAnnotation : public Annotation
1054 {
1055 public:
1056  // common enums
1057  enum GeomType {
1058  InscribedSquare, ///< Draw a square
1059  InscribedCircle ///< Draw a circle
1060  };
1061 
1062  /**
1063  * Creates a new geometrical annotation.
1064  */
1065  GeomAnnotation();
1066 
1067  /**
1068  * Creates a new geometrical annotation from the xml @p description
1069  */
1070  explicit GeomAnnotation(const QDomNode &description);
1071 
1072  /**
1073  * Destroys the geometrical annotation.
1074  */
1075  ~GeomAnnotation() override;
1076 
1077  /**
1078  * Sets the geometrical @p type of the geometrical annotation.
1079  * @see GeomType
1080  */
1081  void setGeometricalType(GeomType type);
1082 
1083  /**
1084  * Returns the geometrical type of the geometrical annotation.
1085  */
1086  GeomType geometricalType() const;
1087 
1088  /**
1089  * Sets the inner @p color of the geometrical annotation.
1090  */
1091  void setGeometricalInnerColor(const QColor &color);
1092 
1093  /**
1094  * Returns the inner color of the geometrical annotation.
1095  */
1096  QColor geometricalInnerColor() const;
1097 
1098  /**
1099  * Returns the sub type of the geometrical annotation.
1100  */
1101  SubType subType() const override;
1102 
1103  /**
1104  * Stores the geometrical annotation as xml in @p document
1105  * under the given parent @p node.
1106  */
1107  void store(QDomNode &node, QDomDocument &document) const override;
1108 
1109 private:
1110  Q_DECLARE_PRIVATE(GeomAnnotation)
1111  Q_DISABLE_COPY(GeomAnnotation)
1112 };
1113 
1114 class OKULARCORE_EXPORT HighlightAnnotation : public Annotation
1115 {
1116 public:
1117  /**
1118  * Describes the highlighting style of the annotation.
1119  */
1120  enum HighlightType {
1121  Highlight, ///< Highlights the text
1122  Squiggly, ///< Squiggles the text
1123  Underline, ///< Underlines the text
1124  StrikeOut ///< Strikes out the text
1125  };
1126 
1127  /**
1128  * Creates a new highlight annotation.
1129  */
1130  HighlightAnnotation();
1131 
1132  /**
1133  * Creates a new highlight annotation from the xml @p description
1134  */
1135  explicit HighlightAnnotation(const QDomNode &description);
1136 
1137  /**
1138  * Destroys the highlight annotation.
1139  */
1140  ~HighlightAnnotation() override;
1141 
1142  /**
1143  * Sets the @p type of the highlight annotation.
1144  * @see HighlightType
1145  */
1146  void setHighlightType(HighlightType type);
1147 
1148  /**
1149  * Returns the type of the highlight annotation.
1150  */
1151  HighlightType highlightType() const;
1152 
1153  /**
1154  * @short Describes a highlight quad of a text markup annotation.
1155  *
1156  * The Quad is a closed path of 4 NormalizedPoints.
1157  * Another set of 4 NormalizedPoints can be generated with transform(),
1158  * e. g. to get highlighting coordinates on a rotated PageViewItem.
1159  * Additionally, Quad stores some geometry related style attributes.
1160  *
1161  * To enable correct rendering of the annotation,
1162  * the points 0 and 1 must describe the bottom edge of the quad
1163  * (relative to the text orientation).
1164  *
1165  * @see NormalizedPoint
1166  */
1167  class OKULARCORE_EXPORT Quad
1168  {
1169  public:
1170  /**
1171  * Creates a new quad.
1172  */
1173  Quad();
1174 
1175  /**
1176  * Destroys the quad.
1177  */
1178  ~Quad();
1179 
1180  Quad(const Quad &other);
1181  Quad &operator=(const Quad &other);
1182 
1183  /**
1184  * Sets the normalized @p point at @p index.
1185  *
1186  * @p index must be between 0 and 3.
1187  */
1188  void setPoint(const NormalizedPoint &point, int index);
1189 
1190  /**
1191  * Returns the normalized point at @p index.
1192  *
1193  * @p index must be between 0 and 3.
1194  */
1195  NormalizedPoint point(int index) const;
1196 
1197  /**
1198  * Returns the transformed (e.g. rotated) normalized point at @p index.
1199  *
1200  * @p index must be between 0 and 3.
1201  */
1202  NormalizedPoint transformedPoint(int index) const;
1203 
1204  /**
1205  * Sets whether a cap should be used at the start.
1206  */
1207  void setCapStart(bool value);
1208 
1209  /**
1210  * Returns whether a cap should be used at the start.
1211  */
1212  bool capStart() const;
1213 
1214  /**
1215  * Sets whether a cap should be used at the end.
1216  */
1217  void setCapEnd(bool value);
1218 
1219  /**
1220  * Returns whether a cap should be used at the end.
1221  */
1222  bool capEnd() const;
1223 
1224  /**
1225  * Sets the @p width of the drawing feather.
1226  */
1227  void setFeather(double width);
1228 
1229  /**
1230  * Returns the width of the drawing feather.
1231  */
1232  double feather() const;
1233 
1234  /**
1235  * Transforms the quad coordinates with the transformation defined
1236  * by @p matrix.
1237  *
1238  * The transformed coordinates will be accessible with transformedPoint().
1239  * The coordinates returned by point() are not affected.
1240  */
1241  void transform(const QTransform &matrix);
1242 
1243  private:
1244  class Private;
1245  Private *const d;
1246  };
1247 
1248  /**
1249  * Returns a reference to the quad list of the highlight annotation.
1250  */
1251  QList<Quad> &highlightQuads();
1252 
1253  /**
1254  * Returns a const reference to the quad list of the highlight annotation.
1255  * @since 20.12
1256  */
1257  const QList<Quad> &highlightQuads() const;
1258 
1259  /**
1260  * Returns the sub type of the highlight annotation.
1261  */
1262  SubType subType() const override;
1263 
1264  /**
1265  * Stores the highlight annotation as xml in @p document
1266  * under the given parent @p node.
1267  */
1268  void store(QDomNode &node, QDomDocument &document) const override;
1269 
1270 private:
1271  Q_DECLARE_PRIVATE(HighlightAnnotation)
1272  Q_DISABLE_COPY(HighlightAnnotation)
1273 };
1274 
1275 class OKULARCORE_EXPORT StampAnnotation : public Annotation
1276 {
1277 public:
1278  /**
1279  * Creates a new stamp annotation.
1280  */
1281  StampAnnotation();
1282 
1283  /**
1284  * Creates a new stamp annotation from the xml @p description
1285  */
1286  explicit StampAnnotation(const QDomNode &description);
1287 
1288  /**
1289  * Destroys the stamp annotation.
1290  */
1291  ~StampAnnotation() override;
1292 
1293  /**
1294  * Sets the @p name of the icon for the stamp annotation.
1295  */
1296  void setStampIconName(const QString &name);
1297 
1298  /**
1299  * Returns the name of the icon.
1300  */
1301  QString stampIconName() const;
1302 
1303  /**
1304  * Returns the sub type of the stamp annotation.
1305  */
1306  SubType subType() const override;
1307 
1308  /**
1309  * Stores the stamp annotation as xml in @p document
1310  * under the given parent @p node.
1311  */
1312  void store(QDomNode &node, QDomDocument &document) const override;
1313 
1314 private:
1315  Q_DECLARE_PRIVATE(StampAnnotation)
1316  Q_DISABLE_COPY(StampAnnotation)
1317 };
1318 
1319 class OKULARCORE_EXPORT InkAnnotation : public Annotation
1320 {
1321 public:
1322  /**
1323  * Creates a new ink annotation.
1324  */
1325  InkAnnotation();
1326 
1327  /**
1328  * Creates a new ink annotation from the xml @p description
1329  */
1330  explicit InkAnnotation(const QDomNode &description);
1331 
1332  /**
1333  * Destroys the ink annotation.
1334  */
1335  ~InkAnnotation() override;
1336 
1337  /**
1338  * Sets the @p paths of points for the ink annotation.
1339  */
1340  void setInkPaths(const QList<QLinkedList<NormalizedPoint>> &paths);
1341 
1342  /**
1343  * Returns the paths of points of the ink annotation.
1344  */
1345  QList<QLinkedList<NormalizedPoint>> inkPaths() const;
1346 
1347  /**
1348  * Returns the paths of transformed (e.g. rotated) points of
1349  * the ink annotation.
1350  */
1351  QList<QLinkedList<NormalizedPoint>> transformedInkPaths() const;
1352 
1353  /**
1354  * Returns the sub type of the ink annotation.
1355  */
1356  SubType subType() const override;
1357 
1358  /**
1359  * Stores the ink annotation as xml in @p document
1360  * under the given parent @p node.
1361  */
1362  void store(QDomNode &node, QDomDocument &document) const override;
1363 
1364 private:
1365  Q_DECLARE_PRIVATE(InkAnnotation)
1366  Q_DISABLE_COPY(InkAnnotation)
1367 };
1368 
1369 class OKULARCORE_EXPORT CaretAnnotation : public Annotation
1370 {
1371 public:
1372  /**
1373  * Describes the highlighting style of the annotation.
1374  */
1375  enum CaretSymbol {
1376  None, ///< No symbol to be associated with the text
1377  P ///< A 'paragraph' symbol
1378  };
1379 
1380  /**
1381  * Creates a new caret annotation.
1382  */
1383  CaretAnnotation();
1384 
1385  /**
1386  * Creates a new caret annotation from the xml @p description
1387  */
1388  explicit CaretAnnotation(const QDomNode &description);
1389 
1390  /**
1391  * Destroys the caret annotation.
1392  */
1393  ~CaretAnnotation() override;
1394 
1395  /**
1396  * Sets the @p symbol for the caret annotation.
1397  */
1398  void setCaretSymbol(CaretAnnotation::CaretSymbol symbol);
1399 
1400  /**
1401  * Returns the symbol of the annotation.
1402  */
1403  CaretAnnotation::CaretSymbol caretSymbol() const;
1404 
1405  /**
1406  * Returns the sub type of the caret annotation.
1407  */
1408  SubType subType() const override;
1409 
1410  /**
1411  * Stores the caret annotation as xml in @p document
1412  * under the given parent @p node.
1413  */
1414  void store(QDomNode &node, QDomDocument &document) const override;
1415 
1416 private:
1417  Q_DECLARE_PRIVATE(CaretAnnotation)
1418  Q_DISABLE_COPY(CaretAnnotation)
1419 };
1420 
1421 class OKULARCORE_EXPORT FileAttachmentAnnotation : public Annotation
1422 {
1423 public:
1424  /**
1425  * Creates a new file attachment annotation.
1426  */
1427  FileAttachmentAnnotation();
1428  /**
1429  * Creates a new file attachment annotation from the xml @p description
1430  */
1431  explicit FileAttachmentAnnotation(const QDomNode &description);
1432  /**
1433  * Destroys the file attachment annotation.
1434  */
1435  ~FileAttachmentAnnotation() override;
1436 
1437  /**
1438  * Gets the name of the icon.
1439  */
1440  QString fileIconName() const;
1441 
1442  /**
1443  * Sets the @p iconName of the icon for the file attachment annotation.
1444  */
1445  void setFileIconName(const QString &iconName);
1446 
1447  /**
1448  * Gets the embedded file object.
1449  */
1450  EmbeddedFile *embeddedFile() const;
1451 
1452  /**
1453  * Sets the @p ef representing the embedded file of the file
1454  * attachment annotation.
1455  */
1456  void setEmbeddedFile(EmbeddedFile *ef);
1457 
1458  /**
1459  * Returns the sub type of the file attachment annotation.
1460  */
1461  SubType subType() const override;
1462 
1463  /**
1464  * Stores the file attachment annotation as xml in @p document
1465  * under the given parent @p node.
1466  */
1467  void store(QDomNode &node, QDomDocument &document) const override;
1468 
1469 private:
1470  Q_DECLARE_PRIVATE(FileAttachmentAnnotation)
1471  Q_DISABLE_COPY(FileAttachmentAnnotation)
1472 };
1473 
1474 /**
1475  * \short Sound annotation.
1476  *
1477  * The sound annotation represents a sound to be played when activated.
1478  *
1479  * @since 0.7 (KDE 4.1)
1480  */
1481 class OKULARCORE_EXPORT SoundAnnotation : public Annotation
1482 {
1483 public:
1484  /**
1485  * Creates a new sound annotation.
1486  */
1487  SoundAnnotation();
1488  /**
1489  * Creates a new sound annotation from the xml @p description
1490  */
1491  explicit SoundAnnotation(const QDomNode &description);
1492  /**
1493  * Destroys the sound annotation.
1494  */
1495  ~SoundAnnotation() override;
1496 
1497  /**
1498  * Gets the name of the icon.
1499  */
1500  QString soundIconName() const;
1501 
1502  /**
1503  * Sets the @p iconName of the icon for the sound annotation.
1504  */
1505  void setSoundIconName(const QString &iconName);
1506 
1507  /**
1508  * Gets the sound object.
1509  */
1510  Sound *sound() const;
1511 
1512  /**
1513  * Sets the @p s representing the sound of the file
1514  * attachment annotation.
1515  */
1516  void setSound(Sound *s);
1517 
1518  /**
1519  * Returns the sub type of the sound annotation.
1520  */
1521  SubType subType() const override;
1522 
1523  /**
1524  * Stores the sound annotation as xml in @p document
1525  * under the given parent @p node.
1526  */
1527  void store(QDomNode &node, QDomDocument &document) const override;
1528 
1529 private:
1530  Q_DECLARE_PRIVATE(SoundAnnotation)
1531  Q_DISABLE_COPY(SoundAnnotation)
1532 };
1533 
1534 /**
1535  * \short Movie annotation.
1536  *
1537  * The movie annotation represents a movie to be played when activated.
1538  *
1539  * @since 0.8 (KDE 4.2)
1540  */
1541 class OKULARCORE_EXPORT MovieAnnotation : public Annotation
1542 {
1543 public:
1544  /**
1545  * Creates a new movie annotation.
1546  */
1547  MovieAnnotation();
1548  /**
1549  * Creates a new movie annotation from the xml @p description
1550  */
1551  explicit MovieAnnotation(const QDomNode &description);
1552  /**
1553  * Destroys the movie annotation.
1554  */
1555  ~MovieAnnotation() override;
1556  /**
1557  * Gets the movie object.
1558  */
1559  Movie *movie() const;
1560  /**
1561  * Sets the new @p movie object.
1562  */
1563  void setMovie(Movie *movie);
1564  /**
1565  * Returns the sub type of the movie annotation.
1566  */
1567  SubType subType() const override;
1568  /**
1569  * Stores the movie annotation as xml in @p document
1570  * under the given @p parentNode.
1571  */
1572  void store(QDomNode &parentNode, QDomDocument &document) const override;
1573 
1574 private:
1575  Q_DECLARE_PRIVATE(MovieAnnotation)
1576  Q_DISABLE_COPY(MovieAnnotation)
1577 };
1578 
1579 /**
1580  * \short Screen annotation.
1581  *
1582  * The screen annotation specifies a region of a page upon which media clips
1583  * may be played. It also serves as an object from which actions can be triggered.
1584  *
1585  * @since 0.16 (KDE 4.10)
1586  */
1587 class OKULARCORE_EXPORT ScreenAnnotation : public Annotation
1588 {
1589 public:
1590  /**
1591  * Creates a new screen annotation.
1592  */
1593  ScreenAnnotation();
1594 
1595  /**
1596  * Creates a new screen annotation from the xml @p description
1597  */
1598  explicit ScreenAnnotation(const QDomNode &description);
1599 
1600  /**
1601  * Destroys the screen annotation.
1602  */
1603  ~ScreenAnnotation() override;
1604 
1605  /**
1606  * Returns the sub type of the screen annotation.
1607  */
1608  SubType subType() const override;
1609 
1610  /**
1611  * Stores the screen annotation as xml in @p document
1612  * under the given @p parentNode.
1613  */
1614  void store(QDomNode &parentNode, QDomDocument &document) const override;
1615 
1616  /**
1617  * Sets the @p action that is executed when the annotation is triggered.
1618  *
1619  * @since 0.16 (KDE 4.10)
1620  */
1621  void setAction(Action *action);
1622 
1623  /**
1624  * Returns the action that is executed when the annotation is triggered or @c 0 if not action has been defined.
1625  *
1626  * @since 0.16 (KDE 4.10)
1627  */
1628  Action *action() const;
1629 
1630  /**
1631  * Sets the additional @p action of the given @p type.
1632  *
1633  * @since 0.16 (KDE 4.10)
1634  */
1635  void setAdditionalAction(AdditionalActionType type, Action *action);
1636 
1637  /**
1638  * Returns the additional action of the given @p type or @c 0 if no action has been defined.
1639  *
1640  * @since 0.16 (KDE 4.10)
1641  */
1642  Action *additionalAction(AdditionalActionType type) const;
1643 
1644 private:
1645  Q_DECLARE_PRIVATE(ScreenAnnotation)
1646  Q_DISABLE_COPY(ScreenAnnotation)
1647 };
1648 
1649 /**
1650  * \short Widget annotation.
1651  *
1652  * The widget annotation represents a widget on a page.
1653  *
1654  * @since 0.16 (KDE 4.10)
1655  */
1656 class OKULARCORE_EXPORT WidgetAnnotation : public Annotation
1657 {
1658 public:
1659  /**
1660  * Creates a new widget annotation.
1661  */
1662  WidgetAnnotation();
1663 
1664  /**
1665  * Creates a new widget annotation from the xml @p description
1666  */
1667  explicit WidgetAnnotation(const QDomNode &description);
1668 
1669  /**
1670  * Destroys the widget annotation.
1671  */
1672  ~WidgetAnnotation() override;
1673 
1674  /**
1675  * Returns the sub type of the widget annotation.
1676  */
1677  SubType subType() const override;
1678 
1679  /**
1680  * Stores the widget annotation as xml in @p document
1681  * under the given @p parentNode.
1682  */
1683  void store(QDomNode &parentNode, QDomDocument &document) const override;
1684 
1685  /**
1686  * Sets the additional @p action of the given @p type.
1687  *
1688  * @since 0.16 (KDE 4.10)
1689  */
1690  void setAdditionalAction(AdditionalActionType type, Action *action);
1691 
1692  /**
1693  * Returns the additional action of the given @p type or @c 0 if no action has been defined.
1694  *
1695  * @since 0.16 (KDE 4.10)
1696  */
1697  Action *additionalAction(AdditionalActionType type) const;
1698 
1699 private:
1700  Q_DECLARE_PRIVATE(WidgetAnnotation)
1701  Q_DISABLE_COPY(WidgetAnnotation)
1702 };
1703 
1704 /**
1705  * \short RichMedia annotation.
1706  *
1707  * The rich media annotation represents an video or sound on a page.
1708  *
1709  * @since 1.0
1710  */
1711 class OKULARCORE_EXPORT RichMediaAnnotation : public Annotation
1712 {
1713 public:
1714  /**
1715  * Creates a new rich media annotation.
1716  */
1718 
1719  /**
1720  * Creates a new rich media annotation from the xml @p description
1721  */
1722  explicit RichMediaAnnotation(const QDomNode &description);
1723 
1724  /**
1725  * Destroys the rich media annotation.
1726  */
1727  ~RichMediaAnnotation() override;
1728 
1729  /**
1730  * Returns the sub type of the rich media annotation.
1731  */
1732  SubType subType() const override;
1733 
1734  /**
1735  * Stores the rich media annotation as xml in @p document
1736  * under the given @p parentNode.
1737  */
1738  void store(QDomNode &parentNode, QDomDocument &document) const override;
1739 
1740  /**
1741  * Gets the movie object.
1742  */
1743  Movie *movie() const;
1744 
1745  /**
1746  * Sets the new @p movie object.
1747  */
1748  void setMovie(Movie *movie);
1749 
1750  /**
1751  * Sets the @p embeddedFile representing the embedded file.
1752  */
1753  void setEmbeddedFile(EmbeddedFile *embeddedFile);
1754 
1755  /**
1756  * Gets the embedded file object.
1757  */
1758  EmbeddedFile *embeddedFile() const;
1759 
1760 private:
1761  Q_DECLARE_PRIVATE(RichMediaAnnotation)
1762  Q_DISABLE_COPY(RichMediaAnnotation)
1763 };
1764 
1765 }
1766 
1767 #endif
Performed when the cursor enters the annotation&#39;s active area.
Definition: annotations.h:194
NormalizedPoint is a helper class which stores the coordinates of a normalized point.
Definition: area.h:116
The Revision class contains all information about the revision of the annotation. ...
Definition: annotations.h:551
Performed when the cursor exists the annotation&#39;s active area.
Definition: annotations.h:195
Performed when the annotation loses the input focus.
Definition: annotations.h:199
A NormalizedRect is a rectangle which can be defined by two NormalizedPoints.
Definition: area.h:189
Native annotation interface.
Definition: annotations.h:707
const QLatin1String name
global.h
Definition: action.h:16
An embedded file into the document.
Definition: document.h:1406
The Window class contains all information about the popup window of the annotation that is used to ed...
Definition: annotations.h:456
RevisionType
Describes the type of revision information.
Definition: annotations.h:176
SubType
Describes the type of annotation as defined in PDF standard.
Definition: annotations.h:111
This class describes the object rectangle for an annotation.
Definition: area.h:550
Performed when the page containing the annotation is opened.
Definition: annotations.h:192
Sound annotation.
Definition: annotations.h:1481
Performed when the mouse button is pressed inside the annotation&#39;s active area.
Definition: annotations.h:196
PartitionTable::TableType type
Generator can edit native annotations.
Definition: annotations.h:712
An area with normalized coordinates that contains a reference to an object.
Definition: area.h:452
Performed when the mouse button is released inside the annotation&#39;s active area.
Definition: annotations.h:197
RichMedia annotation.
Definition: annotations.h:1711
Performed when the annotation receives the input focus.
Definition: annotations.h:198
The Document.
Definition: document.h:190
Collector for all the data belonging to a page.
Definition: page.h:49
RevisionScope
Describes the scope of revision information.
Definition: annotations.h:167
Contains information about a sound object.
Definition: sound.h:23
AdditionalActionType
Describes the type of additional actions.
Definition: annotations.h:191
Encapsulates data that describes an action.
Definition: action.h:40
Movie annotation.
Definition: annotations.h:1541
Annotation struct holds properties shared by all annotations.
Definition: annotations.h:96
Performed when the page containing the annotation is closed.
Definition: annotations.h:193
LineStyle
Describes possible line styles for.
Definition: annotations.h:148
Helper class for (recursive) annotation retrieval/storage.
Definition: annotations.h:50
The Style class contains all information about style of the annotation.
Definition: annotations.h:321
Generator can create native annotations.
Definition: annotations.h:711
Screen annotation.
Definition: annotations.h:1587
LineEffect
Describes possible line effects for.
Definition: annotations.h:159
Flag
Describes additional properties of an annotation.
Definition: annotations.h:131
Describes a highlight quad of a text markup annotation.
Definition: annotations.h:1167
Widget annotation.
Definition: annotations.h:1656
Contains information about a movie object.
Definition: movie.h:25
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Fri Nov 26 2021 22:38:08 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.