[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
font:(NSDictionary *)font;
- (NSArray*)getFontContext;
@end
+3
View File
@@ -107,6 +107,9 @@
@implementation RNSVGGlyphContext
- (NSArray*)getFontContext {
return mFontContext_;
}
- (CTFontRef)getGlyphFont
{
+10 -15
View File
@@ -253,24 +253,19 @@
- (RNSVGText*)getTextAnchorRoot
{
RNSVGGlyphContext* gc = [self.textRoot getGlyphContext];
RNSVGFontData* font = [gc getFont];
enum RNSVGTextAnchor textAnchor = font->textAnchor;
if (textAnchor == RNSVGTextAnchorStart) {
return self;
}
NSArray* font = [gc getFontContext];
RNSVGText* node = self;
UIView* parent = [self superview];
if ([parent isKindOfClass:[RNSVGText class]]) {
RNSVGText *parentText = (RNSVGText*)parent;
RNSVGGlyphContext* gc = [parentText.textRoot getGlyphContext];
RNSVGFontData* font = [gc getFont];
enum RNSVGTextAnchor textAnchor = font->textAnchor;
if (textAnchor == RNSVGTextAnchorStart) {
return self;
} else {
return [parentText getTextAnchorRoot];
for (NSInteger i = [font count] - 1; i >= 0; i--) {
RNSVGFontData* fontData = [font objectAtIndex:i];
if (![parent isKindOfClass:[RNSVGText class]] ||
fontData->textAnchor == RNSVGTextAnchorStart) {
return node;
}
node = (RNSVGText*) parent;
parent = [node superview];
}
return self;
return node;
}
- (CGFloat)getSubtreeTextChunksTotalAdvance