Fixes URL parsing and scaling for gradients

This commit is contained in:
Curtis Hard
2019-07-02 22:27:51 +01:00
parent 1294372daa
commit c94de1d241
4 changed files with 23 additions and 7 deletions
+5 -1
View File
@@ -339,7 +339,7 @@
- (void)_setupBasicsFromAnyInitializer
{
self.clipToViewport = YES;
self.renderQuality = IJSVGRenderQualityOptimized;
self.renderQuality = IJSVGRenderQualityFullResolution;
// setup low level backing scale
_lastProposedBackingScale = 0.f;
@@ -719,6 +719,10 @@
scale = 1.f;
}
// make sure we multiple the scale by the scale of the rendered clip
// or it will be blurry for gradients and other bitmap drawing
scale = (_scale * scale);
// dont do anything, nothing has changed, no point of iterating over
// every layer for no reason!
if(scale == _lastProposedBackingScale && renderQuality == _lastProposedRenderQuality) {
+2 -2
View File
@@ -65,11 +65,11 @@
{
switch (self.renderQuality) {
case IJSVGRenderQualityOptimized: {
backingScaleFactor = .35f;
backingScaleFactor = (backingScaleFactor * .35f);
break;
}
case IJSVGRenderQualityLow: {
backingScaleFactor = .05f;
backingScaleFactor = (backingScaleFactor * .05f);
break;
}
default: {
+16 -4
View File
@@ -235,10 +235,18 @@ CGFloat degrees_to_radians( CGFloat degrees )
+ (NSString *)defURL:(NSString *)string
{
// insta check for URL
NSCharacterSet * set = NSCharacterSet.whitespaceCharacterSet;
string = [string stringByTrimmingCharactersInSet:set];
NSString * check = [string substringToIndex:3].lowercaseString;
if([check isEqualToString:@"url"] == NO) {
return nil;
}
static NSRegularExpression * _reg = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_reg = [[NSRegularExpression alloc] initWithPattern:@"url\\s?\\(\\s?#(.*?)\\)\\;?"
_reg = [[NSRegularExpression alloc] initWithPattern:@"url\\(['\"]?([^)]+?)['\"]?\\)"
options:0
error:nil];
});
@@ -246,11 +254,15 @@ CGFloat degrees_to_radians( CGFloat degrees )
[_reg enumerateMatchesInString:string
options:0
range:NSMakeRange( 0, string.length )
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{
if( ( foundID = [string substringWithRange:[result rangeAtIndex:1]] ) != nil )
usingBlock:^(NSTextCheckingResult *result,
NSMatchingFlags flags, BOOL *stop) {
if((foundID = [string substringWithRange:[result rangeAtIndex:1]]) != nil) {
*stop = YES;
}
}];
if([foundID hasPrefix:@"#"] == YES) {
foundID = [foundID substringFromIndex:1];
}
return foundID;
}