diff --git a/src/Avalonia.Native.OSX/common.h b/src/Avalonia.Native.OSX/common.h index 303298ba02..4ff72b8820 100644 --- a/src/Avalonia.Native.OSX/common.h +++ b/src/Avalonia.Native.OSX/common.h @@ -10,4 +10,8 @@ extern IAvnPlatformThreadingInterface* CreatePlatformThreading(); extern IAvnWindow* CreateAvnWindow(IAvnWindowEvents*events); extern IAvnPopup* CreateAvnPopup(IAvnWindowEvents*events); + +extern NSPoint ToNSPoint (AvnPoint p); +extern AvnPoint ToAvnPoint (NSPoint p); +extern AvnPoint ConvertPointY (AvnPoint p); #endif diff --git a/src/Avalonia.Native.OSX/main.mm b/src/Avalonia.Native.OSX/main.mm index a04ed11a1e..0aa6ac2f6d 100644 --- a/src/Avalonia.Native.OSX/main.mm +++ b/src/Avalonia.Native.OSX/main.mm @@ -100,3 +100,33 @@ extern "C" IAvaloniaNativeFactory* CreateAvaloniaNative() { return new AvaloniaNative(); }; + + +NSPoint ToNSPoint (AvnPoint p) +{ + NSPoint result; + result.x = p.X; + result.y = p.Y; + + return result; +} + +AvnPoint ToAvnPoint (NSPoint p) +{ + AvnPoint result; + result.X = p.x; + result.Y = p.y; + + return result; +} + + +AvnPoint ConvertPointY (AvnPoint p) +{ + auto sw = [NSScreen.screens objectAtIndex:0].frame; + + auto t = MAX(sw.origin.y, sw.origin.y + sw.size.height); + p.Y = t - p.Y; + + return p; +}