OSDN Git Service

スクリーンショットの撮影にSierraまでは今までの実装を使用するようにした
[kcd/KCD.git] / KCD / GameViewController.swift
index 29074a7..cb2292d 100644 (file)
@@ -108,16 +108,27 @@ final class GameViewController: NSViewController {
         window.endSheet(panelWindow)
     }
     
-    @IBAction func screenShot(_ sender: AnyObject?) {
+    func screenshotOld() {
         
-        let frame = view.visibleRect
-//        let screenshotBorder = UserDefaults.standard[.screenShotBorderWidth]
-//        let f = frame.insetBy(dx: -screenshotBorder, dy: -screenshotBorder)
+        let frame = webView.visibleRect
+        let screenshotBorder = UserDefaults.standard[.screenShotBorderWidth]
+        let f = frame.insetBy(dx: -screenshotBorder, dy: -screenshotBorder)
         
-        guard let window = view.window else { return Logger.shared.log("Can not get window") }
+        guard let rep = webView.bitmapImageRepForCachingDisplay(in: f) else { return }
         
-        let windowCoordinateFrame = view.convert(frame, to: nil)
+        webView.cacheDisplay(in: frame, to: rep)
+        AppDelegate.shared.registerScreenshot(rep, fromOnScreen: .zero)
+    }
+    
+    @available(OSX 10.13, *)
+    func screenshot() {
+        
+        let frame = view.visibleRect
+        let screenshotBorder = UserDefaults.standard[.screenShotBorderWidth]
+        let f = frame.insetBy(dx: -screenshotBorder, dy: -screenshotBorder)
+        let windowCoordinateFrame = view.convert(f, to: nil)
         
+        guard let window = view.window else { return Logger.shared.log("Can not get window") }
         let screenCoordinsteFrame = window.convertToScreen(windowCoordinateFrame)
         
         guard let screen = NSScreen.main else { return Logger.shared.log("Can not get Screen") }
@@ -141,6 +152,18 @@ final class GameViewController: NSViewController {
         AppDelegate.shared.registerScreenshot(rep, fromOnScreen: .zero)
     }
     
+    @IBAction func screenShot(_ sender: AnyObject?) {
+        
+        if #available(OSX 10.13, *) {
+            
+            screenshot()
+            
+        } else {
+            
+            screenshotOld()
+        }
+    }
+    
     override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
         
         guard let action: Selector = menuItem.action else { return false }