From 21d3023a9b7b6aff68c1170e345951396b1c6cfd Mon Sep 17 00:00:00 2001 From: 单军华 Date: Tue, 31 Jul 2018 13:35:21 +0800 Subject: [PATCH] no message --- screendisplay/Pods/YYText/YYText/String/YYTextAttribute.h | 347 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 347 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/YYText/YYText/String/YYTextAttribute.h b/screendisplay/Pods/YYText/YYText/String/YYTextAttribute.h new file mode 100755 index 0000000..c6bb774 --- /dev/null +++ b/screendisplay/Pods/YYText/YYText/String/YYTextAttribute.h @@ -0,0 +1,347 @@ +// +// YYTextAttribute.h +// YYText <https://github.com/ibireme/YYText> +// +// Created by ibireme on 14/10/26. +// Copyright (c) 2015 ibireme. +// +// This source code is licensed under the MIT-style license found in the +// LICENSE file in the root directory of this source tree. +// + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - Enum Define + +/// The attribute type +typedef NS_OPTIONS(NSInteger, YYTextAttributeType) { + YYTextAttributeTypeNone = 0, + YYTextAttributeTypeUIKit = 1 << 0, ///< UIKit attributes, such as UILabel/UITextField/drawInRect. + YYTextAttributeTypeCoreText = 1 << 1, ///< CoreText attributes, used by CoreText. + YYTextAttributeTypeYYText = 1 << 2, ///< YYText attributes, used by YYText. +}; + +/// Get the attribute type from an attribute name. +extern YYTextAttributeType YYTextAttributeGetType(NSString *attributeName); + +/** + Line style in YYText (similar to NSUnderlineStyle). + */ +typedef NS_OPTIONS (NSInteger, YYTextLineStyle) { + // basic style (bitmask:0xFF) + YYTextLineStyleNone = 0x00, ///< ( ) Do not draw a line (Default). + YYTextLineStyleSingle = 0x01, ///< (������������������) Draw a single line. + YYTextLineStyleThick = 0x02, ///< (���������������������) Draw a thick line. + YYTextLineStyleDouble = 0x09, ///< (������������������) Draw a double line. + + // style pattern (bitmask:0xF00) + YYTextLineStylePatternSolid = 0x000, ///< (������������������������) Draw a solid line (Default). + YYTextLineStylePatternDot = 0x100, ///< (��� ��� ��� ��� ��� ���) Draw a line of dots. + YYTextLineStylePatternDash = 0x200, ///< (��� ��� ��� ���) Draw a line of dashes. + YYTextLineStylePatternDashDot = 0x300, ///< (��� ��� ��� ��� ��� ���) Draw a line of alternating dashes and dots. + YYTextLineStylePatternDashDotDot = 0x400, ///< (��� ��� ��� ��� ��� ���) Draw a line of alternating dashes and two dots. + YYTextLineStylePatternCircleDot = 0x900, ///< (������������������������������������) Draw a line of small circle dots. +}; + +/** + Text vertical alignment. + */ +typedef NS_ENUM(NSInteger, YYTextVerticalAlignment) { + YYTextVerticalAlignmentTop = 0, ///< Top alignment. + YYTextVerticalAlignmentCenter = 1, ///< Center alignment. + YYTextVerticalAlignmentBottom = 2, ///< Bottom alignment. +}; + +/** + The direction define in YYText. + */ +typedef NS_OPTIONS(NSUInteger, YYTextDirection) { + YYTextDirectionNone = 0, + YYTextDirectionTop = 1 << 0, + YYTextDirectionRight = 1 << 1, + YYTextDirectionBottom = 1 << 2, + YYTextDirectionLeft = 1 << 3, +}; + +/** + The trunction type, tells the truncation engine which type of truncation is being requested. + */ +typedef NS_ENUM (NSUInteger, YYTextTruncationType) { + /// No truncate. + YYTextTruncationTypeNone = 0, + + /// Truncate at the beginning of the line, leaving the end portion visible. + YYTextTruncationTypeStart = 1, + + /// Truncate at the end of the line, leaving the start portion visible. + YYTextTruncationTypeEnd = 2, + + /// Truncate in the middle of the line, leaving both the start and the end portions visible. + YYTextTruncationTypeMiddle = 3, +}; + + + +#pragma mark - Attribute Name Defined in YYText + +/// The value of this attribute is a `YYTextBackedString` object. +/// Use this attribute to store the original plain text if it is replaced by something else (such as attachment). +UIKIT_EXTERN NSString *const YYTextBackedStringAttributeName; + +/// The value of this attribute is a `YYTextBinding` object. +/// Use this attribute to bind a range of text together, as if it was a single charactor. +UIKIT_EXTERN NSString *const YYTextBindingAttributeName; + +/// The value of this attribute is a `YYTextShadow` object. +/// Use this attribute to add shadow to a range of text. +/// Shadow will be drawn below text glyphs. Use YYTextShadow.subShadow to add multi-shadow. +UIKIT_EXTERN NSString *const YYTextShadowAttributeName; + +/// The value of this attribute is a `YYTextShadow` object. +/// Use this attribute to add inner shadow to a range of text. +/// Inner shadow will be drawn above text glyphs. Use YYTextShadow.subShadow to add multi-shadow. +UIKIT_EXTERN NSString *const YYTextInnerShadowAttributeName; + +/// The value of this attribute is a `YYTextDecoration` object. +/// Use this attribute to add underline to a range of text. +/// The underline will be drawn below text glyphs. +UIKIT_EXTERN NSString *const YYTextUnderlineAttributeName; + +/// The value of this attribute is a `YYTextDecoration` object. +/// Use this attribute to add strikethrough (delete line) to a range of text. +/// The strikethrough will be drawn above text glyphs. +UIKIT_EXTERN NSString *const YYTextStrikethroughAttributeName; + +/// The value of this attribute is a `YYTextBorder` object. +/// Use this attribute to add cover border or cover color to a range of text. +/// The border will be drawn above the text glyphs. +UIKIT_EXTERN NSString *const YYTextBorderAttributeName; + +/// The value of this attribute is a `YYTextBorder` object. +/// Use this attribute to add background border or background color to a range of text. +/// The border will be drawn below the text glyphs. +UIKIT_EXTERN NSString *const YYTextBackgroundBorderAttributeName; + +/// The value of this attribute is a `YYTextBorder` object. +/// Use this attribute to add a code block border to one or more line of text. +/// The border will be drawn below the text glyphs. +UIKIT_EXTERN NSString *const YYTextBlockBorderAttributeName; + +/// The value of this attribute is a `YYTextAttachment` object. +/// Use this attribute to add attachment to text. +/// It should be used in conjunction with a CTRunDelegate. +UIKIT_EXTERN NSString *const YYTextAttachmentAttributeName; + +/// The value of this attribute is a `YYTextHighlight` object. +/// Use this attribute to add a touchable highlight state to a range of text. +UIKIT_EXTERN NSString *const YYTextHighlightAttributeName; + +/// The value of this attribute is a `NSValue` object stores CGAffineTransform. +/// Use this attribute to add transform to each glyph in a range of text. +UIKIT_EXTERN NSString *const YYTextGlyphTransformAttributeName; + + + +#pragma mark - String Token Define + +UIKIT_EXTERN NSString *const YYTextAttachmentToken; ///< Object replacement character (U+FFFC), used for text attachment. +UIKIT_EXTERN NSString *const YYTextTruncationToken; ///< Horizontal ellipsis (U+2026), used for text truncation "���". + + + +#pragma mark - Attribute Value Define + +/** + The tap/long press action callback defined in YYText. + + @param containerView The text container view (such as YYLabel/YYTextView). + @param text The whole text. + @param range The text range in `text` (if no range, the range.location is NSNotFound). + @param rect The text frame in `containerView` (if no data, the rect is CGRectNull). + */ +typedef void(^YYTextAction)(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect); + + +/** + YYTextBackedString objects are used by the NSAttributedString class cluster + as the values for text backed string attributes (stored in the attributed + string under the key named YYTextBackedStringAttributeName). + + It may used for copy/paste plain text from attributed string. + Example: If :) is replace by a custom emoji (such as����), the backed string can be set to @":)". + */ +@interface YYTextBackedString : NSObject <NSCoding, NSCopying> ++ (instancetype)stringWithString:(nullable NSString *)string; +@property (nullable, nonatomic, copy) NSString *string; ///< backed string +@end + + +/** + YYTextBinding objects are used by the NSAttributedString class cluster + as the values for shadow attributes (stored in the attributed string under + the key named YYTextBindingAttributeName). + + Add this to a range of text will make the specified characters 'binding together'. + YYTextView will treat the range of text as a single character during text + selection and edit. + */ +@interface YYTextBinding : NSObject <NSCoding, NSCopying> ++ (instancetype)bindingWithDeleteConfirm:(BOOL)deleteConfirm; +@property (nonatomic) BOOL deleteConfirm; ///< confirm the range when delete in YYTextView +@end + + +/** + YYTextShadow objects are used by the NSAttributedString class cluster + as the values for shadow attributes (stored in the attributed string under + the key named YYTextShadowAttributeName or YYTextInnerShadowAttributeName). + + It's similar to `NSShadow`, but offers more options. + */ +@interface YYTextShadow : NSObject <NSCoding, NSCopying> ++ (instancetype)shadowWithColor:(nullable UIColor *)color offset:(CGSize)offset radius:(CGFloat)radius; + +@property (nullable, nonatomic, strong) UIColor *color; ///< shadow color +@property (nonatomic) CGSize offset; ///< shadow offset +@property (nonatomic) CGFloat radius; ///< shadow blur radius +@property (nonatomic) CGBlendMode blendMode; ///< shadow blend mode +@property (nullable, nonatomic, strong) YYTextShadow *subShadow; ///< a sub shadow which will be added above the parent shadow + ++ (instancetype)shadowWithNSShadow:(NSShadow *)nsShadow; ///< convert NSShadow to YYTextShadow +- (NSShadow *)nsShadow; ///< convert YYTextShadow to NSShadow +@end + + +/** + YYTextDecorationLine objects are used by the NSAttributedString class cluster + as the values for decoration line attributes (stored in the attributed string under + the key named YYTextUnderlineAttributeName or YYTextStrikethroughAttributeName). + + When it's used as underline, the line is drawn below text glyphs; + when it's used as strikethrough, the line is drawn above text glyphs. + */ +@interface YYTextDecoration : NSObject <NSCoding, NSCopying> ++ (instancetype)decorationWithStyle:(YYTextLineStyle)style; ++ (instancetype)decorationWithStyle:(YYTextLineStyle)style width:(nullable NSNumber *)width color:(nullable UIColor *)color; +@property (nonatomic) YYTextLineStyle style; ///< line style +@property (nullable, nonatomic, strong) NSNumber *width; ///< line width (nil means automatic width) +@property (nullable, nonatomic, strong) UIColor *color; ///< line color (nil means automatic color) +@property (nullable, nonatomic, strong) YYTextShadow *shadow; ///< line shadow +@end + + +/** + YYTextBorder objects are used by the NSAttributedString class cluster + as the values for border attributes (stored in the attributed string under + the key named YYTextBorderAttributeName or YYTextBackgroundBorderAttributeName). + + It can be used to draw a border around a range of text, or draw a background + to a range of text. + + Example: + ������������������������ + ��� Text ��� + ������������������������ + */ +@interface YYTextBorder : NSObject <NSCoding, NSCopying> ++ (instancetype)borderWithLineStyle:(YYTextLineStyle)lineStyle lineWidth:(CGFloat)width strokeColor:(nullable UIColor *)color; ++ (instancetype)borderWithFillColor:(nullable UIColor *)color cornerRadius:(CGFloat)cornerRadius; +@property (nonatomic) YYTextLineStyle lineStyle; ///< border line style +@property (nonatomic) CGFloat strokeWidth; ///< border line width +@property (nullable, nonatomic, strong) UIColor *strokeColor; ///< border line color +@property (nonatomic) CGLineJoin lineJoin; ///< border line join +@property (nonatomic) UIEdgeInsets insets; ///< border insets for text bounds +@property (nonatomic) CGFloat cornerRadius; ///< border corder radius +@property (nullable, nonatomic, strong) YYTextShadow *shadow; ///< border shadow +@property (nullable, nonatomic, strong) UIColor *fillColor; ///< inner fill color +@end + + +/** + YYTextAttachment objects are used by the NSAttributedString class cluster + as the values for attachment attributes (stored in the attributed string under + the key named YYTextAttachmentAttributeName). + + When display an attributed string which contains `YYTextAttachment` object, + the content will be placed in text metric. If the content is `UIImage`, + then it will be drawn to CGContext; if the content is `UIView` or `CALayer`, + then it will be added to the text container's view or layer. + */ +@interface YYTextAttachment : NSObject<NSCoding, NSCopying> ++ (instancetype)attachmentWithContent:(nullable id)content; +@property (nullable, nonatomic, strong) id content; ///< Supported type: UIImage, UIView, CALayer +@property (nonatomic) UIViewContentMode contentMode; ///< Content display mode. +@property (nonatomic) UIEdgeInsets contentInsets; ///< The insets when drawing content. +@property (nullable, nonatomic, strong) NSDictionary *userInfo; ///< The user information dictionary. +@end + + +/** + YYTextHighlight objects are used by the NSAttributedString class cluster + as the values for touchable highlight attributes (stored in the attributed string + under the key named YYTextHighlightAttributeName). + + When display an attributed string in `YYLabel` or `YYTextView`, the range of + highlight text can be toucheds down by users. If a range of text is turned into + highlighted state, the `attributes` in `YYTextHighlight` will be used to modify + (set or remove) the original attributes in the range for display. + */ +@interface YYTextHighlight : NSObject <NSCoding, NSCopying> + +/** + Attributes that you can apply to text in an attributed string when highlight. + Key: Same as CoreText/YYText Attribute Name. + Value: Modify attribute value when highlight (NSNull for remove attribute). + */ +@property (nullable, nonatomic, copy) NSDictionary<NSString *, id> *attributes; + +/** + Creates a highlight object with specified attributes. + + @param attributes The attributes which will replace original attributes when highlight, + If the value is NSNull, it will removed when highlight. + */ ++ (instancetype)highlightWithAttributes:(nullable NSDictionary<NSString *, id> *)attributes; + +/** + Convenience methods to create a default highlight with the specifeid background color. + + @param color The background border color. + */ ++ (instancetype)highlightWithBackgroundColor:(nullable UIColor *)color; + +// Convenience methods below to set the `attributes`. +- (void)setFont:(nullable UIFont *)font; +- (void)setColor:(nullable UIColor *)color; +- (void)setStrokeWidth:(nullable NSNumber *)width; +- (void)setStrokeColor:(nullable UIColor *)color; +- (void)setShadow:(nullable YYTextShadow *)shadow; +- (void)setInnerShadow:(nullable YYTextShadow *)shadow; +- (void)setUnderline:(nullable YYTextDecoration *)underline; +- (void)setStrikethrough:(nullable YYTextDecoration *)strikethrough; +- (void)setBackgroundBorder:(nullable YYTextBorder *)border; +- (void)setBorder:(nullable YYTextBorder *)border; +- (void)setAttachment:(nullable YYTextAttachment *)attachment; + +/** + The user information dictionary, default is nil. + */ +@property (nullable, nonatomic, copy) NSDictionary *userInfo; + +/** + Tap action when user tap the highlight, default is nil. + If the value is nil, YYTextView or YYLabel will ask it's delegate to handle the tap action. + */ +@property (nullable, nonatomic, copy) YYTextAction tapAction; + +/** + Long press action when user long press the highlight, default is nil. + If the value is nil, YYTextView or YYLabel will ask it's delegate to handle the long press action. + */ +@property (nullable, nonatomic, copy) YYTextAction longPressAction; + +@end + +NS_ASSUME_NONNULL_END -- Gitblit v1.8.0