//
//  HWMSDKPrivateConfServiceShare.h
//  HWMSDKSDK
//
//  Automatically generated file. DO NOT MODIFY!!!
//

#import <Foundation/Foundation.h>
#import "HWMSDKCommonDefine.h"
#import "HWMSDKAllModelIndex.h"

NS_ASSUME_NONNULL_BEGIN


@protocol HWMSDKPrivateConfShareNotify <NSObject>

@optional
/// [en] [cn]共享停止通知
- (void)onShareStoppedNotify:(HWMSDKStopShareInfoModel *)stopShareInfo;
/// [en] [cn]错误通知
- (void)onDataShareErrorNotify:(BOOL)isSender errorCode:(HWMSDKERR)errorCode;
/// [en] [cn]标注状态通知
- (void)onShareAnnoStatusChange:(BOOL)isOpenAnnotation;
/// [en] [cn]新辅流标注状态通知
- (void)onAuxAnnoStatusChange:(NSUInteger)shareUserId isOpenAnnotation:(BOOL)isOpenAnnotation;
/// [en] [cn]正在共享通知
- (void)onDataSharingNotify:(HWMSDKScreenShareInfoModel *)sharingInfo;
/// [en] [cn]接收白板通知
- (void)onReceiveWhiteBoardNotify:(HWMSDKWhiteBoardInfoModel *)wbInfo;
/// [en] [cn]正在共享通知
- (void)onAuxDataSharingNotify:(HWMSDKScreenShareInfoListModel *)sharingInfoList;
/// [en] [cn]停止白板的通知
- (void)onStopWhiteBoardNotify:(BOOL)isSender;
/// [en] [cn]白板数据通知
- (void)onWhiteBoardRenderNotify;
/// [en] [cn] 数据共享失败通知
- (void)onRecvDataShareFailedNotify;
/// [en] [cn] 共享远程控制状态通知
- (void)onShareRemoteControlStatusNotify:(HWMSDKRemoteControlStatusModel *)remoteStatus;
/// [en] [cn] 数据会议成员名称变化
- (void)onShareMemberNameChangeNotify:(HWMSDKDataMemberInfoModel *)dataMemberInfo;
/// [en] [cn] 数据会议通知离会
- (void)onShareConfLeaveNotify:(NSUInteger)reason;
/// [en] [cn] 程序共享遮挡窗口状态通知
- (void)onShareConfAppSharingStateNotify:(NSUInteger)overlapWnd;
/// [en] [cn] 内存不足共享失败通知
- (void)onShareOutOfMemoryNotify;
/// [en] [cn] 加入共享结果通知
- (void)onJoinConfShareNotify:(HWMSDKERR)result reasonDesc:(NSString *)reasonDesc confHandle:(NSUInteger)confHandle isSupportShareStrategy:(BOOL)isSupportShareStrategy isAux:(BOOL)isAux;
/// [en] [cn] 上报重连的结果
- (void)onShareReconnectNotify:(HWMShareReconnectState)state;
/// [en] [cn] UI或SDK发起共享结果通知
- (void)onStartDataShareNotify:(HWMSDKERR)result reasonDesc:(NSString *)reasonDesc appShareResultInfo:(HWMSDKScreenShareInfoModel *)appShareResultInfo;
/// [en] [cn]UI或SDK发起白板结果通知
- (void)onStartWhiteBoardNotify:(HWMSDKERR)result reasonDesc:(NSString *)reasonDesc wbInfo:(HWMSDKWhiteBoardInfoModel *)wbInfo;
/// [en] [cn]通知UI消息
- (void)onShareMessageNotify:(HWMDataConfNotifyMessageType)messageType;
/// [en] [cn]通知UI标注动他背景能力
- (void)onAnnoDynamicBackgroundNotify:(BOOL)enableAnnoDynamicBackground;
/// [en] [cn]上报UI共享屏幕时接收方渲染失败错误码
- (void)onShareRenderScreenFailedNotify:(HWMSDKERR)result;
/// [en] [cn]开始动态标志通知
- (void)onStartAnnotationNotify:(HWMStartAnnotationResult)result role:(HWMStartAnnotationResultRole)role;
/// [en] [cn]开始动态标志通知
- (void)onAuxStartAnnotationNotify:(HWMStartAnnotationResult)result userId:(NSUInteger)userId;
/// [en]This class is about the notification of independent Annotation. [cn]独立标注事件通知
- (void)onIndependentAnnoNotify:(HWMIndependentAnnoStatus)status info:(HWMSDKIndependentAnnoInfoModel *)info;
/// [en] [cn]数据会议接收共享分辨率变更通知
- (void)onScreenSizeChangedNotify:(HWMSDKSizeInfoModel *)sizeInfo;
/// [en] Share clear and smooth mode change notify [cn]共享清晰且流畅模式变化通知
- (void)onShareClearAndSmoothModeChangeNotify:(BOOL)isClearAndSmoothMode;
/// [en] Share Audio Notification [cn] 共享音频结果通知.
- (void)onShareAudioNotify:(HWMSDKERR)result shareAudioState:(HWMShareAudioState)shareAudioState;
/// [en] [cn]接收共享第一帧通知
- (void)onRecvKeyFrameNotify:(NSUInteger)userId;

