commitffb55b0f31Author: Curtis Hard <curtishard@me.com> Date: Fri Mar 2 13:28:40 2018 +0000 Fixes viewBox origin translate commita4c032afa2Author: Curtis Hard <curtishard@me.com> Date: Wed Feb 28 21:29:11 2018 +0000 Added clip to viewport commitabe8f4cba5Author: Curtis Hard <curtishard@me.com> Date: Wed Feb 28 21:00:20 2018 +0000 Fixes drawInRect not obeying origin commita16842271bAuthor: Curtis Hard <curtishard@me.com> Date: Mon Feb 26 13:46:41 2018 +0000 Resolves namespaces correctly + added common HTML list to be parsed as groups commit58126e06e4Author: Curtis Hard <curtishard@me.com> Date: Sun Feb 25 21:58:49 2018 +0000 Fixes! commit5af5e054abAuthor: Curtis Hard <curtishard@me.com> Date: Fri Feb 23 22:37:53 2018 +0000 Fixed defNode being removed commitedd3aa1f33Author: Curtis Hard <curtishard@me.com> Date: Fri Feb 23 16:29:54 2018 +0000 excluded various elements from diff commit3366bc4fa5Author: Curtis Hard <curtishard@me.com> Date: Fri Feb 23 14:05:03 2018 +0000 Better optimaztion commit104002183bAuthor: Curtis Hard <curtishard@me.com> Date: Thu Feb 22 22:17:50 2018 +0000 Added rudimenatry inline styles -> stylesheet commit7010b7ea50Author: Curtis Hard <curtishard@me.com> Date: Thu Feb 22 13:33:32 2018 +0000 Correct order of cleanup commit5266a8c07aAuthor: Curtis Hard <curtishard@me.com> Date: Thu Feb 22 08:22:17 2018 +0000 corrent length of string commitcaf55e8bdfAuthor: Curtis Hard <curtishard@me.com> Date: Wed Feb 21 20:45:17 2018 +0000 removes useless def if required commit8160d05ebaAuthor: Curtis Hard <curtishard@me.com> Date: Tue Feb 20 14:12:02 2018 +0000 Refactor of a few methods commita6d6a06521Author: Curtis Hard <curtishard@me.com> Date: Tue Feb 20 09:40:21 2018 +0000 Added collpasing of gradients commit103a4d71f6Author: Curtis Hard <curtishard@me.com> Date: Mon Feb 19 19:07:30 2018 +0000 Reduced floats even more commit98874b1d2cAuthor: Curtis Hard <curtishard@me.com> Date: Mon Feb 19 18:53:02 2018 +0000 More compression goodness commite742db31e0Author: Curtis Hard <curtishard@me.com> Date: Mon Feb 19 14:02:15 2018 +0000 Added intermediateParent commit198fd09f07Author: Curtis Hard <curtishard@me.com> Date: Mon Feb 19 11:51:37 2018 +0000 Fixes! and performance increases commit3493194b1bAuthor: Curtis Hard <curtishard@me.com> Date: Mon Feb 19 08:20:02 2018 +0000 Scale computation commit0016775eafAuthor: Curtis Hard <curtishard@me.com> Date: Sun Feb 18 22:33:26 2018 +0000 More goodness commit304a04cc22Author: Curtis Hard <curtishard@me.com> Date: Sun Feb 18 22:32:04 2018 +0000 Vastly improved the exporter commite4fd0af582Author: Curtis Hard <curtishard@me.com> Date: Sun Feb 18 15:20:28 2018 +0000 This is insanely important! commit69a2a0c97eAuthor: Curtis Hard <curtishard@me.com> Date: Sun Feb 4 22:02:19 2018 +0000 Refactor commit5299bb0479Author: Curtis Hard <curtishard@me.com> Date: Sun Feb 4 21:58:21 2018 +0000 will continue to use CoreAnimation for the time being commit4f1943cad1Author: Curtis Hard <curtishard@me.com> Date: Sun Feb 4 21:57:46 2018 +0000 Fixes gradient strokes commitf02d186293Author: Curtis Hard <curtishard@me.com> Date: Sun Feb 4 11:15:04 2018 +0000 trying to get masks to work commit3291718cfbAuthor: Curtis Hard <curtishard@me.com> Date: Fri Feb 2 22:35:22 2018 +0000 Beginning of quartz renderer commit6fbaaf5884Author: Curtis Hard <curtishard@me.com> Date: Mon Jan 29 22:32:08 2018 +0000 Removed useless log commitabc65797eaAuthor: Curtis Hard <curtishard@me.com> Date: Mon Jan 29 21:37:45 2018 +0000 I think gradients work :D commitaf5a1c2718Author: Curtis Hard <curtishard@me.com> Date: Sun Jan 28 22:18:02 2018 +0000 Possible fx and fy things… commitfb9a5282b9Author: Curtis Hard <curtishard@me.com> Date: Sun Jan 28 19:22:40 2018 +0000 Even more gradient fixes commitd83933a103Author: Curtis Hard <curtishard@me.com> Date: Sun Jan 28 14:21:50 2018 +0000 Various improvements commitbd7a0d5021Author: Curtis Hard <curtishard@me.com> Date: Sat Jan 27 22:26:33 2018 +0000 Start to linear commita9a038568cAuthor: Curtis Hard <curtishard@me.com> Date: Sat Jan 27 21:14:25 2018 +0000 This kind of actually works... commit77fbb38b6fAuthor: Curtis Hard <curtishard@me.com> Date: Sat Jan 27 20:31:36 2018 +0000 I guess this could be a good start? Posssible start of fixes? commit12c3191569Author: Curtis Hard <curtishard@me.com> Date: Sat Jan 27 15:32:15 2018 +0000 Added method for findind absolute position commite3e9626ef7Author: Curtis Hard <curtishard@me.com> Date: Sat Jan 27 14:25:03 2018 +0000 Fixes crash due to parentNode on temp groups being released commit1160d89f16Author: Curtis Hard <curtishard@me.com> Date: Fri Jan 26 22:29:22 2018 +0000 Fixes use statements with transforms commit1575cbfde8Author: Curtis Hard <curtishard@me.com> Date: Fri Jan 26 18:16:03 2018 +0000 Moved color tree over to modern syntax commit5c4c2eee91Author: Curtis Hard <curtishard@me.com> Date: Thu Jan 25 18:23:53 2018 +0000 Added HSL/HSLA support commit087b13e58fAuthor: Curtis Hard <curtishard@me.com> Date: Wed Jan 24 22:24:43 2018 +0000 Various image loading issues resolved from base64 images commit1183e167aaAuthor: Curtis Hard <curtishard@me.com> Date: Wed Jan 24 21:21:41 2018 +0000 Rect issue fix commit4dbfc59437Author: Curtis Hard <curtishard@me.com> Date: Wed Jan 24 21:19:24 2018 +0000 Moved transforms over from being concatinated to seperate calls commit409bd509faAuthor: Curtis Hard <curtishard@me.com> Date: Wed Jan 24 20:30:38 2018 +0000 Fixes color issue commit8ae1d1b4e0Author: Curtis Hard <curtishard@me.com> Date: Wed Jan 24 18:41:08 2018 +0000 Removed check as its not needed here commit7243fbe5ffAuthor: Curtis Hard <curtishard@me.com> Date: Wed Jan 24 18:35:43 2018 +0000 Added excludeAttributes list to parseCommonAttributes added x and y to that list for rect commit51b9a5e85fAuthor: Curtis Hard <curtishard@me.com> Date: Tue Jan 23 19:53:04 2018 +0000 Added isSubcommand to IJSVGCommand - Fixes move command going awol when preceding move commands are not subcommands (woah) commit40098589deAuthor: Curtis Hard <curtishard@me.com> Date: Mon Jan 22 22:04:48 2018 +0000 removed reverseObjectEnumerator IJSVGTransform already deals with this at parse stage (was a test from earlier), spec states transforms are applied in reverse order (which parser already dealth with :-)) commit7cb96b21f2Author: Curtis Hard <curtishard@me.com> Date: Mon Jan 22 22:01:56 2018 +0000 Removed use of origin here as its computed in apply defaults commit1bff7c6970Author: Curtis Hard <curtishard@me.com> Date: Mon Jan 22 21:48:07 2018 +0000 Various fixes… still going…
129 lines
4.7 KiB
Objective-C
129 lines
4.7 KiB
Objective-C
//
|
|
// IJSVGParser.h
|
|
// IconJar
|
|
//
|
|
// Created by Curtis Hard on 30/08/2014.
|
|
// Copyright (c) 2014 Curtis Hard. All rights reserved.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "IJSVGForeignObject.h"
|
|
#import "IJSVGGroup.h"
|
|
#import "IJSVGPath.h"
|
|
#import "IJSVGUtils.h"
|
|
#import "IJSVGCommand.h"
|
|
#import "IJSVGColor.h"
|
|
#import "IJSVGTransform.h"
|
|
#import "IJSVGDef.h"
|
|
#import "IJSVGLinearGradient.h"
|
|
#import "IJSVGRadialGradient.h"
|
|
#import "IJSVGError.h"
|
|
#import "IJSVGStyleSheet.h"
|
|
#import "IJSVGPattern.h"
|
|
#import "IJSVGImage.h"
|
|
#import "IJSVGText.h"
|
|
|
|
static NSString const * IJSVGAttributeViewBox = @"viewBox";
|
|
static NSString const * IJSVGAttributeID = @"id";
|
|
static NSString const * IJSVGAttributeClass = @"class";
|
|
static NSString const * IJSVGAttributeX = @"x";
|
|
static NSString const * IJSVGAttributeY = @"y";
|
|
static NSString const * IJSVGAttributeWidth = @"width";
|
|
static NSString const * IJSVGAttributeHeight = @"height";
|
|
static NSString const * IJSVGAttributeOpacity = @"opacity";
|
|
static NSString const * IJSVGAttributeStrokeOpacity = @"stroke-opacity";
|
|
static NSString const * IJSVGAttributeStrokeWidth = @"stroke-width";
|
|
static NSString const * IJSVGAttributeStrokeDashOffset = @"stroke-dashoffset";
|
|
static NSString const * IJSVGAttributeFillOpacity = @"fill-opacity";
|
|
static NSString const * IJSVGAttributeClipPath = @"clip-path";
|
|
static NSString const * IJSVGAttributeMask = @"mask";
|
|
static NSString const * IJSVGAttributeGradientUnits = @"gradientUnits";
|
|
static NSString const * IJSVGAttributeMaskUnits = @"maskUnits";
|
|
static NSString const * IJSVGAttributeMaskContentUnits = @"maskContentUnits";
|
|
static NSString const * IJSVGAttributeTransform = @"transform";
|
|
static NSString const * IJSVGAttributeGradientTransform = @"gradientTransform";
|
|
static NSString const * IJSVGAttributeUnicode = @"unicode";
|
|
static NSString const * IJSVGAttributeStrokeLineCap = @"stroke-linecap";
|
|
static NSString const * IJSVGAttributeLineJoin = @"stroke-linejoin";
|
|
static NSString const * IJSVGAttributeStroke = @"stroke";
|
|
static NSString const * IJSVGAttributeStrokeDashArray = @"stroke-dasharray";
|
|
static NSString const * IJSVGAttributeFill = @"fill";
|
|
static NSString const * IJSVGAttributeFillRule = @"fill-rule";
|
|
static NSString const * IJSVGAttributeBlendMode = @"mix-blend-mode";
|
|
static NSString const * IJSVGAttributeDisplay = @"display";
|
|
static NSString const * IJSVGAttributeStyle = @"style";
|
|
static NSString const * IJSVGAttributeD = @"d";
|
|
static NSString const * IJSVGAttributeXLink = @"xlink:href";
|
|
static NSString const * IJSVGAttributeX1 = @"x1";
|
|
static NSString const * IJSVGAttributeX2 = @"x2";
|
|
static NSString const * IJSVGAttributeY1 = @"y1";
|
|
static NSString const * IJSVGAttributeY2 = @"y2";
|
|
static NSString const * IJSVGAttributeRX = @"rx";
|
|
static NSString const * IJSVGAttributeRY = @"ry";
|
|
static NSString const * IJSVGAttributeCX = @"cx";
|
|
static NSString const * IJSVGAttributeCY = @"cy";
|
|
static NSString const * IJSVGAttributeR = @"r";
|
|
static NSString const * IJSVGAttributePoints = @"points";
|
|
|
|
@class IJSVGParser;
|
|
|
|
@protocol IJSVGParserDelegate <NSObject>
|
|
|
|
@optional
|
|
- (BOOL)svgParser:(IJSVGParser *)svg
|
|
shouldHandleForeignObject:(IJSVGForeignObject *)foreignObject;
|
|
- (void)svgParser:(IJSVGParser *)svg
|
|
handleForeignObject:(IJSVGForeignObject *)foreignObject
|
|
document:(NSXMLDocument *)document;
|
|
- (void)svgParser:(IJSVGParser *)svg
|
|
foundSubSVG:(IJSVG *)subSVG
|
|
withSVGString:(NSString *)string;
|
|
|
|
@end
|
|
|
|
@interface IJSVGParser : IJSVGGroup {
|
|
|
|
NSRect viewBox;
|
|
NSSize proposedViewSize;
|
|
|
|
@private
|
|
id<IJSVGParserDelegate> _delegate;
|
|
NSXMLDocument * _document;
|
|
NSMutableArray * _glyphs;
|
|
IJSVGStyleSheet * _styleSheet;
|
|
NSMutableArray * _parsedNodes;
|
|
NSMutableDictionary * _defNodes;
|
|
NSMutableDictionary * _baseDefNodes;
|
|
NSMutableArray<IJSVG *> * _svgs;
|
|
NSMutableArray * _definedGroups;
|
|
|
|
struct {
|
|
unsigned int shouldHandleForeignObject: 1;
|
|
unsigned int handleForeignObject: 1;
|
|
unsigned int handleSubSVG: 1;
|
|
} _respondsTo;
|
|
}
|
|
|
|
@property ( nonatomic, readonly ) NSRect viewBox;
|
|
@property ( nonatomic, readonly ) NSSize proposedViewSize;
|
|
|
|
- (id)initWithSVGString:(NSString *)string
|
|
error:(NSError **)error
|
|
delegate:(id<IJSVGParserDelegate>)delegate;
|
|
|
|
- (id)initWithFileURL:(NSURL *)aURL
|
|
error:(NSError **)error
|
|
delegate:(id<IJSVGParserDelegate>)delegate;
|
|
+ (IJSVGParser *)groupForFileURL:(NSURL *)aURL;
|
|
+ (IJSVGParser *)groupForFileURL:(NSURL *)aURL
|
|
delegate:(id<IJSVGParserDelegate>)delegate;
|
|
+ (IJSVGParser *)groupForFileURL:(NSURL *)aURL
|
|
error:(NSError **)error
|
|
delegate:(id<IJSVGParserDelegate>)delegate;
|
|
- (NSSize)size;
|
|
- (BOOL)isFont;
|
|
- (NSArray *)glyphs;
|
|
- (NSArray<IJSVG *> *)subSVGs:(BOOL)recursive;
|
|
|
|
@end
|