Ver código fonte

【OCToSwift】CPDFCircleAnnotation+PDFListView

tangchao 1 ano atrás
pai
commit
61664d1a30

+ 8 - 10
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -2947,6 +2947,9 @@
 		BBBB6CD22AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CD12AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift */; };
 		BBBB6CD32AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CD12AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift */; };
 		BBBB6CD42AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CD12AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift */; };
+		BBBB6CD62AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CD52AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift */; };
+		BBBB6CD72AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CD52AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift */; };
+		BBBB6CD82AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CD52AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift */; };
 		BBBF68802A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */; };
 		BBBF68812A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */; };
 		BBBF68822A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */; };
@@ -3285,9 +3288,6 @@
 		F37322DE292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B4292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m */; };
 		F37322DF292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B4292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m */; };
 		F37322E0292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B4292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m */; };
-		F37322E4292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B7292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m */; };
-		F37322E5292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B7292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m */; };
-		F37322E6292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B7292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m */; };
 		F37322E7292DF9410013862C /* CPDFAnnotationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B8292DF9410013862C /* CPDFAnnotationModel.m */; };
 		F37322E8292DF9410013862C /* CPDFAnnotationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B8292DF9410013862C /* CPDFAnnotationModel.m */; };
 		F37322E9292DF9410013862C /* CPDFAnnotationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322B8292DF9410013862C /* CPDFAnnotationModel.m */; };
@@ -4704,6 +4704,7 @@
 		BBBB6CC92AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BBBB6CCD2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFButtonWidgetAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BBBB6CD12AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFChoiceWidgetAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
+		BBBB6CD52AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFCircleAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFilePromiseProvider.swift; sourceTree = "<group>"; };
 		BBBF68832A3C3AF10058E14E /* NSDocumentController+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSDocumentController+KMExtension.swift"; sourceTree = "<group>"; };
 		BBC2BCC4295DA8F30036B983 /* KMCropPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCropPreviewController.swift; sourceTree = "<group>"; };
@@ -4856,7 +4857,6 @@
 		F37322B3292DF9410013862C /* CPDFRedactAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFRedactAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322B4292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFFreeTextAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322B5292DF9410013862C /* CPDFWidgetAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFWidgetAnnotation+PDFListView.h"; sourceTree = "<group>"; };
-		F37322B7292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFCircleAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322B8292DF9410013862C /* CPDFAnnotationModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPDFAnnotationModel.m; sourceTree = "<group>"; };
 		F37322B9292DF9410013862C /* CPDFSquareAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFSquareAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322BA292DF9410013862C /* CPDFStampAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFStampAnnotation+PDFListView.m"; sourceTree = "<group>"; };
@@ -4875,7 +4875,6 @@
 		F37322CA292DF9410013862C /* CSelfSignAnnotationFreeText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSelfSignAnnotationFreeText.h; sourceTree = "<group>"; };
 		F37322CB292DF9410013862C /* CPDFRedactAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFRedactAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322CC292DF9410013862C /* CPDFAnnotationModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPDFAnnotationModel.h; sourceTree = "<group>"; };
-		F37322CD292DF9410013862C /* CPDFCircleAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFCircleAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322CF292DF9410013862C /* CPDFWidgetAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFWidgetAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322D1292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFMarkupAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322D2292DF9410013862C /* CPDFLinkAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFLinkAnnotation+PDFListView.m"; sourceTree = "<group>"; };
@@ -9200,8 +9199,7 @@
 				F37322B8292DF9410013862C /* CPDFAnnotationModel.m */,
 				BBBB6CCD2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift */,
 				BBBB6CD12AD14A5F0035AA66 /* CPDFChoiceWidgetAnnotation+PDFListView.swift */,
-				F37322CD292DF9410013862C /* CPDFCircleAnnotation+PDFListView.h */,
-				F37322B7292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m */,
+				BBBB6CD52AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift */,
 				F37322C5292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.h */,
 				F37322B4292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m */,
 				F37322C1292DF9410013862C /* CPDFInkAnnotation+PDFListView.h */,
@@ -10822,6 +10820,7 @@
 				ADB1FE3B29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */,
 				89752D9A2936E675003FF08E /* KMToolBarBox.swift in Sources */,
 				BB4EEF4429764FEF003A3537 /* KMWatermarkAligementView.swift in Sources */,
