KMThumbnail.swift 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // KMThumbnail.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2023/11/16.
  6. //
  7. import Cocoa
  8. @objc protocol KMThumbnailDelegate: NSObjectProtocol {
  9. @objc optional func generateImage(for thumbnail: KMThumbnail) -> Bool
  10. }
  11. class KMThumbnail: NSObject {
  12. weak var delegate: KMThumbnailDelegate?
  13. var dirty = false
  14. private var _image: NSImage?
  15. var image: NSImage? {
  16. get {
  17. if let data = self.delegate?.generateImage?(for: self), data && self.dirty {
  18. self.dirty = false
  19. }
  20. return self._image
  21. }
  22. set {
  23. self._image = newValue
  24. }
  25. }
  26. private var _label: String = ""
  27. var label: String {
  28. get {
  29. return self._label
  30. }
  31. }
  32. private var _pageIndex: Int = 0
  33. var pageIndex: Int {
  34. get {
  35. return self._pageIndex
  36. }
  37. }
  38. var size: NSSize {
  39. get {
  40. return self.image?.size ?? .zero
  41. }
  42. }
  43. var thumiii: NSImageView?
  44. convenience init(image: NSImage?, label: String, pageIndex: Int) {
  45. self.init()
  46. self.image = image
  47. self._label = label
  48. self._pageIndex = pageIndex
  49. self.dirty = false
  50. }
  51. }