Merge pull request #432 from tonklon/master

ASTextNode expose exclusion paths
This commit is contained in:
appleguy
2015-05-16 22:19:47 -10:00
6 changed files with 81 additions and 0 deletions

View File

@@ -76,6 +76,8 @@ typedef NS_ENUM(NSUInteger, ASTextNodeHighlightStyle) {
*/
@property (nonatomic, readonly, assign) NSUInteger lineCount;
@property (nonatomic, strong) NSArray *exclusionPaths;
#pragma mark - Placeholders
/**

View File

@@ -87,6 +87,8 @@ ASDISPLAYNODE_INLINE CGFloat ceilPixelValue(CGFloat f)
CGFloat _shadowOpacity;
CGFloat _shadowRadius;
NSArray *_exclusionPaths;
NSAttributedString *_composedTruncationString;
NSString *_highlightedLinkAttributeName;
@@ -281,6 +283,7 @@ ASDISPLAYNODE_INLINE CGFloat ceilPixelValue(CGFloat f)
truncationString:_composedTruncationString
truncationMode:_truncationMode
maximumLineCount:_maximumLineCount
exclusionPaths:_exclusionPaths
constrainedSize:constrainedSize];
}
return _renderer;
@@ -349,6 +352,23 @@ ASDISPLAYNODE_INLINE CGFloat ceilPixelValue(CGFloat f)
}
}
#pragma mark - Text Layout
- (void)setExclusionPaths:(NSArray *)exclusionPaths
{
if ((_exclusionPaths == nil && exclusionPaths != nil) || (![_exclusionPaths isEqualToArray:exclusionPaths])) {
_exclusionPaths = exclusionPaths;
[self _invalidateRenderer];
[self invalidateCalculatedSize];
[self setNeedsDisplay];
}
}
- (NSArray *)exclusionPaths
{
return _exclusionPaths;
}
#pragma mark - Drawing
+ (void)drawRect:(CGRect)bounds withParameters:(ASTextNodeDrawParameters *)parameters isCancelled:(asdisplaynode_iscancelled_block_t)isCancelledBlock isRasterizing:(BOOL)isRasterizing

View File

@@ -45,6 +45,12 @@ typedef NS_ENUM(NSUInteger, ASTextNodeRendererMeasureOption) {
*/
@interface ASTextNodeRenderer : NSObject
- (instancetype)initWithAttributedString:(NSAttributedString *)attributedString
truncationString:(NSAttributedString *)truncationString
truncationMode:(NSLineBreakMode)truncationMode
maximumLineCount:(NSUInteger)maximumLineCount
exclusionPaths:(NSArray *)exclusionPaths
constrainedSize:(CGSize)constrainedSize;
/*
* Designated Initializer
*

View File

@@ -39,6 +39,8 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
NSLayoutManager *_layoutManager;
NSTextStorage *_textStorage;
NSTextContainer *_textContainer;
NSArray *_exclusionPaths;
}
#pragma mark - Initialization
@@ -47,6 +49,7 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
truncationString:(NSAttributedString *)truncationString
truncationMode:(NSLineBreakMode)truncationMode
maximumLineCount:(NSUInteger)maximumLineCount
exclusionPaths:(NSArray *)exclusionPaths
constrainedSize:(CGSize)constrainedSize
{
if (self = [super init]) {
@@ -57,11 +60,22 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
_maximumLineCount = maximumLineCount;
_exclusionPaths = exclusionPaths;
_constrainedSize = constrainedSize;
}
return self;
}
- (instancetype)initWithAttributedString:(NSAttributedString *)attributedString
truncationString:(NSAttributedString *)truncationString
truncationMode:(NSLineBreakMode)truncationMode
maximumLineCount:(NSUInteger)maximumLineCount
constrainedSize:(CGSize)constrainedSize
{
return [self initWithAttributedString:attributedString truncationString:truncationString truncationMode:truncationMode maximumLineCount:maximumLineCount exclusionPaths:nil constrainedSize:constrainedSize];
}
/*
* Use this method to lazily construct the TextKit components.
*/
@@ -97,6 +111,8 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
// Set maximum number of lines
_textContainer.maximumNumberOfLines = _maximumLineCount;
_textContainer.exclusionPaths = _exclusionPaths;
[_layoutManager addTextContainer:_textContainer];
ASDN::StaticMutexUnlocker gu(mutex);