Browse Source

【2025】【Edit】裁剪模式调整

niehaoyu 5 days ago
parent
commit
b0775d3d7d

+ 7 - 4
PDF Office/PDF Master/Class/PDFTools/Crop/Controller/KMCropPreviewController.xib

@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMCropPreviewController" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMCropPreviewController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
@@ -14,6 +16,7 @@
         <customView id="Hz6-mo-xeY">
             <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="132" y="-72"/>
         </customView>
     </objects>
 </document>

+ 44 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.swift

@@ -6,12 +6,56 @@
 //
 
 import Cocoa
+import KMComponentLibrary
 
 class KMCropController: NSViewController {
 
+    @IBOutlet var contendView: NSView!
+    
+    @IBOutlet var preInfoView: NSView!
+    @IBOutlet var propertyInfoView: NSView!
+    
+    
+    var pdfDocument: CPDFDocument?
+
+    var documentPreview: KMEditDocumentController = KMEditDocumentController.init()
+    var coverController: KMCropCoverController?
+    
+    
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
+         
+        setup()
     }
     
+    func setup() {
+        
+        view.wantsLayer = true
+        view.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle").cgColor
+        
+        documentPreview.view.frame = preInfoView.bounds
+        documentPreview.view.autoresizingMask = [.width, .height]
+        preInfoView.addSubview(documentPreview.view)
+        
+        if coverController == nil {
+            coverController = KMCropCoverController.init()
+        }
+        coverController?.view.frame = CGRectInset(documentPreview.pdfView.bounds, 0, 0)
+        coverController?.view.autoresizingMask = [.width, .height]
+//        preInfoView.addSubview(coverController!.view)
+        
+    }
+ 
+    func reloadData() {
+
+//        propertyController.totalPDFCount = totalPDFCount
+//        propertyController.reloadData()
+        
+        documentPreview.pdfDocument = pdfDocument
+        documentPreview.reloadData()
+         
+    }
+    
+    
 }

+ 41 - 4
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.xib

@@ -1,11 +1,16 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMCropController" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMCropController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
+                <outlet property="contendView" destination="0Ni-XW-Ctr" id="2HM-vz-wH5"/>
+                <outlet property="preInfoView" destination="fz0-3H-KJK" id="aaU-kt-izK"/>
+                <outlet property="propertyInfoView" destination="zBY-s8-BhV" id="Dkg-Xh-m8D"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
         </customObject>
@@ -14,6 +19,38 @@
         <customView id="Hz6-mo-xeY">
             <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="0Ni-XW-Ctr">
+                    <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="fz0-3H-KJK">
+                            <rect key="frame" x="0.0" y="0.0" width="216" height="272"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="zBY-s8-BhV">
+                            <rect key="frame" x="216" y="0.0" width="264" height="272"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="264" id="L45-h4-W6H"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="zBY-s8-BhV" secondAttribute="trailing" id="FDi-eJ-rdC"/>
+                        <constraint firstItem="zBY-s8-BhV" firstAttribute="leading" secondItem="fz0-3H-KJK" secondAttribute="trailing" id="Ffi-41-Y9n"/>
+                        <constraint firstItem="fz0-3H-KJK" firstAttribute="top" secondItem="0Ni-XW-Ctr" secondAttribute="top" id="OAf-xy-UMe"/>
+                        <constraint firstAttribute="bottom" secondItem="zBY-s8-BhV" secondAttribute="bottom" id="QCD-dx-Akf"/>
+                        <constraint firstItem="fz0-3H-KJK" firstAttribute="leading" secondItem="0Ni-XW-Ctr" secondAttribute="leading" id="SVh-S5-K92"/>
+                        <constraint firstAttribute="bottom" secondItem="fz0-3H-KJK" secondAttribute="bottom" id="a5K-Mf-XSU"/>
+                        <constraint firstItem="zBY-s8-BhV" firstAttribute="top" secondItem="0Ni-XW-Ctr" secondAttribute="top" id="z82-7q-4JT"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="0Ni-XW-Ctr" secondAttribute="bottom" id="EjO-GW-PbV"/>
+                <constraint firstItem="0Ni-XW-Ctr" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="P4i-zL-5Ec"/>
+                <constraint firstAttribute="trailing" secondItem="0Ni-XW-Ctr" secondAttribute="trailing" id="gJw-9s-N15"/>
+                <constraint firstItem="0Ni-XW-Ctr" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="xMc-q2-Q5G"/>
+            </constraints>
+            <point key="canvasLocation" x="132" y="-72"/>
         </customView>
     </objects>
 </document>

