mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Remove textStorageCreationBlock API (#2142)
* Remove textStorageCreationBlock API * Remove layoutManagerCreationBlock also
This commit is contained in:
@@ -20,17 +20,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
*/
|
*/
|
||||||
@property (nullable, nonatomic, copy) NSArray *pointSizeScaleFactors;
|
@property (nullable, nonatomic, copy) NSArray *pointSizeScaleFactors;
|
||||||
|
|
||||||
#pragma mark - ASTextKit Customization
|
|
||||||
/**
|
|
||||||
A block to provide a hook to provide a custom NSLayoutManager to the ASTextKitRenderer
|
|
||||||
*/
|
|
||||||
@property (nullable, nonatomic, copy) NSLayoutManager * (^layoutManagerCreationBlock)(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
A block to provide a hook to provide a NSTextStorage to the TextKit's layout manager.
|
|
||||||
*/
|
|
||||||
@property (nullable, nonatomic, copy) NSTextStorage * (^textStorageCreationBlock)(NSAttributedString *_Nullable attributedString);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@abstract Text margins for text laid out in the text node.
|
@abstract Text margins for text laid out in the text node.
|
||||||
@discussion defaults to UIEdgeInsetsZero.
|
@discussion defaults to UIEdgeInsetsZero.
|
||||||
|
|||||||
@@ -244,8 +244,6 @@ static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ];
|
|||||||
.exclusionPaths = _exclusionPaths,
|
.exclusionPaths = _exclusionPaths,
|
||||||
// use the property getter so a subclass can provide these scale factors on demand if desired
|
// use the property getter so a subclass can provide these scale factors on demand if desired
|
||||||
.pointSizeScaleFactors = self.pointSizeScaleFactors,
|
.pointSizeScaleFactors = self.pointSizeScaleFactors,
|
||||||
.layoutManagerCreationBlock = self.layoutManagerCreationBlock,
|
|
||||||
.textStorageCreationBlock = self.textStorageCreationBlock,
|
|
||||||
.shadowOffset = _shadowOffset,
|
.shadowOffset = _shadowOffset,
|
||||||
.shadowColor = _cachedShadowUIColor,
|
.shadowColor = _cachedShadowUIColor,
|
||||||
.shadowOpacity = _shadowOpacity,
|
.shadowOpacity = _shadowOpacity,
|
||||||
|
|||||||
@@ -81,21 +81,12 @@ struct ASTextKitAttributes {
|
|||||||
An array of scale factors in descending order to apply to the text to try to make it fit into a constrained size.
|
An array of scale factors in descending order to apply to the text to try to make it fit into a constrained size.
|
||||||
*/
|
*/
|
||||||
NSArray *pointSizeScaleFactors;
|
NSArray *pointSizeScaleFactors;
|
||||||
/**
|
|
||||||
An optional block that returns a custom layout manager subclass. If nil, defaults to NSLayoutManager.
|
|
||||||
*/
|
|
||||||
NSLayoutManager * (^layoutManagerCreationBlock)(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
An optional delegate for the NSLayoutManager
|
An optional delegate for the NSLayoutManager
|
||||||
*/
|
*/
|
||||||
id<NSLayoutManagerDelegate> layoutManagerDelegate;
|
id<NSLayoutManagerDelegate> layoutManagerDelegate;
|
||||||
|
|
||||||
/**
|
|
||||||
An optional block that returns a custom NSTextStorage for the layout manager.
|
|
||||||
*/
|
|
||||||
NSTextStorage * (^textStorageCreationBlock)(NSAttributedString *attributedString);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
We provide an explicit copy function so we can use aggregate initializer syntax while providing copy semantics for
|
We provide an explicit copy function so we can use aggregate initializer syntax while providing copy semantics for
|
||||||
the NSObjects inside.
|
the NSObjects inside.
|
||||||
@@ -114,9 +105,7 @@ struct ASTextKitAttributes {
|
|||||||
shadowOpacity,
|
shadowOpacity,
|
||||||
shadowRadius,
|
shadowRadius,
|
||||||
pointSizeScaleFactors,
|
pointSizeScaleFactors,
|
||||||
layoutManagerCreationBlock,
|
|
||||||
layoutManagerDelegate,
|
layoutManagerDelegate,
|
||||||
textStorageCreationBlock,
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -128,8 +117,6 @@ struct ASTextKitAttributes {
|
|||||||
&& shadowOpacity == other.shadowOpacity
|
&& shadowOpacity == other.shadowOpacity
|
||||||
&& shadowRadius == other.shadowRadius
|
&& shadowRadius == other.shadowRadius
|
||||||
&& [pointSizeScaleFactors isEqualToArray:other.pointSizeScaleFactors]
|
&& [pointSizeScaleFactors isEqualToArray:other.pointSizeScaleFactors]
|
||||||
&& layoutManagerCreationBlock == other.layoutManagerCreationBlock
|
|
||||||
&& textStorageCreationBlock == other.textStorageCreationBlock
|
|
||||||
&& CGSizeEqualToSize(shadowOffset, other.shadowOffset)
|
&& CGSizeEqualToSize(shadowOffset, other.shadowOffset)
|
||||||
&& ASObjectIsEqual(exclusionPaths, other.exclusionPaths)
|
&& ASObjectIsEqual(exclusionPaths, other.exclusionPaths)
|
||||||
&& ASObjectIsEqual(avoidTailTruncationSet, other.avoidTailTruncationSet)
|
&& ASObjectIsEqual(avoidTailTruncationSet, other.avoidTailTruncationSet)
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ size_t ASTextKitAttributes::hash() const
|
|||||||
[attributedString hash],
|
[attributedString hash],
|
||||||
[truncationAttributedString hash],
|
[truncationAttributedString hash],
|
||||||
[avoidTailTruncationSet hash],
|
[avoidTailTruncationSet hash],
|
||||||
std::hash<NSUInteger>()((NSUInteger) layoutManagerCreationBlock),
|
|
||||||
std::hash<NSUInteger>()((NSUInteger) textStorageCreationBlock),
|
|
||||||
std::hash<NSInteger>()(lineBreakMode),
|
std::hash<NSInteger>()(lineBreakMode),
|
||||||
std::hash<NSInteger>()(maximumNumberOfLines),
|
std::hash<NSInteger>()(maximumNumberOfLines),
|
||||||
[exclusionPaths hash],
|
[exclusionPaths hash],
|
||||||
|
|||||||
@@ -28,9 +28,7 @@
|
|||||||
maximumNumberOfLines:(NSUInteger)maximumNumberOfLines
|
maximumNumberOfLines:(NSUInteger)maximumNumberOfLines
|
||||||
exclusionPaths:(NSArray *)exclusionPaths
|
exclusionPaths:(NSArray *)exclusionPaths
|
||||||
constrainedSize:(CGSize)constrainedSize
|
constrainedSize:(CGSize)constrainedSize
|
||||||
layoutManagerCreationBlock:(NSLayoutManager * (^)(void))layoutCreationBlock
|
layoutManagerDelegate:(id<NSLayoutManagerDelegate>)layoutManagerDelegate;
|
||||||
layoutManagerDelegate:(id<NSLayoutManagerDelegate>)layoutManagerDelegate
|
|
||||||
textStorageCreationBlock:(NSTextStorage * (^)(NSAttributedString *attributedString))textStorageCreationBlock;
|
|
||||||
|
|
||||||
@property (nonatomic, assign, readwrite) CGSize constrainedSize;
|
@property (nonatomic, assign, readwrite) CGSize constrainedSize;
|
||||||
|
|
||||||
|
|||||||
@@ -29,9 +29,7 @@
|
|||||||
maximumNumberOfLines:(NSUInteger)maximumNumberOfLines
|
maximumNumberOfLines:(NSUInteger)maximumNumberOfLines
|
||||||
exclusionPaths:(NSArray *)exclusionPaths
|
exclusionPaths:(NSArray *)exclusionPaths
|
||||||
constrainedSize:(CGSize)constrainedSize
|
constrainedSize:(CGSize)constrainedSize
|
||||||
layoutManagerCreationBlock:(NSLayoutManager * (^)(void))layoutCreationBlock
|
|
||||||
layoutManagerDelegate:(id<NSLayoutManagerDelegate>)layoutManagerDelegate
|
layoutManagerDelegate:(id<NSLayoutManagerDelegate>)layoutManagerDelegate
|
||||||
textStorageCreationBlock:(NSTextStorage * (^)(NSAttributedString *attributedString))textStorageCreationBlock
|
|
||||||
|
|
||||||
{
|
{
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
@@ -42,12 +40,8 @@
|
|||||||
__instanceLock__ = std::make_shared<ASDN::Mutex>();
|
__instanceLock__ = std::make_shared<ASDN::Mutex>();
|
||||||
|
|
||||||
// Create the TextKit component stack with our default configuration.
|
// Create the TextKit component stack with our default configuration.
|
||||||
if (textStorageCreationBlock) {
|
_textStorage = (attributedString ? [[NSTextStorage alloc] initWithAttributedString:attributedString] : [[NSTextStorage alloc] init]);
|
||||||
_textStorage = textStorageCreationBlock(attributedString);
|
_layoutManager = [[ASLayoutManager alloc] init];
|
||||||
} else {
|
|
||||||
_textStorage = (attributedString ? [[NSTextStorage alloc] initWithAttributedString:attributedString] : [[NSTextStorage alloc] init]);
|
|
||||||
}
|
|
||||||
_layoutManager = layoutCreationBlock ? layoutCreationBlock() : [[ASLayoutManager alloc] init];
|
|
||||||
_layoutManager.usesFontLeading = NO;
|
_layoutManager.usesFontLeading = NO;
|
||||||
_layoutManager.delegate = layoutManagerDelegate;
|
_layoutManager.delegate = layoutManagerDelegate;
|
||||||
[_textStorage addLayoutManager:_layoutManager];
|
[_textStorage addLayoutManager:_layoutManager];
|
||||||
|
|||||||
@@ -90,9 +90,9 @@
|
|||||||
static std::mutex __static_mutex;
|
static std::mutex __static_mutex;
|
||||||
std::lock_guard<std::mutex> l(__static_mutex);
|
std::lock_guard<std::mutex> l(__static_mutex);
|
||||||
|
|
||||||
NSTextStorage *textStorage = _attributes.textStorageCreationBlock ? _attributes.textStorageCreationBlock(attributedString) : [[NSTextStorage alloc] initWithAttributedString:attributedString];
|
NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:attributedString];
|
||||||
if (_sizingLayoutManager == nil) {
|
if (_sizingLayoutManager == nil) {
|
||||||
_sizingLayoutManager = _attributes.layoutManagerCreationBlock ? _attributes.layoutManagerCreationBlock() : [[ASLayoutManager alloc] init];
|
_sizingLayoutManager = [[ASLayoutManager alloc] init];
|
||||||
_sizingLayoutManager.usesFontLeading = NO;
|
_sizingLayoutManager.usesFontLeading = NO;
|
||||||
}
|
}
|
||||||
[textStorage addLayoutManager:_sizingLayoutManager];
|
[textStorage addLayoutManager:_sizingLayoutManager];
|
||||||
|
|||||||
@@ -101,9 +101,7 @@ static NSCharacterSet *_defaultAvoidTruncationCharacterSet()
|
|||||||
maximumNumberOfLines:attributes.maximumNumberOfLines
|
maximumNumberOfLines:attributes.maximumNumberOfLines
|
||||||
exclusionPaths:attributes.exclusionPaths
|
exclusionPaths:attributes.exclusionPaths
|
||||||
constrainedSize:shadowConstrainedSize
|
constrainedSize:shadowConstrainedSize
|
||||||
layoutManagerCreationBlock:attributes.layoutManagerCreationBlock
|
layoutManagerDelegate:attributes.layoutManagerDelegate];
|
||||||
layoutManagerDelegate:attributes.layoutManagerDelegate
|
|
||||||
textStorageCreationBlock:attributes.textStorageCreationBlock];
|
|
||||||
}
|
}
|
||||||
return _context;
|
return _context;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,9 +67,7 @@
|
|||||||
maximumNumberOfLines:1
|
maximumNumberOfLines:1
|
||||||
exclusionPaths:nil
|
exclusionPaths:nil
|
||||||
constrainedSize:constrainedRect.size
|
constrainedSize:constrainedRect.size
|
||||||
layoutManagerCreationBlock:nil
|
layoutManagerDelegate:nil];
|
||||||
layoutManagerDelegate:nil
|
|
||||||
textStorageCreationBlock:nil];
|
|
||||||
__block CGRect truncationUsedRect;
|
__block CGRect truncationUsedRect;
|
||||||
|
|
||||||
[truncationContext performBlockWithLockedTextKitComponents:^(NSLayoutManager *truncationLayoutManager, NSTextStorage *truncationTextStorage, NSTextContainer *truncationTextContainer) {
|
[truncationContext performBlockWithLockedTextKitComponents:^(NSLayoutManager *truncationLayoutManager, NSTextStorage *truncationTextStorage, NSTextContainer *truncationTextContainer) {
|
||||||
|
|||||||
@@ -44,9 +44,7 @@
|
|||||||
maximumNumberOfLines:0
|
maximumNumberOfLines:0
|
||||||
exclusionPaths:nil
|
exclusionPaths:nil
|
||||||
constrainedSize:constrainedSize
|
constrainedSize:constrainedSize
|
||||||
layoutManagerCreationBlock:nil
|
layoutManagerDelegate:nil];
|
||||||
layoutManagerDelegate:nil
|
|
||||||
textStorageCreationBlock:nil];
|
|
||||||
__block NSRange textKitVisibleRange;
|
__block NSRange textKitVisibleRange;
|
||||||
[context performBlockWithLockedTextKitComponents:^(NSLayoutManager *layoutManager, NSTextStorage *textStorage, NSTextContainer *textContainer) {
|
[context performBlockWithLockedTextKitComponents:^(NSLayoutManager *layoutManager, NSTextStorage *textStorage, NSTextContainer *textContainer) {
|
||||||
textKitVisibleRange = [layoutManager characterRangeForGlyphRange:[layoutManager glyphRangeForTextContainer:textContainer]
|
textKitVisibleRange = [layoutManager characterRangeForGlyphRange:[layoutManager glyphRangeForTextContainer:textContainer]
|
||||||
@@ -69,9 +67,7 @@
|
|||||||
maximumNumberOfLines:0
|
maximumNumberOfLines:0
|
||||||
exclusionPaths:nil
|
exclusionPaths:nil
|
||||||
constrainedSize:constrainedSize
|
constrainedSize:constrainedSize
|
||||||
layoutManagerCreationBlock:nil
|
layoutManagerDelegate:nil];
|
||||||
layoutManagerDelegate:nil
|
|
||||||
textStorageCreationBlock:nil];
|
|
||||||
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
||||||
truncationAttributedString:[self _simpleTruncationAttributedString]
|
truncationAttributedString:[self _simpleTruncationAttributedString]
|
||||||
avoidTailTruncationSet:[NSCharacterSet characterSetWithCharactersInString:@""]];
|
avoidTailTruncationSet:[NSCharacterSet characterSetWithCharactersInString:@""]];
|
||||||
@@ -95,9 +91,7 @@
|
|||||||
maximumNumberOfLines:0
|
maximumNumberOfLines:0
|
||||||
exclusionPaths:nil
|
exclusionPaths:nil
|
||||||
constrainedSize:constrainedSize
|
constrainedSize:constrainedSize
|
||||||
layoutManagerCreationBlock:nil
|
layoutManagerDelegate:nil];
|
||||||
layoutManagerDelegate:nil
|
|
||||||
textStorageCreationBlock:nil];
|
|
||||||
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
||||||
truncationAttributedString:[self _simpleTruncationAttributedString]
|
truncationAttributedString:[self _simpleTruncationAttributedString]
|
||||||
avoidTailTruncationSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];
|
avoidTailTruncationSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];
|
||||||
@@ -120,9 +114,7 @@
|
|||||||
maximumNumberOfLines:0
|
maximumNumberOfLines:0
|
||||||
exclusionPaths:nil
|
exclusionPaths:nil
|
||||||
constrainedSize:constrainedSize
|
constrainedSize:constrainedSize
|
||||||
layoutManagerCreationBlock:nil
|
layoutManagerDelegate:nil];
|
||||||
layoutManagerDelegate:nil
|
|
||||||
textStorageCreationBlock:nil];
|
|
||||||
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
||||||
truncationAttributedString:[self _simpleTruncationAttributedString]
|
truncationAttributedString:[self _simpleTruncationAttributedString]
|
||||||
avoidTailTruncationSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];
|
avoidTailTruncationSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];
|
||||||
@@ -146,9 +138,7 @@
|
|||||||
maximumNumberOfLines:0
|
maximumNumberOfLines:0
|
||||||
exclusionPaths:nil
|
exclusionPaths:nil
|
||||||
constrainedSize:constrainedSize
|
constrainedSize:constrainedSize
|
||||||
layoutManagerCreationBlock:nil
|
layoutManagerDelegate:nil];
|
||||||
layoutManagerDelegate:nil
|
|
||||||
textStorageCreationBlock:nil];
|
|
||||||
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
||||||
truncationAttributedString:[self _simpleTruncationAttributedString]
|
truncationAttributedString:[self _simpleTruncationAttributedString]
|
||||||
avoidTailTruncationSet:nil];
|
avoidTailTruncationSet:nil];
|
||||||
@@ -166,9 +156,7 @@
|
|||||||
maximumNumberOfLines:0
|
maximumNumberOfLines:0
|
||||||
exclusionPaths:nil
|
exclusionPaths:nil
|
||||||
constrainedSize:constrainedSize
|
constrainedSize:constrainedSize
|
||||||
layoutManagerCreationBlock:nil
|
layoutManagerDelegate:nil];
|
||||||
layoutManagerDelegate:nil
|
|
||||||
textStorageCreationBlock:nil];
|
|
||||||
|
|
||||||
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
ASTextKitTailTruncater *tailTruncater = [[ASTextKitTailTruncater alloc] initWithContext:context
|
||||||
truncationAttributedString:[self _simpleTruncationAttributedString]
|
truncationAttributedString:[self _simpleTruncationAttributedString]
|
||||||
|
|||||||
Reference in New Issue
Block a user