소스 검색

add IM class

marinofaggiana 6 년 전
부모
커밋
144c0b09f4
2개의 변경된 파일109개의 추가작업 그리고 0개의 파일을 삭제
  1. 12 0
      Nextcloud.xcodeproj/project.pbxproj
  2. 97 0
      iOSClient/Imagemeter/IMImagemeter.swift

+ 12 - 0
Nextcloud.xcodeproj/project.pbxproj

@@ -535,6 +535,7 @@
 		F7D4238B1F0596C6009C9782 /* ThumbsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D423761F0596C6009C9782 /* ThumbsViewController.m */; };
 		F7D4238C1F0596C6009C9782 /* UIXToolbarView.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D423781F0596C6009C9782 /* UIXToolbarView.m */; };
 		F7D6650720FF341600BFBA9E /* NCMainCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7D6650620FF341600BFBA9E /* NCMainCommon.swift */; };
+		F7D7B0D42245271100E6FE36 /* IMImagemeter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7D7B0D32245271100E6FE36 /* IMImagemeter.swift */; };
 		F7DFB7E0219C312D00680748 /* NCRichDocumentTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = F7DFB7DF219C312D00680748 /* NCRichDocumentTemplate.m */; };
 		F7DFB7E1219C312D00680748 /* NCRichDocumentTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = F7DFB7DF219C312D00680748 /* NCRichDocumentTemplate.m */; };
 		F7DFB7E2219C312D00680748 /* NCRichDocumentTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = F7DFB7DF219C312D00680748 /* NCRichDocumentTemplate.m */; };
@@ -1371,6 +1372,7 @@
 		F7D5328F1F5D443B006568B1 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/Localizable.strings"; sourceTree = "<group>"; };
 		F7D532A41F5D4461006568B1 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
 		F7D6650620FF341600BFBA9E /* NCMainCommon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCMainCommon.swift; sourceTree = "<group>"; };
+		F7D7B0D32245271100E6FE36 /* IMImagemeter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMImagemeter.swift; sourceTree = "<group>"; };
 		F7DE9AB01F482FA5008DFE10 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
 		F7DFB7DE219C312D00680748 /* NCRichDocumentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NCRichDocumentTemplate.h; sourceTree = "<group>"; };
 		F7DFB7DF219C312D00680748 /* NCRichDocumentTemplate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NCRichDocumentTemplate.m; sourceTree = "<group>"; };
@@ -2747,6 +2749,14 @@
 			path = Sources;
 			sourceTree = "<group>";
 		};
+		F7D7B0D52245377800E6FE36 /* Imagemeter */ = {
+			isa = PBXGroup;
+			children = (
+				F7D7B0D32245271100E6FE36 /* IMImagemeter.swift */,
+			);
+			path = Imagemeter;
+			sourceTree = "<group>";
+		};
 		F7DFB7E9219C5A0500680748 /* Create cloud */ = {
 			isa = PBXGroup;
 			children = (
@@ -2901,6 +2911,7 @@
 				F7B0C1701EE8397E0033AC24 /* AutoUpload */,
 				F7BAAD951ED5A63D00B7EAD4 /* Database */,
 				F7A3214D1E9E2A070069AD1B /* Favorites */,
+				F7D7B0D52245377800E6FE36 /* Imagemeter */,
 				F7F54CAC1E5B143100E19C62 /* Library */,
 				F7BFFA621A24D7300044ED85 /* Login */,
 				F7BFCCBD1B68C21900548E76 /* ManageLocation+ManageAsset */,
@@ -3771,6 +3782,7 @@
 				F760F78A21F21F61006B1A73 /* UIImage+Size.swift in Sources */,
 				F70022B31EC4C9100080073F /* OCActivity.m in Sources */,
 				F734A8BF21B59137009DE2E8 /* WKCookieWebView.swift in Sources */,
+				F7D7B0D42245271100E6FE36 /* IMImagemeter.swift in Sources */,
 				F70022D41EC4C9100080073F /* NSDate+ISO8601.m in Sources */,
 				F762CB151EACB66200B38484 /* XLFormRowNavigationAccessoryView.m in Sources */,
 				F762CB0A1EACB66200B38484 /* XLFormDescriptor.m in Sources */,

+ 97 - 0
iOSClient/Imagemeter/IMImagemeter.swift

@@ -0,0 +1,97 @@
+//
+//  IMImagemeter.swift
+//  Nextcloud
+//
+//  Created by Marino Faggiana on 22/03/2019.
+//  Copyright © 2019 Marino Faggiana. All rights reserved.
+//
+//  Author Marino Faggiana <marino.faggiana@nextcloud.com>
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//
+
+import Foundation
+
+class IMImagemeterCodable: NSObject {
+    
+    struct imagemeterAnnotation: Codable {
+        
+        struct coordinates: Codable {
+            let x: Int
+            let y: Int
+        }
+        
+        struct end_pt: Codable {
+            let coordinates: [coordinates]
+        }
+        
+        struct audio_recording: Codable {
+            let recording_filename: String
+            let recording_duration_msecs: Int
+        }
+        
+        struct capture_timestamp: Codable {
+            let year: Int
+            let month: Int
+            let day: Int
+            let hour: Int
+            let minutes: Int
+            let seconds: Int
+        }
+        
+        struct image: Codable {
+            let title: String
+            let filename: String
+            let annotated_image_filename: String
+            let rotation:Int
+        }
+        
+        struct elements: Codable {
+            let id: Int
+            let class_: String
+            let center: [coordinates]
+            let width: Int
+            let arrows: [end_pt]
+            let text: String
+            let audio_recording: [audio_recording]
+        }
+        
+        let version: Int
+        let capture_timestamp: capture_timestamp
+        let image: image
+        let id: String
+        let last_modification: Int
+        let elements: [elements]
+    }
+    
+    @objc static let sharedInstance: IMImagemeterCodable = {
+        let instance = IMImagemeterCodable()
+        return instance
+    }()
+    
+    func decoderAnnotetion(_ annotation: Data) -> imagemeterAnnotation? {
+        
+        let jsonDecoder = JSONDecoder.init()
+        
+        do {
+            
+            let decode = try jsonDecoder.decode(imagemeterAnnotation.self, from: annotation)
+            return decode
+            
+        } catch let error {
+            print("Serious internal error in decoding metadata ("+error.localizedDescription+")")
+            return nil
+        }
+    }
+}