From f00ede11f0d042a9b47abb81bf84bcc0be8b8bd6 Mon Sep 17 00:00:00 2001 From: Curtis Hard Date: Sat, 6 Jul 2019 15:31:17 +0100 Subject: [PATCH] More gradient fixes --- .../UserInterfaceState.xcuserstate | Bin 27874 -> 28329 bytes IJSVGExample/IJSVGExample/home.svg | 366 ++---------------- source/IJSVGLayerTree.m | 22 -- source/IJSVGRadialGradient.m | 13 +- 4 files changed, 40 insertions(+), 361 deletions(-) diff --git a/IJSVGExample/IJSVGExample.xcodeproj/project.xcworkspace/xcuserdata/curtishard.xcuserdatad/UserInterfaceState.xcuserstate b/IJSVGExample/IJSVGExample.xcodeproj/project.xcworkspace/xcuserdata/curtishard.xcuserdatad/UserInterfaceState.xcuserstate index 520c962357297ba2cc2a442b79afc2817406d11c..8332cd08be1f377162f9d62f9c8879cb7189cb71 100644 GIT binary patch delta 10305 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 Ke74+6_x>Ma;(lBJ delta 9865 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 - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/IJSVGLayerTree.m b/source/IJSVGLayerTree.m index 55f48af..b982fc4 100644 --- a/source/IJSVGLayerTree.m +++ b/source/IJSVGLayerTree.m @@ -249,28 +249,6 @@ return mask; } -//- (CGAffineTransform)absoluteTransform:(IJSVGNode *)node -//{ -// CGAffineTransform parentAbsoluteTransform = CGAffineTransformIdentity; -// IJSVGNode * intermediateNode = node.intermediateParentNode; -// IJSVGNode * parentSVGNode = node; -// while(node != nil) { -// // intermediateParent should be skipped as these are elements -// // created by use statements and are technically fake elements, but the -// // spec says use them for the transforms, yolo! -// if(node == intermediateNode) { -// node = node.parentNode; -// continue; -// } -// CGAffineTransform trans = IJSVGConcatTransforms(node.transforms); -// parentAbsoluteTransform = CGAffineTransformConcat(trans,parentAbsoluteTransform); -// node = node.parentNode; -// } -// return parentAbsoluteTransform; -//} - - - - (CGAffineTransform)absoluteTransform:(IJSVGNode *)node { CGAffineTransform parentAbsoluteTransform = CGAffineTransformIdentity; diff --git a/source/IJSVGRadialGradient.m b/source/IJSVGRadialGradient.m index b847097..2018b6f 100644 --- a/source/IJSVGRadialGradient.m +++ b/source/IJSVGRadialGradient.m @@ -50,7 +50,11 @@ NSString * str = [element attributeForName:key].stringValue; IJSVGUnitLength * unit = nil; if(str != nil) { - unit = [IJSVGUnitLength unitWithString:str]; + if(gradient.units == IJSVGUnitObjectBoundingBox) { + unit = [IJSVGUnitLength unitWithPercentageString:str]; + } else { + unit = [IJSVGUnitLength unitWithString:str]; + } } else { unit = [IJSVGUnitLength unitWithPercentageFloat:.5f]; } @@ -64,7 +68,7 @@ // needs fixing NSString * fx = [element attributeForName:@"fx"].stringValue; if(fx != nil) { - if(fx.floatValue < 1.f) { + if(gradient.units == IJSVGUnitObjectBoundingBox) { gradient.fx = [IJSVGUnitLength unitWithPercentageString:fx]; } else { gradient.fx = [IJSVGUnitLength unitWithString:fx]; @@ -73,7 +77,7 @@ NSString * fy = [element attributeForName:@"fy"].stringValue; if(fx != nil) { - if(fx.floatValue < 1.f) { + if(gradient.units == IJSVGUnitObjectBoundingBox) { gradient.fy = [IJSVGUnitLength unitWithPercentageString:fy]; } else { gradient.fy = [IJSVGUnitLength unitWithString:fy]; @@ -152,7 +156,8 @@ kCGGradientDrawsBeforeStartLocation| kCGGradientDrawsAfterEndLocation; CGContextDrawRadialGradient(ctx, self.CGGradient, - gradientEndPoint, 0, gradientStartPoint, + gradientEndPoint, 0, + gradientStartPoint, radius, options); #ifdef IJSVG_DEBUG_GRADIENTS