KMThumbnailTableviewCell.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. //
  2. // KMThumbnailTableviewCell.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2023/11/16.
  6. //
  7. import Cocoa
  8. class KMThumbnailTableviewCell: NSTableCellView {
  9. @IBOutlet var thumBox: KMBox!
  10. @IBOutlet var thumImage: NSImageView!
  11. @IBOutlet var pageNumLabel: NSTextField!
  12. @IBOutlet var sizeLabel: NSTextField!
  13. @IBOutlet var labelView: NSView!
  14. @IBOutlet var sizeTopConstant: NSLayoutConstraint!
  15. @IBOutlet var imageAspectRatioLayout: NSLayoutConstraint!
  16. lazy var pageView = KMPDFThumbnialPageView()
  17. lazy var pageBox = NSView()
  18. var isSelectCell = false {
  19. didSet {
  20. if (self.isSelectCell) {
  21. self.thumImage.layer?.borderColor = KMAppearance.Interactive.a0Color().cgColor
  22. self.thumImage.layer?.borderWidth = 1.0
  23. self.pageBox.layer?.borderColor = KMAppearance.Interactive.a0Color().cgColor
  24. self.pageBox.layer?.borderWidth = 1.0
  25. self.labelView.layer?.backgroundColor = KMAppearance.Interactive.a0Color().cgColor
  26. self.pageNumLabel.textColor = KMAppearance.Layout.w0Color()
  27. self.sizeLabel.textColor = KMAppearance.Layout.w0Color()
  28. } else {
  29. self.thumImage.layer?.borderColor = KMAppearance.Layout.h2Color().cgColor
  30. self.thumImage.layer?.borderWidth = 1.0
  31. self.pageBox.layer?.borderColor = KMAppearance.Layout.h2Color().cgColor
  32. self.pageBox.layer?.borderWidth = 1.0
  33. self.labelView.layer?.backgroundColor = .clear
  34. self.pageNumLabel.textColor = KMAppearance.Layout.h0Color()
  35. self.sizeLabel.textColor = KMAppearance.Layout.h0Color()
  36. }
  37. }
  38. }
  39. override func awakeFromNib() {
  40. super.awakeFromNib()
  41. self.wantsLayer = true
  42. self.layer?.backgroundColor = .clear
  43. self.layer?.cornerRadius = 0.0
  44. self.thumImage.wantsLayer = true
  45. self.labelView.wantsLayer = true
  46. self.addSubview(self.pageBox)
  47. self.pageBox.wantsLayer = true
  48. self.addSubview(self.pageView)
  49. self.thumImage.isHidden = true
  50. }
  51. override func layout() {
  52. super.layout()
  53. let width = NSWidth(self.bounds)
  54. let height = NSHeight(self.bounds)
  55. // iconImageView.frame = view.bounds
  56. // backgroundView.frame = view.bounds
  57. let flodSize: CGFloat = 28
  58. // expandButton.frame = NSMakeRect(width-flodSize-10, height-flodSize-10, flodSize, flodSize)
  59. // pageRangeButton.frame = NSMakeRect(15, 10+20+10, width-30, 28)
  60. // selectedView.frame = NSMakeRect(15, 20, width-30, height-20)
  61. // nameLabel.frame = NSMakeRect(0, 0, width, 20)
  62. let border: CGFloat = 10
  63. var bounds: NSRect = NSZeroRect
  64. // if (myModel != nil) {
  65. // bounds = myModel.page.bounds
  66. // }
  67. bounds = self.pageView.page?.bounds ?? .zero
  68. if (bounds.size.width == 0) {
  69. return
  70. }
  71. if (bounds.size.height == 0) {
  72. return
  73. }
  74. var pageSelectionSize = CGSize(width: self.frame.size.width-30, height: self.frame.size.height-40)
  75. // pageSelectionSize.height -= 40
  76. var size = NSMakeSize(pageSelectionSize.width - 2 * border, pageSelectionSize.height - 2 * border)
  77. let minScale = min(size.width/bounds.size.width, size.height/bounds.size.height)
  78. size.width = bounds.size.width * minScale
  79. size.height = bounds.size.height * minScale
  80. let rotate = self.pageView.page?.rotation ?? 0 % 360
  81. if rotate == 90 || rotate == 270 {
  82. let max = max(size.height, size.width)
  83. // let ws = size.width / max
  84. let hs = size.height / max
  85. let tmp = size.width
  86. size.width = size.height * hs
  87. // size.height = tmp
  88. }
  89. let pageViewX = (pageSelectionSize.width-size.width) * 0.5 + 15
  90. let pageViewY = (pageSelectionSize.height-size.height) * 0.5 + 20 + 20
  91. pageView.frame = NSMakeRect(pageViewX, pageViewY, size.width, size.height)
  92. // self.thumImage?.frame = NSMakeRect(pageViewX, pageViewY, size.width, size.height)
  93. self.pageBox.frame = NSInsetRect(self.pageView.frame, -5, -5)
  94. }
  95. }