diff --git a/.gitignore b/.gitignore
index 312d1f6..8cf7015 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,3 +66,4 @@ fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output
+pixelizator.sketch
diff --git a/README.md b/README.md
index 3b3b43b..a2d41b6 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,28 @@
-# pixelizator
\ No newline at end of file
+
+
+
+
+# Pixelizator
+
+https://github.com/bmaslakov/cocoa-close-pixelate
+
+https://stackoverflow.com/questions/25510081/how-to-allow-user-to-pick-the-image-with-swift
+
+https://gist.github.com/danyshaanan/6754465
+
+## Swift (iOS)
+
+
+## Python
+
+### Usage
+`python pixelizator.py `
+
+ pixel_size: default 8
+ scale: default 1
+
+### Input
+
+
+### Output
+
\ No newline at end of file
diff --git a/assets/pixelizator_icon_web.png b/assets/pixelizator_icon_web.png
new file mode 100644
index 0000000..5b56715
Binary files /dev/null and b/assets/pixelizator_icon_web.png differ
diff --git a/python/input.png b/python/input.png
new file mode 100644
index 0000000..ce968ae
Binary files /dev/null and b/python/input.png differ
diff --git a/python/output.png b/python/output.png
new file mode 100644
index 0000000..8f8e0f8
Binary files /dev/null and b/python/output.png differ
diff --git a/python/pixelizator.py b/python/pixelizator.py
new file mode 100644
index 0000000..565ab5b
--- /dev/null
+++ b/python/pixelizator.py
@@ -0,0 +1,22 @@
+from PIL import Image
+import sys
+
+
+if len(sys.argv) > 1:
+ pixel_size = int(sys.argv[1])
+else:
+ pixel_size = 8
+
+if len(sys.argv) > 2:
+ scale = int(sys.argv[2])
+else:
+ scale = 1
+
+image = Image.open('input.png')
+downscaled_image = image.resize((image.size[0]/pixel_size,
+ image.size[1]/pixel_size),
+ Image.NEAREST)
+upscaled_image = downscaled_image.resize((downscaled_image.size[0]*pixel_size*scale,
+ downscaled_image.size[1]*pixel_size*scale),
+ Image.NEAREST)
+upscaled_image.save('output.png')
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator.xcodeproj/project.pbxproj b/swift/Pixelizator/Pixelizator.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..8578170
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator.xcodeproj/project.pbxproj
@@ -0,0 +1,466 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 6055DD1F21E952EB00D2B8A9 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6055DD1E21E952EB00D2B8A9 /* Constants.swift */; };
+ 6055DD2121E952FF00D2B8A9 /* ImageExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6055DD2021E952FF00D2B8A9 /* ImageExtensions.swift */; };
+ 608E2D9B21E833F50011C3C7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 608E2D9A21E833F50011C3C7 /* AppDelegate.swift */; };
+ 608E2D9D21E833F50011C3C7 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 608E2D9C21E833F50011C3C7 /* MainViewController.swift */; };
+ 608E2DA021E833F50011C3C7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 608E2D9E21E833F50011C3C7 /* Main.storyboard */; };
+ 608E2DA221E833F60011C3C7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 608E2DA121E833F60011C3C7 /* Assets.xcassets */; };
+ 608E2DA521E833F60011C3C7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 608E2DA321E833F60011C3C7 /* LaunchScreen.storyboard */; };
+ DBB090F356184E9AF903AD2E /* Pods_Pixelizator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A0FB086CC6436E21BDBEA72D /* Pods_Pixelizator.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 6055DD1E21E952EB00D2B8A9 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; };
+ 6055DD2021E952FF00D2B8A9 /* ImageExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageExtensions.swift; sourceTree = ""; };
+ 608E2D9721E833F50011C3C7 /* Pixelizator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Pixelizator.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 608E2D9A21E833F50011C3C7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 608E2D9C21E833F50011C3C7 /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; };
+ 608E2D9F21E833F50011C3C7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 608E2DA121E833F60011C3C7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 608E2DA421E833F60011C3C7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 608E2DA621E833F60011C3C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ A0FB086CC6436E21BDBEA72D /* Pods_Pixelizator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Pixelizator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ ACE58656594CAF0946B19978 /* Pods-Pixelizator.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Pixelizator.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.debug.xcconfig"; sourceTree = ""; };
+ E06141BBF4C558EBCF4F8537 /* Pods-Pixelizator.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Pixelizator.release.xcconfig"; path = "Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 608E2D9421E833F50011C3C7 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DBB090F356184E9AF903AD2E /* Pods_Pixelizator.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 6055DD1921E950C100D2B8A9 /* Application */ = {
+ isa = PBXGroup;
+ children = (
+ 608E2D9A21E833F50011C3C7 /* AppDelegate.swift */,
+ );
+ path = Application;
+ sourceTree = "";
+ };
+ 6055DD1A21E950CE00D2B8A9 /* Main */ = {
+ isa = PBXGroup;
+ children = (
+ 608E2D9C21E833F50011C3C7 /* MainViewController.swift */,
+ );
+ path = Main;
+ sourceTree = "";
+ };
+ 6055DD1B21E950D600D2B8A9 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 608E2DA121E833F60011C3C7 /* Assets.xcassets */,
+ 608E2DA621E833F60011C3C7 /* Info.plist */,
+ 6055DD1E21E952EB00D2B8A9 /* Constants.swift */,
+ );
+ path = Resources;
+ sourceTree = "";
+ };
+ 6055DD1C21E9511200D2B8A9 /* Storyboards */ = {
+ isa = PBXGroup;
+ children = (
+ 608E2D9E21E833F50011C3C7 /* Main.storyboard */,
+ 608E2DA321E833F60011C3C7 /* LaunchScreen.storyboard */,
+ );
+ path = Storyboards;
+ sourceTree = "";
+ };
+ 6055DD1D21E952D300D2B8A9 /* Utilities */ = {
+ isa = PBXGroup;
+ children = (
+ 6055DD2021E952FF00D2B8A9 /* ImageExtensions.swift */,
+ );
+ path = Utilities;
+ sourceTree = "";
+ };
+ 608E2D8E21E833F50011C3C7 = {
+ isa = PBXGroup;
+ children = (
+ 608E2D9921E833F50011C3C7 /* Pixelizator */,
+ 608E2D9821E833F50011C3C7 /* Products */,
+ 63C140A749DAC17EA8C9FA28 /* Pods */,
+ B5ED2311A23E5ED3E812A67E /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 608E2D9821E833F50011C3C7 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 608E2D9721E833F50011C3C7 /* Pixelizator.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 608E2D9921E833F50011C3C7 /* Pixelizator */ = {
+ isa = PBXGroup;
+ children = (
+ 6055DD1921E950C100D2B8A9 /* Application */,
+ 6055DD1A21E950CE00D2B8A9 /* Main */,
+ 6055DD1C21E9511200D2B8A9 /* Storyboards */,
+ 6055DD1D21E952D300D2B8A9 /* Utilities */,
+ 6055DD1B21E950D600D2B8A9 /* Resources */,
+ );
+ path = Pixelizator;
+ sourceTree = "";
+ };
+ 63C140A749DAC17EA8C9FA28 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ ACE58656594CAF0946B19978 /* Pods-Pixelizator.debug.xcconfig */,
+ E06141BBF4C558EBCF4F8537 /* Pods-Pixelizator.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ B5ED2311A23E5ED3E812A67E /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ A0FB086CC6436E21BDBEA72D /* Pods_Pixelizator.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 608E2D9621E833F50011C3C7 /* Pixelizator */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 608E2DA921E833F60011C3C7 /* Build configuration list for PBXNativeTarget "Pixelizator" */;
+ buildPhases = (
+ 55CDD178A2209BB7DD113789 /* [CP] Check Pods Manifest.lock */,
+ 608E2D9321E833F50011C3C7 /* Sources */,
+ 608E2D9421E833F50011C3C7 /* Frameworks */,
+ 608E2D9521E833F50011C3C7 /* Resources */,
+ 2958FC731A24A91E7911C0A1 /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Pixelizator;
+ productName = Pixelizator;
+ productReference = 608E2D9721E833F50011C3C7 /* Pixelizator.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 608E2D8F21E833F50011C3C7 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1010;
+ LastUpgradeCheck = 1010;
+ ORGANIZATIONNAME = GS;
+ TargetAttributes = {
+ 608E2D9621E833F50011C3C7 = {
+ CreatedOnToolsVersion = 10.1;
+ };
+ };
+ };
+ buildConfigurationList = 608E2D9221E833F50011C3C7 /* Build configuration list for PBXProject "Pixelizator" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 608E2D8E21E833F50011C3C7;
+ productRefGroup = 608E2D9821E833F50011C3C7 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 608E2D9621E833F50011C3C7 /* Pixelizator */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 608E2D9521E833F50011C3C7 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 608E2DA521E833F60011C3C7 /* LaunchScreen.storyboard in Resources */,
+ 608E2DA221E833F60011C3C7 /* Assets.xcassets in Resources */,
+ 608E2DA021E833F50011C3C7 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 2958FC731A24A91E7911C0A1 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${SRCROOT}/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-frameworks.sh",
+ "${BUILT_PRODUCTS_DIR}/PKHUD/PKHUD.framework",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PKHUD.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 55CDD178A2209BB7DD113789 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Pixelizator-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 608E2D9321E833F50011C3C7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 608E2D9D21E833F50011C3C7 /* MainViewController.swift in Sources */,
+ 608E2D9B21E833F50011C3C7 /* AppDelegate.swift in Sources */,
+ 6055DD1F21E952EB00D2B8A9 /* Constants.swift in Sources */,
+ 6055DD2121E952FF00D2B8A9 /* ImageExtensions.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 608E2D9E21E833F50011C3C7 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 608E2D9F21E833F50011C3C7 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 608E2DA321E833F60011C3C7 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 608E2DA421E833F60011C3C7 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 608E2DA721E833F60011C3C7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 608E2DA821E833F60011C3C7 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.1;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 608E2DAA21E833F60011C3C7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = ACE58656594CAF0946B19978 /* Pods-Pixelizator.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = "$(SRCROOT)/Pixelizator/Resources/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 10.3;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = pixelizator;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 608E2DAB21E833F60011C3C7 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E06141BBF4C558EBCF4F8537 /* Pods-Pixelizator.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = "$(SRCROOT)/Pixelizator/Resources/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 10.3;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = pixelizator;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 608E2D9221E833F50011C3C7 /* Build configuration list for PBXProject "Pixelizator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 608E2DA721E833F60011C3C7 /* Debug */,
+ 608E2DA821E833F60011C3C7 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 608E2DA921E833F60011C3C7 /* Build configuration list for PBXNativeTarget "Pixelizator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 608E2DAA21E833F60011C3C7 /* Debug */,
+ 608E2DAB21E833F60011C3C7 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 608E2D8F21E833F50011C3C7 /* Project object */;
+}
diff --git a/swift/Pixelizator/Pixelizator.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/Pixelizator/Pixelizator.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..ae3b455
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/swift/Pixelizator/Pixelizator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/Pixelizator/Pixelizator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/swift/Pixelizator/Pixelizator.xcworkspace/contents.xcworkspacedata b/swift/Pixelizator/Pixelizator.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..757fc60
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/swift/Pixelizator/Pixelizator.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/Pixelizator/Pixelizator.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/swift/Pixelizator/Pixelizator/Application/AppDelegate.swift b/swift/Pixelizator/Pixelizator/Application/AppDelegate.swift
new file mode 100644
index 0000000..aa381d9
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Application/AppDelegate.swift
@@ -0,0 +1,20 @@
+//
+// AppDelegate.swift
+// Pixelizator
+//
+// Created by Greg on 1/10/19.
+// Copyright © 2019 GS. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+final class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ return true
+ }
+}
+
diff --git a/swift/Pixelizator/Pixelizator/Main/MainViewController.swift b/swift/Pixelizator/Pixelizator/Main/MainViewController.swift
new file mode 100644
index 0000000..6dc7ecd
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Main/MainViewController.swift
@@ -0,0 +1,139 @@
+//
+// MainViewController.swift
+// Pixelizator
+//
+// Created by Greg on 1/10/19.
+// Copyright © 2019 GS. All rights reserved.
+//
+
+import UIKit
+import AVFoundation
+import Photos
+import PKHUD
+
+final class MainViewController: UIViewController {
+
+ @IBOutlet private weak var pixelSizeSlider: UISlider!
+ @IBOutlet private weak var backgroundImageView: UIImageView!
+ @IBOutlet private weak var previewImageView: UIImageView!
+ private var sourceImage: UIImage!
+ private var lastPixelizationTimestamp: TimeInterval?
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ let randomNumber = Int.random(in: 1 ..< 6)
+ setImage(image: UIImage(named: "Example\(randomNumber)")!, animated: false)
+ }
+
+ //MARK: - IBActions
+
+ @IBAction func sliderAction(_ sender: UISlider) {
+ pixelizeImage(pixelSize: CGFloat(pixelSizeSlider.value))
+ }
+
+ @IBAction func loadAction(_ sender: UIButton) {
+ tryToLoadGallery()
+ }
+
+ @IBAction func saveAction(_ sender: UIButton) {
+ UIImageWriteToSavedPhotosAlbum(previewImageView.image!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
+ }
+
+ //MARK: - Action logic
+
+ @objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
+ if error != nil {
+ HUD.flash(.labeledError(title: "Error", subtitle: "Try again!"), delay: popupDelay)
+ } else {
+ HUD.flash(.label("Saved to the gallery!"), delay: popupDelay)
+ }
+ }
+
+ private func tryToLoadGallery() {
+ func handleStatus(status: PHAuthorizationStatus) {
+ if status == .authorized{
+ self.loadGallery()
+ } else {
+ self.showPermissionPrompt()
+ }
+ }
+ let status = PHPhotoLibrary.authorizationStatus()
+ if status == .notDetermined {
+ PHPhotoLibrary.requestAuthorization({status in
+ handleStatus(status: status)
+ })
+ } else {
+ handleStatus(status: status)
+ }
+ }
+
+ private func loadGallery() {
+ let imagePickerController = UIImagePickerController()
+ imagePickerController.delegate = self
+ imagePickerController.sourceType = UIImagePickerController.SourceType.savedPhotosAlbum
+ present(imagePickerController, animated: true, completion: nil)
+ }
+
+ private func showPermissionPrompt() {
+ let alertController = UIAlertController(title: "Allow Camera Roll Access", message:
+ "Photos access is necessary for this app to run.", preferredStyle: UIAlertController.Style.alert)
+
+ let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
+ if let url = URL(string:UIApplication.openSettingsURLString) {
+ if UIApplication.shared.canOpenURL(url) {
+ UIApplication.shared.open(url, options: [:], completionHandler: nil)
+ }
+ }
+ }
+ alertController.addAction(settingsAction)
+
+ let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
+ alertController.addAction(cancelAction)
+
+ present(alertController, animated: true, completion: nil)
+ }
+
+ private func setImage(image: UIImage, animated: Bool) {
+ DispatchQueue.main.async {
+ let scale = self.previewImageView.frame.width/image.size.width
+ let adjustedImage = image.resize(scaleX: scale, scaleY: scale, interpolation: .default)
+
+ self.backgroundImageView.image = adjustedImage
+ self.sourceImage = adjustedImage
+ self.showImage(image: image, animated: animated)
+ self.pixelizeImage(pixelSize: CGFloat(self.pixelSizeSlider.value))
+ }
+ }
+
+ private func pixelizeImage(pixelSize: CGFloat) {
+ if lastPixelizationTimestamp == nil || NSDate().timeIntervalSince1970 > lastPixelizationTimestamp! + pixelizationUpdateThreshold {
+ DispatchQueue.global(qos: .background).async {
+ let pixeletedImage = self.sourceImage.pixelize(pixelSize: pixelSize)
+ DispatchQueue.main.async {
+ self.showImage(image: pixeletedImage, animated: true)
+ self.previewImageView.image = pixeletedImage
+ }
+ }
+ lastPixelizationTimestamp = NSDate().timeIntervalSince1970
+ }
+ }
+
+ private func showImage(image: UIImage, animated: Bool) {
+ UIView.transition(with: self.previewImageView,
+ duration: animated ? imageTransitionAnimationTime : 0,
+ options: .transitionCrossDissolve,
+ animations: { self.previewImageView.image = image },
+ completion: nil)
+ }
+}
+
+extension MainViewController: UIImagePickerControllerDelegate & UINavigationControllerDelegate {
+
+ func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
+ if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
+ pixelSizeSlider.value = 0
+ setImage(image: image, animated: true)
+ }
+ picker.dismiss(animated: true, completion: nil)
+ }
+}
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100755
index 0000000..8d8f4bb
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "ItunesArtwork@2x.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000..6e6df32
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000..f689907
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000..417c0f6
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000..c6cd9c4
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000..9e5a3fc
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000..a9ed833
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000..f689907
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000..9656697
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000..dd87ee1
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000..dd87ee1
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000..291908e
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000..70d5f12
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000..e976742
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000..5eed97e
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png
new file mode 100644
index 0000000..cd528c4
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..da4a164
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example1.imageset/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example1.imageset/Contents.json
new file mode 100644
index 0000000..8e131a3
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example1.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "dolores.png"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example1.imageset/dolores.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example1.imageset/dolores.png
new file mode 100644
index 0000000..2e4ec45
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example1.imageset/dolores.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example2.imageset/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example2.imageset/Contents.json
new file mode 100644
index 0000000..ff45a60
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example2.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "golden_gate.jpg"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example2.imageset/golden_gate.jpg b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example2.imageset/golden_gate.jpg
new file mode 100644
index 0000000..bde6cc4
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example2.imageset/golden_gate.jpg differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example3.imageset/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example3.imageset/Contents.json
new file mode 100644
index 0000000..ca20404
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example3.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "sf.jpeg"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example3.imageset/sf.jpeg b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example3.imageset/sf.jpeg
new file mode 100644
index 0000000..64e73da
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example3.imageset/sf.jpeg differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example4.imageset/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example4.imageset/Contents.json
new file mode 100644
index 0000000..562646c
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example4.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "sf.jpg"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example4.imageset/sf.jpg b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example4.imageset/sf.jpg
new file mode 100644
index 0000000..7d9aa44
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example4.imageset/sf.jpg differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example5.imageset/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example5.imageset/Contents.json
new file mode 100644
index 0000000..d52214c
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example5.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "SF.jpg"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example5.imageset/SF.jpg b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example5.imageset/SF.jpg
new file mode 100644
index 0000000..0d04fdf
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Example5.imageset/SF.jpg differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Icon.imageset/Contents.json b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Icon.imageset/Contents.json
new file mode 100644
index 0000000..1351bf5
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Icon.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "pixelizator_icon_web.png"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Icon.imageset/pixelizator_icon_web.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Icon.imageset/pixelizator_icon_web.png
new file mode 100644
index 0000000..5b56715
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/Icon.imageset/pixelizator_icon_web.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@1x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@1x.png
new file mode 100644
index 0000000..773c86b
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@1x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@2x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@2x.png
new file mode 100644
index 0000000..cd528c4
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@2x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@3x.png b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@3x.png
new file mode 100644
index 0000000..486cc7b
Binary files /dev/null and b/swift/Pixelizator/Pixelizator/Resources/Assets.xcassets/iTunesArtwork@3x.png differ
diff --git a/swift/Pixelizator/Pixelizator/Resources/Constants.swift b/swift/Pixelizator/Pixelizator/Resources/Constants.swift
new file mode 100644
index 0000000..8f0f250
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Constants.swift
@@ -0,0 +1,13 @@
+//
+// Constants.swift
+// Pixelizator
+//
+// Created by Greg on 1/11/19.
+// Copyright © 2019 GS. All rights reserved.
+//
+
+import Foundation
+
+let pixelizationUpdateThreshold = 0.1
+let popupDelay = 1.5
+let imageTransitionAnimationTime = 0.5
diff --git a/swift/Pixelizator/Pixelizator/Resources/Info.plist b/swift/Pixelizator/Pixelizator/Resources/Info.plist
new file mode 100644
index 0000000..8e74a17
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Resources/Info.plist
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ CFBundleName
+ $(PRODUCT_NAME)
+ UILaunchStoryboardName
+ LaunchScreen
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleVersion
+ 3
+ UIStatusBarHidden
+
+ UIMainStoryboardFile
+ Main
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIRequiresFullScreen
+
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ NSPhotoLibraryAddUsageDescription
+ To allow you save your pixelized images.
+ LSRequiresIPhoneOS
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ NSPhotoLibraryUsageDescription
+ To allow you pixelize your images.
+
+
diff --git a/swift/Pixelizator/Pixelizator/Storyboards/Base.lproj/LaunchScreen.storyboard b/swift/Pixelizator/Pixelizator/Storyboards/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..2dd73ac
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Storyboards/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/swift/Pixelizator/Pixelizator/Storyboards/Base.lproj/Main.storyboard b/swift/Pixelizator/Pixelizator/Storyboards/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..5540d80
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Storyboards/Base.lproj/Main.storyboard
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/swift/Pixelizator/Pixelizator/Utilities/ImageExtensions.swift b/swift/Pixelizator/Pixelizator/Utilities/ImageExtensions.swift
new file mode 100644
index 0000000..91f107f
--- /dev/null
+++ b/swift/Pixelizator/Pixelizator/Utilities/ImageExtensions.swift
@@ -0,0 +1,33 @@
+//
+// ImageExtensions.swift
+// Pixelizator
+//
+// Created by Greg on 1/11/19.
+// Copyright © 2019 GS. All rights reserved.
+//
+
+import UIKit
+
+extension UIImage {
+
+ func pixelize(pixelSize: CGFloat) -> UIImage {
+ guard pixelSize != 0 else { return self }
+ let downsizedImage = resize(scaleX: 1/pixelSize, scaleY: 1/pixelSize, interpolation: .none)
+ let upsizedImage = downsizedImage.resize(scaleX: pixelSize, scaleY: pixelSize, interpolation: .none)
+ return upsizedImage
+ }
+
+ func resize(scaleX: CGFloat, scaleY: CGFloat, interpolation: CGInterpolationQuality) -> UIImage {
+
+ let resize = size.applying(CGAffineTransform(scaleX: scaleX, y: scaleY))
+ UIGraphicsBeginImageContextWithOptions(resize, false, UIScreen.main.scale)
+ let context = UIGraphicsGetCurrentContext()!
+ context.interpolationQuality = interpolation
+ let rect = CGRect(origin: .zero, size: resize)
+ draw(in: rect)
+ let resizedImage = UIImage(cgImage: context.makeImage()!)
+
+ UIGraphicsEndImageContext()
+ return resizedImage
+ }
+}
diff --git a/swift/Pixelizator/Podfile b/swift/Pixelizator/Podfile
new file mode 100644
index 0000000..b0c38b1
--- /dev/null
+++ b/swift/Pixelizator/Podfile
@@ -0,0 +1,9 @@
+# Uncomment the next line to define a global platform for your project
+# platform :ios, '9.0'
+
+use_frameworks!
+
+target 'Pixelizator' do
+
+ pod 'PKHUD', '~> 5.0'
+end
diff --git a/swift/Pixelizator/Podfile.lock b/swift/Pixelizator/Podfile.lock
new file mode 100644
index 0000000..602f884
--- /dev/null
+++ b/swift/Pixelizator/Podfile.lock
@@ -0,0 +1,16 @@
+PODS:
+ - PKHUD (5.2.0)
+
+DEPENDENCIES:
+ - PKHUD (~> 5.0)
+
+SPEC REPOS:
+ https://github.com/cocoapods/specs.git:
+ - PKHUD
+
+SPEC CHECKSUMS:
+ PKHUD: dd5357ac65f26115c35c4a68e9b328053326c5fe
+
+PODFILE CHECKSUM: 258879bf1db0b5b82835c0a281d420be68f6d1f4
+
+COCOAPODS: 1.5.3
diff --git a/swift/Pixelizator/Pods/Manifest.lock b/swift/Pixelizator/Pods/Manifest.lock
new file mode 100644
index 0000000..602f884
--- /dev/null
+++ b/swift/Pixelizator/Pods/Manifest.lock
@@ -0,0 +1,16 @@
+PODS:
+ - PKHUD (5.2.0)
+
+DEPENDENCIES:
+ - PKHUD (~> 5.0)
+
+SPEC REPOS:
+ https://github.com/cocoapods/specs.git:
+ - PKHUD
+
+SPEC CHECKSUMS:
+ PKHUD: dd5357ac65f26115c35c4a68e9b328053326c5fe
+
+PODFILE CHECKSUM: 258879bf1db0b5b82835c0a281d420be68f6d1f4
+
+COCOAPODS: 1.5.3
diff --git a/swift/Pixelizator/Pods/PKHUD/LICENSE b/swift/Pixelizator/Pods/PKHUD/LICENSE
new file mode 100644
index 0000000..6d6eecf
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Philip Kluz (Philip.Kluz@gmail.com)
+
+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:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+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.
\ No newline at end of file
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/FrameView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/FrameView.swift
new file mode 100644
index 0000000..787f72e
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/FrameView.swift
@@ -0,0 +1,63 @@
+//
+// HUDView.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/16/14.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// Provides the general look and feel of the PKHUD, into which the eventual content is inserted.
+internal class FrameView: UIVisualEffectView {
+
+ internal init() {
+ super.init(effect: UIBlurEffect(style: .light))
+ commonInit()
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ commonInit()
+ }
+
+ fileprivate func commonInit() {
+ backgroundColor = UIColor(white: 0.8, alpha: 0.36)
+ layer.cornerRadius = 9.0
+ layer.masksToBounds = true
+
+ contentView.addSubview(self.content)
+
+ let offset = 20.0
+
+ let motionEffectsX = UIInterpolatingMotionEffect(keyPath: "center.x", type: .tiltAlongHorizontalAxis)
+ motionEffectsX.maximumRelativeValue = offset
+ motionEffectsX.minimumRelativeValue = -offset
+
+ let motionEffectsY = UIInterpolatingMotionEffect(keyPath: "center.y", type: .tiltAlongVerticalAxis)
+ motionEffectsY.maximumRelativeValue = offset
+ motionEffectsY.minimumRelativeValue = -offset
+
+ let group = UIMotionEffectGroup()
+ group.motionEffects = [motionEffectsX, motionEffectsY]
+
+ addMotionEffect(group)
+ }
+
+ fileprivate var _content = UIView()
+ internal var content: UIView {
+ get {
+ return _content
+ }
+ set {
+ _content.removeFromSuperview()
+ _content = newValue
+ _content.alpha = 0.85
+ _content.clipsToBounds = true
+ _content.contentMode = .center
+ frame.size = _content.bounds.size
+ contentView.addSubview(_content)
+ }
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/HUD.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/HUD.swift
new file mode 100644
index 0000000..bbe4242
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/HUD.swift
@@ -0,0 +1,117 @@
+//
+// HUD.swift
+// PKHUD
+//
+// Created by Eugene Tartakovsky on 29/01/16.
+// Copyright © 2016 Eugene Tartakovsky, NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+public enum HUDContentType {
+ case success
+ case error
+ case progress
+ case image(UIImage?)
+ case rotatingImage(UIImage?)
+
+ case labeledSuccess(title: String?, subtitle: String?)
+ case labeledError(title: String?, subtitle: String?)
+ case labeledProgress(title: String?, subtitle: String?)
+ case labeledImage(image: UIImage?, title: String?, subtitle: String?)
+ case labeledRotatingImage(image: UIImage?, title: String?, subtitle: String?)
+
+ case label(String?)
+ case systemActivity
+ case customView(view: UIView)
+}
+
+public final class HUD {
+
+ // MARK: Properties
+ public static var dimsBackground: Bool {
+ get { return PKHUD.sharedHUD.dimsBackground }
+ set { PKHUD.sharedHUD.dimsBackground = newValue }
+ }
+
+ public static var allowsInteraction: Bool {
+ get { return PKHUD.sharedHUD.userInteractionOnUnderlyingViewsEnabled }
+ set { PKHUD.sharedHUD.userInteractionOnUnderlyingViewsEnabled = newValue }
+ }
+
+ public static var leadingMargin: CGFloat {
+ get { return PKHUD.sharedHUD.leadingMargin }
+ set { PKHUD.sharedHUD.leadingMargin = newValue }
+ }
+
+ public static var trailingMargin: CGFloat {
+ get { return PKHUD.sharedHUD.trailingMargin }
+ set { PKHUD.sharedHUD.trailingMargin = newValue }
+ }
+
+ public static var isVisible: Bool { return PKHUD.sharedHUD.isVisible }
+
+ // MARK: Public methods, PKHUD based
+ public static func show(_ content: HUDContentType, onView view: UIView? = nil) {
+ PKHUD.sharedHUD.contentView = contentView(content)
+ PKHUD.sharedHUD.show(onView: view)
+ }
+
+ public static func hide(_ completion: ((Bool) -> Void)? = nil) {
+ PKHUD.sharedHUD.hide(animated: false, completion: completion)
+ }
+
+ public static func hide(animated: Bool, completion: ((Bool) -> Void)? = nil) {
+ PKHUD.sharedHUD.hide(animated: animated, completion: completion)
+ }
+
+ public static func hide(afterDelay delay: TimeInterval, completion: ((Bool) -> Void)? = nil) {
+ PKHUD.sharedHUD.hide(afterDelay: delay, completion: completion)
+ }
+
+ // MARK: Public methods, HUD based
+ public static func flash(_ content: HUDContentType, onView view: UIView? = nil) {
+ HUD.show(content, onView: view)
+ HUD.hide(animated: true, completion: nil)
+ }
+
+ public static func flash(_ content: HUDContentType, onView view: UIView? = nil, delay: TimeInterval, completion: ((Bool) -> Void)? = nil) {
+ HUD.show(content, onView: view)
+ HUD.hide(afterDelay: delay, completion: completion)
+ }
+
+ // MARK: Private methods
+ fileprivate static func contentView(_ content: HUDContentType) -> UIView {
+ switch content {
+ case .success:
+ return PKHUDSuccessView()
+ case .error:
+ return PKHUDErrorView()
+ case .progress:
+ return PKHUDProgressView()
+ case let .image(image):
+ return PKHUDSquareBaseView(image: image)
+ case let .rotatingImage(image):
+ return PKHUDRotatingImageView(image: image)
+
+ case let .labeledSuccess(title, subtitle):
+ return PKHUDSuccessView(title: title, subtitle: subtitle)
+ case let .labeledError(title, subtitle):
+ return PKHUDErrorView(title: title, subtitle: subtitle)
+ case let .labeledProgress(title, subtitle):
+ return PKHUDProgressView(title: title, subtitle: subtitle)
+ case let .labeledImage(image, title, subtitle):
+ return PKHUDSquareBaseView(image: image, title: title, subtitle: subtitle)
+ case let .labeledRotatingImage(image, title, subtitle):
+ return PKHUDRotatingImageView(image: image, title: title, subtitle: subtitle)
+
+ case let .label(text):
+ return PKHUDTextView(text: text)
+ case .systemActivity:
+ return PKHUDSystemActivityIndicatorView()
+ case let .customView(view):
+ return view
+ }
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/Contents.json b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/Contents.json
new file mode 100644
index 0000000..da4a164
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/checkmark.imageset/Contents.json b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/checkmark.imageset/Contents.json
new file mode 100644
index 0000000..03ff7b9
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/checkmark.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "checkmark.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/checkmark.imageset/checkmark.pdf b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/checkmark.imageset/checkmark.pdf
new file mode 100644
index 0000000..0b8e70b
Binary files /dev/null and b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/checkmark.imageset/checkmark.pdf differ
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/cross.imageset/Contents.json b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/cross.imageset/Contents.json
new file mode 100644
index 0000000..c7c5c82
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/cross.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "cross.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/cross.imageset/cross.pdf b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/cross.imageset/cross.pdf
new file mode 100644
index 0000000..d399889
Binary files /dev/null and b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/cross.imageset/cross.pdf differ
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_activity.imageset/Contents.json b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_activity.imageset/Contents.json
new file mode 100644
index 0000000..f71552a
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_activity.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "progress.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_activity.imageset/progress.pdf b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_activity.imageset/progress.pdf
new file mode 100644
index 0000000..474d067
Binary files /dev/null and b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_activity.imageset/progress.pdf differ
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_circular.imageset/Contents.json b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_circular.imageset/Contents.json
new file mode 100644
index 0000000..c517056
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_circular.imageset/Contents.json
@@ -0,0 +1,15 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "progress_circular.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "original"
+ }
+}
\ No newline at end of file
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_circular.imageset/progress_circular.pdf b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_circular.imageset/progress_circular.pdf
new file mode 100644
index 0000000..c3636e0
Binary files /dev/null and b/swift/Pixelizator/Pods/PKHUD/PKHUD/Images.xcassets/progress_circular.imageset/progress_circular.pdf differ
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUD.h b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUD.h
new file mode 100644
index 0000000..2d38705
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUD.h
@@ -0,0 +1,16 @@
+//
+// PKHUD.h
+// PKHUD
+//
+// Created by Philip Kluz on 6/17/14.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+@import UIKit;
+
+//! Project version number for PKHUD.
+FOUNDATION_EXPORT double PKHUDVersionNumber;
+
+//! Project version string for PKHUD.
+FOUNDATION_EXPORT const unsigned char PKHUDVersionString[];
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUD.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUD.swift
new file mode 100644
index 0000000..5864bf1
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUD.swift
@@ -0,0 +1,223 @@
+//
+// HUD.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/13/14.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// The PKHUD object controls showing and hiding of the HUD, as well as its contents and touch response behavior.
+open class PKHUD: NSObject {
+
+ fileprivate struct Constants {
+ static let sharedHUD = PKHUD()
+ }
+
+ public var viewToPresentOn: UIView?
+
+ fileprivate let container = ContainerView()
+ fileprivate var hideTimer: Timer?
+
+ public typealias TimerAction = (Bool) -> Void
+ fileprivate var timerActions = [String: TimerAction]()
+
+ /// Grace period is the time (in seconds) that the invoked method may be run without
+ /// showing the HUD. If the task finishes before the grace time runs out, the HUD will
+ /// not be shown at all.
+ /// This may be used to prevent HUD display for very short tasks.
+ /// Defaults to 0 (no grace time).
+ @available(*, deprecated, message: "Will be removed with Swift4 support, use gracePeriod instead")
+ public var graceTime: TimeInterval {
+ get {
+ return gracePeriod
+ }
+ set(newPeriod) {
+ gracePeriod = newPeriod
+ }
+ }
+
+ /// Grace period is the time (in seconds) that the invoked method may be run without
+ /// showing the HUD. If the task finishes before the grace time runs out, the HUD will
+ /// not be shown at all.
+ /// This may be used to prevent HUD display for very short tasks.
+ /// Defaults to 0 (no grace time).
+ public var gracePeriod: TimeInterval = 0
+ fileprivate var graceTimer: Timer?
+
+ // MARK: Public
+
+ open class var sharedHUD: PKHUD {
+ return Constants.sharedHUD
+ }
+
+ public override init () {
+ super.init()
+
+ #if swift(>=4.2)
+ let notificationName = UIApplication.willEnterForegroundNotification
+ #else
+ let notificationName = NSNotification.Name.UIApplicationWillEnterForeground
+ #endif
+
+ NotificationCenter.default.addObserver(self,
+ selector: #selector(PKHUD.willEnterForeground(_:)),
+ name: notificationName,
+ object: nil)
+ userInteractionOnUnderlyingViewsEnabled = false
+ container.frameView.autoresizingMask = [ .flexibleLeftMargin,
+ .flexibleRightMargin,
+ .flexibleTopMargin,
+ .flexibleBottomMargin ]
+
+ self.container.isAccessibilityElement = true
+ self.container.accessibilityIdentifier = "PKHUD"
+ }
+
+ public convenience init(viewToPresentOn view: UIView) {
+ self.init()
+ viewToPresentOn = view
+ }
+
+ deinit {
+ NotificationCenter.default.removeObserver(self)
+ }
+
+ open var dimsBackground = true
+ open var userInteractionOnUnderlyingViewsEnabled: Bool {
+ get {
+ return !container.isUserInteractionEnabled
+ }
+ set {
+ container.isUserInteractionEnabled = !newValue
+ }
+ }
+
+ open var isVisible: Bool {
+ return !container.isHidden
+ }
+
+ open var contentView: UIView {
+ get {
+ return container.frameView.content
+ }
+ set {
+ container.frameView.content = newValue
+ startAnimatingContentView()
+ }
+ }
+
+ open var effect: UIVisualEffect? {
+ get {
+ return container.frameView.effect
+ }
+ set {
+ container.frameView.effect = newValue
+ }
+ }
+
+ open var leadingMargin: CGFloat = 0
+
+ open var trailingMargin: CGFloat = 0
+
+ open func show(onView view: UIView? = nil) {
+ let view: UIView = view ?? viewToPresentOn ?? UIApplication.shared.keyWindow!
+ if !view.subviews.contains(container) {
+ view.addSubview(container)
+ container.frame.origin = CGPoint.zero
+ container.frame.size = view.frame.size
+ container.autoresizingMask = [ .flexibleHeight, .flexibleWidth ]
+ container.isHidden = true
+ }
+ if dimsBackground {
+ container.showBackground(animated: true)
+ }
+
+ // If the grace time is set, postpone the HUD display
+ if gracePeriod > 0.0 {
+ let timer = Timer(timeInterval: gracePeriod, target: self, selector: #selector(PKHUD.handleGraceTimer(_:)), userInfo: nil, repeats: false)
+ #if swift(>=4.2)
+ RunLoop.current.add(timer, forMode: .common)
+ #else
+ RunLoop.current.add(timer, forMode: .commonModes)
+ #endif
+ graceTimer = timer
+ } else {
+ showContent()
+ }
+ }
+
+ func showContent() {
+ graceTimer?.invalidate()
+ container.showFrameView()
+ startAnimatingContentView()
+ }
+
+ open func hide(animated anim: Bool = true, completion: TimerAction? = nil) {
+ graceTimer?.invalidate()
+
+ container.hideFrameView(animated: anim, completion: completion)
+ stopAnimatingContentView()
+ }
+
+ open func hide(_ animated: Bool, completion: TimerAction? = nil) {
+ hide(animated: animated, completion: completion)
+ }
+
+ open func hide(afterDelay delay: TimeInterval, completion: TimerAction? = nil) {
+ let key = UUID().uuidString
+ let userInfo = ["timerActionKey": key]
+ if let completion = completion {
+ timerActions[key] = completion
+ }
+
+ hideTimer?.invalidate()
+ hideTimer = Timer.scheduledTimer(timeInterval: delay,
+ target: self,
+ selector: #selector(PKHUD.performDelayedHide(_:)),
+ userInfo: userInfo,
+ repeats: false)
+ }
+
+ // MARK: Internal
+
+ @objc internal func willEnterForeground(_ notification: Notification?) {
+ self.startAnimatingContentView()
+ }
+
+ internal func startAnimatingContentView() {
+ if let animatingContentView = contentView as? PKHUDAnimating, isVisible {
+ animatingContentView.startAnimation()
+ }
+ }
+
+ internal func stopAnimatingContentView() {
+ if let animatingContentView = contentView as? PKHUDAnimating {
+ animatingContentView.stopAnimation?()
+ }
+ }
+
+ // MARK: Timer callbacks
+
+ @objc internal func performDelayedHide(_ timer: Timer? = nil) {
+ let userInfo = timer?.userInfo as? [String: AnyObject]
+ let key = userInfo?["timerActionKey"] as? String
+ var completion: TimerAction?
+
+ if let key = key, let action = timerActions[key] {
+ completion = action
+ timerActions[key] = nil
+ }
+
+ hide(animated: true, completion: completion)
+ }
+
+ @objc internal func handleGraceTimer(_ timer: Timer? = nil) {
+ // Show the HUD only if the task is still running
+ if (graceTimer?.isValid)! {
+ showContent()
+ }
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAnimating.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAnimating.swift
new file mode 100644
index 0000000..5ee0857
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAnimating.swift
@@ -0,0 +1,16 @@
+//
+// PKHUDAnimatingContentView.swift
+// PKHUD
+//
+// Created by Philip Kluz on 9/27/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+@objc public protocol PKHUDAnimating {
+
+ func startAnimation()
+ @objc optional func stopAnimation()
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAnimation.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAnimation.swift
new file mode 100644
index 0000000..2426eee
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAnimation.swift
@@ -0,0 +1,67 @@
+//
+// PKHUDAnimation.swift
+// PKHUD
+//
+// Created by Piergiuseppe Longo on 06/01/16.
+// Copyright © 2016 Piergiuseppe Longo, NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import Foundation
+import QuartzCore
+
+public final class PKHUDAnimation {
+
+ public static let discreteRotation: CAAnimation = {
+ let animation = CAKeyframeAnimation(keyPath: "transform.rotation.z")
+ animation.values = [
+ NSNumber(value: 0.0),
+ NSNumber(value: 1.0 * .pi / 6.0),
+ NSNumber(value: 2.0 * .pi / 6.0),
+ NSNumber(value: 3.0 * .pi / 6.0),
+ NSNumber(value: 4.0 * .pi / 6.0),
+ NSNumber(value: 5.0 * .pi / 6.0),
+ NSNumber(value: 6.0 * .pi / 6.0),
+ NSNumber(value: 7.0 * .pi / 6.0),
+ NSNumber(value: 8.0 * .pi / 6.0),
+ NSNumber(value: 9.0 * .pi / 6.0),
+ NSNumber(value: 10.0 * .pi / 6.0),
+ NSNumber(value: 11.0 * .pi / 6.0),
+ NSNumber(value: 2.0 * .pi)
+ ]
+ animation.keyTimes = [
+ NSNumber(value: 0.0),
+ NSNumber(value: 1.0 / 12.0),
+ NSNumber(value: 2.0 / 12.0),
+ NSNumber(value: 3.0 / 12.0),
+ NSNumber(value: 4.0 / 12.0),
+ NSNumber(value: 5.0 / 12.0),
+ NSNumber(value: 0.5),
+ NSNumber(value: 7.0 / 12.0),
+ NSNumber(value: 8.0 / 12.0),
+ NSNumber(value: 9.0 / 12.0),
+ NSNumber(value: 10.0 / 12.0),
+ NSNumber(value: 11.0 / 12.0),
+ NSNumber(value: 1.0)
+ ]
+ animation.duration = 1.2
+
+ #if swift(>=4.2)
+ animation.calculationMode = .discrete
+ #else
+ animation.calculationMode = "discrete"
+ #endif
+
+ animation.repeatCount = Float(INT_MAX)
+ return animation
+ }()
+
+ static let continuousRotation: CAAnimation = {
+ let animation = CABasicAnimation(keyPath: "transform.rotation.z")
+ animation.fromValue = 0
+ animation.toValue = 2.0 * .pi
+ animation.duration = 1.2
+ animation.repeatCount = Float(INT_MAX)
+ return animation
+ }()
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAssets.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAssets.swift
new file mode 100644
index 0000000..2ecc43f
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDAssets.swift
@@ -0,0 +1,36 @@
+//
+// PKHUD.Assets.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/18/14.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// PKHUDAssets provides a set of default images, that can be supplied to the PKHUD's content views.
+open class PKHUDAssets: NSObject {
+
+ open class var crossImage: UIImage { return PKHUDAssets.bundledImage(named: "cross") }
+ open class var checkmarkImage: UIImage { return PKHUDAssets.bundledImage(named: "checkmark") }
+ open class var progressActivityImage: UIImage { return PKHUDAssets.bundledImage(named: "progress_activity") }
+ open class var progressCircularImage: UIImage { return PKHUDAssets.bundledImage(named: "progress_circular") }
+
+ internal class func bundledImage(named name: String) -> UIImage {
+ let primaryBundle = Bundle(for: PKHUDAssets.self)
+ if let image = UIImage(named: name, in: primaryBundle, compatibleWith: nil) {
+ // Load image in cases where PKHUD is directly integrated
+ return image
+ } else if
+ let subBundleUrl = primaryBundle.url(forResource: "PKHUDResources", withExtension: "bundle"),
+ let subBundle = Bundle(url: subBundleUrl),
+ let image = UIImage(named: name, in: subBundle, compatibleWith: nil)
+ {
+ // Load image in cases where PKHUD is integrated via cocoapods as a dynamic or static framework with a separate resource bundle
+ return image
+ }
+
+ return UIImage()
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDErrorView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDErrorView.swift
new file mode 100644
index 0000000..d53bb05
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDErrorView.swift
@@ -0,0 +1,101 @@
+//
+// PKHUDErrorAnimation.swift
+// PKHUD
+//
+// Created by Philip Kluz on 9/27/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// PKHUDErrorView provides an animated error (cross) view.
+open class PKHUDErrorView: PKHUDSquareBaseView, PKHUDAnimating {
+
+ var dashOneLayer = PKHUDErrorView.generateDashLayer()
+ var dashTwoLayer = PKHUDErrorView.generateDashLayer()
+
+ class func generateDashLayer() -> CAShapeLayer {
+ let dash = CAShapeLayer()
+ dash.frame = CGRect(x: 0.0, y: 0.0, width: 88.0, height: 88.0)
+ dash.path = {
+ let path = UIBezierPath()
+ path.move(to: CGPoint(x: 0.0, y: 44.0))
+ path.addLine(to: CGPoint(x: 88.0, y: 44.0))
+ return path.cgPath
+ }()
+
+ #if swift(>=4.2)
+ dash.lineCap = .round
+ dash.lineJoin = .round
+ dash.fillMode = .forwards
+ #else
+ dash.lineCap = kCALineCapRound
+ dash.lineJoin = kCALineJoinRound
+ dash.fillMode = kCAFillModeForwards
+ #endif
+
+ dash.fillColor = nil
+ dash.strokeColor = UIColor(red: 0.15, green: 0.15, blue: 0.15, alpha: 1.0).cgColor
+ dash.lineWidth = 6
+ return dash
+ }
+
+ public init(title: String? = nil, subtitle: String? = nil) {
+ super.init(title: title, subtitle: subtitle)
+ layer.addSublayer(dashOneLayer)
+ layer.addSublayer(dashTwoLayer)
+ dashOneLayer.position = layer.position
+ dashTwoLayer.position = layer.position
+ }
+
+ public required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ layer.addSublayer(dashOneLayer)
+ layer.addSublayer(dashTwoLayer)
+ dashOneLayer.position = layer.position
+ dashTwoLayer.position = layer.position
+ }
+
+ func rotationAnimation(_ angle: CGFloat) -> CABasicAnimation {
+ var animation: CABasicAnimation
+ if #available(iOS 9.0, *) {
+ let springAnimation = CASpringAnimation(keyPath: "transform.rotation.z")
+ springAnimation.damping = 1.5
+ springAnimation.mass = 0.22
+ springAnimation.initialVelocity = 0.5
+ animation = springAnimation
+ } else {
+ animation = CABasicAnimation(keyPath: "transform.rotation.z")
+ }
+
+ animation.fromValue = 0.0
+ animation.toValue = angle * CGFloat(.pi / 180.0)
+ animation.duration = 1.0
+
+ #if swift(>=4.2)
+ let timingFunctionName = CAMediaTimingFunctionName.easeInEaseOut
+ #else
+ let timingFunctionName = kCAMediaTimingFunctionEaseInEaseOut
+ #endif
+
+ animation.timingFunction = CAMediaTimingFunction(name: timingFunctionName)
+ return animation
+ }
+
+ public func startAnimation() {
+ let dashOneAnimation = rotationAnimation(-45.0)
+ let dashTwoAnimation = rotationAnimation(45.0)
+
+ dashOneLayer.transform = CATransform3DMakeRotation(-45 * CGFloat(.pi / 180.0), 0.0, 0.0, 1.0)
+ dashTwoLayer.transform = CATransform3DMakeRotation(45 * CGFloat(.pi / 180.0), 0.0, 0.0, 1.0)
+
+ dashOneLayer.add(dashOneAnimation, forKey: "dashOneAnimation")
+ dashTwoLayer.add(dashTwoAnimation, forKey: "dashTwoAnimation")
+ }
+
+ public func stopAnimation() {
+ dashOneLayer.removeAnimation(forKey: "dashOneAnimation")
+ dashTwoLayer.removeAnimation(forKey: "dashTwoAnimation")
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDProgressView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDProgressView.swift
new file mode 100644
index 0000000..24b7d52
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDProgressView.swift
@@ -0,0 +1,30 @@
+//
+// PKHUDProgressVIew.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/12/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+import QuartzCore
+
+/// PKHUDProgressView provides an indeterminate progress view.
+open class PKHUDProgressView: PKHUDSquareBaseView, PKHUDAnimating {
+
+ public init(title: String? = nil, subtitle: String? = nil) {
+ super.init(image: PKHUDAssets.progressActivityImage, title: title, subtitle: subtitle)
+ }
+
+ public required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ }
+
+ public func startAnimation() {
+ imageView.layer.add(PKHUDAnimation.discreteRotation, forKey: "progressAnimation")
+ }
+
+ public func stopAnimation() {
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDRotatingImageView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDRotatingImageView.swift
new file mode 100644
index 0000000..c7eba25
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDRotatingImageView.swift
@@ -0,0 +1,22 @@
+//
+// PKHUDRotatingImageView.swift
+// PKHUD
+//
+// Created by Mark Koh on 1/14/16.
+// Copyright © 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+import QuartzCore
+
+/// PKHUDRotatingImageView provides a content view that rotates the supplied image automatically.
+open class PKHUDRotatingImageView: PKHUDSquareBaseView, PKHUDAnimating {
+
+ public func startAnimation() {
+ imageView.layer.add(PKHUDAnimation.continuousRotation, forKey: "progressAnimation")
+ }
+
+ public func stopAnimation() {
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSquareBaseView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSquareBaseView.swift
new file mode 100644
index 0000000..9fd8260
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSquareBaseView.swift
@@ -0,0 +1,83 @@
+//
+// PKHUDSquareBaseView.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/12/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// PKHUDSquareBaseView provides a square view, which you can subclass and add additional views to.
+open class PKHUDSquareBaseView: UIView {
+
+ static let defaultSquareBaseViewFrame = CGRect(origin: CGPoint.zero, size: CGSize(width: 156.0, height: 156.0))
+
+ public override init(frame: CGRect) {
+ super.init(frame: frame)
+ }
+
+ public required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ }
+
+ public init(image: UIImage? = nil, title: String? = nil, subtitle: String? = nil) {
+ super.init(frame: PKHUDSquareBaseView.defaultSquareBaseViewFrame)
+ self.imageView.image = image
+ titleLabel.text = title
+ subtitleLabel.text = subtitle
+
+ addSubview(imageView)
+ addSubview(titleLabel)
+ addSubview(subtitleLabel)
+ }
+
+ public let imageView: UIImageView = {
+ let imageView = UIImageView()
+ imageView.alpha = 0.85
+ imageView.clipsToBounds = true
+ imageView.contentMode = .center
+ return imageView
+ }()
+
+ public let titleLabel: UILabel = {
+ let label = UILabel()
+ label.textAlignment = .center
+ label.font = UIFont.boldSystemFont(ofSize: 17.0)
+ label.textColor = UIColor.black.withAlphaComponent(0.85)
+ label.adjustsFontSizeToFitWidth = true
+ label.minimumScaleFactor = 0.25
+ return label
+ }()
+
+ public let subtitleLabel: UILabel = {
+ let label = UILabel()
+ label.textAlignment = .center
+ label.font = UIFont.systemFont(ofSize: 14.0)
+ label.textColor = UIColor.black.withAlphaComponent(0.7)
+ label.adjustsFontSizeToFitWidth = true
+ label.numberOfLines = 2
+ label.adjustsFontSizeToFitWidth = true
+ label.minimumScaleFactor = 0.25
+ return label
+ }()
+
+ open override func layoutSubviews() {
+ super.layoutSubviews()
+
+ let margin: CGFloat = PKHUD.sharedHUD.leadingMargin + PKHUD.sharedHUD.trailingMargin
+ let originX: CGFloat = margin > 0 ? margin : 0.0
+ let viewWidth = bounds.size.width - 2 * margin
+ let viewHeight = bounds.size.height
+
+ let halfHeight = CGFloat(ceilf(CFloat(viewHeight / 2.0)))
+ let quarterHeight = CGFloat(ceilf(CFloat(viewHeight / 4.0)))
+ let threeQuarterHeight = CGFloat(ceilf(CFloat(viewHeight / 4.0 * 3.0)))
+
+ titleLabel.frame = CGRect(origin: CGPoint(x: originX, y: 0.0), size: CGSize(width: viewWidth, height: quarterHeight))
+ imageView.frame = CGRect(origin: CGPoint(x: originX, y: quarterHeight), size: CGSize(width: viewWidth, height: halfHeight))
+ subtitleLabel.frame = CGRect(origin: CGPoint(x: originX, y: threeQuarterHeight), size: CGSize(width: viewWidth, height: quarterHeight))
+
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSuccessView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSuccessView.swift
new file mode 100644
index 0000000..56825ec
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSuccessView.swift
@@ -0,0 +1,65 @@
+//
+// PKHUDCheckmarkView.swift
+// PKHUD
+//
+// Created by Philip Kluz on 9/27/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// PKHUDCheckmarkView provides an animated success (checkmark) view.
+open class PKHUDSuccessView: PKHUDSquareBaseView, PKHUDAnimating {
+
+ var checkmarkShapeLayer: CAShapeLayer = {
+ let checkmarkPath = UIBezierPath()
+ checkmarkPath.move(to: CGPoint(x: 4.0, y: 27.0))
+ checkmarkPath.addLine(to: CGPoint(x: 34.0, y: 56.0))
+ checkmarkPath.addLine(to: CGPoint(x: 88.0, y: 0.0))
+
+ let layer = CAShapeLayer()
+ layer.frame = CGRect(x: 3.0, y: 3.0, width: 88.0, height: 56.0)
+ layer.path = checkmarkPath.cgPath
+
+ #if swift(>=4.2)
+ layer.fillMode = .forwards
+ layer.lineCap = .round
+ layer.lineJoin = .round
+ #else
+ layer.fillMode = kCAFillModeForwards
+ layer.lineCap = kCALineCapRound
+ layer.lineJoin = kCALineJoinRound
+ #endif
+
+ layer.fillColor = nil
+ layer.strokeColor = UIColor(red: 0.15, green: 0.15, blue: 0.15, alpha: 1.0).cgColor
+ layer.lineWidth = 6.0
+ return layer
+ }()
+
+ public init(title: String? = nil, subtitle: String? = nil) {
+ super.init(title: title, subtitle: subtitle)
+ layer.addSublayer(checkmarkShapeLayer)
+ checkmarkShapeLayer.position = layer.position
+ }
+
+ public required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ layer.addSublayer(checkmarkShapeLayer)
+ checkmarkShapeLayer.position = layer.position
+ }
+
+ open func startAnimation() {
+ let checkmarkStrokeAnimation = CAKeyframeAnimation(keyPath: "strokeEnd")
+ checkmarkStrokeAnimation.values = [0, 1]
+ checkmarkStrokeAnimation.keyTimes = [0, 1]
+ checkmarkStrokeAnimation.duration = 0.35
+
+ checkmarkShapeLayer.add(checkmarkStrokeAnimation, forKey: "checkmarkStrokeAnim")
+ }
+
+ open func stopAnimation() {
+ checkmarkShapeLayer.removeAnimation(forKey: "checkmarkStrokeAnimation")
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSystemActivityIndicatorView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSystemActivityIndicatorView.swift
new file mode 100644
index 0000000..bba3df5
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDSystemActivityIndicatorView.swift
@@ -0,0 +1,55 @@
+//
+// PKHUDSystemActivityIndicatorView.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/12/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// PKHUDSystemActivityIndicatorView provides the system UIActivityIndicatorView as an alternative.
+public final class PKHUDSystemActivityIndicatorView: PKHUDSquareBaseView, PKHUDAnimating {
+
+ public init() {
+ super.init(frame: PKHUDSquareBaseView.defaultSquareBaseViewFrame)
+ commonInit()
+ }
+
+ public override init(frame: CGRect) {
+ super.init(frame: frame)
+ commonInit()
+ }
+
+ public required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ commonInit()
+ }
+
+ func commonInit () {
+ backgroundColor = UIColor.clear
+ alpha = 0.8
+
+ self.addSubview(activityIndicatorView)
+ }
+
+ public override func layoutSubviews() {
+ super.layoutSubviews()
+ activityIndicatorView.center = self.center
+ }
+
+ let activityIndicatorView: UIActivityIndicatorView = {
+ #if swift(>=4.2)
+ let activity = UIActivityIndicatorView(style: .whiteLarge)
+ #else
+ let activity = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
+ #endif
+ activity.color = UIColor.black
+ return activity
+ }()
+
+ public func startAnimation() {
+ activityIndicatorView.startAnimating()
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDTextView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDTextView.swift
new file mode 100644
index 0000000..5dc5055
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDTextView.swift
@@ -0,0 +1,46 @@
+//
+// PKHUDTextView.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/12/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// PKHUDTextView provides a wide, three line text view, which you can use to display information.
+open class PKHUDTextView: PKHUDWideBaseView {
+
+ public init(text: String?) {
+ super.init()
+ commonInit(text)
+ }
+
+ public required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ commonInit("")
+ }
+
+ func commonInit(_ text: String?) {
+ titleLabel.text = text
+ addSubview(titleLabel)
+ }
+
+ open override func layoutSubviews() {
+ super.layoutSubviews()
+
+ let padding: CGFloat = 10.0
+ titleLabel.frame = bounds.insetBy(dx: padding, dy: padding)
+ }
+
+ public let titleLabel: UILabel = {
+ let label = UILabel()
+ label.textAlignment = .center
+ label.font = UIFont.boldSystemFont(ofSize: 17.0)
+ label.textColor = UIColor.black.withAlphaComponent(0.85)
+ label.adjustsFontSizeToFitWidth = true
+ label.numberOfLines = 3
+ return label
+ }()
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDWideBaseView.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDWideBaseView.swift
new file mode 100644
index 0000000..ea6b6c9
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/PKHUDWideBaseView.swift
@@ -0,0 +1,28 @@
+//
+// PKHUDWideBaseView.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/12/15.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// PKHUDWideBaseView provides a wide base view, which you can subclass and add additional views to.
+open class PKHUDWideBaseView: UIView {
+
+ static let defaultWideBaseViewFrame = CGRect(origin: CGPoint.zero, size: CGSize(width: 265.0, height: 90.0))
+
+ public init() {
+ super.init(frame: PKHUDWideBaseView.defaultWideBaseViewFrame)
+ }
+
+ public override init(frame: CGRect) {
+ super.init(frame: frame)
+ }
+
+ public required init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/Window.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/Window.swift
new file mode 100644
index 0000000..96e4432
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/Window.swift
@@ -0,0 +1,104 @@
+//
+// HUDWindow.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/16/14.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// The window used to display the PKHUD within. Placed atop the applications main window.
+internal class ContainerView: UIView {
+
+ internal let frameView: FrameView
+ internal init(frameView: FrameView = FrameView()) {
+ self.frameView = frameView
+ super.init(frame: CGRect.zero)
+ commonInit()
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ frameView = FrameView()
+ super.init(coder: aDecoder)
+ commonInit()
+ }
+
+ fileprivate func commonInit() {
+ backgroundColor = UIColor.clear
+ isHidden = true
+
+ addSubview(backgroundView)
+ addSubview(frameView)
+ }
+
+ internal override func layoutSubviews() {
+ super.layoutSubviews()
+
+ frameView.center = center
+ backgroundView.frame = bounds
+ }
+
+ internal func showFrameView() {
+ layer.removeAllAnimations()
+ frameView.center = center
+ frameView.alpha = 1.0
+ isHidden = false
+ }
+
+ fileprivate var willHide = false
+
+ internal func hideFrameView(animated anim: Bool, completion: ((Bool) -> Void)? = nil) {
+ let finalize: (_ finished: Bool) -> Void = { finished in
+ self.isHidden = true
+ self.removeFromSuperview()
+ self.willHide = false
+
+ completion?(finished)
+ }
+
+ if isHidden {
+ return
+ }
+
+ willHide = true
+
+ if anim {
+ UIView.animate(withDuration: 0.8, animations: {
+ self.frameView.alpha = 0.0
+ self.hideBackground(animated: false)
+ }, completion: { _ in finalize(true) })
+ } else {
+ self.frameView.alpha = 0.0
+ finalize(true)
+ }
+ }
+
+ fileprivate let backgroundView: UIView = {
+ let view = UIView()
+ view.backgroundColor = UIColor(white: 0.0, alpha: 0.25)
+ view.alpha = 0.0
+ return view
+ }()
+
+ internal func showBackground(animated anim: Bool) {
+ if anim {
+ UIView.animate(withDuration: 0.175, animations: {
+ self.backgroundView.alpha = 1.0
+ })
+ } else {
+ backgroundView.alpha = 1.0
+ }
+ }
+
+ internal func hideBackground(animated anim: Bool) {
+ if anim {
+ UIView.animate(withDuration: 0.65, animations: {
+ self.backgroundView.alpha = 0.0
+ })
+ } else {
+ backgroundView.alpha = 0.0
+ }
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/PKHUD/WindowRootViewController.swift b/swift/Pixelizator/Pods/PKHUD/PKHUD/WindowRootViewController.swift
new file mode 100644
index 0000000..2e6d610
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/PKHUD/WindowRootViewController.swift
@@ -0,0 +1,46 @@
+//
+// PKHUD.WindowRootViewController.swift
+// PKHUD
+//
+// Created by Philip Kluz on 6/18/14.
+// Copyright (c) 2016 NSExceptional. All rights reserved.
+// Licensed under the MIT license.
+//
+
+import UIKit
+
+/// Serves as a configuration relay controller, tapping into the main window's rootViewController settings.
+internal class WindowRootViewController: UIViewController {
+
+ internal override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
+ if let rootViewController = UIApplication.shared.delegate?.window??.rootViewController {
+ return rootViewController.supportedInterfaceOrientations
+ } else {
+ return UIInterfaceOrientationMask.portrait
+ }
+ }
+
+ internal override var preferredStatusBarStyle: UIStatusBarStyle {
+ return self.presentingViewController?.preferredStatusBarStyle ?? UIApplication.shared.statusBarStyle
+ }
+
+ internal override var prefersStatusBarHidden: Bool {
+ return self.presentingViewController?.prefersStatusBarHidden ?? UIApplication.shared.isStatusBarHidden
+ }
+
+ internal override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
+ if let rootViewController = UIApplication.shared.delegate?.window??.rootViewController {
+ return rootViewController.preferredStatusBarUpdateAnimation
+ } else {
+ return .none
+ }
+ }
+
+ internal override var shouldAutorotate: Bool {
+ if let rootViewController = UIApplication.shared.delegate?.window??.rootViewController {
+ return rootViewController.shouldAutorotate
+ } else {
+ return false
+ }
+ }
+}
diff --git a/swift/Pixelizator/Pods/PKHUD/README.md b/swift/Pixelizator/Pods/PKHUD/README.md
new file mode 100644
index 0000000..f6fe6be
--- /dev/null
+++ b/swift/Pixelizator/Pods/PKHUD/README.md
@@ -0,0 +1,160 @@
+[![Build Status](https://travis-ci.org/pkluz/PKHUD.svg?branch=master)](https://travis-ci.org/pkluz/PKHUD)
+[![License](https://img.shields.io/cocoapods/l/PKHUD.svg?style=flat)](https://cocoapods.org/pods/PKHUD)
+[![Platform](https://img.shields.io/cocoapods/p/PKHUD.svg?style=flat)](http://cocoadocs.org/docsets/PKHUD/3.2.1/)
+[![CocoaPod](https://img.shields.io/cocoapods/v/PKHUD.svg?style=flat)](https://cocoapods.org/pods/PKHUD)
+[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
+
+![PKHUD - Swift and easy](https://raw.githubusercontent.com/pkluz/PKHUD/master/README_hero.png)
+
+A **Swift** based reimplementation of the Apple HUD (Volume, Ringer, Rotation,…) **for iOS 8** and up.
+
+## Features
+- Official iOS 8 blur effect via **UIVisualEffectsView**.
+- Proper **rotation support**.
+- Size / **Device agnostic**.
+- Works on top of presented view controllers, alerts,...
+- Comes with several *free* resources - Checkmark, Cross, Progress Indicator,…
+- …as well as **animated** ones.
+- Builds as an **iOS 8 framework**.
+
+![PKHUD.gif](https://cloud.githubusercontent.com/assets/1275218/10124182/09f4c406-654f-11e5-9cab-0f2e6f470887.gif)
+
+## Installation
+**The recommended way is to use CocoaPods.**
+
+### CocoaPods
+
+To install PKHUD for Swift 2 using CocoaPods, include the following in your Podfile
+
+```ruby
+pod 'PKHUD', '~> 3.0'
+```
+
+To install PKHUD for Swift 3.x using CocoaPods, include the following in your Podfile
+
+```ruby
+pod 'PKHUD', '~> 4.0'
+```
+
+To install PKHUD for Swift 4.x, include the following in your Podfile
+
+```ruby
+pod 'PKHUD', '~> 5.0'
+```
+
+### Carthage
+
+[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
+
+You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
+
+```bash
+$ brew update
+$ brew install carthage
+```
+
+To integrate PKHUD into your Xcode project using Carthage, specify it in your `Cartfile`:
+
+```ogdl
+github "pkluz/PKHUD" ~> 4.0
+```
+
+Run `carthage update` to build the framework and drag the built `PKHUD.framework` into your Xcode project.
+
+## How To
+
+After adding the framework to your project, you need to import the module
+```swift
+import PKHUD
+```
+
+Now, you can proceed to show an arbitrary HUD (and have it automatically disappear a second later) like this:
+```swift
+HUD.flash(.success, delay: 1.0)
+```
+
+_or_ with a completion handler:
+
+```swift
+HUD.flash(.success, delay: 1.0) { finished in
+ // Completion Handler
+}
+```
+
+alternatively, you can use the more verbose and flexible “plumbing” API:
+
+```swift
+PKHUD.sharedHUD.contentView = PKHUDSuccessView()
+PKHUD.sharedHUD.show()
+PKHUD.sharedHUD.hide(afterDelay: 1.0) { success in
+ // Completion Handler
+}
+```
+
+You can also hot-swap content views - this can prove useful if you want to display a progress HUD first and transform it into a success or error HUD after an asynchronous operation has finished.
+```swift
+HUD.show(.progress)
+
+// Now some long running task starts...
+DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
+ // ...and once it finishes we flash the HUD for a second.
+ HUD.flash(.success, delay: 1.0)
+}
+```
+
+Please note that there are _multiple_ types of content views that ship with PKHUD. You can find them as separate files in the project folder as well as in the `ContentViews` group in Xcode.
+
+## Communication _(Hat Tip AlamoFire)_
+
+- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/pkhud). (Tag 'pkhud')
+- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/pkhud).
+- If you **found a bug**, open an issue.
+- If you **have a feature request**, open an issue.
+- If you **want to contribute**, submit a pull request.
+
+
+## Customization
+
+There are two properties at your disposal to customize general behavior.
+
+- `PKHUD.sharedHUD.dimsBackground: Bool` defines whether the background is slightly dimmed when the HUD is shown.
+
+- `PKHUD.sharedHUD.userInteractionOnUnderlyingViewsEnabled: Bool` defines whether the underlying views respond to touches while the HUD is shown.
+
+Additionally you are free to create you own custom content views. They can descend from any `UIView` type or the predefined base classes `PKHUDSquareBaseView` and `PKHUDWideBaseView`.
+
+**Note**: It's neither possible to customize the general look and feel, nor do I plan to add that feature. You are free to provide any content views you wish but the blurring, corner radius and shading will remain the same.
+
+## Credits
+
+PKHUD is owned and maintained by Philip Kluz. Other mantainers are:
+
+- Piergiuseppe Longo [twitter](https://twitter.com/pglongo)
+
+## Xamarin
+
+If you are Xamarin developer you can use this [port](https://github.com/Prin53/Xamarin.iOS.PKHUD).
+
+## License
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Philip Kluz (Philip.Kluz@gmail.com)
+
+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:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+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.
diff --git a/swift/Pixelizator/Pods/Pods.xcodeproj/project.pbxproj b/swift/Pixelizator/Pods/Pods.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..b12796d
--- /dev/null
+++ b/swift/Pixelizator/Pods/Pods.xcodeproj/project.pbxproj
@@ -0,0 +1,785 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 041A319F313FA03C9AECBD23F4A41676 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; };
+ 0AD7956E61AD5EF273B31E3878B480F9 /* PKHUDSquareBaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF94861B5E5BCDEA9026C7C6079D4ED0 /* PKHUDSquareBaseView.swift */; };
+ 0C2767249291A4A1505A28CFC9498026 /* PKHUDRotatingImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B40C8D7C066CBEFCE66ADBD6511407 /* PKHUDRotatingImageView.swift */; };
+ 0F4DD3C94E4DF364C580CCA89D9C2415 /* PKHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5AF37EE62F6AE5EE1E43713EEA3627 /* PKHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3BC5BD0252DA8DA05906C5D590C834C9 /* PKHUDAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0607033B6E9F75F8888CE2D87AC710C0 /* PKHUDAnimation.swift */; };
+ 3F6232073AB7C98C232EF26093587FAD /* Pods-Pixelizator-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D4140CE33F9E6339E21DDAFECCBE3D9 /* Pods-Pixelizator-dummy.m */; };
+ 4D8650E0675A910371A5ACDA54942B38 /* Pods-Pixelizator-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 599BE3BB9CB64016F009C3EC420B60D7 /* Pods-Pixelizator-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4FC4DA714B42350BC08EA10BD54A38AE /* PKHUDErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1164433BE2043A986C1BE946598AE00A /* PKHUDErrorView.swift */; };
+ 584DA6928D93CB8AA7DDDEB67FF8FE5C /* FrameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF22A71B42526D0A303F8DE7A72B1675 /* FrameView.swift */; };
+ 6384CC7276BF926A6E48E96AA10EFC1A /* PKHUDSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6FB3CF4BC1F4554FD9D5141F34743B2 /* PKHUDSuccessView.swift */; };
+ 695A4D580E443E5DE0356968CCC393CD /* PKHUDSystemActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD4C222B1512E10D66B71D33C1E9BF6 /* PKHUDSystemActivityIndicatorView.swift */; };
+ 7187B4DDEF3EF96F0E6983A9A0AEE61E /* PKHUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9BF9FDD75E98623FBCAD19ECDB328D3 /* PKHUD.swift */; };
+ 78B029B6D7F554212B95F64F80CDEC33 /* PKHUDAnimating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3633E6C374BBC4E0C024A93C6A3EC17D /* PKHUDAnimating.swift */; };
+ 7E49EB565118F1F3A231528110A1FF5F /* PKHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B4DE115F12120303243790CE7D5A6F /* PKHUD.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 897E572CF7EAAB73AA6AB472CFF35C05 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; };
+ 8C4D24A5AC87E30A33214EA4E7FA359B /* PKHUDAssets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D75D2643D35302026B8EFAE76A451CE /* PKHUDAssets.swift */; };
+ 8E945BA2AB75EB4A3E0B0E66CAB5D17C /* WindowRootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A2FAAEEC5419B27F1BF303DDAE05490 /* WindowRootViewController.swift */; };
+ 9967627CA12A571655D6F64ECD4688B3 /* PKHUDResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 402A987A721FCE8FFC74F986189A2729 /* PKHUDResources.bundle */; };
+ 99D620F94B0CD9C041635D559BD81B4A /* HUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D1D6EA19C8357797ADE8A2D291AF55 /* HUD.swift */; };
+ 9A1224693C7C3574E4A517844399E668 /* PKHUDWideBaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 219BF8BC523FC0BBB9FF08C2E2FF3EBB /* PKHUDWideBaseView.swift */; };
+ C16DB56D2D110826C502A4DFF6A6F0D3 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BBA37A124C71DE6F0602CD283CC93DF1 /* Images.xcassets */; };
+ EC093FB80F3090C6B466C94280790C23 /* Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7F7B43524F6C718FA39DA853DF0D6E4 /* Window.swift */; };
+ ECB37571500A625742833F6EDD1CE4E1 /* PKHUDTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B9E7ED7713F482171DE871FB745B3A6 /* PKHUDTextView.swift */; };
+ F51584A61D18FFFF50A115D6351EB91C /* PKHUDProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3A2F8D29AF0CDA12C644DD77BBE8282 /* PKHUDProgressView.swift */; };
+ F9718DA2D558B553E75E2031B94D55D8 /* PKHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6166C134A01C1172D76E70C7DBD7B8D7 /* PKHUD-dummy.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 56890D86243926CBCF03222DAFFA7D93 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 0422742DF5CC42F97485A5A4607BBEE9;
+ remoteInfo = PKHUD;
+ };
+ E0883D7F7AB2ACD8990E5C3D4857446A /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 4C3315A1ABAE8BC33824D088C610C951;
+ remoteInfo = "PKHUD-PKHUDResources";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 0607033B6E9F75F8888CE2D87AC710C0 /* PKHUDAnimation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDAnimation.swift; path = PKHUD/PKHUDAnimation.swift; sourceTree = ""; };
+ 0A2FAAEEC5419B27F1BF303DDAE05490 /* WindowRootViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WindowRootViewController.swift; path = PKHUD/WindowRootViewController.swift; sourceTree = ""; };
+ 0D4140CE33F9E6339E21DDAFECCBE3D9 /* Pods-Pixelizator-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Pixelizator-dummy.m"; sourceTree = ""; };
+ 0DE02BFAE8E42FC85C2052D3939B51F6 /* PKHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PKHUD-prefix.pch"; sourceTree = ""; };
+ 1164433BE2043A986C1BE946598AE00A /* PKHUDErrorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDErrorView.swift; path = PKHUD/PKHUDErrorView.swift; sourceTree = ""; };
+ 219BF8BC523FC0BBB9FF08C2E2FF3EBB /* PKHUDWideBaseView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDWideBaseView.swift; path = PKHUD/PKHUDWideBaseView.swift; sourceTree = ""; };
+ 241D81360E597CE77FCAA235DD28ED95 /* PKHUD.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PKHUD.framework; path = PKHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 26732DDAB7723808E07023DA9DD3FF4A /* Pods-Pixelizator.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Pixelizator.modulemap"; sourceTree = ""; };
+ 2D75D2643D35302026B8EFAE76A451CE /* PKHUDAssets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDAssets.swift; path = PKHUD/PKHUDAssets.swift; sourceTree = ""; };
+ 32B4DE115F12120303243790CE7D5A6F /* PKHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PKHUD.h; path = PKHUD/PKHUD.h; sourceTree = ""; };
+ 3633E6C374BBC4E0C024A93C6A3EC17D /* PKHUDAnimating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDAnimating.swift; path = PKHUD/PKHUDAnimating.swift; sourceTree = ""; };
+ 3FD4C222B1512E10D66B71D33C1E9BF6 /* PKHUDSystemActivityIndicatorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDSystemActivityIndicatorView.swift; path = PKHUD/PKHUDSystemActivityIndicatorView.swift; sourceTree = ""; };
+ 402A987A721FCE8FFC74F986189A2729 /* PKHUDResources.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = PKHUDResources.bundle; path = "PKHUD-PKHUDResources.bundle"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5785865CCFF4E38FCCE076495BB1B21B /* Pods-Pixelizator.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Pixelizator.debug.xcconfig"; sourceTree = ""; };
+ 599BE3BB9CB64016F009C3EC420B60D7 /* Pods-Pixelizator-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Pixelizator-umbrella.h"; sourceTree = ""; };
+ 6166C134A01C1172D76E70C7DBD7B8D7 /* PKHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PKHUD-dummy.m"; sourceTree = ""; };
+ 6B9E7ED7713F482171DE871FB745B3A6 /* PKHUDTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDTextView.swift; path = PKHUD/PKHUDTextView.swift; sourceTree = ""; };
+ 89A84CD2BEF7BC76D5CD5BDB5F3E1E08 /* Pods_Pixelizator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Pixelizator.framework; path = "Pods-Pixelizator.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ A3A2F8D29AF0CDA12C644DD77BBE8282 /* PKHUDProgressView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDProgressView.swift; path = PKHUD/PKHUDProgressView.swift; sourceTree = ""; };
+ A6FB3CF4BC1F4554FD9D5141F34743B2 /* PKHUDSuccessView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDSuccessView.swift; path = PKHUD/PKHUDSuccessView.swift; sourceTree = ""; };
+ A7F7B43524F6C718FA39DA853DF0D6E4 /* Window.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Window.swift; path = PKHUD/Window.swift; sourceTree = ""; };
+ B0756CC81564C17261315772FAAF1BB3 /* PKHUD.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PKHUD.xcconfig; sourceTree = ""; };
+ B1715B2C565271AC6956E814ED879979 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B61416FD71796BABD9B4C1FA7E227131 /* Pods-Pixelizator-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Pixelizator-resources.sh"; sourceTree = ""; };
+ BBA37A124C71DE6F0602CD283CC93DF1 /* Images.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = PKHUD/Images.xcassets; sourceTree = ""; };
+ BF22A71B42526D0A303F8DE7A72B1675 /* FrameView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FrameView.swift; path = PKHUD/FrameView.swift; sourceTree = ""; };
+ BF94861B5E5BCDEA9026C7C6079D4ED0 /* PKHUDSquareBaseView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDSquareBaseView.swift; path = PKHUD/PKHUDSquareBaseView.swift; sourceTree = ""; };
+ C122D007C9A46B99B23F71EA98F9DD66 /* Pods-Pixelizator-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Pixelizator-frameworks.sh"; sourceTree = ""; };
+ C2C68A82099E7332F81778E159BB01AF /* PKHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PKHUD.modulemap; sourceTree = ""; };
+ C5B40C8D7C066CBEFCE66ADBD6511407 /* PKHUDRotatingImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUDRotatingImageView.swift; path = PKHUD/PKHUDRotatingImageView.swift; sourceTree = ""; };
+ CF555150DF69BFAFDA4B9F19DB9727B0 /* Pods-Pixelizator-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Pixelizator-acknowledgements.plist"; sourceTree = ""; };
+ D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
+ D77728B7E1138CEE2E75BBCCF377F04F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ DF5AF37EE62F6AE5EE1E43713EEA3627 /* PKHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PKHUD-umbrella.h"; sourceTree = ""; };
+ E67B88BCFA832F11944EE1F2690409CF /* Pods-Pixelizator.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Pixelizator.release.xcconfig"; sourceTree = ""; };
+ E9BF9FDD75E98623FBCAD19ECDB328D3 /* PKHUD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKHUD.swift; path = PKHUD/PKHUD.swift; sourceTree = ""; };
+ F2D1D6EA19C8357797ADE8A2D291AF55 /* HUD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HUD.swift; path = PKHUD/HUD.swift; sourceTree = ""; };
+ F37DDFE8428D035E0A58ED68B733547F /* Pods-Pixelizator-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Pixelizator-acknowledgements.markdown"; sourceTree = ""; };
+ F788E0337901DF957D8214A258BD67FF /* ResourceBundle-PKHUDResources-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-PKHUDResources-Info.plist"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 3C3A17705631D41E5B336B63B7938FA9 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 041A319F313FA03C9AECBD23F4A41676 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3E5922D0EFAF0FA0ADF29F144C46CA90 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 897E572CF7EAAB73AA6AB472CFF35C05 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FA62ABB802391986FD5254C46A96CC16 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 25A235A7D73D5998A07DE69E73BFDFE9 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ BBA37A124C71DE6F0602CD283CC93DF1 /* Images.xcassets */,
+ );
+ name = Resources;
+ sourceTree = "";
+ };
+ 41967F7511FB6A6CF6E6732B8D30697B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 241D81360E597CE77FCAA235DD28ED95 /* PKHUD.framework */,
+ 402A987A721FCE8FFC74F986189A2729 /* PKHUDResources.bundle */,
+ 89A84CD2BEF7BC76D5CD5BDB5F3E1E08 /* Pods_Pixelizator.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 44D5347904CF754D6785B84253F2574A /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */,
+ );
+ name = iOS;
+ sourceTree = "";
+ };
+ 7DB346D0F39D3F0E887471402A8071AB = {
+ isa = PBXGroup;
+ children = (
+ 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,
+ BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */,
+ 88E8EC96368FBD710C9483099BB42271 /* Pods */,
+ 41967F7511FB6A6CF6E6732B8D30697B /* Products */,
+ 983095AF2C7D5927DF3E8ACD050B79D9 /* Targets Support Files */,
+ );
+ sourceTree = "";
+ };
+ 88E8EC96368FBD710C9483099BB42271 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ BEEBCB5A1B246F87FBCA51DFE83672A7 /* PKHUD */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ 983095AF2C7D5927DF3E8ACD050B79D9 /* Targets Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ D141BF46136ADC8770B043B733F3E03F /* Pods-Pixelizator */,
+ );
+ name = "Targets Support Files";
+ sourceTree = "";
+ };
+ AA1284359054FA444B551A50358B37DE /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ D77728B7E1138CEE2E75BBCCF377F04F /* Info.plist */,
+ C2C68A82099E7332F81778E159BB01AF /* PKHUD.modulemap */,
+ B0756CC81564C17261315772FAAF1BB3 /* PKHUD.xcconfig */,
+ 6166C134A01C1172D76E70C7DBD7B8D7 /* PKHUD-dummy.m */,
+ 0DE02BFAE8E42FC85C2052D3939B51F6 /* PKHUD-prefix.pch */,
+ DF5AF37EE62F6AE5EE1E43713EEA3627 /* PKHUD-umbrella.h */,
+ F788E0337901DF957D8214A258BD67FF /* ResourceBundle-PKHUDResources-Info.plist */,
+ );
+ name = "Support Files";
+ path = "../Target Support Files/PKHUD";
+ sourceTree = "";
+ };
+ BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 44D5347904CF754D6785B84253F2574A /* iOS */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ BEEBCB5A1B246F87FBCA51DFE83672A7 /* PKHUD */ = {
+ isa = PBXGroup;
+ children = (
+ BF22A71B42526D0A303F8DE7A72B1675 /* FrameView.swift */,
+ F2D1D6EA19C8357797ADE8A2D291AF55 /* HUD.swift */,
+ 32B4DE115F12120303243790CE7D5A6F /* PKHUD.h */,
+ E9BF9FDD75E98623FBCAD19ECDB328D3 /* PKHUD.swift */,
+ 3633E6C374BBC4E0C024A93C6A3EC17D /* PKHUDAnimating.swift */,
+ 0607033B6E9F75F8888CE2D87AC710C0 /* PKHUDAnimation.swift */,
+ 2D75D2643D35302026B8EFAE76A451CE /* PKHUDAssets.swift */,
+ 1164433BE2043A986C1BE946598AE00A /* PKHUDErrorView.swift */,
+ A3A2F8D29AF0CDA12C644DD77BBE8282 /* PKHUDProgressView.swift */,
+ C5B40C8D7C066CBEFCE66ADBD6511407 /* PKHUDRotatingImageView.swift */,
+ BF94861B5E5BCDEA9026C7C6079D4ED0 /* PKHUDSquareBaseView.swift */,
+ A6FB3CF4BC1F4554FD9D5141F34743B2 /* PKHUDSuccessView.swift */,
+ 3FD4C222B1512E10D66B71D33C1E9BF6 /* PKHUDSystemActivityIndicatorView.swift */,
+ 6B9E7ED7713F482171DE871FB745B3A6 /* PKHUDTextView.swift */,
+ 219BF8BC523FC0BBB9FF08C2E2FF3EBB /* PKHUDWideBaseView.swift */,
+ A7F7B43524F6C718FA39DA853DF0D6E4 /* Window.swift */,
+ 0A2FAAEEC5419B27F1BF303DDAE05490 /* WindowRootViewController.swift */,
+ 25A235A7D73D5998A07DE69E73BFDFE9 /* Resources */,
+ AA1284359054FA444B551A50358B37DE /* Support Files */,
+ );
+ name = PKHUD;
+ path = PKHUD;
+ sourceTree = "";
+ };
+ D141BF46136ADC8770B043B733F3E03F /* Pods-Pixelizator */ = {
+ isa = PBXGroup;
+ children = (
+ B1715B2C565271AC6956E814ED879979 /* Info.plist */,
+ 26732DDAB7723808E07023DA9DD3FF4A /* Pods-Pixelizator.modulemap */,
+ F37DDFE8428D035E0A58ED68B733547F /* Pods-Pixelizator-acknowledgements.markdown */,
+ CF555150DF69BFAFDA4B9F19DB9727B0 /* Pods-Pixelizator-acknowledgements.plist */,
+ 0D4140CE33F9E6339E21DDAFECCBE3D9 /* Pods-Pixelizator-dummy.m */,
+ C122D007C9A46B99B23F71EA98F9DD66 /* Pods-Pixelizator-frameworks.sh */,
+ B61416FD71796BABD9B4C1FA7E227131 /* Pods-Pixelizator-resources.sh */,
+ 599BE3BB9CB64016F009C3EC420B60D7 /* Pods-Pixelizator-umbrella.h */,
+ 5785865CCFF4E38FCCE076495BB1B21B /* Pods-Pixelizator.debug.xcconfig */,
+ E67B88BCFA832F11944EE1F2690409CF /* Pods-Pixelizator.release.xcconfig */,
+ );
+ name = "Pods-Pixelizator";
+ path = "Target Support Files/Pods-Pixelizator";
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 46D5972DE07B4B80CB6237E0A8864BA1 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0F4DD3C94E4DF364C580CCA89D9C2415 /* PKHUD-umbrella.h in Headers */,
+ 7E49EB565118F1F3A231528110A1FF5F /* PKHUD.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 59D8D75FA84B97A404550BF5BDBAEC22 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 4D8650E0675A910371A5ACDA54942B38 /* Pods-Pixelizator-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 0422742DF5CC42F97485A5A4607BBEE9 /* PKHUD */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6F3745AF89B93F23E8A26CA404655A54 /* Build configuration list for PBXNativeTarget "PKHUD" */;
+ buildPhases = (
+ 46D5972DE07B4B80CB6237E0A8864BA1 /* Headers */,
+ 4475B13BB559D6E38EFC0C3B6E0DFB2E /* Sources */,
+ 3C3A17705631D41E5B336B63B7938FA9 /* Frameworks */,
+ 24D8FE0F203AF51C109E11B445C23B82 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 08CE7830C1B53D424111C0E1C7BECDA6 /* PBXTargetDependency */,
+ );
+ name = PKHUD;
+ productName = PKHUD;
+ productReference = 241D81360E597CE77FCAA235DD28ED95 /* PKHUD.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ 4C3315A1ABAE8BC33824D088C610C951 /* PKHUD-PKHUDResources */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5C15B5AB1F9207DB439180AE3C39F2C0 /* Build configuration list for PBXNativeTarget "PKHUD-PKHUDResources" */;
+ buildPhases = (
+ 0DBDAD36350E4197D78E2E1F0A787823 /* Sources */,
+ FA62ABB802391986FD5254C46A96CC16 /* Frameworks */,
+ 02240CBC53F5A9C7D71BDF1AF7D9F620 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "PKHUD-PKHUDResources";
+ productName = "PKHUD-PKHUDResources";
+ productReference = 402A987A721FCE8FFC74F986189A2729 /* PKHUDResources.bundle */;
+ productType = "com.apple.product-type.bundle";
+ };
+ F659EB90888CED233C21624289CD4C75 /* Pods-Pixelizator */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = BD6040B67723F2E8CDAEAC5735EDB8E6 /* Build configuration list for PBXNativeTarget "Pods-Pixelizator" */;
+ buildPhases = (
+ 59D8D75FA84B97A404550BF5BDBAEC22 /* Headers */,
+ E7A3E47902965533C8472D59154C237D /* Sources */,
+ 3E5922D0EFAF0FA0ADF29F144C46CA90 /* Frameworks */,
+ 058300B2A1D313FA456D2BE40DD42D45 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 9493F2A6259B5462456786F9883E8FD3 /* PBXTargetDependency */,
+ );
+ name = "Pods-Pixelizator";
+ productName = "Pods-Pixelizator";
+ productReference = 89A84CD2BEF7BC76D5CD5BDB5F3E1E08 /* Pods_Pixelizator.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0930;
+ LastUpgradeCheck = 0930;
+ };
+ buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = 7DB346D0F39D3F0E887471402A8071AB;
+ productRefGroup = 41967F7511FB6A6CF6E6732B8D30697B /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 0422742DF5CC42F97485A5A4607BBEE9 /* PKHUD */,
+ 4C3315A1ABAE8BC33824D088C610C951 /* PKHUD-PKHUDResources */,
+ F659EB90888CED233C21624289CD4C75 /* Pods-Pixelizator */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 02240CBC53F5A9C7D71BDF1AF7D9F620 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C16DB56D2D110826C502A4DFF6A6F0D3 /* Images.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 058300B2A1D313FA456D2BE40DD42D45 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 24D8FE0F203AF51C109E11B445C23B82 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 9967627CA12A571655D6F64ECD4688B3 /* PKHUDResources.bundle in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 0DBDAD36350E4197D78E2E1F0A787823 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 4475B13BB559D6E38EFC0C3B6E0DFB2E /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 584DA6928D93CB8AA7DDDEB67FF8FE5C /* FrameView.swift in Sources */,
+ 99D620F94B0CD9C041635D559BD81B4A /* HUD.swift in Sources */,
+ F9718DA2D558B553E75E2031B94D55D8 /* PKHUD-dummy.m in Sources */,
+ 7187B4DDEF3EF96F0E6983A9A0AEE61E /* PKHUD.swift in Sources */,
+ 78B029B6D7F554212B95F64F80CDEC33 /* PKHUDAnimating.swift in Sources */,
+ 3BC5BD0252DA8DA05906C5D590C834C9 /* PKHUDAnimation.swift in Sources */,
+ 8C4D24A5AC87E30A33214EA4E7FA359B /* PKHUDAssets.swift in Sources */,
+ 4FC4DA714B42350BC08EA10BD54A38AE /* PKHUDErrorView.swift in Sources */,
+ F51584A61D18FFFF50A115D6351EB91C /* PKHUDProgressView.swift in Sources */,
+ 0C2767249291A4A1505A28CFC9498026 /* PKHUDRotatingImageView.swift in Sources */,
+ 0AD7956E61AD5EF273B31E3878B480F9 /* PKHUDSquareBaseView.swift in Sources */,
+ 6384CC7276BF926A6E48E96AA10EFC1A /* PKHUDSuccessView.swift in Sources */,
+ 695A4D580E443E5DE0356968CCC393CD /* PKHUDSystemActivityIndicatorView.swift in Sources */,
+ ECB37571500A625742833F6EDD1CE4E1 /* PKHUDTextView.swift in Sources */,
+ 9A1224693C7C3574E4A517844399E668 /* PKHUDWideBaseView.swift in Sources */,
+ EC093FB80F3090C6B466C94280790C23 /* Window.swift in Sources */,
+ 8E945BA2AB75EB4A3E0B0E66CAB5D17C /* WindowRootViewController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ E7A3E47902965533C8472D59154C237D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3F6232073AB7C98C232EF26093587FAD /* Pods-Pixelizator-dummy.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 08CE7830C1B53D424111C0E1C7BECDA6 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "PKHUD-PKHUDResources";
+ target = 4C3315A1ABAE8BC33824D088C610C951 /* PKHUD-PKHUDResources */;
+ targetProxy = E0883D7F7AB2ACD8990E5C3D4857446A /* PBXContainerItemProxy */;
+ };
+ 9493F2A6259B5462456786F9883E8FD3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = PKHUD;
+ target = 0422742DF5CC42F97485A5A4607BBEE9 /* PKHUD */;
+ targetProxy = 56890D86243926CBCF03222DAFFA7D93 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 0BEAE452BF3F56BA3D3196B403CB2355 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B0756CC81564C17261315772FAAF1BB3 /* PKHUD.xcconfig */;
+ buildSettings = {
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/PKHUD";
+ INFOPLIST_FILE = "Target Support Files/PKHUD/ResourceBundle-PKHUDResources-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ PRODUCT_NAME = PKHUDResources;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Release;
+ };
+ 734A472121F9303C9EB01B8AA6C4439C /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B0756CC81564C17261315772FAAF1BB3 /* PKHUD.xcconfig */;
+ buildSettings = {
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/PKHUD";
+ INFOPLIST_FILE = "Target Support Files/PKHUD/ResourceBundle-PKHUDResources-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ PRODUCT_NAME = PKHUDResources;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Debug;
+ };
+ 807C1496BB847B006E1CF40B4DB9D94C /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E67B88BCFA832F11944EE1F2690409CF /* Pods-Pixelizator.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CODE_SIGN_IDENTITY = "";
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = "Target Support Files/Pods-Pixelizator/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 10.3;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ MODULEMAP_FILE = "Target Support Files/Pods-Pixelizator/Pods-Pixelizator.modulemap";
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ BAC531930CCC6C0FE56A1DF2A7AD6EE1 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5785865CCFF4E38FCCE076495BB1B21B /* Pods-Pixelizator.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CODE_SIGN_IDENTITY = "";
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = "Target Support Files/Pods-Pixelizator/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 10.3;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ MODULEMAP_FILE = "Target Support Files/Pods-Pixelizator/Pods-Pixelizator.modulemap";
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ BB044C4AFAC2A37F66D023639C0B5841 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_REQUIRED = NO;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "POD_CONFIGURATION_DEBUG=1",
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.3;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ STRIP_INSTALLED_PRODUCT = NO;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 4.2;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Debug;
+ };
+ C8F6AD84CD9EBD21EE14F83C2F3C21E0 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_REQUIRED = NO;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "POD_CONFIGURATION_RELEASE=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.3;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ STRIP_INSTALLED_PRODUCT = NO;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 4.2;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Release;
+ };
+ E8DA8368425C4B13249EC4DA006DB0CD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B0756CC81564C17261315772FAAF1BB3 /* PKHUD.xcconfig */;
+ buildSettings = {
+ CODE_SIGN_IDENTITY = "";
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_PREFIX_HEADER = "Target Support Files/PKHUD/PKHUD-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/PKHUD/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MODULEMAP_FILE = "Target Support Files/PKHUD/PKHUD.modulemap";
+ PRODUCT_MODULE_NAME = PKHUD;
+ PRODUCT_NAME = PKHUD;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ F64093E6B831B0858C226F98042BDFED /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B0756CC81564C17261315772FAAF1BB3 /* PKHUD.xcconfig */;
+ buildSettings = {
+ CODE_SIGN_IDENTITY = "";
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_PREFIX_HEADER = "Target Support Files/PKHUD/PKHUD-prefix.pch";
+ INFOPLIST_FILE = "Target Support Files/PKHUD/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MODULEMAP_FILE = "Target Support Files/PKHUD/PKHUD.modulemap";
+ PRODUCT_MODULE_NAME = PKHUD;
+ PRODUCT_NAME = PKHUD;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ BB044C4AFAC2A37F66D023639C0B5841 /* Debug */,
+ C8F6AD84CD9EBD21EE14F83C2F3C21E0 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 5C15B5AB1F9207DB439180AE3C39F2C0 /* Build configuration list for PBXNativeTarget "PKHUD-PKHUDResources" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 734A472121F9303C9EB01B8AA6C4439C /* Debug */,
+ 0BEAE452BF3F56BA3D3196B403CB2355 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6F3745AF89B93F23E8A26CA404655A54 /* Build configuration list for PBXNativeTarget "PKHUD" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ E8DA8368425C4B13249EC4DA006DB0CD /* Debug */,
+ F64093E6B831B0858C226F98042BDFED /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ BD6040B67723F2E8CDAEAC5735EDB8E6 /* Build configuration list for PBXNativeTarget "Pods-Pixelizator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ BAC531930CCC6C0FE56A1DF2A7AD6EE1 /* Debug */,
+ 807C1496BB847B006E1CF40B4DB9D94C /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+}
diff --git a/swift/Pixelizator/Pods/Target Support Files/PKHUD/Info.plist b/swift/Pixelizator/Pods/Target Support Files/PKHUD/Info.plist
new file mode 100644
index 0000000..82c355f
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/PKHUD/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 5.2.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-dummy.m b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-dummy.m
new file mode 100644
index 0000000..7003310
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_PKHUD : NSObject
+@end
+@implementation PodsDummy_PKHUD
+@end
diff --git a/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-prefix.pch b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-prefix.pch
new file mode 100644
index 0000000..beb2a24
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-prefix.pch
@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
diff --git a/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-umbrella.h b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-umbrella.h
new file mode 100644
index 0000000..83b88bf
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD-umbrella.h
@@ -0,0 +1,17 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+#import "PKHUD.h"
+
+FOUNDATION_EXPORT double PKHUDVersionNumber;
+FOUNDATION_EXPORT const unsigned char PKHUDVersionString[];
+
diff --git a/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD.modulemap b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD.modulemap
new file mode 100644
index 0000000..baceebb
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD.modulemap
@@ -0,0 +1,6 @@
+framework module PKHUD {
+ umbrella header "PKHUD-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD.xcconfig b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD.xcconfig
new file mode 100644
index 0000000..f946458
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/PKHUD/PKHUD.xcconfig
@@ -0,0 +1,9 @@
+CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PKHUD
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
+PODS_BUILD_DIR = ${BUILD_DIR}
+PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
+PODS_ROOT = ${SRCROOT}
+PODS_TARGET_SRCROOT = ${PODS_ROOT}/PKHUD
+PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
+SKIP_INSTALL = YES
diff --git a/swift/Pixelizator/Pods/Target Support Files/PKHUD/ResourceBundle-PKHUDResources-Info.plist b/swift/Pixelizator/Pods/Target Support Files/PKHUD/ResourceBundle-PKHUDResources-Info.plist
new file mode 100644
index 0000000..87c9e38
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/PKHUD/ResourceBundle-PKHUDResources-Info.plist
@@ -0,0 +1,24 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 5.2.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ NSPrincipalClass
+
+
+
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Info.plist b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Info.plist
new file mode 100644
index 0000000..2243fe6
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-acknowledgements.markdown b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-acknowledgements.markdown
new file mode 100644
index 0000000..f7f4b09
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-acknowledgements.markdown
@@ -0,0 +1,27 @@
+# Acknowledgements
+This application makes use of the following third party libraries:
+
+## PKHUD
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Philip Kluz (Philip.Kluz@gmail.com)
+
+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:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+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.
+Generated by CocoaPods - https://cocoapods.org
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-acknowledgements.plist b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-acknowledgements.plist
new file mode 100644
index 0000000..a044187
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-acknowledgements.plist
@@ -0,0 +1,59 @@
+
+
+
+
+ PreferenceSpecifiers
+
+
+ FooterText
+ This application makes use of the following third party libraries:
+ Title
+ Acknowledgements
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ The MIT License (MIT)
+
+Copyright (c) 2014 Philip Kluz (Philip.Kluz@gmail.com)
+
+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:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+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.
+ License
+ MIT
+ Title
+ PKHUD
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Generated by CocoaPods - https://cocoapods.org
+ Title
+
+ Type
+ PSGroupSpecifier
+
+
+ StringsTable
+ Acknowledgements
+ Title
+ Acknowledgements
+
+
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-dummy.m b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-dummy.m
new file mode 100644
index 0000000..510d1fe
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_Pixelizator : NSObject
+@end
+@implementation PodsDummy_Pods_Pixelizator
+@end
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-frameworks.sh b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-frameworks.sh
new file mode 100755
index 0000000..f5c8dfd
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-frameworks.sh
@@ -0,0 +1,153 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
+ # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # frameworks to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
+SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
+
+# Used as a return value for each invocation of `strip_invalid_archs` function.
+STRIP_BINARY_RETVAL=0
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+# Copies and strips a vendored framework
+install_framework()
+{
+ if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$1"
+ elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
+ elif [ -r "$1" ]; then
+ local source="$1"
+ fi
+
+ local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+ if [ -L "${source}" ]; then
+ echo "Symlinked..."
+ source="$(readlink "${source}")"
+ fi
+
+ # Use filter instead of exclude so missing patterns don't throw errors.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
+
+ local basename
+ basename="$(basename -s .framework "$1")"
+ binary="${destination}/${basename}.framework/${basename}"
+ if ! [ -r "$binary" ]; then
+ binary="${destination}/${basename}"
+ fi
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ # Resign the code if required by the build settings to avoid unstable apps
+ code_sign_if_enabled "${destination}/$(basename "$1")"
+
+ # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
+ if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
+ local swift_runtime_libs
+ swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
+ for lib in $swift_runtime_libs; do
+ echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
+ rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
+ code_sign_if_enabled "${destination}/${lib}"
+ done
+ fi
+}
+
+# Copies and strips a vendored dSYM
+install_dsym() {
+ local source="$1"
+ if [ -r "$source" ]; then
+ # Copy the dSYM into a the targets temp dir.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
+
+ local basename
+ basename="$(basename -s .framework.dSYM "$source")"
+ binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
+ # Move the stripped file into its final destination.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
+ else
+ # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
+ touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
+ fi
+ fi
+}
+
+# Signs a framework with the provided identity
+code_sign_if_enabled() {
+ if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
+ # Use the current code_sign_identitiy
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
+
+ if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ code_sign_cmd="$code_sign_cmd &"
+ fi
+ echo "$code_sign_cmd"
+ eval "$code_sign_cmd"
+ fi
+}
+
+# Strip invalid architectures
+strip_invalid_archs() {
+ binary="$1"
+ # Get architectures for current target binary
+ binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
+ # Intersect them with the architectures we are building for
+ intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
+ # If there are no archs supported by this binary then warn the user
+ if [[ -z "$intersected_archs" ]]; then
+ echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
+ STRIP_BINARY_RETVAL=0
+ return
+ fi
+ stripped=""
+ for arch in $binary_archs; do
+ if ! [[ "${ARCHS}" == *"$arch"* ]]; then
+ # Strip non-valid architectures in-place
+ lipo -remove "$arch" -output "$binary" "$binary" || exit 1
+ stripped="$stripped $arch"
+ fi
+ done
+ if [[ "$stripped" ]]; then
+ echo "Stripped $binary of architectures:$stripped"
+ fi
+ STRIP_BINARY_RETVAL=1
+}
+
+
+if [[ "$CONFIGURATION" == "Debug" ]]; then
+ install_framework "${BUILT_PRODUCTS_DIR}/PKHUD/PKHUD.framework"
+fi
+if [[ "$CONFIGURATION" == "Release" ]]; then
+ install_framework "${BUILT_PRODUCTS_DIR}/PKHUD/PKHUD.framework"
+fi
+if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ wait
+fi
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-resources.sh b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-resources.sh
new file mode 100755
index 0000000..345301f
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-resources.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
+ # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # resources to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+case "${TARGETED_DEVICE_FAMILY:-}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ 3)
+ TARGET_DEVICE_ARGS="--target-device tv"
+ ;;
+ 4)
+ TARGET_DEVICE_ARGS="--target-device watch"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+esac
+
+install_resource()
+{
+ if [[ "$1" = /* ]] ; then
+ RESOURCE_PATH="$1"
+ else
+ RESOURCE_PATH="${PODS_ROOT}/$1"
+ fi
+ if [[ ! -e "$RESOURCE_PATH" ]] ; then
+ cat << EOM
+error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
+EOM
+ exit 1
+ fi
+ case $RESOURCE_PATH in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.framework)
+ echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
+ xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ *)
+ echo "$RESOURCE_PATH" || true
+ echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
+then
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "${PODS_ROOT}*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ else
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
+ fi
+fi
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-umbrella.h b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-umbrella.h
new file mode 100644
index 0000000..4de0a51
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double Pods_PixelizatorVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_PixelizatorVersionString[];
+
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.debug.xcconfig b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.debug.xcconfig
new file mode 100644
index 0000000..a297d0b
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.debug.xcconfig
@@ -0,0 +1,11 @@
+ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD"
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
+OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD/PKHUD.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -framework "PKHUD"
+OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
+PODS_BUILD_DIR = ${BUILD_DIR}
+PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
+PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
+PODS_ROOT = ${SRCROOT}/Pods
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.modulemap b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.modulemap
new file mode 100644
index 0000000..6e7edb2
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_Pixelizator {
+ umbrella header "Pods-Pixelizator-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.release.xcconfig b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.release.xcconfig
new file mode 100644
index 0000000..a297d0b
--- /dev/null
+++ b/swift/Pixelizator/Pods/Target Support Files/Pods-Pixelizator/Pods-Pixelizator.release.xcconfig
@@ -0,0 +1,11 @@
+ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD"
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
+OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD/PKHUD.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -framework "PKHUD"
+OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
+PODS_BUILD_DIR = ${BUILD_DIR}
+PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
+PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
+PODS_ROOT = ${SRCROOT}/Pods