// // IJSVGTransform.h // IconJar // // Created by Curtis Hard on 01/09/2014. // Copyright (c) 2014 Curtis Hard. All rights reserved. // #import #import "IJSVGUtils.h" @class IJSVGTransform; typedef CGFloat (^IJSVGTransformParameterModifier)(NSInteger index, CGFloat value); typedef void (^IJSVGTransformApplyBlock)(IJSVGTransform * transform); typedef NS_OPTIONS(NSInteger, IJSVGTransformCommand) { IJSVGTransformCommandMatrix, IJSVGTransformCommandTranslate, IJSVGTransformCommandTranslateX, IJSVGTransformCommandTranslateY, IJSVGTransformCommandScale, IJSVGTransformCommandRotate, IJSVGTransformCommandSkewX, IJSVGTransformCommandSkewY, IJSVGTransformCommandNotImplemented }; @interface IJSVGTransform : NSObject { IJSVGTransformCommand command; CGFloat * parameters; NSInteger parameterCount; NSInteger sort; } @property ( nonatomic, assign ) IJSVGTransformCommand command; @property ( nonatomic, assign ) CGFloat * parameters; @property ( nonatomic, assign ) NSInteger parameterCount; @property ( nonatomic, assign ) NSInteger sort; NSString * IJSVGDebugAffineTransform(CGAffineTransform transform); NSString * IJSVGDebugTransforms(NSArray * transforms); void IJSVGApplyTransform(NSArray * transforms, IJSVGTransformApplyBlock block); CGAffineTransform IJSVGConcatTransforms(NSArray * transforms); + (NSArray *)transformsFromAffineTransform:(CGAffineTransform)affineTransform; + (NSArray *)transformsForString:(NSString *)string; + (NSBezierPath *)transformedPath:(IJSVGPath *)path; + (NSArray *)affineTransformToSVGTransformAttributeString:(CGAffineTransform)affineTransform; + (NSString *)affineTransformToSVGMatrixString:(CGAffineTransform)affineTransform; - (CGAffineTransform)CGAffineTransform; - (CGAffineTransform)CGAffineTransformWithModifier:(IJSVGTransformParameterModifier)modifier; - (CGAffineTransform)stackIdentity:(CGAffineTransform)identity; - (void)recalculateWithBounds:(CGRect)bounds; + (IJSVGTransform *)transformByTranslatingX:(CGFloat)x y:(CGFloat)y; @end