#ifndef _FS_REDACTION_C_H_
#define _FS_REDACTION_C_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "fx_basic_c.h"

typedef struct _FSApplyRedactionCallback {
  void* user_data;
  void (*Release)(void* user_data);
  FS_BOOL (*NeedToGenerateStreamFile)(void* user_data);
}FSApplyRedactionCallback;

FSErrorCode FSDK_Redaction_Create(const FS_PDFDOC_HANDLE document, FS_REDACTION_HANDLE* redaction_return_value);
FSErrorCode FSDK_Redaction_Release(FS_REDACTION_HANDLE redaction_handle);
FSErrorCode FSDK_Redaction_IsEmpty(FS_REDACTION_HANDLE redaction_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Redaction_MarkRedactAnnot(FS_REDACTION_HANDLE redaction_handle, const FS_PDFPAGE_HANDLE page, const FSRectF* rectf_array, FS_UINT32 array_length_rects, FS_REDACTANNOT_HANDLE* return_value);
FSErrorCode FSDK_Redaction_EnableFileStream(FS_REDACTION_HANDLE redaction_handle, const wchar_t* temp_directory_path, FSApplyRedactionCallback* apply_redaction_callback);
FSErrorCode FSDK_Redaction_Apply(FS_REDACTION_HANDLE redaction_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Redaction_StartApply(FS_REDACTION_HANDLE redaction_handle,  FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
#ifdef __cplusplus
}
#endif
#endif
