My Project
foxit::pdf::annots::Markup Class Reference
Inheritance diagram for foxit::pdf::annots::Markup:
foxit::pdf::annots::Annot foxit::Base foxit::pdf::annots::Caret foxit::pdf::annots::Circle foxit::pdf::annots::FileAttachment foxit::pdf::annots::FreeText foxit::pdf::annots::Ink foxit::pdf::annots::Line foxit::pdf::annots::Note foxit::pdf::annots::Polygon foxit::pdf::annots::PolyLine foxit::pdf::annots::Redact foxit::pdf::annots::Square foxit::pdf::annots::Stamp foxit::pdf::annots::TextMarkup

Public Types

enum  EndingStyle {
  e_EndingStyleNone = 0, e_EndingStyleSquare = 1, e_EndingStyleCircle = 2, e_EndingStyleDiamond = 3,
  e_EndingStyleOpenArrow = 4, e_EndingStyleClosedArrow = 5, e_EndingStyleButt = 6, e_EndingStyleROpenArrow = 7,
  e_EndingStyleRClosedArrow = 8, e_EndingStyleSlash = 9
}
 Enumeration for line ending style. More...
 
enum  State {
  e_StateMarked = 1, e_StateUnmarked = 2, e_StateAccepted = 3, e_StateRejected = 4,
  e_StateCancelled = 5, e_StateCompleted = 6, e_StateNone = 7
}
 Enumeration for markup annotation's state. More...
 
enum  StateModel { e_StateModelMarked = 1, e_StateModelReview = 2 }
 Enumeration for markup annotation's state model. More...
 
- Public Types inherited from foxit::pdf::annots::Annot
enum  AppearanceType { e_AppearanceTypeNormal = 0, e_AppearanceTypeRollover = 1, e_AppearanceTypeDown = 2 }
 Enumeration for the type of annotation's appearance. More...
 
enum  Flags {
  e_FlagInvisible = 0x0001, e_FlagHidden = 0x0002, e_FlagPrint = 0x0004, e_FlagNoZoom = 0x0008,
  e_FlagNoRotate = 0x0010, e_FlagNoView = 0x0020, e_FlagReadOnly = 0x0040, e_FlagLocked = 0x0080,
  e_FlagToggleNoView = 0x0100, e_FlagLockedContents = 0x0200
}
 Enumeration for PDF annotation flags. More...
 
enum  HighlightingMode {
  e_HighlightingNone = 0, e_HighlightingInvert = 1, e_HighlightingOutline = 2, e_HighlightingPush = 3,
  e_HighlightingToggle = 4
}
 Enumeration for PDF annotation highlighting mode. More...
 
enum  MKEntry {
  e_MKEntryRotation = 0, e_MKEntryBorderColor = 1, e_MKEntryBackgroundColor = 2, e_MKEntryNormalCaption = 3,
  e_MKEntryRolloverCaption = 4, e_MKEntryDownCaption = 5, e_MKEntryNormalIcon = 6, e_MKEntryRolloverIcon = 7,
  e_MKEntryDownIcon = 8, e_MKEntryIconFit = 9, e_MKEntryIconCaptionRelation = 10
}
 Enumeration for annotation's MK dictionary (an appearance characteristics) entry. More...
 
enum  MKIconCaptionRelation {
  e_MKRelationNoIcon = 0, e_MKRelationNoCaption = 1, e_MKRelationCaptionBelowIcon = 2, e_MKRelationCaptionAboveIcon = 3,
  e_MKRelationCaptionRight = 4, e_MKRelationCaptionLeft = 5, e_MKRelationCaptionOvrlayOnIcon = 6
}
 Enumeration for icon and caption relative position in annotation's MK dictionary. More...
 
enum  Property { e_PropertyModifiedDate = 0, e_PropertyCreationDate = 1, e_PropertyBorderColor = 2, e_PropertyFillColor = 3 }
 Enumeration for some PDF annotation property. More...
 
