#ifndef _FS_ACTION_C_H_
#define _FS_ACTION_C_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "fs_basictypes_c.h"


typedef enum _FSZoomMode {
e_FSZoomXYZ = 1,
e_FSZoomFitPage = 2,
e_FSZoomFitHorz = 3,
e_FSZoomFitVert = 4,
e_FSZoomFitRect = 5,
e_FSZoomFitBBox = 6,
e_FSZoomFitBHorz = 7,
e_FSZoomFitBVert = 8,
}FSZoomMode;


FSErrorCode FSDK_Destination_CreateXYZ(const FS_PDFDOC_HANDLE document, int page_index, float left, float top, float zoom_factor, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFitPage(const FS_PDFDOC_HANDLE document, int page_index, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFitHorz(const FS_PDFDOC_HANDLE document, int page_index, float top, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFitVert(const FS_PDFDOC_HANDLE document, int page_index, float left, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFitRect(const FS_PDFDOC_HANDLE document, int page_index,
                                   float left, float bottom, float right, float top, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFitBBox(const FS_PDFDOC_HANDLE document, int page_index, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFitBHorz(const FS_PDFDOC_HANDLE document, int page_index, float top, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFitBVert(const FS_PDFDOC_HANDLE document, int page_index, float left, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_CreateFromPDFArray(const FS_PDFDOC_HANDLE document, FS_PDFARRAY_HANDLE pdf_array, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_Destination_Create( FS_PDFARRAY_HANDLE dest_array, FS_DESTINATION_HANDLE* destination_return_value);
FSErrorCode FSDK_Destination_Release(FS_DESTINATION_HANDLE destination_handle);
FSErrorCode FSDK_Destination_IsEmpty(FS_DESTINATION_HANDLE destination_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Destination_GetPageIndex(FS_DESTINATION_HANDLE destination_handle, const FS_PDFDOC_HANDLE document, int* return_value);
FSErrorCode FSDK_Destination_GetZoomMode(FS_DESTINATION_HANDLE destination_handle, FSZoomMode* return_value);
FSErrorCode FSDK_Destination_GetLeft(FS_DESTINATION_HANDLE destination_handle, float* return_value);
FSErrorCode FSDK_Destination_IsLeftNull(FS_DESTINATION_HANDLE destination_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Destination_GetTop(FS_DESTINATION_HANDLE destination_handle, float* return_value);
FSErrorCode FSDK_Destination_IsTopNull(FS_DESTINATION_HANDLE destination_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Destination_GetRight(FS_DESTINATION_HANDLE destination_handle, float* return_value);
FSErrorCode FSDK_Destination_GetBottom(FS_DESTINATION_HANDLE destination_handle, float* return_value);
FSErrorCode FSDK_Destination_GetZoomFactor(FS_DESTINATION_HANDLE destination_handle, float* return_value);
FSErrorCode FSDK_Destination_GetDestArray(FS_DESTINATION_HANDLE destination_handle, FS_PDFARRAY_HANDLE* return_value);

typedef enum _FSActionType {
e_FSActionTypeTypeUnknown = 0,
e_FSTypeGoto = 1,
e_FSTypeGoToR = 2,
e_FSTypeGoToE = 3,
e_FSTypeLaunch = 4,
e_FSTypeThread = 5,
e_FSTypeURI = 6,
e_FSTypeSound = 7,
e_FSTypeMovie = 8,
e_FSTypeHide = 9,
e_FSTypeNamed = 10,
e_FSTypeSubmitForm = 11,
e_FSTypeResetForm = 12,
e_FSTypeImportData = 13,
e_FSTypeJavaScript = 14,
e_FSTypeSetOCGState = 15,
e_FSTypeRendition = 16,
e_FSTypeTrans = 17,
e_FSTypeGoTo3DView = 18,
}FSActionType;



typedef enum _FSNewWindowFlag {
e_FSNewWindowFlagFalse = 0,
e_FSNewWindowFlagTrue = 1,
e_FSNewWindowFlagNone = 2,
}FSNewWindowFlag;


FSErrorCode FSDK_Action_Create(const FS_PDFDOC_HANDLE document, FSActionType action_type, FS_ACTION_HANDLE* return_value);
FSErrorCode FSDK_Action_Create0(const FS_PDFDOC_HANDLE document, FS_PDFDICTIONARY_HANDLE action_dict, FS_ACTION_HANDLE* action_return_value);
FSErrorCode FSDK_Action_Release(FS_ACTION_HANDLE action_handle);
FSErrorCode FSDK_Action_IsEmpty(FS_ACTION_HANDLE action_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Action_GetType(FS_ACTION_HANDLE action_handle, FSActionType* return_value);
FSErrorCode FSDK_Action_GetDocument(FS_ACTION_HANDLE action_handle, FS_PDFDOC_HANDLE* return_value);
FSErrorCode FSDK_Action_GetDict(FS_ACTION_HANDLE action_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_Action_GetSubActionCount(FS_ACTION_HANDLE action_handle, int* return_value);
FSErrorCode FSDK_Action_GetSubAction(FS_ACTION_HANDLE action_handle, int index, FS_ACTION_HANDLE* return_value);
FSErrorCode FSDK_Action_SetSubAction(FS_ACTION_HANDLE action_handle, int index, const FS_ACTION_HANDLE sub_action);
FSErrorCode FSDK_Action_InsertSubAction(FS_ACTION_HANDLE action_handle, int index, const FS_ACTION_HANDLE sub_action);
FSErrorCode FSDK_Action_RemoveSubAction(FS_ACTION_HANDLE action_handle, int index);
FSErrorCode FSDK_Action_RemoveAllSubActions(FS_ACTION_HANDLE action_handle);
FSErrorCode FSDK_GotoAction_Create(const FS_ACTION_HANDLE action, FS_GOTOACTION_HANDLE* gotoaction_return_value);
FSErrorCode FSDK_GotoAction_GetDestination(FS_GOTOACTION_HANDLE gotoaction_handle, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_GotoAction_SetDestination(FS_GOTOACTION_HANDLE gotoaction_handle, const FS_DESTINATION_HANDLE dest);
FSErrorCode FSDK_URIAction_Create(const FS_ACTION_HANDLE action, FS_URIACTION_HANDLE* uriaction_return_value);
FSErrorCode FSDK_URIAction_GetURI(FS_URIACTION_HANDLE uriaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_URIAction_SetURI(FS_URIACTION_HANDLE uriaction_handle, const char* uri);
FSErrorCode FSDK_URIAction_IsTrackPosition(FS_URIACTION_HANDLE uriaction_handle, FS_BOOL* return_value);
FSErrorCode FSDK_URIAction_SetTrackPositionFlag(FS_URIACTION_HANDLE uriaction_handle, FS_BOOL is_track_position);
FSErrorCode FSDK_JavaScriptAction_Create(const FS_ACTION_HANDLE action, FS_JAVASCRIPTACTION_HANDLE* javascriptaction_return_value);
FSErrorCode FSDK_JavaScriptAction_GetScript(FS_JAVASCRIPTACTION_HANDLE javascriptaction_handle, FS_WSTR* return_value);
FSErrorCode FSDK_JavaScriptAction_SetScript(FS_JAVASCRIPTACTION_HANDLE javascriptaction_handle, const wchar_t* script);
FSErrorCode FSDK_NamedAction_Create(const FS_ACTION_HANDLE action, FS_NAMEDACTION_HANDLE* namedaction_return_value);
FSErrorCode FSDK_NamedAction_GetName(FS_NAMEDACTION_HANDLE namedaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_NamedAction_SetName(FS_NAMEDACTION_HANDLE namedaction_handle, const char* name);
FSErrorCode FSDK_RemoteGotoAction_Create(const FS_ACTION_HANDLE action, FS_REMOTEGOTOACTION_HANDLE* remotegotoaction_return_value);
FSErrorCode FSDK_RemoteGotoAction_GetDestination(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_RemoteGotoAction_SetDestination(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, const FS_DESTINATION_HANDLE destination);
FSErrorCode FSDK_RemoteGotoAction_GetDestinationName(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_RemoteGotoAction_SetDestinationName(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, const char* dest_name);
FSErrorCode FSDK_RemoteGotoAction_GetFileSpec(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, FS_FILESPEC_HANDLE* return_value);
FSErrorCode FSDK_RemoteGotoAction_SetFileSpec(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, const FS_FILESPEC_HANDLE file_specification);
FSErrorCode FSDK_RemoteGotoAction_GetNewWindowFlag(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, FSNewWindowFlag* return_value);
FSErrorCode FSDK_RemoteGotoAction_SetNewWindowFlag(FS_REMOTEGOTOACTION_HANDLE remotegotoaction_handle, FSNewWindowFlag flag);
FSErrorCode FSDK_EmbeddedGotoTarget_Create(const FS_PDFDOC_HANDLE document, FS_EMBEDDEDGOTOTARGET_HANDLE* embeddedgototarget_return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_Create0(const FS_PDFDOC_HANDLE document, FS_PDFDICTIONARY_HANDLE target_object, FS_EMBEDDEDGOTOTARGET_HANDLE* embeddedgototarget_return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_Release(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle);
FSErrorCode FSDK_EmbeddedGotoTarget_GetDict(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_IsEmpty(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, FS_BOOL* return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_GetRelationship(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, FS_BSTR* return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_SetRelationship(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, const char* relationship);
FSErrorCode FSDK_EmbeddedGotoTarget_GetAttachedFileName(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, FS_WSTR* return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_SetAttachedFileName(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, const wchar_t* embed_file_name);
FSErrorCode FSDK_EmbeddedGotoTarget_GetPageIndex(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, int* return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_SetPageIndex(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, int page_index);
FSErrorCode FSDK_EmbeddedGotoTarget_GetFileAttachmentAnnotIndex(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, int* return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_SetFileAttachmentAnnotIndex(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, int annot_index);
FSErrorCode FSDK_EmbeddedGotoTarget_GetTarget(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, FS_EMBEDDEDGOTOTARGET_HANDLE* return_value);
FSErrorCode FSDK_EmbeddedGotoTarget_SetTarget(FS_EMBEDDEDGOTOTARGET_HANDLE embeddedgototarget_handle, const FS_EMBEDDEDGOTOTARGET_HANDLE target);
FSErrorCode FSDK_EmbeddedGotoAction_Create(const FS_ACTION_HANDLE action, FS_EMBEDDEDGOTOACTION_HANDLE* embeddedgotoaction_return_value);
FSErrorCode FSDK_EmbeddedGotoAction_GetDestination(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, FS_DESTINATION_HANDLE* return_value);
FSErrorCode FSDK_EmbeddedGotoAction_SetDestination(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, const FS_DESTINATION_HANDLE destination);
FSErrorCode FSDK_EmbeddedGotoAction_GetDestinationName(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_EmbeddedGotoAction_SetDestinationName(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, const char* dest_name);
FSErrorCode FSDK_EmbeddedGotoAction_GetRootFile(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, FS_FILESPEC_HANDLE* return_value);
FSErrorCode FSDK_EmbeddedGotoAction_SetRootFile(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, const FS_FILESPEC_HANDLE file_specification);
FSErrorCode FSDK_EmbeddedGotoAction_GetNewWindowFlag(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, FSNewWindowFlag* return_value);
FSErrorCode FSDK_EmbeddedGotoAction_SetNewWindowFlag(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, FSNewWindowFlag flag);
FSErrorCode FSDK_EmbeddedGotoAction_GetTarget(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, FS_EMBEDDEDGOTOTARGET_HANDLE* return_value);
FSErrorCode FSDK_EmbeddedGotoAction_SetTarget(FS_EMBEDDEDGOTOACTION_HANDLE embeddedgotoaction_handle, const FS_EMBEDDEDGOTOTARGET_HANDLE target);

typedef enum _FSSubmitFormActionFlags {
e_FSFlagExclude = 0x0001,
e_FSFlagIncludeNoValueFields = 0x0002,
e_FSFlagExportFormat = 0x0004,
e_FSFlagGetMethod = 0x0008,
e_FSFlagWithCoordinates = 0x0010,
e_FSFlagAsXFDF = 0x0020,
e_FSFlagIncludeAppendSaves = 0x0040,
e_FSFlagIncludeAnnotations = 0x0080,
e_FSFlagSubmitAsPDF = 0x0100,
e_FSFlagCanonicalFormat = 0x0200,
e_FSFlagExclNonUserAnnots = 0x0400,
e_FSFlagExclFKey = 0x0800,
e_FSFlagEmbedForm = 0x2000,
}FSSubmitFormActionFlags;


FSErrorCode FSDK_SubmitFormAction_Create(const FS_ACTION_HANDLE action, FS_SUBMITFORMACTION_HANDLE* submitformaction_return_value);
FSErrorCode FSDK_SubmitFormAction_GetURL(FS_SUBMITFORMACTION_HANDLE submitformaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_SubmitFormAction_SetURL(FS_SUBMITFORMACTION_HANDLE submitformaction_handle, const char* url);
FSErrorCode FSDK_SubmitFormAction_GetFieldNames(FS_SUBMITFORMACTION_HANDLE submitformaction_handle, FS_WSTR* return_wstringarray, FS_UINT32* return_array_length);
FSErrorCode FSDK_SubmitFormAction_SetFieldNames(FS_SUBMITFORMACTION_HANDLE submitformaction_handle, const FS_WSTR* wstringarray, FS_UINT32 array_length_field_names);
FSErrorCode FSDK_SubmitFormAction_GetFlags(FS_SUBMITFORMACTION_HANDLE submitformaction_handle, FS_UINT32* return_value);
FSErrorCode FSDK_SubmitFormAction_SetFlags(FS_SUBMITFORMACTION_HANDLE submitformaction_handle, FS_UINT32 flags);
FSErrorCode FSDK_ResetFormAction_Create(const FS_ACTION_HANDLE action, FS_RESETFORMACTION_HANDLE* resetformaction_return_value);
FSErrorCode FSDK_ResetFormAction_GetFieldNames(FS_RESETFORMACTION_HANDLE resetformaction_handle, FS_WSTR* return_wstringarray, FS_UINT32* return_array_length);
FSErrorCode FSDK_ResetFormAction_SetFieldNames(FS_RESETFORMACTION_HANDLE resetformaction_handle, const FS_WSTR* wstringarray, FS_UINT32 array_length_field_names);
FSErrorCode FSDK_ResetFormAction_GetFlags(FS_RESETFORMACTION_HANDLE resetformaction_handle, FS_UINT32* return_value);
FSErrorCode FSDK_ResetFormAction_SetFlags(FS_RESETFORMACTION_HANDLE resetformaction_handle, FS_UINT32 flags);
FSErrorCode FSDK_ImportDataAction_Create(const FS_ACTION_HANDLE action, FS_IMPORTDATAACTION_HANDLE* importdataaction_return_value);
FSErrorCode FSDK_ImportDataAction_GetFDFFileSpec(FS_IMPORTDATAACTION_HANDLE importdataaction_handle, FS_FILESPEC_HANDLE* return_value);
FSErrorCode FSDK_ImportDataAction_SetFDFFileSpec(FS_IMPORTDATAACTION_HANDLE importdataaction_handle, const FS_FILESPEC_HANDLE file_specification);
FSErrorCode FSDK_HideAction_Create(const FS_ACTION_HANDLE action, FS_HIDEACTION_HANDLE* hideaction_return_value);
FSErrorCode FSDK_HideAction_GetFieldNames(FS_HIDEACTION_HANDLE hideaction_handle, FS_WSTR* return_wstringarray, FS_UINT32* return_array_length);
FSErrorCode FSDK_HideAction_SetFieldNames(FS_HIDEACTION_HANDLE hideaction_handle, const FS_WSTR* wstringarray, FS_UINT32 array_length_field_names);
FSErrorCode FSDK_HideAction_GetHideState(FS_HIDEACTION_HANDLE hideaction_handle, FS_BOOL* return_value);
FSErrorCode FSDK_HideAction_SetHideState(FS_HIDEACTION_HANDLE hideaction_handle, FS_BOOL is_hide);
FSErrorCode FSDK_LaunchAction_Create(const FS_ACTION_HANDLE action, FS_LAUNCHACTION_HANDLE* launchaction_return_value);
FSErrorCode FSDK_LaunchAction_GetFileSpec(FS_LAUNCHACTION_HANDLE launchaction_handle, FS_FILESPEC_HANDLE* return_value);
FSErrorCode FSDK_LaunchAction_SetFileSpec(FS_LAUNCHACTION_HANDLE launchaction_handle, const FS_FILESPEC_HANDLE file_specification);
FSErrorCode FSDK_LaunchAction_GetNewWindowFlag(FS_LAUNCHACTION_HANDLE launchaction_handle, FSNewWindowFlag* return_value);
FSErrorCode FSDK_LaunchAction_SetNewWindowFlag(FS_LAUNCHACTION_HANDLE launchaction_handle, FSNewWindowFlag flag);
FSErrorCode FSDK_LaunchAction_GetWinFileName(FS_LAUNCHACTION_HANDLE launchaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_LaunchAction_GetWinDefaultDirectory(FS_LAUNCHACTION_HANDLE launchaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_LaunchAction_GetWinAppOperation(FS_LAUNCHACTION_HANDLE launchaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_LaunchAction_GetWinAppParameter(FS_LAUNCHACTION_HANDLE launchaction_handle, FS_BSTR* return_value);
FSErrorCode FSDK_LaunchAction_SetWinLaunchParameter(FS_LAUNCHACTION_HANDLE launchaction_handle, const char* file_name, const char* default_directory,
    const char* operation, const char* app_parameter);

typedef enum _FSOperationType {
e_FSOpTypeNone = -1,
e_FSOpTypeAssociate = 0,
e_FSOpTypeStop = 1,
e_FSOpTypePause = 2,
e_FSOpTypeResume = 3,
e_FSOpTypePlay = 4,
}FSOperationType;


FSErrorCode FSDK_RenditionAction_Create(const FS_ACTION_HANDLE action, FS_RENDITIONACTION_HANDLE* renditionaction_return_value);
FSErrorCode FSDK_RenditionAction_GetOperationType(FS_RENDITIONACTION_HANDLE renditionaction_handle, FSOperationType* return_value);
FSErrorCode FSDK_RenditionAction_SetOperationType(FS_RENDITIONACTION_HANDLE renditionaction_handle, FSOperationType op_type);
FSErrorCode FSDK_RenditionAction_GetRenditionCount(FS_RENDITIONACTION_HANDLE renditionaction_handle, int* return_value);
FSErrorCode FSDK_RenditionAction_GetRendition(FS_RENDITIONACTION_HANDLE renditionaction_handle, int index, FS_RENDITION_HANDLE* return_value);
FSErrorCode FSDK_RenditionAction_InsertRendition(FS_RENDITIONACTION_HANDLE renditionaction_handle, const FS_RENDITION_HANDLE rendition, int index);
FSErrorCode FSDK_RenditionAction_RemoveRendition(FS_RENDITIONACTION_HANDLE renditionaction_handle, const FS_RENDITION_HANDLE rendition);
FSErrorCode FSDK_RenditionAction_GetScreenAnnot(FS_RENDITIONACTION_HANDLE renditionaction_handle, FS_SCREENANNOT_HANDLE* return_value);
FSErrorCode FSDK_RenditionAction_SetScreenAnnot(FS_RENDITIONACTION_HANDLE renditionaction_handle, const FS_SCREENANNOT_HANDLE screen_annot);
FSErrorCode FSDK_RenditionAction_GetJavaScript(FS_RENDITIONACTION_HANDLE renditionaction_handle, FS_WSTR* return_value);
FSErrorCode FSDK_RenditionAction_SetJavaScript(FS_RENDITIONACTION_HANDLE renditionaction_handle, const wchar_t* script);

typedef enum _FSOCGState {
e_FSOCGStateOn = 0,
e_FSOCGStateOff = 1,
e_FSOCGStateToggle = 2,
}FSOCGState;


FSErrorCode FSDK_SetOCGStateAction_Create(const FS_ACTION_HANDLE action, FS_SETOCGSTATEACTION_HANDLE* setocgstateaction_return_value);
FSErrorCode FSDK_SetOCGStateAction_GetOCGStateCount(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, int* return_value);
FSErrorCode FSDK_SetOCGStateAction_GetOCGState(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, int index, FSOCGState* return_value);
FSErrorCode FSDK_SetOCGStateAction_GetOCGStateArray(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, int index, FS_PDFDICTIONARY_HANDLE* return_pdfdictionary_array, FS_UINT32* return_array_length);
FSErrorCode FSDK_SetOCGStateAction_InsertOCGStates(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, const FS_PDFDOC_HANDLE document, int index, FSOCGState state, const FS_PDFDICTIONARY_HANDLE* pdfdictionary_array, FS_UINT32 array_length_ocg_dict_array, int* return_value);
FSErrorCode FSDK_SetOCGStateAction_ReplaceOCGStates(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, const FS_PDFDOC_HANDLE document, int index, const FS_PDFDICTIONARY_HANDLE* pdfdictionary_array, FS_UINT32 array_length_ocg_dict_array, FS_BOOL* return_value);
FSErrorCode FSDK_SetOCGStateAction_RemoveOCGStates(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, int index);
FSErrorCode FSDK_SetOCGStateAction_IsRadioButtonStatePreserved(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, FS_BOOL* return_value);
FSErrorCode FSDK_SetOCGStateAction_SetRadioButtonStatePreserved(FS_SETOCGSTATEACTION_HANDLE setocgstateaction_handle, FS_BOOL is_preserved);

typedef enum _FSTriggerEvent {
e_FSTriggerPageOpened = 0,
e_FSTriggerPageClosed = 1,
e_FSTriggerDocWillClose = 2,
e_FSTriggerDocWillSave = 3,
e_FSTriggerDocSaved = 4,
e_FSTriggerDocWillPrint = 5,
e_FSTriggerDocPrinted = 6,
e_FSTriggerFieldKeyStroke = 7,
e_FSTriggerFieldWillFormat = 8,
e_FSTriggerFieldValueChanged = 9,
e_FSTriggerFieldRecalculateValue = 10,
e_FSTriggerAnnotCursorEnter = 11,
e_FSTriggerAnnotCursorExit = 12,
e_FSTriggerAnnotMouseButtonPressed = 13,
e_FSTriggerAnnotMouseButtonReleased = 14,
e_FSTriggerAnnotReceiveInputFocus = 15,
e_FSTriggerAnnotLoseInputFocus = 16,
e_FSTriggerAnnotPageOpened = 17,
e_FSTriggerAnnotPageClosed = 18,
e_FSTriggerAnnotPageVisible = 19,
e_FSTriggerAnnotPageInvisible = 20,
}FSTriggerEvent;


FSErrorCode FSDK_AdditionalAction_Create(const FS_PDFDOC_HANDLE doc, FS_PDFDICTIONARY_HANDLE pdf_dict, FS_ADDITIONALACTION_HANDLE* additionalaction_return_value);
FSErrorCode FSDK_AdditionalAction_Create0(const FS_PDFPAGE_HANDLE page, FS_ADDITIONALACTION_HANDLE* additionalaction_return_value);
FSErrorCode FSDK_AdditionalAction_Create1(const FS_FIELD_HANDLE field, FS_ADDITIONALACTION_HANDLE* additionalaction_return_value);
FSErrorCode FSDK_AdditionalAction_Create2(const FS_ANNOT_HANDLE annot, FS_ADDITIONALACTION_HANDLE* additionalaction_return_value);
FSErrorCode FSDK_AdditionalAction_Release(FS_ADDITIONALACTION_HANDLE additionalaction_handle);
FSErrorCode FSDK_AdditionalAction_IsEmpty(FS_ADDITIONALACTION_HANDLE additionalaction_handle, FS_BOOL* return_value);
FSErrorCode FSDK_AdditionalAction_GetAction(FS_ADDITIONALACTION_HANDLE additionalaction_handle, FSTriggerEvent trigger, FS_ACTION_HANDLE* return_value);
FSErrorCode FSDK_AdditionalAction_SetAction(FS_ADDITIONALACTION_HANDLE additionalaction_handle, FSTriggerEvent trigger,const FS_ACTION_HANDLE action);
FSErrorCode FSDK_AdditionalAction_RemoveAction(FS_ADDITIONALACTION_HANDLE additionalaction_handle, FSTriggerEvent trigger, FS_BOOL* return_value);
FSErrorCode FSDK_AdditionalAction_RemoveAllActions(FS_ADDITIONALACTION_HANDLE additionalaction_handle, FS_BOOL* return_value);
FSErrorCode FSDK_AdditionalAction_DoJSAction(FS_ADDITIONALACTION_HANDLE additionalaction_handle, FSTriggerEvent trigger, FS_BOOL* return_value);
FSErrorCode FSDK_AdditionalAction_GetDict(FS_ADDITIONALACTION_HANDLE additionalaction_handle, FS_PDFDICTIONARY_HANDLE* return_value);
#ifdef __cplusplus
}
#endif
#endif