+ 201 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropCoverController.swift

@@ -6,12 +6,212 @@
 //
 
 import Cocoa
+import KMComponentLibrary
 
-class KMCropCoverController: NSViewController {
+@objc public enum CropPointPosition: Int {
+    case none = 0
+    case left_Top
+    case left_Center
+    case left_Bottom
+    case top_Center
+    case right_Top
+    case right_Center
+    case right_Bottom
+    case bottom_Center
+    case center
+    
+}
 
+class ResizableView: NSView {
+    
+}
+
+class KMCropCoverController: NSViewController {
+    
+    var emptyView: ResizableView!
+    
+    var stopGesture: Bool = false
+    var initialFrame: NSRect = NSRect.zero
+    
+    var startPoint: NSPoint = .zero
+    var pointType: CropPointPosition = .none
+    
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
+        
+        setup()
     }
     
+    func setup() {
+        
+        view.wantsLayer = true
+//        view.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/mask").cgColor
+        view.layer?.backgroundColor = NSColor.red.cgColor
+        
+        // 创建空白 View
+        emptyView = ResizableView(frame: NSRect(x: 100, y: 100, width: 200, height: 200))
+        emptyView.wantsLayer = true
+        emptyView.layer?.backgroundColor = NSColor.white.cgColor
+        view.addSubview(emptyView)
+        
+        let panGesture = NSPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
+        view.addGestureRecognizer(panGesture)
+        
+    }
+    
+    @objc func handlePan(_ gesture: NSPanGestureRecognizer) {
+        let point = gesture.location(in: self.view)
+        let emptyPoint = self.view.convert(point, to: emptyView)
+        
+        if gesture.state == .began {
+            startPoint = point
+            initialFrame = emptyView.frame
+            
+            if CGRectContainsPoint(emptyView.frame, point) == false {
+                stopGesture = true
+            } else {
+                if CGRectContainsPoint(CGRectMake(0, 0, 12, 12), emptyPoint) {
+                    pointType = .left_Bottom
+                } else if CGRectContainsPoint(CGRectMake(0, CGRectGetHeight(emptyView.frame)/2 - 6, 12, 12), emptyPoint) {
+                    pointType = .left_Center
+                } else if CGRectContainsPoint(CGRectMake(0, CGRectGetHeight(emptyView.frame) - 12, 12, 12), emptyPoint) {
+                    pointType = .left_Top
+                } else if CGRectContainsPoint(CGRectMake(CGRectGetWidth(emptyView.frame)/2 - 6, CGRectGetHeight(emptyView.frame) - 12, 12, 12), emptyPoint) {
+                    pointType = .top_Center
+                } else if CGRectContainsPoint(CGRectMake(CGRectGetWidth(emptyView.frame) - 12, CGRectGetHeight(emptyView.frame) - 12, 12, 12), emptyPoint) {
+                    pointType = .right_Top
+                } else if CGRectContainsPoint(CGRectMake(CGRectGetWidth(emptyView.frame) - 12, CGRectGetHeight(emptyView.frame)/2 - 6, 12, 12), emptyPoint) {
+                    pointType = .right_Center
+                } else if CGRectContainsPoint(CGRectMake(CGRectGetWidth(emptyView.frame) - 12, 0, 12, 12), emptyPoint) {
+                    pointType = .right_Bottom
+                } else if CGRectContainsPoint(CGRectMake(CGRectGetWidth(emptyView.frame)/2 - 6, 0, 12, 12), emptyPoint) {
+                    pointType = .bottom_Center
+                } else if CGRectContainsPoint(CGRectInset(emptyView.bounds, 12, 12), emptyPoint) {
+                    pointType = .center
+                }
+            }
+        } else if gesture.state == .ended {
+            stopGesture = false
+            pointType = .none
+        }
+        
+        if stopGesture == true ||
+            pointType == .none {
+            return
+        }
+        
+        print(point.x-startPoint.x, point.y-startPoint.y)
+        
+        if gesture.state == .began {
+            
+        } else if gesture.state == .changed {
+            let offsetX = point.x-startPoint.x
+            let offsetY = point.y-startPoint.y
+            
+            var rect = initialFrame
+            
+            if pointType == .left_Bottom {
+                if rect.origin.x + offsetX < 0 {
+                    rect.origin.x = 0
+                    rect.size.width = initialFrame.origin.x + rect.size.width
+                } else {
+                    rect.origin.x += offsetX
+                    rect.size.width -= offsetX
+                }
+                
+                if rect.origin.y + offsetY < 0 {
+                    rect.origin.y = 0
+                    rect.size.height = initialFrame.origin.y + rect.size.height
+                } else {
+                    rect.origin.y += offsetY
+                    rect.size.height -= offsetY
+                }
+            } else if pointType == .left_Center {
+                if rect.origin.x + offsetX < 0 {
+                    rect.origin.x = 0
+                    rect.size.width = initialFrame.origin.x + rect.size.width
+                } else {
+                    rect.origin.x += offsetX
+                    rect.size.width -= offsetX
+                }
+            } else if pointType == .left_Top {
+                if rect.origin.x + offsetX < 0 {
+                    rect.origin.x = 0
+                    rect.size.width = initialFrame.origin.x + rect.size.width
+                } else {
+                    rect.origin.x += offsetX
+                    rect.size.width -= offsetX
+                }
+                
+                rect.size.height += offsetY
+            } else if pointType == .top_Center {
+                rect.size.height += offsetY
+            } else if pointType == .right_Top {
+                rect.size.width += offsetX
+                rect.size.height += offsetY
+            } else if pointType == .right_Center {
+                rect.size.width += offsetX
+            } else if pointType == .right_Bottom {
+                rect.size.width += offsetX
+                
+                if rect.origin.y + offsetY < 0 {
+                    rect.origin.y = 0
+                    rect.size.height = initialFrame.origin.y + rect.size.height
+                } else {
+                    rect.origin.y += offsetY
+                    rect.size.height -= offsetY
+                }
+            } else if pointType == .bottom_Center {
+                if rect.origin.y + offsetY < 0 {
+                    rect.origin.y = 0
+                    rect.size.height = initialFrame.origin.y + rect.size.height
+                } else {
+                    rect.origin.y += offsetY
+                    rect.size.height -= offsetY
+                }
+            } else if pointType == .center {
+                rect.origin.x += offsetX
+                rect.origin.y += offsetY
+                
+                if CGRectGetMaxX(rect) > CGRectGetWidth(self.view.bounds) {
+                    rect.origin.x = CGRectGetWidth(self.view.bounds) - rect.size.width
+                }
+                if CGRectGetMaxY(rect) > CGRectGetHeight(self.view.bounds) {
+                    rect.origin.y = CGRectGetHeight(self.view.bounds) - rect.size.height
+                }
+                if rect.origin.x < 0 {
+                    rect.origin.x = 0
+                }
+                if rect.origin.y < 0 {
+                    rect.origin.y = 0
+                }
+            }
+            
+            if pointType == .center {
+                
+            } else {
+                //                if rect.origin.x < 0 {
+                //                    rect.origin.x = 0
+                //                }
+                //                if rect.origin.y < 0 {
+                //                    rect.origin.y = 0
+                //                }
+                if CGRectGetMaxX(rect) > CGRectGetWidth(self.view.bounds) {
+                    rect.size.width = CGRectGetWidth(self.view.bounds) - rect.origin.x
+                }
+                if CGRectGetMaxY(rect) > CGRectGetHeight(self.view.bounds) {
+                    rect.size.height = CGRectGetHeight(self.view.bounds) - rect.origin.y
+                }
+                rect.size.height = max(0, rect.size.height)
+                rect.size.width = max(0, rect.size.width)
+            }
+            
+            
+            print(rect)
+            
+            emptyView.frame = rect
+            
+        }
+    }
 }

