WhiteDisplayer.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. //
  2. // WhiteDisplayer.h
  3. // WhiteSDK
  4. //
  5. // Created by yleaf on 2019/7/1.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import "WhiteCameraConfig.h"
  9. #import "WhiteRectangleConfig.h"
  10. #import "WhiteCameraBound.h"
  11. #import "WhitePanEvent.h"
  12. #import "WhiteFontFace.h"
  13. typedef NS_ENUM(NSInteger, WhiteScenePathType) {
  14. /** 路径对应的内容为空。 */
  15. WhiteScenePathTypeEmpty,
  16. /** 路径对应的内容是一个白板页面。 */
  17. WhiteScenePathTypePage,
  18. /** 路径对应的内容是一个目录,该目录下存在目录或者多个页面。 */
  19. WhiteScenePathTypeDir
  20. };
  21. NS_ASSUME_NONNULL_BEGIN
  22. @class WhiteScene;
  23. /** 该类为白板房间的基类。 */
  24. @interface WhiteDisplayer : NSObject
  25. /**
  26. @deprecated 该方法已弃用,修改白板背景色,现在可以直接设置 WhiteboardView backgroundColor 属性即可。
  27. */
  28. @property (nonatomic, strong) UIColor *backgroundColor __deprecated_msg("use WhiteboardView's backgroundColor property");
  29. #pragma mark - iframe
  30. /**
  31. * 向 iframe 插件发送的关键信息。
  32. * @param payload 关键信息。
  33. */
  34. - (void)postIframeMessage:(id)payload;
  35. #pragma mark - 页面(场景)管理 API
  36. /**
  37. 根据scenePath查询指定场景
  38. @param scenePath 场景路径
  39. @param result 返回指定场景的查询结果,详见 [WhiteScene](WhiteScene)
  40. */
  41. - (void)getSceneFromScenePath:(NSString *)scenePath result:(void (^) (WhiteScene* _Nullable scene))result;
  42. /**
  43. 查询场景路径类型。
  44. 你可以在该方法中指定想要查询的场景路径,SDK 会返回该路径对应的场景类型。
  45. @param pathOrDir 场景路径类型。
  46. @param result 回调。返回指定场景的路径类型,详见 [WhiteScenePathType](WhiteScenePathType)。
  47. */
  48. - (void)getScenePathType:(NSString *)pathOrDir result:(void (^) (WhiteScenePathType pathType))result;
  49. /**
  50. * 获取房间内所有场景的信息,返回格式:
  51. * 场景目录路径: 对应场景目录下,所有的页面数组
  52. * key 为 scenePath,value 为 WhiteScene 数组。
  53. * 只存在 /init 的房间,返回结构为:
  54. * {"/": @[init WhiteScene]}
  55. @param result 回调。返回当前房间内所有场景的信息。
  56. */
  57. - (void)getEntireScenes:(void (^) (NSDictionary<NSString *, NSArray<WhiteScene *>*> *dict))result;
  58. #pragma mark - 自定义事件
  59. /** 注册自定义事件监听。
  60. 成功注册后,你可以接收到对应的自定义事件通知。
  61. **Note:** 对于同名的自定义事件,SDK 仅支持触发一个回调。
  62. @param eventName 想要监听的自定义事件名称。
  63. */
  64. - (void)addMagixEventListener:(NSString *)eventName;
  65. /** 注册高频自定义事件监听。
  66. 成功注册后,你可以接收到对应的自定义事件通知。
  67. **Note:** 对于同名的自定义事件,SDK 仅支持触发一个回调。
  68. @param eventName 想要监听的自定义事件名称。
  69. @param millseconds SDK 触发回调的频率,单位为毫秒。该参数最小值为 500 ms,如果设置为低于该值会被重置为 500 ms。
  70. */
  71. - (void)addHighFrequencyEventListener:(NSString *)eventName fireInterval:(NSUInteger)millseconds;
  72. /** 移除自定义事件监听。
  73. @param eventName 想要移除监听的自定义事件名称。
  74. */
  75. - (void)removeMagixEventListener:(NSString *)eventName;
  76. #pragma mark - 视野坐标类 API
  77. /** 刷新白板的界面。
  78. 当 `WhiteboardView` 出现改变时,需要调用该方法刷新白板的界面。
  79. 目前该方法 SDK 会主动调用,不再需要手动调用
  80. */
  81. - (void)refreshViewSize;
  82. /** 转换白板上点的坐标。
  83. 该方法可以将 iOS 内部坐标系中的坐标转换为世界坐标系(以白板初始化时的中点为原点,横轴为 X 轴,正方向向右,纵轴为 Y 轴,正方向向下)坐标。
  84. @param point 点在 iOS 坐标系中的坐标。
  85. @param result 回调。返回点在世界坐标系上的坐标,详见 [WhitePanEvent](WhitePanEvent)。
  86. */
  87. - (void)convertToPointInWorld:(WhitePanEvent *)point result:(void (^) (WhitePanEvent *convertPoint))result;
  88. /**
  89. 设置视角边界。
  90. @param cameraBound 视角边界,详见 [WhiteCameraBound](WhiteCameraBound)。
  91. */
  92. - (void)setCameraBound:(WhiteCameraBound *)cameraBound;
  93. /**
  94. 调整视角。
  95. 调用该方法后,SDK 会根据传入的参数调整视角。
  96. @param camera 视角的参数配置,详见 [WhiteCameraConfig](WhiteCameraConfig)。
  97. */
  98. - (void)moveCamera:(WhiteCameraConfig *)camera;
  99. /**
  100. 调整视角,以保证完整显示视觉矩形。
  101. @param rectangle 视觉矩形的参数设置,详见 [WhiteRectangleConfig](WhiteRectangleConfig)。
  102. */
  103. - (void)moveCameraToContainer:(WhiteRectangleConfig *)rectangle;
  104. /**
  105. 调整视角以保证完整显示 PPT 的内容。
  106. 该操作为一次性操作。
  107. @since 2.5.1
  108. **Note:**
  109. - 如果当前用户已经调用 [setViewMode](setViewMode) 方法并设置为 `follower`,调用该方法可能造成当前用户与主播内容不完全一致。
  110. - 该方法为一次性操作。如果没有插入 PPT,调用该方法不生效。
  111. @param mode 视角调整时的动画模式,详见 [WhiteAnimationMode](WhiteAnimationMode)。
  112. */
  113. - (void)scalePptToFit:(WhiteAnimationMode)mode;
  114. /**
  115. 调整视角以保证完整显示 H5 课件。
  116. 该方法为一次性操作。如果没有插入 H5 课件,调用该方法不生效。
  117. @since 2.12.5
  118. **Note:** 如果当前用户已经调用 [setViewMode](setViewMode) 方法并设置为 `follower`,调用该方法可能造成当前用户与主播内容不完全一致。
  119. */
  120. - (void)scaleIframeToFit;
  121. /**
  122. 禁止/允许用户调整视角。
  123. @since 2.11.0
  124. @param disable 是否禁止用户调整视角:
  125. - `YES`: 禁止用户调整视角。
  126. - `NO`: (默认) 允许用户调整视角。
  127. */
  128. - (void)disableCameraTransform:(BOOL)disable;
  129. #pragma mark - 截图
  130. /**
  131. 获取特定场景的预览图。
  132. **Note:**
  133. - 截取用户切换时,看到的场景内容,不是场景内全部内容。
  134. - 图片支持:只有当图片服务器支持跨域,才可以显示在截图中。(请真机中运行)
  135. @param scenePath 场景路径。
  136. @param completionHandler 返回指定场景的预览图。
  137. */
  138. - (void)getScenePreviewImage:(NSString *)scenePath completion:(void (^)(UIImage * _Nullable image))completionHandler;
  139. /**
  140. 获取特定场景的截图。
  141. **Note:** 只有当前图片服务器支持跨区域,才能显示截图。
  142. @param scenePath 场景路径。
  143. @param completionHandler 你可以通过该接口获取 `getSceneSnapshotImage` 方法的调用结果:
  144. */
  145. - (void)getSceneSnapshotImage:(NSString *)scenePath completion:(void (^)(UIImage * _Nullable image))completionHandler;
  146. /**
  147. 获取当前的 WindowManager
  148. @param result 获取的attributes回调
  149. */
  150. - (void)getWindowManagerAttributesWithResult:(void(^)(NSDictionary * attributes))result;
  151. @end
  152. NS_ASSUME_NONNULL_END