WhiteDisplayer.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  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. 查询场景路径类型。
  38. 你可以在该方法中指定想要查询的场景路径,SDK 会返回该路径对应的场景类型。
  39. @param pathOrDir 场景路径类型。
  40. @param result 回调。返回指定场景的路径类型,详见 [WhiteScenePathType](WhiteScenePathType)。
  41. */
  42. - (void)getScenePathType:(NSString *)pathOrDir result:(void (^) (WhiteScenePathType pathType))result;
  43. /**
  44. * 获取房间内所有场景的信息,返回格式:
  45. * 场景目录路径: 对应场景目录下,所有的页面数组
  46. * key 为 scenePath,value 为 WhiteScene 数组。
  47. * 只存在 /init 的房间,返回结构为:
  48. * {"/": @[init WhiteScene]}
  49. @param result 回调。返回当前房间内所有场景的信息。
  50. */
  51. - (void)getEntireScenes:(void (^) (NSDictionary<NSString *, NSArray<WhiteScene *>*> *dict))result;
  52. #pragma mark - 自定义事件
  53. /** 注册自定义事件监听。
  54. 成功注册后,你可以接收到对应的自定义事件通知。
  55. **Note:** 对于同名的自定义事件,SDK 仅支持触发一个回调。
  56. @param eventName 想要监听的自定义事件名称。
  57. */
  58. - (void)addMagixEventListener:(NSString *)eventName;
  59. /** 注册高频自定义事件监听。
  60. 成功注册后,你可以接收到对应的自定义事件通知。
  61. **Note:** 对于同名的自定义事件,SDK 仅支持触发一个回调。
  62. @param eventName 想要监听的自定义事件名称。
  63. @param millseconds SDK 触发回调的频率,单位为毫秒。该参数最小值为 500 ms,如果设置为低于该值会被重置为 500 ms。
  64. */
  65. - (void)addHighFrequencyEventListener:(NSString *)eventName fireInterval:(NSUInteger)millseconds;
  66. /** 移除自定义事件监听。
  67. @param eventName 想要移除监听的自定义事件名称。
  68. */
  69. - (void)removeMagixEventListener:(NSString *)eventName;
  70. #pragma mark - 视野坐标类 API
  71. /** 刷新白板的界面。
  72. 当 `WhiteboardView` 出现改变时,需要调用该方法刷新白板的界面。
  73. 目前该方法 SDK 会主动调用,不再需要手动调用
  74. */
  75. - (void)refreshViewSize;
  76. /** 转换白板上点的坐标。
  77. 该方法可以将 iOS 内部坐标系中的坐标转换为世界坐标系(以白板初始化时的中点为原点,横轴为 X 轴,正方向向右,纵轴为 Y 轴,正方向向下)坐标。
  78. @param point 点在 iOS 坐标系中的坐标。
  79. @param result 回调。返回点在世界坐标系上的坐标,详见 [WhitePanEvent](WhitePanEvent)。
  80. */
  81. - (void)convertToPointInWorld:(WhitePanEvent *)point result:(void (^) (WhitePanEvent *convertPoint))result;
  82. /**
  83. 设置视角边界。
  84. @param cameraBound 视角边界,详见 [WhiteCameraBound](WhiteCameraBound)。
  85. */
  86. - (void)setCameraBound:(WhiteCameraBound *)cameraBound;
  87. /**
  88. 调整视角。
  89. 调用该方法后,SDK 会根据传入的参数调整视角。
  90. @param camera 视角的参数配置,详见 [WhiteCameraConfig](WhiteCameraConfig)。
  91. */
  92. - (void)moveCamera:(WhiteCameraConfig *)camera;
  93. /**
  94. 调整视角,以保证完整显示视觉矩形。
  95. @param rectangle 视觉矩形的参数设置,详见 [WhiteRectangleConfig](WhiteRectangleConfig)。
  96. */
  97. - (void)moveCameraToContainer:(WhiteRectangleConfig *)rectangle;
  98. /**
  99. 调整视角以保证完整显示 PPT 的内容。
  100. 该操作为一次性操作。
  101. @since 2.5.1
  102. **Note:**
  103. - 如果当前用户已经调用 [setViewMode](setViewMode) 方法并设置为 `follower`,调用该方法可能造成当前用户与主播内容不完全一致。
  104. - 该方法为一次性操作。如果没有插入 PPT,调用该方法不生效。
  105. @param mode 视角调整时的动画模式,详见 [WhiteAnimationMode](WhiteAnimationMode)。
  106. */
  107. - (void)scalePptToFit:(WhiteAnimationMode)mode;
  108. /**
  109. 调整视角以保证完整显示 H5 课件。
  110. 该方法为一次性操作。如果没有插入 H5 课件,调用该方法不生效。
  111. @since 2.12.5
  112. **Note:** 如果当前用户已经调用 [setViewMode](setViewMode) 方法并设置为 `follower`,调用该方法可能造成当前用户与主播内容不完全一致。
  113. */
  114. - (void)scaleIframeToFit;
  115. /**
  116. 禁止/允许用户调整视角。
  117. @since 2.11.0
  118. @param disable 是否禁止用户调整视角:
  119. - `YES`: 禁止用户调整视角。
  120. - `NO`: (默认) 允许用户调整视角。
  121. */
  122. - (void)disableCameraTransform:(BOOL)disable;
  123. #pragma mark - 截图
  124. /**
  125. 获取特定场景的预览图。
  126. **Note:**
  127. - 截取用户切换时,看到的场景内容,不是场景内全部内容。
  128. - 图片支持:只有当图片服务器支持跨域,才可以显示在截图中。(请真机中运行)
  129. @param scenePath 场景路径。
  130. @param completionHandler 返回指定场景的预览图。
  131. */
  132. - (void)getScenePreviewImage:(NSString *)scenePath completion:(void (^)(UIImage * _Nullable image))completionHandler;
  133. /**
  134. 获取特定场景的截图。
  135. **Note:** 只有当前图片服务器支持跨区域,才能显示截图。
  136. @param scenePath 场景路径。
  137. @param completionHandler 你可以通过该接口获取 `getSceneSnapshotImage` 方法的调用结果:
  138. */
  139. - (void)getSceneSnapshotImage:(NSString *)scenePath completion:(void (^)(UIImage * _Nullable image))completionHandler;
  140. @end
  141. NS_ASSUME_NONNULL_END