|
@@ -233,15 +233,80 @@ class CPDFAnnotationMarkupExtraIvars: NSObject {
|
|
|
if(isHover) {
|
|
|
var length = [CGFloat](repeating: 5, count: 2)
|
|
|
KMContextSetLineDash(context, 0, length, 2)
|
|
|
- KMContextStrokeRectWithWidth(context, KMRectInset(NSRectToCGRect(rect), lineWidth, lineWidth), lineWidth)
|
|
|
+ let dirtyRect = KMRectInset(NSRectToCGRect(rect), lineWidth, lineWidth)
|
|
|
+ let cornerRadius = min(abs(dirtyRect.size.width)/2.0, abs(dirtyRect.size.height)/6.0); // 设置圆角半径
|
|
|
+
|
|
|
+ // 移动到起始点
|
|
|
+ context.move(to: CGPoint(x: dirtyRect.minX + cornerRadius, y: dirtyRect.minY))
|
|
|
+
|
|
|
+ // 添加直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.maxX - cornerRadius, y: dirtyRect.minY))
|
|
|
+
|
|
|
+ // 添加右上角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.maxX, y: dirtyRect.minY), tangent2End: CGPoint(x: dirtyRect.maxX, y: dirtyRect.minY + cornerRadius), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 添加右边直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.maxX, y: dirtyRect.maxY - cornerRadius))
|
|
|
+
|
|
|
+ // 添加右下角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.maxX, y: dirtyRect.maxY), tangent2End: CGPoint(x: dirtyRect.maxX - cornerRadius, y: dirtyRect.maxY), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 添加底边直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.minX + cornerRadius, y: dirtyRect.maxY))
|
|
|
+
|
|
|
+ // 添加左下角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.minX, y: dirtyRect.maxY), tangent2End: CGPoint(x: dirtyRect.minX, y: dirtyRect.maxY - cornerRadius), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 添加左边直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.minX, y: dirtyRect.minY + cornerRadius))
|
|
|
+
|
|
|
+ // 添加左上角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.minX, y: dirtyRect.minY), tangent2End: CGPoint(x: dirtyRect.minX + cornerRadius, y: dirtyRect.minY), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 关闭路径
|
|
|
+ context.closePath()
|
|
|
+ context.strokePath()
|
|
|
} else {
|
|
|
- KMContextStrokeRect(context, KMRectInset(NSRectToCGRect(rect), lineWidth, lineWidth))
|
|
|
+ let dirtyRect = KMRectInset(NSRectToCGRect(rect), lineWidth, lineWidth)
|
|
|
+ let cornerRadius = min(abs(dirtyRect.size.width)/2.0, abs(dirtyRect.size.height)/6.0); // 设置圆角半径
|
|
|
+
|
|
|
+ // 移动到起始点
|
|
|
+ context.move(to: CGPoint(x: dirtyRect.minX + cornerRadius, y: dirtyRect.minY))
|
|
|
+
|
|
|
+ // 添加直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.maxX - cornerRadius, y: dirtyRect.minY))
|
|
|
+
|
|
|
+ // 添加右上角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.maxX, y: dirtyRect.minY), tangent2End: CGPoint(x: dirtyRect.maxX, y: dirtyRect.minY + cornerRadius), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 添加右边直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.maxX, y: dirtyRect.maxY - cornerRadius))
|
|
|
+
|
|
|
+ // 添加右下角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.maxX, y: dirtyRect.maxY), tangent2End: CGPoint(x: dirtyRect.maxX - cornerRadius, y: dirtyRect.maxY), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 添加底边直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.minX + cornerRadius, y: dirtyRect.maxY))
|
|
|
+
|
|
|
+ // 添加左下角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.minX, y: dirtyRect.maxY), tangent2End: CGPoint(x: dirtyRect.minX, y: dirtyRect.maxY - cornerRadius), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 添加左边直线
|
|
|
+ context.addLine(to: CGPoint(x: dirtyRect.minX, y: dirtyRect.minY + cornerRadius))
|
|
|
+
|
|
|
+ // 添加左上角圆弧
|
|
|
+ context.addArc(tangent1End: CGPoint(x: dirtyRect.minX, y: dirtyRect.minY), tangent2End: CGPoint(x: dirtyRect.minX + cornerRadius, y: dirtyRect.minY), radius: cornerRadius)
|
|
|
+
|
|
|
+ // 关闭路径
|
|
|
+ context.closePath()
|
|
|
+ context.strokePath()
|
|
|
}
|
|
|
|
|
|
}
|
|
|
KMContextRestoreGState(context)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
override func hitTest(_ point: NSPoint) -> Bool {
|
|
|
if super.hitTest(point) == false {
|
|
|
return false
|