#ifndef _FS_RENDITION_C_H_
#define _FS_RENDITION_C_H_

#ifdef __cplusplus
extern "C" {
#endif



typedef enum _FSMediaOptionType {
e_FSMediaOptionMustBeHonored = 0,
e_FSMediaOptionBestEffort = 1,
}FSMediaOptionType;



typedef enum _FSMediaPermission {
e_FSMediaPermTempNever = 0,
e_FSMediaPermTempExtract = 1,
e_FSMediaPermTempAccess = 2,
e_FSMediaPermTempAlways = 3,
}FSMediaPermission;



typedef enum _FSMediaPlayerType {
e_FSMediaPlayerMustUsed = 0,
e_FSMediaPlayerAvailable = 1,
e_FSMediaPlayerNotUsed = 2,
}FSMediaPlayerType;



typedef enum _FSMediaPlayerFitStyle {
e_FSMediaPlayerFitStyleMeet = 0,
e_FSMediaPlayerFitStyleSlice = 1,
e_FSMediaPlayerFitStyleFill = 2,
e_FSMediaPlayerFitStyleScroll = 3,
e_FSMediaPlayerFitStyleHidden = 4,
e_FSMediaPlayerFitStyleDefault = 5,
}FSMediaPlayerFitStyle;



typedef enum _FSWindowType {
e_FSWindowTypeFloating = 0,
e_FSWindowTypeFullScreen = 1,
e_FSWindowTypeHidden = 2,
e_FSWindowTypeAnnotRect = 3,
}FSWindowType;



typedef enum _FSMonitorSpecifier {
e_FSMonitorSpecifierLargest = 0,
e_FSMonitorSpecifierSmallest = 1,
e_FSMonitorSpecifierPrimary = 2,
e_FSMonitorSpecifierGreatestColorDepth = 3,
e_FSMonitorSpecifierGreatestArea = 4,
e_FSMonitorSpecifierGreatestHeight = 5,
e_FSMonitorSpecifierGreatestWidth = 6,
}FSMonitorSpecifier;



typedef enum _FSFloatingWindowRelatedWindowType {
e_FSFloatingWindowRelatedWindowDocument = 0,
e_FSFloatingWindowRelatedWindowApplication = 1,
e_FSFloatingWindowRelatedWindowFullDesktop = 2,
e_FSFloatingWindowRelatedWindowMonitor = 3,
}FSFloatingWindowRelatedWindowType;



typedef enum _FSFloatingWindowResizeType {
e_FSFloatingWindowResizeTypeNo = 0,
e_FSFloatingWindowResizeTypeAspectRatio = 1,
e_FSFloatingWindowResizeTypeAnyway = 2,
}FSFloatingWindowResizeType;



typedef enum _FSFloatingWindowOffscreenEvent {
e_FSFloatingWindowOffscreenEventNone = 0,
e_FSFloatingWindowOffscreenEventMoveResize = 1,
e_FSFloatingWindowOffscreenEventNonViable = 2,
}FSFloatingWindowOffscreenEvent;


FSErrorCode FSDK_Rendition_Create(const FS_PDFDOC_HANDLE pdf_doc, FS_PDFDICTIONARY_HANDLE rendition_dict, FS_RENDITION_HANDLE* rendition_return_value);
FSErrorCode FSDK_Rendition_Release(FS_RENDITION_HANDLE rendition_handle);
FSErrorCode FSDK_Rendition_IsEmpty(FS_RENDITION_HANDLE rendition_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Rendition_GetDict(FS_RENDITION_HANDLE rendition_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_Rendition_GetRenditionName(FS_RENDITION_HANDLE rendition_handle, FS_WSTR* return_value);
FSErrorCode FSDK_Rendition_SetRenditionName(FS_RENDITION_HANDLE rendition_handle, const wchar_t* name);
FSErrorCode FSDK_Rendition_HasMediaClip(FS_RENDITION_HANDLE rendition_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Rendition_GetMediaClipName(FS_RENDITION_HANDLE rendition_handle, FS_WSTR* return_value);
FSErrorCode FSDK_Rendition_SetMediaClipName(FS_RENDITION_HANDLE rendition_handle, const wchar_t* name);
FSErrorCode FSDK_Rendition_GetMediaClipFile(FS_RENDITION_HANDLE rendition_handle, FS_FILESPEC_HANDLE* return_value);
FSErrorCode FSDK_Rendition_SetMediaClipFile(FS_RENDITION_HANDLE rendition_handle, FS_FILESPEC_HANDLE file_specification);
FSErrorCode FSDK_Rendition_GetMediaClipContentType(FS_RENDITION_HANDLE rendition_handle, FS_BSTR* return_value);
FSErrorCode FSDK_Rendition_SetMediaClipContentType(FS_RENDITION_HANDLE rendition_handle, const char* content_type);
FSErrorCode FSDK_Rendition_GetPermission(FS_RENDITION_HANDLE rendition_handle, FSMediaPermission* return_value);
FSErrorCode FSDK_Rendition_SetPermission(FS_RENDITION_HANDLE rendition_handle, FSMediaPermission permission);
FSErrorCode FSDK_Rendition_GetMediaDescriptions(FS_RENDITION_HANDLE rendition_handle, FS_WSTR* return_wstringarray, FS_UINT32* return_array_length);
FSErrorCode FSDK_Rendition_SetMediaDescriptions(FS_RENDITION_HANDLE rendition_handle, const FS_WSTR* wstringarray, FS_UINT32 array_length_description_array);
FSErrorCode FSDK_Rendition_GetMediaBaseURL(FS_RENDITION_HANDLE rendition_handle, FS_BSTR* return_value);
FSErrorCode FSDK_Rendition_SetMediaBaseURL(FS_RENDITION_HANDLE rendition_handle, const char* base_url, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetMediaPlayerCount(FS_RENDITION_HANDLE rendition_handle, FSMediaPlayerType type, int* return_value);
FSErrorCode FSDK_Rendition_GetMediaPlayer(FS_RENDITION_HANDLE rendition_handle, FSMediaPlayerType type, int index, FS_MEDIAPLAYER_HANDLE* return_value);
FSErrorCode FSDK_Rendition_AddMediaPlayer(FS_RENDITION_HANDLE rendition_handle, FSMediaPlayerType type, const FS_MEDIAPLAYER_HANDLE player, int* return_value);
FSErrorCode FSDK_Rendition_RemoveMediaPlayer(FS_RENDITION_HANDLE rendition_handle, FSMediaPlayerType type, const FS_MEDIAPLAYER_HANDLE player);
FSErrorCode FSDK_Rendition_GetVolume(FS_RENDITION_HANDLE rendition_handle, int* return_value);
FSErrorCode FSDK_Rendition_SetVolume(FS_RENDITION_HANDLE rendition_handle, int volume, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_IsControlBarVisible(FS_RENDITION_HANDLE rendition_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Rendition_EnableControlBarVisible(FS_RENDITION_HANDLE rendition_handle, FS_BOOL is_visible, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetFitStyle(FS_RENDITION_HANDLE rendition_handle, FSMediaPlayerFitStyle* return_value);
FSErrorCode FSDK_Rendition_SetFitStyle(FS_RENDITION_HANDLE rendition_handle, FSMediaPlayerFitStyle fit_style, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetDuration(FS_RENDITION_HANDLE rendition_handle, int* return_value);
FSErrorCode FSDK_Rendition_SetDuration(FS_RENDITION_HANDLE rendition_handle, int duration, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_IsAutoPlay(FS_RENDITION_HANDLE rendition_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Rendition_EnableAutoPlay(FS_RENDITION_HANDLE rendition_handle, FS_BOOL is_auto_play, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetRepeatCount(FS_RENDITION_HANDLE rendition_handle, int* return_value);
FSErrorCode FSDK_Rendition_SetRepeatCount(FS_RENDITION_HANDLE rendition_handle, int count, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetWindowType(FS_RENDITION_HANDLE rendition_handle, FSWindowType* return_value);
FSErrorCode FSDK_Rendition_SetWindowType(FS_RENDITION_HANDLE rendition_handle, FSWindowType window_type, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetBackgroundColor(FS_RENDITION_HANDLE rendition_handle, FS_RGB* return_value);
FSErrorCode FSDK_Rendition_SetBackgroundColor(FS_RENDITION_HANDLE rendition_handle, FS_RGB color, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetBackgroundOpacity(FS_RENDITION_HANDLE rendition_handle, float* return_value);
FSErrorCode FSDK_Rendition_SetBackgroundOpacity(FS_RENDITION_HANDLE rendition_handle, float opacity, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetMonitorSpecifier(FS_RENDITION_HANDLE rendition_handle, FSMonitorSpecifier* return_value);
FSErrorCode FSDK_Rendition_SetMonitorSpecifier(FS_RENDITION_HANDLE rendition_handle, FSMonitorSpecifier monitor_specifier, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetFloatingWindowWidth(FS_RENDITION_HANDLE rendition_handle, int* return_value);
FSErrorCode FSDK_Rendition_GetFloatingWindowHeight(FS_RENDITION_HANDLE rendition_handle, int* return_value);
FSErrorCode FSDK_Rendition_SetFloatingWindowSize(FS_RENDITION_HANDLE rendition_handle, int width, int height, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetFloatingWindowRelatedWindowType(FS_RENDITION_HANDLE rendition_handle, FSFloatingWindowRelatedWindowType* return_value);
FSErrorCode FSDK_Rendition_SetFloatingWindowRelatedWindowType(FS_RENDITION_HANDLE rendition_handle, FSFloatingWindowRelatedWindowType window_type, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetFloatingWindowPosition(FS_RENDITION_HANDLE rendition_handle, FSPosition* return_value);
FSErrorCode FSDK_Rendition_SetFloatingWindowPosition(FS_RENDITION_HANDLE rendition_handle,  FSPosition position, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetFloatingWindowOffscreenEvent(FS_RENDITION_HANDLE rendition_handle, FSFloatingWindowOffscreenEvent* return_value);
FSErrorCode FSDK_Rendition_SetFloatingWindowOffscreenEvent(FS_RENDITION_HANDLE rendition_handle, FSFloatingWindowOffscreenEvent offscreen_event, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_HasFloatingWindowTitleBar(FS_RENDITION_HANDLE rendition_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Rendition_EnableFloatingWindowTitleBar(FS_RENDITION_HANDLE rendition_handle, FS_BOOL is_visible, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_HasFloatingWindowCloseButton(FS_RENDITION_HANDLE rendition_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Rendition_EnableFloatingWindowCloseButton(FS_RENDITION_HANDLE rendition_handle, FS_BOOL is_visible, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetFloatingWindowResizeType(FS_RENDITION_HANDLE rendition_handle, FSFloatingWindowResizeType* return_value);
FSErrorCode FSDK_Rendition_SetFloatingWindowResizeType(FS_RENDITION_HANDLE rendition_handle, FSFloatingWindowResizeType resize_type, FSMediaOptionType opt_type);
FSErrorCode FSDK_Rendition_GetFloatingWindowTitles(FS_RENDITION_HANDLE rendition_handle, FS_WSTR* return_wstringarray, FS_UINT32* return_array_length);
FSErrorCode FSDK_Rendition_SetFloatingWindowTitles(FS_RENDITION_HANDLE rendition_handle, const FS_WSTR* wstringarray, FS_UINT32 array_length_titles, FSMediaOptionType opt_type);
FSErrorCode FSDK_MediaPlayer_Create( FS_PDFDICTIONARY_HANDLE media_player_dict, FS_MEDIAPLAYER_HANDLE* mediaplayer_return_value);
FSErrorCode FSDK_MediaPlayer_Release(FS_MEDIAPLAYER_HANDLE mediaplayer_handle);
FSErrorCode FSDK_MediaPlayer_IsEmpty(FS_MEDIAPLAYER_HANDLE mediaplayer_handle, FS_BOOL* return_value);
FSErrorCode FSDK_MediaPlayer_GetDict(FS_MEDIAPLAYER_HANDLE mediaplayer_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_MediaPlayer_GetSoftwareURI(FS_MEDIAPLAYER_HANDLE mediaplayer_handle, FS_BSTR* return_value);
FSErrorCode FSDK_MediaPlayer_SetSoftwareURI(FS_MEDIAPLAYER_HANDLE mediaplayer_handle, const char* uri);
FSErrorCode FSDK_MediaPlayer_GetOSIdentifiers(FS_MEDIAPLAYER_HANDLE mediaplayer_handle, FS_BSTR* return_stringarray, FS_UINT32* return_array_length);
FSErrorCode FSDK_MediaPlayer_SetOSIdentifiers(FS_MEDIAPLAYER_HANDLE mediaplayer_handle, const FS_BSTR* stringarray, FS_UINT32 array_length_identifier_array);
#ifdef __cplusplus
}
#endif
#endif
