12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- //
- // KMTransitionInfo.swift
- // PDF Reader Pro
- //
- // Created by liujiajie on 2024/1/17.
- //
- import Foundation
- let SKPasteboardTypeTransition = "net.sourceforge.skim-app.pasteboard.transition"
- class KMTransitionInfo: NSObject, NSPasteboardReading, NSPasteboardWriting {
- var transitionStyle: SKAnimationTransitionStyle = .noTransition
- var duration: Float = 0.0
- var shouldRestrict = false {
- didSet {
- // KMPrint("")
- }
- }
- var thumbnail: KMThumbnail?
- var label: String = ""
- var title: String {
- get {
- return NSLocalizedString("Page Transition", comment: "Box title")
- }
- }
-
- var properties: NSDictionary?{
- get{
- return [SKStyleNameKey: SKTransitionController.name(for: transitionStyle) ?? "", SKDurationKey: NSNumber(value: duration), SKShouldRestrictKey: NSNumber(value: shouldRestrict)] as [String : Any] as NSDictionary
- }
- set{
- if let value = newValue?[SKStyleNameKey] {
- transitionStyle = SKTransitionController.style(forName: value as? String)
- }
- if let value = newValue?[SKDurationKey] {
- duration = value as! Float
- }
- if let value = newValue?[SKShouldRestrictKey] {
- shouldRestrict = value as! Bool
- }
- }
- }
- override init() {
- super.init()
-
- self.transitionStyle = .noTransition
- self.duration = 1.0
- self.shouldRestrict = false
- self.thumbnail = nil
- self.label = ""
- }
-
- override var description: String {
- return "<\(type(of: self)) \(Unmanaged.passUnretained(self).toOpaque())> \(properties)"
- }
-
- static func readingOptions(forType type: NSPasteboard.PasteboardType, pasteboard: NSPasteboard) -> NSPasteboard.ReadingOptions {
- if type.rawValue == SKPasteboardTypeTransition {
- return .asPropertyList
- }
- return .asData
- }
-
- static func readableTypes(for pasteboard: NSPasteboard) -> [NSPasteboard.PasteboardType] {
- let type = NSPasteboard.PasteboardType(SKPasteboardTypeTransition)
- return [type]
- }
-
- required convenience init?(pasteboardPropertyList propertyList: Any, ofType type: NSPasteboard.PasteboardType) {
- self.init()
- if type.rawValue == SKPasteboardTypeTransition {
- self.properties = propertyList as? NSDictionary ?? [:]
- }
- }
-
- func writableTypes(for pasteboard: NSPasteboard) -> [NSPasteboard.PasteboardType] {
- let type = NSPasteboard.PasteboardType(SKPasteboardTypeTransition)
- return [type]
- }
-
- func pasteboardPropertyList(forType type: NSPasteboard.PasteboardType) -> Any? {
- if type.rawValue == SKPasteboardTypeTransition {
- return properties
- }
- return nil
- }
- }
|