Files
swift-mirror/stdlib/public/Darwin/AppKit/AppKit.swift
Saleem Abdulrasool 41d9c2cc59 stdlib: restructure for OS family layout of SDK overlay
The SDK directory is now confusing as the Windows target also has a SDK
overlay.  In order to make this more uniform, move the SDK directory to
Darwin which covers the fact that this covers the XNU family of OSes.
The Windows directory contains the SDK overlay for the Windows target.
2018-12-06 11:32:05 -08:00

163 lines
5.2 KiB
Swift

//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import Foundation
@_exported import AppKit
extension NSCursor : __DefaultCustomPlaygroundQuickLookable {
@available(*, deprecated, message: "NSCursor._defaultCustomPlaygroundQuickLook will be removed in a future Swift version")
public var _defaultCustomPlaygroundQuickLook: PlaygroundQuickLook {
return .image(image)
}
}
internal struct _NSViewQuickLookState {
static var views = Set<NSView>()
}
extension NSView : __DefaultCustomPlaygroundQuickLookable {
@available(*, deprecated, message: "NSView._defaultCustomPlaygroundQuickLook will be removed in a future Swift version")
public var _defaultCustomPlaygroundQuickLook: PlaygroundQuickLook {
// if you set NSView.needsDisplay, you can get yourself in a recursive scenario where the same view
// could need to draw itself in order to get a QLObject for itself, which in turn if your code was
// instrumented to log on-draw, would cause yourself to get back here and so on and so forth
// until you run out of stack and crash
// This code checks that we aren't trying to log the same view recursively - and if so just returns
// an empty view, which is probably a safer option than crashing
// FIXME: is there a way to say "cacheDisplayInRect butDoNotRedrawEvenIfISaidSo"?
if _NSViewQuickLookState.views.contains(self) {
return .view(NSImage())
} else {
_NSViewQuickLookState.views.insert(self)
let result: PlaygroundQuickLook
if let b = bitmapImageRepForCachingDisplay(in: bounds) {
cacheDisplay(in: bounds, to: b)
result = .view(b)
} else {
result = .view(NSImage())
}
_NSViewQuickLookState.views.remove(self)
return result
}
}
}
// Overlays for variadics.
public extension NSGradient {
convenience init?(colorsAndLocations objects: (NSColor, CGFloat)...) {
self.init(
colors: objects.map { $0.0 },
atLocations: objects.map { $0.1 },
colorSpace: NSColorSpace.genericRGB)
}
}
// Fix the ARGV type of NSApplicationMain, which nonsensically takes
// argv as a const char**.
public func NSApplicationMain(
_ argc: Int32, _ argv: UnsafeMutablePointer<UnsafeMutablePointer<CChar>?>
) -> Int32 {
return argv.withMemoryRebound(to: UnsafePointer<CChar>.self, capacity: Int(argc)) {
__NSApplicationMain(argc, $0)
}
}
extension NSApplication {
@available(swift 4)
public static func loadApplication() {
__NSApplicationLoad()
}
}
extension NSColor : _ExpressibleByColorLiteral {
@nonobjc
public required convenience init(_colorLiteralRed red: Float, green: Float,
blue: Float, alpha: Float) {
self.init(red: CGFloat(red), green: CGFloat(green),
blue: CGFloat(blue), alpha: CGFloat(alpha))
}
}
public typealias _ColorLiteralType = NSColor
extension NSImage : _ExpressibleByImageLiteral {
private convenience init!(failableImageLiteral name: String) {
self.init(named: .init(name))
}
@nonobjc
public required convenience init(imageLiteralResourceName name: String) {
self.init(failableImageLiteral: name)
}
}
public typealias _ImageLiteralType = NSImage
// Numeric backed types
@available(swift 4)
public protocol _AppKitKitNumericRawRepresentable : RawRepresentable, Comparable
where RawValue: Comparable & Numeric { }
extension _AppKitKitNumericRawRepresentable {
public static func <(lhs: Self, rhs: Self) -> Bool {
return lhs.rawValue < rhs.rawValue
}
public static func +(lhs: Self, rhs: RawValue) -> Self {
return Self(rawValue: lhs.rawValue + rhs)!
}
public static func +(lhs: RawValue, rhs: Self) -> Self {
return Self(rawValue: lhs + rhs.rawValue)!
}
public static func -(lhs: Self, rhs: RawValue) -> Self {
return Self(rawValue: lhs.rawValue - rhs)!
}
public static func -(lhs: Self, rhs: Self) -> RawValue {
return lhs.rawValue - rhs.rawValue
}
public static func +=(lhs: inout Self, rhs: RawValue) {
lhs = Self(rawValue: lhs.rawValue + rhs)!
}
public static func -=(lhs: inout Self, rhs: RawValue) {
lhs = Self(rawValue: lhs.rawValue - rhs)!
}
}
@available(swift 4)
extension NSAppKitVersion : _AppKitKitNumericRawRepresentable { }
@available(swift 4)
extension NSLayoutConstraint.Priority : _AppKitKitNumericRawRepresentable { }
@available(swift 4)
extension NSStackView.VisibilityPriority : _AppKitKitNumericRawRepresentable { }
@available(swift 4)
extension NSToolbarItem.VisibilityPriority : _AppKitKitNumericRawRepresentable { }
@available(macOS 10.12.2, *)
@available(swift 4)
extension NSTouchBarItem.Priority : _AppKitKitNumericRawRepresentable { }
@available(swift 4)
extension NSWindow.Level : _AppKitKitNumericRawRepresentable { }
@available(swift 4)
extension NSFont.Weight : _AppKitKitNumericRawRepresentable { }