+				BBBB6CD62AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */,
 				BBEC00AF295C2AF300A26C98 /* KMBatesPreviewController.swift in Sources */,
 				9F0CB50D2986564500007028 /* KMDesignToken+BorderLeft.swift in Sources */,
 				9FBC489B2996500300CA39D7 /* KMDocumentController.swift in Sources */,
@@ -10879,7 +10878,6 @@
 				BBBB6CCA2AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift in Sources */,
 				BB0A55102A302DB700B6E84B /* KMTextField.swift in Sources */,
 				89E4E70E2963D62C002DBA6F /* KMAnnotationFontWindowController.m in Sources */,
-				F37322E4292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */,
 				AD68782129A5FADC005B5210 /* KMLightMemberCache.swift in Sources */,
 				AD8F06172999DB5900D93CBC /* KMPrintDrawPage.swift in Sources */,
 				BB14702F299DC0D100784A6A /* OIDTokenUtilities.m in Sources */,
@@ -11651,7 +11649,6 @@
 				89752D9B2936E675003FF08E /* KMToolBarBox.swift in Sources */,
 				ADBC373329CA95AA00D93208 /* KMComparativeModel.swift in Sources */,
 				F36EB6CA2987C9FE004C25FB /* KMDocumentAIViewController.m in Sources */,
-				F37322E5292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */,
 				F3732303292DF9410013862C /* CPDFLinkAnnotation+PDFListView.m in Sources */,
 				9FAAA326290A69920046FFCE /* KMToolSetScroller.swift in Sources */,
 				ADB1FE7F29752F2900ED072D /* KMBatchSecurityView.swift in Sources */,
@@ -11796,6 +11793,7 @@
 				ADCB9972292C65EE00B51A03 /* KMGOCROperation.m in Sources */,
 				9F02017F2A1BAC1600C9B673 /* KMAIRewritingVC.swift in Sources */,
 				9FDD0F78294FEF64000C4DAD /* KMConvertPDFManager.swift in Sources */,
+				BBBB6CD72AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */,
 				ADC075CB29866DDC006C752F /* KMBatchConvertPDFItemView.swift in Sources */,
 				8942F80429262B2E00389627 /* KMSideViewController.swift in Sources */,
 				9F0CB51E2986569B00007028 /* KMDesignToken+BorderRadiusBottomRight.swift in Sources */,
@@ -12434,6 +12432,7 @@
 				89E4E7842967BF5A002DBA6F /* KMCustomizeStampViewController.m in Sources */,
 				ADB1FE8029752F2900ED072D /* KMBatchSecurityView.swift in Sources */,
 				BB146FFB299DC0D100784A6A /* OIDExternalUserAgentMac.m in Sources */,
+				BBBB6CD82AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */,
 				BBD7FE092A13241E00F96075 /* KMOutlineEditViewController.swift in Sources */,
 				BBD54ED62A1CBD720012A230 /* NSView+KMExtension.swift in Sources */,
 				BBC3485029582920008D2CD1 /* KMBackgroundColorView.swift in Sources */,
@@ -12482,7 +12481,6 @@
 				9F1FE4BC29406E4700E952CA /* NSImage+CTAdditions.m in Sources */,
 				AD0FA50429A8E36200EDEB50 /* KMLightMemberAlertView.swift in Sources */,
 				9F0CB53F2986571A00007028 /* KMDesignToken+Typography.swift in Sources */,
-				F37322E6292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */,
 				ADE787AC2AA5A8D3002EC85A /* KMAccountExceptionView.swift in Sources */,
 				9F1FE49529406E4700E952CA /* common.m in Sources */,
 				BBC3481E295593F0008D2CD1 /* KMBackgroundListController.swift in Sources */,

+ 0 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFAnnotationModel.m

@@ -15,7 +15,6 @@
 #import "CPDFFreeTextAnnotation+PDFListView.h"
 #import "CPDFInkAnnotation+PDFListView.h"
 #import "CPDFLineAnnotation+PDFListView.h"
-#import "CPDFCircleAnnotation+PDFListView.h"
 #import "CPDFSquareAnnotation+PDFListView.h"
 #import "CPDFMarkupAnnotation+PDFListView.h"
 #import "CPDFStampAnnotation+PDFListView.h"

