WhiteCameraBound.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // CameraBound.h
  3. // WhiteSDK
  4. //
  5. // Created by yleaf on 2019/9/5.
  6. //
  7. #import "WhiteObject.h"
  8. NS_ASSUME_NONNULL_BEGIN
  9. #pragma mark - WhiteContentScaleMode
  10. /** 白板视角边界的缩放模式和缩放比例。 */
  11. typedef NS_ENUM(NSUInteger, WhiteContentMode) {
  12. /** (默认)基于设置的 `zoomScale` 缩放视角边界。 */
  13. WhiteContentModeScale,
  14. /** 等比例缩放视角边界,使视角边界的长边正好顶住与其垂直的屏幕的两边,以保证在屏幕上完整展示视角边界。 */
  15. WhiteContentModeAspectFit,
  16. /** 等比例缩放视角边界,使视角边界的长边正好顶住与其垂直的屏幕的两边,以保证在屏幕上完整展示视角边界;在此基础上,再将视角边界缩放指定的倍数。 */
  17. WhiteContentModeAspectFitScale,
  18. /** 等比例缩放视角边界,使视角边界的长边正好顶住与其垂直的屏幕的两边;在此基础上,在视角边界的四周填充指定的空白空间。 */
  19. WhiteContentModeAspectFitSpace,
  20. /** 等比例缩放视角边界,使视角边界的短边正好顶住与其垂直的屏幕的两边,以保证视角边界铺满屏幕。 */
  21. WhiteContentModeAspectFill,
  22. /** 等比例缩放视角边界,使视角边界的短边正好顶住与其垂直的屏幕的两边,以保证视角边界铺满屏幕;在此基础上再将视角边界缩放指定的倍数。 */
  23. WhiteContentModeAspectFillScale,
  24. };
  25. #pragma mark - WhiteContentMode
  26. /** 设置白板视角边界的缩放模式和缩放比例。 */
  27. @interface WhiteContentModeConfig : WhiteObject
  28. - (instancetype)init NS_UNAVAILABLE;
  29. /** 初始化一个 `WhiteContentMode` 对象。
  30. @param scaleMode 视角边界的缩放模式,缩放比例默认值为 1.0,即保持视角边界的原始大小。详见 [WhiteContentMode](WhiteContentMode)。
  31. @return 初始化的 `WhiteContentMode` 对象。
  32. */
  33. - (instancetype)initWithContentMode:(WhiteContentMode)scaleMode;
  34. /** 视角边界的缩放模式和缩放比例。详见 [WhiteContentMode](WhiteContentMode)。 */
  35. @property (nonatomic, assign, readonly) WhiteContentMode contentMode;
  36. /** 视角边界的缩放比例。只有当 scaleMode 的值为 `WhiteContentModeScale`、`WhiteContentModeAspectFitScale`、`WhiteContentModeAspectFillScale` 时设置生效。 */
  37. @property (nonatomic, assign) CGFloat scale;
  38. /** 视角边界的缩放模式。只有当 scaleMode 为 `WhiteContentModeAspectFitSpace` 时设置生效。 */
  39. @property (nonatomic, assign) CGFloat space;
  40. @end
  41. #pragma mark - WhiteCameraBound
  42. /** 白板视角边界。
  43. 视角边界指白板场景内,用户可以移动视角的范围。当视角超出视角边界时,视角会被拉回。
  44. */
  45. @interface WhiteCameraBound : WhiteObject
  46. /**
  47. 指定白板视角边界的中心点并初始化 `WhiteCameraBound` 对象。
  48. @param visionCenter 视角边界的中心点在世界坐标系(以白板初始化时的中心点为原点的坐标系)中的坐标。
  49. @param minConfig 视角边界的最小缩放设置。
  50. @param maxConfig 视角边界的最小缩放设置。
  51. @return 初始化的 `WhiteCameraBound` 对象。
  52. */
  53. - (instancetype)initWithCenter:(CGPoint)visionCenter minContent:(WhiteContentModeConfig *)minConfig maxContent:(WhiteContentModeConfig *)maxConfig;
  54. /**
  55. 指定白板视角边界的框架并初始化 `WhiteCameraBound` 对象。
  56. @param visionFrame 视角边界的框架(宽和高)。
  57. @param minConfig 视角边界框架的最小值(Frame * miniScale)。
  58. @param maxConfig 视角边界框架的最大值(Frame * maxScale)。
  59. @return 初始化的 `WhiteCameraBound` 对象。
  60. */
  61. - (instancetype)initWithFrame:(CGRect)visionFrame minContent:(WhiteContentModeConfig *)minConfig maxContent:(WhiteContentModeConfig *)maxConfig;
  62. /**
  63. 设置视角边界的默认最小缩放比例。
  64. @param miniScale 视角边界的最小缩放比例。
  65. @param maxScale 视角边界的最大缩放比例。
  66. */
  67. + (instancetype)defaultMinContentModeScale:(CGFloat )miniScale maxContentModeScale:(CGFloat )maxScale;
  68. /** 视角边界的中心点在世界坐标系(以白板初始化时的中心点为原点的坐标系)中的 X 轴坐标。不填则默认为 0。 */
  69. @property (nonatomic, nullable, strong) NSNumber *centerX;
  70. /** 视角边界的中心点在世界坐标系(以白板初始化时的中心点为原点的坐标系)中的 Y 轴坐标。不填则默认为 0。*/
  71. @property (nonatomic, nullable, strong) NSNumber *centerY;
  72. /** 视角边界的宽度,单位为像素。如果不填,则表示无限制。 */
  73. @property (nonatomic, nullable, strong) NSNumber *width;
  74. /** 视角边界的高度,单位为像素。如果不填,则表示无限制。 */
  75. @property (nonatomic, nullable, strong) NSNumber *height;
  76. /** 视角边界的最大缩放比例。最大值无上限。详见 [WhiteContentModeConfig](WhiteContentModeConfig)。 */
  77. @property (nonatomic, nullable, strong) WhiteContentModeConfig *maxContentMode;
  78. /** 视角边界的最小缩放比例。最小值为 0。详见 [WhiteContentModeConfig](WhiteContentModeConfig)。*/
  79. @property (nonatomic, nullable, strong) WhiteContentModeConfig *minContentMode;
  80. @end
  81. NS_ASSUME_NONNULL_END