@end

@interface HWMSDKPrivateConfShareService : NSObject

+ (instancetype)shareInstance;
+ (void)releaseInstance;
- (void)addPrivateConfShareNotifyCallback:(id<HWMSDKPrivateConfShareNotify>)callback;
- (void)removePrivateConfShareNotifyCallback:(id<HWMSDKPrivateConfShareNotify>)callback;
- (BOOL)isDataInConf;

/// [en]This interface is used to start multi screen share [cn]pc发起多屏共享
- (HWMSDKERR)startMultiScreenShareWithShareHwnd:(NSUInteger)shareHwnd index:(NSUInteger)index shareAudio:(BOOL)shareAudio isQualityFirst:(BOOL)isQualityFirst;

- (HWMSDKERR)stopDataShare;

- (HWMSDKERR)setSharingAppHwndWithHandle:(NSUInteger)handle pAppWnd:(NSUInteger)pAppWnd action:(BOOL)action;

- (HWMSDKERR)startDataShareAnnotationWithUserId:(NSUInteger)userId;

- (HWMSDKERR)stopDataShareAnnotationWithUserId:(NSUInteger)userId;

- (HWMSDKERR)setShowAnnotatorName:(BOOL)bShow;

- (BOOL)isShowAnnotatorName;

- (BOOL)isExistAnnoDetsWithUserId:(NSUInteger)userId;

- (HWMSDKERR)startWhiteBoardWithWidth:(NSUInteger)width height:(NSUInteger)height isPrimaryMonitor:(BOOL)isPrimaryMonitor shareAudio:(BOOL)shareAudio isQualityFirst:(BOOL)isQualityFirst;

- (HWMSDKERR)stopDataWhiteBoard;

- (HWMSDKERR)setRemoteControlCapacity:(BOOL)hasCapacity;

- (HWMSDKERR)attachHwndWithUserId:(NSUInteger)userId renderHwnd:(NSUInteger)renderHwnd;

- (HWMSDKERR)detachHwndWithUserId:(NSUInteger)userId;

- (HWMSDKERR)setRenderViewSizeWithUserId:(NSUInteger)userId width:(NSInteger)width height:(NSInteger)height;

/// [en]This class is about set win prop. [cn]设置window属性 :disable
- (HWMSDKERR)inputWindowMsgWithUserId:(NSUInteger)userId type:(NSUInteger)type wparam:(NSUInteger)wparam lparam:(NSInteger)lparam;

- (HWMSDKERR)setShareRenderPaintPropWithUserId:(NSUInteger)userId isDrawOrigin:(BOOL)isDrawOrigin offsetX:(NSInteger)offsetX offsetY:(NSInteger)offsetY;

/// [en]This class is about getting share render paint prop. [cn]获取渲染时是否原始大小显示，偏移量 :disable :disable :disable
- (HWMSDKRenderPaintPropInfoModel *)getShareRenderPaintPropWithUserId:(NSUInteger)userId;

/// [en]This class is about getting sharer monitor PPI. [cn]获取远端设备PPI :disable
- (HWMSDKPPIInfoModel *)getSharerMonitorPPIWithUserId:(NSUInteger)userId;

- (BOOL)getAnnoDynamicBackGroundAbility;

/// 获取本远端缩放比 :disable :disable :disable
- (double)getShareViewFactorWithUserId:(NSUInteger)userId;

- (HWMSDKERR)reqRemoteControlWithDataUserId:(NSUInteger)dataUserId;

- (HWMSDKERR)grantRemoteControlWithDataUserId:(NSUInteger)dataUserId isGrant:(BOOL)isGrant;

- (HWMSDKERR)rejectRemoteControlWithDataUserId:(NSUInteger)dataUserId;

- (HWMSDKERR)revokeRemoteControlWithDataUserId:(NSUInteger)dataUserId;

