Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26700c59f4 |
@@ -195,14 +195,15 @@ final class CaptureModel: ObservableObject {
|
|||||||
return rep.cgImage ?? image
|
return rep.cgImage ?? image
|
||||||
}
|
}
|
||||||
|
|
||||||
func addStroke(_ points: [CGPoint]) {
|
/// `widthPx` is the stroke thickness in IMAGE PIXELS (the preview
|
||||||
|
/// converts the slider value so exports match what was drawn).
|
||||||
|
func addStroke(_ points: [CGPoint], widthPx: CGFloat) {
|
||||||
guard points.count > 1 else { return }
|
guard points.count > 1 else { return }
|
||||||
if tool == .redact {
|
if tool == .redact {
|
||||||
// Redaction: a filled black bar from start to end, as thick as the
|
// Redaction: a filled black bar from start to end.
|
||||||
// current stroke width (drawn as a rect for clean edges).
|
strokes.append(Stroke(points: points, width: max(widthPx, 12), color: .black, isRedaction: true))
|
||||||
strokes.append(Stroke(points: points, width: max(strokeWidth, 12), color: .black, isRedaction: true))
|
|
||||||
} else {
|
} else {
|
||||||
strokes.append(Stroke(points: points, width: strokeWidth, color: drawColor))
|
strokes.append(Stroke(points: points, width: widthPx, color: drawColor))
|
||||||
}
|
}
|
||||||
redoStack = []
|
redoStack = []
|
||||||
}
|
}
|
||||||
@@ -575,7 +576,8 @@ struct ScreenshotPane: View {
|
|||||||
for point in stroke.points.dropFirst() {
|
for point in stroke.points.dropFirst() {
|
||||||
path.addLine(to: CGPoint(x: origin.x + point.x * scale, y: origin.y + point.y * scale))
|
path.addLine(to: CGPoint(x: origin.x + point.x * scale, y: origin.y + point.y * scale))
|
||||||
}
|
}
|
||||||
context.stroke(path, with: .color(Color(nsColor: stroke.color)), lineWidth: stroke.width)
|
// stroke.width is in image pixels; scale to view points
|
||||||
|
context.stroke(path, with: .color(Color(nsColor: stroke.color)), lineWidth: stroke.width * scale)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -636,7 +638,7 @@ struct ScreenshotPane: View {
|
|||||||
.onEnded { _ in
|
.onEnded { _ in
|
||||||
if model.tool != .select {
|
if model.tool != .select {
|
||||||
if currentStroke.count > 1 {
|
if currentStroke.count > 1 {
|
||||||
model.addStroke(currentStroke)
|
model.addStroke(currentStroke, widthPx: model.strokeWidth / max(scale, 0.01))
|
||||||
}
|
}
|
||||||
currentStroke = []
|
currentStroke = []
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+2
-2
@@ -108,9 +108,9 @@ cat > "$APP/Contents/Info.plist" <<'PLIST'
|
|||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>Icon</string>
|
<string>Icon</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.9.1</string>
|
<string>1.9.2</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>91</string>
|
<string>92</string>
|
||||||
<key>LSUIElement</key>
|
<key>LSUIElement</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
|
|||||||
Reference in New Issue
Block a user