|
@@ -135,7 +135,6 @@ final class DrawPrintOverlayView: NSView, AppearanceRefreshable {
|
|
|
canvasContainer.wantsLayer = true
|
|
canvasContainer.wantsLayer = true
|
|
|
canvasContainer.layer?.cornerRadius = AppTheme.contentPanelCornerRadius
|
|
canvasContainer.layer?.cornerRadius = AppTheme.contentPanelCornerRadius
|
|
|
canvasContainer.layer?.borderWidth = 1.5
|
|
canvasContainer.layer?.borderWidth = 1.5
|
|
|
- canvasContainer.clipsToBounds = false
|
|
|
|
|
canvasContainer.applyCardShadow()
|
|
canvasContainer.applyCardShadow()
|
|
|
canvasContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
canvasContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
|
|
|
@@ -289,6 +288,9 @@ final class BlankCanvasView: NSView, AppearanceRefreshable {
|
|
|
|
|
|
|
|
private func setup() {
|
|
private func setup() {
|
|
|
wantsLayer = true
|
|
wantsLayer = true
|
|
|
|
|
+ layer?.cornerRadius = AppTheme.contentPanelCornerRadius
|
|
|
|
|
+ layer?.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner]
|
|
|
|
|
+ layer?.masksToBounds = true
|
|
|
|
|
|
|
|
undoButton.translatesAutoresizingMaskIntoConstraints = false
|
|
undoButton.translatesAutoresizingMaskIntoConstraints = false
|
|
|
redoButton.translatesAutoresizingMaskIntoConstraints = false
|
|
redoButton.translatesAutoresizingMaskIntoConstraints = false
|
|
@@ -314,7 +316,7 @@ final class BlankCanvasView: NSView, AppearanceRefreshable {
|
|
|
|
|
|
|
|
override func draw(_ dirtyRect: NSRect) {
|
|
override func draw(_ dirtyRect: NSRect) {
|
|
|
NSColor.white.setFill()
|
|
NSColor.white.setFill()
|
|
|
- bounds.fill()
|
|
|
|
|
|
|
+ leftRoundedFillPath().fill()
|
|
|
|
|
|
|
|
let context = NSGraphicsContext.current?.cgContext
|
|
let context = NSGraphicsContext.current?.cgContext
|
|
|
for stroke in strokes {
|
|
for stroke in strokes {
|
|
@@ -330,6 +332,31 @@ final class BlankCanvasView: NSView, AppearanceRefreshable {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private func leftRoundedFillPath() -> NSBezierPath {
|
|
|
|
|
+ let radius = AppTheme.contentPanelCornerRadius
|
|
|
|
|
+ let rect = bounds
|
|
|
|
|
+ let path = NSBezierPath()
|
|
|
|
|
+ path.move(to: NSPoint(x: rect.minX + radius, y: rect.maxY))
|
|
|
|
|
+ path.line(to: NSPoint(x: rect.maxX, y: rect.maxY))
|
|
|
|
|
+ path.line(to: NSPoint(x: rect.maxX, y: rect.minY))
|
|
|
|
|
+ path.line(to: NSPoint(x: rect.minX + radius, y: rect.minY))
|
|
|
|
|
+ path.appendArc(
|
|
|
|
|
+ withCenter: NSPoint(x: rect.minX + radius, y: rect.minY + radius),
|
|
|
|
|
+ radius: radius,
|
|
|
|
|
+ startAngle: 180,
|
|
|
|
|
+ endAngle: 270
|
|
|
|
|
+ )
|
|
|
|
|
+ path.line(to: NSPoint(x: rect.minX, y: rect.maxY - radius))
|
|
|
|
|
+ path.appendArc(
|
|
|
|
|
+ withCenter: NSPoint(x: rect.minX + radius, y: rect.maxY - radius),
|
|
|
|
|
+ radius: radius,
|
|
|
|
|
+ startAngle: 90,
|
|
|
|
|
+ endAngle: 180
|
|
|
|
|
+ )
|
|
|
|
|
+ path.close()
|
|
|
|
|
+ return path
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private func drawStroke(_ stroke: CanvasStroke, in context: CGContext?) {
|
|
private func drawStroke(_ stroke: CanvasStroke, in context: CGContext?) {
|
|
|
guard stroke.points.count > 1, let context else { return }
|
|
guard stroke.points.count > 1, let context else { return }
|
|
|
context.saveGState()
|
|
context.saveGState()
|