Skip to content

Commit

Permalink
fix(ios): handle gradient and pattern transform when null
Browse files Browse the repository at this point in the history
  • Loading branch information
msand committed Mar 4, 2020
1 parent 2f6222d commit 715e9b8
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 32 deletions.
23 changes: 15 additions & 8 deletions ios/Elements/RNSVGLinearGradient.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,20 @@

@implementation RNSVGLinearGradient

- (instancetype)init
{
if (self = [super init]) {
_gradientTransform = CGAffineTransformIdentity;
}
return self;
}

- (void)setX1:(RNSVGLength *)x1
{
if ([x1 isEqualTo:_x1]) {
return;
}

_x1 = x1;
[self invalidate];
}
Expand All @@ -27,7 +34,7 @@ - (void)setY1:(RNSVGLength *)y1
if ([y1 isEqualTo:_y1]) {
return;
}

_y1 = y1;
[self invalidate];
}
Expand All @@ -37,7 +44,7 @@ - (void)setX2:(RNSVGLength *)x2
if ([x2 isEqualTo:_x2]) {
return;
}

_x2 = x2;
[self invalidate];
}
Expand All @@ -47,7 +54,7 @@ - (void)setY2:(RNSVGLength *)y2
if ([y2 isEqualTo:_y2]) {
return;
}

_y2 = y2;
[self invalidate];
}
Expand All @@ -57,7 +64,7 @@ - (void)setGradient:(NSArray<NSNumber *> *)gradient
if (gradient == _gradient) {
return;
}

_gradient = gradient;
[self invalidate];
}
Expand All @@ -67,7 +74,7 @@ - (void)setGradientUnits:(RNSVGUnits)gradientUnits
if (gradientUnits == _gradientUnits) {
return;
}

_gradientUnits = gradientUnits;
[self invalidate];
}
Expand All @@ -91,11 +98,11 @@ - (void)parseReference
[painter setUnits:self.gradientUnits];
[painter setTransform:self.gradientTransform];
[painter setLinearGradientColors:self.gradient];

if (self.gradientUnits == kRNSVGUnitsUserSpaceOnUse) {
[painter setUserSpaceBoundingBox:[self.svgView getContextBounds]];
}

[self.svgView definePainter:painter painterName:self.name];
}
@end
Expand Down
36 changes: 22 additions & 14 deletions ios/Elements/RNSVGPattern.m
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@

@implementation RNSVGPattern

- (instancetype)init
{
if (self = [super init]) {
_patternTransform = CGAffineTransformIdentity;
}
return self;
}

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
return nil;
Expand All @@ -26,11 +34,11 @@ - (void)parseReference
[painter setContentUnits:self.patternContentUnits];
[painter setTransform:self.patternTransform];
[painter setPattern:self];

if (self.patternUnits == kRNSVGUnitsUserSpaceOnUse || self.patternContentUnits == kRNSVGUnitsUserSpaceOnUse) {
[painter setUserSpaceBoundingBox:[self.svgView getContextBounds]];
}

[self.svgView definePainter:painter painterName:self.name];
}

Expand All @@ -39,7 +47,7 @@ - (void)setX:(RNSVGLength *)x
if ([x isEqualTo:_x]) {
return;
}

_x = x;
[self invalidate];
}
Expand All @@ -49,7 +57,7 @@ - (void)setY:(RNSVGLength *)y
if ([y isEqualTo:_y]) {
return;
}

_y = y;
[self invalidate];
}
Expand All @@ -59,7 +67,7 @@ - (void)setPatternwidth:(RNSVGLength *)patternwidth
if ([patternwidth isEqualTo:_patternwidth]) {
return;
}

_patternwidth = patternwidth;
[self invalidate];
}
Expand All @@ -69,7 +77,7 @@ - (void)setPatternheight:(RNSVGLength *)patternheight
if ([patternheight isEqualTo:_patternheight]) {
return;
}

_patternheight = patternheight;
[self invalidate];
}
Expand All @@ -79,7 +87,7 @@ - (void)setPatternUnits:(RNSVGUnits)patternUnits
if (patternUnits == _patternUnits) {
return;
}

