#ifndef _FS_FILLSIGN_C_H_
#define _FS_FILLSIGN_C_H_

#ifdef __cplusplus
extern "C" {
#endif



typedef enum _FSFillSignObjectType {
e_FSFillSignObjectTypeText = 0,
e_FSFillSignObjectTypeCrossMark = 1,
e_FSFillSignObjectTypeCheckMark = 2,
e_FSFillSignObjectTypeRoundRectangle = 3,
e_FSFillSignObjectTypeLine = 4,
e_FSFillSignObjectTypeDot = 5,
e_FSFillSignObjectTypeSignature = 6,
e_FSFillSignObjectTypeInitialsSignature = 7,
}FSFillSignObjectType;


typedef struct _FSTextFillSignObjectData {
  FSTextState text_state;
  FS_WSTR text;
}FSTextFillSignObjectData;

FSErrorCode FSDK_FillSign_Create(const FS_PDFPAGE_HANDLE page, FS_FILLSIGN_HANDLE* fillsign_return_value);
FSErrorCode FSDK_FillSign_Release(FS_FILLSIGN_HANDLE fillsign_handle);
FSErrorCode FSDK_FillSign_IsEmpty(FS_FILLSIGN_HANDLE fillsign_handle, FS_BOOL* return_value);
FSErrorCode FSDK_FillSign_AddObject(FS_FILLSIGN_HANDLE fillsign_handle, FSFillSignObjectType type, const FSPointF point, float width, float height,
                           FSRotation rotation, FS_FILLSIGNOBJECT_HANDLE* return_value);
FSErrorCode FSDK_FillSign_AddTextObject(FS_FILLSIGN_HANDLE fillsign_handle, const FSTextFillSignObjectData* text_fill_sign_object_array, FS_UINT32 array_length_text_data, const FSPointF point, float width,
                               float height, FSRotation rotation, FS_BOOL is_comb_field_mode, FS_FILLSIGNOBJECT_HANDLE* return_value);
FSErrorCode FSDK_FillSign_RemoveObject(FS_FILLSIGN_HANDLE fillsign_handle, const FS_FILLSIGNOBJECT_HANDLE fillsign_object, FS_BOOL* return_value);
FSErrorCode FSDK_FillSign_GetObjectAtPoint(FS_FILLSIGN_HANDLE fillsign_handle, const FSPointF point, FS_FILLSIGNOBJECT_HANDLE* return_value);
FSErrorCode FSDK_FillSign_GetObjectAtDevicePoint(FS_FILLSIGN_HANDLE fillsign_handle, const FSPointF point, const FSMatrix matrix, FS_FILLSIGNOBJECT_HANDLE* return_value);
FSErrorCode FSDK_FillSignObject_Create(FS_FILLSIGNOBJECT_HANDLE* fillsignobject_return_value);
FSErrorCode FSDK_FillSignObject_IsEmpty(FS_FILLSIGNOBJECT_HANDLE fillsignobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_FillSignObject_Release(FS_FILLSIGNOBJECT_HANDLE fillsignobject_handle);
FSErrorCode FSDK_FillSignObject_GetType(FS_FILLSIGNOBJECT_HANDLE fillsignobject_handle, FSFillSignObjectType* return_value);
FSErrorCode FSDK_FillSignObject_Move(FS_FILLSIGNOBJECT_HANDLE fillsignobject_handle, const FSPointF point, float width, float height, FSRotation rotation);
FSErrorCode FSDK_FillSignObject_GetRect(FS_FILLSIGNOBJECT_HANDLE fillsignobject_handle, FSRectF* return_value);
FSErrorCode FSDK_FillSignObject_GenerateContent(FS_FILLSIGNOBJECT_HANDLE fillsignobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_TextFillSignObject_Create(const FS_FILLSIGNOBJECT_HANDLE fillsign_object, FS_TEXTFILLSIGNOBJECT_HANDLE* textfillsignobject_return_value);
FSErrorCode FSDK_TextFillSignObject_Release(FS_TEXTFILLSIGNOBJECT_HANDLE textfillsignobject_handle);
FSErrorCode FSDK_TextFillSignObject_GetTextDataArray(FS_TEXTFILLSIGNOBJECT_HANDLE textfillsignobject_handle, FSTextFillSignObjectData* return_textfillsignobject_data_array, FS_UINT32* return_array_length);
FSErrorCode FSDK_TextFillSignObject_IsCombFieldMode(FS_TEXTFILLSIGNOBJECT_HANDLE textfillsignobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_SignatureFillSignObject_Create(const FS_FILLSIGNOBJECT_HANDLE fillsign_object, FS_SIGNATUREFILLSIGNOBJECT_HANDLE* signaturefillsignobject_return_value);
FSErrorCode FSDK_SignatureFillSignObject_Release(FS_SIGNATUREFILLSIGNOBJECT_HANDLE signaturefillsignobject_handle);
FSErrorCode FSDK_SignatureFillSignObject_IsInitialsType(FS_SIGNATUREFILLSIGNOBJECT_HANDLE signaturefillsignobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_SignatureFillSignObject_SetBitmap(FS_SIGNATUREFILLSIGNOBJECT_HANDLE signaturefillsignobject_handle, const FS_BITMAP_HANDLE bitmap);
#ifdef __cplusplus
}
#endif
#endif
