SVGSwitchElement.m 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #import "SVGSwitchElement.h"
  2. #import "CALayerWithChildHitTest.h"
  3. #import "SVGHelperUtilities.h"
  4. #import "NodeList+Mutable.h"
  5. @implementation SVGSwitchElement
  6. @synthesize visibleChildNodes = _visibleChildNodes;
  7. - (CALayer *) newLayer
  8. {
  9. CALayer* _layer = [CALayerWithChildHitTest layer];
  10. [SVGHelperUtilities configureCALayer:_layer usingElement:self];
  11. return _layer;
  12. }
  13. - (NodeList *)visibleChildNodes
  14. {
  15. if (_visibleChildNodes)
  16. return _visibleChildNodes;
  17. _visibleChildNodes = [[NodeList alloc] init];
  18. NSString* localLanguage = [[NSLocale preferredLanguages] firstObject];
  19. for ( SVGElement<ConverterSVGToCALayer> *child in self.childNodes )
  20. {
  21. if ([child conformsToProtocol:@protocol(ConverterSVGToCALayer)])
  22. {
  23. // spec says if there is no attribute at all then pick it
  24. if (![child hasAttribute:@"systemLanguage"])
  25. {
  26. [_visibleChildNodes.internalArray addObject:child];
  27. break;
  28. }
  29. NSString* languages = [child getAttribute:@"systemLanguage"];
  30. NSArray* languageCodes = [languages componentsSeparatedByCharactersInSet:
  31. [NSCharacterSet characterSetWithCharactersInString:@", \t\n\r"]];
  32. if ([languageCodes containsObject:localLanguage])
  33. {
  34. [_visibleChildNodes.internalArray addObject:child];
  35. break;
  36. }
  37. }
  38. }
  39. return _visibleChildNodes;
  40. }
  41. - (void)layoutLayer:(CALayer *)layer
  42. {
  43. }
  44. @end