_patternUnits = patternUnits;
[self invalidate];
}
Expand All @@ -89,7 +97,7 @@ - (void)setPatternContentUnits:(RNSVGUnits)patternContentUnits
if (patternContentUnits == _patternContentUnits) {
return;
}

_patternContentUnits = patternContentUnits;
[self invalidate];
}
Expand All @@ -105,7 +113,7 @@ - (void)setMinX:(CGFloat)minX
if (minX == _minX) {
return;
}

[self invalidate];
_minX = minX;
}
Expand All @@ -115,7 +123,7 @@ - (void)setMinY:(CGFloat)minY
if (minY == _minY) {
return;
}

[self invalidate];
_minY = minY;
}
Expand All @@ -125,7 +133,7 @@ - (void)setVbWidth:(CGFloat)vbWidth
if (vbWidth == _vbWidth) {
return;
}

[self invalidate];
_vbWidth = vbWidth;
}
Expand All @@ -135,7 +143,7 @@ - (void)setVbHeight:(CGFloat)vbHeight
if (_vbHeight == vbHeight) {
return;
}

[self invalidate];
_vbHeight = vbHeight;
}
Expand All @@ -145,7 +153,7 @@ - (void)setAlign:(NSString *)align
if ([align isEqualToString:_align]) {
return;
}

[self invalidate];
_align = align;
}
Expand All @@ -155,7 +163,7 @@ - (void)setMeetOrSlice:(RNSVGVBMOS)meetOrSlice
if (meetOrSlice == _meetOrSlice) {
return;
}

[self invalidate];
_meetOrSlice = meetOrSlice;
}
Expand Down
28 changes: 18 additions & 10 deletions ios/Elements/RNSVGRadialGradient.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,20 @@

@implementation RNSVGRadialGradient

- (instancetype)init
{
if (self = [super init]) {
_gradientTransform = CGAffineTransformIdentity;
}
return self;
}

- (void)setFx:(RNSVGLength *)fx
{
if ([fx isEqualTo:_fx]) {
return;
}

_fx = fx;
[self invalidate];
}
Expand All @@ -24,7 +32,7 @@ - (void)setFy:(RNSVGLength *)fy
if ([fy isEqualTo:_fy]) {
return;
}

_fy = fy;
[self invalidate];
}
Expand All @@ -34,7 +42,7 @@ - (void)setRx:(RNSVGLength *)rx
if ([rx isEqualTo:_rx]) {
return;
}

_rx = rx;
[self invalidate];
}
Expand All @@ -44,7 +52,7 @@ - (void)setRy:(RNSVGLength *)ry
if ([ry isEqualTo:_ry]) {
return;
}

_ry = ry;
[self invalidate];
}
Expand All @@ -54,7 +62,7 @@ - (void)setCx:(RNSVGLength *)cx
if ([cx isEqualTo:_cx]) {
return;
}

_cx = cx;
[self invalidate];
}
Expand All @@ -64,7 +72,7 @@ - (void)setCy:(RNSVGLength *)cy
if ([cy isEqualTo:_cy]) {
return;
}

_cy = cy;
[self invalidate];
}
Expand All @@ -74,7 +82,7 @@ - (void)setGradient:(NSArray<NSNumber *> *)gradient
if (gradient == _gradient) {
return;
}

_gradient = gradient;
[self invalidate];
}
Expand All @@ -84,7 +92,7 @@ - (void)setGradientUnits:(RNSVGUnits)gradientUnits
if (gradientUnits == _gradientUnits) {
return;
}

_gradientUnits = gradientUnits;
[self invalidate];
}
Expand All @@ -108,11 +116,11 @@ - (void)parseReference
[painter setUnits:self.gradientUnits];
[painter setTransform:self.gradientTransform];
[painter setRadialGradientColors:self.gradient];

if (self.gradientUnits == kRNSVGUnitsUserSpaceOnUse) {
[painter setUserSpaceBoundingBox:[self.svgView getContextBounds]];
}

[self.svgView definePainter:painter painterName:self.name];
}

Expand Down

0 comments on commit 715e9b8

Please sign in to comment.