Skip to content

Commit bf62043

Browse files
committed
Implement basic geometry functions
1 parent 4d6a23d commit bf62043

File tree

1 file changed

+54
-27
lines changed

1 file changed

+54
-27
lines changed

Foundation/NSGeometry.swift

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,35 @@ public enum CGRectEdge : UInt32 {
126126
}
127127

128128
extension NSRectEdge {
129-
public init(rectEdge: CGRectEdge) { NSUnimplemented() }
129+
public init(rectEdge: CGRectEdge) {
130+
switch rectEdge {
131+
case .MinXEdge: self = .MinX
132+
case .MinYEdge: self = .MinY
133+
case .MaxXEdge: self = .MaxX
134+
case .MaxYEdge: self = .MaxY
135+
}
136+
}
130137
}
131138

132139
public struct NSEdgeInsets {
133140
public var top: CGFloat
134141
public var left: CGFloat
135142
public var bottom: CGFloat
136143
public var right: CGFloat
137-
public init() { NSUnimplemented() }
138-
public init(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) { NSUnimplemented() }
144+
145+
public init() {
146+
self.top = CGFloat()
147+
self.left = CGFloat()
148+
self.bottom = CGFloat()
149+
self.right = CGFloat()
150+
}
151+
152+
public init(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) {
153+
self.top = top
154+
self.left = left
155+
self.bottom = bottom
156+
self.right = right
157+
}
139158
}
140159