enum  Type {
  e_UnknownType = 0, e_Note = 1, e_Link = 2, e_FreeText = 3,
  e_Line = 4, e_Square = 5, e_Circle = 6, e_Polygon = 7,
  e_PolyLine = 8, e_Highlight = 9, e_Underline = 10, e_Squiggly = 11,
  e_StrikeOut = 12, e_Stamp = 13, e_Caret = 14, e_Ink = 15,
  e_PSInk = 16, e_FileAttachment = 17, e_Sound = 18, e_Movie = 19,
  e_Widget = 20, e_Screen = 21, e_PrinterMark = 22, e_TrapNet = 23,
  e_Watermark = 24, e_3D = 25, e_Popup = 26, e_Redact = 27
}
 Enumeration for PDF annotation type. More...
 

Public Member Functions

 Markup (const Annot &annot)
 Constructor, with parent class object. More...
 
 Markup ()
 Constructor.
 
 ~Markup ()
 Destructor.
 
Note AddReply ()
 Add a new reply to the end of reply list. More...
 
Note AddStateAnnot (StateModel model, State state)
 Add a new state annotation. More...
 
DateTime GetCreationDateTime () const
 Get creation date time. More...
 
MarkupArray GetGroupElements ()
 Get an element (as markup annotation) from the group that current markup annotation belongs to. More...
 
Markup GetGroupHeader ()
 Get the header annotation (as primary annotation) of the group that current markup annotation belongs to. More...
 
String GetIntent () const
 Get intent name. More...
 
float GetOpacity () const
 Get opacity value. More...
 
Popup GetPopup ()
 Get related pop-up annotation. More...
 
Note GetReply (int index) const
 Get a reply by index. More...
 
int GetReplyCount ()
 Count all replies. More...
 
Note GetStateAnnot (StateModel model, int index)
 Get a state annotation, under a specified state model. More...
 
int GetStateAnnotCount (StateModel model)
 Get the count of state annotations, under a specified state model. More...
 
WString GetSubject () const
 Get subject string. More...
 
WString GetTitle () const
 Get title string. More...
 
bool IsGrouped ()
 Check whether current markup annotation is in a group or not. More...
 
bool RemoveAllReplies ()
 Remove all the replies. More...
 
bool RemoveAllStateAnnots ()
 Remove all state annotations. More...
 
bool RemoveReply (int index)
 Remove a reply by index. More...
 
void SetCreationDateTime (const DateTime &date_time)
 Set creation date time. More...
 
void SetIntent (const String &intent)
 Set intent name. More...
 
void SetOpacity (float opacity)
 Set opacity value. More...
 
void SetPopup (const Popup &popup)
 Set related pop-up annotation. More...
 
void SetSubject (const WString &subject)
 Set subject string. More...
 
void SetTitle (const WString &title)
 Set title string. More...
 
bool Ungroup ()
 Ungroup current markup annotation from the group it belongs to. More...
 
- Public Member Functions inherited from foxit::pdf::annots::Annot
 Annot (const PDFPage &page, objects::PDFDictionary *annot_dict)
 Constructor, with PDF page and annotation's PDF dictionary. More...
 
 Annot (const Annot &annot)
 Constructor, with another annotation object. More...
 
 Annot ()
 Constructor.
 
virtual ~Annot ()
 Destructor.
 
objects::PDFStreamGetAppearanceStream (AppearanceType type, const char *appearance_state="") const
 Get annotation's appearance stream with specified type and state. More...
 
RGB GetBorderColor () const
 Get border color. More...
 
BorderInfo GetBorderInfo () const
 Get border information. More...
 
WString GetContent () const
 Get content. More...
 
RectI GetDeviceRect (bool is_transform_icon, const Matrix &matrix)
 Get annotation rectangle in device coordinate system. More...
 
objects::PDFDictionaryGetDict () const
 Get annotation's dictionary object. More...
 
uint32 GetFlags () const
 Get annotation flags. More...
 
int GetIndex () const
 Get the index of current annotation in the page which current annotation belongs to. More...
 
DateTime GetModifiedDateTime () const
 Get last modified date time. More...
 
objects::PDFDictionaryGetOptionalContent () const
 Get the PDF dictionary of annotation's optional content. More...
 
PDFPage GetPage () const
 Get the related PDF page. More...
 
RectF GetRect () const
 Get rectangle, in PDF coordinate system. More...
 
Type GetType () const
 Get actual annotation type of current annotation. More...
 
WString GetUniqueID () const
 Get unique ID. More...
 
bool IsEmpty () const
 Check whether current object is empty or not. More...
 
