OSDN Git Service

バージョンを1.9b19に更新
[kcd/KCD.git] / KCD / Graphics.swift
1 //
2 //  Graphics.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/03/01.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 extension NSBezierPath {
12     
13     convenience init(start point: NSPoint) {
14         
15         self.init()
16         move(to: point)
17     }
18 }
19
20 func polygon(_ point: () -> [NSPoint]) -> NSBezierPath? {
21     
22     return polygon(points: point())
23 }
24
25 func polygon(points: [NSPoint]) -> NSBezierPath? {
26     
27     guard points.count > 2
28         else { return nil }
29     
30     let path = polyline(points: points)
31     path?.close()
32     
33     return path
34 }
35
36 func polyline(_ point: () -> [NSPoint]) -> NSBezierPath? {
37     
38     return polyline(points: point())
39 }
40
41 func polyline(points: [NSPoint]) -> NSBezierPath? {
42     
43     guard points.count > 1
44         else { return nil }
45     
46     return points.dropFirst().reduce(NSBezierPath(start: points[0]), lineToPoint)
47 }
48
49 func lineToPoint(path: NSBezierPath, point: NSPoint) -> NSBezierPath {
50     
51     path.line(to: point)
52     return path
53 }
54
55 func multiline(_ lines: () -> [(NSPoint, NSPoint)]) -> NSBezierPath {
56     
57     return multiline(lines: lines())
58 }
59
60 func multiline(lines: [(NSPoint, NSPoint)]) -> NSBezierPath {
61     
62     return lines.reduce(NSBezierPath(), line)
63 }
64
65 func line(_ path: NSBezierPath, _ points: (NSPoint, NSPoint)) -> NSBezierPath {
66     
67     path.move(to: points.0)
68     path.line(to: points.1)
69     return path
70 }