+ 7 - 4
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropCoverController.xib

@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMCropCoverController" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMCropCoverController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
@@ -14,6 +16,7 @@
         <customView id="Hz6-mo-xeY">
             <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="132" y="-72"/>
         </customView>
     </objects>
 </document>

+ 15 - 4
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift

@@ -11,8 +11,10 @@ class KMEditDocumentController: NSViewController {
 
     var pdfDocument: CPDFDocument?
     
-    private var pdfView: CPDFListView = CPDFListView.init()
-    
+    var pdfView: CPDFListView = CPDFListView.init()
+
+    let coverView = NSView(frame: CGRectMake(0, 0, 300, 300))
+
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
@@ -23,6 +25,7 @@ class KMEditDocumentController: NSViewController {
         pdfView.autoScales = true
         view.addSubview(pdfView)
          
+        
     }
     
     func reloadData() {
@@ -30,6 +33,12 @@ class KMEditDocumentController: NSViewController {
         
         pdfView.document = pdfDocument
         
+        
+        coverView.wantsLayer = true
+        coverView.layer?.backgroundColor = NSColor.red.cgColor
+       pdfView.addSubview(coverView)
+        
+        refreshUI()
     }
     
     func refreshUI() {
@@ -37,8 +46,10 @@ class KMEditDocumentController: NSViewController {
         let page = pdfView.document.page(at: 0)
         let bounds = page?.bounds
         
-        pdfView.convertRect(toScreen: bounds!)
-        pdfView.convert(bounds!, from: page)
+       let test = pdfView.convertRect(toScreen: bounds!)
+      let rect = pdfView.convert(bounds!, from: page)
+        coverView.frame = test
+        
         print("111")
         
     }

+ 48 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -70,6 +70,8 @@ import KMComponentLibrary
     var headerFooterViewController: KMHeaderFooterController?
     //Bates
     var batesViewController: KMBatesController?
+    //Crop
+    var cropController: KMCropController?
     
     //左边
     var botaViewController: KMNLeftSideViewController?
@@ -366,6 +368,8 @@ import KMComponentLibrary
                 listView.setShouAddEdit([])
                 listView.change([.text, .image])
                 
+                removeCropController()
+                
             } else if subToolMode == .Edit_text {
                 if listView.toolMode != .editPDFToolMode {
                     listView.toolMode = .editPDFToolMode
@@ -392,6 +396,7 @@ import KMComponentLibrary
             } else if subToolMode == .Edit_Crop {
                 listView.toolMode = .selectToolMode
                 
+                showCropController()
             }
              
             
@@ -877,6 +882,48 @@ import KMComponentLibrary
         
     }
     
+    //MARK: - Crop裁剪
+    func showCropController() {
+        listView.isHidden = true
+            
+        
+        if cropController == nil {
+            cropController = KMCropController.init()
+        }
+        cropController?.view.frame = CGRectMake(44, 0, CGRectGetWidth(bottomContendBox.frame)-44, CGRectGetHeight(bottomContendBox.frame))
+        cropController?.view.autoresizingMask = [.maxXMargin, .width, .height]
+//        cropController?.delegate = self
+        bottomContendBox.addSubview(cropController!.view)
+        
+ 
+        updateCropDocument()
+    }
+    
+    func updateCropDocument() {
+        
+        guard let controller = cropController else { return }
+        
+        controller.pdfDocument = nil
+        
+        let editDocument = CPDFDocument.init()
+        
+        let page = listView.document.page(at: UInt(listView.currentPageIndex))
+        editDocument?.insertPageObject(page, at: 0)
+        
+        controller.pdfDocument = editDocument
+        controller.reloadData()
+        
+    }
+    
+    func removeCropController() {
+        listView.isHidden = false
+         
+        if cropController != nil {
+            cropController?.view.removeFromSuperview()
+            cropController = nil
+        }
+    }
+    
     //MARK: - Watermark水印
     func showWatermarkController() {
         listView.isHidden = true
@@ -911,7 +958,7 @@ import KMComponentLibrary
         
         controller.pdfDocument = nil
         
-        var editDocument = CPDFDocument.init()
+        let editDocument = CPDFDocument.init()
         
         let page = listView.document.page(at: UInt(listView.currentPageIndex))
         editDocument?.insertPageObject(page, at: 0)

+ 78 - 50
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -2114,8 +2114,8 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "223"
-            endingLineNumber = "223"
+            startingLineNumber = "225"
+            endingLineNumber = "225"
             landmarkName = "setDocument"
             landmarkType = "24">
             <Locations>
@@ -2149,6 +2149,21 @@
                   endingLineNumber = "0"
                   offsetFromSymbolStart = "20">
                </Location>
+               <Location
+                  uuid = "E3962D60-30EF-4185-BF07-EA1A34784887 - c44283d1f17e1a20"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.setDocument.modify : Swift.Optional&lt;__C.CPDFDocument&gt;"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "225"
+                  endingLineNumber = "225"
+                  offsetFromSymbolStart = "0">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -2290,8 +2305,8 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "938"
-            endingLineNumber = "938"
+            startingLineNumber = "985"
+            endingLineNumber = "985"
             landmarkName = "removePDFWatermark()"
             landmarkType = "7">
             <Locations>
@@ -2325,6 +2340,21 @@
                   endingLineNumber = "938"
                   offsetFromSymbolStart = "1496">
                </Location>
+               <Location
+                  uuid = "14EF9D11-330E-4DB1-A4D2-AA533CF55782 - ae5dbea256bda903"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.removePDFWatermark() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "985"
+                  endingLineNumber = "985"
+                  offsetFromSymbolStart = "1496">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -3280,8 +3310,8 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "2017"
-            endingLineNumber = "2017"
+            startingLineNumber = "2064"
+            endingLineNumber = "2064"
             landmarkName = "pdfViewEditingAddImageArea(_:add:add:)"
             landmarkType = "7">
             <Locations>
@@ -3315,6 +3345,21 @@
                   endingLineNumber = "2017"
                   offsetFromSymbolStart = "184">
                </Location>
+               <Location
+                  uuid = "842AC4D6-5CA6-440F-A002-6D891884C3CD - 144f1057c52815fd"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "2064"
+                  endingLineNumber = "2064"
+                  offsetFromSymbolStart = "184">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -3328,8 +3373,8 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1997"
-            endingLineNumber = "1997"
+            startingLineNumber = "2044"
+            endingLineNumber = "2044"
             landmarkName = "pdfViewEditingSelectionDidChanged(_:)"
             landmarkType = "7">
             <Locations>
@@ -3363,6 +3408,21 @@
                   endingLineNumber = "1998"
                   offsetFromSymbolStart = "36">
                </Location>
+               <Location
+                  uuid = "18021D19-EAF7-4279-A121-953E8941B3AE - ce71ce32deb34e4"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingSelectionDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "2045"
+                  endingLineNumber = "2045"
+                  offsetFromSymbolStart = "36">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -3385,64 +3445,32 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "3D525535-AA5C-4369-994C-79BB75E05132"
+            uuid = "CA1F07F0-52C0-4B88-AC73-5FBF0858023E"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift"
+            filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "42"
-            endingLineNumber = "42"
-            landmarkName = "refreshUI()"
+            startingLineNumber = "842"
+            endingLineNumber = "842"
+            landmarkName = "customCropModel(sender:)"
             landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "3D525535-AA5C-4369-994C-79BB75E05132 - aecda427e4a55e2e"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditDocumentController.layoutDocumentView() -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "42"
-                  endingLineNumber = "42"
-                  offsetFromSymbolStart = "36">
-               </Location>
-               <Location
-                  uuid = "3D525535-AA5C-4369-994C-79BB75E05132 - cb599578e03d3622"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditDocumentController.refreshUI() -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "42"
-                  endingLineNumber = "42"
-                  offsetFromSymbolStart = "884">
-               </Location>
-            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "CA1F07F0-52C0-4B88-AC73-5FBF0858023E"
+            uuid = "AB919092-694D-4E74-B326-E750BD15DB7F"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "842"
-            endingLineNumber = "842"
-            landmarkName = "customCropModel(sender:)"
+            startingLineNumber = "47"
+            endingLineNumber = "47"
+            landmarkName = "refreshUI()"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>