Skip to content

Instantly share code, notes, and snippets.

@stormychel
Created November 9, 2025 08:49
Show Gist options
  • Save stormychel/01a26d655955834beac5eb2a890b2c28 to your computer and use it in GitHub Desktop.
Save stormychel/01a26d655955834beac5eb2a890b2c28 to your computer and use it in GitHub Desktop.
Cocoa to Quartz point conversion
/// Converts a Cocoa global point (origin at lower-left) into Quartz display coordinates (origin at upper-left). - #763
static func quartzPoint(from cocoaPoint: CGPoint) -> CGPoint {
let screens = NSScreen.screens
// Find screen containing the point; fall back to main screen
let targetScreen = screens.first { NSMouseInRect(cocoaPoint, $0.frame, false) } ?? NSScreen.main
guard let screen = targetScreen else { return cocoaPoint }
// Translate into screen-local coordinates
let localY = cocoaPoint.y - screen.frame.origin.y
let flippedLocalY = screen.frame.size.height - localY
let quartzY = screen.frame.origin.y + flippedLocalY
return CGPoint(x: cocoaPoint.x, y: quartzY)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment