Browse Source

【BOTA】快照模块,导出PNG功能调式

tangchao 1 year ago
parent
commit
2948604214

+ 10 - 26
PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -388,22 +388,6 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "5A8A0991-D6FE-4B68-9C28-F2586114E6ED"
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "4894"
-            endingLineNumber = "4894"
-            landmarkName = "menuItemClick_ExportPNG(_:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -414,8 +398,8 @@
             filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "4898"
-            endingLineNumber = "4898"
+            startingLineNumber = "4905"
+            endingLineNumber = "4905"
             landmarkName = "menuItemClick_ExportJPG(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -430,8 +414,8 @@
             filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "4902"
-            endingLineNumber = "4902"
+            startingLineNumber = "4909"
+            endingLineNumber = "4909"
             landmarkName = "menuItemClick_ExportPDF(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -446,8 +430,8 @@
             filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "4906"
-            endingLineNumber = "4906"
+            startingLineNumber = "4913"
+            endingLineNumber = "4913"
             landmarkName = "menuItemClick_Print(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -462,8 +446,8 @@
             filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "4914"
-            endingLineNumber = "4914"
+            startingLineNumber = "4921"
+            endingLineNumber = "4921"
             landmarkName = "deleteAllSnapshot(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -478,8 +462,8 @@
             filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "4910"
-            endingLineNumber = "4910"
+            startingLineNumber = "4917"
+            endingLineNumber = "4917"
             landmarkName = "menuItemClick_SelectAll(_:)"
             landmarkType = "7">
          </BreakpointContent>

+ 10 - 1
PDF Office/PDF Master/Class/Common/Category/NSImage+KMExtension.swift

@@ -7,7 +7,7 @@
 
 import Foundation
 
-extension NSImage {
+@objc extension NSImage {
     class func image(with size: NSSize, drawingHandler:((_ dstRect: NSRect) -> Bool)?) -> NSImage {
         var image = NSImage(size: size)
         image.lockFocus()
@@ -17,4 +17,13 @@ extension NSImage {
         image.unlockFocus()
         return image
     }
+    
+    func pngData() -> Data? {
+        guard let data = self.tiffRepresentation else {
+            return nil
+        }
+        let imageRep = NSBitmapImageRep(data: data)
+        imageRep?.size = self.size
+        return imageRep?.representation(using: .png, properties: [:])
+    }
 }

+ 36 - 0
PDF Office/PDF Master/Class/Common/Category/NSPanel+KMExtension.swift

@@ -144,4 +144,40 @@ extension NSPanel {
             }
         })
     }
+    
+    /**
+     * 保存数据
+     */
+    
+    public class func savePanel_data(_ window: NSWindow, imageData: Data?, completion:@escaping ((NSApplication.ModalResponse, URL?)->Void)) {
+        let savePanel = NSSavePanel()
+        savePanel.allowedFileTypes = ["png"]
+        savePanel.beginSheetModal(for: window, completionHandler: { result in
+            if result != .OK {
+                completion(result, nil)
+            } else {
+                do {
+                    try imageData?.write(to: savePanel.url!)
+//                    NSWorkspace.shared.selectFile(savePanel.url?.path, inFileViewerRootedAtPath: "")
+                    completion(result, savePanel.url!)
+                } catch {
+                    completion(result, nil)
+                }
+            }
+        })
+    }
+    
+    /**
+     * 保存数据
+     * 只返回成功结果
+     */
+    public class func savePanel_data_success(_ window: NSWindow, imageData: Data?, completion:@escaping ((URL)->Void)) {
+        self.savePanel_data(window, imageData: imageData) { response, url in
+            if (response != .OK) {
+                return
+            }
+            completion(url!)
+        }
+    }
+    
 }

+ 8 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift

@@ -4891,7 +4891,14 @@ extension KMLeftSideViewController {
     
     // MARK: - Snapshot
     @objc func menuItemClick_ExportPNG(_ sender: AnyObject?) {
-        KMPrint("KMLeftSideViewController-menuItemClick_ExportPNG...")
+        guard let snapshot = (sender as? NSMenuItem)?.representedObject as? KMSnapshotWindowController else {
+            return
+        }
+
+        let image = snapshot.thumbnailWithSize(0)
+        NSPanel.savePanel_data_success(self.view.window!, imageData: image?.pngData()) { url in
+            NSWorkspace.shared.selectFile(url.path, inFileViewerRootedAtPath: "")
+        }
     }
     
     @objc func menuItemClick_ExportJPG(_ sender: AnyObject?) {