KMBackgroundObject.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. //
  2. // KMBackgroundObject.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2023/11/3.
  6. //
  7. import Cocoa
  8. @objcMembers class KMBackgroundObject: NSObject {
  9. var type: KMBackgroundType = .color
  10. var color: NSColor = .clear
  11. var imagePath: String?
  12. var rotation: Int = 0
  13. var opacity: CGFloat = 0
  14. var scale: CGFloat = 0
  15. // (Top:0 Middle:1 Bottom:2)
  16. var verticalMode: Int = 0
  17. var verticalSpace: Int = 0
  18. // (Left:0 Middle:1 Right:2)
  19. var horizontalMode: Int = 0
  20. var horizontalSpace: Int = 0
  21. var pagesString: String = ""
  22. var pageRangeType: KMBatchOperatePageChoice = .All
  23. var backgroundID: String?
  24. private var _image: NSImage?
  25. var image: NSImage? {
  26. set {
  27. self.image = newValue
  28. }
  29. get {
  30. if let data = self.imagePath, FileManager.default.fileExists(atPath: data) {
  31. return NSImage(contentsOfFile: data)
  32. }
  33. return self._image
  34. }
  35. }
  36. override init() {
  37. super.init()
  38. }
  39. required init?(coder: NSCoder) {
  40. super.init()
  41. self.type = KMBackgroundType(rawValue: coder.decodeInteger(forKey: "type")) ?? .color
  42. self.color = coder.decodeObject(forKey: "color") as? NSColor ?? .clear
  43. self.imagePath = coder.decodeObject(forKey: "imagePath") as? String ?? ""
  44. self.rotation = coder.decodeInteger(forKey: "rotation")
  45. self.opacity = CGFloat(coder.decodeFloat(forKey: "opacity"))
  46. self.scale = CGFloat(coder.decodeFloat(forKey: "scale"))
  47. self.verticalMode = coder.decodeInteger(forKey: "verticalMode")
  48. self.verticalSpace = coder.decodeInteger(forKey: "verticalSpace")
  49. self.horizontalMode = coder.decodeInteger(forKey: "horizontalMode")
  50. self.horizontalSpace = coder.decodeInteger(forKey: "horizontalSpace")
  51. self.pagesString = coder.decodeObject(forKey: "pagesString") as? String ?? ""
  52. self.pageRangeType = KMBatchOperatePageChoice(rawValue: coder.decodeInteger(forKey: "pageRangeType")) ?? .All
  53. self.backgroundID = coder.decodeObject(forKey: "backgroundID") as? String ?? ""
  54. self.image = coder.decodeObject(forKey: "image") as? NSImage
  55. }
  56. //拷贝其他数据的值
  57. func copyData(_ dataObj: KMBackgroundObject?) {
  58. if (dataObj != nil) {
  59. self.type = dataObj!.type
  60. self.color = dataObj!.color
  61. self.imagePath = dataObj!.imagePath
  62. self.rotation = dataObj!.rotation
  63. self.opacity = dataObj!.opacity
  64. self.scale = dataObj!.scale
  65. self.verticalMode = dataObj!.verticalMode
  66. self.verticalSpace = dataObj!.verticalSpace
  67. self.horizontalMode = dataObj!.horizontalMode
  68. self.horizontalSpace = dataObj!.horizontalSpace
  69. self.pagesString = dataObj!.pagesString
  70. self.pageRangeType = dataObj!.pageRangeType
  71. self.backgroundID = dataObj!.backgroundID
  72. self.image = dataObj!.image
  73. }
  74. }
  75. }
  76. extension KMBackgroundObject: NSCoding {
  77. func encode(with coder: NSCoder) {
  78. coder.encode(self.type.rawValue, forKey: "type")
  79. coder.encode(self.color, forKey: "color")
  80. coder.encode(self.imagePath, forKey: "imagePath")
  81. coder.encode(self.rotation, forKey: "rotation")
  82. coder.encode(self.opacity, forKey: "opacity")
  83. coder.encode(self.scale, forKey: "scale")
  84. coder.encode(self.verticalMode, forKey: "verticalMode")
  85. coder.encode(self.verticalSpace, forKey: "verticalSpace")
  86. coder.encode(self.horizontalMode, forKey: "horizontalMode")
  87. coder.encode(self.horizontalSpace, forKey: "horizontalSpace")
  88. coder.encode(self.pagesString, forKey: "pagesString")
  89. coder.encode(self.pageRangeType.rawValue, forKey: "pageRangeType")
  90. coder.encode(self.backgroundID, forKey: "backgroundID")
  91. coder.encode(self.image, forKey: "image")
  92. }
  93. }
  94. extension KMBackgroundObject: NSCopying {
  95. func copy(with zone: NSZone? = nil) -> Any {
  96. let obj = KMBackgroundObject()
  97. obj.type = self.type
  98. obj.color = self.color
  99. obj.imagePath = self.imagePath
  100. obj.rotation = self.rotation
  101. obj.opacity = self.opacity
  102. obj.scale = self.scale
  103. obj.verticalMode = self.verticalMode
  104. obj.verticalSpace = self.verticalSpace
  105. obj.horizontalMode = self.horizontalMode
  106. obj.horizontalSpace = self.horizontalSpace
  107. obj.pagesString = self.pagesString
  108. obj.pageRangeType = self.pageRangeType
  109. obj.backgroundID = self.backgroundID
  110. obj.image = self.image
  111. return obj
  112. }
  113. }