#ifndef _FS_COMPARE_C_H_
#define _FS_COMPARE_C_H_

#ifdef __cplusplus
extern "C" {
#endif



typedef enum _FSCompareType {
e_FSCompareTypeAll = 0x00000000,
e_FSCompareTypeText = 0x00000001,
e_FSCompareTypeAnnotation = 0x00000002,
}FSCompareType;



typedef enum _FSCompareResultType {
e_FSCompareResultTypeNone = -1,
e_FSCompareResultTypeDeleteText = 0,
e_FSCompareResultTypeInsertText = 1,
e_FSCompareResultTypeReplaceText = 2,
e_FSCompareResultTypeDeleteImage = 6,
e_FSCompareResultTypeInsertImage = 7,
e_FSCompareResultTypeReplaceImage = 8,
e_FSCompareResultTypeDeletePath = 9,
e_FSCompareResultTypeInsertPath = 10,
e_FSCompareResultTypeReplacePath = 11,
e_FSCompareResultTypeDeleteShading = 12,
e_FSCompareResultTypeInsertShading = 13,
e_FSCompareResultTypeReplaceShading = 14,
e_FSCompareResultTypeDeleteAnnot = 15,
e_FSCompareResultTypeInsertAnnot = 16,
e_FSCompareResultTypeReplaceAnnot = 17,
e_FSCompareResultTypeTextAttriChange = 18,
}FSCompareResultType;


typedef struct _FSCompareResultInfo {
  FSCompareResultType type;
  FSRectF* rect_array;
  FS_UINT32 array_length_rect_array;
  FS_WSTR diff_contents;
}FSCompareResultInfo;

typedef struct _FSCompareResults {
  FSCompareResultInfo* base_doc_results_array;
  FS_UINT32 base_doc_results_array_length;
  FSCompareResultInfo* compared_doc_results_array;
  FS_UINT32 compared_doc_results_array_length;
}FSCompareResults;

FSErrorCode FSDK_Comparison_Create(const FS_PDFDOC_HANDLE base_doc, const FS_PDFDOC_HANDLE compared_doc, FS_COMPARISON_HANDLE* comparison_return_value);
FSErrorCode FSDK_Comparison_Release(FS_COMPARISON_HANDLE comparison_handle);
FSErrorCode FSDK_Comparison_IsEmpty(FS_COMPARISON_HANDLE comparison_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Comparison_DoCompare(FS_COMPARISON_HANDLE comparison_handle, int base_page_index, int compared_page_index, FS_UINT32 compare_flags, FSCompareResults* return_value);
FSErrorCode FSDK_Comparison_GenerateComparedDoc(FS_COMPARISON_HANDLE comparison_handle,  FS_UINT32 compare_flags, FS_PDFDOC_HANDLE* return_value);
FSErrorCode FSDK_Comparison_GenerateComparedDoc0(FS_COMPARISON_HANDLE comparison_handle,  FS_UINT32 compare_flags, FS_BOOL is_show_all_layers, FS_PDFDOC_HANDLE* return_value);
#ifdef __cplusplus
}
#endif
#endif
