diff options
Diffstat (limited to 'vendor/gioui.org/app/metal_ios.go')
-rw-r--r-- | vendor/gioui.org/app/metal_ios.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/gioui.org/app/metal_ios.go b/vendor/gioui.org/app/metal_ios.go new file mode 100644 index 0000000..860ba1a --- /dev/null +++ b/vendor/gioui.org/app/metal_ios.go @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Unlicense OR MIT + +//go:build !nometal +// +build !nometal + +package app + +/* +#cgo CFLAGS: -Werror -xobjective-c -fmodules -fobjc-arc + +@import UIKit; + +@import QuartzCore.CAMetalLayer; + +#include <CoreFoundation/CoreFoundation.h> + +Class gio_layerClass(void) { + return [CAMetalLayer class]; +} + +static CFTypeRef getMetalLayer(CFTypeRef viewRef) { + @autoreleasepool { + UIView *view = (__bridge UIView *)viewRef; + return CFBridgingRetain(view.layer); + } +} + +static void resizeDrawable(CFTypeRef viewRef, CFTypeRef layerRef) { + @autoreleasepool { + UIView *view = (__bridge UIView *)viewRef; + CAMetalLayer *layer = (__bridge CAMetalLayer *)layerRef; + layer.contentsScale = view.contentScaleFactor; + 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) +} |