-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathNSGeometry.swift
250 lines (191 loc) · 10.1 KB
/
NSGeometry.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
// TODO: It's not clear who is responsibile for defining these CGTypes, but we'll do it here.
public struct CGFloat {
/// The native type used to store the CGFloat, which is Float on
/// 32-bit architectures and Double on 64-bit architectures.
/// We assume 64 bit for now
public typealias NativeType = Double
public init() {
self.native = 0.0
}
public init(_ value: Float) {
self.native = NativeType(value)
}
public init(_ value: Double) {
self.native = NativeType(value)
}
/// The native value.
public var native: NativeType
}
public struct CGPoint {
public var x: CGFloat
public var y: CGFloat
public init() {
self.x = CGFloat()
self.y = CGFloat()
}
public init(x: CGFloat, y: CGFloat) {
self.x = x
self.y = y
}
}
public struct CGSize {
public var width: CGFloat
public var height: CGFloat
public init() {
self.width = CGFloat()
self.height = CGFloat()
}
public init(width: CGFloat, height: CGFloat) {
self.width = width
self.height = height
}
}
public struct CGRect {
public var origin: CGPoint
public var size: CGSize
public init() {
self.origin = CGPoint()
self.size = CGSize()
}
public init(origin: CGPoint, size: CGSize) {
self.origin = origin
self.size = size
}
}
public typealias NSPoint = CGPoint
public typealias NSPointPointer = UnsafeMutablePointer<NSPoint>
public typealias NSPointArray = UnsafeMutablePointer<NSPoint>
public typealias NSSize = CGSize
public typealias NSSizePointer = UnsafeMutablePointer<NSSize>
public typealias NSSizeArray = UnsafeMutablePointer<NSSize>
public typealias NSRect = CGRect
public typealias NSRectPointer = UnsafeMutablePointer<NSRect>
public typealias NSRectArray = UnsafeMutablePointer<NSRect>
public enum NSRectEdge : UInt {
case MinX
case MinY
case MaxX
case MaxY
}
public enum CGRectEdge : UInt32 {
case MinXEdge
case MinYEdge
case MaxXEdge
case MaxYEdge
}
extension NSRectEdge {
public init(rectEdge: CGRectEdge) { NSUnimplemented() }
}
public struct NSEdgeInsets {
public var top: CGFloat
public var left: CGFloat
public var bottom: CGFloat
public var right: CGFloat
public init() { NSUnimplemented() }
public init(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) { NSUnimplemented() }
}
public struct NSAlignmentOptions : OptionSetType {
public var rawValue : UInt64
public init(rawValue: UInt64) { self.rawValue = rawValue }
public static let AlignMinXInward = NSAlignmentOptions(rawValue: 1 << 0)
public static let AlignMinYInward = NSAlignmentOptions(rawValue: 1 << 1)
public static let AlignMaxXInward = NSAlignmentOptions(rawValue: 1 << 2)
public static let AlignMaxYInward = NSAlignmentOptions(rawValue: 1 << 3)
public static let AlignWidthInward = NSAlignmentOptions(rawValue: 1 << 4)
public static let AlignHeightInward = NSAlignmentOptions(rawValue: 1 << 5)
public static let AlignMinXOutward = NSAlignmentOptions(rawValue: 1 << 8)
public static let AlignMinYOutward = NSAlignmentOptions(rawValue: 1 << 9)
public static let AlignMaxXOutward = NSAlignmentOptions(rawValue: 1 << 10)
public static let AlignMaxYOutward = NSAlignmentOptions(rawValue: 1 << 11)
public static let AlignWidthOutward = NSAlignmentOptions(rawValue: 1 << 12)
public static let AlignHeightOutward = NSAlignmentOptions(rawValue: 1 << 13)
public static let AlignMinXNearest = NSAlignmentOptions(rawValue: 1 << 16)
public static let AlignMinYNearest = NSAlignmentOptions(rawValue: 1 << 17)
public static let AlignMaxXNearest = NSAlignmentOptions(rawValue: 1 << 18)
public static let AlignMaxYNearest = NSAlignmentOptions(rawValue: 1 << 19)
public static let AlignWidthNearest = NSAlignmentOptions(rawValue: 1 << 20)
public static let AlignHeightNearest = NSAlignmentOptions(rawValue: 1 << 21)
public static let AlignRectFlipped = NSAlignmentOptions(rawValue: 1 << 63) // pass this if the rect is in a flipped coordinate system. This allows 0.5 to be treated in a visually consistent way.
// convenience combinations
public static let AlignAllEdgesInward = [NSAlignmentOptions.AlignMinXInward, NSAlignmentOptions.AlignMaxXInward, NSAlignmentOptions.AlignMinYInward, NSAlignmentOptions.AlignMaxYInward]
public static let AlignAllEdgesOutward = [NSAlignmentOptions.AlignMinXOutward, NSAlignmentOptions.AlignMaxXOutward, NSAlignmentOptions.AlignMinYOutward, NSAlignmentOptions.AlignMaxYOutward]
public static let AlignAllEdgesNearest = [NSAlignmentOptions.AlignMinXNearest, NSAlignmentOptions.AlignMaxXNearest, NSAlignmentOptions.AlignMinYNearest, NSAlignmentOptions.AlignMaxYNearest]
}
public let NSZeroPoint: NSPoint = NSPoint()
public let NSZeroSize: NSSize = NSSize()
public let NSZeroRect: NSRect = NSRect()
public let NSEdgeInsetsZero: NSEdgeInsets = NSEdgeInsets()
public func NSMakePoint(x: CGFloat, _ y: CGFloat) -> NSPoint { NSUnimplemented() }
public func NSMakeSize(w: CGFloat, _ h: CGFloat) -> NSSize { NSUnimplemented() }
public func NSMakeRect(x: CGFloat, _ y: CGFloat, _ w: CGFloat, _ h: CGFloat) -> NSRect { NSUnimplemented() }
public func NSMaxX(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSMaxY(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSMidX(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSMidY(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSMinX(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSMinY(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSWidth(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSHeight(aRect: NSRect) -> CGFloat { NSUnimplemented() }
public func NSRectFromCGRect(cgrect: CGRect) -> NSRect { NSUnimplemented() }
public func NSRectToCGRect(nsrect: NSRect) -> CGRect { NSUnimplemented() }
public func NSPointFromCGPoint(cgpoint: CGPoint) -> NSPoint { NSUnimplemented() }
public func NSPointToCGPoint(nspoint: NSPoint) -> CGPoint { NSUnimplemented() }
public func NSSizeFromCGSize(cgsize: CGSize) -> NSSize { NSUnimplemented() }
public func NSSizeToCGSize(nssize: NSSize) -> CGSize { NSUnimplemented() }
public func NSEdgeInsetsMake(top: CGFloat, _ left: CGFloat, _ bottom: CGFloat, _ right: CGFloat) -> NSEdgeInsets { NSUnimplemented() }
public func NSEqualPoints(aPoint: NSPoint, _ bPoint: NSPoint) -> Bool { NSUnimplemented() }
public func NSEqualSizes(aSize: NSSize, _ bSize: NSSize) -> Bool { NSUnimplemented() }
public func NSEqualRects(aRect: NSRect, _ bRect: NSRect) -> Bool { NSUnimplemented() }
public func NSIsEmptyRect(aRect: NSRect) -> Bool { NSUnimplemented() }
public func NSEdgeInsetsEqual(aInsets: NSEdgeInsets, _ bInsets: NSEdgeInsets) -> Bool { NSUnimplemented() }
public func NSInsetRect(aRect: NSRect, _ dX: CGFloat, _ dY: CGFloat) -> NSRect { NSUnimplemented() }
public func NSIntegralRect(aRect: NSRect) -> NSRect { NSUnimplemented() }
public func NSIntegralRectWithOptions(aRect: NSRect, _ opts: NSAlignmentOptions) -> NSRect { NSUnimplemented() }
public func NSUnionRect(aRect: NSRect, _ bRect: NSRect) -> NSRect { NSUnimplemented() }
public func NSIntersectionRect(aRect: NSRect, _ bRect: NSRect) -> NSRect { NSUnimplemented() }
public func NSOffsetRect(aRect: NSRect, _ dX: CGFloat, _ dY: CGFloat) -> NSRect { NSUnimplemented() }
public func NSDivideRect(inRect: NSRect, _ slice: UnsafeMutablePointer<NSRect>, _ rem: UnsafeMutablePointer<NSRect>, _ amount: CGFloat, _ edge: NSRectEdge) { NSUnimplemented() }
public func NSPointInRect(aPoint: NSPoint, _ aRect: NSRect) -> Bool { NSUnimplemented() }
public func NSMouseInRect(aPoint: NSPoint, _ aRect: NSRect, _ flipped: Bool) -> Bool { NSUnimplemented() }
public func NSContainsRect(aRect: NSRect, _ bRect: NSRect) -> Bool { NSUnimplemented() }
public func NSIntersectsRect(aRect: NSRect, _ bRect: NSRect) -> Bool { NSUnimplemented() }
public func NSStringFromPoint(aPoint: NSPoint) -> String { NSUnimplemented() }
public func NSStringFromSize(aSize: NSSize) -> String { NSUnimplemented() }
public func NSStringFromRect(aRect: NSRect) -> String { NSUnimplemented() }
public func NSPointFromString(aString: String) -> NSPoint { NSUnimplemented() }
public func NSSizeFromString(aString: String) -> NSSize { NSUnimplemented() }
public func NSRectFromString(aString: String) -> NSRect { NSUnimplemented() }
extension NSValue {
public convenience init(point: NSPoint) { NSUnimplemented() }
public convenience init(size: NSSize) { NSUnimplemented() }
public convenience init(rect: NSRect) { NSUnimplemented() }
public convenience init(edgeInsets insets: NSEdgeInsets) { NSUnimplemented() }
public var pointValue: NSPoint { NSUnimplemented() }
public var sizeValue: NSSize { NSUnimplemented() }
public var rectValue: NSRect { NSUnimplemented() }
public var edgeInsetsValue: NSEdgeInsets { NSUnimplemented() }
}
extension NSCoder {
public func encodePoint(point: NSPoint) { NSUnimplemented() }
public func decodePoint() -> NSPoint { NSUnimplemented() }
public func encodeSize(size: NSSize) { NSUnimplemented() }
public func decodeSize() -> NSSize { NSUnimplemented() }
public func encodeRect(rect: NSRect) { NSUnimplemented() }
public func decodeRect() -> NSRect { NSUnimplemented() }
}
extension NSCoder {
public func encodePoint(point: NSPoint, forKey key: String) { NSUnimplemented() }
public func encodeSize(size: NSSize, forKey key: String) { NSUnimplemented() }
public func encodeRect(rect: NSRect, forKey key: String) { NSUnimplemented() }
public func decodePointForKey(key: String) -> NSPoint { NSUnimplemented() }
public func decodeSizeForKey(key: String) -> NSSize { NSUnimplemented() }
public func decodeRectForKey(key: String) -> NSRect { NSUnimplemented() }
}