mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00

git-subtree-dir: submodules/AsyncDisplayKit git-subtree-mainline: d06f423e0ed3df1fed9bd10d79ee312a9179b632 git-subtree-split: 02bedc12816e251ad71777f9d2578329b6d2bef6
78 lines
3.1 KiB
Objective-C
78 lines
3.1 KiB
Objective-C
//
|
|
// ASTextLine.h
|
|
// Texture
|
|
//
|
|
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
|
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
|
|
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
|
|
#import <UIKit/UIKit.h>
|
|
#import <CoreText/CoreText.h>
|
|
#import <AsyncDisplayKit/ASTextAttribute.h>
|
|
|
|
@class ASTextRunGlyphRange;
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/**
|
|
A text line object wrapped `CTLineRef`, see `ASTextLayout` for more.
|
|
*/
|
|
@interface ASTextLine : NSObject
|
|
|
|
+ (instancetype)lineWithCTLine:(CTLineRef)CTLine position:(CGPoint)position vertical:(BOOL)isVertical NS_RETURNS_RETAINED;
|
|
|
|
@property (nonatomic) NSUInteger index; ///< line index
|
|
@property (nonatomic) NSUInteger row; ///< line row
|
|
@property (nullable, nonatomic) NSArray<NSArray<ASTextRunGlyphRange *> *> *verticalRotateRange; ///< Run rotate range
|
|
|
|
@property (nonatomic, readonly) CTLineRef CTLine; ///< CoreText line
|
|
@property (nonatomic, readonly) NSRange range; ///< string range
|
|
@property (nonatomic, readonly) BOOL vertical; ///< vertical form
|
|
|
|
@property (nonatomic, readonly) CGRect bounds; ///< bounds (ascent + descent)
|
|
@property (nonatomic, readonly) CGSize size; ///< bounds.size
|
|
@property (nonatomic, readonly) CGFloat width; ///< bounds.size.width
|
|
@property (nonatomic, readonly) CGFloat height; ///< bounds.size.height
|
|
@property (nonatomic, readonly) CGFloat top; ///< bounds.origin.y
|
|
@property (nonatomic, readonly) CGFloat bottom; ///< bounds.origin.y + bounds.size.height
|
|
@property (nonatomic, readonly) CGFloat left; ///< bounds.origin.x
|
|
@property (nonatomic, readonly) CGFloat right; ///< bounds.origin.x + bounds.size.width
|
|
|
|
@property (nonatomic) CGPoint position; ///< baseline position
|
|
@property (nonatomic, readonly) CGFloat ascent; ///< line ascent
|
|
@property (nonatomic, readonly) CGFloat descent; ///< line descent
|
|
@property (nonatomic, readonly) CGFloat leading; ///< line leading
|
|
@property (nonatomic, readonly) CGFloat lineWidth; ///< line width
|
|
@property (nonatomic, readonly) CGFloat trailingWhitespaceWidth;
|
|
|
|
@property (nullable, nonatomic, readonly) NSArray<ASTextAttachment *> *attachments; ///< ASTextAttachment
|
|
@property (nullable, nonatomic, readonly) NSArray<NSValue *> *attachmentRanges; ///< NSRange(NSValue)
|
|
@property (nullable, nonatomic, readonly) NSArray<NSValue *> *attachmentRects; ///< CGRect(NSValue)
|
|
|
|
@end
|
|
|
|
|
|
typedef NS_ENUM(NSUInteger, ASTextRunGlyphDrawMode) {
|
|
/// No rotate.
|
|
ASTextRunGlyphDrawModeHorizontal = 0,
|
|
|
|
/// Rotate vertical for single glyph.
|
|
ASTextRunGlyphDrawModeVerticalRotate = 1,
|
|
|
|
/// Rotate vertical for single glyph, and move the glyph to a better position,
|
|
/// such as fullwidth punctuation.
|
|
ASTextRunGlyphDrawModeVerticalRotateMove = 2,
|
|
};
|
|
|
|
/**
|
|
A range in CTRun, used for vertical form.
|
|
*/
|
|
@interface ASTextRunGlyphRange : NSObject
|
|
@property (nonatomic) NSRange glyphRangeInRun;
|
|
@property (nonatomic) ASTextRunGlyphDrawMode drawMode;
|
|
+ (instancetype)rangeWithRange:(NSRange)range drawMode:(ASTextRunGlyphDrawMode)mode NS_RETURNS_RETAINED;
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|