Foxit PDF SDK
FSMarkup Class Reference
Inheritance diagram for FSMarkup:
FSAnnot FSBase FSCaret FSCircle FSFileAttachment FSFreeText FSInk FSLine FSNote FSPolygon FSPolyLine FSRedact FSSquare FSStamp FSTextMarkup

Instance Methods

(FSNote *) - addReply
 Add a new reply to the end of reply list.
More...
 
(FSNote *) - addStateAnnot:state:
 Add a new state annotation.
More...
 
(FSMarkupArray *) - getGroupElements
 Get an element (as markup annotation) from the group that current markup annotation belongs to.
More...
 
(FSMarkup *) - getGroupHeader
 Get the header annotation (as primary annotation) of the group that current markup annotation belongs to.
More...
 
(FSNote *) - getReply:
 Get a reply by index.
More...
 
(int) - getReplyCount
 Count all replies.
More...
 
(FSNote *) - getStateAnnot:index:
 Get a state annotation, under a specified state model.
More...
 
(int) - getStateAnnotCount:
 Get the count of state annotations, under a specified state model.
More...
 
(id) - initWithAnnot:
 Constructor, with parent class object.
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:
 Remove a reply by index.
More...
 
(BOOL) - ungroup
 Ungroup current markup annotation from the group it belongs to.
More...
 
- Instance Methods inherited from FSAnnot
(FSPDFStream *) - getAppearanceStream:appearance_state:
 Get annotation's appearance stream with specified type and state.
More...
 
(FSRectI *) - getDeviceRect:
 Get annotation rectangle in device coordinate system.
More...
 
(FSPDFDictionary *) - getDict
 Get annotation's dictionary object.
More...
 
(FSMatrix2D *) - getDisplayMatrix:
 Get the display matrix, from to targeted device coordinate system.
More...
 
(int) - getIndex
 Get the index of current annotation in the page which current annotation belongs to.
More...
 
(FSPDFDictionary *) - getOptionalContent
 Get the PDF dictionary of annotation's optional content.
More...
 
(FSPDFPage *) - getPage
 Get the related PDF page.
More...
 
(FSRectF *) - getRect
 Get rectangle, in .
More...
 
(FSAnnotType- getType
 Get actual annotation type of current annotation.
More...
 
(id) - initWithPage:annot_dict:
 Constructor, with PDF page and annotation's PDF dictionary.
More...
 
(BOOL) - isEmpty
 Check whether current object is empty or not.
More...
 
(BOOL) - isMarkup
 Check if current annotation is a markup annotation.
More...
 
(BOOL) - move:
 Move current annotation to a new position, specified by a new rectangle in .
More...
 
(BOOL) - removeProperty:
 Remove a specified annotation's property.
More...
 
(BOOL) - resetAppearanceStream
 Reset appearance stream.
More...
 

Properties

FSDateTimecreationDateTime
 Get or Set creation date time.

 
NSString * intent
 Get or Set intent name.
More...
 
float opacity
 Get or Set opacity value.
More...
 
FSPopuppopup
 Get or Set related pop-up annotation.
More...
 
NSString * subject
 Get or Set subject string.

 
NSString * title
 Get or Set title string.

 
- Properties inherited from FSAnnot
unsigned int borderColor
 Get or Set border color.
More...
 
FSBorderInfoborderInfo
 Get or Set border information.
More...
 
NSString * content
 Get or Set content.

 
unsigned int flags
 Get or Set annotation flags.

 
FSDateTimemodifiedDateTime
 Get or Set last modified date time.

 
NSString * uniqueID
 Get or Set unique ID.

 

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 FSMarkup is derived from class FSAnnot , 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 FSAnnot::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
FSAnnot

Method Documentation

◆ addReply()

- (FSNote *) addReply

Add a new reply to the end of reply list.

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

◆ addStateAnnot:state:()

- (FSNote *) addStateAnnot: (FSMarkupStateModel model
state: (FSMarkupState 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 FSMarkupStateModelMarked, the markup annotation only has one state annotation.
When state model is FSMarkupStateModelReview, 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:
  • FSMarkupStateModelMarked:
    • 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.

  • FSMarkupStateModelReview:
    • 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.

◆ getGroupElements()

- (FSMarkupArray *) 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()

- (FSMarkup *) 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 FSAnnot::isEmpty (inherited from Markup's parent class) for the returned markup annotation object is YES, that means current annotation does not belong to a group.

◆ getReply:()

- (FSNote *) getReply: (int)  index

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 FSMarkup::getReplyCount.
Returns
A note annotation that represents the specified reply annotation.

◆ getReplyCount()

- (int) getReplyCount

Count all replies.

Returns
The count of replies.

◆ getStateAnnot:index:()

- (FSNote *) getStateAnnot: (FSMarkupStateModel model
index: (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 FSMarkupStateModelMarked, the markup annotation only has one state annotation.
When state model is FSMarkupStateModelReview, 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 FSMarkup::getStateAnnotCount: with the same parameter model.
Returns
The state annotation, represented by a note annotation.

◆ getStateAnnotCount:()

- (int) getStateAnnotCount: (FSMarkupStateModel 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 FSMarkupStateModelMarked, the markup annotation only has one state annotation.
When state model is FSMarkupStateModelReview, 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.

◆ initWithAnnot:()

- (id) initWithAnnot: (FSAnnot*)  annot

Constructor, with parent class object.

Parameters
[in]annotParent class object.

Reimplemented from FSAnnot.

Reimplemented in FSRedact, FSFileAttachment, FSCaret, FSPolyLine, FSPolygon, FSStamp, FSInk, FSLine, FSFreeText, FSCircle, FSSquare, FSTextMarkup, FSHighlight, FSUnderline, FSStrikeOut, FSSquiggly, and FSNote.

◆ isGrouped()

- (BOOL) 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
YES means current markup annotation is in a group. NO means current markup annotation does not belong to any group.

◆ removeAllReplies()

- (BOOL) removeAllReplies

Remove all the replies.

Returns
YES means success, while NO means failure.

◆ removeAllStateAnnots()

- (BOOL) 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
YES means remove all the state annotations successfully or current annotation does not have any state annotation, while NO means failure.

◆ removeReply:()

- (BOOL) 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 FSMarkup::getReplyCount.
Returns
YES means success, while NO means failure.

◆ ungroup()

- (BOOL) 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 NO directly.


Returns
YES means success, while NO means current markup annotation does not belong to any group.

Property Documentation

◆ intent

- (NSString *) intent
readwritenonatomicweak

Get or 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.
  • 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.


◆ opacity

- (float) opacity
readwritenonatomicassign

Get or Set opacity value.

This property has effect on markup annotation's appearance.

◆ popup

- (FSPopup *) popup
readwritenonatomicweak

Get or 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.

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.