Okular

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

KDE's Doxygen guidelines are available online.