bool IsMarkup () const
 Check if current annotation is a markup annotation. More...
 
bool Move (const RectF &rect)
 Move current annotation to a new position, specified by a new rectangle in PDF coordinate system. More...
 
bool operator != (const Annot &other) const
 Not equal operator. More...
 
Annotoperator= (const Annot &annot)
 Assign operator. More...
 
bool operator== (const Annot &other) const
 Equal operator. More...
 
bool RemoveProperty (Property property)
 Remove a specified annotation's property. More...
 
bool ResetAppearanceStream ()
 Reset appearance stream. More...
 
void SetBorderColor (RGB color)
 Set border color. More...
 
void SetBorderInfo (const BorderInfo &border)
 Set border information. More...
 
void SetContent (const WString &content)
 Set content. More...
 
void SetFlags (uint32 flags)
 Set annotation flags. More...
 
void SetModifiedDateTime (const DateTime &date_time)
 Set last modified date time. More...
 
void SetUniqueID (const WString &unique_id)
 Set unique ID. More...
 
- Public Member Functions inherited from foxit::Base
FS_HANDLE Handle () const
 Get the handle of current object. More...
 

Detailed Description

Markup annotations are used primarily to mark up PDF documents. These annotations have text that appears as part of the annotation and may be displayed in other ways by a viewer application, such as in a Comments pane.
Class annots::Markup is derived from class Annot, and is also the base class for all PDF markup annotations. It offers the base functions to get/set markup annotation's common properties. For concrete markup annotation types, please refer to derived classes.
Function Annot::IsMarkup can be used to judge if an annotation is a markup annotation.

Note
Currently, following kind of functions only support note, highlight, underline, strikeout, squiggly, square, circle, free text, stamp, caret, ink, line, polygon, polyline, file attachment annotations:
See also
Annot

Member Enumeration Documentation

◆ EndingStyle

Enumeration for line ending style.

Values of this enumeration should be used alone.

Enumerator
e_EndingStyleNone 

No special line ending.

e_EndingStyleSquare 

A square filled with the annotation's interior color if any.

e_EndingStyleCircle 

A circle filled with the annotation's interior color if any.

e_EndingStyleDiamond 

A diamond shape filled with the annotation's interior color if any.

e_EndingStyleOpenArrow 

Two short lines meeting in an acute angle to form an open arrowhead.

e_EndingStyleClosedArrow 

Two short lines meeting in an acute angle as in the OpenArrow style and connected by a third line to form a triangular closed arrowhead filled with the annotation's interior color if any.

e_EndingStyleButt 

A short line at the endpoint perpendicular to the line itself.

e_EndingStyleROpenArrow 

Two short lines in the reverse direction from OpenArrow.

e_EndingStyleRClosedArrow 

A triangular closed arrowhead in the reverse direction from ClosedArrow.

e_EndingStyleSlash 

A short line at the endpoint approximately 30 degrees clockwise from perpendicular to the line itself.

◆ State

Enumeration for markup annotation's state.

Values of this enumeration should be used alone.

Enumerator
e_StateMarked 

(Used for Markup::e_StateModelMarked) The annotation has been marked by the user.

e_StateUnmarked 

(Used for Markup::e_StateModelMarked) The annotation has not been marked by the user.

e_StateAccepted 

(Used for Markup::e_StateModelReview) The user agrees with the change.

e_StateRejected 

(Used for Markup::e_StateModelReview) The user disagrees with the change.

e_StateCancelled 

(Used for Markup::e_StateModelReview) The change has been cancelled.

e_StateCompleted 

(Used for Markup::e_StateModelReview) The change has been completed.

e_StateNone 

(Used for Markup::e_StateModelReview) The user has indicated nothing about the change.

◆ StateModel

Enumeration for markup annotation's state model.

Values of this enumeration should be used alone.

Enumerator
e_StateModelMarked 

Markup annotation state model: marked.

e_StateModelReview 

Markup annotation state model: review.

Constructor & Destructor Documentation

◆ Markup()

foxit::pdf::annots::Markup::Markup ( const Annot annot)
explicit

Constructor, with parent class object.

Parameters
[in]annotParent class object.

Member Function Documentation

◆ AddReply()

Note foxit::pdf::annots::Markup::AddReply ( )

Add a new reply to the end of reply list.

