diff options
Diffstat (limited to 'vendor/gioui.org/app/metal_macos.go')
-rw-r--r-- | vendor/gioui.org/app/metal_macos.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/gioui.org/app/metal_macos.go b/vendor/gioui.org/app/metal_macos.go new file mode 100644 index 0000000..7db06a9 --- /dev/null +++ b/vendor/gioui.org/app/metal_macos.go @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Unlicense OR MIT + +//go:build darwin && !ios && !nometal +// +build darwin,!ios,!nometal + +package app + +/* +#cgo CFLAGS: -Werror -xobjective-c -fmodules -fobjc-arc + +@import AppKit; + +@import QuartzCore.CAMetalLayer; + +#include <CoreFoundation/CoreFoundation.h> + +CALayer *gio_layerFactory(void) { + @autoreleasepool { + return [CAMetalLayer layer]; + } +} + +static CFTypeRef getMetalLayer(CFTypeRef viewRef) { + @autoreleasepool { + NSView *view = (__bridge NSView *)viewRef; + return CFBridgingRetain(view.layer); + } +} + +static void resizeDrawable(CFTypeRef viewRef, CFTypeRef layerRef) { + @autoreleasepool { + NSView *view = (__bridge NSView *)viewRef; + CAMetalLayer *layer = (__bridge CAMetalLayer *)layerRef; + CGSize size = layer.bounds.size; + size.width *= layer.contentsScale; + size.height *= layer.contentsScale; + layer.drawableSize = size; + } +} +*/ +import "C" + +func getMetalLayer(view C.CFTypeRef) C.CFTypeRef { + return C.getMetalLayer(view) +} + +func resizeDrawable(view, layer C.CFTypeRef) { + C.resizeDrawable(view, layer) +} |