Browse Source

PDFTools(iOS) - 代理方法修改

dinglingui 1 year ago
parent
commit
a3f26c69be
24 changed files with 455 additions and 8 deletions
  1. 5 1
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/CPDFViewController.m
  2. 2 3
      Edit-Ctrl-Demo/Edit-Ctrl-Demo/CPDFViewController.m
  3. 60 0
      compdfkit-tools/compdfkit-tools.xcodeproj/project.pbxproj
  4. 0 1
      compdfkit-tools/compdfkit-tools/Common/Views/PDFAnnotationBar/CPDFAnnotationBar.m
  5. 22 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/CPDFListViewImageNameAnnotationDragDot.imageset/Contents.json
  6. BIN
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/CPDFListViewImageNameAnnotationDragDot.imageset/annotation_drag_dot.png
  7. BIN
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/CPDFListViewImageNameAnnotationDragDot.imageset/annotation_drag_dot@2x.png
  8. 20 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/Image.imageset/Contents.json
  9. 17 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotation+Extensions.h
  10. 19 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotation+PDFListView.h
  11. 29 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotation+PDFListView.m
  12. 56 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotationHeader.h
  13. 17 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFCircleAnnotation+Extensions.h
  14. 19 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFCircleAnnotation+PDFListView.h
  15. 29 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFCircleAnnotation+PDFListView.m
  16. 19 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFFreeTextAnnotation+PDFListView.h
  17. 30 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFFreeTextAnnotation+PDFListView.m
  18. 19 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFLineAnnotation+PDFListView.h
  19. 31 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFLineAnnotation+PDFListView.m
  20. 19 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFSquareAnnotation+PDFListView.h
  21. 29 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFSquareAnnotation+PDFListView.m
  22. 2 2
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFListView/CPDFListView+Edit.m
  23. 10 0
      compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFListView/CPDFListView+Private.h
  24. 1 1
      viewer-ctrl-demo/viewer-ctrl-demo/CPDFViewController.m

+ 5 - 1
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/CPDFViewController.m

@@ -211,7 +211,7 @@
     return nil;
 }
 
