use crate::common::*;
use crate::AppKit::*;
use crate::Foundation::*;
use crate::Metal::*;
use crate::MetalKit::*;
typed_enum!(
pub type MTKModelError = NSString;
);
extern_static!(MTKModelErrorDomain: &'static MTKModelError);
extern_static!(MTKModelErrorKey: &'static MTKModelError);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "MetalKit_MTKMeshBufferAllocator")]
pub struct MTKMeshBufferAllocator;
#[cfg(feature = "MetalKit_MTKMeshBufferAllocator")]
unsafe impl ClassType for MTKMeshBufferAllocator {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "MetalKit_MTKMeshBufferAllocator")]
unsafe impl NSObjectProtocol for MTKMeshBufferAllocator {}
extern_methods!(
#[cfg(feature = "MetalKit_MTKMeshBufferAllocator")]
unsafe impl MTKMeshBufferAllocator {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method_id(@__retain_semantics Init initWithDevice:)]
pub unsafe fn initWithDevice(
this: Allocated<Self>,
device: &ProtocolObject<dyn MTLDevice>,
) -> Id<Self>;
#[method_id(@__retain_semantics Other device)]
pub unsafe fn device(&self) -> Id<ProtocolObject<dyn MTLDevice>>;
}
);
extern_methods!(
#[cfg(feature = "MetalKit_MTKMeshBufferAllocator")]
unsafe impl MTKMeshBufferAllocator {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "MetalKit_MTKMeshBuffer")]
pub struct MTKMeshBuffer;
#[cfg(feature = "MetalKit_MTKMeshBuffer")]
unsafe impl ClassType for MTKMeshBuffer {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "MetalKit_MTKMeshBuffer")]
unsafe impl NSCopying for MTKMeshBuffer {}
#[cfg(feature = "MetalKit_MTKMeshBuffer")]
unsafe impl NSObjectProtocol for MTKMeshBuffer {}
extern_methods!(
#[cfg(feature = "MetalKit_MTKMeshBuffer")]
unsafe impl MTKMeshBuffer {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method(length)]
pub unsafe fn length(&self) -> NSUInteger;
#[cfg(feature = "MetalKit_MTKMeshBufferAllocator")]
#[method_id(@__retain_semantics Other allocator)]
pub unsafe fn allocator(&self) -> Id<MTKMeshBufferAllocator>;
#[method_id(@__retain_semantics Other buffer)]
pub unsafe fn buffer(&self) -> Id<ProtocolObject<dyn MTLBuffer>>;
#[method(offset)]
pub unsafe fn offset(&self) -> NSUInteger;
}
);
extern_methods!(
#[cfg(feature = "MetalKit_MTKMeshBuffer")]
unsafe impl MTKMeshBuffer {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "MetalKit_MTKSubmesh")]
pub struct MTKSubmesh;
#[cfg(feature = "MetalKit_MTKSubmesh")]
unsafe impl ClassType for MTKSubmesh {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "MetalKit_MTKSubmesh")]
unsafe impl NSObjectProtocol for MTKSubmesh {}
extern_methods!(
#[cfg(feature = "MetalKit_MTKSubmesh")]
unsafe impl MTKSubmesh {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method(primitiveType)]
pub unsafe fn primitiveType(&self) -> MTLPrimitiveType;
#[method(indexType)]
pub unsafe fn indexType(&self) -> MTLIndexType;
#[cfg(feature = "MetalKit_MTKMeshBuffer")]
#[method_id(@__retain_semantics Other indexBuffer)]
pub unsafe fn indexBuffer(&self) -> Id<MTKMeshBuffer>;
#[method(indexCount)]
pub unsafe fn indexCount(&self) -> NSUInteger;
#[cfg(feature = "MetalKit_MTKMesh")]
#[method_id(@__retain_semantics Other mesh)]
pub unsafe fn mesh(&self) -> Option<Id<MTKMesh>>;
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other name)]
pub unsafe fn name(&self) -> Id<NSString>;
#[cfg(feature = "Foundation_NSString")]
#[method(setName:)]
pub unsafe fn setName(&self, name: &NSString);
}
);
extern_methods!(
#[cfg(feature = "MetalKit_MTKSubmesh")]
unsafe impl MTKSubmesh {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "MetalKit_MTKMesh")]
pub struct MTKMesh;
#[cfg(feature = "MetalKit_MTKMesh")]
unsafe impl ClassType for MTKMesh {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "MetalKit_MTKMesh")]
unsafe impl NSObjectProtocol for MTKMesh {}
extern_methods!(
#[cfg(feature = "MetalKit_MTKMesh")]
unsafe impl MTKMesh {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[cfg(all(feature = "Foundation_NSError", feature = "ModelIO_MDLMesh"))]
#[method_id(@__retain_semantics Init initWithMesh:device:error:_)]
pub unsafe fn initWithMesh_device_error(
this: Allocated<Self>,
mesh: &MDLMesh,
device: &ProtocolObject<dyn MTLDevice>,
) -> Result<Id<Self>, Id<NSError>>;
#[cfg(all(
feature = "Foundation_NSArray",
feature = "Foundation_NSError",
feature = "ModelIO_MDLAsset",
feature = "ModelIO_MDLMesh"
))]
#[method_id(@__retain_semantics New newMeshesFromAsset:device:sourceMeshes:error:_)]
pub unsafe fn newMeshesFromAsset_device_sourceMeshes_error(
asset: &MDLAsset,
device: &ProtocolObject<dyn MTLDevice>,
source_meshes: Option<&mut Option<Id<NSArray<MDLMesh>>>>,
) -> Result<Id<NSArray<MTKMesh>>, Id<NSError>>;
#[cfg(all(feature = "Foundation_NSArray", feature = "MetalKit_MTKMeshBuffer"))]
#[method_id(@__retain_semantics Other vertexBuffers)]
pub unsafe fn vertexBuffers(&self) -> Id<NSArray<MTKMeshBuffer>>;
#[cfg(feature = "ModelIO_MDLVertexDescriptor")]
#[method_id(@__retain_semantics Other vertexDescriptor)]
pub unsafe fn vertexDescriptor(&self) -> Id<MDLVertexDescriptor>;
#[cfg(all(feature = "Foundation_NSArray", feature = "MetalKit_MTKSubmesh"))]
#[method_id(@__retain_semantics Other submeshes)]
pub unsafe fn submeshes(&self) -> Id<NSArray<MTKSubmesh>>;
#[method(vertexCount)]
pub unsafe fn vertexCount(&self) -> NSUInteger;
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other name)]
pub unsafe fn name(&self) -> Id<NSString>;
#[cfg(feature = "Foundation_NSString")]
#[method(setName:)]
pub unsafe fn setName(&self, name: &NSString);
}
);
extern_methods!(
#[cfg(feature = "MetalKit_MTKMesh")]
unsafe impl MTKMesh {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
}
);
extern_fn!(
#[cfg(all(
feature = "Metal_MTLVertexDescriptor",
feature = "ModelIO_MDLVertexDescriptor"
))]
pub unsafe fn MTKModelIOVertexDescriptorFromMetal(
metal_descriptor: &MTLVertexDescriptor,
) -> NonNull<MDLVertexDescriptor>;
);
extern_fn!(
#[cfg(all(
feature = "Foundation_NSError",
feature = "Metal_MTLVertexDescriptor",
feature = "ModelIO_MDLVertexDescriptor"
))]
pub unsafe fn MTKModelIOVertexDescriptorFromMetalWithError(
metal_descriptor: &MTLVertexDescriptor,
error: *mut *mut NSError,
) -> NonNull<MDLVertexDescriptor>;
);
extern_fn!(
#[cfg(all(
feature = "Metal_MTLVertexDescriptor",
feature = "ModelIO_MDLVertexDescriptor"
))]
pub unsafe fn MTKMetalVertexDescriptorFromModelIO(
model_io_descriptor: &MDLVertexDescriptor,
) -> *mut MTLVertexDescriptor;
);
extern_fn!(
#[cfg(all(
feature = "Foundation_NSError",
feature = "Metal_MTLVertexDescriptor",
feature = "ModelIO_MDLVertexDescriptor"
))]
pub unsafe fn MTKMetalVertexDescriptorFromModelIOWithError(
model_io_descriptor: &MDLVertexDescriptor,
error: *mut *mut NSError,
) -> *mut MTLVertexDescriptor;
);