OSDN Git Service

Swift4.0にコンバートした
[kcd/KCD.git] / KCD / NSTextFieldExtension.swift
1 //
2 //  NSTextFieldExtension.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/09/16.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 extension NSTextField {
12     
13     func maskImage(middle1: CGFloat, middle2: CGFloat) -> CGImage {
14         
15         let colorspace = CGColorSpaceCreateDeviceGray()
16         
17         guard let maskContext = CGContext(data: nil,
18                                           width: Int(bounds.width),
19                                           height: Int(bounds.height),
20                                           bitsPerComponent: 8,
21                                           bytesPerRow: Int(bounds.width),
22                                           space: colorspace,
23                                           bitmapInfo: 0)
24             else { fatalError("Can not create bitmap context") }
25         
26         let maskGraphicsContext = NSGraphicsContext(cgContext: maskContext, flipped: false)
27         
28         
29         NSGraphicsContext.saveGraphicsState()
30         defer { NSGraphicsContext.restoreGraphicsState() }
31         
32         NSGraphicsContext.current = maskGraphicsContext
33         
34         let gradient = NSGradient(colorsAndLocations: (.white, 0.0),
35                                   (.white, middle1),
36                                   (.black, middle2),
37                                   (.black, 1.0))
38         gradient?.draw(in: bounds, angle: 0.0)
39         
40         guard let r = maskContext.makeImage()
41             else { fatalError(" can not create image from context") }
42         
43         return r
44     }
45     
46     func isCharacterProtrude() -> Bool {
47         
48         guard let currentFont = font else {
49             
50             Swift.print("TextField dose not set font")
51             
52             return false
53         }
54         
55         let string = stringValue as NSString
56         let size = string.size(withAttributes: [.font: currentFont])
57         
58         return bounds.size.width - size.width < 3
59     }
60     
61 }