├── .gitignore ├── LICENSE ├── M80ImageMerger ├── M80ImageMerger.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── M80ImageMerger.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── M80ImageMerger │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-60@2x.png │ │ │ ├── Icon-60@3x.png │ │ │ ├── Icon-76.png │ │ │ ├── Icon-76@2x.png │ │ │ ├── Icon-Small-40.png │ │ │ ├── Icon-Small-40@2x.png │ │ │ ├── Icon-Small-40@3x.png │ │ │ ├── Icon-Small.png │ │ │ ├── Icon-Small@2x.png │ │ │ ├── Icon-Small@3x.png │ │ │ └── centaur.jpg │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Classes │ │ ├── Algorithm │ │ │ ├── M80Constraint.h │ │ │ ├── M80Constraint.m │ │ │ ├── M80ImageFingerprint.h │ │ │ ├── M80ImageFingerprint.m │ │ │ ├── M80ImageGenerator.h │ │ │ ├── M80ImageGenerator.m │ │ │ ├── M80ImageMergeInfo.h │ │ │ └── M80ImageMergeInfo.m │ │ ├── Sections │ │ │ ├── Main │ │ │ │ ├── Entity │ │ │ │ │ ├── M80MergeResult.h │ │ │ │ │ └── M80MergeResult.m │ │ │ │ ├── Interactor │ │ │ │ │ ├── M80MainInteractor.h │ │ │ │ │ ├── M80MainInteractor.m │ │ │ │ │ ├── M80RecentImageFinder.h │ │ │ │ │ └── M80RecentImageFinder.m │ │ │ │ └── ViewController │ │ │ │ │ ├── ViewController.h │ │ │ │ │ └── ViewController.m │ │ │ └── Preview │ │ │ │ ├── M80ImageViewController.h │ │ │ │ └── M80ImageViewController.m │ │ └── Util │ │ │ ├── UIImage+M80.h │ │ │ └── UIImage+M80.m │ ├── Info.plist │ ├── Vendor │ │ └── CTAssetsPickerController │ │ │ ├── CTAssetCheckmark.h │ │ │ ├── CTAssetCheckmark.m │ │ │ ├── CTAssetCollectionViewCell.h │ │ │ ├── CTAssetCollectionViewCell.m │ │ │ ├── CTAssetCollectionViewController.h │ │ │ ├── CTAssetCollectionViewController.m │ │ │ ├── CTAssetItemViewController.h │ │ │ ├── CTAssetItemViewController.m │ │ │ ├── CTAssetPlayButton.h │ │ │ ├── CTAssetPlayButton.m │ │ │ ├── CTAssetScrollView.h │ │ │ ├── CTAssetScrollView.m │ │ │ ├── CTAssetSelectionButton.h │ │ │ ├── CTAssetSelectionButton.m │ │ │ ├── CTAssetSelectionLabel.h │ │ │ ├── CTAssetSelectionLabel.m │ │ │ ├── CTAssetThumbnailOverlay.h │ │ │ ├── CTAssetThumbnailOverlay.m │ │ │ ├── CTAssetThumbnailStacks.h │ │ │ ├── CTAssetThumbnailStacks.m │ │ │ ├── CTAssetThumbnailView.h │ │ │ ├── CTAssetThumbnailView.m │ │ │ ├── CTAssetsGridSelectedView.h │ │ │ ├── CTAssetsGridSelectedView.m │ │ │ ├── CTAssetsGridView.h │ │ │ ├── CTAssetsGridView.m │ │ │ ├── CTAssetsGridViewCell.h │ │ │ ├── CTAssetsGridViewCell.m │ │ │ ├── CTAssetsGridViewController.h │ │ │ ├── CTAssetsGridViewController.m │ │ │ ├── CTAssetsGridViewFooter.h │ │ │ ├── CTAssetsGridViewFooter.m │ │ │ ├── CTAssetsGridViewLayout.h │ │ │ ├── CTAssetsGridViewLayout.m │ │ │ ├── CTAssetsNavigationController.h │ │ │ ├── CTAssetsNavigationController.m │ │ │ ├── CTAssetsPageView.h │ │ │ ├── CTAssetsPageView.m │ │ │ ├── CTAssetsPageViewController.h │ │ │ ├── CTAssetsPageViewController.m │ │ │ ├── CTAssetsPickerAccessDeniedView.h │ │ │ ├── CTAssetsPickerAccessDeniedView.m │ │ │ ├── CTAssetsPickerController.bundle │ │ │ ├── AccessDeniedViewLock.png │ │ │ ├── AccessDeniedViewLock@2x.png │ │ │ ├── AccessDeniedViewLock@3x.png │ │ │ ├── BadgeAllPhotos@2x.png │ │ │ ├── BadgeAllPhotos@3x.png │ │ │ ├── BadgeBurst@2x.png │ │ │ ├── BadgeBurst@3x.png │ │ │ ├── BadgeFavorites@2x.png │ │ │ ├── BadgeFavorites@3x.png │ │ │ ├── BadgeLastImport@2x.png │ │ │ ├── BadgeLastImport@3x.png │ │ │ ├── BadgePanorama@2x.png │ │ │ ├── BadgePanorama@3x.png │ │ │ ├── BadgeRecentlyDeleted@2x.png │ │ │ ├── BadgeRecentlyDeleted@3x.png │ │ │ ├── BadgeScreenshots@2x.png │ │ │ ├── BadgeScreenshots@3x.png │ │ │ ├── BadgeSelfPortraits@2x.png │ │ │ ├── BadgeSelfPortraits@3x.png │ │ │ ├── BadgeSloMoSmall.png │ │ │ ├── BadgeSloMoSmall@2x.png │ │ │ ├── BadgeSloMoSmall@3x.png │ │ │ ├── BadgeSlomo@2x.png │ │ │ ├── BadgeSlomo@3x.png │ │ │ ├── BadgeTimelapse@2x.png │ │ │ ├── BadgeTimelapse@3x.png │ │ │ ├── BadgeTimelapseSmall.png │ │ │ ├── BadgeTimelapseSmall@2x.png │ │ │ ├── BadgeTimelapseSmall@3x.png │ │ │ ├── BadgeVideo@2x.png │ │ │ ├── BadgeVideo@3x.png │ │ │ ├── BadgeVideoSmall.png │ │ │ ├── BadgeVideoSmall@2x.png │ │ │ ├── BadgeVideoSmall@3x.png │ │ │ ├── Checkmark.png │ │ │ ├── Checkmark@2x.png │ │ │ ├── Checkmark@3x.png │ │ │ ├── CheckmarkShadow.png │ │ │ ├── CheckmarkShadow@2x.png │ │ │ ├── CheckmarkShadow@3x.png │ │ │ ├── CheckmarkUnselected.png │ │ │ ├── CheckmarkUnselected@2x.png │ │ │ ├── CheckmarkUnselected@3x.png │ │ │ ├── DisclosureArrow.png │ │ │ ├── DisclosureArrow@2x.png │ │ │ ├── DisclosureArrow@3x.png │ │ │ ├── GridDisabledAsset.png │ │ │ ├── GridDisabledAsset@2x.png │ │ │ ├── GridDisabledAsset@3x.png │ │ │ ├── GridEmptyAlbum.png │ │ │ ├── GridEmptyAlbum@2x.png │ │ │ ├── GridEmptyAlbum@3x.png │ │ │ ├── GridEmptyAlbumShared.png │ │ │ ├── GridEmptyAlbumShared@2x.png │ │ │ ├── GridEmptyAlbumShared@3x.png │ │ │ ├── GridEmptyCameraRoll.png │ │ │ ├── GridEmptyCameraRoll@2x.png │ │ │ ├── GridEmptyCameraRoll@3x.png │ │ │ ├── GridGradient.png │ │ │ ├── GridGradient@2x.png │ │ │ ├── GridGradient@3x.png │ │ │ ├── GridHiddenAlbum@2x.png │ │ │ ├── GridHiddenAlbum@3x.png │ │ │ ├── PauseButton.png │ │ │ ├── PauseButton@2x.png │ │ │ ├── PauseButton@3x.png │ │ │ ├── PlayButton.png │ │ │ ├── PlayButton@2x.png │ │ │ ├── PlayButton@3x.png │ │ │ ├── VideoPlayButtonMask.png │ │ │ ├── VideoPlayButtonMask@2x.png │ │ │ ├── VideoPlayButtonMask@3x.png │ │ │ ├── VideoPlayGlyphMask.png │ │ │ ├── VideoPlayGlyphMask@2x.png │ │ │ ├── VideoPlayGlyphMask@3x.png │ │ │ ├── ar.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── da.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── de.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── en.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── es-MX.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── es.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── fi.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── fr.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── he.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── hi-IN.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── hu.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── id.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── it.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── ja.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── ko.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── nl-NL.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── nl.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── pt-PT.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── pt.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── ru.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── sv.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── zh-Hans.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ └── zh-Hant.lproj │ │ │ │ └── CTAssetsPicker.strings │ │ │ ├── CTAssetsPickerController.h │ │ │ ├── CTAssetsPickerController.m │ │ │ ├── CTAssetsPickerDefines.h │ │ │ ├── CTAssetsPickerNoAssetsView.h │ │ │ ├── CTAssetsPickerNoAssetsView.m │ │ │ ├── CTAssetsViewControllerTransition.h │ │ │ ├── CTAssetsViewControllerTransition.m │ │ │ └── Categories │ │ │ ├── CTAssetsPageViewController+Internal.h │ │ │ ├── CTAssetsPickerController+Internal.h │ │ │ ├── NSBundle+CTAssetsPickerController.h │ │ │ ├── NSBundle+CTAssetsPickerController.m │ │ │ ├── NSDateFormatter+CTAssetsPickerController.h │ │ │ ├── NSDateFormatter+CTAssetsPickerController.m │ │ │ ├── NSIndexSet+CTAssetsPickerController.h │ │ │ ├── NSIndexSet+CTAssetsPickerController.m │ │ │ ├── NSNumberFormatter+CTAssetsPickerController.h │ │ │ ├── NSNumberFormatter+CTAssetsPickerController.m │ │ │ ├── PHAsset+CTAssetsPickerController.h │ │ │ ├── PHAsset+CTAssetsPickerController.m │ │ │ ├── PHAssetCollection+CTAssetsPickerController.h │ │ │ ├── PHAssetCollection+CTAssetsPickerController.m │ │ │ ├── UICollectionView+CTAssetsPickerController.h │ │ │ ├── UICollectionView+CTAssetsPickerController.m │ │ │ ├── UIImage+CTAssetsPickerController.h │ │ │ └── UIImage+CTAssetsPickerController.m │ └── main.m ├── Podfile ├── Podfile.lock └── Pods │ ├── Crashlytics │ ├── Crashlytics.framework │ │ ├── README │ │ └── submit │ ├── README.md │ ├── iOS │ │ └── Crashlytics.framework │ │ │ ├── Crashlytics │ │ │ ├── Headers │ │ │ ├── ANSCompatibility.h │ │ │ ├── Answers.h │ │ │ ├── CLSAttributes.h │ │ │ ├── CLSLogging.h │ │ │ ├── CLSReport.h │ │ │ ├── CLSStackFrame.h │ │ │ └── Crashlytics.h │ │ │ ├── Info.plist │ │ │ ├── Modules │ │ │ └── module.modulemap │ │ │ ├── run │ │ │ ├── submit │ │ │ └── uploadDSYM │ └── submit │ ├── Fabric │ ├── Fabric.framework │ │ ├── README │ │ └── run │ ├── README.md │ ├── iOS │ │ └── Fabric.framework │ │ │ ├── Fabric │ │ │ ├── Headers │ │ │ ├── FABAttributes.h │ │ │ └── Fabric.h │ │ │ ├── Info.plist │ │ │ ├── Modules │ │ │ └── module.modulemap │ │ │ ├── run │ │ │ └── uploadDSYM │ ├── run │ ├── upload-symbols │ └── uploadDSYM │ ├── Headers │ ├── Private │ │ ├── PureLayout │ │ │ ├── ALView+PureLayout.h │ │ │ ├── NSArray+PureLayout.h │ │ │ ├── NSLayoutConstraint+PureLayout.h │ │ │ ├── PureLayout+Internal.h │ │ │ ├── PureLayout.h │ │ │ └── PureLayoutDefines.h │ │ ├── SVProgressHUD │ │ │ ├── SVIndefiniteAnimatedView.h │ │ │ ├── SVProgressAnimatedView.h │ │ │ ├── SVProgressHUD.h │ │ │ └── SVRadialGradientLayer.h │ │ └── Toast │ │ │ └── UIView+Toast.h │ └── Public │ │ ├── Crashlytics │ │ └── Crashlytics │ │ │ ├── ANSCompatibility.h │ │ │ ├── Answers.h │ │ │ ├── CLSAttributes.h │ │ │ ├── CLSLogging.h │ │ │ ├── CLSReport.h │ │ │ ├── CLSStackFrame.h │ │ │ └── Crashlytics.h │ │ ├── Fabric │ │ └── Fabric │ │ │ ├── FABAttributes.h │ │ │ └── Fabric.h │ │ ├── PureLayout │ │ ├── ALView+PureLayout.h │ │ ├── NSArray+PureLayout.h │ │ ├── NSLayoutConstraint+PureLayout.h │ │ ├── PureLayout+Internal.h │ │ ├── PureLayout.h │ │ └── PureLayoutDefines.h │ │ ├── SVProgressHUD │ │ ├── SVIndefiniteAnimatedView.h │ │ ├── SVProgressAnimatedView.h │ │ ├── SVProgressHUD.h │ │ └── SVRadialGradientLayer.h │ │ └── Toast │ │ └── UIView+Toast.h │ ├── Manifest.lock │ ├── Pods.xcodeproj │ └── project.pbxproj │ ├── PureLayout │ ├── LICENSE │ ├── PureLayout │ │ └── PureLayout │ │ │ ├── ALView+PureLayout.h │ │ │ ├── ALView+PureLayout.m │ │ │ ├── NSArray+PureLayout.h │ │ │ ├── NSArray+PureLayout.m │ │ │ ├── NSLayoutConstraint+PureLayout.h │ │ │ ├── NSLayoutConstraint+PureLayout.m │ │ │ ├── PureLayout+Internal.h │ │ │ ├── PureLayout.h │ │ │ └── PureLayoutDefines.h │ └── README.md │ ├── SVProgressHUD │ ├── LICENSE.txt │ ├── README.md │ └── SVProgressHUD │ │ ├── SVIndefiniteAnimatedView.h │ │ ├── SVIndefiniteAnimatedView.m │ │ ├── SVProgressAnimatedView.h │ │ ├── SVProgressAnimatedView.m │ │ ├── SVProgressHUD.bundle │ │ ├── angle-mask.png │ │ ├── angle-mask@2x.png │ │ ├── angle-mask@3x.png │ │ ├── error.png │ │ ├── error@2x.png │ │ ├── error@3x.png │ │ ├── info.png │ │ ├── info@2x.png │ │ ├── info@3x.png │ │ ├── success.png │ │ ├── success@2x.png │ │ └── success@3x.png │ │ ├── SVProgressHUD.h │ │ ├── SVProgressHUD.m │ │ ├── SVRadialGradientLayer.h │ │ └── SVRadialGradientLayer.m │ ├── Target Support Files │ ├── Pods-M80ImageMerger │ │ ├── Pods-M80ImageMerger-acknowledgements.markdown │ │ ├── Pods-M80ImageMerger-acknowledgements.plist │ │ ├── Pods-M80ImageMerger-dummy.m │ │ ├── Pods-M80ImageMerger-frameworks.sh │ │ ├── Pods-M80ImageMerger-resources.sh │ │ ├── Pods-M80ImageMerger.debug.xcconfig │ │ └── Pods-M80ImageMerger.release.xcconfig │ ├── PureLayout │ │ ├── PureLayout-dummy.m │ │ ├── PureLayout-prefix.pch │ │ └── PureLayout.xcconfig │ ├── SVProgressHUD │ │ ├── SVProgressHUD-dummy.m │ │ ├── SVProgressHUD-prefix.pch │ │ └── SVProgressHUD.xcconfig │ └── Toast │ │ ├── Toast-dummy.m │ │ ├── Toast-prefix.pch │ │ └── Toast.xcconfig │ └── Toast │ ├── README.markdown │ ├── Toast │ └── Toast │ │ ├── UIView+Toast.h │ │ └── UIView+Toast.m │ └── license └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | *.xccheckout 14 | *.moved-aside 15 | DerivedData 16 | *.hmap 17 | *.ipa 18 | *.xcuserstate 19 | 20 | # CocoaPods 21 | # 22 | # We recommend against adding the Pods directory to your .gitignore. However 23 | # you should judge for yourself, the pros and cons are mentioned at: 24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 25 | # 26 | #Pods/ 27 | .DS_Store 28 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 11/27/15. 6 | // Copyright © 2015 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 11/27/15. 6 | // Copyright © 2015 M80. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "CTAssetSelectionLabel.h" 11 | #import 12 | #import 13 | 14 | @interface AppDelegate () 15 | 16 | @end 17 | 18 | @implementation AppDelegate 19 | 20 | 21 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 22 | 23 | [Fabric with:@[[Answers class],[Crashlytics class]]]; 24 | 25 | [UINavigationBar appearance].tintColor = [UIColor darkGrayColor]; 26 | [CTAssetSelectionLabel appearance].cornerRadius = 12.5; 27 | NSLog(@"screen scale %lf",[[UIScreen mainScreen] scale]); 28 | return YES; 29 | } 30 | 31 | - (void)applicationWillResignActive:(UIApplication *)application { 32 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 33 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 34 | } 35 | 36 | - (void)applicationDidEnterBackground:(UIApplication *)application { 37 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 38 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 39 | } 40 | 41 | - (void)applicationWillEnterForeground:(UIApplication *)application { 42 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 43 | } 44 | 45 | - (void)applicationDidBecomeActive:(UIApplication *)application { 46 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 47 | } 48 | 49 | - (void)applicationWillTerminate:(UIApplication *)application { 50 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 51 | } 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small-40.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/centaur.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Assets.xcassets/AppIcon.appiconset/centaur.jpg -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Algorithm/M80Constraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80Constraint.h 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 2017/12/29. 6 | // Copyright © 2017年 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "M80ImageFingerprint.h" 12 | @class M80ImageMergeInfo; 13 | 14 | @interface M80Constraint : NSObject 15 | @property (nonatomic,assign) CGFloat minImageHeight; 16 | 17 | + (NSInteger)topOffset; 18 | + (NSInteger)bottomOffset; 19 | + (BOOL)isInfoValid:(M80ImageMergeInfo *)info; 20 | + (BOOL)shouldUseGradientImage:(M80FingerprintType)type; 21 | @end 22 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Algorithm/M80Constraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // M80Constraint.m 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 2017/12/29. 6 | // Copyright © 2017年 M80. All rights reserved. 7 | // 8 | 9 | #import "M80Constraint.h" 10 | #import "M80ImageMergeInfo.h" 11 | 12 | 13 | @implementation M80Constraint 14 | + (NSInteger)topOffset 15 | { 16 | if ([UIScreen mainScreen].bounds.size.height == 812) 17 | { 18 | return (44 + 44) * 3; 19 | } 20 | else 21 | { 22 | return (44 + 20) * [[UIScreen mainScreen] scale]; 23 | } 24 | } 25 | 26 | + (NSInteger)bottomOffset 27 | { 28 | if ([UIScreen mainScreen].bounds.size.height == 812) 29 | { 30 | return (44 + 34) * 3; 31 | } 32 | else 33 | { 34 | return (44) * [[UIScreen mainScreen] scale]; 35 | } 36 | } 37 | 38 | + (BOOL)isInfoValid:(M80ImageMergeInfo *)info 39 | { 40 | NSInteger threshold = [M80Constraint requiredThreshold:info]; 41 | NSInteger length = info.length; 42 | NSLog(@"validate info [%@] threshold %d",info,(int)threshold); 43 | return threshold > 0 && 44 | length > threshold && 45 | info.secondOffset > info.firstOffset; 46 | } 47 | 48 | 49 | + (NSInteger)requiredThreshold:(M80ImageMergeInfo *)info 50 | { 51 | NSInteger minImageHeight = MIN(info.firstImage.size.height, info.secondImage.size.height); 52 | double factor = [M80Constraint shouldUseGradientImage:info.type] ? 0.10618 : 0.0618; 53 | return (NSInteger)((minImageHeight - [M80Constraint topOffset] - [M80Constraint bottomOffset]) * factor); 54 | 55 | } 56 | 57 | + (BOOL)shouldUseGradientImage:(M80FingerprintType)type 58 | { 59 | return type == M80FingerprintTypeCRC && [[UIScreen mainScreen] scale] >= 3.0; 60 | } 61 | @end 62 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Algorithm/M80ImageFingerprint.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80ImageFingerprint.h 3 | // M80Image 4 | // 5 | // Created by amao on 11/18/15. 6 | // Copyright © 2015 Netease. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef enum : NSUInteger { 13 | M80FingerprintTypeCRC, 14 | M80FingerprintTypeHistogram, 15 | } M80FingerprintType; 16 | 17 | 18 | 19 | @interface M80ImageFingerprint : NSObject 20 | @property (nonatomic,strong) NSArray *lines; 21 | + (instancetype)fingerprint:(UIImage *)image 22 | type:(M80FingerprintType)type; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Algorithm/M80ImageGenerator.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80ImageGenerator.h 3 | // M80Image 4 | // 5 | // Created by amao on 11/18/15. 6 | // Copyright © 2015 Netease. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef enum : NSUInteger { 13 | M80MergeErrorNotSameWidth, 14 | M80MergeErrorNotEnoughOverlap, 15 | } M80MergeError; 16 | 17 | #define M80ERRORDOMAIN @"www.xiangwangfeng.com" 18 | 19 | @interface M80ImageGenerator : NSObject 20 | @property (nonatomic,strong) NSError *error; 21 | 22 | - (BOOL)feedImage:(UIImage *)image; 23 | - (BOOL)feedImages:(NSArray *)images; 24 | 25 | - (UIImage *)generate; 26 | @end 27 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Algorithm/M80ImageMergeInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80ImageMergeInfo.h 3 | // M80Image 4 | // 5 | // Created by amao on 11/18/15. 6 | // Copyright © 2015 Netease. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "M80ImageFingerprint.h" 12 | 13 | 14 | 15 | 16 | @interface M80ImageMergeInfo : NSObject 17 | //input 18 | @property (nonatomic,strong) UIImage *firstImage; 19 | @property (nonatomic,strong) UIImage *secondImage; 20 | @property (nonatomic,assign) M80FingerprintType type; 21 | 22 | //output 23 | @property (nonatomic,assign) NSInteger firstOffset; //为计算方便,此处为从 bottom 计算的 offset 24 | @property (nonatomic,assign) NSInteger secondOffset; //为计算方便,此处为从 bottom 计算的 offset 25 | @property (nonatomic,assign) NSInteger length; //重合部分长度 26 | 27 | - (void)calc; 28 | @end 29 | 30 | 31 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Sections/Main/Entity/M80MergeResult.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80MergeResult.h 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 2017/1/4. 6 | // Copyright © 2017年 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface M80MergeResult : NSObject 13 | @property (nonatomic,strong) UIImage *image; 14 | @property (nonatomic,copy) dispatch_block_t completion; 15 | @property (nonatomic,strong) NSError *error; 16 | 17 | + (instancetype)resultBy:(UIImage *)image 18 | error:(NSError *)error 19 | assets:(NSArray *)assets; 20 | @end 21 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Sections/Main/Entity/M80MergeResult.m: -------------------------------------------------------------------------------- 1 | // 2 | // M80MergeResult.m 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 2017/1/4. 6 | // Copyright © 2017年 M80. All rights reserved. 7 | // 8 | 9 | #import "M80MergeResult.h" 10 | #import "UIView+Toast.h" 11 | 12 | @import Photos; 13 | 14 | @implementation M80MergeResult 15 | + (instancetype)resultBy:(UIImage *)image 16 | error:(NSError *)error 17 | assets:(NSArray *)assets 18 | { 19 | M80MergeResult *result = [[M80MergeResult alloc] init]; 20 | result.image = image; 21 | result.error = error; 22 | 23 | if (image && !error) 24 | { 25 | result.completion = ^(){ 26 | 27 | #ifndef DEBUG 28 | UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; 29 | [keyWindow makeToast:@"清理临时文件..."]; 30 | 31 | [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 32 | [PHAssetChangeRequest deleteAssets:assets]; 33 | } completionHandler:nil]; 34 | #endif 35 | 36 | }; 37 | } 38 | return result; 39 | } 40 | @end 41 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Sections/Main/Interactor/M80MainInteractor.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80MainInteractor.h 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 2016/12/8. 6 | // Copyright © 2016年 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "M80MergeResult.h" 12 | 13 | 14 | 15 | 16 | @protocol M80MainIteractorDelegate 17 | - (void)photosRequestAuthorizationFailed; 18 | 19 | - (void)presentViewController:(UIViewController *)viewControllerToPresent 20 | animated:(BOOL)flag 21 | completion:(void (^)(void))completion; 22 | 23 | - (void)showResult:(M80MergeResult *)result; 24 | 25 | - (void)mergeBegin; 26 | 27 | - (void)mergeEnd; 28 | @end 29 | 30 | @interface M80MainInteractor : NSObject 31 | @property (nonatomic,weak) id delegate; 32 | - (void)run; 33 | 34 | - (void)chooseImages; 35 | @end 36 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Sections/Main/Interactor/M80RecentImageFinder.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80RecentImageFinder.h 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 2016/12/7. 6 | // Copyright © 2016年 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol M80RecentImageFinderDelegate 12 | - (void)onFindRecentImages:(NSArray *)images; 13 | @end 14 | 15 | @interface M80RecentImageFinder : NSObject 16 | @property (nonatomic,weak) id delegate; 17 | - (void)run; 18 | @end 19 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Sections/Main/ViewController/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 11/27/15. 6 | // Copyright © 2015 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Sections/Preview/M80ImageViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // M80ImageViewController.h 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 11/27/15. 6 | // Copyright © 2015 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface M80ImageViewController : UIViewController 12 | @property (nonatomic,copy) dispatch_block_t completion; 13 | - (instancetype)initWithImage:(UIImage *)image; 14 | @end 15 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Classes/Util/UIImage+M80.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+M80.h 3 | // M80Image 4 | // 5 | // Created by amao on 11/18/15. 6 | // Copyright © 2015 Netease. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface UIImage (M80) 13 | - (UIImage *)m80_subImage:(CGRect)rect; 14 | 15 | - (UIImage *)m80_rangedImage:(NSRange)range; 16 | 17 | - (BOOL)m80_saveAsPngFile:(NSString *)path; 18 | 19 | - (UIImage *)m80_gradientImage; 20 | @end 21 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | zh_CN 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | Centaur 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.8.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleURLTypes 22 | 23 | 24 | CFBundleTypeRole 25 | Editor 26 | CFBundleURLName 27 | www.xiangwangfeng.com.centaur 28 | CFBundleURLSchemes 29 | 30 | centaur 31 | 32 | 33 | 34 | CFBundleVersion 35 | 1 36 | Fabric 37 | 38 | APIKey 39 | 1d577a8f01767e602d3325fd67a902a24ddd1dbe 40 | Kits 41 | 42 | 43 | KitInfo 44 | 45 | KitName 46 | Answers 47 | 48 | 49 | 50 | LSRequiresIPhoneOS 51 | 52 | NSPhotoLibraryUsageDescription 53 | 当前程序将读取你的截图进行拼接 54 | UILaunchStoryboardName 55 | LaunchScreen 56 | UIMainStoryboardFile 57 | Main 58 | UIRequiredDeviceCapabilities 59 | 60 | armv7 61 | 62 | UISupportedInterfaceOrientations 63 | 64 | UIInterfaceOrientationPortrait 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetCheckmark.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | 30 | /** 31 | * The check mark to show selected asset. 32 | */ 33 | @interface CTAssetCheckmark : UIView 34 | 35 | #pragma mark Customizing Appearance 36 | 37 | /** 38 | * @name Customizing Appearance 39 | */ 40 | 41 | /** 42 | * To set margin of the check mark from specific edges. 43 | * 44 | * @param margin The margin from the edges. 45 | * @param edgeX The layout attribute respresents vertical edge that the check mark pins to. Either `NSLayoutAttributeLeft` or `NSLayoutAttributeRight`. 46 | * @param edgeY The layout attribute respresents horizontal edge that the check mark pins to. Either `NSLayoutAttributeTop` or `NSLayoutAttributeBottom`. 47 | */ 48 | - (void)setMargin:(CGFloat)margin forVerticalEdge:(NSLayoutAttribute)edgeX horizontalEdge:(NSLayoutAttribute)edgeY UI_APPEARANCE_SELECTOR; 49 | 50 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | #import "CTAssetThumbnailStacks.h" 30 | 31 | 32 | 33 | @interface CTAssetCollectionViewCell : UITableViewCell 34 | 35 | @property (nonatomic, strong, readonly) CTAssetThumbnailStacks *thumbnailStacks; 36 | 37 | @property (nonatomic, weak) UIFont *titleFont UI_APPEARANCE_SELECTOR; 38 | @property (nonatomic, strong) UIColor *titleTextColor UI_APPEARANCE_SELECTOR; 39 | @property (nonatomic, strong) UIColor *selectedTitleTextColor UI_APPEARANCE_SELECTOR; 40 | 41 | @property (nonatomic, weak) UIFont *countFont UI_APPEARANCE_SELECTOR; 42 | @property (nonatomic, strong) UIColor *countTextColor UI_APPEARANCE_SELECTOR; 43 | @property (nonatomic, strong) UIColor *selectedCountTextColor UI_APPEARANCE_SELECTOR; 44 | 45 | @property (nonatomic, strong) UIColor *accessoryColor UI_APPEARANCE_SELECTOR; 46 | @property (nonatomic, strong) UIColor *selectedAccessoryColor UI_APPEARANCE_SELECTOR; 47 | 48 | @property (nonatomic, weak) UIColor *selectedBackgroundColor UI_APPEARANCE_SELECTOR; 49 | 50 | 51 | - (instancetype)initWithThumbnailSize:(CGSize)size reuseIdentifier:(NSString *)reuseIdentifier; 52 | - (void)bind:(PHAssetCollection *)collection count:(NSUInteger)count; 53 | 54 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetCollectionViewController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetCollectionViewController : UITableViewController 30 | 31 | - (void)reloadUserInterface; 32 | 33 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetItemViewController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | 30 | 31 | 32 | @interface CTAssetItemViewController : UIViewController 33 | 34 | @property (nonatomic, assign) BOOL allowsSelection; 35 | @property (nonatomic, strong, readonly) PHAsset *asset; 36 | @property (nonatomic, strong, readonly) UIImage *image; 37 | 38 | + (CTAssetItemViewController *)assetItemViewControllerForAsset:(PHAsset *)asset; 39 | 40 | - (void)playAsset:(id)sender; 41 | - (void)pauseAsset:(id)sender; 42 | 43 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetPlayButton.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetPlayButton : UIControl 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetScrollView.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import "CTAssetItemViewController.h" 29 | #import "CTAssetPlayButton.h" 30 | #import "CTAssetSelectionButton.h" 31 | 32 | 33 | 34 | 35 | extern NSString * const CTAssetScrollViewDidTapNotification; 36 | extern NSString * const CTAssetScrollViewPlayerWillPlayNotification; 37 | extern NSString * const CTAssetScrollViewPlayerWillPauseNotification; 38 | 39 | 40 | @interface CTAssetScrollView : UIScrollView 41 | 42 | @property (nonatomic, assign) BOOL allowsSelection; 43 | 44 | @property (nonatomic, strong, readonly) UIImage *image; 45 | @property (nonatomic, strong, readonly) AVPlayer *player; 46 | 47 | @property (nonatomic, strong, readonly) UIImageView *imageView; 48 | @property (nonatomic, strong, readonly) CTAssetPlayButton *playButton; 49 | @property (nonatomic, strong, readonly) CTAssetSelectionButton *selectionButton; 50 | 51 | 52 | - (void)startActivityAnimating; 53 | - (void)stopActivityAnimating; 54 | 55 | - (void)setProgress:(CGFloat)progress; 56 | 57 | - (void)bind:(PHAsset *)asset image:(UIImage *)image requestInfo:(NSDictionary *)info; 58 | - (void)bind:(AVPlayerItem *)playerItem requestInfo:(NSDictionary *)info; 59 | 60 | - (void)updateZoomScalesAndZoom:(BOOL)zoom; 61 | 62 | - (void)playVideo; 63 | - (void)pauseVideo; 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetSelectionButton.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetSelectionButton : UIControl 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetThumbnailOverlay.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | 30 | 31 | @interface CTAssetThumbnailOverlay : UIView 32 | 33 | - (void)bind:(PHAsset *)asset duration:(NSString *)duration; 34 | - (void)bind:(PHAssetCollection *)assetCollection; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetThumbnailStacks.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import "CTAssetThumbnailView.h" 29 | 30 | @interface CTAssetThumbnailStacks : UIView 31 | 32 | @property (nonatomic, assign) CGSize thumbnailSize; 33 | @property (nonatomic, copy, readonly) NSArray *thumbnailViews; 34 | @property (nonatomic, assign, readonly) UIEdgeInsets edgeInsets; 35 | 36 | - (CTAssetThumbnailView *)thumbnailAtIndex:(NSUInteger)index; 37 | - (void)setHighlighted:(BOOL)highlighted; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetThumbnailView.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | 30 | 31 | @interface CTAssetThumbnailView : UIView 32 | 33 | @property (nonatomic, assign) BOOL showsDuration; 34 | @property (nonatomic, strong) UIImage *backgroundImage; 35 | 36 | - (void)bind:(UIImage *)image asset:(PHAsset *)asset; 37 | - (void)bind:(UIImage *)image assetCollection:(PHAssetCollection *)assetCollection; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsGridSelectedView.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2013 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetsGridSelectedView : UIView 30 | 31 | @property (nonatomic, assign) BOOL showsSelectionIndex; 32 | @property (nonatomic, assign) NSUInteger selectionIndex; 33 | 34 | @property (nonatomic, weak) UIColor *selectedBackgroundColor UI_APPEARANCE_SELECTOR; 35 | @property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR; 36 | 37 | @property (nonatomic, weak) UIFont *font UI_APPEARANCE_SELECTOR DEPRECATED_MSG_ATTRIBUTE("Use setTextAttributes: of CTAssetSelectionLabel instead."); 38 | @property (nonatomic, weak) UIColor *textColor UI_APPEARANCE_SELECTOR DEPRECATED_MSG_ATTRIBUTE("Use setTextAttributes: of CTAssetSelectionLabel instead."); 39 | 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsGridView.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetsGridView : UIView 30 | 31 | @property (nonatomic, weak) UIColor *gridBackgroundColor UI_APPEARANCE_SELECTOR; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsGridView.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import "CTAssetsPickerDefines.h" 29 | #import "CTAssetsGridView.h" 30 | 31 | @interface CTAssetsGridView () 32 | 33 | @property (nonatomic, assign) BOOL didSetupConstraints; 34 | 35 | @end 36 | 37 | 38 | @implementation CTAssetsGridView 39 | 40 | - (instancetype)initWithFrame:(CGRect)frame 41 | { 42 | if (self = [super initWithFrame:frame]) 43 | { 44 | [self setupViews]; 45 | } 46 | 47 | return self; 48 | } 49 | 50 | 51 | #pragma mark - Setup 52 | 53 | - (void)setupViews 54 | { 55 | self.backgroundColor = CTAssetsGridViewBackgroundColor; 56 | } 57 | 58 | 59 | #pragma mark - Apperance 60 | 61 | - (UIColor *)gridBackgroundColor 62 | { 63 | return self.backgroundColor; 64 | } 65 | 66 | - (void)setGridBackgroundColor:(UIColor *)backgroundColor 67 | { 68 | UIColor *color = (backgroundColor) ? (backgroundColor) : CTAssetsGridViewBackgroundColor; 69 | self.backgroundColor = color; 70 | } 71 | 72 | 73 | #pragma mark - Update auto layout constraints 74 | 75 | - (void)updateConstraints 76 | { 77 | if (!self.didSetupConstraints) 78 | { 79 | [self autoPinEdgesToSuperviewEdges]; 80 | self.didSetupConstraints = YES; 81 | } 82 | 83 | [super updateConstraints]; 84 | } 85 | 86 | @end 87 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsGridViewCell.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | #import "CTAssetThumbnailView.h" 30 | 31 | 32 | 33 | @interface CTAssetsGridViewCell : UICollectionViewCell 34 | 35 | @property (nonatomic, assign, getter = isEnabled) BOOL enabled; 36 | @property (nonatomic, assign) BOOL showsSelectionIndex; 37 | @property (nonatomic, assign) NSUInteger selectionIndex; 38 | 39 | @property (nonatomic, weak) UIColor *disabledColor UI_APPEARANCE_SELECTOR; 40 | @property (nonatomic, weak) UIColor *highlightedColor UI_APPEARANCE_SELECTOR; 41 | 42 | - (void)bind:(PHAsset *)asset; 43 | 44 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsGridViewController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | 30 | 31 | @class CTAssetsGridViewController; 32 | 33 | 34 | 35 | @protocol CTAssetsGridViewControllerDelegate 36 | 37 | - (void)assetsGridViewController:(CTAssetsGridViewController *)picker photoLibraryDidChangeForAssetCollection:(PHAssetCollection *)assetCollection; 38 | 39 | @end 40 | 41 | 42 | 43 | @interface CTAssetsGridViewController : UICollectionViewController 44 | 45 | @property (nonatomic, weak) id delegate; 46 | @property (nonatomic, strong) PHAssetCollection *assetCollection; 47 | 48 | @end 49 | 50 | 51 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsGridViewFooter.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | 30 | 31 | @interface CTAssetsGridViewFooter : UICollectionReusableView 32 | 33 | @property (nonatomic, weak) UIFont *font UI_APPEARANCE_SELECTOR; 34 | @property (nonatomic, weak) UIColor *textColor UI_APPEARANCE_SELECTOR; 35 | 36 | - (void)bind:(PHFetchResult *)result; 37 | 38 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsGridViewLayout.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetsGridViewLayout : UICollectionViewFlowLayout 30 | 31 | - (instancetype)initWithContentSize:(CGSize)contentSize traitCollection:(UITraitCollection *)traits; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsNavigationController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 bawn 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetsNavigationController : UINavigationController 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPageView.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetsPageView : UIView 30 | 31 | @property (nonatomic, strong) UIColor *pageBackgroundColor UI_APPEARANCE_SELECTOR; 32 | @property (nonatomic, strong) UIColor *fullscreenBackgroundColor UI_APPEARANCE_SELECTOR; 33 | 34 | - (void)enterFullscreen; 35 | - (void)exitFullscreen; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPageViewController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import 29 | 30 | 31 | 32 | 33 | 34 | /** 35 | * A view controller that shows selected photos and vidoes from user's photo library that let the user navigate the item page by page. 36 | */ 37 | @interface CTAssetsPageViewController : UIPageViewController 38 | 39 | /** 40 | * The index of the photo or video with the currently showing item. 41 | */ 42 | @property (nonatomic, assign) NSInteger pageIndex; 43 | 44 | 45 | /** 46 | * @name Creating a Assets Page View Controller 47 | */ 48 | 49 | /** 50 | * Initializes a newly created view controller with a fetech result. 51 | * 52 | * @param fetchResult A fetch result of `PHAsset` objects. 53 | * 54 | * @return An instance of `CTAssetPageViewController` initialized to show the asset items in `fetchResult`. 55 | */ 56 | - (instancetype)initWithFetchResult:(PHFetchResult *)fetchResult; 57 | 58 | /** 59 | * Initializes a newly created view controller with an array of assets. 60 | * 61 | * @param assets An array of `PHAsset` objects. 62 | * 63 | * @return An instance of `CTAssetPageViewController` initialized to show the asset items in `assets`. 64 | */ 65 | - (instancetype)initWithAssets:(NSArray *)assets; 66 | 67 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerAccessDeniedView.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetsPickerAccessDeniedView : UIView 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/AccessDeniedViewLock@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeAllPhotos@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeBurst@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeFavorites@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeLastImport@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgePanorama@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeRecentlyDeleted@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeScreenshots@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSelfPortraits@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSloMoSmall@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeSlomo@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapse@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeTimelapseSmall@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideo@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/BadgeVideoSmall@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/Checkmark@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkShadow@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/CheckmarkUnselected@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/DisclosureArrow@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridDisabledAsset@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbum@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyAlbumShared@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridEmptyCameraRoll@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridGradient@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/GridHiddenAlbum@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PauseButton@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/PlayButton@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayButtonMask@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/VideoPlayGlyphMask@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/ar.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "إلغاء"; 3 | "Done" = "تم"; 4 | 5 | /* Default title */ 6 | "Photos" = "الصور"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "تم تحديد %@ صورة"; 10 | "%@ Photos Selected" = "تم تحديد %@ صور"; 11 | "%@ Video Selected" = "تم تحديد %@ فيديو"; 12 | "%@ Videos Selected" = "تم تحديد %@ فيديوهات"; 13 | "%@ Items Selected" = "تم تحديد %@ عناصر"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ صور"; 17 | "%@ Videos" = "%@ فيديوهات"; 18 | "%@ Photos, %@ Videos" = "%@ صور، %@ فيديو"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%@ من %@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "لا يحق لهذا التطبيق الوصول إلى صورك أو فيديوهاتك."; 25 | "You can enable access in Privacy Settings." = "يمكن تفعيل الوصول من إعدادات الخصوصية."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "لا توجد صور أو فيديوهات"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "يمكنك التقاط الصور والفيديوهات باستخدام الكاميرا، أو مزامنة الصورة والفيديوهات مع %@ الخاص بك.\nباستخدام iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "يمكنك مزامنة الصورة والفيديوهات مع %@ الخاص بك."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "تشغيل"; 36 | "Select" = "حدد"; 37 | "Deselect" = "إلغاء"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "ساعات"; 41 | "hour" = "ساعة"; 42 | "minutes" = "دقائق"; 43 | "minute" = "دقيقة"; 44 | "seconds" = "ثواني"; 45 | "second" = "ثانية"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/da.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Fortryd"; 3 | "Done" = "Færdig"; 4 | 5 | /* Default title */ 6 | "Photos" = "Billeder"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ Billed valgt"; 10 | "%@ Photos Selected" = "%@ Billeder valgt"; 11 | "%@ Video Selected" = "%@ Video valgt"; 12 | "%@ Videos Selected" = "%@ Videoer valgt"; 13 | "%@ Items Selected" = "%@ Emner valgt"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Billeder"; 17 | "%@ Videos" = "%@ Videoer"; 18 | "%@ Photos, %@ Videos" = "%1$@ Billeder, %2$@ Videoer"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ af %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Denne app har ikke adgangs til dine billeder eller videoer."; 25 | "You can enable access in Privacy Settings." = "Du kan tildele adgang under Privatlivs indstillinger."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Ingen billeder eller videoer"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Du kan tage billeder med kameraet, eller synkronisere billeder og videoer til din %@\nmed iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Du kan synkronisere billeder eller videoer til din %@ med iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Afspil"; 36 | "Select" = "Vælg"; 37 | "Deselect" = "Fravælg"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "timer"; 41 | "hour" = "time"; 42 | "minutes" = "minutter"; 43 | "minute" = "minut"; 44 | "seconds" = "sekunder"; 45 | "second" = "sekund"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Kan ikke afspille video streaming"; 49 | "OK" = "OK"; 50 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/de.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Abbrechen"; 3 | "Done" = "Fertig"; 4 | 5 | /* Default title */ 6 | "Photos" = "Fotos"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ Foto ausgewählt"; 10 | "%@ Photos Selected" = "%@ Fotos ausgewählt"; 11 | "%@ Video Selected" = "%@ Video ausgewählt"; 12 | "%@ Videos Selected" = "%@ Videos ausgewählt"; 13 | "%@ Items Selected" = "%@ Objekte ausgewählt"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Fotos"; 17 | "%@ Videos" = "%@ Videos"; 18 | "%@ Photos, %@ Videos" = "%1$@ Fotos, %2$@ Videos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ von %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Diese App darf nicht auf Ihr Fotoalbum zugreifen."; 25 | "You can enable access in Privacy Settings." = "Sie können den Zugriff in den Datenschutz Einstellungen erlauben."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Keine Fotos oder Videos vorhanden"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Sie können Fotos oder Videos mit der Kamera aufnehmen oder Ihr %@\nmit iTunes synchronisieren."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Sie können Fotos und Videos mit iTunes auf Ihr %@ synchronisieren."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Wiedergeben"; 36 | "Select" = "Wählen Sie"; 37 | "Deselect" = "Markierung entfernen"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "Stunden"; 41 | "hour" = "Stunde"; 42 | "minutes" = "Minuten"; 43 | "minute" = "Minute"; 44 | "seconds" = "Sekunden"; 45 | "second" = "Sekunde"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Video kann nicht wiedergegeben werden"; 49 | "OK" = "OK"; 50 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/en.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Cancel"; 3 | "Done" = "Done"; 4 | 5 | /* Default title */ 6 | "Photos" = "Photos"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ Photo Selected"; 10 | "%@ Photos Selected" = "%@ Photos Selected"; 11 | "%@ Video Selected" = "%@ Video Selected"; 12 | "%@ Videos Selected" = "%@ Videos Selected"; 13 | "%@ Items Selected" = "%@ Items Selected"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Photos"; 17 | "%@ Videos" = "%@ Videos"; 18 | "%@ Photos, %@ Videos" = "%1$@ Photos, %2$@ Videos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ of %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "This app does not have access to your photos or videos."; 25 | "You can enable access in Privacy Settings." = "You can enable access in Privacy Settings."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "No Photos or Videos"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "You can sync photos and videos onto your %@ using iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Play"; 36 | "Select" = "Select"; 37 | "Deselect" = "Deselect"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "hours"; 41 | "hour" = "hour"; 42 | "minutes" = "minutes"; 43 | "minute" = "minute"; 44 | "seconds" = "seconds"; 45 | "second" = "second"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/es-MX.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Cancela"; 3 | "Done" = "OK"; 4 | 5 | /* Default title */ 6 | "Photos" = "Fotos"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ Foto seleccionada"; 10 | "%@ Photos Selected" = "%@ Fotos seleccionadas"; 11 | "%@ Video Selected" = "%@ Video seleccionado"; 12 | "%@ Videos Selected" = "%@ Videos seleccionados"; 13 | "%@ Items Selected" = "%@ Objetos seleccionados"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Fotos"; 17 | "%@ Videos" = "%@ Videos"; 18 | "%@ Photos, %@ Videos" = "%@ Fotos, %@ Videos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%@ de %@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "La aplicación no tiene acceso a tus fotos o videos."; 25 | "You can enable access in Privacy Settings." = "Puedes acceder en Ajustes/Privacidad."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Ni fotos ni videos"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puedes tomar fotos y videos utilizando la cámara, o sincronizarlas con tu %@ con iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Puedes sincronizar las fotos y videos en tu %@ con iTunes"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Reproducir"; 36 | "Select" = "Select"; 37 | "Deselect" = "Deselect"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "horas"; 41 | "hour" = "hora"; 42 | "minutes" = "minutos"; 43 | "minute" = "minuto"; 44 | "seconds" = "segundos"; 45 | "second" = "segundo"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/es.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Cancelar"; 3 | "Done" = "Hecho"; 4 | 5 | /* Default title */ 6 | "Photos" = "Fotos"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ foto seleccionada"; 10 | "%@ Photos Selected" = "%@ fotos seleccionadas"; 11 | "%@ Video Selected" = "%@ vídeo seleccionado"; 12 | "%@ Videos Selected" = "%@ vídeos seleccionados"; 13 | "%@ Items Selected" = "%@ objetos seleccionados"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ fotos"; 17 | "%@ Videos" = "%@ vídeos"; 18 | "%@ Photos, %@ Videos" = "%1$@ fotos, %2$@ vídeos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ de %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Esta aplicación no tiene acceso a tus fotos o vídeos."; 25 | "You can enable access in Privacy Settings." = "Puedes habilitar el acceso en los ajustes de privacidad."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "No hay fotos ni vídeos"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puedes tomar fotos y vídeos con la cámara o sincronizar fotos y vídeos en tu %@\na través de iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Puedes sincronizar fotos y vídeos en tu %@ a través de iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Reproducir"; 36 | "Select" = "Seleccione"; 37 | "Deselect" = "Deseleccionar"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "horas"; 41 | "hour" = "hora"; 42 | "minutes" = "minutos"; 43 | "minute" = "minuto"; 44 | "seconds" = "segundos"; 45 | "second" = "segundo"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/fi.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Kumoa"; 3 | "Done" = "Valmis"; 4 | 5 | /* Default title */ 6 | "Photos" = "Kuvat"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ kuva valittu"; 10 | "%@ Photos Selected" = "%@ kuvaa valittu"; 11 | "%@ Video Selected" = "%@ video valittu"; 12 | "%@ Videos Selected" = "%@ videota valittu"; 13 | "%@ Items Selected" = "%@ kohdetta valittu"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ kuvaa"; 17 | "%@ Videos" = "%@ videota"; 18 | "%@ Photos, %@ Videos" = "%1$@ kuvaa, %2$@ videota"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ / %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Sovelluksella ei ole pääsyä kuviin tai videoihin."; 25 | "You can enable access in Privacy Settings." = "Voit sallia pääsyn Asetukset-valikossa."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Ei kuvia tai videoita"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Voit ottaa kuvia ja videokuvata kameralla tai synkroinoida iTunesin avulla kuvia ja videoita %@en."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Voit synkroinoida iTunesin avulla kuvia ja videoita %@en."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Toista"; 36 | "Select" = "Valitse"; 37 | "Deselect" = "Poista"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "tuntia"; 41 | "hour" = "tunti"; 42 | "minutes" = "minuuttia"; 43 | "minute" = "minuutti"; 44 | "seconds" = "sekuntia"; 45 | "second" = "sekunti"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/fr.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Annuler"; 3 | "Done" = "Valider"; 4 | 5 | /* Default title */ 6 | "Photos" = "Photos"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ photo selectionée"; 10 | "%@ Photos Selected" = "%@ photos sélectionnées"; 11 | "%@ Video Selected" = "%@ vidéo sélectionnée"; 12 | "%@ Videos Selected" = "%@ vidéos sélectionnées"; 13 | "%@ Items Selected" = "%@ éléments sélectionnés"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Photos"; 17 | "%@ Videos" = "%@ Vidéos"; 18 | "%@ Photos, %@ Videos" = "%1$@ Photos, %2$@ Vidéos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ sur %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Cette application n'a pas accès à vos photos et vos vidéos."; 25 | "You can enable access in Privacy Settings." = "Vous pouvez autoriser l'accès dans l'application Réglages > Confidentialité."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Pas de Photos ou Vidéos"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Vous pouvez prendre des photos et des vidéos en utilisant l'appareil ou synchroniser vos photos et vidéos sur %@\n avec iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Vous pouvez synchroniser vos photos et vidéos sur %@ avec iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Lire"; 36 | "Select" = "Sélectionner"; 37 | "Deselect" = "Désélectionner"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "heures"; 41 | "hour" = "heure"; 42 | "minutes" = "minutes"; 43 | "minute" = "minute"; 44 | "seconds" = "secondes"; 45 | "second" = "seconde"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Impossible de lire le flux vidéo"; 49 | "OK" = "OK"; 50 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/he.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "ביטול"; 3 | "Done" = "סיום"; 4 | 5 | /* Default title */ 6 | "Photos" = "תמונות"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "נבחרה תמונה %@"; 10 | "%@ Photos Selected" = "נבחרו %@ תמונות"; 11 | "%@ Video Selected" = "נבחר וידאו %@"; 12 | "%@ Videos Selected" = "נבחרו %@ סרטוני וידאו"; 13 | "%@ Items Selected" = "נבחרו %@ פריטים"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ תמונות"; 17 | "%@ Videos" = "%@ סרטוני וידאו"; 18 | "%@ Photos, %@ Videos" = "%1$@ תמונות, %2$@ סרטוני וידאו"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ מ-%2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "לאפליקציה הזו אין גישה לתמונות ולסרטוני הוידאו שלך."; 25 | "You can enable access in Privacy Settings." = "באפשרותך לאפשר גישה בהגדרות הפרטיות."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "אין תמונות או סרטוני וידאו"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "באפשרותך לצלם תמונות ולהקליט וידאו בעזרת המצלמה או לסנכרן תמונות וסרטוני וידאו עם %@\nבאמצעות ב-iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "באפשרותך לסנכרן תמונות וסרטוני וידאו עם %@ באמצעות iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "הפעלה"; 36 | "Select" = "בחר"; 37 | "Deselect" = "בטלו את הבחירה"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "שעות"; 41 | "hour" = "שעה"; 42 | "minutes" = "דקות"; 43 | "minute" = "דקה"; 44 | "seconds" = "שניות"; 45 | "second" = "שנייה"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/hi-IN.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "रद्द करें"; 3 | "Done" = "पूर्ण हुआ"; 4 | 5 | /* Default title */ 6 | "Photos" = "चित्र"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ चित्र चयनित"; 10 | "%@ Photos Selected" = "%@ चित्र चयनित"; 11 | "%@ Video Selected" = "%@ वीडियो चयनित"; 12 | "%@ Videos Selected" = "%@ वीडियो चयनित"; 13 | "%@ Items Selected" = "%@ आइटम चयनित"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ चित्र"; 17 | "%@ Videos" = "%@ वीडियो"; 18 | "%@ Photos, %@ Videos" = "%1$@ चित्र, %2$@ वीडियो"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%2$@ में से %1$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "यह ऐप आपके चित्रों या वीडियो तक नहीं पहुंच सकता।"; 25 | "You can enable access in Privacy Settings." = "आप निजता सेटिंग्स में पहुंच सक्षम कर सकते हैं।"; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "कोई चित्र या वीडियो नहीं"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "आप कैमरा का उपयोग करके चित्र या वीडियो ले सकते हैं, अथवा iTunes का उपयोग करके चित्र या वीडियो अपने %@ पर सिंक\nकर सकते हैं।"; 32 | "You can sync photos and videos onto your %@ using iTunes." = "आप iTunes का उपयोग करके अपने %@ पर चित्र और वीडियो सिंक कर सकते हैं।"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "चलाएं"; 36 | "Select" = "चुनना"; 37 | "Deselect" = "चयन रद्द करें"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "घंटे"; 41 | "hour" = "घंटा"; 42 | "minutes" = "मिनट"; 43 | "minute" = "मिनट"; 44 | "seconds" = "सेकंड"; 45 | "second" = "सेकंड"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/hu.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Mégsem"; 3 | "Done" = "Kész"; 4 | 5 | /* Default title */ 6 | "Photos" = "Fotók"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ fotó kiválasztva"; 10 | "%@ Photos Selected" = "%@ fotó kiválasztva"; 11 | "%@ Video Selected" = "%@ videó kiválasztva"; 12 | "%@ Videos Selected" = "%@ videó kiválasztva"; 13 | "%@ Items Selected" = "%@ elem kiválasztva"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Fotó"; 17 | "%@ Videos" = "%@ Videó"; 18 | "%@ Photos, %@ Videos" = "%1$@ Fotó, %2$@ Videó"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ / %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Ez az alkalmazás nem fér hozzá a fotóidhoz vagy a videóidhoz."; 25 | "You can enable access in Privacy Settings." = "Engedélyezheted a hozzáférést az Adatvédelmi beállításokban."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Nincsenek fotók vagy videók"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Képeket és videókat készíthetsz a készülék kamerájával, vagy szinkronizáld a fotóidat és a videóidat %@\n-ra iTunes-szal."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Szinkronizálhatod a fotóidat és a videóidat a %@-ra iTunes-szal."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Lejátszás"; 36 | 37 | /* Video duration spell out */ 38 | "hours" = "óra"; 39 | "hour" = "óra"; 40 | "minutes" = "perc"; 41 | "minute" = "perc"; 42 | "seconds" = "másodperc"; 43 | "second" = "másodperc"; 44 | 45 | /* Error message of playing stream video */ 46 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 47 | "OK" = "OK"; 48 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/id.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Batal"; 3 | "Done" = "Selesai"; 4 | 5 | /* Default title */ 6 | "Photos" = "Foto"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ Foto Terpilih"; 10 | "%@ Photos Selected" = "%@ Foto Terpilih"; 11 | "%@ Video Selected" = "%@ Video Terpilih"; 12 | "%@ Videos Selected" = "%@ Video Terpilih"; 13 | "%@ Items Selected" = "%@ Item Terpilih"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Foto"; 17 | "%@ Videos" = "%@ Video"; 18 | "%@ Photos, %@ Videos" = "%1$@ Foto, %2$@ Video"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ dari %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Aplikasi ini tidak memiliki akses ke foto atau videomu."; 25 | "You can enable access in Privacy Settings." = "Kamu bisa mengaktifkan akses di Setelan Privasi."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Tidak ada Foto atau Video"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Kamu bisa mengambil foto dan video menggunakan kamera, atau menyinkronkan foto dan video ke %@\nmenggunakan iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Kamu bisa menyinkronkan foto dan video ke %@ menggunakan iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Putar"; 36 | "Select" = "Memilih"; 37 | "Deselect" = "Hapus"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "jam"; 41 | "hour" = "jam"; 42 | "minutes" = "menit"; 43 | "minute" = "menit"; 44 | "seconds" = "detik"; 45 | "second" = "detik"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/it.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Annulla"; 3 | "Done" = "Fatto"; 4 | 5 | /* Default title */ 6 | "Photos" = "Foto"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ foto selezionata"; 10 | "%@ Photos Selected" = "%@ foto selezionate"; 11 | "%@ Video Selected" = "%@ video selezionato"; 12 | "%@ Videos Selected" = "%@ video selezionati"; 13 | "%@ Items Selected" = "%@ oggetto selezionato"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ foto"; 17 | "%@ Videos" = "%@ video"; 18 | "%@ Photos, %@ Videos" = "%1$@ foto, %2$@ video"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ di %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Questa app non ha accesso alle tue foto o ai tuoi video."; 25 | "You can enable access in Privacy Settings." = "Puoi attivare l'accesso nelle Impostazioni sulla privacy."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Nessuna foto o video"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Puoi scattare foto e registrare video con la fotocamera oppure sincronizzandoli sul tuo %@\ncon iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Puoi sincronizzare foto e video sul tuo %@ con iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Riproduci"; 36 | "Select" = "Selezionare"; 37 | "Deselect" = "Deseleziona"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "ore"; 41 | "hour" = "ora"; 42 | "minutes" = "minuti"; 43 | "minute" = "minuto"; 44 | "seconds" = "secondi"; 45 | "second" = "secondo"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/ja.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "キャンセル"; 3 | "Done" = "完了"; 4 | 5 | /* Default title */ 6 | "Photos" = "写真"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ 枚の写真が選択されました"; 10 | "%@ Photos Selected" = "%@ 枚の写真が選択されました"; 11 | "%@ Video Selected" = "%@ 件の動画が選択されました"; 12 | "%@ Videos Selected" = "%@ 件の動画が選択されました"; 13 | "%@ Items Selected" = "%@ 個のアイテムが選択されました"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ 枚の写真"; 17 | "%@ Videos" = "%@ 件の動画"; 18 | "%@ Photos, %@ Videos" = "%1$@ 枚の写真、%2$@ 件の動画"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ / %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "このアプリはあなたの写真と動画へアクセスする許可を得ていません。"; 25 | "You can enable access in Privacy Settings." = "「プライバシー設定」からアクセスを許可できます。"; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "写真または動画がありません"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "カメラを使用して写真または動画を撮影するか、ご利用の%@へ写真と動画を同期することができます。\n同期はiTunes を使用して行えます。"; 32 | "You can sync photos and videos onto your %@ using iTunes." = "iTunes を使用して、ご利用の%@へ写真と動画を同期することができます。"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "再生"; 36 | "Select" = "選択"; 37 | "Deselect" = "選択を解除"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "時間"; 41 | "hour" = "時間"; 42 | "minutes" = "分"; 43 | "minute" = "分"; 44 | "seconds" = "秒"; 45 | "second" = "秒"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "ストリーム動画が再生できません"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/ko.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "취소"; 3 | "Done" = "완료"; 4 | 5 | /* Default title */ 6 | "Photos" = "사진"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "사진 %@개 선택됨"; 10 | "%@ Photos Selected" = "사진 %@개 선택됨"; 11 | "%@ Video Selected" = "동영상 %@개 선택됨"; 12 | "%@ Videos Selected" = "동영상 %@개 선택됨"; 13 | "%@ Items Selected" = "%@개의 항목 선택됨"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "사진 %@개"; 17 | "%@ Videos" = "동영상 %@개"; 18 | "%@ Photos, %@ Videos" = "사진 %1$@개, 동영상 %2$@ 개"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@/%2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "이 앱은 귀하의 사진이나 동영상에 접근 권한이 없습니다."; 25 | "You can enable access in Privacy Settings." = "개인정보 설정에서 접근을 활성화할 수 있습니다."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "사진이나 동영상 없음"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "카메라를 사용해서 사진 및 동영상을 가져오거나 iTunes를 사용하여 %@에서 사진 및 동영상을 동기화할 수\n있습니다."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "iTunes를 사용하여 %@에서 사진 및 동영상을 동기화할 수 있습니다."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "플레이"; 36 | "Select" = "선택"; 37 | "Deselect" = "선택 해제"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "시간"; 41 | "hour" = "시간"; 42 | "minutes" = "분"; 43 | "minute" = "분"; 44 | "seconds" = "초"; 45 | "second" = "초"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/nl-NL.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Annuleren"; 3 | "Done" = "Gereed"; 4 | 5 | /* Default title */ 6 | "Photos" = "Foto's"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ foto geselecteerd"; 10 | "%@ Photos Selected" = "%@ foto's geselecteerd"; 11 | "%@ Video Selected" = "%@ video geselecteerd"; 12 | "%@ Videos Selected" = "%@ video's geselecteerd"; 13 | "%@ Items Selected" = "%@ items geselecteerd"; 14 | 15 | /* Album's footer */ 16 | "%@ Photos" = "%@ Foto's"; 17 | "%@ Videos" = "%@ Video's"; 18 | "%@ Photos, %@ Videos" = "%1$@ Foto's, %2$@ Videos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ op %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Deze App heeft geen toegang tot je foto's en video's."; 25 | "You can enable access in Privacy Settings." = "Je kan de applicatie toegang verlenen via Instellingen > Privacy."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Geen foto's of video's"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Je kunt foto's of video's nemen met je camera, of door je foto's en video's te synchroniseren met je %@n in iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Je kunt foto's en video's synchroniseren met je %@ in iTunes"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Lezen"; 36 | "Select" = "Select"; 37 | "Deselect" = "Deselecteren"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "uren"; 41 | "hour" = "uur"; 42 | "minutes" = "minuten"; 43 | "minute" = "minuut"; 44 | "seconds" = "seconden"; 45 | "second" = "seconde"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Kan video stream niet afspelen"; 49 | "OK" = "OK"; 50 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/nl.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Annuleren"; 3 | "Done" = "Gereed"; 4 | 5 | /* Default title */ 6 | "Photos" = "Foto's"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ foto geselecteerd"; 10 | "%@ Photos Selected" = "%@ foto's geselecteerd"; 11 | "%@ Video Selected" = "%@ video geselecteerd"; 12 | "%@ Videos Selected" = "%@ video's geselecteerd"; 13 | "%@ Items Selected" = "%@ items geselecteerd"; 14 | 15 | /* Album's footer */ 16 | "%@ Photos" = "%@ Foto's"; 17 | "%@ Videos" = "%@ Video's"; 18 | "%@ Photos, %@ Videos" = "%1$@ Foto's, %2$@ Videos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ op %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Deze App heeft geen toegang tot je foto's en video's."; 25 | "You can enable access in Privacy Settings." = "Je kan de applicatie toegang verlenen via Instellingen > Privacy."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Geen foto's of video's"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Je kunt foto's of video's nemen met je camera, of door je foto's en video's te synchroniseren met je %@n in iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Je kunt foto's en video's synchroniseren met je %@ in iTunes"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Lezen"; 36 | "Select" = "Select"; 37 | "Deselect" = "Deselecteren"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "uren"; 41 | "hour" = "uur"; 42 | "minutes" = "minuten"; 43 | "minute" = "minuut"; 44 | "seconds" = "seconden"; 45 | "second" = "seconde"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Kan video stream niet afspelen"; 49 | "OK" = "OK"; 50 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/pt-PT.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Cancelar"; 3 | "Done" = "Fechar"; 4 | 5 | /* Default title */ 6 | "Photos" = "Fotos"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ Foto selecionada"; 10 | "%@ Photos Selected" = "%@ Fotos selecionadas"; 11 | "%@ Video Selected" = "%@ Video selecionado"; 12 | "%@ Videos Selected" = "%@ Videos selecionados"; 13 | "%@ Items Selected" = "%@ Items selecionados"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Fotos"; 17 | "%@ Videos" = "%@ Vídeos"; 18 | "%@ Photos, %@ Videos" = "%@ Fotos, %@ Vídeos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%@ de %@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Esta app não tem acesso às suas fotos ou vídeos."; 25 | "You can enable access in Privacy Settings." = "Pode dar acesso nas configurações de privacidade."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Sem fotos ou vídeos"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Você pode tirar fotos e vídeos com a sua câmera, ou sincronizar fotos e vídeos para o seu %@ usando o iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Pode sincronizar fotos e vídeos para o seu %@ usando o iTunes"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Reproduzir"; 36 | "Select" = "Selecionar"; 37 | "Deselect" = "Desmarque"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "horas"; 41 | "hour" = "hora"; 42 | "minutes" = "minutos"; 43 | "minute" = "minuto"; 44 | "seconds" = "segundos"; 45 | "second" = "segundo"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/pt.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Cancelar"; 3 | "Done" = "Concluir"; 4 | 5 | /* Default title */ 6 | "Photos" = "Fotos"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ Foto selecionada"; 10 | "%@ Photos Selected" = "%@ Fotos selecionadas"; 11 | "%@ Video Selected" = "%@ Video selecionado"; 12 | "%@ Videos Selected" = "%@ Videos selecionados"; 13 | "%@ Items Selected" = "%@ Items selecionados"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ Fotos"; 17 | "%@ Videos" = "%@ Vídeos"; 18 | "%@ Photos, %@ Videos" = "%@ Fotos, %@ Vídeos"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%@ de %@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Este aplicativo não possui acesso a suas fotos e vídeos."; 25 | "You can enable access in Privacy Settings." = "Você pode autorizar este acesso em Ajustes > Privacidade > Fotos."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Nenhuma Foto ou Vídeo"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Você pode tirar fotos e vídeos com a sua câmera, ou sincronizar fotos e vídeos para o seu %@ usando o iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Pode sincronizar fotos e vídeos para o seu %@ usando o iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Reproduzir"; 36 | "Select" = "Selecionar"; 37 | "Deselect" = "Desmarque"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "horas"; 41 | "hour" = "hora"; 42 | "minutes" = "minutos"; 43 | "minute" = "minuto"; 44 | "seconds" = "segundos"; 45 | "second" = "segundo"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/ru.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Отмена"; 3 | "Done" = "Готово"; 4 | 5 | /* Default title */ 6 | "Photos" = "Фотографии"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "выбрана %@ фотография"; 10 | "%@ Photos Selected" = "выбрано %@ фотографий"; 11 | "%@ Video Selected" = "выбрано %@ видео"; 12 | "%@ Videos Selected" = "выбрано %@ видео"; 13 | "%@ Items Selected" = "выбрано %@ элементов"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ фотографий"; 17 | "%@ Videos" = "%@ видео"; 18 | "%@ Photos, %@ Videos" = "%1$@ фотографий, %2$@ видео"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ из %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "У этого приложения нет доступа к вашим фотографиям и видео."; 25 | "You can enable access in Privacy Settings." = "Вы можете включить доступ приложению в Настройках конфиденциальности."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Нет фотографий и видео"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Вы можете сделать фотографии или снять видео при помощи камеры либо синхронизировать фотографии и видео со своим %@\nчерез iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Вы можете синхронизировать фотографии и видео со своим %@ при помощи iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Воспр."; 36 | "Select" = "Выбрать"; 37 | "Deselect" = "Снимите"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "часов"; 41 | "hour" = "час"; 42 | "minutes" = "минут"; 43 | "minute" = "минута"; 44 | "seconds" = "секунд"; 45 | "second" = "секунда"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Cannot Play Stream Video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/sv.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "Avbryt"; 3 | "Done" = "Klar"; 4 | 5 | /* Default title */ 6 | "Photos" = "Foton"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "%@ foto valt"; 10 | "%@ Photos Selected" = "%@ foton valda"; 11 | "%@ Video Selected" = "%@ video vald"; 12 | "%@ Videos Selected" = "%@ videor valda"; 13 | "%@ Items Selected" = "%@ artiklar valda"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ foton"; 17 | "%@ Videos" = "%@ videor"; 18 | "%@ Photos, %@ Videos" = "%1$@ foton, %2$@ videor"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@ av %2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "Denna app har inte tillgång till dina foton eller videor."; 25 | "You can enable access in Privacy Settings." = "Du kan aktivera tillgång i Integritetsinställningarna."; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "Inga foton eller videor"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "Du kan ta foton och videor med kameran, eller synka foton och videor in i din %@ med hjälp av iTunes."; 32 | "You can sync photos and videos onto your %@ using iTunes." = "Du kan synka foton och videor in i din %@ med hjälp av iTunes."; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "Spela upp"; 36 | "Select" = "Välj"; 37 | "Deselect" = "Nollställ"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "timmar"; 41 | "hour" = "timme"; 42 | "minutes" = "minuter"; 43 | "minute" = "minut"; 44 | "seconds" = "sekunder"; 45 | "second" = "sekund"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "Kan inte spela upp video"; 49 | "OK" = "OK"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hans.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "取消"; 3 | "Done" = "完成"; 4 | 5 | /* Default title */ 6 | "Photos" = "照片"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "已选择%@张照片"; 10 | "%@ Photos Selected" = "已选择%@张照片"; 11 | "%@ Video Selected" = "已选择%@个视频"; 12 | "%@ Videos Selected" = "已选择%@个视频"; 13 | "%@ Items Selected" = "已选择%@项"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@张照片"; 17 | "%@ Videos" = "%@个视频"; 18 | "%@ Photos, %@ Videos" = "%1$@张照片,%2$@个视频"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@,共%2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "此应用程序对您的照片或视频没有访问权。"; 25 | "You can enable access in Privacy Settings." = "您可以在隐私设置中启用访问权。"; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "无照片或视频"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "您可以使用摄像头拍摄照片和视频,或使用iTunes将照片和视频同步到您的%@上。\n"; 32 | "You can sync photos and videos onto your %@ using iTunes." = "您可以使用iTunes将照片和视频同步到您的%@上。"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "播放"; 36 | "Select" = "选择"; 37 | "Deselect" = "取消选择"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "小时"; 41 | "hour" = "小时"; 42 | "minutes" = "分钟"; 43 | "minute" = "分钟"; 44 | "seconds" = "秒"; 45 | "second" = "秒"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "无法播放影片"; 49 | "OK" = "好"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerController.bundle/zh-Hant.lproj/CTAssetsPicker.strings: -------------------------------------------------------------------------------- 1 | /* Navigation bar buttons */ 2 | "Cancel" = "取消"; 3 | "Done" = "完成"; 4 | 5 | /* Default title */ 6 | "Photos" = "照片"; 7 | 8 | /* No. of selected */ 9 | "%@ Photo Selected" = "已選取 %@ 張照片"; 10 | "%@ Photos Selected" = "已選取 %@ 張照片"; 11 | "%@ Video Selected" = "已選取 %@ 部影片"; 12 | "%@ Videos Selected" = "已選取 %@ 部影片"; 13 | "%@ Items Selected" = "已選取 %@ 個項目"; 14 | 15 | /* Grid view footer */ 16 | "%@ Photos" = "%@ 張照片"; 17 | "%@ Videos" = "%@ 部影片"; 18 | "%@ Photos, %@ Videos" = "%1$@ 張照片、%2$@ 部影片"; 19 | 20 | /* Assets index */ 21 | "%@ of %@" = "%1$@/%2$@"; 22 | 23 | /* Messages if privacy is not granted */ 24 | "This app does not have access to your photos or videos." = "此 App 無法取用您的照片或影片。"; 25 | "You can enable access in Privacy Settings." = "您可以在「隱私權設定」中啟用存取。"; 26 | 27 | /* Messages if no assets */ 28 | "No Photos or Videos" = "沒有照片或影片"; 29 | 30 | /* The parameter will be replaced by the device model name */ 31 | "You can take photos and videos using the camera, or sync photos and videos onto your %@\nusing iTunes." = "您可以用相機拍照錄影或用 iTunes\n將照片和影片同步到 %@。"; 32 | "You can sync photos and videos onto your %@ using iTunes." = "您可以使用 iTunes 將照片和影片\n同步到 %@。"; 33 | 34 | /* Accessibility labels */ 35 | "Play" = "播放"; 36 | "Select" = "選擇"; 37 | "Deselect" = "取消選擇"; 38 | 39 | /* Video duration spell out */ 40 | "hours" = "小時"; 41 | "hour" = "小時"; 42 | "minutes" = "分"; 43 | "minute" = "分"; 44 | "seconds" = "秒"; 45 | "second" = "秒"; 46 | 47 | /* Error message of playing stream video */ 48 | "Cannot Play Stream Video" = "無法播放影片"; 49 | "OK" = "好"; -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsPickerNoAssetsView.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface CTAssetsPickerNoAssetsView : UIView 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/CTAssetsViewControllerTransition.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | 30 | 31 | 32 | 33 | @interface CTAssetsViewControllerTransition : NSObject 34 | 35 | 36 | @property (nonatomic, assign) UINavigationControllerOperation operation; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/CTAssetsPageViewController+Internal.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | @interface CTAssetsPageViewController (Internal) 28 | 29 | @property (nonatomic, assign) BOOL allowsSelection; 30 | 31 | @end -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/CTAssetsPickerController+Internal.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | @interface CTAssetsPickerController (Internal) 28 | 29 | - (void)dismiss:(id)sender; 30 | - (void)finishPickingAssets:(id)sender; 31 | 32 | - (void)setShouldCollapseDetailViewController:(BOOL)collapse; 33 | - (void)showNoAssets; 34 | 35 | - (CGSize)assetCollectionThumbnailSize; 36 | - (CGSize)assetThumbnailSize; 37 | - (NSString *)selectedAssetsString; 38 | 39 | - (PHImageRequestOptions *)thumbnailRequestOptions; 40 | - (CGSize)imageSizeForContainerSize:(CGSize)size; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | 30 | #define CTAssetsPickerLocalizedString(key, comment) \ 31 | NSLocalizedStringFromTableInBundle((key), @"CTAssetsPicker", [NSBundle ctassetsPickerBundle], (comment)) 32 | 33 | @interface NSBundle (CTAssetsPickerController) 34 | 35 | + (NSBundle *)ctassetsPickerBundle; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/NSBundle+CTAssetsPickerController.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import "NSBundle+CTAssetsPickerController.h" 28 | #import "CTAssetsPickerController.h" 29 | 30 | @implementation NSBundle (CTAssetsPickerController) 31 | 32 | + (NSBundle *)ctassetsPickerBundle 33 | { 34 | return [NSBundle bundleWithPath:[NSBundle ctassetsPickerBundlePath]]; 35 | } 36 | 37 | + (NSString *)ctassetsPickerBundlePath 38 | { 39 | return [[NSBundle bundleForClass:[CTAssetsPickerController class]] 40 | pathForResource:@"CTAssetsPickerController" ofType:@"bundle"]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/NSDateFormatter+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | 30 | 31 | @interface NSDateFormatter (CTAssetsPickerController) 32 | 33 | - (NSString *)ctassetsPickerStringFromTimeInterval:(NSTimeInterval)timeInterval; 34 | - (NSString *)ctassetsPickerSpellOutStringFromTimeInterval:(NSTimeInterval)timeInterval; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface NSIndexSet (CTAssetsPickerController) 30 | 31 | - (NSArray *)ctassetsPickerIndexPathsFromIndexesWithSection:(NSUInteger)section; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/NSIndexSet+CTAssetsPickerController.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | #import "NSIndexSet+CTAssetsPickerController.h" 29 | 30 | 31 | @implementation NSIndexSet (CTAssetsPickerController) 32 | 33 | - (NSArray *)ctassetsPickerIndexPathsFromIndexesWithSection:(NSUInteger)section 34 | { 35 | NSMutableArray *indexPaths = [NSMutableArray arrayWithCapacity:self.count]; 36 | 37 | [self enumerateIndexesUsingBlock:^(NSUInteger index, BOOL *stop) { 38 | [indexPaths addObject:[NSIndexPath indexPathForItem:index inSection:section]]; 39 | }]; 40 | 41 | return indexPaths; 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface NSNumberFormatter (CTAssetsPickerController) 30 | 31 | - (NSString *)ctassetsPickerStringFromAssetsCount:(NSUInteger)count; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/NSNumberFormatter+CTAssetsPickerController.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import "NSNumberFormatter+CTAssetsPickerController.h" 28 | 29 | @implementation NSNumberFormatter (CTAssetsPickerController) 30 | 31 | - (NSString *)ctassetsPickerStringFromAssetsCount:(NSUInteger)count 32 | { 33 | self.numberStyle = NSNumberFormatterDecimalStyle; 34 | self.locale = [NSLocale currentLocale]; 35 | return [self stringFromNumber:[NSNumber numberWithUnsignedInteger:count]]; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/PHAsset+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface PHAsset (CTAssetsPickerController) 30 | 31 | - (BOOL)ctassetsPickerIsPhoto; 32 | - (BOOL)ctassetsPickerIsVideo; 33 | - (BOOL)ctassetsPickerIsHighFrameRateVideo; 34 | - (BOOL)ctassetsPickerIsTimelapseVideo; 35 | 36 | - (UIImage *)badgeImage; 37 | - (NSString *)ctassetsPickerAccessibilityLabel; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/PHAssetCollection+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface PHAssetCollection (CTAssetsPickerController) 30 | 31 | + (PHAssetCollectionType)ctassetPickerAssetCollectionTypeOfSubtype:(PHAssetCollectionSubtype)subtype; 32 | - (NSUInteger)ctassetPikcerCountOfAssetsFetchedWithOptions:(PHFetchOptions *)fetchOptions; 33 | - (UIImage *)badgeImage; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface UICollectionView (CTAssetsPickerController) 30 | 31 | - (NSArray *)ctassetsPickerIndexPathsForElementsInRect:(CGRect)rect; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/UICollectionView+CTAssetsPickerController.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import "UICollectionView+CTAssetsPickerController.h" 28 | 29 | @implementation UICollectionView (CTAssetsPickerController) 30 | 31 | - (NSArray *)ctassetsPickerIndexPathsForElementsInRect:(CGRect)rect 32 | { 33 | NSArray *allAttributes = [self.collectionViewLayout layoutAttributesForElementsInRect:rect]; 34 | 35 | if (allAttributes.count == 0) 36 | return nil; 37 | 38 | NSMutableArray *indexPaths = [NSMutableArray arrayWithCapacity:allAttributes.count]; 39 | 40 | for (UICollectionViewLayoutAttributes *attributes in allAttributes) 41 | { 42 | NSIndexPath *indexPath = attributes.indexPath; 43 | [indexPaths addObject:indexPath]; 44 | } 45 | 46 | return indexPaths; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import 28 | 29 | @interface UIImage (CTAssetsPickerController) 30 | 31 | + (UIImage *)ctassetsPickerImageNamed:(NSString *)name; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/Vendor/CTAssetsPickerController/Categories/UIImage+CTAssetsPickerController.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MIT License (MIT) 4 | 5 | Copyright (c) 2015 Clement CN Tsang 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | */ 26 | 27 | #import "UIImage+CTAssetsPickerController.h" 28 | #import "NSBundle+CTAssetsPickerController.h" 29 | 30 | @implementation UIImage (CTAssetsPickerController) 31 | 32 | + (UIImage *)ctassetsPickerImageNamed:(NSString *)name 33 | { 34 | return [UIImage imageNamed:name inBundle:[NSBundle ctassetsPickerBundle] compatibleWithTraitCollection:nil]; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /M80ImageMerger/M80ImageMerger/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // M80ImageMerger 4 | // 5 | // Created by amao on 11/27/15. 6 | // Copyright © 2015 M80. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /M80ImageMerger/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :ios, '8.0' 3 | 4 | target 'M80ImageMerger' do 5 | pod ‘PureLayout’ 6 | pod 'SVProgressHUD' 7 | pod 'Toast' 8 | pod 'Fabric' 9 | pod 'Crashlytics' 10 | 11 | 12 | end 13 | -------------------------------------------------------------------------------- /M80ImageMerger/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Crashlytics (3.10.2): 3 | - Fabric (~> 1.7.7) 4 | - Fabric (1.7.7) 5 | - PureLayout (3.0.2) 6 | - SVProgressHUD (2.1.2) 7 | - Toast (3.1.0) 8 | 9 | DEPENDENCIES: 10 | - Crashlytics 11 | - Fabric 12 | - PureLayout 13 | - SVProgressHUD 14 | - Toast 15 | 16 | SPEC REPOS: 17 | https://github.com/cocoapods/specs.git: 18 | - Crashlytics 19 | - Fabric 20 | - PureLayout 21 | - SVProgressHUD 22 | - Toast 23 | 24 | SPEC CHECKSUMS: 25 | Crashlytics: 0360624eea1c978a743feddb2fb1ef8b37fb7a0d 26 | Fabric: bda89e242bce1b7b8ab264248cf3407774ce0095 27 | PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd 28 | SVProgressHUD: c404a55d78acbeb7ebb78b76d3faf986475a6994 29 | Toast: 14a93686d6c8bfe2727afd342414e35660a8a1f3 30 | 31 | PODFILE CHECKSUM: 5b86f05e554593450e4d75bb74ca05124c2d0305 32 | 33 | COCOAPODS: 1.5.3 34 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/Crashlytics.framework/README: -------------------------------------------------------------------------------- 1 | We've now combined all our supported platforms into a single podspec. As a result, we moved our submit script to a new location for Cocoapods projects: ${PODS_ROOT}/Crashlytics/submit. To avoid breaking functionality that references the old location of the submit, we've placed this dummy script that calls to the correct location, while providing a helpful warning if it is invoked. This bridge for backwards compatibility will be removed in a future release, so please heed the warning! 2 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/Crashlytics.framework/submit: -------------------------------------------------------------------------------- 1 | if [[ -z $PODS_ROOT ]]; then 2 | echo "error: The submit binary delivered by cocoapods is in a new location, under '$"{"PODS_ROOT"}"/Crashlytics/submit'. This script was put in place for backwards compatibility, but it relies on PODS_ROOT, which does not have a value in your current setup. Please update the path to the submit binary to fix this issue." 3 | else 4 | echo "warning: The submit script is now located at '$"{"PODS_ROOT"}"/Crashlytics/submit'. To remove this warning, update your path to point to this new location." 5 | sh "${PODS_ROOT}/Crashlytics/submit" "$@" 6 | fi 7 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/README.md: -------------------------------------------------------------------------------- 1 | ![Crashlytics Header](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-crashlytics-header.png) 2 | 3 | Part of [Google Fabric](https://get.fabric.io), [Crashlytics](http://try.crashlytics.com/) offers the most powerful, yet lightest weight crash reporting solution for iOS. Crashlytics also provides real-time analytics through [Answers](https://answers.io/) and app distributions to testers using [Beta](http://try.crashlytics.com/beta/). 4 | 5 | ## Setup 6 | 7 | 1. Visit [https://fabric.io/sign_up](https://fabric.io/sign_up) to create your Fabric account and to download Fabric.app. 8 | 9 | 1. Open Fabric.app, login and select the Crashlytics SDK. 10 | 11 | ![Fabric Plugin](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-fabric-plugin.png) 12 | 13 | 1. The Fabric app automatically detects when a project uses CocoaPods and gives you the option to install via the Podfile or Xcode. 14 | 15 | ![Fabric Installation Options](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-pod-installation-option.png) 16 | 17 | 1. Select the Podfile option and follow the installation instructions to update your Podfile. **Note:** the Crashlytics Pod includes Answers. If you have Answers included as a separate Pod it should be removed from your Podfile to avoid duplicate symbol errors. 18 | 19 | ``` 20 | pod 'Fabric' 21 | pod 'Crashlytics' 22 | ``` 23 | 24 | 1. Run `pod install` 25 | 26 | 1. Add a Run Script Build Phase and build your app. 27 | 28 | ![Fabric Run Script Build Phase](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-rsbp.png) 29 | 30 | 1. Initialize the SDK by inserting code outlined in the Fabric.app. 31 | 32 | 1. Run your app to finish the installation. 33 | 34 | ## Resources 35 | 36 | * [Documentation](https://docs.fabric.io/apple/crashlytics/overview.html) 37 | * [Forums](https://stackoverflow.com/questions/tagged/google-fabric) 38 | * [Website](http://try.crashlytics.com/) 39 | * Follow us on Twitter: [@fabric](https://twitter.com/fabric) and [@crashlytics](https://twitter.com/crashlytics) 40 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/ANSCompatibility.h: -------------------------------------------------------------------------------- 1 | // 2 | // ANSCompatibility.h 3 | // AnswersKit 4 | // 5 | // Copyright (c) 2015 Crashlytics, Inc. All rights reserved. 6 | // 7 | 8 | #pragma once 9 | 10 | #if !__has_feature(nullability) 11 | #define nonnull 12 | #define nullable 13 | #define _Nullable 14 | #define _Nonnull 15 | #endif 16 | 17 | #ifndef NS_ASSUME_NONNULL_BEGIN 18 | #define NS_ASSUME_NONNULL_BEGIN 19 | #endif 20 | 21 | #ifndef NS_ASSUME_NONNULL_END 22 | #define NS_ASSUME_NONNULL_END 23 | #endif 24 | 25 | #if __has_feature(objc_generics) 26 | #define ANS_GENERIC_NSARRAY(type) NSArray 27 | #define ANS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary 28 | #else 29 | #define ANS_GENERIC_NSARRAY(type) NSArray 30 | #define ANS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary 31 | #endif 32 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/CLSAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // CLSAttributes.h 3 | // Crashlytics 4 | // 5 | // Copyright (c) 2015 Crashlytics, Inc. All rights reserved. 6 | // 7 | 8 | #pragma once 9 | 10 | #define CLS_DEPRECATED(x) __attribute__ ((deprecated(x))) 11 | 12 | #if !__has_feature(nullability) 13 | #define nonnull 14 | #define nullable 15 | #define _Nullable 16 | #define _Nonnull 17 | #endif 18 | 19 | #ifndef NS_ASSUME_NONNULL_BEGIN 20 | #define NS_ASSUME_NONNULL_BEGIN 21 | #endif 22 | 23 | #ifndef NS_ASSUME_NONNULL_END 24 | #define NS_ASSUME_NONNULL_END 25 | #endif 26 | 27 | #if __has_feature(objc_generics) 28 | #define CLS_GENERIC_NSARRAY(type) NSArray 29 | #define CLS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary 30 | #else 31 | #define CLS_GENERIC_NSARRAY(type) NSArray 32 | #define CLS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary 33 | #endif 34 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/CLSLogging.h: -------------------------------------------------------------------------------- 1 | // 2 | // CLSLogging.h 3 | // Crashlytics 4 | // 5 | // Copyright (c) 2015 Crashlytics, Inc. All rights reserved. 6 | // 7 | #ifdef __OBJC__ 8 | #import "CLSAttributes.h" 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | #endif 13 | 14 | 15 | 16 | /** 17 | * 18 | * The CLS_LOG macro provides as easy way to gather more information in your log messages that are 19 | * sent with your crash data. CLS_LOG prepends your custom log message with the function name and 20 | * line number where the macro was used. If your app was built with the DEBUG preprocessor macro 21 | * defined CLS_LOG uses the CLSNSLog function which forwards your log message to NSLog and CLSLog. 22 | * If the DEBUG preprocessor macro is not defined CLS_LOG uses CLSLog only. 23 | * 24 | * Example output: 25 | * -[AppDelegate login:] line 134 $ login start 26 | * 27 | * If you would like to change this macro, create a new header file, unset our define and then define 28 | * your own version. Make sure this new header file is imported after the Crashlytics header file. 29 | * 30 | * #undef CLS_LOG 31 | * #define CLS_LOG(__FORMAT__, ...) CLSNSLog... 32 | * 33 | **/ 34 | #ifdef __OBJC__ 35 | #ifdef DEBUG 36 | #define CLS_LOG(__FORMAT__, ...) CLSNSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) 37 | #else 38 | #define CLS_LOG(__FORMAT__, ...) CLSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) 39 | #endif 40 | #endif 41 | 42 | /** 43 | * 44 | * Add logging that will be sent with your crash data. This logging will not show up in the system.log 45 | * and will only be visible in your Crashlytics dashboard. 46 | * 47 | **/ 48 | 49 | #ifdef __OBJC__ 50 | OBJC_EXTERN void CLSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2); 51 | OBJC_EXTERN void CLSLogv(NSString *format, va_list ap) NS_FORMAT_FUNCTION(1,0); 52 | 53 | /** 54 | * 55 | * Add logging that will be sent with your crash data. This logging will show up in the system.log 56 | * and your Crashlytics dashboard. It is not recommended for Release builds. 57 | * 58 | **/ 59 | OBJC_EXTERN void CLSNSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2); 60 | OBJC_EXTERN void CLSNSLogv(NSString *format, va_list ap) NS_FORMAT_FUNCTION(1,0); 61 | 62 | 63 | NS_ASSUME_NONNULL_END 64 | #endif 65 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Headers/CLSStackFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // CLSStackFrame.h 3 | // Crashlytics 4 | // 5 | // Copyright 2015 Crashlytics, Inc. All rights reserved. 6 | // 7 | 8 | #import 9 | #import "CLSAttributes.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /** 14 | * 15 | * This class is used in conjunction with -[Crashlytics recordCustomExceptionName:reason:frameArray:] to 16 | * record information about non-ObjC/C++ exceptions. All information included here will be displayed 17 | * in the Crashlytics UI, and can influence crash grouping. Be particularly careful with the use of the 18 | * address property. If set, Crashlytics will attempt symbolication and could overwrite other properities 19 | * in the process. 20 | * 21 | **/ 22 | @interface CLSStackFrame : NSObject 23 | 24 | + (instancetype)stackFrame; 25 | + (instancetype)stackFrameWithAddress:(NSUInteger)address; 26 | + (instancetype)stackFrameWithSymbol:(NSString *)symbol; 27 | 28 | @property (nonatomic, copy, nullable) NSString *symbol; 29 | @property (nonatomic, copy, nullable) NSString *rawSymbol; 30 | @property (nonatomic, copy, nullable) NSString *library; 31 | @property (nonatomic, copy, nullable) NSString *fileName; 32 | @property (nonatomic, assign) uint32_t lineNumber; 33 | @property (nonatomic, assign) uint64_t offset; 34 | @property (nonatomic, assign) uint64_t address; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module Crashlytics { 2 | header "Crashlytics.h" 3 | header "Answers.h" 4 | header "ANSCompatibility.h" 5 | header "CLSLogging.h" 6 | header "CLSReport.h" 7 | header "CLSStackFrame.h" 8 | header "CLSAttributes.h" 9 | 10 | export * 11 | 12 | link "z" 13 | link "c++" 14 | } 15 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # run 4 | # 5 | # Copyright (c) 2015 Crashlytics. All rights reserved. 6 | 7 | # Figure out where we're being called from 8 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 9 | 10 | # Quote path in case of spaces or special chars 11 | DIR="\"${DIR}" 12 | 13 | PATH_SEP="/" 14 | VALIDATE_COMMAND="uploadDSYM\" $@ validate run-script" 15 | UPLOAD_COMMAND="uploadDSYM\" $@ run-script" 16 | 17 | # Ensure params are as expected, run in sync mode to validate 18 | eval $DIR$PATH_SEP$VALIDATE_COMMAND 19 | return_code=$? 20 | 21 | if [[ $return_code != 0 ]]; then 22 | exit $return_code 23 | fi 24 | 25 | # Verification passed, upload dSYM in background to prevent Xcode from waiting 26 | # Note: Validation is performed again before upload. 27 | # Output can still be found in Console.app 28 | eval $DIR$PATH_SEP$UPLOAD_COMMAND > /dev/null 2>&1 & 29 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/submit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/submit -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Crashlytics/submit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Crashlytics/submit -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/Fabric.framework/README: -------------------------------------------------------------------------------- 1 | We've now combined all our supported platforms into a single podspec. As a result, we moved our run script to a new location for Cocoapods projects: ${PODS_ROOT}/Fabric/run. To avoid breaking builds that reference the old location of the run script, we've placed this dummy script that calls to the correct location, while providing a helpful warning in Xcode if it is invoked. This bridge for backwards compatibility will be removed in a future release, so please heed the warning! 2 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/Fabric.framework/run: -------------------------------------------------------------------------------- 1 | if [[ -z $PODS_ROOT ]]; then 2 | echo "error: The run binary delivered by cocoapods is in a new location, under '$"{"PODS_ROOT"}"/Fabric/run'. This script was put in place for backwards compatibility, but it relies on PODS_ROOT, which does not have a value in your current setup. Please update the path to the run binary to fix this issue." 3 | else 4 | echo "warning: The run script is now located at '$"{"PODS_ROOT"}"/Fabric/run'. To remove this warning, update your Run Script Build Phase to point to this new location." 5 | sh "${PODS_ROOT}/Fabric/run" "$@" 6 | fi 7 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/README.md: -------------------------------------------------------------------------------- 1 | ![Fabric Header](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-fabric-header.png) 2 | 3 | # Fabric 4 | 5 | ## Overview 6 | 7 | [Fabric](https://get.fabric.io) provides developers with the tools they need to build the best apps. Developed and maintained by Google and the team that built Crashlytics, Fabric provides an easy way to manage all your SDKs so that you’ll never have to worry about tedious configurations or juggling different accounts. We let you get right into coding and building the next big app. 8 | 9 | For a full list of SDK provided through Fabric visit [https://fabric.io/kits](https://fabric.io/kits). 10 | 11 | ## Setup 12 | 13 | The Fabric Pod is a dependency for all Fabric SDKs and is included when installing any Fabric related Pods. General setup instructions are shown below; however, these vary depending on the selected SDK. 14 | 15 | 1. Visit [https://fabric.io/sign_up](https://fabric.io/sign_up) to create your Fabric account and to download Fabric.app. 16 | 17 | 1. Open Fabric.app, login and select an SDK to install. 18 | 19 | ![Fabric Plugin](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-fabric-plugin.png) 20 | 21 | 1. The Fabric app automatically detects when a project uses CocoaPods and gives you the option to install via the Podfile or Xcode. 22 | 23 | ![Fabric Installation Options](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-pod-installation-option.png) 24 | 25 | 1. Select the Podfile option and follow the installation instructions to update your Podfile. Note: the example below is for the Crashlytics SDK. The instructions will vary based on the selected SDK. 26 | 27 | ![Fabric Podfile Instructions](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-podfile-instructions.png) 28 | 29 | 1. Add a Run Script Build Phase and build your app. 30 | 31 | ![Fabric Run Script Build Phase](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-rsbp.png) 32 | 33 | 1. Initialize the SDK by inserting code outlined in Fabric.app. 34 | 35 | 1. Run your app to finish the installation. 36 | 37 | ## Resources 38 | 39 | * [Documentation](https://docs.fabric.io/) 40 | * [Forums](https://stackoverflow.com/questions/tagged/google-fabric) 41 | * [Website](https://get.fabric.io) 42 | * Follow us on Twitter: [@fabric](https://twitter.com/fabric) 43 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/Fabric: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/Fabric -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/Headers/FABAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // FABAttributes.h 3 | // Fabric 4 | // 5 | // Copyright (C) 2015 Twitter, Inc. 6 | // 7 | // Licensed under the Apache License, Version 2.0 (the "License"); 8 | // you may not use this file except in compliance with the License. 9 | // You may obtain a copy of the License at 10 | // 11 | // http://www.apache.org/licenses/LICENSE-2.0 12 | // 13 | // Unless required by applicable law or agreed to in writing, software 14 | // distributed under the License is distributed on an "AS IS" BASIS, 15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | // See the License for the specific language governing permissions and 17 | // limitations under the License. 18 | // 19 | 20 | #pragma once 21 | 22 | #define FAB_UNAVAILABLE(x) __attribute__((unavailable(x))) 23 | 24 | #if !__has_feature(nullability) 25 | #define nonnull 26 | #define nullable 27 | #define _Nullable 28 | #define _Nonnull 29 | #endif 30 | 31 | #ifndef NS_ASSUME_NONNULL_BEGIN 32 | #define NS_ASSUME_NONNULL_BEGIN 33 | #endif 34 | 35 | #ifndef NS_ASSUME_NONNULL_END 36 | #define NS_ASSUME_NONNULL_END 37 | #endif 38 | 39 | 40 | /** 41 | * The following macros are defined here to provide 42 | * backwards compatability. If you are still using 43 | * them you should migrate to the native nullability 44 | * macros. 45 | */ 46 | #define fab_nullable nullable 47 | #define fab_nonnull nonnull 48 | #define FAB_NONNULL __fab_nonnull 49 | #define FAB_NULLABLE __fab_nullable 50 | #define FAB_START_NONNULL NS_ASSUME_NONNULL_BEGIN 51 | #define FAB_END_NONNULL NS_ASSUME_NONNULL_END 52 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/Info.plist -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module Fabric { 2 | umbrella header "Fabric.h" 3 | 4 | export * 5 | module * { export * } 6 | } -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # run 4 | # 5 | # Copyright (c) 2015 Crashlytics. All rights reserved. 6 | 7 | # Figure out where we're being called from 8 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 9 | 10 | # Quote path in case of spaces or special chars 11 | DIR="\"${DIR}" 12 | 13 | PATH_SEP="/" 14 | VALIDATE_COMMAND="uploadDSYM\" $@ validate run-script" 15 | UPLOAD_COMMAND="uploadDSYM\" $@ run-script" 16 | 17 | # Ensure params are as expected, run in sync mode to validate 18 | eval $DIR$PATH_SEP$VALIDATE_COMMAND 19 | return_code=$? 20 | 21 | if [[ $return_code != 0 ]]; then 22 | exit $return_code 23 | fi 24 | 25 | # Verification passed, upload dSYM in background to prevent Xcode from waiting 26 | # Note: Validation is performed again before upload. 27 | # Output can still be found in Console.app 28 | eval $DIR$PATH_SEP$UPLOAD_COMMAND > /dev/null 2>&1 & 29 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/uploadDSYM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Fabric/iOS/Fabric.framework/uploadDSYM -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # run 4 | # 5 | # Copyright (c) 2015 Crashlytics. All rights reserved. 6 | 7 | # Figure out where we're being called from 8 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 9 | 10 | # Quote path in case of spaces or special chars 11 | DIR="\"${DIR}" 12 | 13 | PATH_SEP="/" 14 | VALIDATE_COMMAND="uploadDSYM\" $@ validate run-script" 15 | UPLOAD_COMMAND="uploadDSYM\" $@ run-script" 16 | 17 | # Ensure params are as expected, run in sync mode to validate 18 | eval $DIR$PATH_SEP$VALIDATE_COMMAND 19 | return_code=$? 20 | 21 | if [[ $return_code != 0 ]]; then 22 | exit $return_code 23 | fi 24 | 25 | # Verification passed, upload dSYM in background to prevent Xcode from waiting 26 | # Note: Validation is performed again before upload. 27 | # Output can still be found in Console.app 28 | eval $DIR$PATH_SEP$UPLOAD_COMMAND > /dev/null 2>&1 & 29 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/upload-symbols: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Fabric/upload-symbols -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Fabric/uploadDSYM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/Fabric/uploadDSYM -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/PureLayout/ALView+PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/ALView+PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/PureLayout/NSArray+PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/NSArray+PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/PureLayout/NSLayoutConstraint+PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/PureLayout/PureLayout+Internal.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout+Internal.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/PureLayout/PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/PureLayout/PureLayoutDefines.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/PureLayoutDefines.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/SVProgressHUD/SVIndefiniteAnimatedView.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/SVProgressHUD/SVProgressAnimatedView.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/SVProgressHUD/SVProgressHUD.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVProgressHUD.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/SVProgressHUD/SVRadialGradientLayer.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Private/Toast/UIView+Toast.h: -------------------------------------------------------------------------------- 1 | ../../../Toast/Toast/Toast/UIView+Toast.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Crashlytics/Crashlytics/ANSCompatibility.h: -------------------------------------------------------------------------------- 1 | ../../../../Crashlytics/iOS/Crashlytics.framework/Headers/ANSCompatibility.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Crashlytics/Crashlytics/Answers.h: -------------------------------------------------------------------------------- 1 | ../../../../Crashlytics/iOS/Crashlytics.framework/Headers/Answers.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Crashlytics/Crashlytics/CLSAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../../Crashlytics/iOS/Crashlytics.framework/Headers/CLSAttributes.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Crashlytics/Crashlytics/CLSLogging.h: -------------------------------------------------------------------------------- 1 | ../../../../Crashlytics/iOS/Crashlytics.framework/Headers/CLSLogging.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Crashlytics/Crashlytics/CLSReport.h: -------------------------------------------------------------------------------- 1 | ../../../../Crashlytics/iOS/Crashlytics.framework/Headers/CLSReport.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Crashlytics/Crashlytics/CLSStackFrame.h: -------------------------------------------------------------------------------- 1 | ../../../../Crashlytics/iOS/Crashlytics.framework/Headers/CLSStackFrame.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Crashlytics/Crashlytics/Crashlytics.h: -------------------------------------------------------------------------------- 1 | ../../../../Crashlytics/iOS/Crashlytics.framework/Headers/Crashlytics.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Fabric/Fabric/FABAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../../Fabric/iOS/Fabric.framework/Headers/FABAttributes.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Fabric/Fabric/Fabric.h: -------------------------------------------------------------------------------- 1 | ../../../../Fabric/iOS/Fabric.framework/Headers/Fabric.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/PureLayout/ALView+PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/ALView+PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/PureLayout/NSArray+PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/NSArray+PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/PureLayout/NSLayoutConstraint+PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/PureLayout/PureLayout+Internal.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout+Internal.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/PureLayout/PureLayout.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/PureLayout/PureLayoutDefines.h: -------------------------------------------------------------------------------- 1 | ../../../PureLayout/PureLayout/PureLayout/PureLayoutDefines.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/SVProgressHUD/SVIndefiniteAnimatedView.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/SVProgressHUD/SVProgressAnimatedView.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/SVProgressHUD/SVProgressHUD.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVProgressHUD.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/SVProgressHUD/SVRadialGradientLayer.h: -------------------------------------------------------------------------------- 1 | ../../../SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Headers/Public/Toast/UIView+Toast.h: -------------------------------------------------------------------------------- 1 | ../../../Toast/Toast/Toast/UIView+Toast.h -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Crashlytics (3.10.2): 3 | - Fabric (~> 1.7.7) 4 | - Fabric (1.7.7) 5 | - PureLayout (3.0.2) 6 | - SVProgressHUD (2.1.2) 7 | - Toast (3.1.0) 8 | 9 | DEPENDENCIES: 10 | - Crashlytics 11 | - Fabric 12 | - PureLayout 13 | - SVProgressHUD 14 | - Toast 15 | 16 | SPEC REPOS: 17 | https://github.com/cocoapods/specs.git: 18 | - Crashlytics 19 | - Fabric 20 | - PureLayout 21 | - SVProgressHUD 22 | - Toast 23 | 24 | SPEC CHECKSUMS: 25 | Crashlytics: 0360624eea1c978a743feddb2fb1ef8b37fb7a0d 26 | Fabric: bda89e242bce1b7b8ab264248cf3407774ce0095 27 | PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd 28 | SVProgressHUD: c404a55d78acbeb7ebb78b76d3faf986475a6994 29 | Toast: 14a93686d6c8bfe2727afd342414e35660a8a1f3 30 | 31 | PODFILE CHECKSUM: 5b86f05e554593450e4d75bb74ca05124c2d0305 32 | 33 | COCOAPODS: 1.5.3 34 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/PureLayout/LICENSE: -------------------------------------------------------------------------------- 1 | This code is distributed under the terms and conditions of the MIT license. 2 | 3 | Copyright (c) 2014-2015 Tyler Fox 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/PureLayout/PureLayout/PureLayout/PureLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // PureLayout.h 3 | // https://github.com/PureLayout/PureLayout 4 | // 5 | // Copyright (c) 2014-2015 Tyler Fox 6 | // 7 | // This code is distributed under the terms and conditions of the MIT license. 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to 11 | // deal in the Software without restriction, including without limitation the 12 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 13 | // sell copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 25 | // IN THE SOFTWARE. 26 | // 27 | 28 | #ifndef PureLayout_h 29 | #define PureLayout_h 30 | 31 | #import 32 | 33 | //! Project version number for PureLayout. 34 | FOUNDATION_EXPORT double PureLayoutVersionNumber; 35 | 36 | //! Project version string for PureLayout. 37 | FOUNDATION_EXPORT const unsigned char PureLayoutVersionString[]; 38 | 39 | #import "ALView+PureLayout.h" 40 | #import "NSArray+PureLayout.h" 41 | #import "NSLayoutConstraint+PureLayout.h" 42 | 43 | #endif /* PureLayout_h */ 44 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2016 Sam Vermette, Tobias Tiemerding and contributors. 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | A different license may apply to other resources included in this package, 25 | including Freepik Icons. Please consult their 26 | respective headers for the terms of their individual licenses. 27 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVIndefiniteAnimatedView.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2016 Guillaume Campagna. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVIndefiniteAnimatedView : UIView 11 | 12 | @property (nonatomic, assign) CGFloat strokeThickness; 13 | @property (nonatomic, assign) CGFloat radius; 14 | @property (nonatomic, strong) UIColor *strokeColor; 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVProgressAnimatedView.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2016 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVProgressAnimatedView : UIView 11 | 12 | @property (nonatomic, assign) CGFloat radius; 13 | @property (nonatomic, assign) CGFloat strokeThickness; 14 | @property (nonatomic, strong) UIColor *strokeColor; 15 | @property (nonatomic, assign) CGFloat strokeEnd; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiangwangfeng/M80ImageMerger/11f5f9b8d866cfa7f88637ab1470cb399184461e/M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVRadialGradientLayer.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2016 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVRadialGradientLayer : CALayer 11 | 12 | @property (nonatomic) CGPoint gradientCenter; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.m: -------------------------------------------------------------------------------- 1 | // 2 | // SVRadialGradientLayer.m 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2016 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import "SVRadialGradientLayer.h" 9 | 10 | @implementation SVRadialGradientLayer 11 | 12 | - (void)drawInContext:(CGContextRef)context { 13 | size_t locationsCount = 2; 14 | CGFloat locations[2] = {0.0f, 1.0f}; 15 | CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f}; 16 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 17 | CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount); 18 | CGColorSpaceRelease(colorSpace); 19 | 20 | float radius = MIN(self.bounds.size.width , self.bounds.size.height); 21 | CGContextDrawRadialGradient (context, gradient, self.gradientCenter, 0, self.gradientCenter, radius, kCGGradientDrawsAfterEndLocation); 22 | CGGradientRelease(gradient); 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/Pods-M80ImageMerger/Pods-M80ImageMerger-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_M80ImageMerger : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_M80ImageMerger 5 | @end 6 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/Pods-M80ImageMerger/Pods-M80ImageMerger.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/SVProgressHUD" "${PODS_ROOT}/Headers/Public/Toast" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Toast" 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/SVProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/Toast" 6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"PureLayout" -l"SVProgressHUD" -l"Toast" -l"c++" -l"z" -framework "Crashlytics" -framework "Fabric" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/Pods-M80ImageMerger/Pods-M80ImageMerger.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/SVProgressHUD" "${PODS_ROOT}/Headers/Public/Toast" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Toast" 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/SVProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/Toast" 6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"PureLayout" -l"SVProgressHUD" -l"Toast" -l"c++" -l"z" -framework "Crashlytics" -framework "Fabric" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/PureLayout/PureLayout-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_PureLayout : NSObject 3 | @end 4 | @implementation PodsDummy_PureLayout 5 | @end 6 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/PureLayout/PureLayout-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/PureLayout/PureLayout.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PureLayout 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PureLayout" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PureLayout" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/PureLayout 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SVProgressHUD : NSObject 3 | @end 4 | @implementation PodsDummy_SVProgressHUD 5 | @end 6 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SVProgressHUD" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SVProgressHUD" 4 | OTHER_LDFLAGS = -framework "QuartzCore" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SVProgressHUD 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/Toast/Toast-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Toast : NSObject 3 | @end 4 | @implementation PodsDummy_Toast 5 | @end 6 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/Toast/Toast-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Target Support Files/Toast/Toast.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Toast 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Toast" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Toast" 4 | OTHER_LDFLAGS = -framework "QuartzCore" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Toast 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /M80ImageMerger/Pods/Toast/license: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2015 Charles Scalesse. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a 4 | copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included 12 | in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 截图自动拼接小工具 2 | 3 | ## 源起 4 | 5 | 经常会有这样的需求: 6 | 7 | 需要将微信里面和某些人的聊天记录转发给其他人,然而聊天记录过长,需要一页页截图发送,接收者收到这种消息往往有点抓狂,毕竟要反复确认每张图之间的上下文关系。所以,更好的做法应该是在本地将这些截图评完拼接再发送。 8 | 9 | 需要将某篇长文分享给其他人,但是当前 App 的分享功能非常难用,而且经常会强制接收者安装当前 App (比如某秘) 才能继续浏览文章。又或者是仅想分享文章到票圈而不让人知道出处。 10 | 11 | 这些需求总让人想要把当前的截图素材先做拼接再发送。而在我做这个 DEMO 的时候,AppStore 只有一款做自动拼接的免费 App,但不付费就限制保存次数,蛋疼。所以作为程序员还是自己撸一个用吧。于是就有了这么一个 DEMO。 12 | 13 | 14 | ## 上架 15 | 16 | 2015 年做完这个 App 后编译到自己 iPhone 用就没再管它。最近老婆大人想用,天真地问我:“为啥你这个东西不能上 AppStore?”。解释一通后,老婆大人就默默给我买了一年期的苹果开发者账号,说:“卖 6 块,收入归我”。(我去,做了 5 年家养 iOS 开发工程师后,要开始做独立开发者了么?) 17 | 18 | =。= 强烈怀疑这货能不能收回成本。 19 | 20 | ## UI 21 | 22 | 作为一个年迈的程序员,完成这种 App 功能不过一两个晚上的事情,但是最大的痛苦是为了要上线,画 icon,准备资源,设计还过得去的界面。 23 | 24 | App 名是 Centaur,因为它也是拼接出来的啊。(好冷 25 | 26 | Icon 的意思是将 3 块图进行叠加。当然也[有人](https://github.com/imoldman)理解成 “人到三十”。(年迈的程序员 27 | 28 | ## 原理 29 | 30 | 有兴趣的同学可以参考这篇文章: [记一个截图拼接的小工具](http://xiangwangfeng.com/2015/11/30/%E8%AE%B0%E4%B8%80%E4%B8%AA%E6%88%AA%E5%9B%BE%E6%8B%BC%E6%8E%A5%E7%9A%84%E5%B0%8F%E5%B7%A5%E5%85%B7/) 31 | 32 | 原理较为简单,当然为了在实际使用中得到更好的效果也做了不少的改良,详细可以参考代码。 33 | 34 | ## 使用方法 35 | 36 | 参考如下[视频](https://nos.netease.com/yx-web/c44174085943f8362ff95efef4e8ec46) 37 | 38 | ## 已知问题列表 39 | 40 | ### 下载后编译失败,提示缺少库 41 | 42 | 请使用 workspace 打开工程 43 | 44 | ### 某些截图无法拼接 45 | 46 | 对于截图中有动图,背景贴图的情况并无法 100% 有效 47 | 48 | ### 3x 支持 49 | 50 | 因为原理问题,对 3x 支持并不好......恶魔魔买面膜 51 | --------------------------------------------------------------------------------