mirror of
https://github.com/mpv-player/mpv
synced 2024-12-27 01:22:30 +00:00
a8c2e29868
this migrates our current swift code to version 5 and 4. building is support from 10.12.6 and xcode 9.1 onwards. dynamic linking is the new default, since Apple removed static libs from their new toolchains and it's the recommended way. additionally the found macOS SDK version is printed since it's an important information for finding possible errors now. Fixes #6470
84 lines
2.8 KiB
Swift
84 lines
2.8 KiB
Swift
/*
|
|
* This file is part of mpv.
|
|
*
|
|
* mpv is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* mpv is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#if !HAVE_MACOS_10_14_FEATURES
|
|
extension NSAppearance.Name {
|
|
static let darkAqua: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameDarkAqua")
|
|
static let accessibilityHighContrastAqua: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityAqua")
|
|
static let accessibilityHighContrastDarkAqua: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityDarkAqua")
|
|
static let accessibilityHighContrastVibrantLight: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityVibrantLight")
|
|
static let accessibilityHighContrastVibrantDark: NSAppearance.Name = NSAppearance.Name(rawValue: "NSAppearanceNameAccessibilityVibrantDark")
|
|
}
|
|
#endif
|
|
|
|
extension NSPasteboard.PasteboardType {
|
|
|
|
static let fileURLCompat: NSPasteboard.PasteboardType = {
|
|
if #available(OSX 10.13, *) {
|
|
return .fileURL
|
|
} else {
|
|
return NSPasteboard.PasteboardType(kUTTypeURL as String)
|
|
}
|
|
} ()
|
|
|
|
static let URLCompat: NSPasteboard.PasteboardType = {
|
|
if #available(OSX 10.13, *) {
|
|
return .URL
|
|
} else {
|
|
return NSPasteboard.PasteboardType(kUTTypeFileURL as String)
|
|
}
|
|
} ()
|
|
}
|
|
|
|
#if !swift(>=5.0)
|
|
extension Data {
|
|
|
|
mutating func withUnsafeMutableBytes<Type>(_ body: (UnsafeMutableRawBufferPointer) throws -> Type) rethrows -> Type {
|
|
let dataCount = count
|
|
return try withUnsafeMutableBytes { (ptr: UnsafeMutablePointer<UInt8>) throws -> Type in
|
|
try body(UnsafeMutableRawBufferPointer(start: ptr, count: dataCount))
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#if !swift(>=4.2)
|
|
extension NSDraggingInfo {
|
|
|
|
var draggingPasteboard: NSPasteboard {
|
|
get { return draggingPasteboard() }
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#if !swift(>=4.1)
|
|
extension Array {
|
|
|
|
func compactMap<ElementOfResult>(_ transform: (Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] {
|
|
return try self.flatMap(transform)
|
|
}
|
|
}
|
|
|
|
extension NSWindow.Level {
|
|
|
|
static func +(left: NSWindow.Level, right: Int) -> NSWindow.Level {
|
|
return NSWindow.Level(left.rawValue + right)
|
|
}
|
|
}
|
|
#endif
|
|
|