Returns
A new note annotation that represents the new reply annotation.

◆ AddStateAnnot()

Note foxit::pdf::annots::Markup::AddStateAnnot ( StateModel  model,
State  state 
)

Add a new state annotation.

A markup annotation may have an author-specific state associated with it. The state is not specified in the annotation itself but in a separate text annotation that refers to the original annotation.
Usually, when state model is Markup::e_StateModelMarked, the markup annotation only has one state annotation.
When state model is Markup::e_StateModelReview, the markup annotation can have several state annotations in a chain: first state annotation refers to the markup annotation, second state annotation refers to the first state annotation, etc. Just like this: markup annotation <– reviewed state1 <– reviewed state2 ...

Parameters
[in]modelState model for the new state annotation. It should be one of following values:
  • Markup::e_StateModelMarked:
    • If current markup annotation already has a state annotation in marked state model, this function will set the new state value to the existed marked state model directly instead of adding a new one.
    • If current markup annotation does not have a state annotation in marked state model, this function will add a new one.
  • Markup::e_StateModelReview:
    • If current markup annotation already has state annotations in reviewed state model, this function will add a new one to refer to the last state annotation in reviewed state model.
    • If current markup annotation does not have any state annotation in reviewed state model, this function will add a new one to refer to current markup annotation.
[in]stateState value for the new state annotation. It should be one of following values:
Returns
A new state annotation represented by a note annotation.

◆ GetCreationDateTime()

DateTime foxit::pdf::annots::Markup::GetCreationDateTime ( ) const

Get creation date time.

Returns
A date and time object that receives the creation date time. If there is no creation date time information, a date and time object with all 0 values would be returned.

◆ GetGroupElements()

MarkupArray foxit::pdf::annots::Markup::GetGroupElements ( )

Get an element (as markup annotation) from the group that current markup annotation belongs to.

Markup annotations can be grouped. The group consists of a primary annotation and one or more subordinate annotations. Some entries in the primary annotation are treated as group attributes that should apply to the group as a whole; the corresponding entries in the subordinate annotations should be ignored. These entries are contents, last modification time, fill color/border color, title, pop-up annotation, creation time, subject, and open status. So user should respect the group property: when a property of an annotation in group is changed, the other annotations in the same group should be changed too.
Operations that manipulate any annotation in a group, such as movement, cut, and copy, should be treated by viewer applications as acting on the entire group.

Returns
An array that contains all the markup annotations in the group. If current annotation does not belong to a group, this function will return an empty array.

◆ GetGroupHeader()

Markup foxit::pdf::annots::Markup::GetGroupHeader ( )

Get the header annotation (as primary annotation) of the group that current markup annotation belongs to.

Markup annotations can be grouped. The group consists of a primary annotation and one or more subordinate annotations. Some entries in the primary annotation are treated as group attributes that should apply to the group as a whole; the corresponding entries in the subordinate annotations should be ignored. These entries are contents, last modification time, fill color/border color, title, pop-up annotation, creation time, subject, and open status. So user should respect the group property: when a property of an annotation in group is changed, the other annotations in the same group should be changed too.
Operations that manipulate any annotation in a group, such as movement, cut, and copy, should be treated by viewer applications as acting on the entire group.

