From ab766c528a84b4c642f71b1d3c3c5c4f072cf467 Mon Sep 17 00:00:00 2001 From: Zhang Yungui Date: Sat, 19 Apr 2014 23:25:05 +0800 Subject: [PATCH 01/15] Fix issue with `none` align parameter of preserveAspectRatio. none - Do not force uniform scaling. If `align` is none, then the optional `meetOrSlice` value is ignored. --- Inkpad-Core/SVG/WDSVGParser.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Inkpad-Core/SVG/WDSVGParser.m b/Inkpad-Core/SVG/WDSVGParser.m index 93515fd..522df01 100644 --- a/Inkpad-Core/SVG/WDSVGParser.m +++ b/Inkpad-Core/SVG/WDSVGParser.m @@ -136,6 +136,7 @@ - (CGAffineTransform) preserveAspectRatio:(NSString *)source withSize:(CGSize)si { NSArray *preserveAspectRatio = [[source lowercaseString] componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; BOOL slice = [preserveAspectRatio containsObject:@"slice"]; + BOOL notUniformScale = [preserveAspectRatio containsObject:@"none"]; enum {MIN, MID, MAX} xalign = MID, yalign = MID; for (NSString *token in preserveAspectRatio) { if ([token hasPrefix:@"xmin"]) { @@ -153,6 +154,7 @@ - (CGAffineTransform) preserveAspectRatio:(NSString *)source withSize:(CGSize)si } CGPoint translate = CGPointZero; CGSize scale = CGSizeMake(bounds.size.width / size.width, bounds.size.height / size.height); + if (notUniformScale) {} else if (((scale.width > scale.height) && slice) || ((scale.width < scale.height) && !slice)) { switch (xalign) { case MIN: From a6509b2ae778092268760697585c85aeaa4abca1 Mon Sep 17 00:00:00 2001 From: Zhang Yungui Date: Sun, 20 Apr 2014 11:49:44 +0800 Subject: [PATCH 02/15] Set the Layer ID to the Inkpad layer name. #90 --- Inkpad-Core/Model/WDLayer.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Inkpad-Core/Model/WDLayer.m b/Inkpad-Core/Model/WDLayer.m index 2315d99..43677c3 100644 --- a/Inkpad-Core/Model/WDLayer.m +++ b/Inkpad-Core/Model/WDLayer.m @@ -180,7 +180,9 @@ - (WDXMLElement *) SVGElement } WDXMLElement *layer = [WDXMLElement elementWithName:@"g"]; - [layer setAttribute:@"id" value:[[WDSVGHelper sharedSVGHelper] uniqueIDWithPrefix:@"Layer"]]; + NSString *uniqueName = [[WDSVGHelper sharedSVGHelper] uniqueIDWithPrefix: + [@"Layer$" stringByAppendingString:name_]]; + [layer setAttribute:@"id" value:[uniqueName substringFromIndex:6]]; [layer setAttribute:@"inkpad:layerName" value:name_]; if (self.hidden) { From 55b9046bab38a81477cbdbc98b1d26d5457744d0 Mon Sep 17 00:00:00 2001 From: Zhang Yungui Date: Sun, 20 Apr 2014 16:47:37 +0800 Subject: [PATCH 03/15] Not import header files which have already imported indirectly. Thus Doxygen can generate more clearer include dependency graph. [InkpadDoxygen](https://github.com/rhcad/InkpadDoxygen) is a generator example using Doxygen. --- Classes/WDCanvasController.h | 2 -- Classes/WDCanvasController.m | 2 -- Classes/WDColorAdjustmentController.m | 1 - Classes/WDHueSaturationController.m | 1 - Classes/WDSelectionView.m | 2 -- Inkpad-Core/Controllers/WDDrawingController.m | 3 --- Inkpad-Core/Controllers/WDPropertyManager.m | 1 - Inkpad-Core/Model/WDAbstractPath.h | 1 - Inkpad-Core/Model/WDAbstractPath.m | 1 - Inkpad-Core/Model/WDCurveFit.m | 1 - Inkpad-Core/Model/WDDrawing.m | 2 -- Inkpad-Core/Model/WDElement.m | 3 --- Inkpad-Core/Model/WDImage.m | 3 --- Inkpad-Core/Model/WDLayer.m | 1 - Inkpad-Core/Model/WDPath.m | 1 - Inkpad-Core/Model/WDText.m | 2 -- Inkpad-Core/Model/WDTextPath.m | 1 - Inkpad-Core/SVG/WDSVGParser.h | 3 --- Inkpad-Core/SVG/WDSVGParser.m | 2 -- Inkpad-Core/SVG/WDSVGStyleParser.m | 1 - Inkpad-Core/Tools/WDEraserTool.m | 1 - Inkpad-Core/Tools/WDEyedropperTool.m | 1 - Inkpad-Core/Tools/WDFreehandTool.m | 1 - Inkpad-Core/Tools/WDPenTool.m | 1 - Inkpad-Core/Tools/WDSelectionTool.m | 2 -- Inkpad-Core/Tools/WDShapeTool.m | 2 -- Inkpad-Core/Tools/WDTextTool.m | 1 - Inkpad-Core/Tools/WDTool.m | 1 - Inkpad-Core/livarot/Path.cpp | 1 - Inkpad-Core/livarot/PathConversion.cpp | 1 - Inkpad-Core/livarot/ShapeSweep.cpp | 1 - Inkpad-Core/livarot/ShapeSweepUtils.cpp | 1 - Openclipart/OCAThumbnailCell.m | 1 - 33 files changed, 49 deletions(-) diff --git a/Classes/WDCanvasController.h b/Classes/WDCanvasController.h index f0d84fe..35c7a03 100644 --- a/Classes/WDCanvasController.h +++ b/Classes/WDCanvasController.h @@ -10,8 +10,6 @@ // #import -#import "WDElement.h" -#import "WDStrokeStyle.h" @class WDCanvas; @class WDColorBalanceController; diff --git a/Classes/WDCanvasController.m b/Classes/WDCanvasController.m index d0bc6d0..67ceae0 100644 --- a/Classes/WDCanvasController.m +++ b/Classes/WDCanvasController.m @@ -11,7 +11,6 @@ #import #import -#import "WDAbstractPath.h" #import "WDButton.h" #import "WDCanvas.h" #import "WDCanvasController.h" @@ -30,7 +29,6 @@ #import "WDLayerController.h" #import "WDMenu.h" #import "WDMenuItem.h" -#import "WDPath.h" #import "WDPropertyManager.h" #import "WDRotateTool.h" #import "WDSelectionTool.h" diff --git a/Classes/WDColorAdjustmentController.m b/Classes/WDColorAdjustmentController.m index 379c0b8..c050583 100644 --- a/Classes/WDColorAdjustmentController.m +++ b/Classes/WDColorAdjustmentController.m @@ -14,7 +14,6 @@ #import "WDCanvas.h" #import "WDDrawingController.h" #import "WDColorAdjustmentController.h" -#import "WDDrawing.h" #import "WDModalTitleBar.h" #import "WDPaletteBackgroundView.h" #import "UIView+Additions.h" diff --git a/Classes/WDHueSaturationController.m b/Classes/WDHueSaturationController.m index 0839cd4..8f2ac50 100644 --- a/Classes/WDHueSaturationController.m +++ b/Classes/WDHueSaturationController.m @@ -12,7 +12,6 @@ #import "WDDrawingController.h" #import "WDColor.h" #import "WDColorSlider.h" -#import "WDElement.h" #import "WDHueSaturationController.h" #import "WDHueShifter.h" diff --git a/Classes/WDSelectionView.m b/Classes/WDSelectionView.m index fa7b0ba..69046c7 100644 --- a/Classes/WDSelectionView.m +++ b/Classes/WDSelectionView.m @@ -12,8 +12,6 @@ #import "WDBezierNode.h" #import "WDCanvas.h" #import "WDDrawingController.h" -#import "WDDrawing.h" -#import "WDElement.h" #import "WDGLUtilities.h" #import "WDLayer.h" #import "WDPath.h" diff --git a/Inkpad-Core/Controllers/WDDrawingController.m b/Inkpad-Core/Controllers/WDDrawingController.m index e7c36c6..f074bc5 100644 --- a/Inkpad-Core/Controllers/WDDrawingController.m +++ b/Inkpad-Core/Controllers/WDDrawingController.m @@ -16,11 +16,9 @@ #import "NSArray+Additions.h" #import "NSString+Additions.h" #import "UIImage+Additions.h" -#import "WDAbstractPath.h" #import "WDBezierNode.h" #import "WDColor.h" #import "WDCompoundPath.h" -#import "WDDrawing.h" #import "WDDrawingController.h" #import "WDDynamicGuideController.h" #import "WDFontManager.h" @@ -28,7 +26,6 @@ #import "WDImage.h" #import "WDInspectableProperties.h" #import "WDLayer.h" -#import "WDPath.h" #import "WDPathfinder.h" #import "WDPropertyManager.h" #import "WDText.h" diff --git a/Inkpad-Core/Controllers/WDPropertyManager.m b/Inkpad-Core/Controllers/WDPropertyManager.m index a636560..60b7c8a 100644 --- a/Inkpad-Core/Controllers/WDPropertyManager.m +++ b/Inkpad-Core/Controllers/WDPropertyManager.m @@ -9,7 +9,6 @@ // Copyright (c) 2011-2013 Steve Sprang // -#import "WDAbstractPath.h" #import "WDColor.h" #import "WDDrawingController.h" #import "WDFontManager.h" diff --git a/Inkpad-Core/Model/WDAbstractPath.h b/Inkpad-Core/Model/WDAbstractPath.h index cce027e..6c2722f 100644 --- a/Inkpad-Core/Model/WDAbstractPath.h +++ b/Inkpad-Core/Model/WDAbstractPath.h @@ -11,7 +11,6 @@ #import #import "WDStylable.h" -#import "WDStrokeStyle.h" @protocol WDPathPainter; diff --git a/Inkpad-Core/Model/WDAbstractPath.m b/Inkpad-Core/Model/WDAbstractPath.m index 9274be1..5e8bfff 100644 --- a/Inkpad-Core/Model/WDAbstractPath.m +++ b/Inkpad-Core/Model/WDAbstractPath.m @@ -13,7 +13,6 @@ #import #endif -#import "WDAbstractPath.h" #import "WDArrowhead.h" #import "WDColor.h" #import "WDCompoundPath.h" diff --git a/Inkpad-Core/Model/WDCurveFit.m b/Inkpad-Core/Model/WDCurveFit.m index fab3620..02befd7 100644 --- a/Inkpad-Core/Model/WDCurveFit.m +++ b/Inkpad-Core/Model/WDCurveFit.m @@ -11,7 +11,6 @@ #import "FitCurves.h" #import "WDBezierNode.h" -#import "WDBezierSegment.h" #import "WDCurveFit.h" #import "WDPath.h" #import "WDUtilities.h" diff --git a/Inkpad-Core/Model/WDDrawing.m b/Inkpad-Core/Model/WDDrawing.m index 7ce7afd..3f8c44e 100644 --- a/Inkpad-Core/Model/WDDrawing.m +++ b/Inkpad-Core/Model/WDDrawing.m @@ -16,8 +16,6 @@ #import "UIColor+Additions.h" #import "WDColor.h" #import "WDDocumentProtocol.h" -#import "WDDrawing.h" -#import "WDElement.h" #import "WDImage.h" #import "WDImageData.h" #import "WDLayer.h" diff --git a/Inkpad-Core/Model/WDElement.m b/Inkpad-Core/Model/WDElement.m index a15b0ea..34a0669 100644 --- a/Inkpad-Core/Model/WDElement.m +++ b/Inkpad-Core/Model/WDElement.m @@ -11,13 +11,10 @@ #import "UIColor+Additions.h" #import "WDColor.h" -#import "WDDrawing.h" -#import "WDElement.h" #import "WDGLUtilities.h" #import "WDGroup.h" #import "WDInspectableProperties.h" #import "WDLayer.h" -#import "WDPickResult.h" #import "WDPropertyManager.h" #import "WDShadow.h" #import "WDSVGHelper.h" diff --git a/Inkpad-Core/Model/WDImage.m b/Inkpad-Core/Model/WDImage.m index a89d9b8..f33b760 100644 --- a/Inkpad-Core/Model/WDImage.m +++ b/Inkpad-Core/Model/WDImage.m @@ -15,14 +15,11 @@ #endif #import "UIColor+Additions.h" -#import "WDBezierSegment.h" #import "WDColor.h" -#import "WDDrawing.h" #import "WDGLUtilities.h" #import "WDImage.h" #import "WDImageData.h" #import "WDLayer.h" -#import "WDPickResult.h" #import "WDShadow.h" #import "WDSVGHelper.h" #import "WDUtilities.h" diff --git a/Inkpad-Core/Model/WDLayer.m b/Inkpad-Core/Model/WDLayer.m index 43677c3..f785255 100644 --- a/Inkpad-Core/Model/WDLayer.m +++ b/Inkpad-Core/Model/WDLayer.m @@ -10,7 +10,6 @@ // #import "UIColor+Additions.h" -#import "WDDrawing.h" #import "WDElement.h" #import "WDLayer.h" #import "WDSVGHelper.h" diff --git a/Inkpad-Core/Model/WDPath.m b/Inkpad-Core/Model/WDPath.m index e3ca350..54c9726 100644 --- a/Inkpad-Core/Model/WDPath.m +++ b/Inkpad-Core/Model/WDPath.m @@ -12,7 +12,6 @@ #import "UIColor+Additions.h" #import "WDArrowhead.h" #import "WDBezierNode.h" -#import "WDBezierSegment.h" #import "WDColor.h" #import "WDCompoundPath.h" #import "WDFillTransform.h" diff --git a/Inkpad-Core/Model/WDText.m b/Inkpad-Core/Model/WDText.m index bed1b12..b479252 100644 --- a/Inkpad-Core/Model/WDText.m +++ b/Inkpad-Core/Model/WDText.m @@ -17,9 +17,7 @@ #import #import "NSString+Additions.h" #import "UIColor+Additions.h" -#import "WDBezierSegment.h" #import "WDColor.h" -#import "WDDrawing.h" #import "WDFillTransform.h" #import "WDFontManager.h" #import "WDGLUtilities.h" diff --git a/Inkpad-Core/Model/WDTextPath.m b/Inkpad-Core/Model/WDTextPath.m index 8b8d22e..f687b74 100644 --- a/Inkpad-Core/Model/WDTextPath.m +++ b/Inkpad-Core/Model/WDTextPath.m @@ -18,7 +18,6 @@ #import "NSString+Additions.h" #import "UIColor+Additions.h" #import "WDBezierNode.h" -#import "WDBezierSegment.h" #import "WDColor.h" #import "WDFillTransform.h" #import "WDFontManager.h" diff --git a/Inkpad-Core/SVG/WDSVGParser.h b/Inkpad-Core/SVG/WDSVGParser.h index 0298a87..6fa8b66 100644 --- a/Inkpad-Core/SVG/WDSVGParser.h +++ b/Inkpad-Core/SVG/WDSVGParser.h @@ -12,9 +12,6 @@ // #import -#import "WDDrawing.h" -#import "WDSVGElement.h" -#import "WDSVGParserStateStack.h" #import "WDSVGStyleParser.h" #import "WDSVGTransformParser.h" diff --git a/Inkpad-Core/SVG/WDSVGParser.m b/Inkpad-Core/SVG/WDSVGParser.m index 522df01..efde4a1 100644 --- a/Inkpad-Core/SVG/WDSVGParser.m +++ b/Inkpad-Core/SVG/WDSVGParser.m @@ -20,8 +20,6 @@ #import "WDGroup.h" #import "WDImage.h" #import "WDLayer.h" -#import "WDPath.h" -#import "WDSVGElement.h" #import "WDSVGParser.h" #import "WDSVGPathParser.h" #import "WDText.h" diff --git a/Inkpad-Core/SVG/WDSVGStyleParser.m b/Inkpad-Core/SVG/WDSVGStyleParser.m index ca89b58..844f823 100644 --- a/Inkpad-Core/SVG/WDSVGStyleParser.m +++ b/Inkpad-Core/SVG/WDSVGStyleParser.m @@ -11,7 +11,6 @@ // Copyright (c) 2011-2013 Steve Sprang // -#import "WDAbstractPath.h" #import "WDColor.h" #import "WDFillTransform.h" #import "WDGradient.h" diff --git a/Inkpad-Core/Tools/WDEraserTool.m b/Inkpad-Core/Tools/WDEraserTool.m index 391b4d2..1375f9e 100644 --- a/Inkpad-Core/Tools/WDEraserTool.m +++ b/Inkpad-Core/Tools/WDEraserTool.m @@ -13,7 +13,6 @@ #import "WDCanvas.h" #import "WDColor.h" #import "WDCurveFit.h" -#import "WDDrawing.h" #import "WDDrawingController.h" #import "WDEraserTool.h" #import "WDPath.h" diff --git a/Inkpad-Core/Tools/WDEyedropperTool.m b/Inkpad-Core/Tools/WDEyedropperTool.m index 0744309..0d281fd 100644 --- a/Inkpad-Core/Tools/WDEyedropperTool.m +++ b/Inkpad-Core/Tools/WDEyedropperTool.m @@ -12,7 +12,6 @@ #import "WDEyedropperTool.h" #import "WDCanvas.h" #import "WDDrawingController.h" -#import "WDElement.h" #import "WDImage.h" #import "WDInspectableProperties.h" #import "WDPickResult.h" diff --git a/Inkpad-Core/Tools/WDFreehandTool.m b/Inkpad-Core/Tools/WDFreehandTool.m index ba25da8..fb1583a 100644 --- a/Inkpad-Core/Tools/WDFreehandTool.m +++ b/Inkpad-Core/Tools/WDFreehandTool.m @@ -13,7 +13,6 @@ #import "WDCanvas.h" #import "WDColor.h" #import "WDCurveFit.h" -#import "WDDrawing.h" #import "WDDrawingController.h" #import "WDFreehandTool.h" #import "WDInspectableProperties.h" diff --git a/Inkpad-Core/Tools/WDPenTool.m b/Inkpad-Core/Tools/WDPenTool.m index a4f46e1..a3a54d3 100644 --- a/Inkpad-Core/Tools/WDPenTool.m +++ b/Inkpad-Core/Tools/WDPenTool.m @@ -12,7 +12,6 @@ #import "WDBezierNode.h" #import "WDCanvas.h" #import "WDDrawingController.h" -#import "WDDrawing.h" #import "WDFillTransform.h" #import "WDInspectableProperties.h" #import "WDPath.h" diff --git a/Inkpad-Core/Tools/WDSelectionTool.m b/Inkpad-Core/Tools/WDSelectionTool.m index c5d0a28..dec4a87 100644 --- a/Inkpad-Core/Tools/WDSelectionTool.m +++ b/Inkpad-Core/Tools/WDSelectionTool.m @@ -9,7 +9,6 @@ // Copyright (c) 2011-2013 Steve Sprang // -#import "WDAbstractPath.h" #import "WDBezierNode.h" #import "WDCanvas.h" #import "WDCanvasController.h" @@ -18,7 +17,6 @@ #import "WDDynamicGuideController.h" #import "WDDrawingController.h" #import "WDFillTransform.h" -#import "WDPath.h" #import "WDPropertyManager.h" #import "WDSelectionTool.h" #import "WDTextPath.h" diff --git a/Inkpad-Core/Tools/WDShapeTool.m b/Inkpad-Core/Tools/WDShapeTool.m index 132b271..ce750e7 100644 --- a/Inkpad-Core/Tools/WDShapeTool.m +++ b/Inkpad-Core/Tools/WDShapeTool.m @@ -10,10 +10,8 @@ // -#import "WDAbstractPath.h" #import "WDBezierNode.h" #import "WDCanvas.h" -#import "WDDrawing.h" #import "WDDrawingController.h" #import "WDDynamicGuideController.h" #import "WDInspectableProperties.h" diff --git a/Inkpad-Core/Tools/WDTextTool.m b/Inkpad-Core/Tools/WDTextTool.m index ddb779e..d08a298 100644 --- a/Inkpad-Core/Tools/WDTextTool.m +++ b/Inkpad-Core/Tools/WDTextTool.m @@ -13,7 +13,6 @@ #import "WDCanvas.h" #import "WDCanvasController.h" #import "WDColor.h" -#import "WDDrawing.h" #import "WDDrawingController.h" #import "WDPath.h" #import "WDText.h" diff --git a/Inkpad-Core/Tools/WDTool.m b/Inkpad-Core/Tools/WDTool.m index 406c592..f99e9bf 100644 --- a/Inkpad-Core/Tools/WDTool.m +++ b/Inkpad-Core/Tools/WDTool.m @@ -10,7 +10,6 @@ // #import "WDCanvas.h" -#import "WDDrawing.h" #import "WDDrawingController.h" #import "WDPickResult.h" #import "WDTool.h" diff --git a/Inkpad-Core/livarot/Path.cpp b/Inkpad-Core/livarot/Path.cpp index f1b21be..512d576 100644 --- a/Inkpad-Core/livarot/Path.cpp +++ b/Inkpad-Core/livarot/Path.cpp @@ -8,7 +8,6 @@ #include "Path.h" #include "Shape.h" -#include "MyMath.h" #include diff --git a/Inkpad-Core/livarot/PathConversion.cpp b/Inkpad-Core/livarot/PathConversion.cpp index d687db3..e2f573c 100644 --- a/Inkpad-Core/livarot/PathConversion.cpp +++ b/Inkpad-Core/livarot/PathConversion.cpp @@ -8,7 +8,6 @@ #include "Path.h" #include "Shape.h" -#include "MyMath.h" void Path::ConvertWithBackData(float treshhold) { diff --git a/Inkpad-Core/livarot/ShapeSweep.cpp b/Inkpad-Core/livarot/ShapeSweep.cpp index 2c6b248..3d856f1 100644 --- a/Inkpad-Core/livarot/ShapeSweep.cpp +++ b/Inkpad-Core/livarot/ShapeSweep.cpp @@ -7,7 +7,6 @@ */ #include "Shape.h" -#include "LivarotDefs.h" #include "MyMath.h" diff --git a/Inkpad-Core/livarot/ShapeSweepUtils.cpp b/Inkpad-Core/livarot/ShapeSweepUtils.cpp index e021913..5103455 100644 --- a/Inkpad-Core/livarot/ShapeSweepUtils.cpp +++ b/Inkpad-Core/livarot/ShapeSweepUtils.cpp @@ -7,7 +7,6 @@ */ #include "Shape.h" -#include "LivarotDefs.h" #include "MyMath.h" SweepEvent::SweepEvent() diff --git a/Openclipart/OCAThumbnailCell.m b/Openclipart/OCAThumbnailCell.m index c79171d..66b284f 100644 --- a/Openclipart/OCAThumbnailCell.m +++ b/Openclipart/OCAThumbnailCell.m @@ -11,7 +11,6 @@ #import "OCAThumbnailCell.h" #import "OCAEntry.h" -#import "OCAThumbnailCache.h" #import "UIView+Additions.h" @interface OCAThumbnailCell () From 7028dcf72657e678d5b2d433298f68ee6f771077 Mon Sep 17 00:00:00 2001 From: Maddy Date: Mon, 4 May 2015 21:17:03 -0700 Subject: [PATCH 04/15] Fix for issue #133 Navbar was hiding the top fraction of the view frame. Setting edgesForExtendedLayout to None. --- Classes/WDFillController.m | 2 ++ Classes/WDFontController.m | 2 ++ Classes/WDShadowController.m | 2 ++ Classes/WDStrokeController.m | 2 ++ Classes/WDSwatchController.m | 3 +++ 5 files changed, 11 insertions(+) diff --git a/Classes/WDFillController.m b/Classes/WDFillController.m index 0a9140e..25a62ee 100644 --- a/Classes/WDFillController.m +++ b/Classes/WDFillController.m @@ -104,6 +104,8 @@ - (void) viewDidLoad { [super viewDidLoad]; + self.edgesForExtendedLayout = UIRectEdgeNone; + colorController_ = [[WDColorController alloc] initWithNibName:@"Color" bundle:nil]; [self.view addSubview:colorController_.view]; diff --git a/Classes/WDFontController.m b/Classes/WDFontController.m index ad826e9..2e80fb3 100644 --- a/Classes/WDFontController.m +++ b/Classes/WDFontController.m @@ -116,6 +116,8 @@ - (void)viewDidLoad { [super viewDidLoad]; + self.edgesForExtendedLayout = UIRectEdgeNone; + sizeSlider_.minimumValue = kMinFontSize; sizeSlider_.maximumValue = kMaxFontSize; diff --git a/Classes/WDShadowController.m b/Classes/WDShadowController.m index 5898d70..82f8b71 100644 --- a/Classes/WDShadowController.m +++ b/Classes/WDShadowController.m @@ -161,6 +161,8 @@ - (void) viewDidLoad { [super viewDidLoad]; + self.edgesForExtendedLayout = UIRectEdgeNone; + colorController_ = [[WDColorController alloc] initWithNibName:@"Color" bundle:nil]; [self.view addSubview:colorController_.view]; colorController_.colorWell.shadowMode = YES; diff --git a/Classes/WDStrokeController.m b/Classes/WDStrokeController.m index c1263f5..82d5486 100644 --- a/Classes/WDStrokeController.m +++ b/Classes/WDStrokeController.m @@ -302,6 +302,8 @@ - (void) viewDidLoad { [super viewDidLoad]; + self.edgesForExtendedLayout = UIRectEdgeNone; + colorController_ = [[WDColorController alloc] initWithNibName:@"Color" bundle:nil]; [self.view addSubview:colorController_.view]; diff --git a/Classes/WDSwatchController.m b/Classes/WDSwatchController.m index 811d5c0..003c433 100644 --- a/Classes/WDSwatchController.m +++ b/Classes/WDSwatchController.m @@ -183,6 +183,9 @@ - (void)loadView [collectionView_ registerClass:[WDSwatchCell class] forCellWithReuseIdentifier:@"cellID"]; self.view = collectionView_; + + self.edgesForExtendedLayout = UIRectEdgeNone; + } - (NSArray *) toolbarItems From 1ec919bd1218630f2560fb54a87ca33c42eaf0f8 Mon Sep 17 00:00:00 2001 From: Yao Date: Wed, 23 Sep 2015 18:05:50 +0800 Subject: [PATCH 05/15] Fix Xcode7 compile error: Absolute value function 'fabsf' given an argument of type 'double' but has parameter of type 'float' which may cause truncation of value --- Inkpad-Core/SVG/WDSVGPathParser.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inkpad-Core/SVG/WDSVGPathParser.m b/Inkpad-Core/SVG/WDSVGPathParser.m index b6f225c..8f4e4ff 100644 --- a/Inkpad-Core/SVG/WDSVGPathParser.m +++ b/Inkpad-Core/SVG/WDSVGPathParser.m @@ -121,7 +121,7 @@ BOOL decomposeArcToCubic(CGMutablePathRef path, float angle, float rx, float ry, // Some results of atan2 on some platform implementations are not exact enough. So that we get more // cubic curves than expected here. Adding 0.001f reduces the count of segments to the correct count. - int segments = ceilf(fabsf(thetaArc / (M_PI_2 + 0.001f))); + int segments = ceilf(fabs(thetaArc / (M_PI_2 + 0.001f))); for (int i = 0; i < segments; ++i) { float startTheta = theta1 + i * thetaArc / segments; float endTheta = theta1 + (i + 1) * thetaArc / segments; From 230d77c8218520ba7c313d0f48c36da23a355899 Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Fri, 12 Feb 2016 00:32:33 +0000 Subject: [PATCH 06/15] Add .travis.yml --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9175122 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: objective-c +xcode_project: Inkpad.xcodeproj +xcode_scheme: InkPad From cecc12d88e94d6782fe124792adf6341f84a655a Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Fri, 12 Feb 2016 00:40:11 +0000 Subject: [PATCH 07/15] Sharing Xcode schemes to allow Travis to work --- .../xcshareddata/xcschemes/Inkpad.xcscheme | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 Inkpad.xcodeproj/xcshareddata/xcschemes/Inkpad.xcscheme diff --git a/Inkpad.xcodeproj/xcshareddata/xcschemes/Inkpad.xcscheme b/Inkpad.xcodeproj/xcshareddata/xcschemes/Inkpad.xcscheme new file mode 100644 index 0000000..be83eb0 --- /dev/null +++ b/Inkpad.xcodeproj/xcshareddata/xcschemes/Inkpad.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 6a8c928b16dfe2fb3e4f4ff1ef82306dc0a4128b Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Fri, 12 Feb 2016 00:45:57 +0000 Subject: [PATCH 08/15] Fix .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9175122..af3bae7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ language: objective-c xcode_project: Inkpad.xcodeproj -xcode_scheme: InkPad +xcode_scheme: Inkpad From c42c6b0f3023cbf01e287ba1d04b7650f372413b Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Fri, 12 Feb 2016 01:22:44 +0000 Subject: [PATCH 09/15] Fix for code signing errors --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index af3bae7..37ce65c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ language: objective-c -xcode_project: Inkpad.xcodeproj -xcode_scheme: Inkpad + +script: xctool -project Inkpad.xcodeproj -scheme Inkpad build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO From e15e11ca8444f8f33f11cde91c377760ade0e44d Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Fri, 12 Feb 2016 01:32:23 +0000 Subject: [PATCH 10/15] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ab5e37e..14275c5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Inkpad +Inkpad Inkpad [![Build Status](https://travis-ci.org/alistairmcmillan/Inkpad.svg?branch=develop)](https://travis-ci.org/alistairmcmillan/Inkpad) ====== Inkpad is a vector illustration app designed from scratch for the iPad. It supports paths, compound paths, text, images, groups, masks, gradient fills, and an unlimited number of layers. From f6e591bd9c898211b64d5cd6757ee80da218be4b Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Fri, 12 Feb 2016 09:15:26 +0000 Subject: [PATCH 11/15] Add LSApplicationQueriesSchemes key for Dropbox --- Inkpad-Info.plist | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Inkpad-Info.plist b/Inkpad-Info.plist index 9e2936e..7ae27c6 100644 --- a/Inkpad-Info.plist +++ b/Inkpad-Info.plist @@ -146,5 +146,9 @@ + LSApplicationQueriesSchemes + + dbapi-2 + From b704155d08e385239f1188941740fccb550bb686 Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Fri, 12 Feb 2016 09:18:25 +0000 Subject: [PATCH 12/15] Fix Dropbox permission problem --- Classes/WDAppDelegate.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/WDAppDelegate.m b/Classes/WDAppDelegate.m index 38bc86b..b50d7a0 100644 --- a/Classes/WDAppDelegate.m +++ b/Classes/WDAppDelegate.m @@ -40,7 +40,7 @@ - (void)applicationDidFinishLaunching:(UIApplication *)application NSString *consumerKey = @"xxxx"; NSString *consumerSecret = @"xxxx"; - DBSession *session = [[DBSession alloc] initWithAppKey:consumerKey appSecret:consumerSecret root:kDBRootDropbox]; + DBSession *session = [[DBSession alloc] initWithAppKey:consumerKey appSecret:consumerSecret root:kDBRootAppFolder]; session.delegate = self; // DBSessionDelegate methods allow you to handle re-authenticating [DBSession setSharedSession:session]; From 889f38e08ff584b5c950831fc417997af7586ad9 Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Tue, 15 Mar 2016 23:22:51 +0000 Subject: [PATCH 13/15] Adding Arabic translation by Abduolkader Idriss (https://github.com/zaxf) From his Inkpad fork https://github.com/zaxf/iPhotoshop --- Help/index_ar.html | 374 ++++++++++++++++++++++++++ Inkpad.xcodeproj/project.pbxproj | 13 + README.md | 1 + ar.lproj/ColorBalance.strings | 33 +++ ar.lproj/HueSaturation.strings | 24 ++ ar.lproj/OpenClipArt.strings | 12 + ar.lproj/Shadow.strings | 9 + ar.lproj/Stroke.strings | 6 + en.lproj/ar.lproj/Localizable.strings | Bin 0 -> 22328 bytes 9 files changed, 472 insertions(+) create mode 100755 Help/index_ar.html create mode 100755 ar.lproj/ColorBalance.strings create mode 100755 ar.lproj/HueSaturation.strings create mode 100755 ar.lproj/OpenClipArt.strings create mode 100755 ar.lproj/Shadow.strings create mode 100755 ar.lproj/Stroke.strings create mode 100755 en.lproj/ar.lproj/Localizable.strings diff --git a/Help/index_ar.html b/Help/index_ar.html new file mode 100755 index 0000000..627a21d --- /dev/null +++ b/Help/index_ar.html @@ -0,0 +1,374 @@ + + + + + + + Inkpad شرح + + + + + + + +
+ +

ما هو Inkpad؟

+ + + + Inkpad هو برنامج شبيه بـ illustration و Inkpad صمم خصيصاً للآيباد. فهو يدعم المسارات(paths)، والنصوص على المسارات، والمجموعات، والأقنعة، والتعبئة المتدرجة، وعدد غير محدود من الطبقات. + +
+ +

المعرض

+ هو محل تواجد كل التصاميم الخاصة بك في شكل صور مصغرة لكل من التصاميم والنماذج. اضغط على الصورة المصغرة للعرض أو التحرير. اضغط على العنوان تحت الصورة المصغرة لإدخال عنوان جديد. +

+ انقر فوق زر + في أعلى الزاوية اليمنى من الشاشة لإنشاء تصميم جديد. +

+ انقر فوق زر الكاميرا لالتقاط صورة واستخدامها كخلفية لتصميم جديد. +

+ + +

الإستيراد

+ يمكن لـ Inkpad استيراد الصور والخطوط، وملفات SVG، SVGZ، Inkpad عن طريق Dropbox. إنقر على استيراد للوصول إلى حساب Dropbox الخاص بك. +

+ + تظهر الخطوط المستوردة في القائمة السفلى من المعرض بإسم الخطوط حيث يمكن إزالتها إذا لم تعد ترغب في استخدامها. حرف A في أسفل الشاشة عند تحرير تصميم ما، يعرض لوحة الخطوط المستوردة مخلوطة مع الخطوط المضمنة. +

+ انقر فوق زر نماذج لإعادة تثبيت النموذج الفنية. +

+ +

التصدير

+ انقر فوق تحديد للدخول في وضع التحديد. +

+ أثناء وضع التحديد، اضغط على الصور المصغرة لتحديدها (أو إلغاء تحديدها). عندما يتم اختيار تصميم واحد أو أكثر، انقر على Email لإرسالها بالبريد الإلكتروني، أو انقر Dropbox لتحميلها مباشرة إلى Dropbox الخاص بك. +

+ انقر فوق زر سلة المهملات لحذف التصاميم المحددة. +

+ انقر فوق زر تم لإنهاء وضع التحديد. + +

التصاميم

+ + استخدم زر تحرير لقص، نسخ، لصق، حذف، وتغيير التحديد. +

+ استخدم قائمة ترتيب لنقل الأشكال إلى الوراء وإلى الأمام في الحزمة، عمل تجميع وفك تجميع الأشكال، وتوزيع، ومحاذاة الأشكال. +

+ استخدم قائمة مسار لإضافة وإزالة النقاط، وكذلك مخطط الحجم، ضم ودمج المسارات، عمل الأقنعة، ووضع النص على المسار. +

+ + Color Adjustment + استخدام قائمة تعديل اللون لمزج الألوان عبر ملء الكائنات المحددة، وضبط التدرج، والتشبع والسطوع وتوازن اللون للكائنات المحددة، وعكس ألوان التحديد. +

+ + عند مزج الألوان، يجب أن تكون أطراف الكائنات ممتلئة اللون في كل اختيار (وليست متدرجة الألوان). على سبيل المثال، عند المزج الأفقي، يجب أن تكون الكائنات ممتلئة اللون في أقصى اليسار وأقصى اليمين. بالإضافة إلى ذلك، يجب تحديد ما لا يقل عن 3 كائنات لتمكين خيارات المزج. +

+ + Undo + اضغط على زر التراجع للتراجع عن التغييرات. +

+ + Redo + اضغط على زر الإعادة لإعادة التغييرات. +

+ + في أعلى الجانب الأيمن من الشاشة هناك المزيد من الخيارات للتعامل مع التصميم: +

+ +

+ Drawing Nav Bar +
+

+ على التوالي، وهي: الإحتواء ، إضافة صورة، الإعدادات ، ثم مشاركة / التصدير . +

+ +

الإعدادات

+ استخدام لوحة الإعدادات لتشغيل الشبكة وإيقافها، التحكم في تباعد الشبكة، كما توفر لك إمكانية الإختيار بين تمكين الإنطباق على الشبكة من عدمة، أو الإنجذاب إلى النقاط في المسارات الموجودة، أو إلى حواف المسارات الموجودة. يمكنك أيضا تشغيل المساطر وإيقاف تشغيلها، تغيير وحدات التصميم، وتعديل أبعاد التصميم. +

+ + عندما يتم عزل طبقة مفعلة ، يمكنك فقط تحرير الطبقة النشطة. وسوف تكون الطبقات الأخرى مخفية في التصميم بشكل جزئي. هذا يجعل من السهل تحرير المحتوى في طبقة واحدة دون قصد لمس شيء في الطبقة الأخرى. +

+ + عند تمكين وضع التخطيط ، لايمكنك أن ترى سوى الخطوط العريضة للأشكال في التصميم. وهذا يجعل من السهل تحديد الكائنات التي يتم حجبها من قبل الكائنات الأخرى. كما أنه يقلل كثيرا من وقت إنتاج التصاميم المعقدة. +

+ + +

التكبير

+ استخدام إصبعيك للتكبير والتصغير. بمجرد الإنتهاء من ذلك، يمكنك رفع إصبع واحد وإبقاء الآخر للتنقل حول ورقة التصميم دون الحاجة للتكبير والتصغير مرة أخرى. +

+ إذا تم تعيين وحدة الرسم بالبكسل، فالتصميم على حجم البكسل الفعلي عند مستوى تكبير 100٪ (كما هو مبين في شريط التنقل). +

+ إذا كنت تستخدم الوحدات للقياس المادي (inches, centimeters, الخ)،Inkpad يعرض الرسم في حجم الطباعة عند مستوى التكبير 100٪. + +

الأدوات

+ + Tool Palette + Inkpad يوفر عددا من الأدوات لإنشاء وتعديل التصميم. +

+ لوحة الأدوات قابلة للتحريك فوق ورقة التصميم، قم بتغيير مكانها إذا لزم الأمر. +

+ + يمكنك تعديل إستخدام العديد من الأدوات عن طريق الضغط باستمرار على الاصبع الثاني في لوحة التصميم بعد بدأ السحب. إذا قمت بتطبيق اللمسة الثانية قبل أن تبدأ السحب، فسوف تقوم بتكبير لوحة التصميم. +

+ الموضح أدناه هو سلوك كل أداة من هذه الأدوات: + +

+ +

أداة التحديد وأداة التحديد المتعدد

+ + Selection Tool + أداة التحديد دائما تقوم بتحدد كائن واحد فقط عند النقر على التصميم. ويتم إلغاء تحديد أي كائن تم تحديده سابقاً. +

+ + Multi Selection Tool + أداة التحديد المتعدد لا تقوم بإلغاء تحديد الكائنات السابقة، وإنما تضيف كائن جديد إلى التحديد كلما قمت بالنقر عليهم، وعند النقر على كائن تم تحديده سابقاً يتم إلغاء تحديده. +

+ + حدد مجموعة من الكائنات عن طريق نقر الجزء الفارغ من التصميم وجره إلى أن يتم الإحاطة بهذه الكائنات. يظهر مستطيل (يسمى مستطيل التحديد) للدلالة على منطقة التحديد. +

+ + تستطيع تحريك الكائنات المحددة على ورقة التصميم، كما يمكنك تقييد الحركة أفقياً، بشكل مائل، وعامودياً من خلال إضافة الاصبع الثاني على ورقة التصميم بعد بدء السحب. +

+ + عند تحديد مسار واحد بالضبط، يمكنك تعديل مسار النقاط و مقابض التحكم. مثل وصف أداة القلم أدناه، وضع الاصبع الثاني على ورقة التصميم عند سحب مقبض التحكم تتسبب في عكس مقبض التحكم و يبقى ثابتاً. +

+ عند تحديد مسار واحد بالضبط، يمكنك تعديل مسار النقاط و مقابض التحكم. مثل وصف أداة القلم أدناه، وضع الاصبع الثاني على ورقة التصميم عند سحب مقبض التحكم تتسبب في عكس مقبض التحكم و ثبات أحد مقابض التحكم. +

+ عند النقر المزدوج وسحب أحد النقاط يجعل مقابض التحكم تقابل بعضها البعض. +

+ +

أداة القلم Pen Tool

+ + أداة القلم هي أقوى وسيلة لإنشاء المسارات فيInkpad. يمكنك استخدامها لتحديد أي شكل ممكن. للبدء، حدد القلم من لوحة الأدوات. +

+ + انقر نقرة واحدة على التصميم لإضافة نقطة زاوية واحدة (مرساة) إلى الشكل الخاص بك. وهناك سلسلة من النقرات المنفردة تنتج مضلع مع زوايا حادة. + +

+ Polygon +
+ + لجعل الحافة منحنية، انقر واسحب. سترى مجموعة من مقابض التحكم تظهر والتي تحدد شكل المنحنى. وأبعد مقابض التحكم هي من نقطة الربط، وأكثرهم حدة. + +
+ Curve +
+ + يمكنك أيضا نقل مقابض التحكم بشكل مستقل. بمجرد البدء في السحب، المس ورقة التصميم مع الاصبع الثاني لإبقاء عكس مقبض التحكم ثابتاً. هذا يسمح لك بإنشاء جزأين من المنحنيات والتي تشكل زاوية. +

+

+ Corner +
+ + اضغط على النقطة الأولى في المسار لإغلاق المسار. +

+ + انقر نقراً مزدوجاً على النقطة الأخيرة في المسار لإنهاء المسار دون إغلاقة. +

+ + لمواصلة تحرير مسار موجود مغلق، أولاً حدده باستخدام أداة التحديد. ثم اختر أداة القلم وقم بالنقر على نقطة واحدة من نقاط نهاية المسار. يمكنك الآن تمديد المسار أو انقر على آخر نقطة للجهة المقابلة لإغلاقه. + +

أداة الرسم الحر Freehand Tool

+ + أداة الرسم الحر ترسم مسارات حرة على ورقة التصمميم. وهذه وسيلة رائعة للخربشة والطلاء. +

+ +

أداة المسح Eraser Tool

+ + أداة المسح أو الممحاة تمحو أجزاء الأشكال في الرسم. وهي تعمل على أي مسار. +

+ + إذا كان هناك اختيار، فإن أداة المسح تعمل على الأشكال المحددة فقط. +

+ + يمكنك ضبط عرض الممحاة عن طريق لوحة الإعدادات الصغيرة التي تظهر في الجزء السفلي من ورقة التصميم عند تحديد أداة المسح. +

+ +

أداة إضافة النقاط Add Anchor Tool

+ + أداة إضافة النقاط تضيف نقاط الربط على الأشكال الموجودة في الرسم. +

+ + انقر فوق حافة الشكل لإضافة نقطة جديدة. +

+ أداة إضافة النقاط تحدد الشكل عند الضرورة، ولكن من الأسهل لأداة إضافة النقاط إذا قمت بتحديد المسار أولاً بحيث يمكنك رؤية نقاط الربط الموجودة. +

+ +

أداة المقص (أداة تقسيم المسار) Scissor Tool

+ + أداة المقص تقطع المسارات الموجودة. +

+ + لتقسيم المسار، انقر على الطرف الذي تريد قطعة. للفصل عند نقطةٍ ما، انقر عليها. +

+ إذا تم إغلاق المسار من قبل، سيتم فتح المسار و ستظهر نقطتي النهاية في مكان النقرة. إذا لم يتم إغلاق المسار، فسوف ينقسم المسار إلى مسارين في مكان النقرة. +

+ +

أدوات التشكيل Rectangle Tool + Oval Tool + Star Tool + Polygon Tool + Spiral Tool + Line Tool

+ + +أدوات التشكيل تنشئ أشكال المستطيلات، أشكال بيضاوية، النجوم والمضلعات، الخطوط واللوالب. +

+ انقر مع الاستمرار على أداة التشكيل في لوحة الأدوات للوصول إليها. ستظهر لوحة فرعية تسمح لك بإختيار شكل مختلف. +

+ بشكل افتراضي، المستطيلات والأشكال البيضاوية ليست مقيدة بنسبة العرض إلى الارتفاع. إذا كنت تريد مربع متوازي الأضلاع أو دائرة، إلمس الشاشة بأصبعك الثاني بعد أن تبدأ بسحب الشكل. +

+ يمكنك ضبط نصف قطر زاوية المستطيلات، وعدد النقاط في النجوم، ومعدل اضمحلال اللوالب، وعدد أطراف المضلع من خلال لوحة الإعدادات الصغيرة التي تظهر في الجزء السفلي من ورقة التصميم عند تحديد الأداة المطابقة. +

+ عند لمس الشاشة مع الاصبع الثاني أثناء سحب شكل النجمة، نصف القطر الداخلي للنجم يكون ثابتاً، مما يسمح لك جعل النجم أكثر و أقل حدة. +

+ عند لمس الشاشة مع الاصبع الثاني أثناء سحب شكل الخط، يتم تقييد الخط أفقياً، عامودياً وبشكل مائل. +

+ +

الأداة الشافطة / القطارة Eyedropper Tool

+ + الأداة الشافطة تلتقط سمات نمط الكائنات الموجودة في الرسم الخاص بك. تلتقط وتطبق هذه الخصائص على أي من الكائنات التي يمكن تحريرها في لوحات النمط الوارد وصفها في المقطع التالي: +

+ لاستخدام القطارة، اسحب إصبعك على الكائنات في الرسم الخاص بك حتى تقوم بالتقطت النمط الذي تريد تطبيقه. +

+ إذا لم يتم تحديد أي شيء عند سحب القطارة، سيتم تطبيق الأنماط إلى الكائن التالي تقوم بإنشائها. إذا تم تحديد شيء، سيتم تطبيق الأنماط على الكائنات المحددة. +

+ +

أداة الكتابة Text Tool

+ أداة الكتابة تنشئ الكائنات النصية. +

+ انقر واسحب لإنشاء مربع النص على ورقة التصميم. عند الانتهاء من السحب، ستظهر لوحة المفاتيح على الشاشة، مما يسمح لك بتحرير النص. لإيقاف التحرير، انقر في أي مكان على ورقة التصميم. +

+ لتحرير النص مرة أخرى في المستقبل، حدد أداة النص، ثم انقر على النص، أو اختر إحدى أدوات التحديد والنقر نقرا مزدوجا على النص. +

+ +

المقياس وأدوات التدوير

+ + المقياس وأدوات التدوير تحول الكائنات المحددة. +

+ نقرة واحدة باستخدام أي من هذه الأدوات تقوم بتحرك النقطة المحورية للتحويل (في البداية تكون في مركز التحديد). يتم تغيير الحجم بعيداً عن المحور أو تدويره عند السحب. +

+ Scale Tool + أداة القياس تحافظ على نسبة العرض إلى الارتفاع للكائنات المحددة، لكن النقر بلإصبع الثاني أثناء السحب يجعل المقياس غير متناسق. +

+ Rotate Tool + أداة التدوير تدور بحرية، ما لم تضع إصبعك الثاني على الشاشة أثناء السحب، في هذه الحالة تقيد أداة الاستدارة بزوايا 45 درجة. + +

خصائص التصميم

+ + اضغط على أزرار الخصائص في شريط الأدوات لتعديل مظهر الأشكال المحددة: +

+ +

+ Styles Toolbar +
+

+هم، على التوالي: نماذج الألوان ، التعبئة ، الحدود ، الظل والشفافية ، الخطوط . +

+ زر الظل والشفافية يشير إلى لون واتجاه الظل الحالي، فضلا عن شفافية الكائن. الألوان المشار إليها في أزرار الحدود و التعبئة هي القيم المستخدمة عند إنشاء الأشكال الجديدة. +

+ +

نماذج الألوان

+ + تحفظ لوحة نماذج الألوان الألوان و تدرجات اللون لإعادة استخدامها في وقت لاحق. +

+ + عناصر التحكم الظل/الحدود/التعبئة في الجزء السفلي من الوحة تحدد النمط الذي يتم حفظه إذا قمت بالنقر على زر + في الركن الأيمن العلوي للوحة. كما أنها تحدد النمط الذي يتم تعيينه عند إختيارك لواحدة من النماذج في اللوحة. +

+ وحيث أن وظيفة التدرجات التعبئة، فالنقر على نموذج متدرج ينطبق على نمط التعبئة بغض النظر عن الإعداد. +

+ +

التدرجات

+ + التدرج هو تعبئة الشكل بلونين أو أكثر. ويعرف التدرج بمجموعة من مماسك الألوان. يحدد كل ممسك بلون وبموقع ضمن التدرج. +

+ + لتطبيق التدرج، افتح لوحة التعبئة واضغط على زر التدرج في شريط العنوان. +

+ انقر على ممسك لون لتحديده. استخدم منزلقات اللون في الجزء العلوي من اللوحة لتغيير لون الممسك. اسحب ممسك اللون لتغيير موقعه داخل التدرج. +

+ لعكس إتجاه التدرج، مرر اصبعك لليمين أو اليسار في شريط التدرج (المنطقة فوق مماسك الألوان). +

+ لتوزيع مماسك الألوان بالتساوي في التدرج، انقر على شريط التدرج نقراً مزدوجاً. +

+ لإزالة ممسك لون من التدرج، اسحبه لأعلى أو لأسفل. +

+ لإدراج ممسك لون جديد، انقر فوق المساحة الفارغة بين مماسك اللون (أسفل شريط التدرج). +

+ عند تحديد شكل لديه تعبئة متدرجة (وهو الكائن المحدد فقط)، تظهر مقابض تحكم خاصة تسمح لك بتغيير بداية ونهاية نقاط التدرج في: +

+

+ Gradient on Canvas +
+ +

Layers (الطبقات)

+ + Inkpad يدعم عدد غير محدود من الطبقات. فالطبقات مفيدة لتنظيم رسومات معقدة. كل عنصر من عناصر الرسم يمكن أن يكون على طبقة خاصة به، مما يجعل من السهل تحريره. +

+ يمكنك حذف أو تكرار أو إعادة ترتيب، إعادة تسمية، قفل، وإخفاء الطبقات. يمكنك أيضا التحكم في شفافية كل طبقة. +

+ + اضغط على زر الطبقات في شريط الأدوات لعرض الطبقات في التصميم الخاص بك. +

+ +

ضم المسارات

+ + لضم مسارين غير مغلقين، قم بتحديد كل منهما وختر ضم المسارات من قائمة مسار. +

+ تضم المسارات عن طريق ربط أقرب نقاط النهاية الخاصة بها، لذلك قد ترغب في ضمها بالطريقة التي تنوي لها الإتصال قبل اختيار ضم المسارات . +

+ إذا كان الطرفان المتعاكسان للمسار الجديد متزامنان بعد الانضمام، فإن المسار الجديد مغلقاً أيضاً. + +

المسارات المركبة

+ + المسار المركب هو مسار يتألف من مسارات فرعية متعددة. ومفيدة لإنشاء الأشكال التي تحتوي على ثقوب. +

+ + لإنشاء مسار مركب، قم بتحديد اثنين أو أكثر من المسارات أو من المسارات المركبة واختر دمج المسارات من قائمة مسار. + +

+ + لتقسيم مسار مركب مرة أخرى إلى مسارات بسيطة، اختيار فصل المسارات من قائمة مسار. +

+ + الاتجاه النسبي لكل مسار فرعي في المسار المركب يحدد بالمسارات الفرعية التي يتم ملأها. إذا كانت جميع المسارات تشغل نفس الإتجاه، فجميعها ممتلئة. +

+ إذا قمت بدمج مسارين أملاً في احداث فجوة، ولكن تم ملء الفجوة، حدد واحد من المسارات في المسار المركب واختر عكس اتجاه المسار من قائمة مسار. +

+ +

وضع النص على مسار

+ + لوضع نص على المسار، حدد مسار غير مدمج واحد (أو مسار وكائن نص موجود) واختر وضع النص على المسار من قائمة مسار. +

+ سيظهر محرر النص، مما يسمح لك بتحرير النص الموجود على المسار. لتحرير هذا النص في وقت لاحق انقر نقراً مزدوجاً على المسار بأحد أدوات التحديد ( أو انقر على المسار باستخدام أداة النص ). +

+ المسار قابل للتحرير مثل أي مسار عادي، ولكن نمط الإعدادات ينطبق فقط على النص. +

+ اسحب شريط البداية الذي يظهر في بداية النص لتغيير مكان النص في المسار. +

+ لجعل النص يظهر على الجانب الآخر من المسار، اختر عكس اتجاه المسار من قائمة مسار. +

+ +

الأقنعة

+ + القناع هو مسار، مسار مركب، أو كائن النص الذي يقتص محتويات عناصر الرسم الأخرى. +

+ لإنشاء قناع، حدد الكائنات التي تريد تحويلها إلى قناع والمسار أو كائن النص الذي تريد استخدامه كقناع (يجب أن يكون القناع هو الكائن المحدد الأعلى). اختر قناع من قائمة مسار. +

+ + لإلغاء القناع، حدد الكائنات المقنعة واختر إلغاء القناع من قائمة مسار. +

+ + المسار المقنع من الممكن أن يتم تعبأته و وتحديد أطرافه تماماً مثل أي مسار عادي. +

+ +

+ + + + + diff --git a/Inkpad.xcodeproj/project.pbxproj b/Inkpad.xcodeproj/project.pbxproj index 8c0ac32..c92e253 100755 --- a/Inkpad.xcodeproj/project.pbxproj +++ b/Inkpad.xcodeproj/project.pbxproj @@ -884,6 +884,12 @@ AE661E2318D6843D0096EAF3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/OpenClipArt.strings"; sourceTree = ""; }; AE661E2418D6844B0096EAF3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Shadow.strings"; sourceTree = ""; }; AE661E2518D684560096EAF3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Stroke.strings"; sourceTree = ""; }; + C7A41BBF198003D800304C51 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ColorBalance.strings; sourceTree = ""; }; + C7A41BC0198003D800304C51 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/HueSaturation.strings; sourceTree = ""; }; + C7A41BC1198003D800304C51 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/OpenClipArt.strings; sourceTree = ""; }; + C7A41BC2198003D800304C51 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Shadow.strings; sourceTree = ""; }; + C7A41BC3198003D800304C51 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Stroke.strings; sourceTree = ""; }; + C7A41BC4198003D800304C51 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; F43A1D6F183557770032933E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Localizable.strings; sourceTree = ""; }; F4F41F7118B2C7E300065865 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = OpenClipArt.strings; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1839,6 +1845,7 @@ pt_PT, "zh-Hans", ja, + ar, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; @@ -2286,6 +2293,7 @@ 6B95752F183C536E0094B7D5 /* fr */, 6B957530183C53710094B7D5 /* tr */, AE661E2118D684040096EAF3 /* zh-Hans */, + C7A41BBF198003D800304C51 /* ar */, ); name = ColorBalance.xib; sourceTree = ""; @@ -2324,6 +2332,7 @@ 6B957532183C53A00094B7D5 /* fr */, 6B957533183C53A30094B7D5 /* tr */, AE661E2218D684240096EAF3 /* zh-Hans */, + C7A41BC0198003D800304C51 /* ar */, ); name = HueSaturation.xib; sourceTree = ""; @@ -2370,6 +2379,7 @@ 6B957535183C53AF0094B7D5 /* fr */, 6B957536183C53B10094B7D5 /* tr */, AE661E2418D6844B0096EAF3 /* zh-Hans */, + C7A41BC2198003D800304C51 /* ar */, ); name = Shadow.xib; sourceTree = ""; @@ -2392,6 +2402,7 @@ 6B957538183C53BD0094B7D5 /* fr */, 6B957539183C53BF0094B7D5 /* tr */, AE661E2518D684560096EAF3 /* zh-Hans */, + C7A41BC3198003D800304C51 /* ar */, ); name = Stroke.xib; sourceTree = ""; @@ -2418,6 +2429,7 @@ 6B8396E1189F2FB0001D5985 /* Base */, 6B83971318A36D23001D5985 /* en */, AE661E2318D6843D0096EAF3 /* zh-Hans */, + C7A41BC1198003D800304C51 /* ar */, ); name = OpenClipArt.xib; sourceTree = ""; @@ -2483,6 +2495,7 @@ isa = PBXVariantGroup; children = ( 6B8F091717FCE1DB00BB6F7E /* en */, + C7A41BC4198003D800304C51 /* ar */, ); name = Localizable.strings; sourceTree = ""; diff --git a/README.md b/README.md index 14275c5..14e3003 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ Localizations: * [Ale Muñoz](https://github.com/bomberstudios) / Spanish * [Pillow Tse](https://github.com/xiezhhw), [Zhang Yungui](https://github.com/rhcad) / Chinese Simplified * [Akiji Tanaka](https://github.com/akiji) / Japanese +* [Abduolkader Idriss](https://github.com/zaxf) / Arabic App Icon: diff --git a/ar.lproj/ColorBalance.strings b/ar.lproj/ColorBalance.strings new file mode 100755 index 0000000..79203e7 --- /dev/null +++ b/ar.lproj/ColorBalance.strings @@ -0,0 +1,33 @@ + +/* Class = "IBUILabel"; text = "Blue"; ObjectID = "15"; */ +"15.text" = "أزرق"; + +/* Class = "IBUILabel"; text = "Yellow"; ObjectID = "16"; */ +"16.text" = "أصفر"; + +/* Class = "IBUILabel"; text = "Green"; ObjectID = "18"; */ +"18.text" = "أخضر"; + +/* Class = "IBUILabel"; text = "Magenta"; ObjectID = "19"; */ +"19.text" = "أرجواني"; + +/* Class = "IBUILabel"; text = "0"; ObjectID = "21"; */ +"21.text" = "0"; + +/* Class = "IBUILabel"; text = "Cyan"; ObjectID = "22"; */ +"22.text" = "سماوي"; + +/* Class = "IBUILabel"; text = "Red"; ObjectID = "23"; */ +"23.text" = "أحمر"; + +/* Class = "IBUILabel"; text = "0"; ObjectID = "24"; */ +"24.text" = "0"; + +/* Class = "IBUILabel"; text = "0"; ObjectID = "25"; */ +"25.text" = "0"; + +/* Class = "IBUINavigationItem"; title = "Color Balance"; ObjectID = "34"; */ +"34.title" = "ميزان اللون"; + +/* Class = "IBUIBarButtonItem"; title = "Accept"; ObjectID = "36"; */ +"36.title" = "قبول"; diff --git a/ar.lproj/HueSaturation.strings b/ar.lproj/HueSaturation.strings new file mode 100755 index 0000000..93bc27a --- /dev/null +++ b/ar.lproj/HueSaturation.strings @@ -0,0 +1,24 @@ + +/* Class = "IBUILabel"; text = "Hue"; ObjectID = "29"; */ +"29.text" = "تدرج الألوان"; + +/* Class = "IBUILabel"; text = "0"; ObjectID = "30"; */ +"30.text" = "0"; + +/* Class = "IBUILabel"; text = "Saturation"; ObjectID = "31"; */ +"31.text" = "درجة التشبع"; + +/* Class = "IBUILabel"; text = "0"; ObjectID = "32"; */ +"32.text" = "0"; + +/* Class = "IBUILabel"; text = "Brightness"; ObjectID = "34"; */ +"34.text" = "السطوع"; + +/* Class = "IBUILabel"; text = "0"; ObjectID = "35"; */ +"35.text" = "0"; + +/* Class = "IBUINavigationItem"; title = "Hue and Saturation"; ObjectID = "54"; */ +"54.title" = "تدرج الألوان و درجة التشبع"; + +/* Class = "IBUIBarButtonItem"; title = "Accept"; ObjectID = "55"; */ +"55.title" = "قبول"; diff --git a/ar.lproj/OpenClipArt.strings b/ar.lproj/OpenClipArt.strings new file mode 100755 index 0000000..29a4c13 --- /dev/null +++ b/ar.lproj/OpenClipArt.strings @@ -0,0 +1,12 @@ + +/* Class = "IBUISearchBar"; placeholder = "Search Openclipart"; ObjectID = "RRV-qS-tbK"; */ +"RRV-qS-tbK.placeholder" = "البحث عن قصاصة فنية مفتوحة"; + +/* Class = "IBUISearchBar"; RRV-qS-tbK.scopeButtonTitles[0] = "Top Downloads"; ObjectID = "RRV-qS-tbK"; */ +"RRV-qS-tbK.scopeButtonTitles[0]" = "الأكثر تحميل"; + +/* Class = "IBUISearchBar"; RRV-qS-tbK.scopeButtonTitles[1] = "Top Favorites"; ObjectID = "RRV-qS-tbK"; */ +"RRV-qS-tbK.scopeButtonTitles[1]" = "الأكثر تفضيلاً"; + +/* Class = "IBUISearchBar"; RRV-qS-tbK.scopeButtonTitles[2] = "Newest"; ObjectID = "RRV-qS-tbK"; */ +"RRV-qS-tbK.scopeButtonTitles[2]" = "الأحدث"; diff --git a/ar.lproj/Shadow.strings b/ar.lproj/Shadow.strings new file mode 100755 index 0000000..7934ff5 --- /dev/null +++ b/ar.lproj/Shadow.strings @@ -0,0 +1,9 @@ + +/* Class = "IBUILabel"; text = "Shadow"; ObjectID = "39"; */ +"39.text" = "ظل"; + +/* Class = "IBUILabel"; text = "Opacity"; ObjectID = "62"; */ +"62.text" = "الشفافية"; + +/* Class = "IBUILabel"; text = "100%"; ObjectID = "vDR-y7-VS4"; */ +"vDR-y7-VS4.text" = "100%"; diff --git a/ar.lproj/Stroke.strings b/ar.lproj/Stroke.strings new file mode 100755 index 0000000..752597c --- /dev/null +++ b/ar.lproj/Stroke.strings @@ -0,0 +1,6 @@ + +/* Class = "IBUILabel"; text = "100.0 pt"; ObjectID = "9"; */ +"9.text" = "100.0 pt"; + +/* Class = "IBUILabel"; text = "Dashed Stroke"; ObjectID = "47"; */ +"47.text" = "خط متقطع"; diff --git a/en.lproj/ar.lproj/Localizable.strings b/en.lproj/ar.lproj/Localizable.strings new file mode 100755 index 0000000000000000000000000000000000000000..5dfb1c68598d38585f49a1c37e073ea01fda26f6 GIT binary patch literal 22328 zcmdU%TT@)e5y#KdKBV#ylFHf`LpG8KmJ~%!r4lX+h{%%4;G`-qDM?7SDu4(eTlS~P zCr$GIO*87AIdgVb#LlHCV9%VM?w-C)PtVN$^B-&7q#JkJ-Ff%4`=)!q~psa09f&!Kr`ZP3rsYRl@WWP_Ztlx~eClG%Et+l}saz{-=4(Vn6u zY;<=D=sN{8PbDBNXvec7ee8$5p=r$M2 zqwUcHakHfVtFmhRaz&r->T_Rr_}Z6}z_{B?{6MedqYdG-@%fd}FZGKIGIb~}jc!Xa z+dWM<#;xS>cr13EEfaZUt|G)DG^ZNl*65QNG#`rEOG&;>FTY)c*1pEq@(1VsGmQg1 zTEuUSFG4Irb1Hu%YHZ9H;pa(uUk#4Y-!DRu$i6SCwP*S$4`nlF1M;+Yi_lpb-IuLA z=+PnKkGpS0gL#eEU$%Us2#E)eue^zf4{xX4U*Gk^x`^ZO`AmP`>iMZ=n&$~Cy?>_` z*H1~|hok9o+11$bS+vVMI+6EmX-4An&Xr$%Dr@^dpDntKyPL`WRt2XRA|2IZ{8>Ym z^7kGV}O0^QfO)4151dr&$8S*#9WZIH| z&m=Kok;^Q%I2JTCN&WX_>owP&16zJfBs)*m;}$Xm<205v|B{1{$u43Aj&YV{4nsL* zMwhi?@rRbF^uMOR^%`JPV|y)+z(e|3bsX^!lv7@pm)m+{B5L4mibU1HZ_HvR$qyfh_FvN~h-h*o z+4(y1gJ5&l#o&CBC*rZ>ufLWRk;U0eOq^NK)23w2thB1XdA+imo>!!YiDJ-NiZ?*4 zYqlcx5T)W6O4)8`7JjBNy-1lotHM_)64^QgpK42QEE$~&HfC?nB{3h3J(V(kEl(xh zxuos2E&@HRa z-+7V*`ukk6IFe-E^rX>-iL}U>vE_RyQX-X4q>nvWejTZ{l4T-w}(){_mSuOXAt==1(yRWhJ=f)#pxsZ?h zIC6{k_Ldmkwl#V(otV3MoA-`wb$_x}vvud+YK62qj+wFq=g zkD4Y}i4e>ztVc_mD6tM#ZCtvG_UQBCH6FCts`He%hoa*ws6JI_4Mj*WU8ML!HkzYW z)MWkE@q6x*qwpQA_UdfPD43q9x>?1FieyQp57DMHNmb%~dAL#C(&%c9zEUK7sgV(T zER&1W`fr^Qvf7YlHXAr|<(X=mS^WH!(6(aC;{BYD_w84DWs7EO#ZpS8&u6R8JRaM9 zO8!{=Q)hWCi^Dsgq`RRC= zgBsE~*iW%pJ>StBcNt%8pVSba%8J;B=;sEfddKWIRwji7zmyG8b8>%)`Mh&5?Bfx> zHSg7NCeMtHJI{QxV@X*fi~M@+%yB|BwwE^YMx!UUVScLTm-?OKTvlGTro3!LGj%QX zx))VEtDhW-6Fy%^*0$F~l=@O_=sQaOx;UJ}mB8V++mqGYOnD>~JnGL_@RD+@^*WGG?C}5OJdXjX6v_))8z9+nxbMAbEy`$HMH|kN`+kkvdUV6-%16K8?TBo8=t}Ank zV?)pD8dJTCGEHN6CEnf6yv_T^wvslsd!Z4s#>t)=akbt%-sss=MN9T$>NU+&@rRw& zH%XEacWif@wz4M|V9i=;(Q#c!W>gSc`0~4mb6eQR?uYT7CGRDsA`#}5?QW;S--dBI zMA5aRCn^%GZ$3>vX}J1h>EnCU?arkM%px=muGIHiMFFCekMp4W<6N2sGoNOLi!^tn zDQdi~sodiDEOOkJc0TUe&yM=CE3bH$IG%Ha-H|`!vX4JWeaB+n;1mT#ck_mpoT!LPpvNuR6M#hZ$ zB3S1zhTRl%$=XT|%Xa4rOjNSgRdX&qiMclJ0@}0pBqv{yCzic-lXQr^R!eYg)^8k> z+3A|_)fobPm@7&ww0Lh;I9omY_MQhC1v6pJ6Z3pL1mT#`*NSA5*EPeGsP#r!f!o>~ z8`V2@9`5&e-IJ`CCCeS&*y>o26?p-b9(XIIPoLw0liX5bxFZZVWr<{E=$~pL9EsDEqwW{<6Ta3X~ygCW85$CbFw1N0j;;g z_|biTtzP07S_jU8a*9N`CFx*k^b1*q?RG=89BFC8C1yJ(Kpti5L)%dxjuRs}NAy(x z%XN!Ki+>-NkEPUl8O8GxC(y7o+r#Iq)wrWRy|3y;&E@c@bEL{^)%JL5DCabFA?$*flyye_Lk_^aj;6oXFV@NVPqR_1`6SuHx8IvSzdwGyA8k=H-~`WZivL^s zWP8x)&#HoU9ts_D=8(Eao~zlV-V+op@2@lJSm=NgJH#$KYy3B9gg8e1ioEhDWg+=Q z_xpL(^(ZVZ*A0!IEDhOsCDERz@)WYI)j5(GszwoKg9jE;a1JBY*khLecwBDBr~KZj z#QbyCDFZk_Z|BmVoqI21VENAR_xttv|2p9%K1Z%|tK(vAd%McIABZ2$ALOd&hGIT> zExlPYG8$Bhvju`ZnF)lh!xic?tW{_w-bbXxZ_s+{w0@Q1F;-`q zAxfZC%gHYzt}H#?I41aWNw7b}EMhQmK6l)4 zRUKPfIQt|1LNWRv#p#C{EvsQNZ=}oU+m$|tbQ-ZO@>$})yt4E~C}h}@hPOs4R4{C% zX|d7e9NQfe>r7_io0WY%R2-%1%N$2#@Up0fwB9;St2p%6iJwW97m7-5Nx8-QZl-yp zUiWh9nw1clS?g?9`@LfwdLJb>KTmFBX`OL85uZ-oo+7Q!Bwco*sL++?IO{i#Ws*(} z-j}}0NbpD!;k?VxOwfMsc=Or38_K)b<1Mk{NA-OcY~s4NTCzPpN;t49awI(WrCRFS zKRI*c42H$V`&wyoFT&5fEs1Np_hR>hO8%i^=dvPYT3iBDT*loU;i*sm(A(}o#Z`E0 zbu7fHedVBa?0b|v2^rcdm$l6k;l;Pgdo1%Hoffs6T(!z49O`l7za>?6D(Zci7EOn1 zQ{?Uy-n}|nOS#LEEE5^lUduY}rF4tOy3fZ}$Irz+smB0mdc^*BH#P8YQ*EK)kb~Wv8)wP zi6*ujr#vFp)@(&c#eg$oL^X&9pJoM|%s>vzah#AVD*$ckZY4wS__&EF^3|eLMykh>ho7k&clky^w5m3Q)5)jW z^GV6s6b{m8?9}=&l?dgOG6l0BZqITLwWepjj5Ome(&H;1w|2*Awn!GfrI=dcLTk2~ zbxys_ad2O-K0yT>YvZyfE#5D$07|O!bD<})1?-i$*smC#>7CQCr_vVj1G~?V=ViZP z={@ZZWWDx@w7qxc$9p?mIXc?kCNGUqJ+_uOGHi_nJ=#2QC~P*zkZo8_UrT;Iv{TLY z%;{dwbmEGw=B1TS#4N*cm#w8%N>7h=Q@(L*c0a7nd7y#SQVm5OJ6Dq8E+2kZVx9%* zlsIq3&KP@vrA(+ZQG??4>{icz>}E{NK#0qheK~frH!_&Mt!3EZ4BPS5FfIJ`+*4|D z5zmXdZuwq30evPdyg!BLA1w;8+J2U5@6nDvmp51hv^>b;5N9kc-y!od+sGdLKD}J7 zRCuDy<~>b^JA-Hc5h>cr<5T(oa`r(Lq<$xyW`qXmd2gydjGq% zQ|i9adh0mb`<^wQ&y&2%TEKy#7FwXy@s+JnpY7~|Y$krw!!yZ*6%JCdxJZmA)3KFL z&ckC3_MpJfrsEu1Zu!f8>UzdPIN&&~r;^r7UMYh^9ootqloIk4~h(0wh*GS}+;^lq-V z)m9XxR@NCx>z@VZJh)^%7PfB+l+rj*or8?V_bS^`sNtM)9zB*c?34IKJd*+!v^bt+ zMFh@N)Tf*?q}?myo?!ou=rBwRzbc-h@<6(>c=S;^r`ob>4N5R}v9MpLeQ=cwJU<A`p0-}Esl+#q8Hp`xPPY|t3nzQAM~YI^ z&sIA$l3%BtysGH<8XhVE0eQ!b3ks*Dg+rApISFHaLdB;DlluF=tRwo zTBY3u>PzXmy!r__aQ;x-x=wawH`Mg7n)h2?sEoA zT+8#Jw>d`3ZR-_PhK!l4x7EG-nK7{J<=D5HMf$nbanxgK-BK^{u?BxFdFAg$YvH$A zq(imoipz11^BH!pg3P06QPF)n+L!ZHLpjBKe!Gql!(%jD_4jr}DMpAsB{X5wTHn#}r<6Tj P7CS}W=Geee-X!`Lv~v5k literal 0 HcmV?d00001 From aaee52039d5b97ac6e5b7886c9761305ddc8403b Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Tue, 15 Mar 2016 23:49:30 +0000 Subject: [PATCH 14/15] Remove duplicate "Inkpad" from very start --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14e3003..80d0c48 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Inkpad Inkpad [![Build Status](https://travis-ci.org/alistairmcmillan/Inkpad.svg?branch=develop)](https://travis-ci.org/alistairmcmillan/Inkpad) +Inkpad [![Build Status](https://travis-ci.org/alistairmcmillan/Inkpad.svg?branch=develop)](https://travis-ci.org/alistairmcmillan/Inkpad) ====== Inkpad is a vector illustration app designed from scratch for the iPad. It supports paths, compound paths, text, images, groups, masks, gradient fills, and an unlimited number of layers. From 6e48b2cfb0f6c1d8dd6007b2daf566f635e4ceb9 Mon Sep 17 00:00:00 2001 From: Alistair McMillan Date: Thu, 31 Mar 2016 20:04:01 +0100 Subject: [PATCH 15/15] Fix for Facebook post not working Solution found here http://stackoverflow.com/a/24854803/35794 --- Classes/WDCanvasController.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Classes/WDCanvasController.m b/Classes/WDCanvasController.m index 67ceae0..d5e62d4 100644 --- a/Classes/WDCanvasController.m +++ b/Classes/WDCanvasController.m @@ -1415,7 +1415,9 @@ - (void) postOnFacebook:(id)sender [facebookSheet addImage:self.drawing.image]; [facebookSheet setInitialText:NSLocalizedString(@"Check out my Inkpad drawing!", @"Check out my Inkpad drawing!")]; - [self presentViewController:facebookSheet animated:YES completion:nil]; + dispatch_async(dispatch_get_main_queue(), ^ { + [self presentViewController:facebookSheet animated:YES completion:nil]; + }); } - (void) tweetDrawing:(id)sender