mirror of
https://github.com/dsward2/macSVG.git
synced 2026-05-28 00:20:58 +02:00
This commit fixes some bugs, mainly for path segments for the 'm' relative move command.
This commit is contained in:
+2
@@ -71,6 +71,8 @@
|
||||
// path functions
|
||||
@property(strong) IBOutlet PathElementEditorFunctions * pathFunctions;
|
||||
|
||||
@property(strong) NSString * selectedElementMacsvgid;
|
||||
|
||||
- (IBAction)updateSVGPathEditorAction:(id)sender;
|
||||
|
||||
- (IBAction)editPathSegmentButtonAction:(id)sender;
|
||||
|
||||
+84
-6
@@ -144,7 +144,7 @@
|
||||
|
||||
- (void)unloadPluginView
|
||||
{
|
||||
|
||||
[super unloadPluginView];
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
@@ -166,6 +166,35 @@
|
||||
}
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
// loadPluginViewInScrollView:
|
||||
//==================================================================================
|
||||
|
||||
- (BOOL)loadPluginViewInScrollView:(NSScrollView *)scrollView
|
||||
{
|
||||
BOOL result = [super loadPluginViewInScrollView:scrollView];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
// svgWebViewReloaded:
|
||||
//==================================================================================
|
||||
|
||||
- (void) svgWebViewReloaded:(NSNotification *)aNotification
|
||||
{
|
||||
// After Undo/Redo, the path element should be re-selected
|
||||
if ([self.svgXmlOutlineView selectedRow] == -1)
|
||||
{
|
||||
NSXMLElement * selectedElement = [self.macSVGPluginCallbacks xmlElementForMacsvgid:self.selectedElementMacsvgid];
|
||||
|
||||
if (selectedElement != NULL)
|
||||
{
|
||||
[self.macSVGPluginCallbacks selectXMLElement:selectedElement];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
// selectedPathMode
|
||||
//==================================================================================
|
||||
@@ -367,8 +396,11 @@
|
||||
|
||||
if (pathSegmentsArrayCount > 0)
|
||||
{
|
||||
PathSegment * closePathSegment = [[pathSegmentsArray objectAtIndex:pathSegmentsArrayCount - 1] mutableCopy];
|
||||
[pathSegmentsArray addObject:closePathSegment]; // add a second the Z or z segment, the final one will be removed
|
||||
|
||||
PathSegment * closePathSegment = [pathSegmentsArray objectAtIndex:pathSegmentsArrayCount - 1];
|
||||
PathSegment * newClosePathSegment = [[PathSegment alloc] init];
|
||||
[newClosePathSegment copyValuesFromPathSegment:closePathSegment];
|
||||
[pathSegmentsArray addObject:newClosePathSegment]; // add a second the Z or z segment, the final one will be removed
|
||||
|
||||
[self.macSVGPluginCallbacks updatePathSegmentsAbsoluteValues:pathSegmentsArray];
|
||||
|
||||
@@ -481,6 +513,10 @@
|
||||
|
||||
- (void) loadSettingsForElement
|
||||
{
|
||||
NSXMLNode * macsvgidNode = [self.pluginTargetXMLElement attributeForName:@"macsvgid"];
|
||||
NSString * selectedElementMacsvgid = macsvgidNode.stringValue;
|
||||
self.selectedElementMacsvgid = selectedElementMacsvgid;
|
||||
|
||||
NSString * selectedPathMode = (self.macSVGPluginCallbacks).selectedPathMode;
|
||||
|
||||
BOOL useRelativePathCoordinates = (self.macSVGPluginCallbacks).useRelativePathCoordinates;
|
||||
@@ -576,6 +612,11 @@
|
||||
existingValue:existingValue];
|
||||
|
||||
[self loadSettingsForElement];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(svgWebViewReloaded:)
|
||||
name:@"SVGWebViewReloaded"
|
||||
object:nil];
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -591,10 +632,26 @@
|
||||
domElement:newPluginTargetDOMElement];
|
||||
|
||||
[self loadSettingsForElement];
|
||||
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(svgWebViewReloaded:)
|
||||
name:@"SVGWebViewReloaded"
|
||||
object:nil];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
// endEdi:
|
||||
//==================================================================================
|
||||
|
||||
- (void)endEdit
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"SVGWebViewReloaded" object:NULL];
|
||||
|
||||
[super endEdit];
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
// performPathFunctionButtonAction:
|
||||
//==================================================================================
|
||||
@@ -1029,10 +1086,31 @@
|
||||
self.pathSegmentEditorMode = kAddPathSegment;
|
||||
|
||||
NSButton *targetButton = (NSButton *)sender;
|
||||
|
||||
NSMutableArray * pathSegmentsArray = [self pathSegmentsArray];
|
||||
|
||||
if (pathSegmentsArray.count == 0)
|
||||
{
|
||||
PathSegment * newPathSegment = [[PathSegment alloc] init];
|
||||
newPathSegment.pathCommand = 'M';
|
||||
newPathSegment.xFloat = 0;
|
||||
newPathSegment.yFloat = 0;
|
||||
newPathSegment.absoluteStartXFloat = 0;
|
||||
newPathSegment.absoluteStartYFloat = 0;
|
||||
newPathSegment.xFloat = 0;
|
||||
newPathSegment.yFloat = 0;
|
||||
|
||||
[pathSegmentsArray addObject:newPathSegment];
|
||||
}
|
||||
|
||||
NSInteger rowIndex = (self.pathTableView).selectedRow;
|
||||
|
||||
NSMutableArray * pathSegmentsArray = [self pathSegmentsArray];
|
||||
|
||||
if (rowIndex == -1)
|
||||
{
|
||||
rowIndex = pathSegmentsArray.count - 1;
|
||||
NSIndexSet * rowIndexSet = [NSIndexSet indexSetWithIndex:rowIndex];
|
||||
[self.pathTableView selectRowIndexes:rowIndexSet byExtendingSelection:NO];
|
||||
}
|
||||
|
||||
PathSegment * pathSegment = pathSegmentsArray[rowIndex];
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>3256</string>
|
||||
<string>3331</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.graphics-design</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
||||
@@ -2452,12 +2452,12 @@
|
||||
[newPathString appendString:pathCommandString];
|
||||
}
|
||||
|
||||
NSString * xString = pathSegment.xString;
|
||||
NSString * xString = pathSegment.absoluteXString;
|
||||
[newPathString appendString:xString];
|
||||
|
||||
[newPathString appendString:@","];
|
||||
|
||||
NSString * yString = pathSegment.yString;
|
||||
NSString * yString = pathSegment.absoluteYString;
|
||||
[newPathString appendString:yString];
|
||||
|
||||
[newPathString appendString:@" "];
|
||||
|
||||
@@ -600,17 +600,8 @@
|
||||
|
||||
case 'm': // moveto
|
||||
{
|
||||
NSString * xString = pathSegment.xString;
|
||||
float xFloat = xString.floatValue;
|
||||
xFloat += absoluteStartXFloat;
|
||||
NSMutableString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
NSString * yString = pathSegment.yString;
|
||||
float yFloat = yString.floatValue;
|
||||
yFloat += absoluteStartYFloat;
|
||||
NSMutableString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
pathSegment.xFloat = pathSegment.absoluteXFloat;
|
||||
pathSegment.yFloat = pathSegment.absoluteYFloat;
|
||||
|
||||
pathSegment.pathCommand = 'M';
|
||||
break;
|
||||
@@ -1441,7 +1432,6 @@
|
||||
|
||||
- (NSMutableArray *)reversePathWithPathSegmentsArray:(NSMutableArray *)pathSegmentsArray
|
||||
{
|
||||
MacSVGDocument * macSVGDocument = (self.macSVGDocumentWindowController).document;
|
||||
[self.macSVGDocumentWindowController.svgWebKitController updatePathSegmentsAbsoluteValues:pathSegmentsArray];
|
||||
|
||||
NSMutableArray * cubicPathSegmentsArray = [self copyPathSegmentsArray:pathSegmentsArray];
|
||||
@@ -1477,18 +1467,10 @@
|
||||
float absoluteStartYFloat = reversePathSegment.absoluteStartYFloat;
|
||||
float absoluteXFloat = reversePathSegment.absoluteXFloat;
|
||||
float absoluteYFloat = reversePathSegment.absoluteYFloat;
|
||||
|
||||
NSString * absoluteStartXString = [macSVGDocument allocFloatString:absoluteStartXFloat];
|
||||
NSString * absoluteStartYString = [macSVGDocument allocFloatString:absoluteStartYFloat];
|
||||
NSString * absoluteXString = [macSVGDocument allocFloatString:absoluteXFloat];
|
||||
NSString * absoluteYString = [macSVGDocument allocFloatString:absoluteYFloat];
|
||||
|
||||
NSString * xString = pathSegment.xString;
|
||||
NSString * yString = pathSegment.yString;
|
||||
|
||||
float xFloat = pathSegment.xFloat;
|
||||
float yFloat = pathSegment.yFloat;
|
||||
|
||||
float xFloat = xString.floatValue;
|
||||
float yFloat = yString.floatValue;
|
||||
|
||||
pathSegment.pathCommand = reversePathSegment.pathCommand;;
|
||||
|
||||
unichar commandCharacter = pathSegment.pathCommand;
|
||||
@@ -1500,17 +1482,13 @@
|
||||
NSPoint reverseOriginPoint = [self.macSVGDocumentWindowController.svgWebKitController
|
||||
endPointForSegmentIndex:0 pathSegmentsArray:reverseSegmentsArray];
|
||||
|
||||
NSMutableDictionary * movetoPathDictionary = [NSMutableDictionary dictionary];
|
||||
PathSegment * movetoPathSegment = [[PathSegment alloc] init];
|
||||
|
||||
movetoPathDictionary[@"command"] = @"M";
|
||||
|
||||
NSString * movetoXString = [macSVGDocument allocFloatString:reverseOriginPoint.x];
|
||||
NSString * movetoYString = [macSVGDocument allocFloatString:reverseOriginPoint.y];
|
||||
|
||||
movetoPathDictionary[@"x"] = movetoXString;
|
||||
movetoPathDictionary[@"y"] = movetoYString;
|
||||
|
||||
[newPathSegmentsArray addObject:movetoPathDictionary];
|
||||
movetoPathSegment.pathCommand = 'M';
|
||||
movetoPathSegment.xFloat = reverseOriginPoint.x;
|
||||
movetoPathSegment.yFloat = reverseOriginPoint.y;
|
||||
|
||||
[newPathSegmentsArray addObject:movetoPathSegment];
|
||||
}
|
||||
|
||||
// some path segments must be changed to standard cubic curves for accurate reversal
|
||||
@@ -1522,32 +1500,26 @@
|
||||
commandCharacter = 'C';
|
||||
pathSegment.pathCommand = commandCharacter;
|
||||
|
||||
NSString * absoluteX1String = [macSVGDocument allocFloatString:absoluteStartXFloat];
|
||||
NSString * absoluteY1String = [macSVGDocument allocFloatString:absoluteStartYFloat];
|
||||
float absoluteX1Float = absoluteStartXFloat;
|
||||
float absoluteY1Float = absoluteStartYFloat;
|
||||
|
||||
if (currentIndex < reverseSegmentsArray.count)
|
||||
{
|
||||
NSMutableDictionary * nextReversePathSegmentsDictionary =
|
||||
PathSegment * nextReversePathSegment =
|
||||
reverseSegmentsArray[(currentIndex + 1)];
|
||||
|
||||
NSNumber * nextAbsoluteX2Number = nextReversePathSegmentsDictionary[@"absoluteX2"];
|
||||
NSNumber * nextAbsoluteY2Number = nextReversePathSegmentsDictionary[@"absoluteY2"];
|
||||
|
||||
if ((nextAbsoluteX2Number != NULL) && (nextAbsoluteY2Number != NULL))
|
||||
{
|
||||
float nextAbsoluteX2Float = nextAbsoluteX2Number.floatValue;
|
||||
float nextAbsoluteY2Float = nextAbsoluteY2Number.floatValue;
|
||||
float nextAbsoluteX2Float = nextReversePathSegment.absoluteX2Float;
|
||||
float nextAbsoluteY2Float = nextReversePathSegment.absoluteY2Float;
|
||||
|
||||
float absoluteX1 = absoluteStartXFloat + (absoluteStartXFloat - nextAbsoluteX2Float);
|
||||
float absoluteY1 = absoluteStartYFloat + (absoluteStartYFloat - nextAbsoluteY2Float);
|
||||
|
||||
absoluteX1String = [macSVGDocument allocFloatString:absoluteX1];
|
||||
absoluteY1String = [macSVGDocument allocFloatString:absoluteY1];
|
||||
}
|
||||
float absoluteX1 = absoluteStartXFloat + (absoluteStartXFloat - nextAbsoluteX2Float);
|
||||
float absoluteY1 = absoluteStartYFloat + (absoluteStartYFloat - nextAbsoluteY2Float);
|
||||
|
||||
absoluteX1Float = absoluteX1;
|
||||
absoluteY1Float = absoluteY1;
|
||||
}
|
||||
|
||||
reversePathSegment.x1String = absoluteX1String;
|
||||
reversePathSegment.y1String = absoluteY1String;
|
||||
reversePathSegment.x1Float = absoluteX1Float;
|
||||
reversePathSegment.y1Float = absoluteY1Float;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1557,44 +1529,35 @@
|
||||
commandCharacter = 'C';
|
||||
pathSegment.pathCommand = commandCharacter;
|
||||
|
||||
NSString * absoluteX1String = [macSVGDocument allocFloatString:absoluteStartXFloat];
|
||||
NSString * absoluteY1String = [macSVGDocument allocFloatString:absoluteStartYFloat];
|
||||
float absoluteX1Float = absoluteStartXFloat;
|
||||
float absoluteY1Float = absoluteStartYFloat;
|
||||
|
||||
if (currentIndex < reverseSegmentsArray.count)
|
||||
{
|
||||
NSMutableDictionary * nextReversePathSegmentsDictionary =
|
||||
PathSegment * nextReversePathSegment =
|
||||
reverseSegmentsArray[(currentIndex + 1)];
|
||||
|
||||
NSNumber * nextAbsoluteX2Number = nextReversePathSegmentsDictionary[@"absoluteX2"];
|
||||
NSNumber * nextAbsoluteY2Number = nextReversePathSegmentsDictionary[@"absoluteY2"];
|
||||
|
||||
if ((nextAbsoluteX2Number != NULL) && (nextAbsoluteY2Number != NULL))
|
||||
{
|
||||
float nextAbsoluteX2Float = nextAbsoluteX2Number.floatValue;
|
||||
float nextAbsoluteY2Float = nextAbsoluteY2Number.floatValue;
|
||||
float nextAbsoluteX2Float = nextReversePathSegment.absoluteX2Float;
|
||||
float nextAbsoluteY2Float = nextReversePathSegment.absoluteY2Float;
|
||||
|
||||
float absoluteX1 = absoluteStartXFloat + (absoluteStartXFloat - nextAbsoluteX2Float);
|
||||
float absoluteY1 = absoluteStartYFloat + (absoluteStartYFloat - nextAbsoluteY2Float);
|
||||
|
||||
float absoluteX1 = absoluteStartXFloat + (absoluteStartXFloat - nextAbsoluteX2Float);
|
||||
float absoluteY1 = absoluteStartYFloat + (absoluteStartYFloat - nextAbsoluteY2Float);
|
||||
|
||||
absoluteX1String = [macSVGDocument allocFloatString:absoluteX1];
|
||||
absoluteY1String = [macSVGDocument allocFloatString:absoluteY1];
|
||||
}
|
||||
absoluteX1Float = absoluteX1;
|
||||
absoluteY1Float = absoluteY1;
|
||||
}
|
||||
|
||||
reversePathSegment.x1String = absoluteX1String;
|
||||
reversePathSegment.y1String = absoluteY1String;
|
||||
reversePathSegment.x1Float = absoluteX1Float;
|
||||
reversePathSegment.y1Float = absoluteY1Float;
|
||||
|
||||
reversePathSegment.xString = absoluteXString;
|
||||
reversePathSegment.yString = absoluteYString;
|
||||
reversePathSegment.xFloat = absoluteXFloat;
|
||||
reversePathSegment.yFloat = absoluteYFloat;
|
||||
|
||||
float absoluteX2 = reversePathSegment.absoluteX2Float;
|
||||
float absoluteY2 = reversePathSegment.absoluteY2Float;
|
||||
|
||||
NSString * absoluteX2String = [macSVGDocument allocFloatString:absoluteX2];
|
||||
NSString * absoluteY2String = [macSVGDocument allocFloatString:absoluteY2];
|
||||
|
||||
reversePathSegment.x2String = absoluteX2String;
|
||||
reversePathSegment.y2String = absoluteY2String;
|
||||
float absoluteX2Float = reversePathSegment.absoluteX2Float;
|
||||
float absoluteY2Float = reversePathSegment.absoluteY2Float;
|
||||
|
||||
reversePathSegment.x2Float = absoluteX2Float;
|
||||
reversePathSegment.y2Float = absoluteY2Float;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1611,16 +1574,11 @@
|
||||
float newAbsoluteY1Float = absoluteStartYFloat - ((absoluteStartYFloat - absoluteY1Float) / 1.5f);
|
||||
float newAbsoluteX2Float = absoluteXFloat - ((absoluteXFloat - absoluteX1Float) / 1.5f);
|
||||
float newAbsoluteY2Float = absoluteYFloat - ((absoluteYFloat - absoluteY1Float) / 1.5f);
|
||||
|
||||
NSString * absoluteX1String = [macSVGDocument allocFloatString:newAbsoluteX1Float];
|
||||
NSString * absoluteY1String = [macSVGDocument allocFloatString:newAbsoluteY1Float];
|
||||
NSString * absoluteX2String = [macSVGDocument allocFloatString:newAbsoluteX2Float];
|
||||
NSString * absoluteY2String = [macSVGDocument allocFloatString:newAbsoluteY2Float];
|
||||
|
||||
reversePathSegment.x1String = absoluteX1String;
|
||||
reversePathSegment.y1String = absoluteY1String;
|
||||
reversePathSegment.x2String = absoluteX2String;
|
||||
reversePathSegment.y2String = absoluteY2String;
|
||||
|
||||
reversePathSegment.x1Float = newAbsoluteX1Float;
|
||||
reversePathSegment.y1Float = newAbsoluteY1Float;
|
||||
reversePathSegment.x2Float = newAbsoluteX2Float;
|
||||
reversePathSegment.y2Float = newAbsoluteY2Float;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1638,15 +1596,10 @@
|
||||
float newAbsoluteX2Float = absoluteXFloat - ((absoluteXFloat - absoluteX1Float) / 1.5f);
|
||||
float newAbsoluteY2Float = absoluteYFloat - ((absoluteYFloat - absoluteY1Float) / 1.5f);
|
||||
|
||||
NSString * absoluteX1String = [macSVGDocument allocFloatString:newAbsoluteX1Float];
|
||||
NSString * absoluteY1String = [macSVGDocument allocFloatString:newAbsoluteY1Float];
|
||||
NSString * absoluteX2String = [macSVGDocument allocFloatString:newAbsoluteX2Float];
|
||||
NSString * absoluteY2String = [macSVGDocument allocFloatString:newAbsoluteY2Float];
|
||||
|
||||
reversePathSegment.x1String = absoluteX1String;
|
||||
reversePathSegment.y1String = absoluteY1String;
|
||||
reversePathSegment.x2String = absoluteX2String;
|
||||
reversePathSegment.y2String = absoluteY2String;
|
||||
reversePathSegment.x1Float = newAbsoluteX1Float;
|
||||
reversePathSegment.y1Float = newAbsoluteY1Float;
|
||||
reversePathSegment.x2Float = newAbsoluteX2Float;
|
||||
reversePathSegment.y2Float = newAbsoluteY2Float;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1667,10 +1620,10 @@
|
||||
float cubicAbsoluteX2 = cubicPathSegment.absoluteX2Float;
|
||||
float cubicAbsoluteY2 = cubicPathSegment.absoluteY2Float;
|
||||
|
||||
NSString * cubicX1String = cubicPathSegment.x1String;
|
||||
NSString * cubicY1String = cubicPathSegment.y1String;
|
||||
NSString * cubicX2String = cubicPathSegment.x2String;
|
||||
NSString * cubicY2String = cubicPathSegment.y2String;
|
||||
float cubicX1Float = cubicPathSegment.x1Float;
|
||||
float cubicY1Float = cubicPathSegment.y1Float;
|
||||
float cubicX2Float = cubicPathSegment.x2Float;
|
||||
float cubicY2Float = cubicPathSegment.y2Float;
|
||||
|
||||
// reverse the endpoint of the cubic bezier for the new segment
|
||||
|
||||
@@ -1686,15 +1639,12 @@
|
||||
newPathSegment.absoluteX2Float = cubicAbsoluteX2;
|
||||
newPathSegment.absoluteY2Float = cubicAbsoluteY2;
|
||||
|
||||
NSString * newXString = [self allocFloatString:cubicAbsoluteStartX];
|
||||
NSString * newYString = [self allocFloatString:cubicAbsoluteStartY];
|
||||
|
||||
newPathSegment.xString = newXString;
|
||||
newPathSegment.yString = newYString;
|
||||
newPathSegment.x1String = cubicX1String;
|
||||
newPathSegment.y1String = cubicY1String;
|
||||
newPathSegment.x2String = cubicX2String;
|
||||
newPathSegment.y2String = cubicY2String;
|
||||
newPathSegment.xFloat = cubicAbsoluteStartX;
|
||||
newPathSegment.yFloat = cubicAbsoluteStartY;
|
||||
newPathSegment.x1Float = cubicX1Float;
|
||||
newPathSegment.y1Float = cubicY1Float;
|
||||
newPathSegment.x2Float = cubicX2Float;
|
||||
newPathSegment.y2Float = cubicY2Float;
|
||||
|
||||
[reversePathSegment copyValuesFromPathSegment:newPathSegment];
|
||||
|
||||
@@ -1716,10 +1666,10 @@
|
||||
float cubicAbsoluteX2 = cubicPathSegment.absoluteX2Float;
|
||||
float cubicAbsoluteY2 = cubicPathSegment.absoluteY2Float;
|
||||
|
||||
NSString * cubicX1String = cubicPathSegment.x1String;
|
||||
NSString * cubicY1String = cubicPathSegment.y1String;
|
||||
NSString * cubicX2String = cubicPathSegment.x2String;
|
||||
NSString * cubicY2String = cubicPathSegment.y2String;
|
||||
float cubicX1Float = cubicPathSegment.x1Float;
|
||||
float cubicY1Float = cubicPathSegment.y1Float;
|
||||
float cubicX2Float = cubicPathSegment.x2Float;
|
||||
float cubicY2Float = cubicPathSegment.y2Float;
|
||||
|
||||
// reverse the endpoint of the cubic bezier for the new segment
|
||||
|
||||
@@ -1735,15 +1685,12 @@
|
||||
newPathSegment.absoluteX2Float = cubicAbsoluteX2;
|
||||
newPathSegment.absoluteY2Float = cubicAbsoluteY2;
|
||||
|
||||
NSString * newXString = [self allocFloatString:cubicAbsoluteStartX];
|
||||
NSString * newYString = [self allocFloatString:cubicAbsoluteStartX];
|
||||
|
||||
newPathSegment.xString = newXString;
|
||||
newPathSegment.yString = newYString;
|
||||
newPathSegment.x1String = cubicX1String;
|
||||
newPathSegment.y1String = cubicY1String;
|
||||
newPathSegment.x2String = cubicX2String;
|
||||
newPathSegment.y2String = cubicY2String;
|
||||
newPathSegment.xFloat = cubicAbsoluteStartX;
|
||||
newPathSegment.yFloat = cubicAbsoluteStartX;
|
||||
newPathSegment.x1Float = cubicX1Float;
|
||||
newPathSegment.y1Float = cubicY1Float;
|
||||
newPathSegment.x2Float = cubicX2Float;
|
||||
newPathSegment.y2Float = cubicY2Float;
|
||||
|
||||
[reversePathSegment copyValuesFromPathSegment:newPathSegment];
|
||||
|
||||
@@ -1756,8 +1703,8 @@
|
||||
{
|
||||
case 'M': // moveto
|
||||
{
|
||||
pathSegment.xString = absoluteStartXString;
|
||||
pathSegment.yString = absoluteStartYString;
|
||||
pathSegment.xFloat = absoluteStartXFloat;
|
||||
pathSegment.yFloat = absoluteStartYFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1765,19 +1712,17 @@
|
||||
case 'm': // moveto
|
||||
{
|
||||
xFloat = -xFloat;
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
pathSegment.xFloat = xFloat;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
pathSegment.yFloat = yFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
case 'L': // lineto
|
||||
{
|
||||
pathSegment.xString = absoluteStartXString;
|
||||
pathSegment.yString = absoluteStartYString;
|
||||
pathSegment.xFloat = absoluteStartXFloat;
|
||||
pathSegment.yFloat = absoluteStartYFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1785,19 +1730,17 @@
|
||||
case 'l': // lineto
|
||||
{
|
||||
xFloat = -xFloat;
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
pathSegment.xFloat = xFloat;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
pathSegment.yFloat = yFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'H': // horizontal lineto
|
||||
{
|
||||
pathSegment.xString = absoluteStartXString;
|
||||
pathSegment.xFloat = absoluteStartXFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1805,15 +1748,14 @@
|
||||
case 'h': // horizontal lineto
|
||||
{
|
||||
xFloat = -xFloat;
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
pathSegment.xFloat = xFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'V': // vertical lineto
|
||||
{
|
||||
pathSegment.yString = absoluteStartYString;
|
||||
pathSegment.yFloat = absoluteStartYFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1821,27 +1763,20 @@
|
||||
case 'v': // vertical lineto
|
||||
{
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
pathSegment.yFloat = yFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'C': // curveto
|
||||
{
|
||||
pathSegment.xString = absoluteStartXString;
|
||||
pathSegment.yString = absoluteStartYString;
|
||||
|
||||
NSString * x1String = reversePathSegment.x1String;
|
||||
NSString * y1String = reversePathSegment.y1String;
|
||||
NSString * x2String = reversePathSegment.x2String;
|
||||
NSString * y2String = reversePathSegment.y2String;
|
||||
pathSegment.xFloat = absoluteStartXFloat;
|
||||
pathSegment.yFloat = absoluteStartYFloat;
|
||||
|
||||
|
||||
pathSegment.x1String = x2String;
|
||||
pathSegment.y1String = y2String;
|
||||
pathSegment.x2String = x1String;
|
||||
pathSegment.y2String = y1String;
|
||||
pathSegment.x1Float = reversePathSegment.x2Float;
|
||||
pathSegment.y1Float = reversePathSegment.y2Float;
|
||||
pathSegment.x2Float = reversePathSegment.x1Float;
|
||||
pathSegment.y2Float = reversePathSegment.y1Float;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1849,37 +1784,25 @@
|
||||
case 'c': // curveto
|
||||
{
|
||||
xFloat = -xFloat;
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
pathSegment.xFloat = xFloat;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
NSString * x1String = reversePathSegment.x1String;
|
||||
NSString * y1String = reversePathSegment.y1String;
|
||||
NSString * x2String = reversePathSegment.x2String;
|
||||
NSString * y2String = reversePathSegment.y2String;
|
||||
pathSegment.yFloat = yFloat;
|
||||
|
||||
float x1Float = x1String.floatValue;
|
||||
float y1Float = y1String.floatValue;
|
||||
float x2Float = x2String.floatValue;
|
||||
float y2Float = y2String.floatValue;
|
||||
float x1Float = reversePathSegment.x1Float;
|
||||
float y1Float = reversePathSegment.y1Float;
|
||||
float x2Float = reversePathSegment.x2Float;
|
||||
float y2Float = reversePathSegment.y2Float;
|
||||
|
||||
x1Float = -x1Float;
|
||||
y1Float = -y1Float;
|
||||
x2Float = -x2Float;
|
||||
y2Float = -y2Float;
|
||||
|
||||
x1String = [macSVGDocument allocFloatString:x1Float];
|
||||
y1String = [macSVGDocument allocFloatString:y1Float];
|
||||
x2String = [macSVGDocument allocFloatString:x2Float];
|
||||
y2String = [macSVGDocument allocFloatString:y2Float];
|
||||
|
||||
pathSegment.x1String = x2String;
|
||||
pathSegment.y1String = y2String;
|
||||
pathSegment.x2String = x1String;
|
||||
pathSegment.y2String = y1String;
|
||||
pathSegment.x1Float = x2Float;
|
||||
pathSegment.y1Float = y2Float;
|
||||
pathSegment.x2Float = x1Float;
|
||||
pathSegment.y2Float = y1Float;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1928,52 +1851,46 @@
|
||||
|
||||
case 'A': // elliptical arc
|
||||
{
|
||||
pathSegment.xString = absoluteStartXString;
|
||||
pathSegment.yString = absoluteStartYString;
|
||||
pathSegment.xFloat = absoluteStartXFloat;
|
||||
pathSegment.yFloat = absoluteStartYFloat;
|
||||
|
||||
NSString * rxString = reversePathSegment.rxString;
|
||||
NSString * ryString = reversePathSegment.ryString;
|
||||
NSString * xAxisRotationString = reversePathSegment.xAxisRotationString;
|
||||
NSString * largeArcFlagString = reversePathSegment.largeArcFlagString;
|
||||
NSString * sweepFlagString = reversePathSegment.sweepFlagString;
|
||||
float rxFloat = reversePathSegment.rxFloat;
|
||||
float ryFloat = reversePathSegment.ryFloat;
|
||||
float xAxisRotationFloat = reversePathSegment.xAxisRotationFloat;
|
||||
BOOL largeArcFlagBool = reversePathSegment.largeArcFlagBool;
|
||||
BOOL sweepFlagBool = reversePathSegment.sweepFlagBool;
|
||||
|
||||
NSInteger sweepFlag = sweepFlagString.integerValue;
|
||||
sweepFlag = !sweepFlag;
|
||||
sweepFlagString = [NSString stringWithFormat:@"%ld", sweepFlag];
|
||||
sweepFlagBool = !sweepFlagBool;
|
||||
|
||||
pathSegment.rxString = rxString;
|
||||
pathSegment.ryString = ryString;
|
||||
pathSegment.xAxisRotationString = xAxisRotationString;
|
||||
pathSegment.largeArcFlagString = largeArcFlagString;
|
||||
pathSegment.sweepFlagString = sweepFlagString;
|
||||
pathSegment.rxFloat = rxFloat;
|
||||
pathSegment.ryFloat = ryFloat;
|
||||
pathSegment.xAxisRotationFloat = xAxisRotationFloat;
|
||||
pathSegment.largeArcFlagBool = largeArcFlagBool;
|
||||
pathSegment.sweepFlagBool = sweepFlagBool;
|
||||
|
||||
break;
|
||||
}
|
||||
case 'a': // elliptical arc
|
||||
{
|
||||
xFloat = -xFloat;
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
pathSegment.xFloat = xFloat;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
pathSegment.yFloat = yFloat;
|
||||
|
||||
NSString * rxString = reversePathSegment.rxString;
|
||||
NSString * ryString = reversePathSegment.ryString;
|
||||
NSString * xAxisRotationString = reversePathSegment.xAxisRotationString;
|
||||
NSString * largeArcFlagString = reversePathSegment.largeArcFlagString;
|
||||
NSString * sweepFlagString = reversePathSegment.sweepFlagString;
|
||||
float rxFloat = reversePathSegment.rxFloat;
|
||||
float ryFloat = reversePathSegment.ryFloat;
|
||||
float xAxisRotationFloat = reversePathSegment.xAxisRotationFloat;
|
||||
BOOL largeArcFlagBool = reversePathSegment.largeArcFlagBool;
|
||||
BOOL sweepFlagBool = reversePathSegment.sweepFlagBool;
|
||||
|
||||
NSInteger sweepFlag = sweepFlagString.integerValue;
|
||||
sweepFlag = !sweepFlag;
|
||||
sweepFlagString = [NSString stringWithFormat:@"%ld", sweepFlag];
|
||||
sweepFlagBool = !sweepFlagBool;
|
||||
|
||||
pathSegment.rxString = rxString;
|
||||
pathSegment.ryString = ryString;
|
||||
pathSegment.xAxisRotationString = xAxisRotationString;
|
||||
pathSegment.largeArcFlagString = largeArcFlagString;
|
||||
pathSegment.sweepFlagString = sweepFlagString;
|
||||
pathSegment.rxFloat = rxFloat;
|
||||
pathSegment.ryFloat = ryFloat;
|
||||
pathSegment.xAxisRotationFloat = xAxisRotationFloat;
|
||||
pathSegment.largeArcFlagBool = largeArcFlagBool;
|
||||
pathSegment.sweepFlagBool = sweepFlagBool;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2501,7 +2418,6 @@
|
||||
[reverseSegmentsArray insertObject:newPathSegment atIndex:0];
|
||||
}
|
||||
|
||||
|
||||
NSMutableArray * cubicPathSegmentsArray = [self copyPathSegmentsArray:pathSegmentsArray];
|
||||
cubicPathSegmentsArray = [self convertCurvesToAbsoluteCubicBezierWithPathSegmentsArray:cubicPathSegmentsArray];
|
||||
NSMutableArray * reverseCubicsSegmentsArray = [NSMutableArray array];
|
||||
@@ -2512,8 +2428,6 @@
|
||||
[reverseCubicsSegmentsArray insertObject:newCubicSegment atIndex:0];
|
||||
}
|
||||
|
||||
|
||||
|
||||
NSInteger lastIndex = pathSegmentsArray.count - 1;
|
||||
|
||||
NSPoint reverseOriginPoint = [self.macSVGDocumentWindowController.svgWebKitController
|
||||
@@ -2542,71 +2456,35 @@
|
||||
{
|
||||
case 'M': // moveto
|
||||
{
|
||||
float deltaX = currentPoint.x - absoluteStartXFloat;
|
||||
|
||||
float newXFloat = currentPoint.x + deltaX;
|
||||
float newYFloat = absoluteStartYFloat;
|
||||
|
||||
NSString * newXString = [macSVGDocument allocFloatString:newXFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
NSString * newYString = [macSVGDocument allocFloatString:newYFloat];
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
float deltaY = currentPoint.y - absoluteStartYFloat;
|
||||
pathSegment.yFloat = currentPoint.y + deltaY;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'm': // moveto
|
||||
{
|
||||
NSString * xString = pathSegment.xString;
|
||||
NSString * yString = pathSegment.yString;
|
||||
|
||||
float xFloat = xString.floatValue;
|
||||
float yFloat = yString.floatValue;
|
||||
|
||||
xFloat = -xFloat;
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
float xFloat = pathSegment.xFloat;
|
||||
pathSegment.xFloat = -xFloat;
|
||||
break;
|
||||
}
|
||||
case 'L': // lineto
|
||||
{
|
||||
float deltaX = currentPoint.x - absoluteStartXFloat;
|
||||
float deltaY = currentPoint.y - absoluteStartYFloat;
|
||||
|
||||
float newXFloat = currentPoint.x + deltaX;
|
||||
float newYFloat = absoluteStartYFloat;
|
||||
|
||||
NSString * newXString = [macSVGDocument allocFloatString:newXFloat];
|
||||
pathSegment.xString = newXString;
|
||||
float newXFloat = currentPoint.x - deltaX;
|
||||
float newYFloat = currentPoint.y + deltaY;
|
||||
|
||||
NSString * newYString = [macSVGDocument allocFloatString:newYFloat];
|
||||
pathSegment.yString = newYString;
|
||||
pathSegment.xFloat = newXFloat;
|
||||
pathSegment.yFloat = newYFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'l': // lineto
|
||||
{
|
||||
NSString * xString = pathSegment.xString;
|
||||
NSString * yString = pathSegment.yString;
|
||||
|
||||
float xFloat = xString.floatValue;
|
||||
float yFloat = yString.floatValue;
|
||||
|
||||
float newXFloat = xFloat;
|
||||
float newYFloat = -yFloat;
|
||||
|
||||
NSString * newXString = [macSVGDocument allocFloatString:newXFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:newYFloat];
|
||||
pathSegment.yString = newYString;
|
||||
float xFloat = pathSegment.xFloat;
|
||||
pathSegment.xFloat = -xFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2614,95 +2492,63 @@
|
||||
case 'H': // horizontal lineto
|
||||
{
|
||||
float deltaX = currentPoint.x - absoluteStartXFloat;
|
||||
|
||||
float newXFloat = currentPoint.x + deltaX;
|
||||
|
||||
NSString * newXString = [macSVGDocument allocFloatString:newXFloat];
|
||||
pathSegment.xString = newXString;
|
||||
float newXFloat = currentPoint.x - deltaX;
|
||||
pathSegment.xFloat = newXFloat;
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'h': // horizontal lineto
|
||||
{
|
||||
NSString * xString = pathSegment.xString;
|
||||
|
||||
float xFloat = xString.floatValue;
|
||||
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
float xFloat = pathSegment.xFloat;
|
||||
pathSegment.xFloat = -xFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'V': // vertical lineto
|
||||
{
|
||||
NSString * yString = pathSegment.yString;
|
||||
|
||||
float yFloat = yString.floatValue;
|
||||
|
||||
float yDelta = absoluteStartYFloat - yFloat;
|
||||
yFloat = currentPoint.y + yDelta;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
//float yFloat = pathSegment.yFloat;
|
||||
//float yDelta = absoluteStartYFloat - yFloat;
|
||||
//yFloat = currentPoint.y + yDelta;
|
||||
//pathSegment.yFloat = yFloat;
|
||||
|
||||
float deltaY = currentPoint.y - absoluteStartYFloat;
|
||||
float newYFloat = currentPoint.y + deltaY;
|
||||
pathSegment.yFloat = newYFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'v': // vertical lineto
|
||||
{
|
||||
NSString * yString = pathSegment.yString;
|
||||
|
||||
float yFloat = yString.floatValue;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'C': // curveto
|
||||
{
|
||||
NSString * x1String = pathSegment.x1String;
|
||||
NSString * y1String = pathSegment.y1String;
|
||||
NSString * x2String = pathSegment.x2String;
|
||||
NSString * y2String = pathSegment.y2String;
|
||||
float x1Float = pathSegment.x1Float;
|
||||
float y1Float = pathSegment.y1Float;
|
||||
float x2Float = pathSegment.x2Float;
|
||||
float y2Float = pathSegment.y2Float;
|
||||
|
||||
float x1Float = x1String.floatValue;
|
||||
float y1Float = y1String.floatValue;
|
||||
float x2Float = x2String.floatValue;
|
||||
float y2Float = y2String.floatValue;
|
||||
float deltaY = currentPoint.y - absoluteStartYFloat;
|
||||
float deltaY1 = currentPoint.y - y2Float;
|
||||
float deltaY2 = currentPoint.y - y1Float;
|
||||
|
||||
float deltaX = currentPoint.x - absoluteStartXFloat;
|
||||
float deltaX1 = currentPoint.x - x2Float;
|
||||
float deltaX2 = currentPoint.x - x1Float;
|
||||
float newXFloat = absoluteStartXFloat;
|
||||
float newYFloat = currentPoint.y + deltaY;
|
||||
float newX1Float = x2Float;
|
||||
float newY1Float = currentPoint.y + deltaY1;
|
||||
float newX2Float = x1Float;
|
||||
float newY2Float = currentPoint.y + deltaY2;
|
||||
|
||||
float newXFloat = currentPoint.x + deltaX;
|
||||
float newYFloat = absoluteStartYFloat;
|
||||
float newX1Float = currentPoint.x + deltaX1;
|
||||
float newY1Float = y2Float;
|
||||
float newX2Float = currentPoint.x + deltaX2;
|
||||
float newY2Float = y1Float;
|
||||
|
||||
NSString * newXString = [macSVGDocument allocFloatString:newXFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
NSString * newYString = [macSVGDocument allocFloatString:newYFloat];
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
NSString * newX1String = [macSVGDocument allocFloatString:newX1Float];
|
||||
pathSegment.x1String = newX1String;
|
||||
|
||||
NSString * newY1String = [macSVGDocument allocFloatString:newY1Float];
|
||||
pathSegment.y1String = newY1String;
|
||||
|
||||
NSString * newX2String = [macSVGDocument allocFloatString:newX2Float];
|
||||
pathSegment.x2String = newX2String;
|
||||
|
||||
NSString * newY2String = [macSVGDocument allocFloatString:newY2Float];
|
||||
pathSegment.y2String = newY2String;
|
||||
pathSegment.xFloat = newXFloat;
|
||||
pathSegment.yFloat = newYFloat;
|
||||
pathSegment.x1Float = newX1Float;
|
||||
pathSegment.y1Float = newY1Float;
|
||||
pathSegment.x2Float = newX2Float;
|
||||
pathSegment.y2Float = newY2Float;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2811,34 +2657,20 @@
|
||||
|
||||
case 'A': // elliptical arc
|
||||
{
|
||||
float deltaX = currentPoint.x - absoluteStartXFloat;
|
||||
float deltaY = currentPoint.y - absoluteStartYFloat;
|
||||
|
||||
float newXFloat = currentPoint.x + deltaX;
|
||||
float newYFloat = absoluteStartYFloat;
|
||||
float newXFloat = absoluteStartXFloat;
|
||||
float newYFloat = currentPoint.y + deltaY;
|
||||
|
||||
NSString * newXString = [macSVGDocument allocFloatString:newXFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
NSString * newYString = [macSVGDocument allocFloatString:newYFloat];
|
||||
pathSegment.yString = newYString;
|
||||
pathSegment.xFloat = newXFloat;
|
||||
pathSegment.yFloat = newYFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
case 'a': // elliptical arc
|
||||
{
|
||||
NSString * xString = pathSegment.xString;
|
||||
NSString * yString = pathSegment.yString;
|
||||
|
||||
float xFloat = xString.floatValue;
|
||||
float yFloat = yString.floatValue;
|
||||
|
||||
xFloat = -xFloat;
|
||||
NSString * newXString = [macSVGDocument allocFloatString:xFloat];
|
||||
pathSegment.xString = newXString;
|
||||
|
||||
yFloat = -yFloat;
|
||||
NSString * newYString = [macSVGDocument allocFloatString:yFloat];
|
||||
pathSegment.yString = newYString;
|
||||
float xFloat = pathSegment.xFloat;
|
||||
pathSegment.xFloat = -xFloat;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -932,6 +932,9 @@
|
||||
currentPathSegment.absoluteXFloat = segmentAbsoluteX;
|
||||
currentPathSegment.absoluteYFloat = segmentAbsoluteY;
|
||||
|
||||
currentPathSegment.absoluteStartXFloat = segmentAbsoluteX;
|
||||
currentPathSegment.absoluteStartYFloat = segmentAbsoluteY;
|
||||
|
||||
if ((previousCommandChar == 'Z') || (previousCommandChar == 'z'))
|
||||
{
|
||||
subpathAbsoluteStartX = segmentAbsoluteStartX;
|
||||
@@ -1560,8 +1563,8 @@
|
||||
pathXMLElement:(NSXMLElement *)pathXMLElement
|
||||
{
|
||||
// path commands M,m
|
||||
NSString * xString = pathSegment.xString;
|
||||
NSString * yString = pathSegment.yString;
|
||||
NSString * xString = pathSegment.absoluteXString;
|
||||
NSString * yString = pathSegment.absoluteYString;
|
||||
|
||||
NSString * xPxString = [xString stringByAppendingString:@"px"];
|
||||
NSString * yPxString = [yString stringByAppendingString:@"px"];
|
||||
@@ -3160,6 +3163,8 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
NSString * pathString = [pathElement getAttribute:@"d"];
|
||||
|
||||
NSMutableArray * aPathsArray = [self buildPathSegmentsArrayWithPathString:pathString];
|
||||
|
||||
self.pathSegmentsArray = aPathsArray;
|
||||
|
||||
NSUInteger pathSegmentsCount = aPathsArray.count;
|
||||
|
||||
@@ -4292,6 +4297,17 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
|
||||
pathSegment.xString = newXString;
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
if (pathSegment.pathCommand == 'M')
|
||||
{
|
||||
pathSegment.absoluteXFloat = newX;
|
||||
pathSegment.absoluteYFloat = newY;
|
||||
}
|
||||
else if (pathSegment.pathCommand == 'm')
|
||||
{
|
||||
pathSegment.absoluteXFloat = pathSegment.absoluteStartXFloat + newX;
|
||||
pathSegment.absoluteYFloat = pathSegment.absoluteStartYFloat + newX;
|
||||
}
|
||||
|
||||
NSUInteger pathSegmentCount = (self.pathSegmentsArray).count;
|
||||
if (self.pathSegmentIndex < (pathSegmentCount - 1))
|
||||
@@ -5183,12 +5199,6 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
case 't': // smooth quadratic Bezier curve
|
||||
case 'a': // elliptical arc
|
||||
{
|
||||
float newNextPathSegmentAbsoluteX = nextPathSegmentAbsoluteX + deltaX;
|
||||
float newNextPathSegmentAbsoluteY = nextPathSegmentAbsoluteY + deltaY;
|
||||
|
||||
nextPathSegment.absoluteXFloat = newNextPathSegmentAbsoluteX;
|
||||
nextPathSegment.absoluteYFloat = newNextPathSegmentAbsoluteY;
|
||||
|
||||
float newNextPathSegmentX = nextPathSegmentX - deltaX;
|
||||
float newNextPathSegmentY = nextPathSegmentY - deltaY;
|
||||
|
||||
@@ -5199,15 +5209,6 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
}
|
||||
case 'c': // curveto
|
||||
{
|
||||
float nextPathSegmentAbsoluteX1 = nextPathSegment.absoluteX1Float;
|
||||
float nextPathSegmentAbsoluteY1 = nextPathSegment.absoluteY1Float;
|
||||
|
||||
float newNextPathSegmentAbsoluteX1 = nextPathSegmentAbsoluteX1 + deltaX;
|
||||
float newNextPathSegmentAbsoluteY1 = nextPathSegmentAbsoluteY1 + deltaY;
|
||||
|
||||
nextPathSegment.absoluteX1Float = newNextPathSegmentAbsoluteX1;
|
||||
nextPathSegment.absoluteY1Float = newNextPathSegmentAbsoluteY1;
|
||||
|
||||
float nextPathSegmentX2 = nextPathSegment.x2Float;
|
||||
float nextPathSegmentY2 = nextPathSegment.y2Float;
|
||||
|
||||
@@ -5229,9 +5230,6 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
}
|
||||
case 'h': // horizontal lineto
|
||||
{
|
||||
float newNextPathSegmentAbsoluteX = nextPathSegmentAbsoluteX + deltaX;
|
||||
nextPathSegment.absoluteXFloat = newNextPathSegmentAbsoluteX;
|
||||
|
||||
float newNextPathSegmentX = nextPathSegmentX + deltaX;
|
||||
nextPathSegment.xFloat = newNextPathSegmentX;
|
||||
|
||||
@@ -5239,9 +5237,6 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
}
|
||||
case 'v': // vertical lineto
|
||||
{
|
||||
float newNextPathSegmentAbsoluteY = nextPathSegmentAbsoluteX + deltaY;
|
||||
nextPathSegment.absoluteYFloat = newNextPathSegmentAbsoluteY;
|
||||
|
||||
float newNextPathSegmentY = nextPathSegmentY + deltaY;
|
||||
nextPathSegment.yFloat = newNextPathSegmentY;
|
||||
|
||||
@@ -5530,7 +5525,7 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
|
||||
pathSegment.xString = newXString;
|
||||
pathSegment.yString = newYString;
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
case 'L': // lineto absolute
|
||||
@@ -5775,6 +5770,8 @@ NSPoint bezierMidPoint(NSPoint p0, NSPoint p1, NSPoint p2)
|
||||
[self updatePathSegmentsAbsoluteValues:self.pathSegmentsArray];
|
||||
|
||||
[self updateActivePathInDOM:YES];
|
||||
|
||||
//NSLog(@"pathSegmentsArray - %@", self.pathSegmentsArray);
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
|
||||
@@ -435,6 +435,8 @@
|
||||
//[self.domSelectionControlsManager updateDOMSelectionRectsAndHandles]; // 20160716
|
||||
|
||||
[self reloadRulerViews];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:@"SVGWebViewReloaded" object:self];
|
||||
}
|
||||
|
||||
//==================================================================================
|
||||
|
||||
Reference in New Issue
Block a user