GT2/GT2-Android/node_modules/react-native-svg/ios/Elements/RNSVGUse.m

56 lines
1.5 KiB
Mathematica
Raw Normal View History

/**
* Copyright (c) 2015-present, Horcrux.
* All rights reserved.
*
* This source code is licensed under the MIT-style license found in the
* LICENSE file in the root directory of this source tree.
*/
#import "RNSVGUse.h"
#import "RNSVGSymbol.h"
#import <React/RCTLog.h>
@implementation RNSVGUse
- (void)setHref:(NSString *)href
{
if (href == _href) {
return;
}
[self invalidate];
_href = href;
}
- (void)renderLayerTo:(CGContextRef)context
{
RNSVGNode* template = [[self getSvgView] getDefinedTemplate:self.href];
if (template) {
[self beginTransparencyLayer:context];
[self clip:context];
if ([template isKindOfClass:[RNSVGRenderable class]]) {
[(RNSVGRenderable*)template mergeProperties:self];
}
if ([template class] == [RNSVGSymbol class]) {
RNSVGSymbol *symbol = (RNSVGSymbol*)template;
[symbol renderSymbolTo:context width:[self relativeOnWidth:self.width] height:[self relativeOnWidth:self.height]];
} else {
[template renderTo:context];
}
if ([template isKindOfClass:[RNSVGRenderable class]]) {
[(RNSVGRenderable*)template resetProperties];
}
[self endTransparencyLayer:context];
} else if (self.href) {
// TODO: calling yellow box here
RCTLogWarn(@"`Use` element expected a pre-defined svg template as `href` prop, template named: %@ is not defined.", self.href);
}
}
@end