-- (void)PDFViewPerformTouchEnded:(CPDFListView *)pdfView {
+- (void)PDFListViewPerformTouchEnded:(CPDFListView *)pdfView {
     if (CPDFViewAnnotationModeNone != self.pdfListView.annotationMode) {
         self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
         [self.annotationBar reloadData];
@@ -357,4 +357,8 @@
     [self.navigationController popViewControllerAnimated:YES];
 }
 
+- (void)PDFListViewChangeatioActiveAnnotations:(CPDFListView *)pdfListView forActiveAnnotations:(NSArray<CPDFAnnotation *> *)annotations {
+    
+}
+
 @end

+ 2 - 3
Edit-Ctrl-Demo/Edit-Ctrl-Demo/CPDFViewController.m

@@ -139,13 +139,11 @@
 - (void)PDFViewCurrentPageDidChanged:(CPDFView *)pdfView {
 }
 
-- (void)PDFViewCustomMenuClick:(CPDFListView *)pdfView identifier:(NSString *)menuIdentifier {
-    
+- (void)PDFListViewCustomMenuClick:(CPDFListView *)pdfView identifier:(NSString *)menuIdentifier {
     if([menuIdentifier isEqualToString:@"PropertyItem"]){
         self.editMode = CPDFEditModeText;
         [self showMenuList];
     }
-
 }
 
 - (void)PDFViewEditingSelectStateDidChanged:(CPDFView *)pdfView{
@@ -164,6 +162,7 @@
 }
 
 #pragma mark - CPDFEditToolBarDelegate
+
 - (void)editClickInToolBar:(CPDFEditToolBar *)toolBar editMode:(CPDFEditMode)mode{
     self.editMode = mode;
     switch (mode) {

+ 60 - 0
compdfkit-tools/compdfkit-tools.xcodeproj/project.pbxproj

@@ -148,6 +148,19 @@
 		F32DA19129ED908800E19ECA /* CPDFMoreListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F32DA18F29ED908800E19ECA /* CPDFMoreListViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		F32DA19229ED908800E19ECA /* CPDFMoreListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F32DA19029ED908800E19ECA /* CPDFMoreListViewController.m */; };
 		F335EE4B29E430C800ACC72A /* compdfkit_tools.h in Headers */ = {isa = PBXBuildFile; fileRef = F335EE4A29E430C800ACC72A /* compdfkit_tools.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		F35DD18A2A067E7500B57F5B /* CPDFListView+UndoManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F35DD1882A067E7500B57F5B /* CPDFListView+UndoManager.h */; };
+		F35DD18B2A067E7500B57F5B /* CPDFListView+UndoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F35DD1892A067E7500B57F5B /* CPDFListView+UndoManager.m */; };
+		F35DD1982A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F35DD18D2A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.m */; };
+		F35DD1992A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F35DD18E2A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.m */; };
+		F35DD19A2A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.h in Headers */ = {isa = PBXBuildFile; fileRef = F35DD18F2A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.h */; };
+		F35DD19B2A06850700B57F5B /* CPDFAnnotation+PDFListView.h in Headers */ = {isa = PBXBuildFile; fileRef = F35DD1902A06850700B57F5B /* CPDFAnnotation+PDFListView.h */; };
+		F35DD19C2A06850700B57F5B /* CPDFAnnotationHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = F35DD1912A06850700B57F5B /* CPDFAnnotationHeader.h */; };
+		F35DD19D2A06850700B57F5B /* CPDFLineAnnotation+PDFListView.h in Headers */ = {isa = PBXBuildFile; fileRef = F35DD1922A06850700B57F5B /* CPDFLineAnnotation+PDFListView.h */; };
+		F35DD19E2A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.h in Headers */ = {isa = PBXBuildFile; fileRef = F35DD1932A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.h */; };
+		F35DD19F2A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.h in Headers */ = {isa = PBXBuildFile; fileRef = F35DD1942A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.h */; };
+		F35DD1A02A06850700B57F5B /* CPDFAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F35DD1952A06850700B57F5B /* CPDFAnnotation+PDFListView.m */; };
+		F35DD1A12A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F35DD1962A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.m */; };
+		F35DD1A22A06850700B57F5B /* CPDFLineAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F35DD1972A06850700B57F5B /* CPDFLineAnnotation+PDFListView.m */; };
 		F382636829EFD0D9003F1DFD /* CPDFPageIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = F382635F29EFD0D8003F1DFD /* CPDFPageIndicatorView.h */; };
 		F382636929EFD0D9003F1DFD /* CPDFPageIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = F382636029EFD0D8003F1DFD /* CPDFPageIndicatorView.m */; };
 		F382636A29EFD0D9003F1DFD /* CPDFSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = F382636229EFD0D8003F1DFD /* CPDFSlider.m */; };