141160
public struct NSAlignmentOptions : OptionSetType {
@@ -176,49 +195,57 @@ public let NSZeroSize: NSSize = NSSize()
176195
public let NSZeroRect: NSRect = NSRect()
177196
public let NSEdgeInsetsZero: NSEdgeInsets = NSEdgeInsets()
178197

179-
public func NSMakePoint(x: CGFloat, _ y: CGFloat) -> NSPoint { NSUnimplemented() }
198+
public func NSMakePoint(x: CGFloat, _ y: CGFloat) -> NSPoint { return NSPoint(x: x, y: y) }
199+
200+
public func NSMakeSize(w: CGFloat, _ h: CGFloat) -> NSSize { return NSSize(width: w, height: h) }
180201

181-
public func NSMakeSize(w: CGFloat, _ h: CGFloat) -> NSSize { NSUnimplemented() }
202+
public func NSMakeRect(x: CGFloat, _ y: CGFloat, _ w: CGFloat, _ h: CGFloat) -> NSRect { return NSRect(origin: NSPoint(x: x, y: y), size: NSSize(width: w, height: h)) }
182203

183-
public func NSMakeRect(x: CGFloat, _ y: CGFloat, _ w: CGFloat, _ h: CGFloat) -> NSRect { NSUnimplemented() }
204+
public func NSMaxX(aRect: NSRect) -> CGFloat { return CGFloat(aRect.origin.x.native + aRect.size.width.native) }
184205

185-
public func NSMaxX(aRect: NSRect) -> CGFloat { NSUnimplemented() }
206+
public func NSMaxY(aRect: NSRect) -> CGFloat { return CGFloat(aRect.origin.y.native + aRect.size.height.native) }
186207

187-
public func NSMaxY(aRect: NSRect) -> CGFloat { NSUnimplemented() }
208+
public func NSMidX(aRect: NSRect) -> CGFloat { return CGFloat(aRect.origin.x.native + (aRect.size.width.native / 2)) }
188209

189-
public func NSMidX(aRect: NSRect) -> CGFloat { NSUnimplemented() }
210+
public func NSMidY(aRect: NSRect) -> CGFloat { return CGFloat(aRect.origin.y.native + (aRect.size.height.native / 2)) }
190211

191-
public func NSMidY(aRect: NSRect) -> CGFloat { NSUnimplemented() }
212+
public func NSMinX(aRect: NSRect) -> CGFloat { return aRect.origin.x }
192213

193-
public func NSMinX(aRect: NSRect) -> CGFloat { NSUnimplemented() }
214+
public func NSMinY(aRect: NSRect) -> CGFloat { return aRect.origin.y }
194215

195-
public func NSMinY(aRect: NSRect) -> CGFloat { NSUnimplemented() }
216+
public func NSWidth(aRect: NSRect) -> CGFloat { return aRect.size.width }
196217

197-
public func NSWidth(aRect: NSRect) -> CGFloat { NSUnimplemented() }
218+
public func NSHeight(aRect: NSRect) -> CGFloat { return aRect.size.height }
198219

199-
public func NSHeight(aRect: NSRect) -> CGFloat { NSUnimplemented() }
220+
public func NSRectFromCGRect(cgrect: CGRect) -> NSRect { return cgrect }
200221

201-
public func NSRectFromCGRect(cgrect: CGRect) -> NSRect { NSUnimplemented() }
222+
public func NSRectToCGRect(nsrect: NSRect) -> CGRect { return nsrect }
202223

203-
public func NSRectToCGRect(nsrect: NSRect) -> CGRect { NSUnimplemented() }
224+
public func NSPointFromCGPoint(cgpoint: CGPoint) -> NSPoint { return cgpoint }
204225

205-
public func NSPointFromCGPoint(cgpoint: CGPoint) -> NSPoint { NSUnimplemented() }
226+
public func NSPointToCGPoint(nspoint: NSPoint) -> CGPoint { return nspoint }
206227

207-
public func NSPointToCGPoint(nspoint: NSPoint) -> CGPoint { NSUnimplemented() }
228+
public func NSSizeFromCGSize(cgsize: CGSize) -> NSSize { return cgsize }
208229

209-
public func NSSizeFromCGSize(cgsize: CGSize) -> NSSize { NSUnimplemented() }
230+
public func NSSizeToCGSize(nssize: NSSize) -> CGSize { return nssize }
210231

211-
public func NSSizeToCGSize(nssize: NSSize) -> CGSize { NSUnimplemented() }
232+
public func NSEdgeInsetsMake(top: CGFloat, _ left: CGFloat, _ bottom: CGFloat, _ right: CGFloat) -> NSEdgeInsets { return NSEdgeInsets(top: top, left: left, bottom: bottom, right: right) }
212233

213-
public func NSEdgeInsetsMake(top: CGFloat, _ left: CGFloat, _ bottom: CGFloat, _ right: CGFloat) -> NSEdgeInsets { NSUnimplemented() }
234+
public func NSEqualPoints(aPoint: NSPoint, _ bPoint: NSPoint) -> Bool { return aPoint == bPoint }
235+
public func NSEqualSizes(aSize: NSSize, _ bSize: NSSize) -> Bool { return aSize == bSize }
236+
public func NSEqualRects(aRect: NSRect, _ bRect: NSRect) -> Bool { return aRect == bRect }
237+
public func NSIsEmptyRect(aRect: NSRect) -> Bool { return (aRect.size.width.native <= 0) || (aRect.size.height.native <= 0) }
238+
public func NSEdgeInsetsEqual(aInsets: NSEdgeInsets, _ bInsets: NSEdgeInsets) -> Bool { return (aInsets.top == bInsets.top) && (aInsets.left == bInsets.left) && (aInsets.bottom == bInsets.bottom) && (aInsets.right == bInsets.right) }
214239

215-
public func NSEqualPoints(aPoint: NSPoint, _ bPoint: NSPoint) -> Bool { NSUnimplemented() }
216-
public func NSEqualSizes(aSize: NSSize, _ bSize: NSSize) -> Bool { NSUnimplemented() }
217-
public func NSEqualRects(aRect: NSRect, _ bRect: NSRect) -> Bool { NSUnimplemented() }
218-
public func NSIsEmptyRect(aRect: NSRect) -> Bool { NSUnimplemented() }
219-
public func NSEdgeInsetsEqual(aInsets: NSEdgeInsets, _ bInsets: NSEdgeInsets) -> Bool { NSUnimplemented() }
240+
public func NSInsetRect(aRect: NSRect, _ dX: CGFloat, _ dY: CGFloat) -> NSRect {
241+
let x = CGFloat(aRect.origin.x.native + dX.native)
242+
let y = CGFloat(aRect.origin.y.native + dY.native)
243+
let w = CGFloat(aRect.size.width.native - (dX.native * 2))
244+
let h = CGFloat(aRect.size.height.native - (dY.native * 2))
245+
246+
return NSMakeRect(x, y, w, h)
247+
}
220248

221-
public func NSInsetRect(aRect: NSRect, _ dX: CGFloat, _ dY: CGFloat) -> NSRect { NSUnimplemented() }
222249
public func NSIntegralRect(aRect: NSRect) -> NSRect { NSUnimplemented() }
223250
public func NSIntegralRectWithOptions(aRect: NSRect, _ opts: NSAlignmentOptions) -> NSRect { NSUnimplemented() }
224251

0 commit comments

Comments
 (0)