Spaces:
Running
Running
/* poppler-annotation.h: qt interface to poppler | |
* Copyright (C) 2006-2008, 2012, 2013, 2018-2022 Albert Astals Cid <[email protected]> | |
* Copyright (C) 2006, 2008 Pino Toscano <[email protected]> | |
* Copyright (C) 2007, Brad Hards <[email protected]> | |
* Copyright (C) 2010, Philip Lorenz <[email protected]> | |
* Copyright (C) 2012, 2015, Tobias Koenig <[email protected]> | |
* Copyright (C) 2012, Guillermo A. Amaral B. <[email protected]> | |
* Copyright (C) 2012, 2013 Fabio D'Urso <[email protected]> | |
* Copyright (C) 2013, Anthony Granger <[email protected]> | |
* Copyright (C) 2018, Dileep Sankhla <[email protected]> | |
* Copyright (C) 2020, Katarina Behrens <[email protected]> | |
* Copyright (C) 2020, Klarälvdalens Datakonsult AB, a KDAB Group company, <[email protected]>. Work sponsored by Technische Universität Dresden | |
* Copyright (C) 2021, Oliver Sander <[email protected]> | |
* Copyright (C) 2021, Mahmoud Ahmed Khalil <[email protected]> | |
* Adapting code from | |
* Copyright (C) 2004 by Enrico Ros <[email protected]> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License as published by | |
* the Free Software Foundation; either version 2, or (at your option) | |
* any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program; if not, write to the Free Software | |
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. | |
*/ | |
namespace Poppler { | |
class Annotation; | |
class AnnotationPrivate; | |
class AnnotationAppearancePrivate; | |
class TextAnnotationPrivate; | |
class LineAnnotationPrivate; | |
class GeomAnnotationPrivate; | |
class HighlightAnnotationPrivate; | |
class StampAnnotationPrivate; | |
class InkAnnotationPrivate; | |
class LinkAnnotationPrivate; | |
class CaretAnnotationPrivate; | |
class FileAttachmentAnnotationPrivate; | |
class SoundAnnotationPrivate; | |
class MovieAnnotationPrivate; | |
class ScreenAnnotationPrivate; | |
class WidgetAnnotationPrivate; | |
class RichMediaAnnotationPrivate; | |
class EmbeddedFile; | |
class Link; | |
class SoundObject; | |
class MovieObject; | |
class LinkRendition; | |
class Page; | |
/** | |
* \short AnnotationAppearance class wrapping Poppler's AP stream object | |
* | |
* The Annotation's Appearance Stream is a Form XObject containing | |
* information required to properly render the Annotation on the document. | |
* | |
* This class wraps Poppler's Object implementing the appearance stream | |
* for the calling annotation. It can be used to preserve the current | |
* Appearance Stream for the calling annotation. | |
* | |
* \since 21.10.0 | |
*/ | |
class POPPLER_QT6_EXPORT AnnotationAppearance | |
{ | |
friend class Annotation; | |
public: | |
explicit AnnotationAppearance(AnnotationAppearancePrivate *annotationAppearancePrivate); | |
~AnnotationAppearance(); | |
private: | |
AnnotationAppearancePrivate *d; | |
Q_DISABLE_COPY(AnnotationAppearance) | |
}; | |
/** | |
* \short Annotation class holding properties shared by all annotations. | |
* | |
* An Annotation is an object (text note, highlight, sound, popup window, ..) | |
* contained by a Page in the document. | |
* | |
* \warning Different Annotation objects might point to the same annotation. | |
* | |
* \section annotCreation How to add annotations | |
* | |
* Create an Annotation object of the desired subclass (for example | |
* TextAnnotation) and set its properties: | |
* @code | |
* Poppler::TextAnnotation* myann = new Poppler::TextAnnotation(Poppler::TextAnnotation::InPlace); | |
* myann->setBoundary(QRectF(0.1, 0.1, 0.2, 0.2)); // normalized coordinates: (0,0) is top-left, (1,1) is bottom-right | |
* myann->setContents("Hello, world!"); | |
* @endcode | |
* \note Always set a boundary rectangle, or nothing will be shown! | |
* | |
* Obtain a pointer to the Page where you want to add the annotation (refer to | |
* \ref req for instructions) and add the annotation: | |
* @code | |
* Poppler::Page* mypage = ...; | |
* mypage->addAnnotation(myann); | |
* @endcode | |
* | |
* You can keep on editing the annotation after it has been added to the page: | |
* @code | |
* myann->setContents("World, hello!"); // Let's change text... | |
* myann->setAuthor("Your name here"); // ...and set an author too | |
* @endcode | |
* | |
* When you're done with editing the annotation, you must destroy the Annotation | |
* object: | |
* @code | |
* delete myann; | |
* @endcode | |
* | |
* Use the PDFConverter class to save the modified document. | |
* | |
* \section annotFixedRotation FixedRotation flag specifics | |
* | |
* According to the PDF specification, annotations whose | |
* Annotation::FixedRotation flag is set must always be shown in their original | |
* orientation, no matter what the current rendering rotation or the page's | |
* Page::orientation() values are. In comparison with regular annotations, such | |
* annotations should therefore be transformed by an extra rotation at rendering | |
* time to "undo" such context-related rotations, which is equal to | |
* <code>-(rendering_rotation + page_orientation)</code>. The rotation pivot | |
* is the top-left corner of the boundary rectangle. | |
* | |
* In practice, %Poppler's \ref Page::renderToImage only "unrotates" the | |
* page orientation, and does <b>not</b> unrotate the rendering rotation. | |
* This ensures consistent renderings at different Page::Rotation values: | |
* annotations are always positioned as if they were being positioned at the | |
* default page orientation. | |
* | |
* Just like regular annotations, %Poppler Qt6 exposes normalized coordinates | |
* relative to the page's default orientation. However, behind the scenes, the | |
* coordinate system is different and %Poppler transparently transforms each | |
* shape. If you never call either Annotation::setFlags or | |
* Annotation::setBoundary, you don't need to worry about this; but if you do | |
* call them, then you need to adhere to the following rules: | |
* - Whenever you toggle the Annotation::FixedRotation flag, you <b>must</b> | |
* set again the boundary rectangle first, and then you <b>must</b> set | |
* again any other geometry-related property. | |
* - Whenever you modify the boundary rectangle of an annotation whose | |
* Annotation::FixedRotation flag is set, you <b>must</b> set again any other | |
* geometry-related property. | |
* | |
* These two rules are necessary to make %Poppler's transparent coordinate | |
* conversion work properly. | |
*/ | |
class POPPLER_QT6_EXPORT Annotation | |
{ | |
friend class LinkMovie; | |
friend class LinkRendition; | |
public: | |
// enum definitions | |
/** | |
* Annotation subclasses | |
* | |
* \sa subType() | |
*/ | |
// WARNING!!! oKular uses that very same values so if you change them notify the author! | |
enum SubType | |
{ | |
AText = 1, ///< TextAnnotation | |
ALine = 2, ///< LineAnnotation | |
AGeom = 3, ///< GeomAnnotation | |
AHighlight = 4, ///< HighlightAnnotation | |
AStamp = 5, ///< StampAnnotation | |
AInk = 6, ///< InkAnnotation | |
ALink = 7, ///< LinkAnnotation | |
ACaret = 8, ///< CaretAnnotation | |
AFileAttachment = 9, ///< FileAttachmentAnnotation | |
ASound = 10, ///< SoundAnnotation | |
AMovie = 11, ///< MovieAnnotation | |
AScreen = 12, ///< ScreenAnnotation | |
AWidget = 13, ///< WidgetAnnotation | |
ARichMedia = 14 ///< RichMediaAnnotation | |
}; | |
/** | |
* Annotation flags | |
* | |
* They can be OR'd together (e.g. Annotation::FixedRotation | Annotation::DenyPrint). | |
* | |
* \sa flags(), setFlags() | |
*/ | |
// NOTE: Only flags that are known to work are documented | |
enum Flag | |
{ | |
Hidden = 1, ///< Do not display or print the annotation | |
FixedSize = 2, | |
FixedRotation = 4, ///< Do not rotate the annotation according to page orientation and rendering rotation \warning Extra care is needed with this flag: see \ref annotFixedRotation | |
DenyPrint = 8, ///< Do not print the annotation | |
DenyWrite = 16, | |
DenyDelete = 32, | |
ToggleHidingOnMouse = 64, | |
External = 128 | |
}; | |
Q_DECLARE_FLAGS(Flags, Flag) | |
enum LineStyle | |
{ | |
Solid = 1, | |
Dashed = 2, | |
Beveled = 4, | |
Inset = 8, | |
Underline = 16 | |
}; | |
enum LineEffect | |
{ | |
NoEffect = 1, | |
Cloudy = 2 | |
}; | |
enum RevScope | |
{ | |
Root = 0, | |
Reply = 1, | |
Group = 2, | |
Delete = 4 | |
}; | |
enum RevType | |
{ | |
None = 1, | |
Marked = 2, | |
Unmarked = 4, | |
Accepted = 8, | |
Rejected = 16, | |
Cancelled = 32, | |
Completed = 64 | |
}; | |
/** | |
* Returns the author of the annotation. | |
*/ | |
QString author() const; | |
/** | |
* Sets a new author for the annotation. | |
*/ | |
void setAuthor(const QString &author); | |
QString contents() const; | |
void setContents(const QString &contents); | |
/** | |
* Returns the unique name (ID) of the annotation. | |
*/ | |
QString uniqueName() const; | |
/** | |
* Sets a new unique name for the annotation. | |
* | |
* \note no check of the new uniqueName is done | |
*/ | |
void setUniqueName(const QString &uniqueName); | |
QDateTime modificationDate() const; | |
void setModificationDate(const QDateTime &date); | |
QDateTime creationDate() const; | |
void setCreationDate(const QDateTime &date); | |
/** | |
* Returns this annotation's flags | |
* | |
* \sa Flag, setFlags() | |
*/ | |
Flags flags() const; | |
/** | |
* Sets this annotation's flags | |
* | |
* \sa Flag, flags(), \ref annotFixedRotation | |
*/ | |
void setFlags(Flags flags); | |
/** | |
* Returns this annotation's boundary rectangle in normalized coordinates | |
* | |
* \sa setBoundary(const QRectF&) | |
*/ | |
QRectF boundary() const; | |
/** | |
* Sets this annotation's boundary rectangle | |
* | |
* The boundary rectangle is the smallest rectangle that contains the | |
* annotation. | |
* | |
* \warning This property is mandatory: you must always set this. | |
* | |
* \sa boundary(), \ref annotFixedRotation | |
*/ | |
void setBoundary(const QRectF &boundary); | |
/** | |
* \short Container class for Annotation style information | |
*/ | |
class POPPLER_QT6_EXPORT Style | |
{ | |
public: | |
Style(); | |
Style(const Style &other); | |
Style &operator=(const Style &other); | |
~Style(); | |
// appearance properties | |
QColor color() const; // black | |
void setColor(const QColor &color); | |
double opacity() const; // 1.0 | |
void setOpacity(double opacity); | |
// pen properties | |
double width() const; // 1.0 | |
void setWidth(double width); | |
LineStyle lineStyle() const; // LineStyle::Solid | |
void setLineStyle(LineStyle style); | |
double xCorners() const; // 0.0 | |
void setXCorners(double radius); | |
double yCorners() const; // 0.0 | |
void setYCorners(double radius); | |
const QVector<double> &dashArray() const; // [ 3 ] | |
void setDashArray(const QVector<double> &array); | |
// pen effects | |
LineEffect lineEffect() const; // LineEffect::NoEffect | |
void setLineEffect(LineEffect effect); | |
double effectIntensity() const; // 1.0 | |
void setEffectIntensity(double intens); | |
private: | |
class Private; | |
QSharedDataPointer<Private> d; | |
}; | |
Style style() const; | |
void setStyle(const Style &style); | |
/** | |
* \short Container class for Annotation pop-up window information | |
*/ | |
class POPPLER_QT6_EXPORT Popup | |
{ | |
public: | |
Popup(); | |
Popup(const Popup &other); | |
Popup &operator=(const Popup &other); | |
~Popup(); | |
// window state (Hidden, FixedRotation, Deny* flags allowed) | |
int flags() const; // -1 (never initialized) -> 0 (if inited and shown) | |
void setFlags(int flags); | |
// geometric properties | |
QRectF geometry() const; // no default | |
void setGeometry(const QRectF &geom); | |
// window contents/override properties | |
QString title() const; // '' text in the titlebar (overrides author) | |
void setTitle(const QString &title); | |
QString summary() const; // '' short description (displayed if not empty) | |
void setSummary(const QString &summary); | |
QString text() const; // '' text for the window (overrides annot->contents) | |
void setText(const QString &text); | |
private: | |
class Private; | |
QSharedDataPointer<Private> d; | |
}; | |
Popup popup() const; | |
/// \warning Currently does nothing \since 0.20 | |
void setPopup(const Popup &popup); | |
RevScope revisionScope() const; // Root | |
RevType revisionType() const; // None | |
/** | |
* Returns the revisions of this annotation | |
*/ | |
std::vector<std::unique_ptr<Annotation>> revisions() const; | |
/** | |
* The type of the annotation. | |
*/ | |
virtual SubType subType() const = 0; | |
/** | |
* Returns the current appearance stream of this annotation. | |
* | |
* \since 21.10.0 | |
*/ | |
std::unique_ptr<AnnotationAppearance> annotationAppearance() const; | |
/** | |
* Sets the annotation's appearance stream with the @p annotationAppearance. | |
* | |
* \since 21.10.0 | |
*/ | |
void setAnnotationAppearance(const AnnotationAppearance &annotationAppearance); | |
/** | |
* Destructor. | |
*/ | |
virtual ~Annotation(); | |
/** | |
* Describes the flags from an annotations 'AA' dictionary. | |
* | |
* This flag is used by the additionalAction() method for ScreenAnnotation | |
* and WidgetAnnotation. | |
*/ | |
enum AdditionalActionType | |
{ | |
CursorEnteringAction, ///< Performed when the cursor enters the annotation's active area | |
CursorLeavingAction, ///< Performed when the cursor exists the annotation's active area | |
MousePressedAction, ///< Performed when the mouse button is pressed inside the annotation's active area | |
MouseReleasedAction, ///< Performed when the mouse button is released inside the annotation's active area | |
FocusInAction, ///< Performed when the annotation receives the input focus | |
FocusOutAction, ///< Performed when the annotation loses the input focus | |
PageOpeningAction, ///< Performed when the page containing the annotation is opened | |
PageClosingAction, ///< Performed when the page containing the annotation is closed | |
PageVisibleAction, ///< Performed when the page containing the annotation becomes visible | |
PageInvisibleAction ///< Performed when the page containing the annotation becomes invisible | |
}; | |
protected: | |
/// \cond PRIVATE | |
explicit Annotation(AnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(Annotation) | |
QExplicitlySharedDataPointer<AnnotationPrivate> d_ptr; | |
/// \endcond | |
private: | |
Q_DISABLE_COPY(Annotation) | |
}; | |
/** | |
* \short Annotation containing text. | |
* | |
* A text annotation is an object showing some text directly on the page, or | |
* linked to the contents using an icon shown on a page. | |
*/ | |
class POPPLER_QT6_EXPORT TextAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
// local enums | |
enum TextType | |
{ | |
Linked, | |
InPlace | |
}; | |
enum InplaceIntent | |
{ | |
Unknown, | |
Callout, | |
TypeWriter | |
}; | |
enum InplaceAlignPosition | |
{ | |
InplaceAlignLeft, | |
InplaceAlignCenter, | |
InplaceAlignRight | |
}; | |
explicit TextAnnotation(TextType type); | |
~TextAnnotation() override; | |
SubType subType() const override; | |
/** | |
The type of text annotation represented by this object | |
*/ | |
TextType textType() const; | |
/** | |
The name of the icon for this text annotation. | |
Standard names for text annotation icons are: | |
- Comment | |
- Help | |
- Insert | |
- Key | |
- NewParagraph | |
- Note (this is the default icon to use) | |
- Paragraph | |
*/ | |
QString textIcon() const; | |
/** | |
Set the name of the icon to use for this text annotation. | |
\sa textIcon for the list of standard names | |
*/ | |
void setTextIcon(const QString &icon); | |
QFont textFont() const; | |
void setTextFont(const QFont &font); | |
/// Default text color is black | |
QColor textColor() const; | |
void setTextColor(const QColor &color); | |
InplaceAlignPosition inplaceAlign() const; | |
void setInplaceAlign(InplaceAlignPosition align); | |
QPointF calloutPoint(int id) const; | |
QVector<QPointF> calloutPoints() const; | |
void setCalloutPoints(const QVector<QPointF> &points); | |
InplaceIntent inplaceIntent() const; | |
void setInplaceIntent(InplaceIntent intent); | |
private: | |
explicit TextAnnotation(TextAnnotationPrivate &dd); | |
void setTextType(TextType type); | |
Q_DECLARE_PRIVATE(TextAnnotation) | |
Q_DISABLE_COPY(TextAnnotation) | |
}; | |
/** | |
* \short Polygon/polyline annotation. | |
* | |
* This annotation represents a polygon (or polyline) to be drawn on a page. | |
*/ | |
class POPPLER_QT6_EXPORT LineAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
// local enums | |
enum LineType | |
{ | |
StraightLine, | |
Polyline | |
}; | |
enum TermStyle | |
{ | |
Square, | |
Circle, | |
Diamond, | |
OpenArrow, | |
ClosedArrow, | |
None, | |
Butt, | |
ROpenArrow, | |
RClosedArrow, | |
Slash | |
}; | |
enum LineIntent | |
{ | |
Unknown, | |
Arrow, | |
Dimension, | |
PolygonCloud | |
}; | |
explicit LineAnnotation(LineType type); | |
~LineAnnotation() override; | |
SubType subType() const override; | |
LineType lineType() const; | |
QVector<QPointF> linePoints() const; | |
void setLinePoints(const QVector<QPointF> &points); | |
TermStyle lineStartStyle() const; | |
void setLineStartStyle(TermStyle style); | |
TermStyle lineEndStyle() const; | |
void setLineEndStyle(TermStyle style); | |
bool isLineClosed() const; | |
void setLineClosed(bool closed); | |
QColor lineInnerColor() const; | |
void setLineInnerColor(const QColor &color); | |
double lineLeadingForwardPoint() const; | |
void setLineLeadingForwardPoint(double point); | |
double lineLeadingBackPoint() const; | |
void setLineLeadingBackPoint(double point); | |
bool lineShowCaption() const; | |
void setLineShowCaption(bool show); | |
LineIntent lineIntent() const; | |
void setLineIntent(LineIntent intent); | |
private: | |
explicit LineAnnotation(LineAnnotationPrivate &dd); | |
void setLineType(LineType type); | |
Q_DECLARE_PRIVATE(LineAnnotation) | |
Q_DISABLE_COPY(LineAnnotation) | |
}; | |
/** | |
* \short Geometric annotation. | |
* | |
* The geometric annotation represents a geometric figure, like a rectangle or | |
* an ellipse. | |
*/ | |
class POPPLER_QT6_EXPORT GeomAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
GeomAnnotation(); | |
~GeomAnnotation() override; | |
SubType subType() const override; | |
// common enums | |
enum GeomType | |
{ | |
InscribedSquare, | |
InscribedCircle | |
}; | |
GeomType geomType() const; | |
void setGeomType(GeomType type); | |
QColor geomInnerColor() const; | |
void setGeomInnerColor(const QColor &color); | |
private: | |
explicit GeomAnnotation(GeomAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(GeomAnnotation) | |
Q_DISABLE_COPY(GeomAnnotation) | |
}; | |
/** | |
* \short Text highlight annotation. | |
* | |
* The highlight annotation represents some areas of text being "highlighted". | |
*/ | |
class POPPLER_QT6_EXPORT HighlightAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
HighlightAnnotation(); | |
~HighlightAnnotation() override; | |
SubType subType() const override; | |
/** | |
The type of highlight | |
*/ | |
enum HighlightType | |
{ | |
Highlight, ///< highlighter pen style annotation | |
Squiggly, ///< jagged or squiggly underline | |
Underline, ///< straight line underline | |
StrikeOut ///< straight line through-line | |
}; | |
/** | |
Structure corresponding to a QuadPoints array. This matches a | |
quadrilateral that describes the area around a word (or set of | |
words) that are to be highlighted. | |
*/ | |
struct Quad | |
{ | |
QPointF points[4]; // 8 valid coords | |
bool capStart; // false (vtx 1-4) [K] | |
bool capEnd; // false (vtx 2-3) [K] | |
double feather; // 0.1 (in range 0..1) [K] | |
}; | |
/** | |
The type (style) of highlighting to use for this area | |
or these areas. | |
*/ | |
HighlightType highlightType() const; | |
/** | |
Set the type of highlighting to use for the given area | |
or areas. | |
*/ | |
void setHighlightType(HighlightType type); | |
/** | |
The list of areas to highlight. | |
*/ | |
QList<Quad> highlightQuads() const; | |
/** | |
Set the areas to highlight. | |
*/ | |
void setHighlightQuads(const QList<Quad> &quads); | |
private: | |
explicit HighlightAnnotation(HighlightAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(HighlightAnnotation) | |
Q_DISABLE_COPY(HighlightAnnotation) | |
}; | |
/** | |
* \short Stamp annotation. | |
* | |
* A simple annotation drawing a stamp on a page. | |
*/ | |
class POPPLER_QT6_EXPORT StampAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
StampAnnotation(); | |
~StampAnnotation() override; | |
SubType subType() const override; | |
/** | |
The name of the icon for this stamp annotation. | |
Standard names for stamp annotation icons are: | |
- Approved | |
- AsIs | |
- Confidential | |
- Departmental | |
- Draft (this is the default icon type) | |
- Experimental | |
- Expired | |
- Final | |
- ForComment | |
- ForPublicRelease | |
- NotApproved | |
- NotForPublicRelease | |
- Sold | |
- TopSecret | |
*/ | |
QString stampIconName() const; | |
/** | |
Set the icon type for this stamp annotation. | |
\sa stampIconName for the list of standard icon names | |
*/ | |
void setStampIconName(const QString &name); | |
/** | |
Set a custom icon for this stamp annotation. | |
\since 21.10.0 | |
*/ | |
void setStampCustomImage(const QImage &image); | |
private: | |
explicit StampAnnotation(StampAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(StampAnnotation) | |
Q_DISABLE_COPY(StampAnnotation) | |
}; | |
/** | |
* \short Ink Annotation. | |
* | |
* Annotation representing an ink path on a page. | |
*/ | |
class POPPLER_QT6_EXPORT InkAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
InkAnnotation(); | |
~InkAnnotation() override; | |
SubType subType() const override; | |
QList<QVector<QPointF>> inkPaths() const; | |
void setInkPaths(const QList<QVector<QPointF>> &paths); | |
private: | |
explicit InkAnnotation(InkAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(InkAnnotation) | |
Q_DISABLE_COPY(InkAnnotation) | |
}; | |
class POPPLER_QT6_EXPORT LinkAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
~LinkAnnotation() override; | |
SubType subType() const override; | |
// local enums | |
enum HighlightMode | |
{ | |
None, | |
Invert, | |
Outline, | |
Push | |
}; | |
Link *linkDestination() const; | |
void setLinkDestination(std::unique_ptr<Link> &&link); | |
HighlightMode linkHighlightMode() const; | |
void setLinkHighlightMode(HighlightMode mode); | |
QPointF linkRegionPoint(int id) const; | |
void setLinkRegionPoint(int id, const QPointF point); | |
private: | |
LinkAnnotation(); | |
explicit LinkAnnotation(LinkAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(LinkAnnotation) | |
Q_DISABLE_COPY(LinkAnnotation) | |
}; | |
/** | |
* \short Caret annotation. | |
* | |
* The caret annotation represents a symbol to indicate the presence of text. | |
*/ | |
class POPPLER_QT6_EXPORT CaretAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
CaretAnnotation(); | |
~CaretAnnotation() override; | |
SubType subType() const override; | |
/** | |
* The symbols for the caret annotation. | |
*/ | |
enum CaretSymbol | |
{ | |
None, | |
P | |
}; | |
CaretSymbol caretSymbol() const; | |
void setCaretSymbol(CaretSymbol symbol); | |
private: | |
explicit CaretAnnotation(CaretAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(CaretAnnotation) | |
Q_DISABLE_COPY(CaretAnnotation) | |
}; | |
/** | |
* \short File attachment annotation. | |
* | |
* The file attachment annotation represents a file embedded in the document. | |
*/ | |
class POPPLER_QT6_EXPORT FileAttachmentAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
~FileAttachmentAnnotation() override; | |
SubType subType() const override; | |
/** | |
* Returns the name of the icon of this annotation. | |
*/ | |
QString fileIconName() const; | |
/** | |
* Sets a new name for the icon of this annotation. | |
*/ | |
void setFileIconName(const QString &icon); | |
/** | |
* Returns the EmbeddedFile of this annotation. | |
*/ | |
EmbeddedFile *embeddedFile() const; | |
/** | |
* Sets a new EmbeddedFile for this annotation. | |
* | |
* \note FileAttachmentAnnotation takes ownership of the object | |
*/ | |
void setEmbeddedFile(EmbeddedFile *ef); | |
private: | |
FileAttachmentAnnotation(); | |
explicit FileAttachmentAnnotation(FileAttachmentAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(FileAttachmentAnnotation) | |
Q_DISABLE_COPY(FileAttachmentAnnotation) | |
}; | |
/** | |
* \short Sound annotation. | |
* | |
* The sound annotation represents a sound to be played when activated. | |
*/ | |
class POPPLER_QT6_EXPORT SoundAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
~SoundAnnotation() override; | |
SubType subType() const override; | |
/** | |
* Returns the name of the icon of this annotation. | |
*/ | |
QString soundIconName() const; | |
/** | |
* Sets a new name for the icon of this annotation. | |
*/ | |
void setSoundIconName(const QString &icon); | |
/** | |
* Returns the SoundObject of this annotation. | |
*/ | |
SoundObject *sound() const; | |
/** | |
* Sets a new SoundObject for this annotation. | |
* | |
* \note SoundAnnotation takes ownership of the object | |
*/ | |
void setSound(SoundObject *s); | |
private: | |
SoundAnnotation(); | |
explicit SoundAnnotation(SoundAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(SoundAnnotation) | |
Q_DISABLE_COPY(SoundAnnotation) | |
}; | |
/** | |
* \short Movie annotation. | |
* | |
* The movie annotation represents a movie to be played when activated. | |
*/ | |
class POPPLER_QT6_EXPORT MovieAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
~MovieAnnotation() override; | |
SubType subType() const override; | |
/** | |
* Returns the MovieObject of this annotation. | |
*/ | |
MovieObject *movie() const; | |
/** | |
* Sets a new MovieObject for this annotation. | |
* | |
* \note MovieAnnotation takes ownership of the object | |
*/ | |
void setMovie(MovieObject *movie); | |
/** | |
* Returns the title of the movie of this annotation. | |
*/ | |
QString movieTitle() const; | |
/** | |
* Sets a new title for the movie of this annotation. | |
*/ | |
void setMovieTitle(const QString &title); | |
private: | |
MovieAnnotation(); | |
explicit MovieAnnotation(MovieAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(MovieAnnotation) | |
Q_DISABLE_COPY(MovieAnnotation) | |
}; | |
/** | |
* \short Screen annotation. | |
* | |
* The screen annotation represents a screen to be played when activated. | |
*/ | |
class POPPLER_QT6_EXPORT ScreenAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
~ScreenAnnotation() override; | |
SubType subType() const override; | |
/** | |
* Returns the LinkRendition of this annotation. | |
*/ | |
LinkRendition *action() const; | |
/** | |
* Sets a new LinkRendition for this annotation. | |
* | |
* \note ScreenAnnotation takes ownership of the object | |
*/ | |
void setAction(LinkRendition *action); | |
/** | |
* Returns the title of the screen of this annotation. | |
*/ | |
QString screenTitle() const; | |
/** | |
* Sets a new title for the screen of this annotation. | |
*/ | |
void setScreenTitle(const QString &title); | |
/** | |
* Returns the additional action of the given @p type for the annotation or | |
* @c 0 if no action has been defined. | |
*/ | |
std::unique_ptr<Link> additionalAction(AdditionalActionType type) const; | |
private: | |
ScreenAnnotation(); | |
explicit ScreenAnnotation(ScreenAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(ScreenAnnotation) | |
Q_DISABLE_COPY(ScreenAnnotation) | |
}; | |
/** | |
* \short Widget annotation. | |
* | |
* The widget annotation represents a widget (form field) on a page. | |
* | |
* \note This class is just provided for consistency of the annotation API, | |
* use the FormField classes to get all the form-related information. | |
*/ | |
class POPPLER_QT6_EXPORT WidgetAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
~WidgetAnnotation() override; | |
SubType subType() const override; | |
/** | |
* Returns the additional action of the given @p type for the annotation or | |
* @c 0 if no action has been defined. | |
*/ | |
std::unique_ptr<Link> additionalAction(AdditionalActionType type) const; | |
private: | |
WidgetAnnotation(); | |
explicit WidgetAnnotation(WidgetAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(WidgetAnnotation) | |
Q_DISABLE_COPY(WidgetAnnotation) | |
}; | |
/** | |
* \short RichMedia annotation. | |
* | |
* The RichMedia annotation represents a video or sound on a page. | |
*/ | |
class POPPLER_QT6_EXPORT RichMediaAnnotation : public Annotation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
~RichMediaAnnotation() override; | |
SubType subType() const override; | |
/** | |
* The params object of a RichMediaAnnotation::Instance object. | |
* | |
* The params object provides media specific parameters, to play | |
* back the media inside the PDF viewer. | |
* | |
* At the moment only parameters for flash player are supported. | |
*/ | |
class POPPLER_QT6_EXPORT Params | |
{ | |
friend class AnnotationPrivate; | |
public: | |
Params(); | |
~Params(); | |
/** | |
* Returns the parameters for the flash player. | |
*/ | |
QString flashVars() const; | |
private: | |
void setFlashVars(const QString &flashVars); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* The instance object of a RichMediaAnnotation::Configuration object. | |
* | |
* The instance object represents one media object, that should be shown | |
* on the page. It has a media type and a Params object, to define the | |
* media specific parameters. | |
*/ | |
class POPPLER_QT6_EXPORT Instance | |
{ | |
friend class AnnotationPrivate; | |
public: | |
/** | |
* Describes the media type of the instance. | |
*/ | |
enum Type | |
{ | |
Type3D, ///< A 3D media file. | |
TypeFlash, ///< A Flash media file. | |
TypeSound, ///< A sound media file. | |
TypeVideo ///< A video media file. | |
}; | |
Instance(); | |
~Instance(); | |
/** | |
* Returns the media type of the instance. | |
*/ | |
Type type() const; | |
/** | |
* Returns the params object of the instance or @c 0 if it doesn't exist. | |
*/ | |
RichMediaAnnotation::Params *params() const; | |
private: | |
void setType(Type type); | |
void setParams(RichMediaAnnotation::Params *params); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* The configuration object of a RichMediaAnnotation::Content object. | |
* | |
* The configuration object provides access to the various Instance objects | |
* of the rich media annotation. | |
*/ | |
class POPPLER_QT6_EXPORT Configuration | |
{ | |
friend class AnnotationPrivate; | |
public: | |
/** | |
* Describes the media type of the configuration. | |
*/ | |
enum Type | |
{ | |
Type3D, ///< A 3D media file. | |
TypeFlash, ///< A Flash media file. | |
TypeSound, ///< A sound media file. | |
TypeVideo ///< A video media file. | |
}; | |
Configuration(); | |
~Configuration(); | |
/** | |
* Returns the media type of the configuration. | |
*/ | |
Type type() const; | |
/** | |
* Returns the name of the configuration. | |
*/ | |
QString name() const; | |
/** | |
* Returns the list of Instance objects of the configuration. | |
*/ | |
QList<RichMediaAnnotation::Instance *> instances() const; | |
private: | |
void setType(Type type); | |
void setName(const QString &name); | |
void setInstances(const QList<RichMediaAnnotation::Instance *> &instances); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* The asset object of a RichMediaAnnotation::Content object. | |
* | |
* The asset object provides a mapping between identifier name, as | |
* used in the flash vars string of RichMediaAnnotation::Params, and the | |
* associated file spec object. | |
*/ | |
class POPPLER_QT6_EXPORT Asset | |
{ | |
friend class AnnotationPrivate; | |
public: | |
Asset(); | |
~Asset(); | |
/** | |
* Returns the identifier name of the asset. | |
*/ | |
QString name() const; | |
/** | |
* Returns the embedded file the asset points to. | |
*/ | |
EmbeddedFile *embeddedFile() const; | |
private: | |
void setName(const QString &name); | |
void setEmbeddedFile(EmbeddedFile *embeddedFile); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* The content object of a RichMediaAnnotation. | |
* | |
* The content object provides access to the list of configurations | |
* and assets of the rich media annotation. | |
*/ | |
class POPPLER_QT6_EXPORT Content | |
{ | |
friend class AnnotationPrivate; | |
public: | |
Content(); | |
~Content(); | |
/** | |
* Returns the list of configuration objects of the content object. | |
*/ | |
QList<RichMediaAnnotation::Configuration *> configurations() const; | |
/** | |
* Returns the list of asset objects of the content object. | |
*/ | |
QList<RichMediaAnnotation::Asset *> assets() const; | |
private: | |
void setConfigurations(const QList<RichMediaAnnotation::Configuration *> &configurations); | |
void setAssets(const QList<RichMediaAnnotation::Asset *> &assets); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* The activation object of the RichMediaAnnotation::Settings object. | |
* | |
* The activation object is a wrapper around the settings for the activation | |
* state. At the moment it provides only the activation condition. | |
*/ | |
class POPPLER_QT6_EXPORT Activation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
/** | |
* Describes the condition for activating the rich media. | |
*/ | |
enum Condition | |
{ | |
PageOpened, ///< Activate when page is opened. | |
PageVisible, ///< Activate when page becomes visible. | |
UserAction ///< Activate when user interacts with the annotation. | |
}; | |
Activation(); | |
~Activation(); | |
/** | |
* Returns the activation condition. | |
*/ | |
Condition condition() const; | |
private: | |
void setCondition(Condition condition); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* The deactivation object of the RichMediaAnnotation::Settings object. | |
* | |
* The deactivation object is a wrapper around the settings for the deactivation | |
* state. At the moment it provides only the deactivation condition. | |
*/ | |
class POPPLER_QT6_EXPORT Deactivation | |
{ | |
friend class AnnotationPrivate; | |
public: | |
/** | |
* Describes the condition for deactivating the rich media. | |
*/ | |
enum Condition | |
{ | |
PageClosed, ///< Deactivate when page is closed. | |
PageInvisible, ///< Deactivate when page becomes invisible. | |
UserAction ///< Deactivate when user interacts with the annotation. | |
}; | |
Deactivation(); | |
~Deactivation(); | |
/** | |
* Returns the deactivation condition. | |
*/ | |
Condition condition() const; | |
private: | |
void setCondition(Condition condition); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* The settings object of a RichMediaAnnotation. | |
* | |
* The settings object provides access to the configuration objects | |
* for annotation activation and deactivation. | |
*/ | |
class POPPLER_QT6_EXPORT Settings | |
{ | |
friend class AnnotationPrivate; | |
public: | |
Settings(); | |
~Settings(); | |
/** | |
* Returns the Activation object of the settings object or @c 0 if it doesn't exist. | |
*/ | |
RichMediaAnnotation::Activation *activation() const; | |
/** | |
* Returns the Deactivation object of the settings object or @c 0 if it doesn't exist. | |
*/ | |
RichMediaAnnotation::Deactivation *deactivation() const; | |
private: | |
void setActivation(RichMediaAnnotation::Activation *activation); | |
void setDeactivation(RichMediaAnnotation::Deactivation *deactivation); | |
class Private; | |
QScopedPointer<Private> d; | |
}; | |
/** | |
* Returns the Settings object of the rich media annotation or @c 0 if it doesn't exist. | |
*/ | |
RichMediaAnnotation::Settings *settings() const; | |
/** | |
* Returns the Content object of the rich media annotation or @c 0 if it doesn't exist. | |
*/ | |
RichMediaAnnotation::Content *content() const; | |
private: | |
void setSettings(RichMediaAnnotation::Settings *settings); | |
void setContent(RichMediaAnnotation::Content *content); | |
RichMediaAnnotation(); | |
explicit RichMediaAnnotation(RichMediaAnnotationPrivate &dd); | |
Q_DECLARE_PRIVATE(RichMediaAnnotation) | |
Q_DISABLE_COPY(RichMediaAnnotation) | |
}; | |
} | |