├── .gitignore
├── LICENSE
├── Podfile
├── Podfile.lock
├── README.md
├── Screen Ruler.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcshareddata
│ └── xcschemes
│ └── ScreenRuler.xcscheme
├── Screen Ruler.xcworkspace
└── contents.xcworkspacedata
└── ScreenRuler
├── AppDelegate
├── AppDelegate.h
└── AppDelegate.m
├── AssetsAndResources
├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-60.png
│ │ ├── Icon-60@2x.png
│ │ ├── Icon-60@3x.png
│ │ ├── Icon-76.png
│ │ ├── Icon-76@2x.png
│ │ ├── Icon-Small.png
│ │ ├── Icon-Small@2x-1.png
│ │ ├── Icon-Small@2x.png
│ │ ├── Icon-Small@3x.png
│ │ ├── Icon-Spotlight-40.png
│ │ ├── Icon-Spotlight-40@2x-1.png
│ │ ├── Icon-Spotlight-40@2x.png
│ │ ├── Icon-Spotlight-40@3x.png
│ │ ├── Icon-Spotlight-41.png
│ │ ├── Icon-Spotlight-42.png
│ │ ├── Icon-Spotlight-43.png
│ │ └── Icon-iPadPro@2x.png
│ ├── Arrow Icons
│ │ ├── Contents.json
│ │ ├── arrow-down.imageset
│ │ │ ├── Contents.json
│ │ │ ├── arrow-down@2x.png
│ │ │ └── arrow-down@3x.png
│ │ ├── arrow-left.imageset
│ │ │ ├── Contents.json
│ │ │ ├── arrow-left@2x.png
│ │ │ └── arrow-left@3x.png
│ │ ├── arrow-right.imageset
│ │ │ ├── Contents.json
│ │ │ ├── arrow-right@2x.png
│ │ │ └── arrow-right@3x.png
│ │ └── arrow-top.imageset
│ │ │ ├── Contents.json
│ │ │ ├── arrow-top@2x.png
│ │ │ └── arrow-top@3x.png
│ ├── Brand Assets.launchimage
│ │ ├── Contents.json
│ │ ├── Default@2x.png
│ │ ├── Default~568h@2x.png
│ │ ├── Default~667h@2x.png
│ │ ├── Default~736h@2x.png
│ │ ├── Default~736w@2x.png
│ │ ├── Default~iPad.png
│ │ ├── Default~iPad@2x.png
│ │ ├── Default~iPad~w@2x.png
│ │ └── Default~iPad~width.png
│ ├── Contents.json
│ ├── Features
│ │ ├── Contents.json
│ │ ├── color_palette.imageset
│ │ │ ├── Contents.json
│ │ │ ├── color_palette@2x.png
│ │ │ └── color_palette@3x.png
│ │ ├── crop.imageset
│ │ │ ├── Contents.json
│ │ │ ├── crop@2x.png
│ │ │ └── crop@3x.png
│ │ ├── edit.imageset
│ │ │ ├── Contents.json
│ │ │ ├── edit@2x.png
│ │ │ └── edit@3x.png
│ │ ├── horizontal_ruler.imageset
│ │ │ ├── Contents.json
│ │ │ ├── horizontal_ruler@2x.png
│ │ │ └── horizontal_ruler@3x.png
│ │ ├── line_frame.imageset
│ │ │ ├── Contents.json
│ │ │ ├── line_frame@2x.png
│ │ │ └── line_frame@3x.png
│ │ ├── protractor.imageset
│ │ │ ├── Contents.json
│ │ │ ├── protractor@2x.png
│ │ │ └── protractor@3x.png
│ │ ├── ratio.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ratio@2x.png
│ │ │ └── ratio@3x.png
│ │ ├── resize.imageset
│ │ │ ├── Contents.json
│ │ │ ├── resize@2x.png
│ │ │ └── resize@3x.png
│ │ ├── rotate.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rotate@2x.png
│ │ │ └── rotate@3x.png
│ │ └── vertical_ruler.imageset
│ │ │ ├── Contents.json
│ │ │ ├── vertical_ruler@2x.png
│ │ │ └── vertical_ruler@3x.png
│ ├── Gestures
│ │ ├── Contents.json
│ │ ├── DoubleTap.imageset
│ │ │ ├── Contents.json
│ │ │ └── DoubleTap.png
│ │ ├── Pinch.imageset
│ │ │ ├── Contents.json
│ │ │ └── Pinch.png
│ │ ├── Press-and-Drag.imageset
│ │ │ ├── Contents.json
│ │ │ └── Press-and-Drag.png
│ │ ├── Press.imageset
│ │ │ ├── Contents.json
│ │ │ └── Press.png
│ │ ├── Rotate.imageset
│ │ │ ├── Contents.json
│ │ │ └── Rotate.png
│ │ ├── Scroll-Horizontal.imageset
│ │ │ ├── Contents.json
│ │ │ └── Scroll-Horizontal.png
│ │ ├── Scroll-Vertical.imageset
│ │ │ ├── Contents.json
│ │ │ └── Scroll-Vertical.png
│ │ ├── Tap.imageset
│ │ │ ├── Contents.json
│ │ │ └── Tap.png
│ │ └── Zoom.imageset
│ │ │ ├── Contents.json
│ │ │ └── Zoom.png
│ ├── GitHub-Mark.imageset
│ │ ├── Contents.json
│ │ ├── GitHub-Mark@2x.png
│ │ └── GitHub-Mark@3x.png
│ ├── iPhone-sceenshot.imageset
│ │ ├── Contents.json
│ │ ├── iPhone-sceenshot@2x.png
│ │ └── iPhone-sceenshot@3x.png
│ ├── option.imageset
│ │ ├── Contents.json
│ │ ├── option@2x.png
│ │ └── option@3x.png
│ ├── photo_access.imageset
│ │ ├── Contents.json
│ │ ├── photo_access@2x.png
│ │ └── photo_access@3x.png
│ ├── photo_library.imageset
│ │ ├── Contents.json
│ │ ├── photo_library@2x.png
│ │ └── photo_library@3x.png
│ ├── ruler_logo.imageset
│ │ ├── Contents.json
│ │ ├── ruler_logo@2x.png
│ │ └── ruler_logo@3x.png
│ └── settings.imageset
│ │ ├── Contents.json
│ │ ├── settings@2x.png
│ │ └── settings@3x.png
├── Icon-60.png
├── iTunesArtwork
└── iTunesArtwork@2x
├── Base.lproj
├── InfoPlist.strings
├── LaunchScreen.storyboard
├── Localizable.strings
└── Main.storyboard
├── Categories
├── UIColor+ThemeColor.h
├── UIColor+ThemeColor.m
├── UIFont+AppFont.h
├── UIFont+AppFont.m
├── UIImage+Color.h
└── UIImage+Color.m
├── Info.plist
├── Other
├── RoundedCornerView.h
├── RoundedCornerView.m
├── SRIconsGeneratorViewController.h
└── SRIconsGeneratorViewController.m
├── Subclasses
├── SRImagePickerController.h
├── SRImagePickerController.m
├── SRNavigationBar.h
├── SRNavigationBar.m
├── SRNavigationController.h
├── SRNavigationController.m
├── SRToolbar.h
├── SRToolbar.m
├── SRToolbarButton.h
└── SRToolbarButton.m
├── Vendor
├── ACMagnifyingGlass
│ ├── ACMagnifyingGlass.h
│ ├── ACMagnifyingGlass.m
│ └── Resources
│ │ └── kb-loupe-hi_7.png
├── Classes
│ ├── CBZRasterSplashView.h
│ ├── CBZRasterSplashView.m
│ ├── CBZSplashView.h
│ ├── CBZSplashView.m
│ ├── CBZVectorSplashView.h
│ ├── CBZVectorSplashView.m
│ ├── UIBezierPath+Shapes.h
│ └── UIBezierPath+Shapes.m
├── DebugHelper
│ ├── SRDebugHelper.h
│ └── SRDebugHelper.m
├── IQAngleView
│ ├── IQAngleView.h
│ ├── IQAngleView.m
│ ├── IQProtractorView.h
│ └── IQProtractorView.m
├── IQColorPicker
│ ├── HFColorPicker
│ │ ├── HFColorButton.h
│ │ ├── HFColorButton.m
│ │ ├── HFColorPickerView.h
│ │ └── HFColorPickerView.m
│ ├── IQColorPickerButton.h
│ ├── IQColorPickerButton.m
│ ├── IQTextPickerButton.h
│ ├── IQTextPickerButton.m
│ ├── UIColor+HexColors.h
│ └── UIColor+HexColors.m
├── IQCropperView
│ ├── IQCropperView.h
│ ├── IQCropperView.m
│ ├── UIImage+CropRotate.h
│ └── UIImage+CropRotate.m
├── IQGeometry
│ ├── IQGeometry+AffineTransform.h
│ ├── IQGeometry+AffineTransform.m
│ ├── IQGeometry+Angle.h
│ ├── IQGeometry+Angle.m
│ ├── IQGeometry+Distance.h
│ ├── IQGeometry+Distance.m
│ ├── IQGeometry+Line.h
│ ├── IQGeometry+Line.m
│ ├── IQGeometry+Point.h
│ ├── IQGeometry+Point.m
│ ├── IQGeometry+Rect.h
│ ├── IQGeometry+Rect.m
│ ├── IQGeometry+Size.h
│ ├── IQGeometry+Size.m
│ └── IQGeometry.h
├── IQLineFrameView
│ ├── IQLineFrameView.h
│ ├── IQLineFrameView.m
│ ├── NSMutableArray+Stack.h
│ ├── NSMutableArray+Stack.m
│ ├── SRLineImageView.h
│ └── SRLineImageView.m
├── IQRulerScrollView
│ ├── IQRulerScrollView.h
│ ├── IQRulerScrollView.m
│ ├── IQScrollContainerView.h
│ ├── IQScrollContainerView.m
│ ├── UIScrollView+Addition.h
│ └── UIScrollView+Addition.m
├── IQRulerView
│ ├── IQRulerView.h
│ └── IQRulerView.m
├── MPCoachMarks
│ ├── MPCoachMark.h
│ ├── MPCoachMark.m
│ ├── MPCoachMarkView.h
│ └── MPCoachMarkView.m
├── SmoothedBIView
│ ├── IQ_SmoothedBIView.h
│ └── IQ_SmoothedBIView.m
└── UIImage+FloodFill
│ ├── LinkedListStack.h
│ ├── LinkedListStack.m
│ ├── UIImage+FloodFill.h
│ └── UIImage+FloodFill.m
├── ViewControllers
├── Home Page Flow
│ ├── SRCropViewController.h
│ ├── SRCropViewController.m
│ ├── SRDrawViewController.h
│ ├── SRDrawViewController.m
│ ├── SREditOptionViewController.h
│ ├── SREditOptionViewController.m
│ ├── SRHomeViewController.h
│ └── SRHomeViewController.m
├── Onboarding Controllers
│ ├── SROnboardingMagnifierController.h
│ ├── SROnboardingMagnifierController.m
│ ├── SROnboardingNavigationController.h
│ ├── SROnboardingNavigationController.m
│ ├── SROnboardingProtractorController.h
│ ├── SROnboardingProtractorController.m
│ ├── SROnboardingRulerScaleController.h
│ ├── SROnboardingRulerScaleController.m
│ ├── SROnboardingScaleAdjustController.h
│ ├── SROnboardingScaleAdjustController.m
│ ├── SROnboardingScreenScaleController.h
│ ├── SROnboardingScreenScaleController.m
│ ├── SROnboardingWelcomeController.h
│ ├── SROnboardingWelcomeController.m
│ ├── SROnboardingZoomController.h
│ └── SROnboardingZoomController.m
├── Screenshot Picker Flow
│ ├── Cell
│ │ ├── SRScreenshotCollectionViewCell.h
│ │ └── SRScreenshotCollectionViewCell.m
│ ├── SRScreenshotCollectionViewController.h
│ └── SRScreenshotCollectionViewController.m
└── Settings Flow
│ ├── Cell
│ ├── SRLicenseTableViewCell.h
│ ├── SRLicenseTableViewCell.m
│ ├── SRSettingsTableViewCell.h
│ ├── SRSettingsTableViewCell.m
│ ├── SRThemeTableViewCell.h
│ ├── SRThemeTableViewCell.m
│ ├── SRVersionTableViewCell.h
│ └── SRVersionTableViewCell.m
│ ├── Resources
│ ├── Acknowledgement.plist
│ └── EULA.html
│ ├── SRAcknowledgementTableViewController.h
│ ├── SRAcknowledgementTableViewController.m
│ ├── SRDeveloperSettingsViewController.h
│ ├── SRDeveloperSettingsViewController.m
│ ├── SRPrivacyPolicyViewController.h
│ ├── SRPrivacyPolicyViewController.m
│ ├── SRSettingTableViewController.h
│ └── SRSettingTableViewController.m
├── ar.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ca.lproj
├── InfoPlist.strings
└── Localizable.strings
├── da.lproj
├── InfoPlist.strings
└── Localizable.strings
├── de.lproj
├── InfoPlist.strings
└── Localizable.strings
├── el.lproj
├── InfoPlist.strings
└── Localizable.strings
├── en.lproj
├── InfoPlist.strings
└── Localizable.strings
├── es-MX.lproj
├── InfoPlist.strings
└── Localizable.strings
├── es.lproj
├── InfoPlist.strings
└── Localizable.strings
├── fi.lproj
├── InfoPlist.strings
└── Localizable.strings
├── fil-PH.lproj
├── InfoPlist.strings
└── Localizable.strings
├── fil.lproj
├── InfoPlist.strings
└── Localizable.strings
├── fr-CA.lproj
├── InfoPlist.strings
└── Localizable.strings
├── fr.lproj
├── InfoPlist.strings
└── Localizable.strings
├── hi.lproj
├── InfoPlist.strings
└── Localizable.strings
├── id.lproj
├── InfoPlist.strings
└── Localizable.strings
├── it.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ja.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ko.lproj
├── InfoPlist.strings
└── Localizable.strings
├── main.m
├── ms.lproj
├── InfoPlist.strings
└── Localizable.strings
├── nl.lproj
├── InfoPlist.strings
└── Localizable.strings
├── pl.lproj
├── InfoPlist.strings
└── Localizable.strings
├── pt-BR.lproj
├── InfoPlist.strings
└── Localizable.strings
├── pt-PT.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ro.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ru.lproj
├── InfoPlist.strings
└── Localizable.strings
├── sk.lproj
├── InfoPlist.strings
└── Localizable.strings
├── sv.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ta-IN.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ta-LK.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ta-MY.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ta-SG.lproj
├── InfoPlist.strings
└── Localizable.strings
├── ta.lproj
├── InfoPlist.strings
└── Localizable.strings
├── th.lproj
├── InfoPlist.strings
└── Localizable.strings
├── tr.lproj
├── InfoPlist.strings
└── Localizable.strings
├── uk.lproj
├── InfoPlist.strings
└── Localizable.strings
├── vi.lproj
├── InfoPlist.strings
└── Localizable.strings
├── zh-Hans.lproj
├── InfoPlist.strings
└── Localizable.strings
└── zh-Hant.lproj
├── InfoPlist.strings
└── Localizable.strings
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xcuserstate
23 |
24 | ## Obj-C/Swift specific
25 | *.hmap
26 | *.ipa
27 | *.dSYM.zip
28 | *.dSYM
29 |
30 | # CocoaPods
31 | #
32 | # We recommend against adding the Pods directory to your .gitignore. However
33 | # you should judge for yourself, the pros and cons are mentioned at:
34 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
35 | #
36 | Pods/
37 |
38 | # Carthage
39 | #
40 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
41 | Carthage/Checkouts
42 |
43 | Carthage/Build
44 |
45 | # fastlane
46 | #
47 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
48 | # screenshots whenever they are needed.
49 | # For more information about the recommended setup visit:
50 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
51 |
52 | fastlane/report.xml
53 | fastlane/screenshots
54 |
55 | #Code Injection
56 | #
57 | # After new code Injection tools there's a generated folder /iOSInjectionProject
58 | # https://github.com/johnno1962/injectionforxcode
59 |
60 | iOSInjectionProject/
61 | .DS_Store
62 |
63 |
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '9.0'
2 | inhibit_all_warnings!
3 |
4 | target 'ScreenRuler' do
5 | # pod 'UIColor-HexRGB'
6 | pod 'UIImage+FixOrientation'
7 | pod 'NYXImagesKit'
8 | pod 'COSTouchVisualizer'
9 | pod 'iVersion'
10 | pod 'iRate'
11 | pod 'Fabric'
12 | pod 'Crashlytics'
13 | end
14 |
--------------------------------------------------------------------------------
/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - COSTouchVisualizer (1.0.6)
3 | - Crashlytics (3.8.2):
4 | - Fabric (~> 1.6.3)
5 | - Fabric (1.6.9)
6 | - iRate (1.11.6)
7 | - iVersion (1.11.4)
8 | - NYXImagesKit (2.3)
9 | - UIImage+FixOrientation (1.0.0)
10 |
11 | DEPENDENCIES:
12 | - COSTouchVisualizer
13 | - Crashlytics
14 | - Fabric
15 | - iRate
16 | - iVersion
17 | - NYXImagesKit
18 | - UIImage+FixOrientation
19 |
20 | SPEC CHECKSUMS:
21 | COSTouchVisualizer: a398089327a6c02897823614d7447ccc97198997
22 | Crashlytics: 27acca95a01b042a8294291dd6dff27f8f6af6d7
23 | Fabric: bc5bec42cef4bcf1ee3ce0e218fc518e4b44dfbb
24 | iRate: 61e558919c4a7fde63b3c22ebbd6c114a1eee658
25 | iVersion: 2b6ffe708672cb494ba3cab150a94800c2892e81
26 | NYXImagesKit: 8163e3335a40eaa173ca5bbbf81fafb57d3947eb
27 | UIImage+FixOrientation: 6889ce14a2761462c22d6f92d26685db79a0c9b2
28 |
29 | PODFILE CHECKSUM: 7f3128a336d42f93983c44be4fff774a2d92f444
30 |
31 | COCOAPODS: 1.2.0
32 |
--------------------------------------------------------------------------------
/Screen Ruler.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Screen Ruler.xcodeproj/xcshareddata/xcschemes/ScreenRuler.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
33 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
56 |
58 |
64 |
65 |
66 |
67 |
71 |
72 |
73 |
74 |
80 |
82 |
88 |
89 |
90 |
91 |
93 |
94 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/Screen Ruler.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ScreenRuler/AppDelegate/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | extern NSNotificationName iVersionDidUpdateNotification;
12 |
13 | extern const NSInteger kSRAppStoreID;
14 |
15 | @interface AppDelegate : UIResponder
16 |
17 | @property (strong, nonatomic) UIWindow *window;
18 |
19 | @property BOOL shouldShowTouches;
20 |
21 | @property BOOL isCheckingNewVersion;
22 | @property NSString* updatedVersionString;
23 |
24 | @end
25 |
26 |
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-Spotlight-41.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-60.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-Small@2x-1.png",
19 | "scale" : "2x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-Small@3x.png",
25 | "scale" : "3x"
26 | },
27 | {
28 | "size" : "40x40",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-Spotlight-40@2x.png",
31 | "scale" : "2x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-Spotlight-40@3x.png",
37 | "scale" : "3x"
38 | },
39 | {
40 | "size" : "60x60",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-60@2x.png",
43 | "scale" : "2x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-60@3x.png",
49 | "scale" : "3x"
50 | },
51 | {
52 | "size" : "20x20",
53 | "idiom" : "ipad",
54 | "filename" : "Icon-Spotlight-43.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-Spotlight-40.png",
61 | "scale" : "2x"
62 | },
63 | {
64 | "size" : "29x29",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-Small.png",
67 | "scale" : "1x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-Small@2x.png",
73 | "scale" : "2x"
74 | },
75 | {
76 | "size" : "40x40",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-Spotlight-42.png",
79 | "scale" : "1x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-Spotlight-40@2x-1.png",
85 | "scale" : "2x"
86 | },
87 | {
88 | "size" : "76x76",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-76.png",
91 | "scale" : "1x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-76@2x.png",
97 | "scale" : "2x"
98 | },
99 | {
100 | "size" : "83.5x83.5",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-iPadPro@2x.png",
103 | "scale" : "2x"
104 | }
105 | ],
106 | "info" : {
107 | "version" : 1,
108 | "author" : "xcode"
109 | }
110 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-60.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x-1.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-41.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-42.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-43.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-iPadPro@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/AppIcon.appiconset/Icon-iPadPro@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-down.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "arrow-down@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "arrow-down@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-down.imageset/arrow-down@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-down.imageset/arrow-down@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-down.imageset/arrow-down@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-down.imageset/arrow-down@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-left.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "arrow-left@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "arrow-left@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-left.imageset/arrow-left@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-left.imageset/arrow-left@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-left.imageset/arrow-left@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-left.imageset/arrow-left@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-right.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "arrow-right@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "arrow-right@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-right.imageset/arrow-right@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-right.imageset/arrow-right@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-right.imageset/arrow-right@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-right.imageset/arrow-right@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-top.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "arrow-top@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "arrow-top@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-top.imageset/arrow-top@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-top.imageset/arrow-top@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-top.imageset/arrow-top@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Arrow Icons/arrow-top.imageset/arrow-top@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "extent" : "full-screen",
5 | "idiom" : "iphone",
6 | "subtype" : "736h",
7 | "filename" : "Default~736h@2x.png",
8 | "minimum-system-version" : "8.0",
9 | "orientation" : "portrait",
10 | "scale" : "3x"
11 | },
12 | {
13 | "extent" : "full-screen",
14 | "idiom" : "iphone",
15 | "subtype" : "736h",
16 | "filename" : "Default~736w@2x.png",
17 | "minimum-system-version" : "8.0",
18 | "orientation" : "landscape",
19 | "scale" : "3x"
20 | },
21 | {
22 | "extent" : "full-screen",
23 | "idiom" : "iphone",
24 | "subtype" : "667h",
25 | "filename" : "Default~667h@2x.png",
26 | "minimum-system-version" : "8.0",
27 | "orientation" : "portrait",
28 | "scale" : "2x"
29 | },
30 | {
31 | "orientation" : "portrait",
32 | "idiom" : "iphone",
33 | "filename" : "Default@2x.png",
34 | "extent" : "full-screen",
35 | "minimum-system-version" : "7.0",
36 | "scale" : "2x"
37 | },
38 | {
39 | "extent" : "full-screen",
40 | "idiom" : "iphone",
41 | "subtype" : "retina4",
42 | "filename" : "Default~568h@2x.png",
43 | "minimum-system-version" : "7.0",
44 | "orientation" : "portrait",
45 | "scale" : "2x"
46 | },
47 | {
48 | "orientation" : "portrait",
49 | "idiom" : "ipad",
50 | "filename" : "Default~iPad.png",
51 | "extent" : "full-screen",
52 | "minimum-system-version" : "7.0",
53 | "scale" : "1x"
54 | },
55 | {
56 | "orientation" : "landscape",
57 | "idiom" : "ipad",
58 | "filename" : "Default~iPad~width.png",
59 | "extent" : "full-screen",
60 | "minimum-system-version" : "7.0",
61 | "scale" : "1x"
62 | },
63 | {
64 | "orientation" : "portrait",
65 | "idiom" : "ipad",
66 | "filename" : "Default~iPad@2x.png",
67 | "extent" : "full-screen",
68 | "minimum-system-version" : "7.0",
69 | "scale" : "2x"
70 | },
71 | {
72 | "orientation" : "landscape",
73 | "idiom" : "ipad",
74 | "filename" : "Default~iPad~w@2x.png",
75 | "extent" : "full-screen",
76 | "minimum-system-version" : "7.0",
77 | "scale" : "2x"
78 | }
79 | ],
80 | "info" : {
81 | "version" : 1,
82 | "author" : "xcode"
83 | }
84 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~568h@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~667h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~667h@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~736h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~736h@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~736w@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~736w@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad~w@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad~w@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad~width.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Brand Assets.launchimage/Default~iPad~width.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/color_palette.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "color_palette@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "color_palette@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/color_palette.imageset/color_palette@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/color_palette.imageset/color_palette@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/color_palette.imageset/color_palette@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/color_palette.imageset/color_palette@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/crop.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "crop@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "crop@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/crop.imageset/crop@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/crop.imageset/crop@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/crop.imageset/crop@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/crop.imageset/crop@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/edit.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "edit@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "edit@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/edit.imageset/edit@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/edit.imageset/edit@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/edit.imageset/edit@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/edit.imageset/edit@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/horizontal_ruler.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "horizontal_ruler@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "horizontal_ruler@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/horizontal_ruler.imageset/horizontal_ruler@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/horizontal_ruler.imageset/horizontal_ruler@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/horizontal_ruler.imageset/horizontal_ruler@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/horizontal_ruler.imageset/horizontal_ruler@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/line_frame.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "line_frame@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "line_frame@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/line_frame.imageset/line_frame@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/line_frame.imageset/line_frame@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/line_frame.imageset/line_frame@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/line_frame.imageset/line_frame@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/protractor.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "protractor@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "protractor@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/protractor.imageset/protractor@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/protractor.imageset/protractor@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/protractor.imageset/protractor@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/protractor.imageset/protractor@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/ratio.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ratio@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ratio@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/ratio.imageset/ratio@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/ratio.imageset/ratio@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/ratio.imageset/ratio@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/ratio.imageset/ratio@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/resize.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "resize@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "resize@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/resize.imageset/resize@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/resize.imageset/resize@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/resize.imageset/resize@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/resize.imageset/resize@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/rotate.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "rotate@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "rotate@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/rotate.imageset/rotate@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/rotate.imageset/rotate@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/rotate.imageset/rotate@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/rotate.imageset/rotate@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/vertical_ruler.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "vertical_ruler@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "vertical_ruler@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/vertical_ruler.imageset/vertical_ruler@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/vertical_ruler.imageset/vertical_ruler@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/vertical_ruler.imageset/vertical_ruler@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Features/vertical_ruler.imageset/vertical_ruler@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/DoubleTap.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "DoubleTap.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/DoubleTap.imageset/DoubleTap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/DoubleTap.imageset/DoubleTap.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Pinch.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Pinch.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Pinch.imageset/Pinch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Pinch.imageset/Pinch.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Press-and-Drag.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Press-and-Drag.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Press-and-Drag.imageset/Press-and-Drag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Press-and-Drag.imageset/Press-and-Drag.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Press.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Press.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Press.imageset/Press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Press.imageset/Press.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Rotate.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Rotate.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Rotate.imageset/Rotate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Rotate.imageset/Rotate.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Scroll-Horizontal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Scroll-Horizontal.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Scroll-Horizontal.imageset/Scroll-Horizontal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Scroll-Horizontal.imageset/Scroll-Horizontal.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Scroll-Vertical.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Scroll-Vertical.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Scroll-Vertical.imageset/Scroll-Vertical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Scroll-Vertical.imageset/Scroll-Vertical.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Tap.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Tap.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Tap.imageset/Tap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Tap.imageset/Tap.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Zoom.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Zoom.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Zoom.imageset/Zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/Gestures/Zoom.imageset/Zoom.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/GitHub-Mark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "GitHub-Mark@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "GitHub-Mark@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | },
22 | "properties" : {
23 | "template-rendering-intent" : "template"
24 | }
25 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/GitHub-Mark.imageset/GitHub-Mark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/GitHub-Mark.imageset/GitHub-Mark@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/GitHub-Mark.imageset/GitHub-Mark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/GitHub-Mark.imageset/GitHub-Mark@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/iPhone-sceenshot.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "iPhone-sceenshot@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "iPhone-sceenshot@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/iPhone-sceenshot.imageset/iPhone-sceenshot@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/iPhone-sceenshot.imageset/iPhone-sceenshot@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/iPhone-sceenshot.imageset/iPhone-sceenshot@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/iPhone-sceenshot.imageset/iPhone-sceenshot@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/option.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "option@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "option@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/option.imageset/option@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/option.imageset/option@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/option.imageset/option@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/option.imageset/option@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_access.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "photo_access@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "photo_access@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_access.imageset/photo_access@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_access.imageset/photo_access@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_access.imageset/photo_access@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_access.imageset/photo_access@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_library.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "photo_library@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "photo_library@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_library.imageset/photo_library@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_library.imageset/photo_library@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_library.imageset/photo_library@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/photo_library.imageset/photo_library@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/ruler_logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ruler_logo@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ruler_logo@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/ruler_logo.imageset/ruler_logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/ruler_logo.imageset/ruler_logo@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/ruler_logo.imageset/ruler_logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/ruler_logo.imageset/ruler_logo@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/settings.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "settings@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "settings@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/settings.imageset/settings@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/settings.imageset/settings@2x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Assets.xcassets/settings.imageset/settings@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Assets.xcassets/settings.imageset/settings@3x.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/Icon-60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/Icon-60.png
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/iTunesArtwork:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/iTunesArtwork
--------------------------------------------------------------------------------
/ScreenRuler/AssetsAndResources/iTunesArtwork@2x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/AssetsAndResources/iTunesArtwork@2x
--------------------------------------------------------------------------------
/ScreenRuler/Base.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/Base.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/Base.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/Categories/UIColor+ThemeColor.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIColor+ThemeColor.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | extern NSString *const kRASettingsChangedNotification;
12 |
13 | @interface UIColor (ThemeColor)
14 |
15 | +(UIColor*)originalThemeColor;
16 |
17 | +(UIColor*)themeColor;
18 | +(UIColor*)themeTextColor;
19 | +(UIColor*)themeBackgroundColor;
20 |
21 | +(void)setThemeColor:(UIColor*)color;
22 | +(void)setThemeInverted:(BOOL)inverted;
23 | +(BOOL)isThemeInverted;
24 |
25 | -(UIColor*)colorWithShadeFactor:(CGFloat)shadeFactor;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/ScreenRuler/Categories/UIFont+AppFont.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIFont+AppFont.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface UIFont (AppFont)
12 |
13 | +(UIFont*)kohinoorBanglaRegularWithSize:(CGFloat)size;
14 | +(UIFont*)kohinoorBanglaSemiboldWithSize:(CGFloat)size;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/ScreenRuler/Categories/UIFont+AppFont.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIFont+AppFont.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "UIFont+AppFont.h"
10 |
11 | @implementation UIFont (AppFont)
12 |
13 | +(UIFont*)kohinoorBanglaRegularWithSize:(CGFloat)size
14 | {
15 | UIFont *font = [UIFont fontWithName:@"KohinoorBangla-Regular" size:size];
16 |
17 | if (font == nil)
18 | {
19 | font = [UIFont systemFontOfSize:size];
20 | }
21 |
22 | return font;
23 | }
24 |
25 | +(UIFont*)kohinoorBanglaSemiboldWithSize:(CGFloat)size
26 | {
27 | UIFont *font = [UIFont fontWithName:@"KohinoorBangla-Semibold" size:size];
28 |
29 | if (font == nil)
30 | {
31 | font = [UIFont boldSystemFontOfSize:size];
32 | }
33 |
34 | return font;
35 | }
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/ScreenRuler/Categories/UIImage+Color.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+Color.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface UIImage (Color)
12 |
13 | + (UIImage *)imageWithColor:(UIColor *)color;
14 |
15 | -(UIImage*)imageWithColor:(UIColor*)color;
16 |
17 | -(void)colorAtPoint:(CGPoint)point preparingBlock:(void (^)(void))preparingBlock completion:(void (^)(UIColor*))colorCompletion;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/ScreenRuler/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | Screen Ruler
9 | CFBundleDocumentTypes
10 |
11 |
12 | CFBundleTypeIconFiles
13 |
14 | Icon-64
15 |
16 | CFBundleTypeName
17 | Screenshots PNG
18 | CFBundleTypeRole
19 | Viewer
20 | LSHandlerRank
21 | Default
22 | LSItemContentTypes
23 |
24 | public.image
25 |
26 | UTTypeConformsTo
27 |
28 | public.image
29 |
30 |
31 |
32 | CFBundleExecutable
33 | $(EXECUTABLE_NAME)
34 | CFBundleIdentifier
35 | $(PRODUCT_BUNDLE_IDENTIFIER)
36 | CFBundleInfoDictionaryVersion
37 | 6.0
38 | CFBundleName
39 | Screen Ruler
40 | CFBundlePackageType
41 | APPL
42 | CFBundleShortVersionString
43 | 3.0.1
44 | CFBundleSignature
45 | APPL
46 | CFBundleSpokenName
47 | Screen Ruler
48 | CFBundleVersion
49 | 1
50 | Fabric
51 |
52 | APIKey
53 | 2a2b05af157dab9ab59f9b8e79c037ee6025e805
54 | Kits
55 |
56 |
57 | KitInfo
58 |
59 | KitName
60 | Crashlytics
61 |
62 |
63 |
64 | ITSAppUsesNonExemptEncryption
65 |
66 | LSApplicationCategoryType
67 | public.app-category.developer-tools
68 | LSMinimumSystemVersion
69 | 8.0
70 | LSRequiresIPhoneOS
71 |
72 | NSAppTransportSecurity
73 |
74 | NSAllowsArbitraryLoads
75 |
76 |
77 | NSCameraUsageDescription
78 | This lets you capture photos you'd like to debug.
79 | NSHumanReadableCopyright
80 | InfoEnum Software Systems
81 | NSPhotoLibraryUsageDescription
82 | This lets you choose the screenshot you'd like to debug.
83 | UIApplicationShortcutItems
84 |
85 |
86 | UIApplicationShortcutItemIconType
87 | UIApplicationShortcutIconTypeCapturePhoto
88 | UIApplicationShortcutItemTitle
89 | Open Latest Screenshot
90 | UIApplicationShortcutItemType
91 | com.infoenum.ruler.openlatestscreenshot
92 |
93 |
94 | UILaunchStoryboardName
95 | LaunchScreen
96 | UIMainStoryboardFile
97 | Main
98 | UIPrerenderedIcon
99 |
100 | UIRequiredDeviceCapabilities
101 |
102 | armv7
103 |
104 | UIRequiresFullScreen
105 |
106 | UIStatusBarHidden
107 |
108 | UIStatusBarStyle
109 | UIStatusBarStyleLightContent
110 | UISupportedInterfaceOrientations
111 |
112 | UIInterfaceOrientationPortrait
113 | UIInterfaceOrientationLandscapeLeft
114 | UIInterfaceOrientationLandscapeRight
115 | UIInterfaceOrientationPortraitUpsideDown
116 |
117 | UIWhitePointAdaptivityStyle
118 | UIWhitePointAdaptivityStylePhoto
119 |
120 |
121 |
--------------------------------------------------------------------------------
/ScreenRuler/Other/RoundedCornerView.h:
--------------------------------------------------------------------------------
1 | //
2 | // RoundedCornerView.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 15/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RoundedCornerView : UIView
12 |
13 | @property(nonatomic, assign) IBInspectable CGFloat cornerRadiusRatio;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ScreenRuler/Other/RoundedCornerView.m:
--------------------------------------------------------------------------------
1 | //
2 | // RoundedCornerView.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 15/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "RoundedCornerView.h"
10 |
11 | @implementation RoundedCornerView
12 |
13 | -(void)layoutSubviews
14 | {
15 | [super layoutSubviews];
16 |
17 | if (_cornerRadiusRatio > 0)
18 | {
19 | CGFloat widthHeight = MIN(self.frame.size.width, self.frame.size.height);
20 |
21 | self.layer.cornerRadius = widthHeight*_cornerRadiusRatio;
22 | }
23 | }
24 | /*
25 | // Only override drawRect: if you perform custom drawing.
26 | // An empty implementation adversely affects performance during animation.
27 | - (void)drawRect:(CGRect)rect {
28 | // Drawing code
29 | }
30 | */
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/ScreenRuler/Other/SRIconsGeneratorViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRIconsGeneratorViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRIconsGeneratorViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/Other/SRIconsGeneratorViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRIconsGeneratorViewController.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRIconsGeneratorViewController.h"
10 |
11 | @interface SRIconsGeneratorViewController ()
12 |
13 | @property (strong, nonatomic) IBOutlet UIView *lineFrameView;
14 | @property (strong, nonatomic) IBOutlet UIView *cropView;
15 | @property (strong, nonatomic) IBOutlet UIView *aspectRatioView;
16 | @property (strong, nonatomic) IBOutlet UIView *resizeView;
17 | @property (strong, nonatomic) IBOutlet UIView *humbergerView;
18 | @property (strong, nonatomic) IBOutlet UIView *scaleView;
19 |
20 | @property (strong, nonatomic) IBOutlet UIView *freeScaleContainerView;
21 | @property (strong, nonatomic) IBOutlet UIView *freeScaleview;
22 |
23 |
24 | @end
25 |
26 | @implementation SRIconsGeneratorViewController
27 |
28 | - (void)viewDidLoad {
29 | [super viewDidLoad];
30 | // Do any additional setup after loading the view.
31 | }
32 |
33 | -(void)viewWillAppear:(BOOL)animated
34 | {
35 | [super viewWillAppear:animated];
36 |
37 | self.freeScaleview.transform = CGAffineTransformMakeRotation(M_PI_2*3);
38 | }
39 |
40 | -(void)viewDidAppear:(BOOL)animated
41 | {
42 | [super viewDidAppear:animated];
43 |
44 | NSLog(@"%@",self.freeScaleview);
45 | NSLog(@"%@",self.scaleView);
46 | }
47 |
48 | - (void)didReceiveMemoryWarning {
49 | [super didReceiveMemoryWarning];
50 | // Dispose of any resources that can be recreated.
51 | }
52 |
53 | /*
54 | #pragma mark - Navigation
55 |
56 | // In a storyboard-based application, you will often want to do a little preparation before navigation
57 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
58 | // Get the new view controller using [segue destinationViewController].
59 | // Pass the selected object to the new view controller.
60 | }
61 | */
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRImagePickerController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRImagePickerController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRImagePickerController : UIImagePickerController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRImagePickerController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRImagePickerController.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRImagePickerController.h"
10 |
11 | @implementation SRImagePickerController
12 |
13 |
14 | - (BOOL)shouldAutorotate
15 | {
16 | return YES;
17 | }
18 |
19 | - (UIInterfaceOrientationMask)supportedInterfaceOrientations
20 | {
21 | if (self.sourceType == UIImagePickerControllerSourceTypeCamera)
22 | {
23 | return UIInterfaceOrientationMaskPortrait;
24 | }
25 | else
26 | {
27 | return UIInterfaceOrientationMaskAllButUpsideDown;
28 | }
29 | }
30 |
31 | //-(UIInterfaceOrientation)interfaceOrientation
32 | //{
33 | // if ([self.presentedViewController isKindOfClass:[UIAlertController class]] == NO)
34 | // {
35 | // return self.presentedViewController.interfaceOrientation;
36 | // }
37 | // else
38 | // {
39 | // return [super interfaceOrientation];
40 | // }
41 | //}
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRNavigationBar.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRNavigationBar.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 01/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SRNavigationBar : UINavigationBar
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRNavigationBar.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRNavigationBar.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 01/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SRNavigationBar.h"
10 | #import "SRToolbarButton.h"
11 | #import "UIImage+Color.h"
12 |
13 | @implementation SRNavigationBar
14 |
15 | -(void)setTintColor:(UIColor *)tintColor
16 | {
17 | [super setTintColor:tintColor];
18 |
19 | [self updateColors];
20 | }
21 |
22 | -(void)setBarTintColor:(UIColor *)barTintColor
23 | {
24 | [super setBarTintColor:barTintColor];
25 |
26 | [self updateColors];
27 | }
28 |
29 | //barStyle
30 |
31 | -(void)updateColors
32 | {
33 | UIColor *tintColor = [[self tintColor] colorWithAlphaComponent:1];
34 | UIColor *barTintColor = [[self barTintColor] colorWithAlphaComponent:1];
35 |
36 | for (UINavigationItem *item in self.items)
37 | {
38 | for (UIBarButtonItem *barItem in item.leftBarButtonItems)
39 | {
40 | barItem.tintColor = tintColor;
41 | }
42 |
43 | for (UIBarButtonItem *barItem in item.rightBarButtonItems)
44 | {
45 | barItem.tintColor = tintColor;
46 | }
47 | }
48 |
49 | for (UIView *barButtonItemView in self.subviews)
50 | {
51 | if ([barButtonItemView isKindOfClass:[SRToolbarButton class]])
52 | {
53 | SRToolbarButton *button = (SRToolbarButton*)barButtonItemView;
54 | button.highlightedStateColor = tintColor;
55 | button.selectedStateColor = tintColor;
56 | button.tintColor = tintColor;
57 |
58 | UIImage *image = [button imageForState:UIControlStateNormal];
59 |
60 | if (image)
61 | {
62 | [button setImage:[image imageWithColor:tintColor] forState:UIControlStateNormal];
63 | }
64 |
65 | UIImage *selectedImage = [button imageForState:UIControlStateSelected];
66 |
67 | if (selectedImage)
68 | {
69 | [button setImage:[selectedImage imageWithColor:barTintColor] forState:UIControlStateSelected];
70 | }
71 | }
72 | }
73 | }
74 |
75 | -(CGSize)sizeThatFits:(CGSize)size
76 | {
77 | CGSize sizeThatFits = [super sizeThatFits:size];
78 | sizeThatFits.height = 44;
79 | return sizeThatFits;
80 | }
81 |
82 | @end
83 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRNavigationController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRNavigationController.h
3 | // ScreenRuler
4 | //
5 | // Created by Iftekhar on 02/11/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SRNavigationController : UINavigationController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRNavigationController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRNavigationController.m
3 | // ScreenRuler
4 | //
5 | // Created by Iftekhar on 02/11/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SRNavigationController.h"
10 |
11 | @interface SRNavigationController ()
12 |
13 | @end
14 |
15 | @implementation SRNavigationController
16 |
17 | -(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator
18 | {
19 | __weak typeof(self) weakSelf = self;
20 |
21 | [coordinator animateAlongsideTransition:^(id _Nonnull context) {
22 |
23 | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
24 | {
25 | BOOL hidden = (size.width > size.height);
26 | [weakSelf setNavigationBarHidden:hidden animated:YES];
27 | [weakSelf setToolbarHidden:hidden animated:YES];
28 | }
29 |
30 | } completion:^(id _Nonnull context) {
31 |
32 | }];
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRToolbar.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRToolbar.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRToolbar : UIToolbar
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRToolbar.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRToolbar.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRToolbar.h"
10 | #import "SRToolbarButton.h"
11 | #import "UIImage+Color.h"
12 |
13 | @implementation SRToolbar
14 |
15 | -(void)setTintColor:(UIColor *)tintColor
16 | {
17 | [super setTintColor:tintColor];
18 |
19 | [self updateColors];
20 | }
21 |
22 | -(void)setBarTintColor:(UIColor *)barTintColor
23 | {
24 | [super setBarTintColor:barTintColor];
25 |
26 | [self updateColors];
27 | }
28 |
29 | -(void)updateColors
30 | {
31 | UIColor *tintColor = [[self tintColor] colorWithAlphaComponent:1];
32 | UIColor *barTintColor = [[self barTintColor] colorWithAlphaComponent:1];
33 |
34 | for (UIBarButtonItem *item in self.items)
35 | {
36 | item.tintColor = tintColor;
37 | }
38 |
39 | for (UIView *barButtonItemView in self.subviews)
40 | {
41 | if ([barButtonItemView isKindOfClass:[SRToolbarButton class]])
42 | {
43 | SRToolbarButton *button = (SRToolbarButton*)barButtonItemView;
44 | button.highlightedStateColor = tintColor;
45 | button.selectedStateColor = tintColor;
46 | button.tintColor = tintColor;
47 |
48 | UIImage *image = [button imageForState:UIControlStateNormal];
49 |
50 | if (image)
51 | {
52 | [button setImage:[image imageWithColor:tintColor] forState:UIControlStateNormal];
53 | }
54 |
55 | UIImage *selectedImage = [button imageForState:UIControlStateSelected];
56 |
57 | if (selectedImage)
58 | {
59 | [button setImage:[selectedImage imageWithColor:barTintColor] forState:UIControlStateSelected];
60 | }
61 | }
62 | }
63 | }
64 |
65 | -(CGSize)sizeThatFits:(CGSize)size
66 | {
67 | CGSize sizeThatFits = [super sizeThatFits:size];
68 | sizeThatFits.height = 44;
69 | return sizeThatFits;
70 | }
71 |
72 | @end
73 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRToolbarButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRToolbarButton.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRToolbarButton : UIButton
12 |
13 | @property(nonatomic, strong) IBInspectable UIColor *normalStateColor;
14 | @property(nonatomic, strong) IBInspectable UIColor *highlightedStateColor;
15 | @property(nonatomic, strong) IBInspectable UIColor *disabledStateColor;
16 | @property(nonatomic, strong) IBInspectable UIColor *selectedStateColor;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ScreenRuler/Subclasses/SRToolbarButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRToolbarButton.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRToolbarButton.h"
10 | #import "UIImage+Color.h"
11 |
12 | @implementation SRToolbarButton
13 |
14 | -(void)setNormalStateColor:(UIColor *)normalStateColor
15 | {
16 | _normalStateColor = normalStateColor;
17 |
18 | UIImage *image = [[UIImage imageWithColor:_normalStateColor] resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch];
19 | [self setBackgroundImage:image forState:UIControlStateNormal];
20 | }
21 |
22 | -(void)setHighlightedStateColor:(UIColor *)highlightedStateColor
23 | {
24 | _highlightedStateColor = highlightedStateColor;
25 |
26 | UIImage *image = [[UIImage imageWithColor:_highlightedStateColor] resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch];
27 | [self setBackgroundImage:image forState:UIControlStateHighlighted];
28 | }
29 |
30 | -(void)setDisabledStateColor:(UIColor *)disabledStateColor
31 | {
32 | _disabledStateColor = disabledStateColor;
33 |
34 | UIImage *image = [[UIImage imageWithColor:_disabledStateColor] resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch];
35 | [self setBackgroundImage:image forState:UIControlStateDisabled];
36 | }
37 |
38 | -(void)setSelectedStateColor:(UIColor *)selectedStateColor
39 | {
40 | _selectedStateColor = selectedStateColor;
41 |
42 | UIImage *image = [[UIImage imageWithColor:_selectedStateColor] resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch];
43 | [self setBackgroundImage:image forState:UIControlStateSelected];
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/ACMagnifyingGlass/ACMagnifyingGlass.h:
--------------------------------------------------------------------------------
1 | //
2 | // ACMagnifyingGlass.h
3 | // MagnifyingGlass
4 | //
5 |
6 | // doc: http://coffeeshopped.com/2010/03/a-simpler-magnifying-glass-loupe-view-for-the-iphone
7 |
8 | #import
9 |
10 | extern CGFloat const kACMagnifyingGlassDefaultOffset;
11 |
12 | @interface ACMagnifyingGlass : UIView
13 |
14 | @property (nonatomic, retain) UIView *viewToMagnify;
15 | @property (nonatomic, assign) CGPoint touchPoint;
16 | @property (nonatomic, assign) CGPoint touchPointOffset;
17 | @property (nonatomic, assign) CGFloat scale;
18 | @property (nonatomic, assign) BOOL scaleAtTouchPoint;
19 |
20 | @property (nonatomic, strong) UIColor *color;
21 |
22 | -(void)show;
23 | -(void)hide;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/ACMagnifyingGlass/Resources/kb-loupe-hi_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/Vendor/ACMagnifyingGlass/Resources/kb-loupe-hi_7.png
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/CBZRasterSplashView.h:
--------------------------------------------------------------------------------
1 | //
2 | // CBZRasterSplashView.h
3 | // Telly
4 | //
5 | // Created by Mazyad Alabduljaleel on 8/7/14.
6 | // Copyright (c) 2014 Telly, Inc. All rights reserved.
7 | //
8 |
9 | #import "CBZSplashView.h"
10 |
11 | /**
12 | * RasterSplash animates in a rasterized UIImage while fading the whole view
13 | */
14 | @interface CBZRasterSplashView : CBZSplashView
15 |
16 | - (instancetype)initWithIconImage:(UIImage *)icon backgroundColor:(UIColor *)color;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/CBZRasterSplashView.m:
--------------------------------------------------------------------------------
1 | //
2 | // CBZRasterSplashView.m
3 | // Telly
4 | //
5 | // Created by Mazyad Alabduljaleel on 8/7/14.
6 | // Copyright (c) 2014 Telly, Inc. All rights reserved.
7 | //
8 |
9 | #import "CBZRasterSplashView.h"
10 |
11 | @interface CBZRasterSplashView ()
12 |
13 | @property (nonatomic, strong) UIImage *iconImage;
14 | @property (nonatomic, strong) UIImageView *iconImageView;
15 |
16 | @end
17 |
18 | @implementation CBZRasterSplashView
19 |
20 | - (instancetype)initWithIconImage:(UIImage *)icon backgroundColor:(UIColor *)color
21 | {
22 | self = [super initWithFrame:[[UIScreen mainScreen] bounds]];
23 | if (self) {
24 | self.backgroundColor = color;
25 |
26 | UIImageView *iconImageView = [UIImageView new];
27 | iconImageView.image = [icon imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
28 | iconImageView.tintColor = self.iconColor;
29 | iconImageView.frame = CGRectMake(0, 0, self.iconStartSize.width, self.iconStartSize.height);
30 | iconImageView.contentMode = UIViewContentModeScaleAspectFit;
31 | iconImageView.center = self.center;
32 |
33 | [self addSubview:iconImageView];
34 |
35 | _iconImageView = iconImageView;
36 | }
37 | return self;
38 | }
39 |
40 | - (void)startAnimationWithCompletionHandler:(void (^)(void))completionHandler
41 | {
42 | __block __weak typeof(self) weakSelf = self;
43 |
44 | if (!self.animationDuration) {
45 | return;
46 | }
47 |
48 | CGFloat shrinkDuration = self.animationDuration * 0.3;
49 | CGFloat growDuration = self.animationDuration * 0.7;
50 |
51 | [UIView animateWithDuration:shrinkDuration delay:0 usingSpringWithDamping:0.7f initialSpringVelocity:10 options:UIViewAnimationOptionCurveEaseInOut animations:^{
52 | CGAffineTransform scaleTransform = CGAffineTransformMakeScale(0.75, 0.75);
53 | weakSelf.iconImageView.transform = scaleTransform;
54 | } completion:^(BOOL finished) {
55 | [UIView animateWithDuration:growDuration animations:^{
56 | CGAffineTransform scaleTransform = CGAffineTransformMakeScale(20, 20);
57 | weakSelf.iconImageView.transform = scaleTransform;
58 | weakSelf.alpha = 0;
59 | } completion:^(BOOL finished) {
60 | [weakSelf removeFromSuperview];
61 | if (completionHandler) {
62 | completionHandler();
63 | }
64 | }];
65 | }];
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/CBZSplashView.h:
--------------------------------------------------------------------------------
1 | //
2 | // CBZSplashView.h
3 | // MicroMessage
4 | //
5 | // Created by Callum Boddy on 22/07/2014.
6 | // Copyright (c) 2014 Callum Boddy. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | /**
13 | * The abstract class that provides the common interface between all splash view implementations.
14 | */
15 | @interface CBZSplashView : UIView
16 |
17 |
18 | /**
19 | * This initializer takes a raster image that will be used in the animation.
20 | *
21 | * The animation is first scales the image down a bit, then, simultanuously scales it all the way up and fades the view out.
22 | *
23 | * @param icon The icon image in the centre
24 | * @param backgroundColor the background color of the entire view
25 | *
26 | * @return The Splash view
27 | */
28 | + (instancetype)splashViewWithIcon:(UIImage *)icon backgroundColor:(UIColor *)backgroundColor;
29 |
30 | + (instancetype)splashViewWithBezierPath:(UIBezierPath *)bezier backgroundColor:(UIColor *)backgroundColor;
31 |
32 |
33 | /**
34 | * Call to start the animation.
35 | */
36 | - (void)startAnimation;
37 |
38 | /**
39 | * Call to start the animation with completion handler.
40 | */
41 | - (void)startAnimationWithCompletionHandler:(void(^)(void))completionHandler;
42 |
43 | /**
44 | * The starting size of the centred icon.
45 | */
46 | @property (nonatomic, assign) CGSize iconStartSize;
47 |
48 | /**
49 | * total length of animation.
50 | */
51 | @property (nonatomic, assign) CGFloat animationDuration;
52 |
53 | /**
54 | * The animation applied to the icon
55 | */
56 | @property (nonatomic, strong) CAAnimation *iconAnimation;
57 |
58 | /**
59 | * the color of the icon
60 | */
61 | @property (nonatomic, strong) UIColor *iconColor;
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/CBZSplashView.m:
--------------------------------------------------------------------------------
1 | //
2 | // CBZSplashView.m
3 | // MicroMessage
4 | //
5 | // Created by Callum Boddy on 22/07/2014.
6 | // Copyright (c) 2014 Callum Boddy. All rights reserved.
7 | //
8 |
9 | #import "CBZSplashView.h"
10 | #import "CBZRasterSplashView.h"
11 | #import "CBZVectorSplashView.h"
12 |
13 |
14 | @implementation CBZSplashView
15 |
16 | #pragma mark - Factory methods
17 |
18 | + (instancetype)splashViewWithIcon:(UIImage *)icon backgroundColor:(UIColor *)backgroundColor
19 | {
20 | /* This component is useless without an icon */
21 | NSParameterAssert(icon);
22 |
23 | return [[CBZRasterSplashView alloc] initWithIconImage:icon backgroundColor:backgroundColor];
24 | }
25 |
26 | + (instancetype)splashViewWithBezierPath:(UIBezierPath *)bezier backgroundColor:(UIColor *)backgroundColor
27 | {
28 | return [[CBZVectorSplashView alloc] initWithBezierPath:bezier backgroundColor:backgroundColor];
29 | }
30 |
31 | #pragma mark - Init & Dealloc
32 |
33 | - (instancetype)init
34 | {
35 | return [super initWithFrame:[[UIScreen mainScreen] bounds]];
36 | }
37 |
38 | #pragma mark - Public methods
39 |
40 | - (void)startAnimation
41 | {
42 | [self startAnimationWithCompletionHandler:nil];
43 | }
44 |
45 | - (void)startAnimationWithCompletionHandler:(void(^)(void))completionHandler;
46 | {
47 | NSAssert(NO, @"Override me!");
48 | }
49 |
50 | #pragma mark - property getters
51 |
52 | - (CGSize)iconStartSize
53 | {
54 | if (!_iconStartSize.height) {
55 | _iconStartSize = CGSizeMake(60, 60);
56 | }
57 | return _iconStartSize;
58 | }
59 |
60 | - (CGFloat)animationDuration
61 | {
62 | if (!_animationDuration) {
63 | _animationDuration = 1.0f;
64 | }
65 | return _animationDuration;
66 | }
67 |
68 | - (CAAnimation *)iconAnimation
69 | {
70 | if (!_iconAnimation) {
71 | CAKeyframeAnimation *scaleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
72 |
73 | CATransform3D transform1 = CATransform3DMakeScale(1, 1, 1);
74 | CATransform3D transform2 = CATransform3DMakeScale(0.9, 0.9, 0.9);
75 | CATransform3D transform3 = CATransform3DTranslate(CATransform3DMakeScale(300, 300, 300), 0, -25, 0);
76 |
77 | scaleAnimation.values = @[[NSValue valueWithCATransform3D:transform1],
78 | [NSValue valueWithCATransform3D:transform2],
79 | [NSValue valueWithCATransform3D:transform3]];
80 | scaleAnimation.duration = self.animationDuration;
81 | scaleAnimation.removedOnCompletion = NO;
82 | scaleAnimation.fillMode = kCAFillModeForwards;
83 | scaleAnimation.keyTimes = @[@0, @0.4, @1];
84 | scaleAnimation.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
85 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
86 |
87 | _iconAnimation = scaleAnimation;
88 | }
89 | return _iconAnimation;
90 | }
91 |
92 | - (UIColor *)iconColor
93 | {
94 | if (!_iconColor) {
95 | _iconColor = [UIColor whiteColor];
96 | }
97 | return _iconColor;
98 | }
99 |
100 | @end
101 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/CBZVectorSplashView.h:
--------------------------------------------------------------------------------
1 | //
2 | // CBZVectorSplashView.h
3 | // Telly
4 | //
5 | // Created by Mazyad Alabduljaleel on 8/7/14.
6 | // Copyright (c) 2014 Telly, Inc. All rights reserved.
7 | //
8 |
9 | #import "CBZSplashView.h"
10 |
11 | /**
12 | * VectorSplash uses a UIBezierPath to carve a mask in the middle that expands while revealing the content behind it.
13 | */
14 | @interface CBZVectorSplashView : CBZSplashView
15 |
16 | - (instancetype)initWithBezierPath:(UIBezierPath *)bezier backgroundColor:(UIColor *)backgroundColor;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/CBZVectorSplashView.m:
--------------------------------------------------------------------------------
1 | //
2 | // CBZVectorSplashView.m
3 | // Telly
4 | //
5 | // Created by Mazyad Alabduljaleel on 8/7/14.
6 | // Copyright (c) 2014 Telly, Inc. All rights reserved.
7 | //
8 |
9 | #import "CBZVectorSplashView.h"
10 |
11 | @interface CBZVectorSplashView ()
12 |
13 | @property (nonatomic, copy) void(^animationCompletionHandler)(void);
14 |
15 | @property (nonatomic, strong) CAShapeLayer *iconLayer;
16 | @property (nonatomic, strong) UIColor *backgroundViewColor;
17 |
18 | @end
19 |
20 | @implementation CBZVectorSplashView
21 |
22 | - (instancetype)initWithBezierPath:(UIBezierPath *)bezier backgroundColor:(UIColor *)backgroundColor
23 | {
24 | self = [super initWithFrame:[[UIScreen mainScreen] bounds]];
25 | if (self) {
26 | _backgroundViewColor = backgroundColor;
27 | _iconLayer = [self _createShapeLayerWithBezierPath:bezier];
28 |
29 | [self.layer addSublayer:_iconLayer];
30 |
31 | self.backgroundColor = self.iconColor;
32 | }
33 | return self;
34 | }
35 |
36 | - (CAShapeLayer *)_createShapeLayerWithBezierPath:(UIBezierPath *)bezier
37 | {
38 | /* Expand the shape bounds, so when it scales down a bit in the beginning, we have some padding */
39 | CGRect shapeBounds = CGRectInset(self.bounds, -CGRectGetWidth(self.bounds), -CGRectGetHeight(self.bounds));
40 |
41 | CGMutablePathRef mutablePath = CGPathCreateMutable();
42 | CGPathAddRect(mutablePath, NULL, shapeBounds);
43 |
44 | /* Move the icon to the middle */
45 | CGPoint iconOffset = CGPointMake(CGRectGetMidX(self.bounds) - CGRectGetMidX(bezier.bounds),
46 | CGRectGetMidY(self.bounds) - CGRectGetMidY(bezier.bounds));
47 |
48 | CGAffineTransform iconTransform = CGAffineTransformMakeTranslation(iconOffset.x, iconOffset.y);
49 |
50 | CGPathAddPath(mutablePath, &iconTransform, bezier.CGPath);
51 |
52 | CAShapeLayer *shapeLayer = [CAShapeLayer layer];
53 | shapeLayer.bounds = shapeBounds;
54 | shapeLayer.position = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
55 | shapeLayer.path = mutablePath;
56 | shapeLayer.anchorPoint = CGPointMake(0.5, 0.5);
57 | shapeLayer.fillColor = self.backgroundViewColor.CGColor;
58 |
59 | CGPathRelease(mutablePath);
60 |
61 | return shapeLayer;
62 | }
63 |
64 | - (void)startAnimationWithCompletionHandler:(void (^)(void))completionHandler
65 | {
66 | self.animationCompletionHandler = completionHandler;
67 |
68 | self.iconAnimation.delegate = self;
69 | [self.iconLayer addAnimation:self.iconAnimation forKey:@"CBZVectorSplashViewIconAnimation"];
70 |
71 | /* Reveal the content behind the mask view after the icon expands a bit */
72 | [self performSelector:@selector(setBackgroundColor:) withObject:[UIColor clearColor] afterDelay:self.animationDuration * 0.4];
73 | }
74 |
75 | #pragma mark - CAAnimation Delegate methods
76 |
77 | - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
78 | {
79 | if (self.animationCompletionHandler) {
80 | self.animationCompletionHandler();
81 | }
82 |
83 | [self removeFromSuperview];
84 | }
85 |
86 | @end
87 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/UIBezierPath+Shapes.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIBezierPath+Shapes.h
3 | // CBZSplashView
4 | //
5 | // Created by Mazyad Alabduljaleel on 8/8/14.
6 | // Copyright (c) 2014 Callum Boddy. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIBezierPath (Shapes)
12 |
13 | + (instancetype)rulerShape;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/Classes/UIBezierPath+Shapes.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIBezierPath+Shapes.m
3 | // CBZSplashView
4 | //
5 | // Created by Mazyad Alabduljaleel on 8/8/14.
6 | // Copyright (c) 2014 Callum Boddy. All rights reserved.
7 | //
8 |
9 | #import "UIBezierPath+Shapes.h"
10 |
11 | @implementation UIBezierPath (Shapes)
12 |
13 | + (instancetype)rulerShape
14 | {
15 | UIBezierPath* nPath = [UIBezierPath bezierPath];
16 |
17 | CGSize size = CGSizeMake(200, 200);
18 | CGFloat diff = size.width/17.0;
19 |
20 | [nPath moveToPoint:CGPointMake(diff*3, diff*3)];
21 |
22 | [nPath addLineToPoint: CGPointMake(diff*0.5, diff*5.5)];
23 | [nPath addQuadCurveToPoint:CGPointMake(diff*0.5, diff*6.5) controlPoint:CGPointMake(0, diff*6)];
24 |
25 | [nPath addLineToPoint: CGPointMake(diff*10.5, diff*16.5)];
26 | [nPath addQuadCurveToPoint:CGPointMake(diff*11.5, diff*16.5) controlPoint:CGPointMake(diff*11, size.height)];
27 |
28 | [nPath addLineToPoint: CGPointMake(diff*16.5, diff*11.5)];
29 | [nPath addQuadCurveToPoint:CGPointMake(diff*16.5, diff*10.5) controlPoint:CGPointMake(size.width, diff*11)];
30 |
31 | [nPath addLineToPoint: CGPointMake(diff*6.5, diff*0.5)];
32 | [nPath addQuadCurveToPoint:CGPointMake(diff*5.5, diff*0.5) controlPoint:CGPointMake(diff*6, 0)];
33 | [nPath closePath];
34 |
35 | [nPath moveToPoint: CGPointMake(diff*4, diff*4)];
36 |
37 | [nPath addLineToPoint:CGPointMake(diff*2, diff*6)];
38 | [nPath addLineToPoint:CGPointMake(diff*3, diff*7)];
39 |
40 | for (NSInteger i = 0; i<4; i++)
41 | {
42 | CGPoint topPoint = CGPointMake(diff*(5.5+i*2), diff*(4.5+i*2));
43 |
44 | if (i%2 != 0)
45 | {
46 | topPoint = CGPointMake(diff*(4.2+i*2), diff*(5.8+i*2));
47 | }
48 |
49 | CGPoint bottomPoint = CGPointMake(topPoint.x+diff, topPoint.y+diff);
50 |
51 | [nPath addLineToPoint: topPoint];
52 |
53 | [nPath addCurveToPoint: bottomPoint controlPoint1: CGPointMake(topPoint.x + diff*0.75, topPoint.y - diff*0.75) controlPoint2: CGPointMake(bottomPoint.x + diff*0.75, bottomPoint.y - diff*0.75)];
54 |
55 | [nPath addLineToPoint: CGPointMake(diff*(4+i*2), diff*(8+i*2))];
56 | [nPath addLineToPoint: CGPointMake(diff*(5+i*2), diff*(9+i*2))];
57 | }
58 |
59 | [nPath addLineToPoint: CGPointMake(diff*15, diff*11)];
60 | [nPath addLineToPoint: CGPointMake(diff*6, diff*2)];
61 | [nPath closePath];
62 |
63 | return nPath;
64 | }
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/DebugHelper/SRDebugHelper.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRDebugHelper.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 16/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface SRDebugHelper : NSObject
13 |
14 | +(BOOL)isBeingDebugged;
15 |
16 | +(struct task_basic_info)memoryReport;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/DebugHelper/SRDebugHelper.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRDebugHelper.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 16/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SRDebugHelper.h"
10 | #import
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 |
17 | @implementation SRDebugHelper
18 |
19 | +(struct task_basic_info)memoryReport
20 | {
21 | struct task_basic_info info;
22 | mach_msg_type_number_t size = sizeof(info);
23 | task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size);
24 | return info;
25 | // if( kerr == KERN_SUCCESS ) {
26 | // NSLog(@"Memory in use (in bytes): %lu", info.resident_size);
27 | // } else {
28 | // NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
29 | // }
30 | }
31 |
32 | +(BOOL)isBeingDebugged
33 | // Returns true if the current process is being debugged (either
34 | // running under the debugger or has a debugger attached post facto).
35 | {
36 | int junk;
37 | int mib[4];
38 | struct kinfo_proc info;
39 | size_t size;
40 |
41 | // Initialize the flags so that, if sysctl fails for some bizarre
42 | // reason, we get a predictable result.
43 |
44 | info.kp_proc.p_flag = 0;
45 |
46 | // Initialize mib, which tells sysctl the info we want, in this case
47 | // we're looking for information about a specific process ID.
48 |
49 | mib[0] = CTL_KERN;
50 | mib[1] = KERN_PROC;
51 | mib[2] = KERN_PROC_PID;
52 | mib[3] = getpid();
53 |
54 | // Call sysctl.
55 |
56 | size = sizeof(info);
57 | junk = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0);
58 | assert(junk == 0);
59 |
60 | // We're being debugged if the P_TRACED flag is set.
61 |
62 | return ( (info.kp_proc.p_flag & P_TRACED) != 0 );
63 | }
64 |
65 | @end
66 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQAngleView/IQAngleView.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQAngleView.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface IQAngleView : UIView
12 |
13 | @property(nonatomic, strong) UIColor *textColor;
14 | @property(nonatomic, assign) CGFloat angle;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQAngleView/IQProtractorView.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQProtractorView.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 24/12/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface IQProtractorView : UIView
12 |
13 | @property(strong, readonly) UIPanGestureRecognizer *panRecognizer;
14 |
15 | @property(nonatomic, strong) UIColor *textColor;
16 | @property(nonatomic, strong) UIColor *protractorColor;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/HFColorPicker/HFColorButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // HFColorButton.h
3 | // HFColorPickerDemo
4 | //
5 | // Created by Hendrik Frahmann on 30.04.14.
6 | // Copyright (c) 2014 Hendrik Frahmann. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface HFColorButton : UIButton
12 |
13 | @property (nonatomic, strong) IBInspectable UIColor* color;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/HFColorPicker/HFColorButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // HFColorButton.m
3 | // HFColorPickerDemo
4 | //
5 | // Created by Hendrik Frahmann on 30.04.14.
6 | // Copyright (c) 2014 Hendrik Frahmann. All rights reserved.
7 | //
8 |
9 | #import "HFColorButton.h"
10 |
11 | @interface HFColorButton()
12 | {
13 | CGContextRef context;
14 | }
15 | @end
16 |
17 |
18 | @implementation HFColorButton
19 |
20 | @synthesize color = _color;
21 |
22 | static inline float radians(double degrees) { return degrees * M_PI / 180; }
23 |
24 | - (void)drawRect:(CGRect)rect
25 | {
26 | CGRect parentViewBounds = self.bounds;
27 |
28 | CGFloat centerX = CGRectGetWidth(parentViewBounds) / 2;
29 | CGFloat centerY = CGRectGetHeight(parentViewBounds) / 2;
30 |
31 | CGFloat radius = self.bounds.size.width / 2;
32 |
33 | // Get the graphics context and clear it
34 | if(context == nil)
35 | context = UIGraphicsGetCurrentContext();
36 | CGContextClearRect(context, rect);
37 |
38 | CGFloat colorRadius = radius * 0.6;
39 |
40 | if(self.selected)
41 | {
42 | colorRadius = radius * 0.7;
43 |
44 | CGContextSetShadowWithColor(context, CGSizeMake(0.0f, 0.0f), 2.0f, [[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor]);
45 | CGContextSetFillColor(context, CGColorGetComponents([[UIColor colorWithRed:1 green:1 blue:1 alpha:1.0] CGColor]));
46 | CGContextMoveToPoint(context, centerX, centerY);
47 | CGContextAddArc(context, centerX, centerY, radius*0.9, radians(0), radians(360), 0);
48 | CGContextClosePath(context);
49 | CGContextFillPath(context);
50 | }
51 |
52 |
53 | CGContextSetShadow(context, CGSizeMake(0,0), 0);
54 | CGContextSetFillColor(context, CGColorGetComponents([_color CGColor]));
55 | CGContextMoveToPoint(context, centerX, centerY);
56 | CGContextAddArc(context, centerX, centerY, colorRadius, radians(0), radians(360), 0);
57 | CGContextClosePath(context);
58 | CGContextFillPath(context);
59 | }
60 |
61 | @end
62 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/HFColorPicker/HFColorPickerView.h:
--------------------------------------------------------------------------------
1 | //
2 | // HFColorPickerView.h
3 | // HFColorPickerDemo
4 | //
5 | // Created by Hendrik Frahmann on 30.04.14.
6 | // Copyright (c) 2014 Hendrik Frahmann. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @protocol HFColorPickerViewDelegate;
12 |
13 | @interface HFColorPickerView : UIView
14 |
15 | @property (nonatomic, assign) IBOutlet id delegate;
16 | @property (nonatomic, strong) NSArray* colors;
17 | @property (nonatomic) CGFloat buttonDiameter;
18 | @property (nonatomic) NSInteger selectedIndex;
19 | @property (nonatomic) NSUInteger numberOfColorsPerRow;
20 |
21 | +(NSArray *)colorAttributes;
22 |
23 | @end
24 |
25 |
26 | @protocol HFColorPickerViewDelegate
27 |
28 | - (void)colorPicker:(HFColorPickerView*)colorPickerView selectedColor:(UIColor*)selectedColor;
29 |
30 | @end
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/IQColorPickerButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQColorPickerButton.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 | //
9 |
10 | #import "HFColorButton.h"
11 |
12 | @interface IQColorPickerButton : HFColorButton
13 |
14 | @property (nullable, readwrite, strong) UIView *inputView;
15 | @property (nullable, readwrite, strong) UIView *inputAccessoryView;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/IQTextPickerButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQTextPickerButton.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface IQTextPickerButton : UIButton
12 |
13 | @property (nullable, readwrite, strong) UIView *inputView;
14 | @property (nullable, readwrite, strong) UIView *inputAccessoryView;
15 |
16 | @property(nullable,nonatomic, strong) NSString* selectedItem;
17 |
18 | @property(nullable,nonatomic, strong) NSArray *items;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/IQTextPickerButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // IQTextPickerButton.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "IQTextPickerButton.h"
10 |
11 | @interface IQTextPickerButton ()
12 |
13 | @end
14 |
15 |
16 | @implementation IQTextPickerButton
17 | {
18 | UIPickerView *pickerView;
19 | }
20 |
21 | -(void)initialize
22 | {
23 | self.selected = YES;
24 |
25 | pickerView = [[UIPickerView alloc] init];
26 | [pickerView sizeToFit];
27 | pickerView.delegate = self;
28 |
29 | self.inputView = pickerView;
30 |
31 | {
32 | UIToolbar *toolbar = [[UIToolbar alloc] init];
33 | [toolbar sizeToFit];
34 |
35 | NSMutableArray *items = [[NSMutableArray alloc] init];
36 |
37 | //Flexible space
38 | UIBarButtonItem *nilButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
39 | [items addObject:nilButton];
40 |
41 | //Done button
42 | UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneAction:)];
43 | [items addObject:doneButton];
44 |
45 | // Adding button to toolBar.
46 | [toolbar setItems:items];
47 |
48 | self.inputAccessoryView = toolbar;
49 |
50 | [self addTarget:self action:@selector(textPickerTapped:) forControlEvents:UIControlEventTouchUpInside];
51 | }
52 |
53 | self.tintColor = [UIColor clearColor];
54 | }
55 |
56 | - (instancetype)initWithFrame:(CGRect)frame
57 | {
58 | self = [super initWithFrame:frame];
59 | if (self) {
60 | [self initialize];
61 | }
62 | return self;
63 | }
64 |
65 | -(void)awakeFromNib
66 | {
67 | [super awakeFromNib];
68 |
69 | [self initialize];
70 | }
71 |
72 | -(void)doneAction:(UIBarButtonItem*)item
73 | {
74 | [self resignFirstResponder];
75 | }
76 |
77 | -(void)textPickerTapped:(IQTextPickerButton*)textPicker
78 | {
79 | [self becomeFirstResponder];
80 | }
81 |
82 | -(BOOL)canBecomeFirstResponder
83 | {
84 | return YES;
85 | }
86 |
87 | -(BOOL)becomeFirstResponder
88 | {
89 | if (_selectedItem)
90 | {
91 | [pickerView selectRow:[_items indexOfObject:_selectedItem] inComponent:0 animated:YES];
92 | }
93 |
94 | return [super becomeFirstResponder];
95 | }
96 |
97 | -(BOOL)resignFirstResponder
98 | {
99 | self.selectedItem = _items[[pickerView selectedRowInComponent:0]];
100 | [self sendActionsForControlEvents:UIControlEventValueChanged];
101 | return [super resignFirstResponder];
102 | }
103 |
104 | -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
105 | {
106 | return 1;
107 | }
108 |
109 | -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
110 | {
111 | return _items.count;
112 | }
113 |
114 | -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
115 | {
116 | return _items[row];
117 | }
118 |
119 | -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
120 | {
121 | self.selectedItem = _items[row];
122 | [self sendActionsForControlEvents:UIControlEventValueChanged];
123 | }
124 |
125 | -(void)setSelectedItem:(NSString *)selectedItem
126 | {
127 | for (NSString *item in _items)
128 | {
129 | if ([item isEqualToString:selectedItem])
130 | {
131 | _selectedItem = selectedItem;
132 | [self setTitle:item forState:UIControlStateNormal];
133 | [pickerView selectRow:[_items indexOfObject:selectedItem] inComponent:0 animated:YES];
134 | break;
135 | }
136 | }
137 | }
138 |
139 | @end
140 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/UIColor+HexColors.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIColor+HexColors.h
3 | // KiwiHarness
4 | //
5 | // Created by Tim Duckett on 07/09/2012.
6 | // Copyright (c) 2012 Charismatic Megafauna Ltd. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIColor (HexColors)
12 |
13 | @property(nonatomic, readonly) NSString *hexValue;
14 | @property(nonatomic, readonly) CGFloat alpha;
15 | @property(nonatomic, readonly) CGFloat red;
16 | @property(nonatomic, readonly) CGFloat green;
17 | @property(nonatomic, readonly) CGFloat blue;
18 |
19 | +(UIColor *)colorWithHexString:(NSString *)hexString;
20 |
21 | -(BOOL)isDarkColor;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQColorPicker/UIColor+HexColors.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIColor+HexColors.m
3 | // KiwiHarness
4 | //
5 | // Created by Tim on 07/09/2012.
6 | // Copyright (c) 2012 Charismatic Megafauna Ltd. All rights reserved.
7 | //
8 |
9 | #import "UIColor+HexColors.h"
10 |
11 | @implementation UIColor (HexColors)
12 |
13 | -(CGFloat)alpha
14 | {
15 | return CGColorGetAlpha(self.CGColor);
16 | }
17 |
18 | -(CGFloat)red
19 | {
20 | CGFloat red;
21 |
22 | [self getRed:&red green:NULL blue:NULL alpha:NULL];
23 |
24 | return red;
25 | }
26 |
27 | -(CGFloat)green
28 | {
29 | CGFloat green;
30 |
31 | [self getRed:NULL green:&green blue:NULL alpha:NULL];
32 |
33 | return green;
34 | }
35 |
36 | -(CGFloat)blue
37 | {
38 | CGFloat blue;
39 |
40 | [self getRed:NULL green:NULL blue:&blue alpha:NULL];
41 |
42 | return blue;
43 | }
44 |
45 | +(UIColor *)colorWithHexString:(NSString *)hexString {
46 |
47 | if ([hexString length] != 6) {
48 | return nil;
49 | }
50 |
51 | // Brutal and not-very elegant test for non hex-numeric characters
52 | NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^a-fA-F|0-9]" options:0 error:NULL];
53 | NSUInteger match = [regex numberOfMatchesInString:hexString options:NSMatchingReportCompletion range:NSMakeRange(0, [hexString length])];
54 |
55 | if (match != 0) {
56 | return nil;
57 | }
58 |
59 | NSRange rRange = NSMakeRange(0, 2);
60 | NSString *rComponent = [hexString substringWithRange:rRange];
61 | unsigned rVal = 0;
62 | NSScanner *rScanner = [NSScanner scannerWithString:rComponent];
63 | [rScanner scanHexInt:&rVal];
64 | float rRetVal = (float)rVal / 255;
65 |
66 |
67 | NSRange gRange = NSMakeRange(2, 2);
68 | NSString *gComponent = [hexString substringWithRange:gRange];
69 | unsigned gVal = 0;
70 | NSScanner *gScanner = [NSScanner scannerWithString:gComponent];
71 | [gScanner scanHexInt:&gVal];
72 | float gRetVal = (float)gVal / 255;
73 |
74 | NSRange bRange = NSMakeRange(4, 2);
75 | NSString *bComponent = [hexString substringWithRange:bRange];
76 | unsigned bVal = 0;
77 | NSScanner *bScanner = [NSScanner scannerWithString:bComponent];
78 | [bScanner scanHexInt:&bVal];
79 | float bRetVal = (float)bVal / 255;
80 |
81 | return [UIColor colorWithRed:rRetVal green:gRetVal blue:bRetVal alpha:1.0f];
82 |
83 | }
84 |
85 | -(NSString *)hexValue
86 | {
87 | if (self == [UIColor whiteColor])
88 | {
89 | // Special case, as white doesn't fall into the RGB color space
90 | return @"ffffff";
91 | }
92 |
93 | CGFloat red;
94 | CGFloat blue;
95 | CGFloat green;
96 | CGFloat alpha;
97 |
98 | [self getRed:&red green:&green blue:&blue alpha:&alpha];
99 |
100 | int redDec = (int)(red * 255);
101 | int greenDec = (int)(green * 255);
102 | int blueDec = (int)(blue * 255);
103 |
104 | NSString *returnString = [NSString stringWithFormat:@"%02x%02x%02x", (unsigned int)redDec, (unsigned int)greenDec, (unsigned int)blueDec];
105 |
106 | return returnString;
107 |
108 | }
109 |
110 | -(BOOL)isDarkColor;
111 | {
112 | const CGFloat *componentColors = CGColorGetComponents(self.CGColor);
113 |
114 | CGFloat colorBrightness = ((componentColors[0] * 299) + (componentColors[1] * 587) + (componentColors[2] * 114)) / 1000;
115 |
116 | return (colorBrightness < 0.5);
117 | }
118 |
119 | @end
120 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQCropperView/IQCropperView.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQCropperView.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @class IQCropperView;
12 |
13 | typedef NS_ENUM(NSInteger, IQCropViewEdge) {
14 | IQCropViewEdgeNone,
15 | IQCropViewEdgeTopLeft,
16 | IQCropViewEdgeTop,
17 | IQCropViewEdgeTopRight,
18 | IQCropViewEdgeRight,
19 | IQCropViewEdgeBottomRight,
20 | IQCropViewEdgeBottom,
21 | IQCropViewEdgeBottomLeft,
22 | IQCropViewEdgeLeft
23 | };
24 |
25 | typedef NS_ENUM(NSInteger, IQ_IQAspectSize) {
26 | IQ_IQAspectSizeOriginal,
27 | IQ_IQAspectSizeSquare,
28 |
29 | IQ_IQAspectSize2x3,
30 | IQ_IQAspectSize3x4,
31 | IQ_IQAspectSize4x5,
32 | IQ_IQAspectSize5x7,
33 | IQ_IQAspectSize9x16,
34 | IQ_IQAspectSize1x235,
35 |
36 | IQ_IQAspectSize3x2,
37 | IQ_IQAspectSize4x3,
38 | IQ_IQAspectSize5x4,
39 | IQ_IQAspectSize7x5,
40 | IQ_IQAspectSize16x9,
41 | IQ_IQAspectSize235x1,
42 |
43 | };
44 |
45 | @protocol IQCropViewDelegate
46 |
47 | @optional
48 | -(void)cropViewDidChangedCropRect:(IQCropperView*)view;
49 |
50 | @end
51 |
52 | @interface IQCropperView : UIView
53 |
54 | @property(nonatomic, assign) UIEdgeInsets edgeInset;
55 |
56 | @property(nonatomic, weak) IBOutlet id delegate;
57 | @property(nonatomic, assign) CGRect cropRect;
58 | @property(nonatomic, assign) IQ_IQAspectSize aspectSize;
59 |
60 | -(void)updateCropRectAnimated:(BOOL)animated;
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQCropperView/UIImage+CropRotate.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+CropRotate.h
3 | //
4 | // Copyright 2015-2016 Timothy Oliver. All rights reserved.
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to
8 | // deal in the Software without restriction, including without limitation the
9 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 | // sell copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
21 | // IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 |
23 | #import
24 |
25 | @interface UIImage (CropRotate)
26 |
27 | - (UIImage *)croppedImageWithFrame:(CGRect)frame angle:(NSInteger)angle;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQCropperView/UIImage+CropRotate.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+CropRotate.m
3 | //
4 | // Copyright 2015-2016 Timothy Oliver. All rights reserved.
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to
8 | // deal in the Software without restriction, including without limitation the
9 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 | // sell copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
21 | // IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 |
23 | #import "UIImage+CropRotate.h"
24 |
25 | @implementation UIImage (CropRotate)
26 |
27 | - (BOOL)hasAlpha
28 | {
29 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(self.CGImage);
30 | return (alphaInfo == kCGImageAlphaFirst || alphaInfo == kCGImageAlphaLast ||
31 | alphaInfo == kCGImageAlphaPremultipliedFirst || alphaInfo == kCGImageAlphaPremultipliedLast);
32 | }
33 |
34 | - (UIImage *)croppedImageWithFrame:(CGRect)frame angle:(NSInteger)angle
35 | {
36 | frame = CGRectIntersection(CGRectMake(0, 0, self.size.width, self.size.height), frame);
37 |
38 | UIImage *croppedImage = nil;
39 | UIGraphicsBeginImageContextWithOptions(frame.size, ![self hasAlpha], self.scale);
40 | {
41 | CGContextRef context = UIGraphicsGetCurrentContext();
42 |
43 | //To conserve memory in not needing to completely re-render the image re-rotated,
44 | //map the image to a view and then use Core Animation to manipulate its rotation
45 | if (angle != 0) {
46 | UIImageView *imageView = [[UIImageView alloc] initWithImage:self];
47 | imageView.layer.minificationFilter = kCAFilterNearest;
48 | imageView.layer.magnificationFilter = kCAFilterNearest;
49 | imageView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, angle * (M_PI/180.0f));
50 | CGRect rotatedRect = CGRectApplyAffineTransform(imageView.bounds, imageView.transform);
51 | UIView *containerView = [[UIView alloc] initWithFrame:(CGRect){CGPointZero, rotatedRect.size}];
52 | [containerView addSubview:imageView];
53 | imageView.center = containerView.center;
54 | CGContextTranslateCTM(context, -frame.origin.x, -frame.origin.y);
55 | [containerView.layer renderInContext:context];
56 | }
57 | else {
58 | CGContextTranslateCTM(context, -frame.origin.x, -frame.origin.y);
59 | [self drawAtPoint:CGPointZero];
60 | }
61 |
62 | croppedImage = UIGraphicsGetImageFromCurrentImageContext();
63 | }
64 | UIGraphicsEndImageContext();
65 |
66 | return croppedImage;
67 | }
68 |
69 |
70 | @end
71 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+AffineTransform.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+CGAffineTransform.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | CGFloat IQAffineTransformGetAngle(CGAffineTransform t);
13 |
14 | CGSize IQAffineTransformGetScale(CGAffineTransform t);
15 |
16 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+AffineTransform.m:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+CGAffineTransform.m
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import "IQGeometry+AffineTransform.h"
10 |
11 | CGFloat IQAffineTransformGetAngle(CGAffineTransform t)
12 | {
13 | return atan2(t.b, t.a);
14 | }
15 |
16 | CGSize IQAffineTransformGetScale(CGAffineTransform t)
17 | {
18 | return CGSizeMake(sqrt(t.a * t.a + t.c * t.c), sqrt(t.b * t.b + t.d * t.d)) ;
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Angle.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+Angle.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | /*Angle conversion*/
13 | CGFloat IQDegreeToRadian(CGFloat angle);
14 | CGFloat IQRadianToDegree(CGFloat radians);
15 |
16 | /*Angle between two point*/
17 | // Say the distances are P1-P2 = A, P2-P3 = B and P3-P1 = C:
18 | // Angle = arccos ( (B^2-A^2-C^2) / 2AC )
19 | CGFloat IQPointGetAngle(CGPoint centerPoint, CGPoint point1, CGPoint point2);
20 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Angle.m:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+Angle.m
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import "IQGeometry+Angle.h"
10 | #import "IQGeometry+Distance.h"
11 |
12 | CGFloat IQDegreeToRadian(CGFloat angle)
13 | {
14 | return angle*(M_PI/180.0);
15 | }
16 |
17 | CGFloat IQRadianToDegree(CGFloat radians)
18 | {
19 | return radians*(180.0/M_PI);
20 | }
21 |
22 | CGFloat IQPointGetAngle(CGPoint centerPoint, CGPoint point1, CGPoint point2)
23 | {
24 | //Find angle.
25 | CGFloat angle = atan2(point2.y-centerPoint.y, point2.x-centerPoint.x) - atan2(point1.y-centerPoint.y, point1.x-centerPoint.x);
26 |
27 | //If angle is less than 0. then adding 360 degree to it.
28 | return (angle>0 ? angle : angle+M_PI*2);
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Distance.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+Distance.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | /*
12 | A (x1, y1) and B (x2, y2) = sqrt( (x2−x1)2+(y2−y1)2)
13 | */
14 | CGFloat IQPointGetDistance(CGPoint point1, CGPoint point2);
15 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Distance.m:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+Distance.m
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import "IQGeometry+Distance.h"
10 |
11 | CGFloat IQPointGetDistance(CGPoint point1, CGPoint point2)
12 | {
13 | //Saving Variables.
14 | CGFloat fx = (point2.x - point1.x);
15 | CGFloat fy = (point2.y - point1.y);
16 |
17 | return sqrt((fx*fx + fy*fy));
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Line.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+CGLine.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | struct IQLine {
13 | CGPoint beginPoint;
14 | CGPoint endPoint;
15 | };
16 | typedef struct IQLine IQLine;
17 |
18 | IQLine IQLineMake(CGPoint beginPoint, CGPoint endPoint);
19 |
20 |
21 |
22 | @interface NSValue (Line)
23 |
24 | + (id)valueWithIQLine:(IQLine)line;
25 |
26 | - (IQLine)lineValue;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Line.m:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+CGLine.m
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import "IQGeometry+Line.h"
10 |
11 | IQLine IQLineMake(CGPoint beginPoint, CGPoint endPoint)
12 | {
13 | IQLine line; line.beginPoint = beginPoint; line.endPoint = endPoint; return line;
14 | }
15 |
16 |
17 |
18 | @implementation NSValue (Line)
19 |
20 | + (id)valueWithIQLine:(IQLine)line
21 | {
22 | return [NSValue value:&line withObjCType:@encode(IQLine)];
23 | }
24 |
25 | - (IQLine)lineValue;
26 | {
27 | IQLine line; [self getValue:&line]; return line;
28 | }
29 |
30 | @end
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Point.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+CGPoint.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "IQGeometry+Line.h"
12 |
13 | CGPoint IQPointGetMidPoint(CGPoint point1, CGPoint point2);
14 |
15 | /* (x1,y1) (x,y) (x2,y2) */
16 | /* *-----------------*----------------------------------* */
17 | /* <----distance-----> */
18 | //Returns a point(x,y) lies between point1(x1,y1) and point2(x2,y2) by distance from point1(x1,y1).
19 | CGPoint IQPointWithDistance(CGPoint point1, CGPoint point2, CGFloat distance);
20 |
21 | /*
22 | line1.beginPoint line2.endPoint
23 | \ /
24 | \ /
25 | \/
26 | /\
27 | / \
28 | / \
29 | line2.beginPoint line1.endPoint
30 | */
31 | CGPoint IQPointOfIntersect(IQLine line1, IQLine line2);
32 |
33 | CGFloat IQPointGetDistanceOfPoint(CGPoint point, IQLine line);
34 |
35 | /* Centroid of points, A, B and C is (x1+x2+x3)/3, (y1+y2+y3)/3 */
36 | CGPoint IQPointCentroidOfPoints(NSArray* points);
37 |
38 | CGPoint IQPointRotate(CGPoint basePoint,CGPoint point, CGFloat angle);
39 |
40 | CGPoint IQPointGetNearPoint(CGPoint basePoint, NSArray *points);
41 |
42 | CGPoint IQPointFlipHorizontal(CGPoint point, CGRect outerRect);
43 |
44 | CGPoint IQPointFlipVertical(CGPoint point, CGRect outerRect);
45 |
46 | CGPoint IQPointAspectFill(CGPoint point, CGSize destSize, CGRect sourceRect);
47 |
48 | CGPoint IQPointOffset(CGPoint aPoint, CGFloat dx, CGFloat dy);
49 |
50 | CGPoint IQPointScale(CGPoint aPoint, CGFloat wScale, CGFloat hScale);
51 |
52 | // Flipping coordinates
53 | CGPoint IQPointFlip(CGPoint point);
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Rect.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+Convenience.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | /*Set Origin*/
13 | CGRect IQRectSetX(CGRect rect, CGFloat x);
14 | CGRect IQRectSetY(CGRect rect, CGFloat y);
15 | CGRect IQRectSetOrigin(CGRect rect, CGPoint origin);
16 | CGRect IQRectMakeOrigin(CGRect rect, CGFloat x, CGFloat y);
17 |
18 | /*Set Size*/
19 | CGRect IQRectSetHeight(CGRect rect, CGFloat height);
20 | CGRect IQRectSetWidth(CGRect rect, CGFloat width);
21 | CGRect IQRectSetSize(CGRect rect, CGSize size);
22 | CGRect IQRectMakeSize(CGRect rect, CGFloat width, CGFloat height);
23 |
24 | /*Set Center*/
25 | CGRect IQRectSetCenter(CGRect rect, CGPoint center);
26 | CGPoint IQRectGetCenter(CGRect rect);
27 | CGRect IQRectWithCenterSize(CGPoint center, CGSize size);
28 | CGRect IQRectCenteredInRect(CGRect rect, CGRect mainRect);
29 |
30 | /*Rect from Points*/
31 | CGRect IQRectFromPoint(CGPoint startPoint, CGPoint endPoint);
32 |
33 | CGPoint IQRectGetTopLeft(CGRect rect);
34 | CGPoint IQRectGetTopRight(CGRect rect);
35 | CGPoint IQRectGetBottomLeft(CGRect rect);
36 | CGPoint IQRectGetBottomRight(CGRect rect);
37 |
38 | /*Flip Rect Origin and Size*/
39 | CGRect IQRectFlipHorizontal(CGRect rect, CGRect outerRect);
40 | CGRect IQRectFlipVertical(CGRect rect, CGRect outerRect);
41 | CGRect IQRectFlipFlop(CGRect rect);
42 | // Does not affect size
43 | CGRect IQRectFlipOrigin(CGRect rect);
44 | // Does not affect point of origin
45 | CGRect IQRectFlipSize(CGRect rect);
46 |
47 | /*Scale*/
48 | CGRect IQRectScale(CGRect rect, CGFloat wScale, CGFloat hScale);
49 | CGRect IQRectScaleOrigin(CGRect rect, CGFloat wScale, CGFloat hScale);
50 | CGRect IQRectScaleSize(CGRect rect, CGFloat wScale, CGFloat hScale);
51 |
52 | /*Aspect Fit*/
53 | CGRect IQRectAspectFit(CGSize sourceSize, CGRect destRect);
54 | CGFloat IQAspectScaleFit(CGSize sourceSize, CGRect destRect);
55 | // Only scales down, not up, and centers result
56 | CGRect IQRectFitSizeInRect(CGSize sourceSize, CGRect destRect);
57 |
58 | /*Aspect Fill*/
59 | CGRect IQRectAspectFillRect(CGSize sourceSize, CGRect destRect);
60 | CGFloat IQAspectScaleFill(CGSize sourceSize, CGRect destRect);
61 |
62 | CGRect IQBoundAspectFillRectWithAngle(CGRect rect, CGFloat angle);
63 | CGRect IQBoundAspectFitRectWithAngle(CGRect rect, CGFloat angle);
64 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Size.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+CGSize.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | CGSize IQSizeScale(CGSize aSize, CGFloat wScale, CGFloat hScale);
13 |
14 | CGSize IQSizeFlip(CGSize size);
15 |
16 | CGSize IQSizeFitInSize(CGSize sourceSize, CGSize destSize);
17 |
18 | CGSize IQSizeGetScale(CGSize sourceSize, CGSize destSize);
19 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry+Size.m:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry+CGSize.m
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import "IQGeometry+Size.h"
10 |
11 | CGSize IQSizeScale(CGSize aSize, CGFloat wScale, CGFloat hScale)
12 | {
13 | return CGSizeMake(aSize.width * wScale, aSize.height * hScale);
14 | }
15 |
16 | CGSize IQSizeGetScale(CGSize sourceSize, CGSize destSize)
17 | {
18 | CGFloat scaleW = destSize.width / sourceSize.width;
19 | CGFloat scaleH = destSize.height / sourceSize.height;
20 |
21 | return CGSizeMake(scaleW, scaleH);
22 | }
23 |
24 | CGSize IQSizeFlip(CGSize size)
25 | {
26 | return CGSizeMake(size.height, size.width);
27 | }
28 |
29 | CGSize IQSizeFitInSize(CGSize sourceSize, CGSize destSize)
30 | {
31 | CGFloat destScale;
32 | CGSize newSize = sourceSize;
33 |
34 | if (newSize.height && (newSize.height > destSize.height))
35 | {
36 | destScale = destSize.height / newSize.height;
37 | newSize.width *= destScale;
38 | newSize.height *= destScale;
39 | }
40 |
41 | if (newSize.width && (newSize.width >= destSize.width))
42 | {
43 | destScale = destSize.width / newSize.width;
44 | newSize.width *= destScale;
45 | newSize.height *= destScale;
46 | }
47 |
48 | return newSize;
49 | }
50 |
51 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQGeometry/IQGeometry.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQGeometry.h
3 | // Geometry Extension
4 | //
5 | // Created by Iftekhar Mac Pro on 8/25/13.
6 | // Copyright (c) 2013 Iftekhar. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import
12 | #import
13 | #import
14 | #import
15 | #import
16 | #import
17 | #import
18 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQLineFrameView/IQLineFrameView.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQLineFrameView.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @class IQLineFrameView;
12 |
13 | @protocol IQLineFrameViewDelegate
14 |
15 | -(void)lineFrameDidChangeStartingScalePoint:(IQLineFrameView*)lineView;
16 |
17 | @end
18 |
19 | @interface IQLineFrameView : UIView
20 |
21 | @property(nonatomic, weak) id delegate;
22 |
23 | @property(nonatomic,assign) CGPoint startingScalePoint;
24 | @property(nonatomic,assign) CGSize scaleMargin;
25 |
26 | @property(nonatomic,assign) CGFloat deviceScale;
27 |
28 | @property(nonatomic,assign) CGFloat zoomScale;
29 | -(void)setZoomScale:(CGFloat)zoomScale animated:(BOOL)animated;
30 |
31 | @property(nonatomic,weak) UIView *respectiveView;
32 |
33 | @property(nonatomic, strong) UIColor *lineColor;
34 | @property(nonatomic,strong) UIColor *rulerColor;
35 |
36 | @property(nonatomic, assign) BOOL hideRuler;
37 |
38 | -(void)updateUIAnimated:(BOOL)animated;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQLineFrameView/NSMutableArray+Stack.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSMutableArray+Stack.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 06/11/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSMutableArray (Stack)
12 |
13 | -(void)push:(id)object;
14 | -(void)pushObjects:(NSArray*)objects;
15 | -(id)pop;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQLineFrameView/NSMutableArray+Stack.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSMutableArray+Stack.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 06/11/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "NSMutableArray+Stack.h"
10 |
11 | @implementation NSMutableArray (Stack)
12 |
13 | -(void)push:(id)object
14 | {
15 | [self addObject:object];
16 | }
17 |
18 | -(void)pushObjects:(NSArray*)objects
19 | {
20 | [self addObjectsFromArray:objects];
21 | }
22 |
23 | -(id)pop
24 | {
25 | id object = [self lastObject];
26 | [self removeLastObject];
27 | return object;
28 | }
29 |
30 | @end
31 |
32 |
33 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQLineFrameView/SRLineImageView.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRLineView.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 06/11/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SRLineImageView : UIImageView
12 |
13 | @property(nonatomic,assign) CGPoint startingScalePoint;
14 | @property(nonatomic,assign) CGSize scaleMargin;
15 |
16 | @property(nonatomic,assign) CGFloat deviceScale;
17 |
18 | @property(nonatomic,assign) CGFloat zoomScale;
19 |
20 | @property(nonatomic, strong) UIColor *lineColor;
21 |
22 | @property(nonatomic, assign) BOOL hideLine;
23 |
24 | @end
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQRulerScrollView/IQRulerScrollView.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQRulerScrollView.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "SRLineImageView.h"
11 |
12 | @interface IQRulerScrollView : UIScrollView
13 |
14 | @property(nonatomic, strong) UIView *contentView;
15 |
16 | @property(nonatomic, strong) SRLineImageView *imageView;
17 |
18 | @property(nonatomic, strong) UIImage *image;
19 |
20 | @property (strong, nonatomic, readonly) UITapGestureRecognizer *doubleTapRecognizer;
21 |
22 | @property (strong, nonatomic) UITapGestureRecognizer *doubleTapTwoFingerRecognizer;
23 |
24 | @end
25 |
26 |
27 | @interface UIView (IQRulerScrollViewHierarchy)
28 |
29 | @property(readonly, assign) IQRulerScrollView *rulerView;
30 |
31 | @end
32 |
33 |
34 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQRulerScrollView/IQScrollContainerView.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQScrollContainerView.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "IQRulerScrollView.h"
11 |
12 | @interface IQScrollContainerView : UIView
13 |
14 | @property(nonatomic) UIViewContentMode contentMode; //UIViewContentModeScaleAspectFit & UIViewContentModeScaleAspectFill are only supported
15 |
16 | @property(nonatomic,weak) IBOutlet id delegate;
17 |
18 | @property(nonatomic, readonly) IQRulerScrollView *scrollView;
19 |
20 | @property(nonatomic, readonly) SRLineImageView *imageView;
21 |
22 | @property(nonatomic) UIImage *image;
23 |
24 | @property(nonatomic) CGFloat zoomScale;
25 | @property(nonatomic) CGFloat minimumZoomScale;
26 | @property(nonatomic) CGFloat maximumZoomScale;
27 | @property(nonatomic) BOOL showZoomControls;
28 |
29 | @property(nonatomic) CGPoint contentOffset;
30 | - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
31 |
32 | - (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated;
33 |
34 | - (void)zoomToMinimumScaleAnimated:(BOOL)animated;
35 | - (void)zoomToOriginalScaleAnimated:(BOOL)animated;
36 | - (void)zoomToMaximumScaleAnimated:(BOOL)animated;
37 |
38 | @end
39 |
40 | @interface UIView (IQScrollContainerViewHierarchy)
41 |
42 | @property(readonly, assign) IQScrollContainerView *scrollContainerView;
43 |
44 | @end
45 |
46 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQRulerScrollView/UIScrollView+Addition.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIScrollView+Addition.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface UIScrollView (Addition)
12 |
13 | - (void)setZoomScale:(CGFloat)scale withCenter:(CGPoint)center animated:(BOOL)animated;
14 |
15 | @property(nonatomic, readonly) CGSize minimumSize;
16 |
17 | @property(nonatomic, readonly) CGRect visibleRect;
18 |
19 | -(CGRect)visibleRectWithInsetSize:(CGSize)insetSize;
20 |
21 | @property(nonatomic, readonly) CGRect presentationLayerVisibleRect;
22 |
23 | -(CGRect)presentationLayerVisibleRectWithInsetSize:(CGSize)insetSize;
24 |
25 | /**
26 | * The receiver's `contentOffset` property, during animations. (read-only)
27 | *
28 | * `contentOffset` returns the wrong value if the receiver is animating, for example when `zoomBouncing` is `YES`.
29 | *
30 | * @see contentOffset
31 | */
32 | @property (nonatomic, assign, readonly) CGPoint presentationLayerContentOffset;
33 |
34 | /**
35 | * The receiver's `contentSize` property, during animations. (read-only)
36 | *
37 | * `contentSize` returns the wrong value if the receiver is animating, for example when `zoomBouncing` is `YES`.
38 | *
39 | * @see contentSize
40 | */
41 | @property (nonatomic, assign, readonly) CGSize presentationLayerContentSize;
42 |
43 | /**
44 | * The receiver's `zoomScale` property, during animations. (read-only)
45 | *
46 | * `zoomScale` returns the wrong value if the receiver is animating, for example when `zoomBouncing` is `YES`.
47 | *
48 | * @see zoomScale
49 | */
50 | @property (nonatomic, assign, readonly) CGFloat presentationLayerZoomScale;
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQRulerScrollView/UIScrollView+Addition.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIScrollView+Addition.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "UIScrollView+Addition.h"
10 |
11 | @implementation UIScrollView (Addition)
12 |
13 | - (void)setZoomScale:(CGFloat)scale withCenter:(CGPoint)center animated:(BOOL)animated
14 | {
15 | CGSize boundsSize = self.bounds.size;
16 | CGRect zoomRect;
17 |
18 | zoomRect.size.width = boundsSize.width / scale;
19 | zoomRect.size.height = boundsSize.height / scale;
20 | zoomRect.origin.x = center.x - (zoomRect.size.width / 2.0f);
21 | zoomRect.origin.y = center.y - (zoomRect.size.height / 2.0f);
22 |
23 | [self zoomToRect:zoomRect animated:YES];
24 | }
25 |
26 | -(CGRect)visibleRect
27 | {
28 | return [self visibleRectWithInsetSize:CGSizeZero];
29 | }
30 |
31 | -(CGRect)visibleRectWithInsetSize:(CGSize)insetSize
32 | {
33 | UIView *zoomView = [self.delegate respondsToSelector:@selector(viewForZoomingInScrollView:)] ? [self.delegate viewForZoomingInScrollView:self] : self;
34 | return [self convertRect:CGRectInset(self.bounds, insetSize.width, insetSize.height) toView:zoomView];
35 | }
36 |
37 | -(CGRect)presentationLayerVisibleRect
38 | {
39 | return [self presentationLayerVisibleRectWithInsetSize:CGSizeZero];
40 | }
41 |
42 | -(CGRect)presentationLayerVisibleRectWithInsetSize:(CGSize)insetSize
43 | {
44 | UIView *zoomView = [self.delegate respondsToSelector:@selector(viewForZoomingInScrollView:)] ? [self.delegate viewForZoomingInScrollView:self] : self;
45 | return [self.layer.presentationLayer convertRect:CGRectInset(self.layer.presentationLayer.bounds, insetSize.width, insetSize.height) toLayer:zoomView.layer.presentationLayer];
46 | }
47 |
48 | -(CGSize)minimumSize
49 | {
50 | if ([self.delegate respondsToSelector:@selector(viewForZoomingInScrollView:)])
51 | {
52 | UIView *zoomView = [self.delegate viewForZoomingInScrollView:self];
53 | return CGSizeMake(CGRectGetWidth(zoomView.bounds)*self.minimumZoomScale, CGRectGetHeight(zoomView.bounds)*self.minimumZoomScale);
54 | }
55 | else
56 | {
57 | return CGSizeZero;
58 | }
59 | }
60 |
61 | -(CGPoint)presentationLayerContentOffset
62 | {
63 | CALayer *presentationLayer = self.layer.presentationLayer;
64 | return presentationLayer.bounds.origin;
65 | }
66 |
67 | -(CGSize)presentationLayerContentSize
68 | {
69 | if ([self.delegate respondsToSelector:@selector(viewForZoomingInScrollView:)]) {
70 | UIView *zoomView = [self.delegate viewForZoomingInScrollView:self];
71 | CALayer *zoomPresentationLayer = zoomView.layer.presentationLayer;
72 |
73 | return zoomPresentationLayer.frame.size;
74 | } else
75 | return self.contentSize;
76 | }
77 |
78 | -(CGFloat)presentationLayerZoomScale
79 | {
80 | if ([self.delegate respondsToSelector:@selector(viewForZoomingInScrollView:)]) {
81 | UIView *zoomView = [self.delegate viewForZoomingInScrollView:self];
82 | CALayer *zoomPresentationLayer = zoomView.layer.presentationLayer;
83 |
84 | return zoomPresentationLayer.transform.m11;
85 | } else
86 | return self.zoomScale;
87 | }
88 |
89 | @end
90 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/IQRulerView/IQRulerView.h:
--------------------------------------------------------------------------------
1 | //
2 | // IQRulerView.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "IQAngleView.h"
11 |
12 | @interface IQRulerView : UIView
13 |
14 | @property(strong, readonly) UIPanGestureRecognizer *panRecognizer;
15 |
16 | @property(nonatomic,assign) CGFloat deviceScale;
17 | @property(nonatomic,assign) CGFloat zoomScale;
18 | @property(nonatomic,weak) UIView *respectiveView;
19 |
20 | @property(nonatomic,strong) UIColor *lineColor;
21 | @property(nonatomic,strong) UIColor *rulerColor;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/MPCoachMarks/MPCoachMark.h:
--------------------------------------------------------------------------------
1 | //
2 | // MPCoachMark.h
3 | // Example
4 | //
5 | // Created by marcelo.perretta@gmail.com on 7/8/15.
6 | // Copyright (c) 2015 MAWAPE. All rights reserved.
7 | //
8 | // This code is distributed under the terms and conditions of the MIT license.
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy
11 | // of this software and associated documentation files (the "Software"), to deal
12 | // in the Software without restriction, including without limitation the rights
13 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | // copies of the Software, and to permit persons to whom the Software is
15 | // furnished to do so, subject to the following conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be included in
18 | // all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26 | // THE SOFTWARE.
27 |
28 | #import
29 |
30 | typedef NS_ENUM(NSInteger, MaskShape) {
31 | DEFAULT,
32 | SHAPE_CIRCLE,
33 | SHAPE_SQUARE,
34 | };
35 |
36 | typedef NS_ENUM(NSInteger, LabelAligment) {
37 | LABEL_ALIGNMENT_CENTER,
38 | LABEL_ALIGNMENT_LEFT,
39 | LABEL_ALIGNMENT_RIGHT,
40 | };
41 |
42 | typedef NS_ENUM(NSInteger, LabelPosition) {
43 | LABEL_POSITION_BOTTOM,
44 | LABEL_POSITION_LEFT,
45 | LABEL_POSITION_TOP,
46 | LABEL_POSITION_RIGHT,
47 | LABEL_POSITION_RIGHT_BOTTOM
48 | };
49 |
50 | @interface MPCoachMark : NSObject
51 |
52 | - (instancetype)init __attribute__((unavailable("init is not available")));
53 |
54 | -(instancetype)initWithAttributes:(NSDictionary*)attributes;
55 | +(instancetype)markWithAttributes:(NSDictionary*)attributes;
56 |
57 | @property(nonatomic, weak) UIView *view;
58 | @property(nonatomic, assign) CGRect rect;
59 | @property(nonatomic, assign) UIEdgeInsets inset;
60 | @property(nonatomic, strong) UIColor *borderColor;
61 |
62 | @property(nonatomic, assign) NSTimeInterval beginInterval;
63 | @property(nonatomic, strong) NSString *caption;
64 | @property(nonatomic, assign) MaskShape shape;
65 | @property(nonatomic, assign) LabelPosition position;
66 | @property(nonatomic, assign) LabelAligment alignment;
67 | @property(nonatomic, strong) UIImage *image;
68 | @property(nonatomic, assign) CGFloat cutoutRadius;
69 |
70 |
71 | @end
72 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/MPCoachMarks/MPCoachMark.m:
--------------------------------------------------------------------------------
1 | //
2 | // MPCoachMark.m
3 | // Example
4 | //
5 | // Created by marcelo.perretta@gmail.com on 7/8/15.
6 | // Copyright (c) 2015 MAWAPE. All rights reserved.
7 | //
8 | // This code is distributed under the terms and conditions of the MIT license.
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy
11 | // of this software and associated documentation files (the "Software"), to deal
12 | // in the Software without restriction, including without limitation the rights
13 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | // copies of the Software, and to permit persons to whom the Software is
15 | // furnished to do so, subject to the following conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be included in
18 | // all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26 | // THE SOFTWARE.
27 |
28 | #import "MPCoachMark.h"
29 |
30 | @implementation MPCoachMark
31 |
32 | -(instancetype)initWithAttributes:(NSDictionary *)attributes
33 | {
34 | self = [super init];
35 |
36 | if (self)
37 | {
38 | self.view = [attributes objectForKey:@"view"];
39 | self.rect = [[attributes objectForKey:@"rect"] CGRectValue];
40 | self.inset = ([attributes objectForKey:@"inset"])?[[attributes objectForKey:@"inset"] UIEdgeInsetsValue]:UIEdgeInsetsMake(-10, -10, -10, -10);
41 | self.borderColor = [attributes objectForKey:@"borderColor"];
42 |
43 | self.beginInterval = [[attributes objectForKey:@"beginInterval"] doubleValue];
44 |
45 | self.caption = [attributes objectForKey:@"caption"];
46 | self.shape = [[attributes objectForKey:@"shape"] integerValue];
47 | self.position = [[attributes objectForKey:@"position"] integerValue];
48 | self.alignment = [[attributes objectForKey:@"alignment"] integerValue];
49 | self.image = [[attributes objectForKey:@"image"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
50 | self.cutoutRadius = ([attributes objectForKey:@"cutoutRadius"])?[[attributes objectForKey:@"cutoutRadius"] floatValue]:5.0;
51 | }
52 |
53 | return self;
54 | }
55 |
56 | +(instancetype)markWithAttributes:(NSDictionary*)attributes
57 | {
58 | return [[self alloc] initWithAttributes:attributes];
59 | }
60 |
61 | @end
62 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/MPCoachMarks/MPCoachMarkView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MPCoachMarks.h
3 | // Example
4 | //
5 | // Created by marcelo.perretta@gmail.com on 7/8/15.
6 | // Copyright (c) 2015 MAWAPE. All rights reserved.
7 | //
8 | // This code is distributed under the terms and conditions of the MIT license.
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy
11 | // of this software and associated documentation files (the "Software"), to deal
12 | // in the Software without restriction, including without limitation the rights
13 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | // copies of the Software, and to permit persons to whom the Software is
15 | // furnished to do so, subject to the following conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be included in
18 | // all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26 | // THE SOFTWARE.
27 |
28 | #import
29 | #import "MPCoachMark.h"
30 |
31 |
32 | #ifndef MP_WEAK
33 | #if __has_feature(objc_arc_weak)
34 | #define MP_WEAK weak
35 | #elif __has_feature(objc_arc)
36 | #define MP_WEAK unsafe_unretained
37 | #else
38 | #define MP_WEAK assign
39 | #endif
40 | #endif
41 |
42 |
43 | typedef NS_ENUM(NSInteger, ContinueLocation) {
44 | LOCATION_TOP,
45 | LOCATION_CENTER,
46 | LOCATION_BOTTOM,
47 | };
48 |
49 | @protocol MPCoachMarksViewDelegate;
50 |
51 | @interface MPCoachMarkView : UIView
52 |
53 | @property (nonatomic, MP_WEAK) id delegate;
54 | @property (nonatomic, strong) NSArray *coachMarks;
55 | @property (nonatomic, strong) UILabel *lblCaption;
56 | @property (nonatomic, strong) UIColor *maskColor;
57 | @property (nonatomic, strong) UILabel *lblContinue;
58 | @property (nonatomic, strong) UIButton *btnSkipCoach;
59 |
60 | @property (nonatomic, readonly) NSUInteger markIndex;
61 |
62 | @property (nonatomic) CGFloat animationDuration;
63 | @property (nonatomic) CGFloat cutoutRadius;
64 | @property (nonatomic) CGFloat maxLblWidth;
65 | @property (nonatomic) CGFloat lblSpacing;
66 | @property (nonatomic) BOOL enableContinueLabel;
67 | @property (nonatomic) BOOL enableSkipButton;
68 | @property (nonatomic) ContinueLocation continueLocation;
69 | @property (nonatomic, strong) UIImageView *arrowImage;
70 |
71 | + (instancetype)startWithCoachMarks:(NSArray*)marks;
72 |
73 | -(void)goToCoachMarkIndexed:(NSUInteger)index;
74 |
75 | @end
76 |
77 | @protocol MPCoachMarksViewDelegate
78 |
79 | @optional
80 | - (void)coachMarksView:(MPCoachMarkView *)coachMarksView willNavigateToIndex:(NSUInteger)index;
81 | - (void)coachMarksView:(MPCoachMarkView *)coachMarksView willMoveFromIndex:(NSUInteger)index;
82 | - (void)coachMarksView:(MPCoachMarkView *)coachMarksView didNavigateToIndex:(NSUInteger)index;
83 | - (void)coachMarksViewWillCleanup:(MPCoachMarkView *)coachMarksView;
84 | - (void)coachMarksViewDidCleanup:(MPCoachMarkView *)coachMarksView;
85 | - (void)coachMarksViewDidClicked:(MPCoachMarkView *)coachMarksView atIndex:(NSInteger)index;
86 |
87 | @end
88 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/SmoothedBIView/IQ_SmoothedBIView.h:
--------------------------------------------------------------------------------
1 | //
2 | // SmoothedBIView.h
3 | // FreehandDrawingTut
4 | //
5 | // Created by A Khan on 12/10/2012.
6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface IQ_SmoothedBIView : UIView
12 |
13 | @property(nonatomic, strong, readonly) UIPanGestureRecognizer *panRecognizer;
14 |
15 | @property(nonatomic, strong) UIColor *strokeColor;
16 |
17 | @property(nonatomic, assign) CGFloat strokeWidth;
18 |
19 | -(void)clear;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/UIImage+FloodFill/LinkedListStack.h:
--------------------------------------------------------------------------------
1 | //
2 | // LinkedList.h
3 | // NSDataLinkedList
4 | //
5 | // Created by Sam Davies on 26/09/2012.
6 | // Copyright (c) 2012 VisualPutty. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #define FINAL_NODE_OFFSET -1
12 | #define INVALID_NODE_CONTENT INT_MIN
13 | typedef struct PointNode
14 | {
15 | NSInteger nextNodeOffset;
16 |
17 | NSInteger point;
18 |
19 | } PointNode;
20 |
21 | @interface LinkedListStack : NSObject
22 | {
23 | NSMutableData *nodeCache;
24 |
25 | NSInteger freeNodeOffset;
26 | NSInteger topNodeOffset;
27 | NSInteger _cacheSizeIncrements;
28 |
29 | NSInteger multiplier;
30 | }
31 |
32 | - (id)initWithCapacity:(NSInteger)capacity incrementSize:(NSInteger)increment andMultiplier:(NSInteger)mul;
33 | - (id)initWithCapacity:(NSInteger)capacity;
34 |
35 | - (void)pushFrontX:(NSInteger)x andY:(NSInteger)y;
36 | - (NSInteger)popFront:(NSInteger *)x andY:(NSInteger *)y;
37 | @end
38 |
--------------------------------------------------------------------------------
/ScreenRuler/Vendor/UIImage+FloodFill/UIImage+FloodFill.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+FloodFill.h
3 | // ImageFloodFilleDemo
4 | //
5 | // Created by chintan on 15/07/13.
6 | // Copyright (c) 2013 ZWT. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "LinkedListStack.h"
11 |
12 | @interface UIImage (FloodFill)
13 |
14 | - (UIImage *) floodFillFromPoint:(CGPoint)startPoint withColor:(UIColor *)newColor andTolerance:(int)tolerance;
15 | - (UIImage *) floodFillFromPoint:(CGPoint)startPoint withColor:(UIColor *)newColor andTolerance:(int)tolerance useAntiAlias:(BOOL)antiAlias;
16 |
17 | @end
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Home Page Flow/SRCropViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRCropViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "SRHomeViewController.h"
11 |
12 | @interface SRCropViewController : UIViewController
13 |
14 | @property(nonatomic, weak) id delegate;
15 | @property(nonatomic, strong) UIImage* image;
16 | @property(nonatomic, assign) CGFloat zoomScale;
17 | @property(nonatomic, assign) CGPoint contentOffset;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Home Page Flow/SRDrawViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRDrawViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "SRHomeViewController.h"
11 |
12 | @interface SRDrawViewController : UIViewController
13 |
14 | @property(nonatomic, weak) id delegate;
15 | @property(nonatomic, strong) UIImage* image;
16 | @property(nonatomic, assign) CGFloat zoomScale;
17 | @property(nonatomic, assign) CGPoint contentOffset;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Home Page Flow/SREditOptionViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SREditOptionViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "SRHomeViewController.h"
11 |
12 | @interface SREditOptionViewController : UIViewController
13 |
14 | @property(nonatomic, weak) id delegate;
15 | @property(nonatomic, strong) UIImage* image;
16 | @property(nonatomic, assign) CGFloat zoomScale;
17 | @property(nonatomic, assign) CGPoint contentOffset;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Home Page Flow/SRHomeViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRHomeViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @protocol SRImageControllerDelegate
12 |
13 | -(void)controller:(UIViewController*)controller finishWithImage:(UIImage*)image zoomScale:(CGFloat)zoomScale contentOffset:(CGPoint)contentOffset;
14 |
15 | @end
16 |
17 | @interface SRHomeViewController : UIViewController
18 |
19 | @property(nonatomic, strong) UIImage *image;
20 | -(void)openWithLatestScreenshot;
21 |
22 | @property (assign, nonatomic) BOOL isRequestingImage;
23 | @property (assign, nonatomic) BOOL isRequestShouldIgnore;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingMagnifierController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingMagnifierController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingMagnifierController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingMagnifierController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingMagnifierController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingMagnifierController.h"
10 |
11 | @interface SROnboardingMagnifierController ()
12 |
13 | @end
14 |
15 | @implementation SROnboardingMagnifierController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view.
20 | }
21 |
22 | - (void)didReceiveMemoryWarning {
23 | [super didReceiveMemoryWarning];
24 | // Dispose of any resources that can be recreated.
25 | }
26 |
27 | /*
28 | #pragma mark - Navigation
29 |
30 | // In a storyboard-based application, you will often want to do a little preparation before navigation
31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
32 | // Get the new view controller using [segue destinationViewController].
33 | // Pass the selected object to the new view controller.
34 | }
35 | */
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingNavigationController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingNavigationController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingNavigationController : UINavigationController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingNavigationController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingNavigationController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingNavigationController.h"
10 | #import "SROnboardingWelcomeController.h"
11 | #import "SROnboardingZoomController.h"
12 |
13 | @interface SROnboardingNavigationController ()
14 |
15 | @end
16 |
17 | @implementation SROnboardingNavigationController
18 |
19 | - (void)viewDidLoad {
20 | [super viewDidLoad];
21 |
22 | NSLog(@"%@",self.view.subviews);
23 |
24 | self.view.backgroundColor = [UIColor whiteColor];
25 |
26 | UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
27 | [button addTarget:self action:@selector(nextAction:) forControlEvents:UIControlEventTouchUpInside];
28 | button.frame = CGRectMake(50, 500, 100, 100);
29 | [button setTitle:@"next" forState:UIControlStateNormal];
30 | [self.view addSubview:button];
31 |
32 | UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 200, 100, 100)];
33 | label.text = @"Welcome navigation top";
34 | label.backgroundColor = [UIColor greenColor];
35 | [self.view addSubview:label];
36 | NSLog(@"%@",self.view);
37 |
38 | SROnboardingWelcomeController *welcomeController = [[SROnboardingWelcomeController alloc] init];
39 | self.viewControllers = @[welcomeController];
40 | [self setNavigationBarHidden:YES];
41 |
42 | UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(50, 350, 100, 100)];
43 | label2.text = @"Welcome navigation bottom";
44 | label2.backgroundColor = [UIColor greenColor];
45 | [self.view addSubview:label2];
46 | NSLog(@"%@",self.view);
47 |
48 | NSLog(@"%@",self.view.subviews);
49 | }
50 |
51 | -(void)nextAction:(UIButton*)sender
52 | {
53 | SROnboardingZoomController *controller = [[SROnboardingZoomController alloc] init];
54 |
55 | UIViewController *topController = self.topViewController;
56 |
57 | [UIView transitionFromView:topController.view toView:controller.view duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve completion:^(BOOL finished) {
58 | }];
59 |
60 | [self pushViewController:controller animated:NO];
61 | }
62 |
63 |
64 | @end
65 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingProtractorController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingProtractorController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingProtractorController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingProtractorController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingProtractorController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingProtractorController.h"
10 |
11 | @interface SROnboardingProtractorController ()
12 |
13 | @end
14 |
15 | @implementation SROnboardingProtractorController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view.
20 | }
21 |
22 | - (void)didReceiveMemoryWarning {
23 | [super didReceiveMemoryWarning];
24 | // Dispose of any resources that can be recreated.
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingRulerScaleController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingRulerScaleController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingRulerScaleController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingRulerScaleController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingRulerScaleController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingRulerScaleController.h"
10 |
11 | @interface SROnboardingRulerScaleController ()
12 |
13 | @end
14 |
15 | @implementation SROnboardingRulerScaleController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view.
20 | }
21 |
22 | - (void)didReceiveMemoryWarning {
23 | [super didReceiveMemoryWarning];
24 | // Dispose of any resources that can be recreated.
25 | }
26 |
27 | /*
28 | #pragma mark - Navigation
29 |
30 | // In a storyboard-based application, you will often want to do a little preparation before navigation
31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
32 | // Get the new view controller using [segue destinationViewController].
33 | // Pass the selected object to the new view controller.
34 | }
35 | */
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingScaleAdjustController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingScaleAdjustController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingScaleAdjustController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingScaleAdjustController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingScaleAdjustController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingScaleAdjustController.h"
10 |
11 | @interface SROnboardingScaleAdjustController ()
12 |
13 | @end
14 |
15 | @implementation SROnboardingScaleAdjustController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view.
20 | }
21 |
22 | - (void)didReceiveMemoryWarning {
23 | [super didReceiveMemoryWarning];
24 | // Dispose of any resources that can be recreated.
25 | }
26 |
27 | /*
28 | #pragma mark - Navigation
29 |
30 | // In a storyboard-based application, you will often want to do a little preparation before navigation
31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
32 | // Get the new view controller using [segue destinationViewController].
33 | // Pass the selected object to the new view controller.
34 | }
35 | */
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingScreenScaleController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingScreenScaleController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingScreenScaleController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingScreenScaleController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingScreenScaleController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingScreenScaleController.h"
10 |
11 | @interface SROnboardingScreenScaleController ()
12 |
13 | @end
14 |
15 | @implementation SROnboardingScreenScaleController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view.
20 | }
21 |
22 | - (void)didReceiveMemoryWarning {
23 | [super didReceiveMemoryWarning];
24 | // Dispose of any resources that can be recreated.
25 | }
26 |
27 | /*
28 | #pragma mark - Navigation
29 |
30 | // In a storyboard-based application, you will often want to do a little preparation before navigation
31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
32 | // Get the new view controller using [segue destinationViewController].
33 | // Pass the selected object to the new view controller.
34 | }
35 | */
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingWelcomeController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingWelcomeController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingWelcomeController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingWelcomeController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingWelcomeController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingWelcomeController.h"
10 |
11 | @interface SROnboardingWelcomeController ()
12 |
13 | @end
14 |
15 | @implementation SROnboardingWelcomeController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // self.view.backgroundColor = [UIColor whiteColor];
20 | // Do any additional setup after loading the view.
21 |
22 | UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];
23 | label.text = @"Welcome";
24 | label.backgroundColor = [UIColor greenColor];
25 | [self.view addSubview:label];
26 | NSLog(@"%@",self.view);
27 | }
28 |
29 | - (void)didReceiveMemoryWarning {
30 | [super didReceiveMemoryWarning];
31 | // Dispose of any resources that can be recreated.
32 | }
33 |
34 | /*
35 | #pragma mark - Navigation
36 |
37 | // In a storyboard-based application, you will often want to do a little preparation before navigation
38 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
39 | // Get the new view controller using [segue destinationViewController].
40 | // Pass the selected object to the new view controller.
41 | }
42 | */
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingZoomController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingZoomController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SROnboardingZoomController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Onboarding Controllers/SROnboardingZoomController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SROnboardingZoomController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook02 on 12/01/17.
6 | // Copyright © 2017 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SROnboardingZoomController.h"
10 |
11 | @interface SROnboardingZoomController ()
12 |
13 | @end
14 |
15 | @implementation SROnboardingZoomController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 |
20 | UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];
21 | label.text = @"zoom";
22 | label.backgroundColor = [UIColor greenColor];
23 | [self.view addSubview:label];
24 | NSLog(@"%@",self.view);
25 | }
26 |
27 | - (void)didReceiveMemoryWarning {
28 | [super didReceiveMemoryWarning];
29 | // Dispose of any resources that can be recreated.
30 | }
31 |
32 | /*
33 | #pragma mark - Navigation
34 |
35 | // In a storyboard-based application, you will often want to do a little preparation before navigation
36 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
37 | // Get the new view controller using [segue destinationViewController].
38 | // Pass the selected object to the new view controller.
39 | }
40 | */
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Screenshot Picker Flow/Cell/SRScreenshotCollectionViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRScreenshotCollectionViewCell.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRScreenshotCollectionViewCell : UICollectionViewCell
12 |
13 | @property(nonatomic, strong) IBOutlet UIImageView *screenshotImageView;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Screenshot Picker Flow/Cell/SRScreenshotCollectionViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRScreenshotCollectionViewCell.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRScreenshotCollectionViewCell.h"
10 |
11 | @implementation SRScreenshotCollectionViewCell
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Screenshot Picker Flow/SRScreenshotCollectionViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRScreenshotCollectionViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @class SRScreenshotCollectionViewController;
12 |
13 | @protocol SRScreenshotCollectionViewControllerDelegate
14 |
15 | -(void)screenshotControllerDidSelectOpenCamera:(SRScreenshotCollectionViewController*)controller;
16 |
17 | -(void)screenshotControllerDidSelectOpenPhotoLibrary:(SRScreenshotCollectionViewController*)controller;
18 |
19 | -(void)screenshotController:(SRScreenshotCollectionViewController*)controller didSelectScreenshot:(UIImage*)image;
20 |
21 | @end
22 |
23 | @interface SRScreenshotCollectionViewController : UIViewController
24 |
25 | @property(nonatomic, weak) id delegate;
26 |
27 | -(void)presentOverViewController:(UIViewController*)controller completion:(void (^)(void))completion;
28 | -(void)dismissViewControllerCompletion:(void (^)(void))completion;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRLicenseTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRLicenseTableViewCell.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 16/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SRLicenseTableViewCell : UITableViewCell
12 |
13 | @property (strong, nonatomic) IBOutlet UILabel *labelTitle;
14 | @property (strong, nonatomic) IBOutlet UIButton *buttonLink;
15 | @property (strong, nonatomic) IBOutlet UILabel *labelLicenseType;
16 | @property (strong, nonatomic) IBOutlet UILabel *labelDescription;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRLicenseTableViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRLicenseTableViewCell.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 16/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SRLicenseTableViewCell.h"
10 |
11 | @implementation SRLicenseTableViewCell
12 |
13 | - (void)awakeFromNib {
14 | [super awakeFromNib];
15 | // Initialization code
16 | }
17 |
18 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
19 | [super setSelected:selected animated:animated];
20 |
21 | // Configure the view for the selected state
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRSettingsTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRSettingsTableViewCell.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRSettingsTableViewCell : UITableViewCell
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRSettingsTableViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRSettingsTableViewCell.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRSettingsTableViewCell.h"
10 |
11 | @implementation SRSettingsTableViewCell
12 |
13 | - (void)awakeFromNib {
14 | [super awakeFromNib];
15 | // Initialization code
16 | }
17 |
18 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
19 | [super setSelected:selected animated:animated];
20 |
21 | // Configure the view for the selected state
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRThemeTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRThemeTableViewCell.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "HFColorButton.h"
11 |
12 | @interface SRThemeTableViewCell : UITableViewCell
13 |
14 | @property(nonatomic,strong) IBOutlet UILabel *labelTitle;
15 | @property(nonatomic,strong) IBOutlet UISegmentedControl *segmentControl;
16 |
17 | @property(nonatomic,strong) IBOutletCollection(HFColorButton) NSArray *themeColorButtons;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRThemeTableViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRThemeTableViewCell.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRThemeTableViewCell.h"
10 |
11 | @implementation SRThemeTableViewCell
12 |
13 | - (void)awakeFromNib {
14 | [super awakeFromNib];
15 |
16 | self.labelTitle.text = NSLocalizedString(@"color_theme", nil);
17 | [self.segmentControl setTitle:NSLocalizedString(@"natural", nil) forSegmentAtIndex:0];
18 | [self.segmentControl setTitle:NSLocalizedString(@"inverted", nil) forSegmentAtIndex:1];
19 | }
20 |
21 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
22 | [super setSelected:selected animated:animated];
23 |
24 | // Configure the view for the selected state
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRVersionTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRVersionTableViewCell.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRVersionTableViewCell : UITableViewCell
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/Cell/SRVersionTableViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRVersionTableViewCell.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRVersionTableViewCell.h"
10 |
11 | @implementation SRVersionTableViewCell
12 |
13 | - (void)awakeFromNib {
14 | [super awakeFromNib];
15 | // Initialization code
16 | }
17 |
18 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
19 | [super setSelected:selected animated:animated];
20 |
21 | // Configure the view for the selected state
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/SRAcknowledgementTableViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // AcknowledgementTableViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRAcknowledgementTableViewController : UITableViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/SRDeveloperSettingsViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRDeveloperSettingsViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 16/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SRDeveloperSettingsViewController : UITableViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/SRDeveloperSettingsViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRDeveloperSettingsViewController.m
3 | // Screen Ruler
4 | //
5 | // Created by IEMacBook01 on 16/10/16.
6 | // Copyright © 2016 InfoEnum Software Systems. All rights reserved.
7 | //
8 |
9 | #import "SRDeveloperSettingsViewController.h"
10 | #import "AppDelegate.h"
11 | #import "SRDebugHelper.h"
12 |
13 | @interface SRDeveloperSettingsViewController ()
14 |
15 | @property (strong, nonatomic) IBOutlet UILabel *labelShowTouches;
16 | @property (strong, nonatomic) IBOutlet UISwitch *switchShowTouch;
17 |
18 | @property (strong, nonatomic) IBOutlet UILabel *labelInUseMemory;
19 | @property (strong, nonatomic) IBOutlet UILabel *labelInUseMemoryBytes;
20 |
21 | @property (strong, nonatomic) IBOutlet UILabel *labelVirtualMemory;
22 | @property (strong, nonatomic) IBOutlet UILabel *labelVirtualMemoryBytes;
23 |
24 | @end
25 |
26 | @implementation SRDeveloperSettingsViewController
27 |
28 | - (void)viewDidLoad {
29 | [super viewDidLoad];
30 |
31 | self.title = NSLocalizedString(@"developer_options", nil);
32 | self.labelShowTouches.text = NSLocalizedString(@"show_touches", nil);
33 | self.labelInUseMemory.text = NSLocalizedString(@"in_use_memory", nil);
34 | self.labelVirtualMemory.text = NSLocalizedString(@"virtual_memory", nil);
35 |
36 | AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
37 |
38 | _switchShowTouch.on = appDelegate.shouldShowTouches;
39 | }
40 |
41 | -(void)viewWillAppear:(BOOL)animated
42 | {
43 | [super viewWillAppear:animated];
44 |
45 | _labelInUseMemoryBytes.text = @"...";
46 | _labelVirtualMemoryBytes.text = @"...";
47 | [[NSOperationQueue new] addOperationWithBlock:^{
48 | struct task_basic_info info = [SRDebugHelper memoryReport];
49 |
50 | NSByteCountFormatter *formatter = [NSByteCountFormatter new];
51 |
52 | [[NSOperationQueue mainQueue] addOperationWithBlock:^{
53 | _labelInUseMemoryBytes.text = [formatter stringFromByteCount:info.resident_size];
54 | _labelVirtualMemoryBytes.text = [formatter stringFromByteCount:info.virtual_size];
55 | }];
56 | }];
57 | }
58 |
59 | - (IBAction)showTouchesAction:(UISwitch *)sender
60 | {
61 | AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
62 | appDelegate.shouldShowTouches = _switchShowTouch.on;
63 | }
64 |
65 | -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
66 | {
67 | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
68 | {
69 | return 70;
70 | }
71 | else
72 | {
73 | return 44;
74 | }
75 | }
76 |
77 | @end
78 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/SRPrivacyPolicyViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRPrivacyPolicyViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRPrivacyPolicyViewController : UIViewController
12 |
13 | @property (strong, nonatomic) IBOutlet UIWebView *webView;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/SRPrivacyPolicyViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SRPrivacyPolicyViewController.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import "SRPrivacyPolicyViewController.h"
10 |
11 | @interface SRPrivacyPolicyViewController ()
12 | @property (strong, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator;
13 | @end
14 |
15 | @implementation SRPrivacyPolicyViewController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 |
20 | self.title = NSLocalizedString(@"terms_and_conditions", nil);
21 |
22 | NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"EULA" ofType:@"html"];
23 | NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
24 | [self.webView loadHTMLString:htmlString baseURL:nil];
25 |
26 | }
27 |
28 | -(UIStatusBarAnimation)preferredStatusBarUpdateAnimation
29 | {
30 | return UIStatusBarAnimationSlide;
31 | }
32 |
33 | - (IBAction)doneButton:(id)sender
34 | {
35 | [self dismissViewControllerAnimated:YES completion:nil];
36 | }
37 |
38 | -(void)webViewDidStartLoad:(UIWebView *)webView
39 | {
40 | [self.activityIndicator startAnimating];
41 | }
42 |
43 | -(void)webViewDidFinishLoad:(UIWebView *)webView
44 | {
45 | [self.activityIndicator stopAnimating];
46 | }
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/ScreenRuler/ViewControllers/Settings Flow/SRSettingTableViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SRSettingTableViewController.h
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 |
11 | @interface SRSettingTableViewController : UITableViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ScreenRuler/ar.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ar.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ar.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ca.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ca.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ca.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/da.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/da.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/da.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/de.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/de.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/de.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/el.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/el.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/el.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/en.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/ScreenRuler/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/en.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/es-MX.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/es-MX.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/es-MX.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/es.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/es.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/ScreenRuler/fi.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/fi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/fi.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/fil-PH.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/fil-PH.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/fil-PH.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/fil.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/fil.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/fil.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/fr-CA.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/fr-CA.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/fr-CA.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/fr.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/hi.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "स्क्रीनशॉट पैमाना";
2 | "CFBundleName" = "स्क्रीनशॉट पैमाना";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/id.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/id.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/id.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/it.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ja.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ja.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ja.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ko.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ko.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // Screen Ruler
4 | //
5 | // Created by Mohd Iftekhar Qurashi
6 | // Copyright (c) 2016 InfoEum Software Systems. Licensed under the Apache License v2.0.
7 | // See COPYING or https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ScreenRuler/ms.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ms.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ms.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/nl.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/nl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/nl.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/pl.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Linijka";
2 | "CFBundleName" = "Linijka";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/pl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/pl.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/pt-BR.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/pt-PT.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/pt-PT.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/pt-PT.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ro.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ro.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ro.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ru.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Экранная Линейка";
2 | "CFBundleName" = "Экранная Линейка";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/sk.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/sk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/sk.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/sv.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/sv.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/sv.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ta-IN.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ta-LK.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ta-LK.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ta-LK.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ta-MY.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ta-MY.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ta-MY.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ta-SG.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ta-SG.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ta-SG.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/ta.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/ta.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/ta.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/th.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/th.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/th.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/tr.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/tr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/tr.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/uk.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/uk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/uk.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/vi.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/vi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/vi.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/zh-Hans.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/zh-Hans.lproj/Localizable.strings
--------------------------------------------------------------------------------
/ScreenRuler/zh-Hant.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Screen Ruler";
2 | "CFBundleName" = "Screen Ruler";
3 |
--------------------------------------------------------------------------------
/ScreenRuler/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackiftekhar/IQScreenRuler/4bbdfb1e4ea5e3ba03ceab9e0f79b00b3cd58399/ScreenRuler/zh-Hant.lproj/Localizable.strings
--------------------------------------------------------------------------------