OSDN Git Service

guard の書き方を統一した
[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) else {
24                                             
25                                             fatalError("Can not create bitmap context")
26         }
27         
28         let maskGraphicsContext = NSGraphicsContext(cgContext: maskContext, flipped: false)
29         
30         
31         NSGraphicsContext.saveGraphicsState()
32         defer { NSGraphicsContext.restoreGraphicsState() }
33         
34         NSGraphicsContext.current = maskGraphicsContext
35         
36         let gradient = NSGradient(colorsAndLocations: (.white, 0.0),
37                                   (.white, middle1),
38                                   (.black, middle2),
39                                   (.black, 1.0))
40         gradient?.draw(in: bounds, angle: 0.0)
41         
42         guard let r = maskContext.makeImage() else { fatalError(" can not create image from context") }
43         
44         return r
45     }
46     
47     func isCharacterProtrude() -> Bool {
48         
49         guard let currentFont = font else {
50             
51             Swift.print("TextField dose not set font")
52             
53             return false
54         }
55         
56         let string = stringValue as NSString
57         let size = string.size(withAttributes: [.font: currentFont])
58         
59         return bounds.size.width - size.width < 3
60     }
61     
62 }