- (void)heartBeat;

- (HWMSDKERR)setTransparentWindowWithHwnd:(NSUInteger)hwnd isTransparent:(BOOL)isTransparent;

- (HWMSDKERR)setShareQualityStrategy:(BOOL)isQualityFirst;

- (HWMSDKERR)setShareAudio:(BOOL)isOpen;

- (HWMSDKERR)setBGMDetectSensitivityWithLevel:(NSUInteger)level;

- (HWMSDKERR)startBGMDetect;

- (HWMSDKERR)stopBGMDetect;

/// [en]This class is about set pen info. [cn]设置画笔
- (HWMSDKERR)setPenWithPenInfo:(HWMSDKPenInfoModel *)penInfo;

/// [en]This class is about set brush info. [cn]设置笔刷
- (HWMSDKERR)setBrushWithBrushInfo:(HWMSDKBrushInfoModel *)brushInfo;

/// [en]This class is about start draw annotation. [cn]进行标注划线
- (HWMSDKERR)drawAnnotationStartWithUserId:(NSUInteger)userId point:(HWMSDKPointInfoModel *)point;

/// [en]This class is about update draw annotation. [cn]更新标注
- (HWMSDKERR)drawAnnotationUpdateWithUserId:(NSUInteger)userId point:(HWMSDKPointInfoModel *)point;

/// [en]This class is about finish draw annotation. [cn]完成标注
- (HWMSDKERR)drawAnnotationDoneWithUserId:(NSUInteger)userId;

/// [en]This interface is used to set annot follow ppt screening cap. [cn]设置标注跟随PPT放映能力 :disable
- (HWMSDKERR)setAnnoFollowPptScreening:(BOOL)enable;

/// [en]This interface is used to delete appointed page of appointed document. [cn]删除指定文档中的指定页面 :disable
- (HWMSDKERR)deletePageWithUserId:(NSUInteger)userId ciid:(HWMComponentIID)ciid docID:(NSUInteger)docID pageId:(NSUInteger)pageId;

/// [en]This interface is used to set the current page. [cn]设置当前显示的页面 :disable
- (HWMSDKERR)setCurrentPageWithUserId:(NSUInteger)userId ciid:(HWMComponentIID)ciid docID:(NSUInteger)docID pageId:(NSUInteger)pageId sync:(BOOL)sync;

/// [en]This class is about finish draw annotation. [cn]完成标注
- (HWMSDKERR)drawAnnotationDoneNewWithUserId:(NSUInteger)userId bCancel:(BOOL)bCancel;

/// [en]This class is about test rect annotation. [cn]测试矩形点阵 :disable
- (HWMSDKAnnotationSetModel *)hitTestRectAnnotationWithUserId:(NSUInteger)userId hitTestRect:(HWMSDKHitTestRectParamModel *)hitTestRect;

/// [en]This class is about test line annotation. [cn]测试线条点阵 :disable
- (HWMSDKAnnotationSetModel *)hitTestLineAnnotationWithUserId:(NSUInteger)userId hitTestLine:(HWMSDKHitTestLineParamModel *)hitTestLine;

/// [en]This class is about erase annotation. [cn]擦除标注 :disable
- (HWMSDKERR)eraseAnnotationWithAnnotationIdSet:(HWMSDKAnnotationSetModel *)annotationIdSet;

- (HWMSDKERR)savePicWithUserId:(NSUInteger)userId fileName:(NSString *)fileName;

/// [en]This class is about erase area annotation. [cn]擦除指定区域内标注 :disable
- (HWMSDKERR)eraseAreaAnnotationWithUserId:(NSUInteger)userId param:(HWMSDKEraseAreaAnnoParamModel *)param;

/// [en]This class is about erase annotation. [cn]擦除标注 :disable
- (HWMSDKERR)saveAnnoPicWithWaterMark:(HWMSDKAnnoWaterMarkItemModel *)waterMark;

/// [en]This class is about clear annotation. [cn]清除标注
- (HWMSDKERR)clearAnnotationWithUserId:(NSUInteger)userId;

/// [en]This class is about set whiteboard canvas size. [cn]设置白板画布大小 :disable
- (HWMSDKERR)setWhiteboardCanvasSize:(HWMSDKSizeInfoModel *)size;

/// [en]This class is about set whiteboard origin. [cn]设置白板原点 :disable
- (HWMSDKERR)setWhiteboardOriginWithSize:(HWMSDKSizeInfoModel *)size;

