#ifndef _FS_PDFSTRUCTTREE_C_H_
#define _FS_PDFSTRUCTTREE_C_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "fs_basictypes_c.h"


typedef enum _FSStructTreeEntityType {
e_FSStructTreeEntityTypeUnknownType = -1,
e_FSStructTreeEntityTypeElement = 0,
e_FSStructTreeEntityTypeMarkedContent = 1,
e_FSStructTreeEntityTypeObjectContent = 2,
}FSStructTreeEntityType;



typedef enum _FSElementInfoType {
e_FSElementInfoTypeTitle = 0,
e_FSElementInfoTypeLanguage = 1,
e_FSElementInfoTypeAltDescription = 2,
e_FSElementInfoTypeExpandedForm = 3,
e_FSElementInfoTypeActualText = 4,
}FSElementInfoType;



typedef enum _FSStructObjectType {
e_FSStructObjectTypeUnknownType = -1,
e_FSStructObjectTypeInvalid = 0,
e_FSStructObjectTypeImage = 1,
e_FSStructObjectTypeForm = 2,
e_FSStructObjectTypeAnnot = 3,
}FSStructObjectType;


FSErrorCode FSDK_StructTreeEntity_Create(FS_STRUCTTREEENTITY_HANDLE* structtreeentity_return_value);
FSErrorCode FSDK_StructTreeEntity_Release(FS_STRUCTTREEENTITY_HANDLE structtreeentity_handle);
FSErrorCode FSDK_StructTreeEntity_IsEmpty(FS_STRUCTTREEENTITY_HANDLE structtreeentity_handle, FS_BOOL* return_value);
FSErrorCode FSDK_StructTreeEntity_GetType(FS_STRUCTTREEENTITY_HANDLE structtreeentity_handle, FSStructTreeEntityType* return_value);
FSErrorCode FSDK_StructTreeEntity_GetPage(FS_STRUCTTREEENTITY_HANDLE structtreeentity_handle, FS_PDFPAGE_HANDLE* return_value);
FSErrorCode FSDK_StructElement_Create(FS_STRUCTELEMENT_HANDLE* structelement_return_value);
FSErrorCode FSDK_StructElement_Create0(const FS_STRUCTTREEENTITY_HANDLE other, FS_STRUCTELEMENT_HANDLE* structelement_return_value);
FSErrorCode FSDK_StructElement_Release(FS_STRUCTELEMENT_HANDLE structelement_handle);
FSErrorCode FSDK_StructElement_GetStructureTypeName(FS_STRUCTELEMENT_HANDLE structelement_handle, FS_BSTR* return_value);
FSErrorCode FSDK_StructElement_GetChildCount(FS_STRUCTELEMENT_HANDLE structelement_handle, int* return_value);
FSErrorCode FSDK_StructElement_GetChild(FS_STRUCTELEMENT_HANDLE structelement_handle, int index, FS_STRUCTTREEENTITY_HANDLE* return_value);
FSErrorCode FSDK_StructElement_RemoveChild(FS_STRUCTELEMENT_HANDLE structelement_handle, int index);
FSErrorCode FSDK_StructElement_HasElementInfo(FS_STRUCTELEMENT_HANDLE structelement_handle, FSElementInfoType type, FS_BOOL* return_value);
FSErrorCode FSDK_StructElement_GetElementInfo(FS_STRUCTELEMENT_HANDLE structelement_handle, FSElementInfoType type, FS_WSTR* return_value);
FSErrorCode FSDK_StructElement_GetParentElement(FS_STRUCTELEMENT_HANDLE structelement_handle, FS_STRUCTELEMENT_HANDLE* return_value);
FSErrorCode FSDK_StructMarkedContent_Create(FS_STRUCTMARKEDCONTENT_HANDLE* structmarkedcontent_return_value);
FSErrorCode FSDK_StructMarkedContent_Create0(const FS_STRUCTTREEENTITY_HANDLE other, FS_STRUCTMARKEDCONTENT_HANDLE* structmarkedcontent_return_value);
FSErrorCode FSDK_StructMarkedContent_Release(FS_STRUCTMARKEDCONTENT_HANDLE structmarkedcontent_handle);
FSErrorCode FSDK_StructMarkedContent_GetParentElement(FS_STRUCTMARKEDCONTENT_HANDLE structmarkedcontent_handle, FS_STRUCTELEMENT_HANDLE* return_value);
FSErrorCode FSDK_StructMarkedContent_GetMCID(FS_STRUCTMARKEDCONTENT_HANDLE structmarkedcontent_handle, FS_UINT32* return_value);
FSErrorCode FSDK_StructMarkedContent_GetStmDict(FS_STRUCTMARKEDCONTENT_HANDLE structmarkedcontent_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_StructMarkedContent_GetStmOwnerDict(FS_STRUCTMARKEDCONTENT_HANDLE structmarkedcontent_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_StructObjectContent_Create(FS_STRUCTOBJECTCONTENT_HANDLE* structobjectcontent_return_value);
FSErrorCode FSDK_StructObjectContent_Create0(const FS_STRUCTTREEENTITY_HANDLE other, FS_STRUCTOBJECTCONTENT_HANDLE* structobjectcontent_return_value);
FSErrorCode FSDK_StructObjectContent_Release(FS_STRUCTOBJECTCONTENT_HANDLE structobjectcontent_handle);
FSErrorCode FSDK_StructObjectContent_GetParentElement(FS_STRUCTOBJECTCONTENT_HANDLE structobjectcontent_handle, FS_STRUCTELEMENT_HANDLE* return_value);
FSErrorCode FSDK_StructObjectContent_GetObjectType(FS_STRUCTOBJECTCONTENT_HANDLE structobjectcontent_handle, FSStructObjectType* return_value);
FSErrorCode FSDK_StructObjectContent_GetDict(FS_STRUCTOBJECTCONTENT_HANDLE structobjectcontent_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_PDFStructTree_Create(const FS_PDFDOC_HANDLE document, FS_PDFSTRUCTTREE_HANDLE* pdfstructtree_return_value);
FSErrorCode FSDK_PDFStructTree_Release(FS_PDFSTRUCTTREE_HANDLE pdfstructtree_handle);
FSErrorCode FSDK_PDFStructTree_IsEmpty(FS_PDFSTRUCTTREE_HANDLE pdfstructtree_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFStructTree_GetChildCount(FS_PDFSTRUCTTREE_HANDLE pdfstructtree_handle, int* return_value);
FSErrorCode FSDK_PDFStructTree_GetChild(FS_PDFSTRUCTTREE_HANDLE pdfstructtree_handle, int index, FS_STRUCTELEMENT_HANDLE* return_value);
FSErrorCode FSDK_PDFStructTree_RemoveChild(FS_PDFSTRUCTTREE_HANDLE pdfstructtree_handle, int index);
#ifdef __cplusplus
}
#endif
#endif
