KMNEditContentPopMode.swift 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // KMNEditContentPopMode.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by 丁林圭 on 2024/12/2.
  6. //
  7. import Cocoa
  8. @objc public enum EditContentPopType: Int, CaseIterable{
  9. case signTextEdit = 0
  10. case signImageEdit
  11. case multpleTextEdit
  12. case multpleImageEdit
  13. case multpleImageAndText
  14. case cropImage
  15. case editNone
  16. }
  17. class KMNEditContentPopMode: NSObject {
  18. private(set) var editArea: CPDFEditArea?
  19. private(set) var editAreas: [CPDFEditArea] = []
  20. private(set) var popType: EditContentPopType = .editNone
  21. init(currentEditAreas: [CPDFEditArea]) {
  22. super.init()
  23. if let firstAnnotation = editAreas.first {
  24. editArea = firstAnnotation
  25. }
  26. editAreas = currentEditAreas
  27. popType = self.contentEditType()
  28. }
  29. private func contentEditType()->EditContentPopType {
  30. let editArea:CPDFEditArea = editAreas.first ?? CPDFEditArea.init()
  31. let editType = contentSingeEditType(editArea: editArea)
  32. if editAreas.count == 0 {
  33. return .editNone
  34. } else if editAreas.count == 1 {
  35. return editType
  36. } else {
  37. var isSampleAnnotation = true
  38. for i in 1 ..< editAreas.count {
  39. let editArea:CPDFEditArea = editAreas[i]
  40. if editType != contentSingeEditType(editArea: editArea) {
  41. isSampleAnnotation = false
  42. break
  43. }
  44. }
  45. if(isSampleAnnotation) {
  46. if(editType == .signTextEdit) {
  47. return .multpleTextEdit
  48. } else if (editType == .signImageEdit) {
  49. return .multpleImageEdit
  50. } else {
  51. return editType
  52. }
  53. } else {
  54. return .multpleImageAndText
  55. }
  56. }
  57. }
  58. private func contentSingeEditType(editArea:CPDFEditArea)->EditContentPopType {
  59. if editArea.isTextArea() {
  60. return .signTextEdit
  61. } else if editArea.isImageArea() {
  62. if let imageEditArea = editArea as? CPDFEditImageArea {
  63. if imageEditArea.isCropMode == true {
  64. return .cropImage
  65. }
  66. }
  67. return .signImageEdit
  68. }
  69. return .editNone
  70. }
  71. }