[iOS] Simplify text subtree advance calculation / anchor root resolution

This commit is contained in:
Mikael Sand
2019-02-10 01:47:46 +02:00
parent d5fa136a0f
commit 66241b7a25
3 changed files with 14 additions and 15 deletions
+1
View File
@@ -44,5 +44,6 @@
- (void)pushContext:(RNSVGGroup*)node - (void)pushContext:(RNSVGGroup*)node
font:(NSDictionary *)font; font:(NSDictionary *)font;
- (NSArray*)getFontContext;
@end @end
+3
View File
@@ -107,6 +107,9 @@
@implementation RNSVGGlyphContext @implementation RNSVGGlyphContext
- (NSArray*)getFontContext {
return mFontContext_;
}
- (CTFontRef)getGlyphFont - (CTFontRef)getGlyphFont
{ {
+10 -15
View File
@@ -253,24 +253,19 @@
- (RNSVGText*)getTextAnchorRoot - (RNSVGText*)getTextAnchorRoot
{ {
RNSVGGlyphContext* gc = [self.textRoot getGlyphContext]; RNSVGGlyphContext* gc = [self.textRoot getGlyphContext];
RNSVGFontData* font = [gc getFont]; NSArray* font = [gc getFontContext];
enum RNSVGTextAnchor textAnchor = font->textAnchor; RNSVGText* node = self;
if (textAnchor == RNSVGTextAnchorStart) {
return self;
}
UIView* parent = [self superview]; UIView* parent = [self superview];
if ([parent isKindOfClass:[RNSVGText class]]) { for (NSInteger i = [font count] - 1; i >= 0; i--) {
RNSVGText *parentText = (RNSVGText*)parent; RNSVGFontData* fontData = [font objectAtIndex:i];
RNSVGGlyphContext* gc = [parentText.textRoot getGlyphContext]; if (![parent isKindOfClass:[RNSVGText class]] ||
RNSVGFontData* font = [gc getFont]; fontData->textAnchor == RNSVGTextAnchorStart) {
enum RNSVGTextAnchor textAnchor = font->textAnchor; return node;
if (textAnchor == RNSVGTextAnchorStart) {
return self;
} else {
return [parentText getTextAnchorRoot];
} }
node = (RNSVGText*) parent;
parent = [node superview];
} }
return self; return node;
} }
- (CGFloat)getSubtreeTextChunksTotalAdvance - (CGFloat)getSubtreeTextChunksTotalAdvance