diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2022-02-13 12:01:19 +0000 |
|---|---|---|
| committer | gingerBill <gingerBill@users.noreply.github.com> | 2022-02-13 12:01:19 +0000 |
| commit | 23bc643a81cb36a4d8e4d2c29c8bd4b7eaa8ada7 (patch) | |
| tree | 20def9a29221e3184ea433164ecd90b600b61a6f | |
| parent | 8966294823d7397abaa639f37f55f26496466ba3 (diff) | |
| parent | 41854bacf57ee8859bf2d55a9c74f48f8b588b26 (diff) | |
Merge branch 'objc-intrinsics' of https://github.com/odin-lang/Odin into objc-intrinsics
| -rw-r--r-- | core/sys/darwin/Foundation/NSWindow.odin | 41 | ||||
| -rw-r--r-- | core/sys/darwin/QuartzCore/QuartzCore.odin | 54 |
2 files changed, 95 insertions, 0 deletions
diff --git a/core/sys/darwin/Foundation/NSWindow.odin b/core/sys/darwin/Foundation/NSWindow.odin new file mode 100644 index 000000000..014550aa5 --- /dev/null +++ b/core/sys/darwin/Foundation/NSWindow.odin @@ -0,0 +1,41 @@ +package objc_Foundation + +import NS "core:sys/darwin/Foundation" + +@(objc_class="CALayer") +Layer :: struct { using _: NS.Object } + +@(objc_class="NSResponder") +Responder :: struct {using _: Object} + +@(objc_class="NSView") +View :: struct {using _: Responder} + +@(objc_class="NSWindow") +Window :: struct {using _: Responder} + +@(objc_type=Window, objc_name="contentView") +Window_contentView :: proc(self: ^Window) -> ^View { + return msgSend(^View, self, "contentView") +} + +@(objc_type=View, objc_name="layer") +View_layer :: proc(self: ^View) -> ^Layer { + return msgSend(^Layer, self, "layer") +} + +@(objc_type=View, objc_name="setLayer") +View_setLayer :: proc(self: ^View, layer: ^Layer) { + msgSend(nil, self, "setLayer:", layer) +} + + +@(objc_type=View, objc_name="wantsLayer") +View_wantsLayer :: proc(self: ^View) -> BOOL { + return msgSend(BOOL, self, "wantsLayer") +} + +@(objc_type=View, objc_name="setWantsLayer") +View_setWantsLayer :: proc(self: ^View, wantsLayer: BOOL) { + msgSend(nil, self, "setWantsLayer:", wantsLayer) +} diff --git a/core/sys/darwin/QuartzCore/QuartzCore.odin b/core/sys/darwin/QuartzCore/QuartzCore.odin new file mode 100644 index 000000000..49ed51622 --- /dev/null +++ b/core/sys/darwin/QuartzCore/QuartzCore.odin @@ -0,0 +1,54 @@ +package objc_QuartzCore + +import NS "core:sys/darwin/Foundation" +import MTL "core:sys/darwin/Metal" +import "core:intrinsics" + +@(private) +msgSend :: intrinsics.objc_send + +@(objc_class="CAMetalLayer") +MetalLayer :: struct{ using _: NS.Layer} + +@(objc_type=MetalLayer, objc_name="device") +MetalLayer_device :: proc(self: ^MetalLayer) -> ^MTL.Device { + return msgSend(^MTL.Device, self, "device") +} +@(objc_type=MetalLayer, objc_name="setDevice") +MetalLayer_setDevice :: proc(self: ^MetalLayer, device: ^MTL.Device) { + msgSend(nil, self, "setDevice:", device) +} + +@(objc_type=MetalLayer, objc_name="opaque") +MetalLayer_opaque :: proc(self: ^MetalLayer) -> NS.BOOL { + return msgSend(NS.BOOL, self, "opaque") +} +@(objc_type=MetalLayer, objc_name="setOpaque") +MetalLayer_setOpaque :: proc(self: ^MetalLayer, opaque: NS.BOOL) { + msgSend(nil, self, "setOpaque:", opaque) +} + +@(objc_type=MetalLayer, objc_name="preferredDevice") +MetalLayer_preferredDevice :: proc(self: ^MetalLayer) -> ^MTL.Device { + return msgSend(^MTL.Device, self, "preferredDevice") +} +@(objc_type=MetalLayer, objc_name="pixelFormat") +MetalLayer_pixelFormat :: proc(self: ^MetalLayer) -> MTL.PixelFormat { + return msgSend(MTL.PixelFormat, self, "pixelFormat") +} +@(objc_type=MetalLayer, objc_name="framebufferOnly") +MetalLayer_framebufferOnly :: proc(self: ^MetalLayer) -> NS.BOOL { + return msgSend(NS.BOOL, self, "framebufferOnly") +} + + +@(objc_class="CAMetalDrawable") +MetalDrawable :: struct { using _: MTL.Drawable } + +MetalDrawable_layer :: proc(self: ^MetalDrawable) -> ^MetalLayer { + return msgSend(^MetalLayer, self, "layer") +} + +MetalDrawable_texture :: proc(self: ^MetalDrawable) -> ^MTL.Texture { + return msgSend(^MTL.Texture, self, "texture") +}
\ No newline at end of file |