diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..37ce65c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: objective-c + +script: xctool -project Inkpad.xcodeproj -scheme Inkpad build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO 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]; 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..d5e62d4 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" @@ -1417,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 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/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/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/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 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-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 2315d99..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" @@ -180,7 +179,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) { 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 93515fd..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" @@ -136,6 +134,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 +152,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: 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; 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/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 + 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/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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 () diff --git a/README.md b/README.md index ab5e37e..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 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. @@ -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 0000000..5dfb1c6 Binary files /dev/null and b/en.lproj/ar.lproj/Localizable.strings differ