Returns
The header markup annotation of the group that current markup annotation belongs to. If the return value of function Annot::IsEmpty (inherited from Markup's parent class) for the returned markup annotation object is true, that means current annotation does not belong to a group.

◆ GetIntent()

String foxit::pdf::annots::Markup::GetIntent ( ) const

Get intent name.

Following annotation types have predefined intent name:

  • Free text annotation's predefined intent name: "FreeTextCallout", "FreeTextTypewriter". If no intent name is used, free text annotation would be shown as a text box.
  • Line annotation's predefined intent name: "LineArrow", "LineDimension". If no intent name is used, line annotation would be shown as a common line.
  • Polygon's predefined intent name: "PolygonCloud", "PolygonDimension". If no intent name is used, polygon annotation would be shown as a common polygon.
  • Polyline annotation's predefined intent name: "PolyLineDimension". If no intent name is used, polyline annotation would be shown as a common polyline.
Returns
The intent name string.

◆ GetOpacity()

float foxit::pdf::annots::Markup::GetOpacity ( ) const

Get opacity value.

This property has effect on markup annotation's appearance.

Returns
The opacity value. Valid range: 0.0 to 1.0. 0.0 means full transparency and 1.0 means full opaque.

◆ GetPopup()

Popup foxit::pdf::annots::Markup::GetPopup ( )

Get related pop-up annotation.

Most markup annotations can have a pop-up annotation to show their content, except sound and free text annotations:

  • For sound annotation, it does not have a pop-up annotation.
  • For free text annotation, it shows text directly on the page, so no need to have a pop-up annotation.

Though, in some special(or error) PDF document, sound or free text annotation may have a pop-up annotation, they still do not need a pop-up annotation.

Returns
The related pop-up annotation. If the return value of function Annot::IsEmpty (inherited from Popup's parent class) for the returned pop-up annotation is true, that means current markup annotation does not have a pop-up annotation.

◆ GetReply()

Note foxit::pdf::annots::Markup::GetReply ( int  index) const

Get a reply by index.

Parameters
[in]indexThe index for a specified reply. Valid range: from 0 to (count-1). count is returned by function Markup::GetReplyCount.
Returns
A note annotation that represents the specified reply annotation.

◆ GetReplyCount()

int foxit::pdf::annots::Markup::GetReplyCount ( )

Count all replies.

Returns
The count of replies.

◆ GetStateAnnot()

Note foxit::pdf::annots::Markup::GetStateAnnot ( StateModel  model,
int  index 
)

Get a state annotation, under a specified state model.

A markup annotation may have an author-specific state associated with it. The state is not specified in the annotation itself but in a separate text annotation that refers to the original annotation.
Usually, when state model is Markup::e_StateModelMarked, the markup annotation only has one state annotation.
When state model is Markup::e_StateModelReview, the markup annotation can have several state annotations in a chain: first state annotation refers to the markup annotation, second state annotation refers to the first state annotation, etc. Just like this: markup annotation <– reviewed state1 <– reviewed state2 ...

Parameters
[in]modelState model. It should be one of following values:
[in]indexThe index of the state annotation to be retrieved. Valid range: from 0 to (count-1). count is returned by function Markup::GetStateAnnotCount with the same parameter model.
Returns
The state annotation, represented by a note annotation.

◆ GetStateAnnotCount()

int foxit::pdf::annots::Markup::GetStateAnnotCount ( StateModel  model)

Get the count of state annotations, under a specified state model.

A markup annotation may have an author-specific state associated with it. The state is not specified in the annotation itself but in a separate text annotation that refers to the original annotation.
Usually, when state model is Markup::e_StateModelMarked, the markup annotation only has one state annotation.
When state model is Markup::e_StateModelReview, the markup annotation can have several state annotations in a chain: first state annotation refers to the markup annotation, second state annotation refers to the first state annotation, etc. Just like this: markup annotation <– reviewed state1 <– reviewed state2 ...

Parameters
[in]modelState model It should be one of following values:
Returns
The count of states for the specified state model.

◆ GetSubject()

WString foxit::pdf::annots::Markup::GetSubject ( ) const

Get subject string.

Returns
Subject string.

◆ GetTitle()

WString foxit::pdf::annots::Markup::GetTitle ( ) const

Get title string.

Returns
Title string.

◆ IsGrouped()

bool foxit::pdf::annots::Markup::IsGrouped ( )

Check whether current markup annotation is in a group or not.

Markup annotations can be grouped. The group consists of a primary annotation and one or more subordinate annotations. Some entries in the primary annotation are treated as group attributes that should apply to the group as a whole; the corresponding entries in the subordinate annotations should be ignored. These entries are contents, last modification time, fill color/border color, title, pop-up annotation, creation time, subject, and open status. So user should respect the group property: when a property of an annotation in group is changed, the other annotations in the same group should be changed too.
Operations that manipulate any annotation in a group, such as movement, cut, and copy, should be treated by viewer applications as acting on the entire group.

Returns
true means current markup annotation is in a group. false means current markup annotation does not belong to any group.

◆ RemoveAllReplies()

bool foxit::pdf::annots::Markup::RemoveAllReplies ( )

Remove all the replies.

Returns
true means success, while false means failure.

◆ RemoveAllStateAnnots()

bool foxit::pdf::annots::Markup::RemoveAllStateAnnots ( )

Remove all state annotations.

State annotation is represented by note annotation, so, to remove state annotations also means to remove the special note annotations (with its popup if any) from the page.

Returns
true means remove all the state annotations successfully or current annotation does not have any state annotation, while false means failure.

◆ RemoveReply()

bool foxit::pdf::annots::Markup::RemoveReply ( int  index)

Remove a reply by index.

If specified reply has its own replies, these sub replies will be removed at the same time.

Parameters
[in]indexThe index for a specified reply to be removed. Valid range: from 0 to (count-1). count is returned by function Markup::GetReplyCount.
Returns
true means success, while false means failure.

◆ SetCreationDateTime()

void foxit::pdf::annots::Markup::SetCreationDateTime ( const DateTime date_time)

Set creation date time.

Parameters
[in]date_timeThe new date time to be set.
Returns
None.

◆ SetIntent()

void foxit::pdf::annots::Markup::SetIntent ( const String intent)

Set intent name.

Following annotation types have predefined intent name:

  • Free text annotation's predefined intent name: "FreeTextCallout", "FreeTextTypewriter". If no intent name is used, free text annotation would be shown as a text box.
  • Line annotation's predefined intent name: "LineArrow", "LineDimension". If no intent name is used, line annotation would be shown as a common line.
    If a line annotation's intent is to be set to "LineArrow", the line annotation's line ending styles will be Markup::e_EndingStyleNone for start point and Markup::e_EndingStyleOpenArrow for end point by default.
  • Polygon's predefined intent name: "PolygonCloud", "PolygonDimension". If no intent name is used, polygon annotation would be shown as a common polygon.
    If a polygon annotation's intent is to be set to "PolygonCloud", the polygon annotation's border style will be changed to BorderInfo::e_Cloudy and border cloud intensity will be set to 2 by default.
  • Polyline annotation's predefined intent name: "PolyLineDimension". If no intent name is used, polyline annotation would be shown as a common polyline.

If supported predefined intent name has been set to corresponding type of annotation, user should call function Annot::ResetAppearanceStream to make the effect on annotation's appearance.

Parameters
[in]intentNew intent name string to be set. If it is an empty string, that means the intent property will not be used.
Some annotation type have predefined intent name, please refer to "Details" part for more details. If this string is one of those unsupported intent name, this string will be ignored when set to corresponding annotations.
Returns
None.

◆ SetOpacity()

void foxit::pdf::annots::Markup::SetOpacity ( float  opacity)

Set opacity value.

This property has effect on markup annotation's appearance. If user wants the new opacity value has effect on annotation's appearance, please call function Annot::ResetAppearanceStream after setting the new opacity value.

Parameters
[in]opacityThe new opacity value. Valid range: 0.0 to 1.0 . 0.0 means full transparency and 1.0 means full opaque.
Returns
None.

◆ SetPopup()

void foxit::pdf::annots::Markup::SetPopup ( const Popup popup)

Set related pop-up annotation.

Most markup annotations can have a pop-up annotation to show their content, except sound and free text annotations:

  • For sound annotation, it does not have a pop-up annotation.
  • For free text annotation, it shows text directly on the page, so no need to have a pop-up annotation.

So, this function does not allow to set pop-up annotation to sound and free text annotation.

Parameters
[in]popupA valid pop-up annotation to be set to current markup annotation.
Returns
None.

◆ SetSubject()

void foxit::pdf::annots::Markup::SetSubject ( const WString subject)

Set subject string.

Parameters
[in]subjectNew subject string to be set.
Returns
None.

◆ SetTitle()

void foxit::pdf::annots::Markup::SetTitle ( const WString title)

Set title string.

Parameters
[in]titleNew title string to be set.
Returns
None.

◆ Ungroup()

bool foxit::pdf::annots::Markup::Ungroup ( )

Ungroup current markup annotation from the group it belongs to.

  • If current markup annotation is just the group header, this function will disband the whole group.
  • If current markup annotation is just a member of a group, this function will only ungroup current markup annotation from the group it belongs to.
  • If current markup annotation does not belong to any group, this function will do nothing and return false directly.
Returns
true means success, while false means current markup annotation does not belong to any group.

Foxit Software Corporation Logo
@2019 Foxit Software Incorporated. All rights reserved.