/// [en]This class is about set whiteboard page info. [cn]设置白板页面信息 :disable
- (HWMSDKPageInfoModel *)getWhiteboardPageInfo;

/// [en]This class is about lock whiteboard surface. [cn]锁定白板渲染缓存区 :disable
- (HWMSDKWhiteboardSurfaceInfoModel *)lockWhiteboardSurface;

- (HWMSDKERR)unlockWhiteboardSurface;

/// [en]This class is about getting share conf member list. [cn]获取数据会议成员列表 :disable
- (NSArray <HWMSDKDataMemberInfoModel *> *)getDataMemberList;

/// 获取数据会议与会者人数 :disable
- (NSUInteger)getDataMemberCount;

/// [en]This class is about data share window [cn]数据会议共享界面观看情况
- (HWMSDKERR)setDataShareWatchParam:(BOOL)isWatching resolutionLevel:(HWMGeneralWatchResolutionLevel)resolutionLevel;

/// [en] [cn]开启独立标注
- (HWMSDKERR)startIndependentAnnoWithStartAnnoInfo:(HWMSDKIndependentStartAnnoInfoModel *)startAnnoInfo;

/// [en]This class is stop independent annotation. [cn]停止标注
- (HWMSDKERR)stopIndependentAnno;

/// [en]This class is about attach independent Wnd. [cn]附加窗口
- (HWMSDKERR)attachIndependentAnnoWndWithShareHwnd:(NSUInteger)shareHwnd;

/// [en]This function is about. [cn]设置屏幕共享或应用程序共享相关参数
- (HWMSDKERR)tupConfAsSetparamWithHandle:(NSUInteger)handle param:(HWMSDKScreenDataModel *)param;

/// [en]This function is about annotation rendering. [cn]标注窗口渲染
- (HWMSDKERR)paintAnnotation;

/// [en]This function is used to force refresh frame in watching side during sharing. [cn]共享时，在观看端强制刷新一帧
- (HWMSDKERR)flushScreendataWithUserId:(NSUInteger)userId;

/// [en]This function is used to set canvas background color of document sharing module. [cn]设置文档共享模块画布的背景色
- (HWMSDKERR)setBgcolorWithCiid:(HWMComponentIID)ciid bgColor:(NSUInteger)bgColor;

/// [en]This function is used to set canvas background color of white board sharing module. [cn]设置白板共享模块当前页的背景色
- (HWMSDKERR)setPageBgcolorWithBgColor:(HWMSDKBgColorModel *)bgColor;

/// [en]This function is used to set zoom of document. [cn]设置文档的缩放
- (HWMSDKERR)setZoomWithDsZoom:(HWMSDKDsZoomModel *)dsZoom;

/// [en]This function is about. [cn]文档的单页内容保存成JPEG图片
- (HWMSDKERR)tupConfDsSaveasPictureexWithHandle:(NSUInteger)handle ciid:(HWMComponentIID)ciid docid:(NSUInteger)docid pageid:(NSUInteger)pageid filename:(NSString *)filename waterMark:(HWMSDKAuxAnnoWaterMarkItemModel *)waterMark;

/// [en]This function is about. [cn]屏幕共享中，观看端加入某个数据通道
- (HWMSDKERR)tupConfAsAttachWithHandle:(NSUInteger)handle userId:(NSUInteger)userId channel_type:(NSInteger)channel_type hwnd:(NSUInteger)hwnd render_mode:(HWMRenderMode)render_mode;

/// [en]This function is about set share strategy. [cn]设置数据共享策略
- (HWMSDKERR)setShareStrategy:(HWMShareStrategy)shareStrategy;

/// [en]This function is about share data render frame mode. [cn]设置数据共享渲染模式
- (HWMSDKERR)setShareRenderFrameMode:(HWMShareRenderFrameMode)shareRenderFrameMode;

/// [en]This function is used to set whether filter share window. [cn]设置数据共享是否过滤窗口
- (HWMSDKERR)setIsFilterShareWnd:(BOOL)bFilterShareWnd;

/// [en]This function is used to get whether filter share window. [cn]读取数据共享是否过滤窗口
- (BOOL)isFilterShareWnd;

/// [en]This function is used to get whether clear and smooth mode. [cn]是否高清流畅模式
- (BOOL)isClearAndSmoothMode;

/// [en]This function is used to update share cursor capture status. [cn]更新鼠标采集状态
- (HWMSDKERR)updateAnnotCursorCaptureStatus:(BOOL)bPauseCursorCapture;

@end



NS_ASSUME_NONNULL_END

