aboutsummaryrefslogtreecommitdiff
path: root/vendor/gioui.org/app/metal_macos.go
blob: 7db06a99455df9346506d6378c512d9c4ec95145 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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)
}