From a8a0446e87c33bf9544fcea5409f78df1dcf3e37 Mon Sep 17 00:00:00 2001 From: Curtis Hard Date: Mon, 13 Apr 2015 19:25:13 +0100 Subject: [PATCH] Added display none support --- .../UserInterfaceState.xcuserstate | Bin 41892 -> 42147 bytes source/IJSVG.m | 8 +++++--- source/IJSVGNode.h | 2 ++ source/IJSVGNode.m | 4 ++++ source/IJSVGParser.m | 8 ++++++++ 5 files changed, 19 insertions(+), 3 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 934c7f844a856f74528e309e44f212abcca2367b..1760ac5921bf8f1567fe9087e902bb9105974fad 100644 GIT binary patch delta 18700 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 B_q+fA diff --git a/source/IJSVG.m b/source/IJSVG.m index b012a0f..38b78f2 100644 --- a/source/IJSVG.m +++ b/source/IJSVG.m @@ -347,9 +347,11 @@ static NSColor * _baseColor = nil; { dispatch_block_t block = ^(void) { - [self _drawPath:(IJSVGPath *)child - rect:rect - context:context]; + IJSVGPath * p = (IJSVGPath *)child; + if( p.shouldRender ) + [self _drawPath:p + rect:rect + context:context]; }; // draw the clip diff --git a/source/IJSVGNode.h b/source/IJSVGNode.h index 37614c6..c58dcd0 100644 --- a/source/IJSVGNode.h +++ b/source/IJSVGNode.h @@ -65,6 +65,7 @@ static CGFloat IJSVGInheritedFloatValue = -99.9999991; IJSVGGradient * fillGradient; BOOL usesDefaultFillColor; + BOOL shouldRender; NSColor * fillColor; NSColor * strokeColor; @@ -95,6 +96,7 @@ static CGFloat IJSVGInheritedFloatValue = -99.9999991; @property ( nonatomic, assign ) IJSVGNodeType type; @property ( nonatomic, copy ) NSString * name; +@property ( nonatomic, assign ) BOOL shouldRender; @property ( nonatomic, assign ) BOOL usesDefaultFillColor; @property ( nonatomic, assign ) CGFloat x; @property ( nonatomic, assign ) CGFloat y; diff --git a/source/IJSVGNode.m b/source/IJSVGNode.m index 29959f0..ffb9509 100644 --- a/source/IJSVGNode.m +++ b/source/IJSVGNode.m @@ -11,6 +11,7 @@ @implementation IJSVGNode +@synthesize shouldRender; @synthesize type; @synthesize name; @synthesize x; @@ -124,6 +125,8 @@ self.lineJoinStyle = node.lineJoinStyle; self.parentNode = node.parentNode; + self.shouldRender = node.shouldRender; + // dash array needs physical memory copied CGFloat * nStrokeDashArray = (CGFloat *)malloc(node.strokeDashArrayCount*sizeof(CGFloat)); memcpy( self.strokeDashArray, nStrokeDashArray, node.strokeDashArrayCount*sizeof(CGFloat)); @@ -147,6 +150,7 @@ self.fillOpacity = 1.f; self.strokeOpacity = 1.f; self.strokeDashOffset = 0.f; + self.shouldRender = YES; self.strokeWidth = IJSVGInheritedFloatValue; self.windingRule = IJSVGWindingRuleInherit; self.lineCapStyle = IJSVGLineCapStyleInherit; diff --git a/source/IJSVGParser.m b/source/IJSVGParser.m index b31a972..03285b8 100644 --- a/source/IJSVGParser.m +++ b/source/IJSVGParser.m @@ -319,6 +319,14 @@ { IJSVGStyle * style = [IJSVGStyle parseStyleString:[styleNode stringValue]]; + // actual display + NSString * display = nil; + if( ( display = [style property:@"display"] ) != nil ) + { + if( [display isEqualToString:@"none"] ) + node.shouldRender = NO; + } + // fill color NSColor * fill = nil; if( ( fill = [style property:@"fill"] ) != nil )