+ 0 - 23
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFCircleAnnotation+PDFListView.h

@@ -1,23 +0,0 @@
-//
-//  CPDFCircleAnnotation+PDFListView.h
-//  ComPDFKit
-//
-//  Copyright © 2014-2022 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>
-
-@class CPDFAnnotationModel;
-
-@interface CPDFCircleAnnotation (PDFListView)
-
-- (NSSet *)keysForValuesToObserveForUndo;
-
-+ (NSImage *)annotationImageWithAnnotationModel:(CPDFAnnotationModel *)annotationModel;
-
-@end

+ 0 - 91
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFCircleAnnotation+PDFListView.m

@@ -1,91 +0,0 @@
-//
-//  CPDFCircleAnnotation+PDFListView.m
-//  ComPDFKit
-//
-//  Copyright © 2014-2022 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 "CPDFAnnotationModel.h"
-#import <PDF_Master-Swift.h>
-
-@implementation CPDFCircleAnnotation (PDFListView)
-
-- (instancetype)initPDFListViewNoteWithDocument:(CPDFDocument *)document {
-    self = [self initWithDocument:document];
-    if (self) {
-        CPDFAnnotationModel *annotationModel = [[CPDFAnnotationModel alloc] initWithAnnotationType:CAnnotationTypeCircle];
-        self.color = annotationModel.color;
-        self.opacity = annotationModel.opacity;
-        self.interiorColor = annotationModel.interiorColor;
-        self.interiorOpacity = annotationModel.opacity;
-        self.border = [[CPDFBorder alloc] initWithStyle:annotationModel.style lineWidth:annotationModel.lineWidth dashPattern:annotationModel.dashPattern];
-    }
-    return self;
-}
-
-- (BOOL)isResizable { return YES; }
-
-- (BOOL)isMovable { return YES; }
-
-- (NSSet *)keysForValuesToObserveForUndo {
-    static NSSet *circleKeys = nil;
-    if (circleKeys == nil) {
-        NSMutableSet *mutableKeys = [[super keysForValuesToObserveForUndo] mutableCopy];
-        [mutableKeys addObject:CPDFAnnotationInteriorColorKey];
-        [mutableKeys addObject:CPDFAnnotationInteriorOpacityKey];
-        circleKeys = mutableKeys;
-    }
-    return circleKeys;
-}
-
-+ (NSImage *)annotationImageWithAnnotationModel:(CPDFAnnotationModel *)annotationModel {
-    CGRect bounds = annotationModel.annotationImageBounds;
-    CGFloat lineWidth = annotationModel.lineWidth;
-    
-    NSImage *image = [[NSImage alloc] initWithSize:bounds.size];
-    [image lockFocus];
-    [[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
-    CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
-
-    NSColor *color = annotationModel.color;
-    if (color) {
-        CGFloat red, green, blue, alpha;
-        [[color colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&red green:&green blue:&blue alpha:&alpha];
-        CGFloat tAlphaMin = MIN(alpha, annotationModel.opacity);
-        CGContextSetRGBStrokeColor(context, red, green, blue, tAlphaMin);
-    }
-
-    bounds = CGRectInset(bounds, lineWidth, lineWidth);
-    
-    if (annotationModel.style == CPDFBorderStyleDashed &&
-        annotationModel.dashPattern) {
-        size_t count = annotationModel.dashPattern.count;
-        CGFloat lengths[count];
-        for (int i=0; i<count; i++) {
-            lengths[i] = [annotationModel.dashPattern[i] floatValue];
-        }
-        CGContextSetLineDash(context, 0, lengths, count);
-    }
-
-    CGContextSetLineWidth(context, lineWidth);
-    CGContextAddEllipseInRect(context, bounds);
-    CGContextStrokePath(context);
-    
-    NSColor *interiorColor = [annotationModel.interiorColor colorWithAlphaComponent:annotationModel.interiorOpacity];
-    if (interiorColor && annotationModel.interiorOpacity > 0.01) {
-        bounds = CGRectInset(bounds, lineWidth/2.0, lineWidth/2.0);
-        CGContextSetFillColorWithColor(context, interiorColor.CGColor);
-        CGContextFillEllipseInRect(context, bounds);
-    }
-    [image unlockFocus];
-
-    return image;
-}
-
-@end

+ 87 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFCircleAnnotation+PDFListView.swift

@@ -0,0 +1,87 @@
+//
+//  CPDFCircleAnnotation+PDFListView.swift
+//  PDF Master
+//
+//  Created by tangchao on 2023/10/7.
+//
+
+import Foundation
+
+@objc extension CPDFCircleAnnotation {
+    convenience init(PDFListViewNoteWith document: CPDFDocument) {
+        self.init(document: document)
+        if let model = CPDFAnnotationModel(annotationType: .circle) {
+            self.color = model.color()
+            self.opacity = model.opacity()
+            self.interiorColor = model.interiorColor()
+            self.interiorOpacity = model.opacity()
+            self.border = CPDFBorder(style: model.style(), lineWidth: model.lineWidth(), dashPattern: model.dashPattern())
+        }
+    }
+    
+    override func isResizable() -> Bool {
+        return true
+    }
+    
+    override func isMovable() -> Bool {
+        return true
+    }
+    
+    private static var _c_keys: Set<AnyHashable>?
+    override func keysForValuesToObserveForUndo() -> Set<AnyHashable>! {
+        if (CPDFCircleAnnotation._c_keys == nil) {
+            CPDFCircleAnnotation._c_keys = super.keysForValuesToObserveForUndo()
+            _ = CPDFCircleAnnotation._c_keys?.insert(CPDFAnnotationInteriorColorKey)
+            _ = CPDFCircleAnnotation._c_keys?.insert(CPDFAnnotationInteriorOpacityKey)
+        }
+        return CPDFCircleAnnotation._c_keys
+    }
+    
+    class func annotationImage(annotationModel: CPDFAnnotationModel) -> NSImage {
+        var bounds = annotationModel.annotationImageBounds()
+        let lineWidth = annotationModel.lineWidth()
+        
+        var image = NSImage(size: bounds.size)
+        image.lockFocus()
+        NSGraphicsContext.current?.imageInterpolation = .high
+        let context = NSGraphicsContext.current?.cgContext
+        
+        if let color = annotationModel.color() {
+            var red: CGFloat = 0.0
+            var green: CGFloat = 0.0
+            var blue: CGFloat = 0.0
+            var alpha: CGFloat = 0.0
+            color.usingColorSpaceName(.calibratedRGB)?.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
+            let tAlphaMin = min(alpha, annotationModel.opacity())
+            context?.setStrokeColor(red: red, green: green, blue: blue, alpha: tAlphaMin)
+        }
+        
+        bounds = CGRectInset(bounds, lineWidth, lineWidth)
+        if (annotationModel.style() == .dashed &&
+            annotationModel.dashPattern != nil) {
+            let count = annotationModel.dashPattern().count
+            var lengths: [CGFloat] = []
+            for i in 0 ..< count {
+                if let data = annotationModel.dashPattern()[i] as? NSNumber {
+                    lengths.append(CGFloat(data.floatValue))
+                }
+            }
+            context?.setLineDash(phase: 0, lengths: lengths)
+        }
+        
+        context?.setLineWidth(lineWidth)
+        context?.addEllipse(in: bounds)
+        context?.strokePath()
+        
+        let interiorColor = annotationModel.interiorColor().withAlphaComponent(annotationModel.interiorOpacity())
+        if (interiorColor != nil && annotationModel.interiorOpacity() > 0.01) {
+            bounds = CGRectInset(bounds, lineWidth/2.0, lineWidth/2.0)
+            context?.setFillColor(interiorColor.cgColor)
+            context?.fillEllipse(in: bounds)
+        }
+        
+        image.unlockFocus()
+        
+        return image
+    }
+}

+ 0 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/ComPDFUIKit.h

@@ -24,7 +24,6 @@
 #import "CPDFLinkAnnotation+PDFListView.h"
 #import "CPDFMarkupAnnotation+PDFListView.h"
 #import "CPDFRedactAnnotation+PDFListView.h"
-#import "CPDFCircleAnnotation+PDFListView.h"
 #import "CPDFFreeTextAnnotation+PDFListView.h"
 #import "CPDFSquareAnnotation+PDFListView.h"
 #import "CPDFWidgetAnnotation+PDFListView.h"