UMSocialWarterMarkConfig.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. //
  2. // UMSocialWarterMarkConfig.h
  3. // testWatermarkImage
  4. //
  5. // Created by 张军华 on 16/12/23.
  6. // Copyright © 2016年 张军华. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. #import <CoreGraphics/CoreGraphics.h>
  11. @class UMSocialStringWarterMarkConfig;
  12. @class UMSocialImageWarterMarkConfig;
  13. typedef NS_ENUM(NSInteger, UMSocialWarterMarkPositon) {
  14. UMSocialWarterMarkPositonNone = 0,
  15. /************************************************************************
  16. 水印字符串的位置,目前并没有用--start
  17. *************************************************************************/
  18. UMSocialStringWarterMarkTopLeft = (1 << 0),
  19. UMSocialStringWarterMarkTopRight = (1 << 1),
  20. UMSocialStringWarterMarkBottomLeft = (1 << 2),
  21. UMSocialStringWarterMarkBottomRight = (1 << 3),
  22. /************************************************************************
  23. 水印字符串的位置,目前并没有用--end
  24. *************************************************************************/
  25. //水印图片的位置
  26. UMSocialImageWarterMarkTopLeft = (1 << 4),
  27. UMSocialImageWarterMarkTopRight = (1 << 5),
  28. UMSocialImageWarterMarkBottomLeft = (1 << 6),
  29. UMSocialImageWarterMarkBottomRight = (1 << 7),
  30. /************************************************************************
  31. 水印字符串和水印图片的相对位置,目前并没有用(如果图片和字符串都在同一个位置,就需要设置相对位置)--start
  32. *************************************************************************/
  33. UMSocialImageWarterMarkForwardStringWarterMark = (1 << 8), //图片在字符串前面
  34. UMSocialStringWarterMarkForwardImageWarterMark = (1 << 9),//字符串在图片前面
  35. UMSocialImageWarterMarkAboveStringWarterMark = (1 << 10),//图片在字符串上面
  36. UMSocialStringWarterMarkAboveImageWarterMark = (1 << 11),//字符串在图片上面
  37. /************************************************************************
  38. 水印字符串和水印图片的相对位置,目前并没有用(如果图片和字符串都在同一个位置,就需要设置相对位置)--end
  39. *************************************************************************/
  40. };
  41. typedef NS_OPTIONS(NSInteger, UMSocialStringAndImageWarterMarkPositon) {
  42. UMSocialStringAndImageWarterMarkPositonNone = 0,
  43. UMSocialOnlyImageWarterMarkTopLeft = UMSocialImageWarterMarkTopLeft,//水印图片左上
  44. UMSocialOnlyImageWarterMarkTopRight = UMSocialImageWarterMarkTopRight,//水印图片右上
  45. UMSocialOnlyImageWarterMarkBottomLeft = UMSocialImageWarterMarkBottomLeft,//水印图片左下
  46. UMSocialOnlyImageWarterMarkBottomRight = UMSocialImageWarterMarkBottomRight,//水印图片右下
  47. /************************************************************************
  48. 以下的枚举变量,目前并没有用--start
  49. *************************************************************************/
  50. UMSocialStringWarterMarkTopLeftAndImageWarterMarkTopLeft = (UMSocialStringWarterMarkTopLeft | UMSocialImageWarterMarkTopLeft),//水印字符串左上,水印图片左上
  51. UMSocialStringWarterMarkTopLeftAndImageWarterMarkTopRight = (UMSocialStringWarterMarkTopLeft | UMSocialImageWarterMarkTopRight),//水印字符串左上,水印图片右上
  52. UMSocialStringWarterMarkTopLeftAndImageWarterMarkBottomLeft = (UMSocialStringWarterMarkTopLeft | UMSocialImageWarterMarkBottomLeft),//水印字符串左上,水印图片左下
  53. UMSocialStringWarterMarkTopLeftAndImageWarterMarkBottomRight = (UMSocialStringWarterMarkTopLeft | UMSocialImageWarterMarkBottomRight),//水印字符串左上,水印图片右下
  54. UMSocialStringWarterMarkTopRightAndImageWarterMarkTopLeft = (UMSocialStringWarterMarkTopRight | UMSocialImageWarterMarkTopLeft),//水印字符串右上,水印图片左上
  55. UMSocialStringWarterMarkTopRightAndImageWarterMarkTopRight = (UMSocialStringWarterMarkTopRight | UMSocialImageWarterMarkTopRight),//水印字符串右上,水印图片右上
  56. UMSocialStringWarterMarkTopRightAndImageWarterMarkBottomLeft = (UMSocialStringWarterMarkTopRight | UMSocialImageWarterMarkBottomLeft),//水印字符串右上,水印图片左下
  57. UMSocialStringWarterMarkTopRightAndImageWarterMarkBottomRight = (UMSocialStringWarterMarkTopRight | UMSocialImageWarterMarkBottomRight),//水印字符串右上,水印图片右下
  58. UMSocialStringWarterMarkBottomLeftAndImageWarterMarkTopLeft = (UMSocialStringWarterMarkBottomLeft | UMSocialImageWarterMarkTopLeft),//水印字符串左下,水印图片左上
  59. UMSocialStringWarterMarkBottomLeftAndImageWarterMarkTopRight = (UMSocialStringWarterMarkBottomLeft | UMSocialImageWarterMarkTopRight),//水印字符串左下,水印图片右上
  60. UMSocialStringWarterMarkBottomLeftAndImageWarterMarkBottomLeft = (UMSocialStringWarterMarkBottomLeft | UMSocialImageWarterMarkBottomLeft),//水印字符串左下,水印图片左下
  61. UMSocialStringWarterMarkBottomLeftAndImageWarterMarkBottomRight = (UMSocialStringWarterMarkBottomLeft | UMSocialImageWarterMarkBottomRight),//水印字符串左下,水印图片右下
  62. UMSocialStringWarterMarkBottomRightAndImageWarterMarkTopLeft = (UMSocialStringWarterMarkBottomRight | UMSocialImageWarterMarkTopLeft),//水印字符串右下,水印图片左上
  63. UMSocialStringWarterMarkBottomRightAndImageWarterMarkTopRight = (UMSocialStringWarterMarkBottomRight | UMSocialImageWarterMarkTopRight),//水印字符串右下,水印图片右上
  64. UMSocialStringWarterMarkBottomRightAndImageWarterMarkBottomLeft = (UMSocialStringWarterMarkBottomRight | UMSocialImageWarterMarkBottomLeft),//水印字符串右下,水印图片左下
  65. UMSocialStringWarterMarkBottomRightAndImageWarterMarkBottomRight = (UMSocialStringWarterMarkBottomRight | UMSocialImageWarterMarkBottomRight),//水印字符串右下,水印图片右下
  66. /************************************************************************
  67. 以下的枚举变量,目前并没有用---end
  68. *************************************************************************/
  69. };
  70. extern UMSocialWarterMarkPositon getStringWarterMarkPostion(UMSocialStringAndImageWarterMarkPositon stringAndImageWarterMarkPositon);
  71. extern UMSocialWarterMarkPositon getImageWarterMarkPostion(UMSocialStringAndImageWarterMarkPositon stringAndImageWarterMarkPositon);
  72. extern UMSocialWarterMarkPositon getRelatedWarterMarkPostion(UMSocialStringAndImageWarterMarkPositon stringAndImageWarterMarkPositon);
  73. /**
  74. * 水印配置类
  75. * 用户可以设置水印的配置类,目前只是提供图片水印
  76. *
  77. * method1:
  78. * 用户可以通过默认的配置类来配置水印
  79. * 代码如下:
  80. UMSocialWarterMarkConfig* warterMarkConfig = [UMSocialWarterMarkConfig defaultWarterMarkConfig];
  81. *
  82. * method2:
  83. * 用户可以通过创建自己的配置类来配置水印
  84. * 代码如下:
  85. //创建UMSocialImageWarterMarkConfig
  86. UMSocialImageWarterMarkConfig* imageWarterMarkConfig = [[UMSocialImageWarterMarkConfig alloc] init];
  87. //配置imageWarterMarkConfig的参数
  88. //...TODO
  89. //创建UMSocialWarterMarkConfig
  90. UMSocialWarterMarkConfig* warterMarkConfig = [[UMSocialWarterMarkConfig alloc] init];
  91. //配置warterMarkConfig的参数
  92. //...TODO
  93. //设置配置类
  94. [warterMarkConfig setUserDefinedImageWarterMarkConfig:imageWarterMarkConfig];
  95. *
  96. *
  97. */
  98. @interface UMSocialWarterMarkConfig : NSObject<NSCopying>
  99. /**
  100. * 默认配置类
  101. *
  102. * @return 默认配置类
  103. */
  104. +(UMSocialWarterMarkConfig*)defaultWarterMarkConfig;
  105. @property(nonatomic,readonly,strong)UMSocialStringWarterMarkConfig* stringWarterMarkConfig;//字符串配置类对象
  106. @property(nonatomic,readonly,strong)UMSocialImageWarterMarkConfig* imageWarterMarkConfig;//图片配置类对象
  107. /**
  108. * 字符串和图片的位置
  109. * 默认是defaultWarterMarkConfig的配置为文字和图片右下角,图片在前文字在后
  110. */
  111. @property(nonatomic,readwrite,assign)UMSocialStringAndImageWarterMarkPositon stringAndImageWarterMarkPositon;//字符串和图片的位置
  112. @property(nonatomic,readwrite,assign)CGFloat spaceBetweenStringWarterMarkAndImageWarterMark;//字符水印和图片水印的间距
  113. /**
  114. * 设置用户自定义的配置类
  115. *
  116. * @param imageWarterMarkConfig 图片配置类对象
  117. */
  118. -(void)setUserDefinedImageWarterMarkConfig:(UMSocialImageWarterMarkConfig*)imageWarterMarkConfig;
  119. @end
  120. /**
  121. * 字符水印配置类
  122. * 目前此配置类没有使用
  123. */
  124. @interface UMSocialStringWarterMarkConfig : NSObject<NSCopying>
  125. /**
  126. * 默认配置类
  127. *
  128. * @return 默认配置类
  129. */
  130. +(UMSocialStringWarterMarkConfig*)defaultStringWarterMarkConfig;
  131. //检查参数是否有效
  132. -(BOOL)checkValid;
  133. @property(nonatomic,readwrite,strong)NSAttributedString* warterMarkAttributedString;//水印字符串
  134. @property(nonatomic,readwrite,assign)NSUInteger warterMarkStringLimit;//水印字符串的字数限制
  135. @property(nonatomic,readwrite,strong)UIColor* warterMarkStringColor;//水印字符串的颜色(要想保证色值半透明,可以创建半透明的颜色对象)
  136. @property(nonatomic,readwrite,strong)UIFont* warterMarkStringFont;//水印字符串的字体
  137. /**
  138. * 靠近水平边的边距
  139. * 与UMSocialWarterMarkPositon的停靠位置有关,
  140. 如:为UMSocialStringWarterMarkBottomRight时,paddingToHorizontalParentBorder代表与父窗口的右边间隙.
  141. 如:UMSocialStringWarterMarkTopLeft时,paddingToHorizontalParentBorder代表与父窗口的左边间隙.
  142. */
  143. @property(nonatomic,readwrite,assign)CGFloat paddingToHorizontalParentBorder;//靠近水平边的边距
  144. /**
  145. * 靠近垂直边的边距
  146. * 与UMSocialWarterMarkPositon的停靠位置有关,
  147. 如:为UMSocialStringWarterMarkBottomRight时,paddingToHorizontalParentBorder代表与父窗口的下边的间隙.
  148. 如:UMSocialStringWarterMarkTopLeft时,paddingToHorizontalParentBorder代表与父窗口的上边间隙.
  149. */
  150. @property(nonatomic,readwrite,assign)CGFloat paddingToVerticalParentBorder;//靠近垂直边的边距
  151. @property(nonatomic,readonly,assign)CGAffineTransform warterMarkStringTransform;//水印字符串的矩阵
  152. @end
  153. /**
  154. * 图片配置类
  155. */
  156. @interface UMSocialImageWarterMarkConfig : NSObject<NSCopying>
  157. /**
  158. * 默认配置类
  159. *
  160. * @return 默认配置类
  161. */
  162. +(UMSocialImageWarterMarkConfig*)defaultImageWarterMarkConfig;
  163. //检查参数是否有效
  164. -(BOOL)checkValid;
  165. @property(nonatomic,readwrite,strong)UIImage* warterMarkImage;//水印图片
  166. @property(nonatomic,readwrite,assign)CGFloat warterMarkImageScale;//水印图片相对父图片的缩放因素(0-1之间)
  167. @property(nonatomic,readwrite,assign)CGFloat warterMarkImageAlpha;//水印图片的Alpha混合值
  168. /**
  169. * 靠近水平边的边距
  170. * 与UMSocialWarterMarkPositon的停靠位置有关,
  171. 如:为UMSocialImageWarterMarkBottomRight时,paddingToHorizontalParentBorder代表与父窗口的右边间隙.
  172. 如:UMSocialImageWarterMarkTopLeft时,paddingToHorizontalParentBorder代表与父窗口的左边间隙.
  173. */
  174. @property(nonatomic,readwrite,assign)CGFloat paddingToHorizontalParentBorder;//靠近水平边的边距
  175. /**
  176. * 靠近垂直边的边距
  177. * 与UMSocialWarterMarkPositon的停靠位置有关,
  178. 如:为UMSocialImageWarterMarkBottomRight时,paddingToHorizontalParentBorder代表与父窗口的下边间隙.
  179. 如:UMSocialImageWarterMarkTopLeft时,paddingToHorizontalParentBorder代表与父窗口的上边间隙.
  180. */
  181. @property(nonatomic,readwrite,assign)CGFloat paddingToVerticalParentBorder;//靠近垂直边的边距
  182. @property(nonatomic,readonly,assign)CGAffineTransform warterMarkImageTransform;//水印图片的矩阵
  183. @end