#ifndef _FS_HEADERFOOTER_C_H_
#define _FS_HEADERFOOTER_C_H_

#ifdef __cplusplus
extern "C" {
#endif



typedef enum _FSDateFormatType {
e_FSDateFormatMSlashD = 0,
e_FSDateFormatMSlashDSlashYY = 1,
e_FSDateFormatMSlashDSlashYYYY = 2,
e_FSDateFormatMMSlashDDSlashYY = 3,
e_FSDateFormatMMSlashDDSlashYYYY = 4,
e_FSDateFormatDSlashMSlashYY = 5,
e_FSDateFormatDSlashMSlashYYYY = 6,
e_FSDateFormatDDSlashMMSlashYY = 7,
e_FSDateFormatDDSlashMMSlashYYYY = 8,
e_FSDateFormatMMSlashYY = 9,
e_FSDateFormatMMSlashYYYY = 10,
e_FSDateFormatMDotDDotYY = 11,
e_FSDateFormatMDotDDotYYYY = 12,
e_FSDateFormatMMDotDDDotYY = 13,
e_FSDateFormatMMDotDDDotYYYY = 14,
e_FSDateFormatMMDotYY = 15,
e_FSDateFormatDDotMDotYYYY = 16,
e_FSDateFormatDDDotMMDotYY = 17,
e_FSDateFormatDDDotMMDotYYYY = 18,
e_FSDateFormatYYHyphenMMHyphenDD = 19,
e_FSDateFormatYYYYHyphenMMHyphenDD = 20,
}FSDateFormatType;



typedef enum _FSPageNumberFormat {
e_FSPageNumberFormatDefault = 0,
e_FSPageNumberFormatNumberOfCount = 1,
e_FSPageNumberFormatNumberSlashCount = 2,
e_FSPageNumberFormatPageNumber = 3,
e_FSPageNumberFormatPageNumberOfCount = 4,
}FSPageNumberFormat;


typedef struct _FSPageNumberRange {
  FS_INT32 start_number;
  FS_INT32 end_number;
  FSFilter filter;
}FSPageNumberRange;

typedef struct _FSHeaderFooterContent {
  FS_WSTR header_left_content;
  FS_WSTR header_center_content;
  FS_WSTR header_right_content;
  FS_WSTR footer_left_content;
  FS_WSTR footer_center_content;
  FS_WSTR footer_right_content;
}FSHeaderFooterContent;

typedef struct _FSHeaderFooter {
  FS_FONT_HANDLE font;
  float text_size;
  FS_RGB text_color;
  FSPageNumberRange page_range;
  FSRectF page_margin;
  FS_BOOL has_text_shrinked;
  FS_BOOL has_fixedsize_for_print;
  int start_page_number;
  FSHeaderFooterContent content;
  FS_BOOL is_to_embed_font;
  FS_BOOL is_underline;
  FS_BOOL is_replace_font;
}FSHeaderFooter;

FSErrorCode FSDK_HeaderFooterContentGenerator_Create(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE* headerfootercontentgenerator_return_value);
FSErrorCode FSDK_HeaderFooterContentGenerator_Release(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE headerfootercontentgenerator_handle);
FSErrorCode FSDK_HeaderFooterContentGenerator_IsEmpty(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE headerfootercontentgenerator_handle, FS_BOOL* return_value);
FSErrorCode FSDK_HeaderFooterContentGenerator_AddDate(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE headerfootercontentgenerator_handle, FSDateFormatType format_type);
FSErrorCode FSDK_HeaderFooterContentGenerator_AddPageNumber(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE headerfootercontentgenerator_handle, FSPageNumberFormat format_type);
FSErrorCode FSDK_HeaderFooterContentGenerator_AddString(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE headerfootercontentgenerator_handle, const wchar_t* new_string);
FSErrorCode FSDK_HeaderFooterContentGenerator_Clear(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE headerfootercontentgenerator_handle);
FSErrorCode FSDK_HeaderFooterContentGenerator_GenerateContent(FS_HEADERFOOTERCONTENTGENERATOR_HANDLE headerfootercontentgenerator_handle, FS_WSTR* return_value);
#ifdef __cplusplus
}
#endif
#endif
