#ifndef _FS_PDFGRAPHICSOBJECT_C_H_
#define _FS_PDFGRAPHICSOBJECT_C_H_

#ifdef __cplusplus
extern "C" {
#endif



typedef enum _FSBlendMode {
e_FSBlendModeBlendNormal  = 0,
e_FSBlendMultiply = 1,
e_FSBlendScreen = 2,
e_FSBlendOverlay = 3,
e_FSBlendDarken = 4,
e_FSBlendLighten = 5,
e_FSBlendColorDodge = 6,
e_FSBlendColorBurn = 7,
e_FSBlendHardlight = 8,
e_FSBlendSoftlight = 9,
e_FSBlendDifference = 10,
e_FSBlendExclusion = 11,
e_FSBlendHue = 21,
e_FSBlendSaturation = 22,
e_FSBlendColor = 23,
e_FSBlendLuminosity = 24,
}FSBlendMode;



typedef enum _FSGraphicsObjectType {
e_FSTypeAll  = 0,
e_FSTypeText = 1,
e_FSTypePath = 2,
e_FSTypeImage = 3,
e_FSTypeShading = 4,
e_FSTypeFormXObject = 5,
e_FSTypeInlines = 6,
e_FSTypeEmptyMarkedContent = 7,
}FSGraphicsObjectType;



typedef enum _FSMode {
e_FSModeFill  = 0,
e_FSModeStroke = 1,
e_FSModeFillStroke = 2,
e_FSModeInvisible = 3,
e_FSModeFillClip = 4,
e_FSModeStrokeClip = 5,
e_FSModeFillStrokeClip = 6,
e_FSModeClip = 7,
}FSMode;


FSErrorCode FSDK_ColorState_Release(FS_COLORSTATE_HANDLE colorstate_handle);
FSErrorCode FSDK_ColorState_IsEmpty(FS_COLORSTATE_HANDLE colorstate_handle, FS_BOOL* return_value);
FSErrorCode FSDK_ColorState_GetFillColor(FS_COLORSTATE_HANDLE colorstate_handle, FS_COLOR_HANDLE* return_value);
FSErrorCode FSDK_ColorState_SetFillColor(FS_COLORSTATE_HANDLE colorstate_handle, const FS_COLOR_HANDLE color);
FSErrorCode FSDK_ColorState_GetStrokeColor(FS_COLORSTATE_HANDLE colorstate_handle, FS_COLOR_HANDLE* return_value);
FSErrorCode FSDK_ColorState_SetStrokeColor(FS_COLORSTATE_HANDLE colorstate_handle, const FS_COLOR_HANDLE color);
FSErrorCode FSDK_MarkedContent_Release(FS_MARKEDCONTENT_HANDLE markedcontent_handle);
FSErrorCode FSDK_MarkedContent_HasTag(FS_MARKEDCONTENT_HANDLE markedcontent_handle, const char* tag_name, FS_BOOL* return_value);
FSErrorCode FSDK_MarkedContent_GetItemCount(FS_MARKEDCONTENT_HANDLE markedcontent_handle, int* return_value);
FSErrorCode FSDK_MarkedContent_GetItemTagName(FS_MARKEDCONTENT_HANDLE markedcontent_handle, int index, FS_BSTR* return_value);
FSErrorCode FSDK_MarkedContent_GetItemMCID(FS_MARKEDCONTENT_HANDLE markedcontent_handle, int index, int* return_value);
FSErrorCode FSDK_MarkedContent_GetItemPropertyDict(FS_MARKEDCONTENT_HANDLE markedcontent_handle, int index, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_MarkedContent_AddItem(FS_MARKEDCONTENT_HANDLE markedcontent_handle, const char* tag_name, FS_PDFDICTIONARY_HANDLE property_dict, int* return_value);
FSErrorCode FSDK_MarkedContent_RemoveItem(FS_MARKEDCONTENT_HANDLE markedcontent_handle, const char* tag_name, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_Release(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle);
FSErrorCode FSDK_GraphicsObject_GetType(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSGraphicsObjectType* return_value);
FSErrorCode FSDK_GraphicsObject_GetRect(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSRectF* return_value);
FSErrorCode FSDK_GraphicsObject_HasTransparency(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_GetStrokeColor(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSDK_ARGB* return_value);
FSErrorCode FSDK_GraphicsObject_GetFillColor(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSDK_ARGB* return_value);
FSErrorCode FSDK_GraphicsObject_SetStrokeColor(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSDK_ARGB color);
FSErrorCode FSDK_GraphicsObject_SetFillColor(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSDK_ARGB color);
FSErrorCode FSDK_GraphicsObject_GetColorState(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_COLORSTATE_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_SetColorState(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, const FS_COLORSTATE_HANDLE color_state);
FSErrorCode FSDK_GraphicsObject_SetFillOpacity(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, float opacity);
FSErrorCode FSDK_GraphicsObject_SetStrokeOpacity(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, float opacity);
FSErrorCode FSDK_GraphicsObject_GetFillOpacity(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, float* return_value);
FSErrorCode FSDK_GraphicsObject_GetStrokeOpacity(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, float* return_value);
FSErrorCode FSDK_GraphicsObject_GetMatrix(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSMatrix* return_value);
FSErrorCode FSDK_GraphicsObject_SetMatrix(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, const FSMatrix matrix);
FSErrorCode FSDK_GraphicsObject_Transform(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, const FSMatrix matrix, FS_BOOL need_transform_clippath, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_Clone(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_GRAPHICSOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_Clone0(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle,  FS_GRAPHICSOBJECTS_HANDLE src_graphicsobjects, FS_GRAPHICSOBJECTS_HANDLE dest_graphicsobjects, FS_GRAPHICSOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_GetGraphState(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSGraphState* return_value);
FSErrorCode FSDK_GraphicsObject_SetGraphState(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, const FSGraphState graph_state);
FSErrorCode FSDK_GraphicsObject_GetBlendMode(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSBlendMode* return_value);
FSErrorCode FSDK_GraphicsObject_SetBlendMode(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSBlendMode blend_mode);
FSErrorCode FSDK_GraphicsObject_GetClipPathCount(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int* return_value);
FSErrorCode FSDK_GraphicsObject_GetClipPath(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int index, FS_PATH_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_GetClipPathFillMode(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int index, FSFillMode* return_value);
FSErrorCode FSDK_GraphicsObject_AddClipPath(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, const FS_PATH_HANDLE path, FSFillMode fill_mode, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_RemoveClipPath(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int index, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_GetClipTextObjectCount(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int* return_value);
FSErrorCode FSDK_GraphicsObject_GetClipTextObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int index, FS_TEXTOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_AddClipTextObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_TEXTOBJECT_HANDLE textobject, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_RemoveClipTextObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int index, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_GetClipRect(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FSRectF* return_value);
FSErrorCode FSDK_GraphicsObject_SetClipRect(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, const FSRectF clip_rect);
FSErrorCode FSDK_GraphicsObject_ClearClips(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_GraphicsObject_GetMarkedContent(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_MARKEDCONTENT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_GetLayers(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, const FS_LAYERTREE_HANDLE layer_tree, FS_LAYERNODE_HANDLE* return_layernode_array, FS_UINT32* return_array_length);
FSErrorCode FSDK_GraphicsObject_GetTextObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_TEXTOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_GetFormXObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_FORMXOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_GetImageObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_IMAGEOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_GetPathObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_PATHOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_GetShadingObject(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, FS_SHADINGOBJECT_HANDLE* return_value);
FSErrorCode FSDK_GraphicsObject_Rotate(FS_GRAPHICSOBJECT_HANDLE graphicsobject_handle, int angle);
typedef struct _FSTextState {
  FS_UINT32 version;
  FS_FONT_HANDLE font;
  float font_size;
  float font_vertical_size;
  float font_horizontal_size;
  float charspace;
  float wordspace;
  FSMode textmode;
  FSPointF origin_position;
  float textmatrix[4];
}FSTextState;

FSErrorCode FSDK_ImageObject_Create(const FS_PDFDOC_HANDLE document, FS_IMAGEOBJECT_HANDLE* return_value);
FSErrorCode FSDK_ImageObject_SetBitmap(FS_IMAGEOBJECT_HANDLE imageobject_handle, const FS_BITMAP_HANDLE bitmap, const FS_BITMAP_HANDLE mask);
FSErrorCode FSDK_ImageObject_SetImage(FS_IMAGEOBJECT_HANDLE imageobject_handle, const FS_IMAGE_HANDLE image, int frame_index);
FSErrorCode FSDK_ImageObject_CloneBitmap(FS_IMAGEOBJECT_HANDLE imageobject_handle, const FS_GRAPHICSOBJECTS_HANDLE graphics_objects, FS_BITMAP_HANDLE* return_value);
FSErrorCode FSDK_ImageObject_CloneBitmap0(FS_IMAGEOBJECT_HANDLE imageobject_handle, const FS_PDFPAGE_HANDLE page, const FS_GRAPHICSOBJECTS_HANDLE graphics_objects, FS_BITMAP_HANDLE* return_value);
FSErrorCode FSDK_ImageObject_CreateFromType3TextObject(const FS_PDFPAGE_HANDLE page, FS_TEXTOBJECT_HANDLE text_obj, FS_IMAGEOBJECT_HANDLE* return_value);
FSErrorCode FSDK_ImageObject_GetColorSpace(FS_IMAGEOBJECT_HANDLE imageobject_handle, FSColorSpaceType* return_value);
FSErrorCode FSDK_ImageObject_GetStream(FS_IMAGEOBJECT_HANDLE imageobject_handle, FS_PDFSTREAM_HANDLE* return_value);
FSErrorCode FSDK_ImageObject_IsImageMask(FS_IMAGEOBJECT_HANDLE imageobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_ImageObject_GetMask(FS_IMAGEOBJECT_HANDLE imageobject_handle, FS_PDFOBJECT_HANDLE* return_value);
FSErrorCode FSDK_TextObject_Create(FS_TEXTOBJECT_HANDLE* return_value);
FSErrorCode FSDK_TextObject_GetText(FS_TEXTOBJECT_HANDLE textobject_handle, FS_WSTR* return_value);
FSErrorCode FSDK_TextObject_SetText(FS_TEXTOBJECT_HANDLE textobject_handle, const wchar_t* text);
FSErrorCode FSDK_TextObject_GetTextState(FS_TEXTOBJECT_HANDLE textobject_handle, const FS_PDFPAGE_HANDLE page, FSTextState* return_value);
FSErrorCode FSDK_TextObject_SetTextState(FS_TEXTOBJECT_HANDLE textobject_handle, const FS_PDFPAGE_HANDLE page, const FSTextState text_state, FS_BOOL is_italic, int weight);
FSErrorCode FSDK_TextObject_GetCharCount(FS_TEXTOBJECT_HANDLE textobject_handle, int* return_value);
FSErrorCode FSDK_TextObject_GetCharPos(FS_TEXTOBJECT_HANDLE textobject_handle, int index, FSPointF* return_value);
FSErrorCode FSDK_TextObject_GetCharWidthByIndex(FS_TEXTOBJECT_HANDLE textobject_handle, int index, float* return_value);
FSErrorCode FSDK_TextObject_GetCharHeightByIndex(FS_TEXTOBJECT_HANDLE textobject_handle, int index, float* return_value);
FSErrorCode FSDK_PathObject_Create(FS_PATHOBJECT_HANDLE* return_value);
FSErrorCode FSDK_PathObject_CreateFromTextObject(const FS_PDFPAGE_HANDLE page, FS_TEXTOBJECT_HANDLE text_obj, FS_PATHOBJECT_HANDLE* return_value);
FSErrorCode FSDK_PathObject_GetFillMode(FS_PATHOBJECT_HANDLE pathobject_handle, FSFillMode* return_value);
FSErrorCode FSDK_PathObject_SetFillMode(FS_PATHOBJECT_HANDLE pathobject_handle,  FSFillMode fill_mode);
FSErrorCode FSDK_PathObject_GetStrokeState(FS_PATHOBJECT_HANDLE pathobject_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PathObject_SetStrokeState(FS_PATHOBJECT_HANDLE pathobject_handle, FS_BOOL is_stroke);
FSErrorCode FSDK_PathObject_GetPathData(FS_PATHOBJECT_HANDLE pathobject_handle, FS_PATH_HANDLE* return_value);
FSErrorCode FSDK_PathObject_SetPathData(FS_PATHOBJECT_HANDLE pathobject_handle, const FS_PATH_HANDLE path_data);
FSErrorCode FSDK_FormXObject_Create(const FS_PDFDOC_HANDLE document, FS_FORMXOBJECT_HANDLE* return_value);
FSErrorCode FSDK_FormXObject_GetStream(FS_FORMXOBJECT_HANDLE formxobject_handle, FS_PDFSTREAM_HANDLE* return_value);
FSErrorCode FSDK_FormXObject_GetGraphicsObjects(FS_FORMXOBJECT_HANDLE formxobject_handle, FS_GRAPHICSOBJECTS_HANDLE* return_value);
FSErrorCode FSDK_FormXObject_ImportPageContent(FS_FORMXOBJECT_HANDLE formxobject_handle, const FS_PDFPAGE_HANDLE source_page, FS_BOOL is_annots_included, FS_BOOL* return_value);
FSErrorCode FSDK_ShadingObject_GetPDFObject(FS_SHADINGOBJECT_HANDLE shadingobject_handle, FS_PDFOBJECT_HANDLE* return_value);
#ifdef __cplusplus
}
#endif
#endif