@@ -326,6 +339,19 @@
 		F32DA19029ED908800E19ECA /* CPDFMoreListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPDFMoreListViewController.m; sourceTree = "<group>"; };
 		F335EE4729E430C800ACC72A /* compdfkit_tools.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = compdfkit_tools.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		F335EE4A29E430C800ACC72A /* compdfkit_tools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compdfkit_tools.h; sourceTree = "<group>"; };
+		F35DD1882A067E7500B57F5B /* CPDFListView+UndoManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CPDFListView+UndoManager.h"; sourceTree = "<group>"; };
+		F35DD1892A067E7500B57F5B /* CPDFListView+UndoManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CPDFListView+UndoManager.m"; sourceTree = "<group>"; };
+		F35DD18D2A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFFreeTextAnnotation+PDFListView.m"; sourceTree = "<group>"; };
+		F35DD18E2A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFCircleAnnotation+PDFListView.m"; sourceTree = "<group>"; };
+		F35DD18F2A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFSquareAnnotation+PDFListView.h"; sourceTree = "<group>"; };
+		F35DD1902A06850700B57F5B /* CPDFAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFAnnotation+PDFListView.h"; sourceTree = "<group>"; };
+		F35DD1912A06850700B57F5B /* CPDFAnnotationHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPDFAnnotationHeader.h; sourceTree = "<group>"; };
+		F35DD1922A06850700B57F5B /* CPDFLineAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFLineAnnotation+PDFListView.h"; sourceTree = "<group>"; };
+		F35DD1932A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFFreeTextAnnotation+PDFListView.h"; sourceTree = "<group>"; };
+		F35DD1942A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFCircleAnnotation+PDFListView.h"; sourceTree = "<group>"; };
+		F35DD1952A06850700B57F5B /* CPDFAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFAnnotation+PDFListView.m"; sourceTree = "<group>"; };
+		F35DD1962A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFSquareAnnotation+PDFListView.m"; sourceTree = "<group>"; };
+		F35DD1972A06850700B57F5B /* CPDFLineAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFLineAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F382635F29EFD0D8003F1DFD /* CPDFPageIndicatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPDFPageIndicatorView.h; sourceTree = "<group>"; };
 		F382636029EFD0D8003F1DFD /* CPDFPageIndicatorView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPDFPageIndicatorView.m; sourceTree = "<group>"; };
 		F382636229EFD0D8003F1DFD /* CPDFSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPDFSlider.m; sourceTree = "<group>"; };
@@ -822,6 +848,7 @@
 		F32DA15629ED904300E19ECA /* PDFView */ = {
 			isa = PBXGroup;
 			children = (
+				F35DD18C2A06850700B57F5B /* PDFKit Categories */,
 				F38F5B642A03D64C00D0EEFD /* PDFListMagnifierView */,
 				F382636529EFD0D8003F1DFD /* PDFListView */,
 				F382635E29EFD0D8003F1DFD /* PDFPageIndicatorView */,
@@ -864,6 +891,24 @@
 			path = "compdfkit-tools";
 			sourceTree = "<group>";
 		};
+		F35DD18C2A06850700B57F5B /* PDFKit Categories */ = {
+			isa = PBXGroup;
+			children = (
+				F35DD1902A06850700B57F5B /* CPDFAnnotation+PDFListView.h */,
+				F35DD1952A06850700B57F5B /* CPDFAnnotation+PDFListView.m */,
+				F35DD1912A06850700B57F5B /* CPDFAnnotationHeader.h */,
+				F35DD1942A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.h */,
+				F35DD18E2A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.m */,
+				F35DD1932A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.h */,
+				F35DD18D2A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.m */,
+				F35DD1922A06850700B57F5B /* CPDFLineAnnotation+PDFListView.h */,
+				F35DD1972A06850700B57F5B /* CPDFLineAnnotation+PDFListView.m */,
+				F35DD18F2A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.h */,
+				F35DD1962A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.m */,
+			);
+			path = "PDFKit Categories";
+			sourceTree = "<group>";
+		};
 		F382635E29EFD0D8003F1DFD /* PDFPageIndicatorView */ = {
 			isa = PBXGroup;
 			children = (
@@ -890,6 +935,8 @@
 				F382636629EFD0D8003F1DFD /* CPDFListView.m */,
 				F38F5B5E2A0344EA00D0EEFD /* CPDFListView+Annotation.h */,
 				F38F5B5F2A0344EA00D0EEFD /* CPDFListView+Annotation.m */,
+				F35DD1882A067E7500B57F5B /* CPDFListView+UndoManager.h */,
+				F35DD1892A067E7500B57F5B /* CPDFListView+UndoManager.m */,
 				F38F5B622A038B0400D0EEFD /* CPDFListView+Private.h */,
 				4FF3E1D02A064A8100C14F91 /* CPDFListView+Edit.h */,
 				4FF3E1CF2A064A8100C14F91 /* CPDFListView+Edit.m */,
@@ -934,6 +981,7 @@
 				4F06AB5529F6792E007797E4 /* CPDFEditToolBar.h in Headers */,
 				F32DA17E29ED904300E19ECA /* CPDFBOTAViewController.h in Headers */,
 				F32DA16829ED904300E19ECA /* CPDFOutlineViewCell.h in Headers */,
+				F35DD19B2A06850700B57F5B /* CPDFAnnotation+PDFListView.h in Headers */,
 				C918CEC929FA140C00D43974 /* CPDFInkViewController.h in Headers */,
 				F382636E29EFD0D9003F1DFD /* CPDFListView.h in Headers */,
 				F32DA17529ED904300E19ECA /* CPDFInfoTableCell.h in Headers */,
@@ -949,6 +997,7 @@
 				C91BE7CD2A037A490038F2BC /* CPDFInkTopToolBar.h in Headers */,
 				C918CEA529F8FC1800D43974 /* CPDFUnderlineViewController.h in Headers */,
 				C91BE7E22A048F1A0038F2BC /* CSignatureManager.h in Headers */,
+				F35DD19F2A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.h in Headers */,
 				C91BE7D82A039D2A0038F2BC /* CPDFSignatureViewCell.h in Headers */,
 				C918CECE29FA43B800D43974 /* CPDFShapeCircleViewController.h in Headers */,
 				C9AF184129F22BBD00EC4979 /* CPDFAnnotationBarButton.h in Headers */,
@@ -959,8 +1008,10 @@
 				F38F5B632A038B0400D0EEFD /* CPDFListView+Private.h in Headers */,
 				F32DA17029ED904300E19ECA /* CPDFThumbnailViewCell.h in Headers */,
 				C9AF189729F4DA6A00EC4979 /* CPDFColorSelectView.h in Headers */,
+				F35DD19C2A06850700B57F5B /* CPDFAnnotationHeader.h in Headers */,
 				C9AF183B29F2198700EC4979 /* CPDFAnnotationBar.h in Headers */,
 				C918CED429FA972300D43974 /* CPDFShapeArrowViewController.h in Headers */,
+				F35DD19A2A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.h in Headers */,
 				F38F5B602A0344EA00D0EEFD /* CPDFListView+Annotation.h in Headers */,
 				F32DA17929ED904300E19ECA /* CPDFDisplayViewController.h in Headers */,
 				C9AF183029EFB23C00EC4979 /* CPDFBookmarkViewController.h in Headers */,
@@ -973,6 +1024,7 @@
 				4F1131AF29F8EEA800950564 /* CPDFEditViewController.h in Headers */,
 				F32DA16529ED904300E19ECA /* CPDFOutlineViewController.h in Headers */,
 				4F06AB5729F6792E007797E4 /* CPDFImageProperty.h in Headers */,
+				F35DD19D2A06850700B57F5B /* CPDFLineAnnotation+PDFListView.h in Headers */,
 				C918CEA029F8F74000D43974 /* CPDFStrikeoutViewController.h in Headers */,
 				C91BE7E62A04AD880038F2BC /* CSignatureTopBar.h in Headers */,
 				F38F60C629EFF0C2008098F8 /* CPDFColorUtils.h in Headers */,
@@ -986,7 +1038,9 @@
 				C91BE7D42A039AC40038F2BC /* CPDFSignatureViewController.h in Headers */,
 				F32DA17129ED904300E19ECA /* CPDFThumbnailViewController.h in Headers */,
 				C9B9EC5929F54E9600C6A5D2 /* CAnnotStyle.h in Headers */,
+				F35DD18A2A067E7500B57F5B /* CPDFListView+UndoManager.h in Headers */,
 				C91BE7DC2A039E900038F2BC /* CPDFSignatureEditViewController.h in Headers */,
+				F35DD19E2A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.h in Headers */,
 				F32DA16229ED904300E19ECA /* CPDFOutlineModel.h in Headers */,
 				4F1131BA29F911A800950564 /* CPDFTextPropertyCell.h in Headers */,
 				C9AF188E29F4C8A900EC4979 /* CPDFAnnotationBaseViewController.h in Headers */,
@@ -1090,6 +1144,7 @@
 				C918CE9729F8BA6200D43974 /* CPDFNoteViewController.m in Sources */,
 				C9B9EC5029F52DCC00C6A5D2 /* AAPLCustomPresentationController.m in Sources */,
 				4F1131BB29F911A800950564 /* CPDFTextPropertyCell.m in Sources */,
+				F35DD1A02A06850700B57F5B /* CPDFAnnotation+PDFListView.m in Sources */,
 				F32DA17F29ED904300E19ECA /* CNavigationController.m in Sources */,
 				F382636D29EFD0D9003F1DFD /* CPDFListView.m in Sources */,
 				F38F5B672A03D68100D0EEFD /* CPDFListMagnifierView.m in Sources */,
@@ -1103,8 +1158,10 @@
 				C918CEE429FBA41A00D43974 /* CPDFDrawArrowView.m in Sources */,
 				F32DA16929ED904300E19ECA /* CPDFSearchResultsViewController.m in Sources */,
 				F32DA16D29ED904300E19ECA /* CPDFSearchViewCell.m in Sources */,
+				F35DD1982A06850700B57F5B /* CPDFFreeTextAnnotation+PDFListView.m in Sources */,
 				4F5986922A03411700F06A1B /* CPDFDropDownMenu.m in Sources */,
 				F32DA16429ED904300E19ECA /* CPDFOutlineViewCell.m in Sources */,
+				F35DD1992A06850700B57F5B /* CPDFCircleAnnotation+PDFListView.m in Sources */,
 				F382636A29EFD0D9003F1DFD /* CPDFSlider.m in Sources */,
 				4F06AB5029F6792E007797E4 /* CPDFTextProperty.m in Sources */,
 				C9AF189C29F4DBF800EC4979 /* CPDFOpacitySliderView.m in Sources */,
@@ -1134,13 +1191,16 @@
 				C91BE7E72A04AD880038F2BC /* CSignatureTopBar.m in Sources */,
 				4F6C796B29FBD532008C9501 /* CPDFEditFontNameSelectView.m in Sources */,
 				F32DA18329ED904300E19ECA /* CNavigationRightView.m in Sources */,
+				F35DD1A12A06850700B57F5B /* CPDFSquareAnnotation+PDFListView.m in Sources */,
 				F32DA17729ED904300E19ECA /* CPDFInfoTableCell.m in Sources */,
 				4F1131B029F8EEA800950564 /* CPDFEditViewController.m in Sources */,
 				C918CED529FA972300D43974 /* CPDFShapeArrowViewController.m in Sources */,
 				F32DA16B29ED904300E19ECA /* CSearchToolbar.m in Sources */,
 				C918CEC429FA0C7700D43974 /* CPDFSquigglyViewController.m in Sources */,
 				C9AF183129EFB23C00EC4979 /* CPDFBookmarkViewController.m in Sources */,
+				F35DD1A22A06850700B57F5B /* CPDFLineAnnotation+PDFListView.m in Sources */,
 				C918CE8229F621E200D43974 /* CPDFColorPickerView.m in Sources */,
+				F35DD18B2A067E7500B57F5B /* CPDFListView+UndoManager.m in Sources */,
 				F32DA17629ED904300E19ECA /* CPDFInfoViewController.m in Sources */,
 				C91BE7CE2A037A490038F2BC /* CPDFInkTopToolBar.m in Sources */,
 				C91BE7D52A039AC40038F2BC /* CPDFSignatureViewController.m in Sources */,

+ 0 - 1
compdfkit-tools/compdfkit-tools/Common/Views/PDFAnnotationBar/CPDFAnnotationBar.m

@@ -189,7 +189,6 @@
 #pragma mark - Action
 
 - (void)buttonItemClicked_Switch:(UIButton *)button {
-    
     self.propertiesBtn.userInteractionEnabled = YES;
     self.propertiesBtn.tag = button.tag;
     if (self.selectedIndex >= 0 && self.selectedIndex < self.annotationBtns.count) {

+ 22 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/CPDFListViewImageNameAnnotationDragDot.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "annotation_drag_dot.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "annotation_drag_dot@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/CPDFListViewImageNameAnnotationDragDot.imageset/annotation_drag_dot.png


BIN
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/CPDFListViewImageNameAnnotationDragDot.imageset/annotation_drag_dot@2x.png


+ 20 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/Image.xcassets/Image.imageset/Contents.json

@@ -0,0 +1,20 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 17 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotation+Extensions.h

@@ -0,0 +1,17 @@
+//
+//  KMPDFAnnotation+KMExtensions.h
+//  PDFReader
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  The PDF Reader Sample applications are licensed with a modified BSD license.
+//  Please see License for details. This notice may not be removed from this file.
+//
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFAnnotation (Extensions)
+
+- (NSSet *)keysForValuesToObserveForUndo;
+
+@end

+ 19 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotation+PDFListView.h

@@ -0,0 +1,19 @@
+//
+//  CPDFAnnotation+PDFListView.h
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo;
+
+@end

+ 29 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotation+PDFListView.m

@@ -0,0 +1,29 @@
+//
+//  CPDFAnnotation+PDFListView.m
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import "CPDFAnnotation+PDFListView.h"
+#import "CPDFAnnotationHeader.h"
+
+@implementation CPDFAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo {
+    static NSSet *keys = nil;
+    if (keys == nil)
+        keys = [[NSSet alloc] initWithObjects:CPDFAnnotationBoundsKey,
+                                              CPDFAnnotationborderWidthKey,
+                                              CPDFAnnotationBorderKey,
+                                              CPDFAnnotationOpacityKey,
+                                              CPDFAnnotationColorKey, nil];
+    return keys;
+}
+
+@end

+ 56 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFAnnotationHeader.h

@@ -0,0 +1,56 @@
+//
+//  CPDFAnnotationHeader_h
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#ifndef CPDFAnnotationHeader_h
+#define CPDFAnnotationHeader_h
+
+#import "CPDFAnnotation+PDFListView.h"
+
+static NSString *CPDFAnnotationBoundsKey = @"bounds";
+
+static NSString *CPDFAnnotationContentKey = @"contents";
+
+static NSString *CPDFAnnotationborderWidthKey = @"borderWidth";
+
+static NSString *CPDFAnnotationBorderKey = @"border";
+
+static NSString *CPDFAnnotationOpacityKey = @"opacity";
+
+static NSString *CPDFAnnotationColorKey = @"color";
+
+static NSString *CPDFAnnotationModificationDateKey = @"modificationDate";
+
+static NSString *CPDFAnnotationUserNameKey = @"userName";
+
+static NSString *CPDFAnnotationInteriorOpacityKey = @"interiorOpacity";
+
+static NSString *CPDFAnnotationInteriorColorKey = @"interiorColor";
+
+static NSString *CPDFAnnotationBorderColorKey = @"borderColor";
+
+static NSString *CPDFAnnotationBackgroundColorKey = @"backgroundColor";
+
+static NSString *CPDFAnnotationFontKey = @"font";
+
+static NSString *CPDFAnnotationFontColorKey = @"fontColor";
+
+static NSString *CPDFAnnotationStateKey = @"state";
+
+static NSString *CPDFAnnotationSelectItemAtIndexKey = @"selectItemAtIndex";
+
+static NSString *CPDFAnnotationAlignmentKey = @"alignment";
+
+static NSString *CPDFAnnotationStartPointKey = @"startPoint";
+
+static NSString *CPDFAnnotationEndPointKey = @"endPoint";
+
+#endif /* PDFAnnotationHeader_h */

+ 17 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFCircleAnnotation+Extensions.h

@@ -0,0 +1,17 @@
+//
+//  CPDFCircleAnnotation+KMExtensions.h
+//  PDFReader
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  The PDF Reader Sample applications are licensed with a modified BSD license.
+//  Please see License for details. This notice may not be removed from this file.
+//
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFCircleAnnotation (Extensions)
+
+- (NSSet *)keysForValuesToObserveForUndo;
+
+@end

+ 19 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFCircleAnnotation+PDFListView.h

@@ -0,0 +1,19 @@
+//
+//  CPDFCircleAnnotation+PDFListView.h
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFCircleAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo;
+
+@end

+ 29 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFCircleAnnotation+PDFListView.m

@@ -0,0 +1,29 @@
+//
+//  CPDFCircleAnnotation+PDFListView.m
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import "CPDFCircleAnnotation+PDFListView.h"
+#import "CPDFAnnotationHeader.h"
+
+@implementation CPDFCircleAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo {
+    static NSSet *circleKeys = nil;
+    if (circleKeys == nil) {
+        NSMutableSet *mutableKeys = [[super keysForValuesToObserveForUndo] mutableCopy];
+        [mutableKeys addObject:CPDFAnnotationInteriorColorKey];
+        [mutableKeys addObject:CPDFAnnotationInteriorOpacityKey];
+        circleKeys = [mutableKeys copy];
+    }
+    return circleKeys;
+}
+
+@end

+ 19 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFFreeTextAnnotation+PDFListView.h

@@ -0,0 +1,19 @@
+//
+//  CPDFFreeTextAnnotation+PDFListView.h
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFFreeTextAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo;
+
+@end

+ 30 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFFreeTextAnnotation+PDFListView.m

@@ -0,0 +1,30 @@
+//
+//  CPDFFreeTextAnnotation+PDFListView.m
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import "CPDFFreeTextAnnotation+PDFListView.h"
+#import "CPDFAnnotationHeader.h"
+
+@implementation CPDFFreeTextAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo {
+    static NSSet *freetextKeys = nil;
+    if (freetextKeys == nil) {
+        NSMutableSet *mutableKeys = [[super keysForValuesToObserveForUndo] mutableCopy];
+        [mutableKeys addObjectsFromArray:@[CPDFAnnotationFontKey,
+                                           CPDFAnnotationFontColorKey,
+                                           CPDFAnnotationAlignmentKey]];
+        freetextKeys = [mutableKeys copy];
+    }
+    return freetextKeys;
+}
+
+@end

+ 19 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFLineAnnotation+PDFListView.h

@@ -0,0 +1,19 @@
+//
+//  CPDFLineAnnotation+PDFListView.h
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFLineAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo;
+
+@end

+ 31 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFLineAnnotation+PDFListView.m

@@ -0,0 +1,31 @@
+//
+//  CPDFLineAnnotation+PDFListView.m
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import "CPDFLineAnnotation+PDFListView.h"
+#import "CPDFAnnotationHeader.h"
+
+@implementation CPDFLineAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo {
+    static NSSet *lineKeys = nil;
+    if (lineKeys == nil) {
+        NSMutableSet *mutableKeys = [[super keysForValuesToObserveForUndo] mutableCopy];
+        [mutableKeys addObjectsFromArray:@[CPDFAnnotationStartPointKey,
+                                           CPDFAnnotationEndPointKey,
+                                           CPDFAnnotationInteriorOpacityKey,
+                                           CPDFAnnotationInteriorColorKey]];
+        lineKeys = [mutableKeys copy];
+    }
+    return lineKeys;
+}
+
+@end

+ 19 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFSquareAnnotation+PDFListView.h

@@ -0,0 +1,19 @@
+//
+//  CPDFSquareAnnotation+PDFListView.h
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFSquareAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo;
+
+@end

+ 29 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFKit Categories/CPDFSquareAnnotation+PDFListView.m

@@ -0,0 +1,29 @@
+//
+//  CPDFSquareAnnotation+PDFListView.m
+//  compdfkit-tools
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import "CPDFSquareAnnotation+PDFListView.h"
+#import "CPDFAnnotationHeader.h"
+
+@implementation CPDFSquareAnnotation (PDFListView)
+
+- (NSSet *)keysForValuesToObserveForUndo {
+    static NSSet *circleKeys = nil;
+    if (circleKeys == nil) {
+        NSMutableSet *mutableKeys = [[super keysForValuesToObserveForUndo] mutableCopy];
+        [mutableKeys addObject:CPDFAnnotationInteriorColorKey];
+        [mutableKeys addObject:CPDFAnnotationInteriorOpacityKey];
+        circleKeys = [mutableKeys copy];
+    }
+    return circleKeys;
+}
+
+@end

+ 2 - 2
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFListView/CPDFListView+Edit.m

@@ -146,8 +146,8 @@
 }
 
 - (void)propertyEditingItemAction:(UIMenuItem*)menuItem {
-    if(self.performDelegate && [self.performDelegate respondsToSelector:@selector(PDFViewCustomMenuClick:identifier:)]){
-//        [self.performDelegate PDFViewCustomMenuClick:self identifier:@"PropertyItem"];
+    if(self.performDelegate && [self.performDelegate respondsToSelector:@selector(PDFListViewCustomMenuClick:identifier:)]){
+        [self.performDelegate PDFListViewCustomMenuClick:self identifier:@"PropertyItem"];
     }
 }
 

+ 10 - 0
compdfkit-tools/compdfkit-tools/Common/Views/PDFView/PDFListView/CPDFListView+Private.h

@@ -59,6 +59,16 @@ typedef NS_ENUM(NSInteger, CPDFAnnotationDraggingType) {
 
 @property (nonatomic, strong) CPDFListMagnifierView *magnifierView;
 
+@property (nonatomic, strong) NSMutableArray *notes;
+
+@property (nonatomic, strong) NSMapTable *undoGroupOldPropertiesPerNote;
+
+@property (nonatomic, strong) NSUndoManager *undoPDFManager;
+
+@property (nonatomic, assign) BOOL undoMove;
+
+@property (nonatomic,retain) CPDFAnnotation *addAnnotation;
+
 - (NSString *)annotationUserName;
 
 - (void)updateActiveAnnotations:(NSArray <CPDFAnnotation *> *)activeAnnotations;

+ 1 - 1
viewer-ctrl-demo/viewer-ctrl-demo/CPDFViewController.m

@@ -190,7 +190,7 @@
     return nil;
 }
 
-- (void)PDFViewPerformTouchEnded:(CPDFListView *)pdfView {
+- (void)PDFListViewPerformTouchEnded:(CPDFListView *)pdfView {
     if (CPDFViewAnnotationModeNone != self.pdfListView.annotationMode) {
         self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
         return;