use crate::common::*;
use crate::Foundation::*;
use crate::Metal::*;
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLSamplerMinMagFilter {
MTLSamplerMinMagFilterNearest = 0,
MTLSamplerMinMagFilterLinear = 1,
}
);
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLSamplerMipFilter {
MTLSamplerMipFilterNotMipmapped = 0,
MTLSamplerMipFilterNearest = 1,
MTLSamplerMipFilterLinear = 2,
}
);
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLSamplerAddressMode {
MTLSamplerAddressModeClampToEdge = 0,
MTLSamplerAddressModeMirrorClampToEdge = 1,
MTLSamplerAddressModeRepeat = 2,
MTLSamplerAddressModeMirrorRepeat = 3,
MTLSamplerAddressModeClampToZero = 4,
MTLSamplerAddressModeClampToBorderColor = 5,
}
);
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLSamplerBorderColor {
MTLSamplerBorderColorTransparentBlack = 0,
MTLSamplerBorderColorOpaqueBlack = 1,
MTLSamplerBorderColorOpaqueWhite = 2,
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "Metal_MTLSamplerDescriptor")]
pub struct MTLSamplerDescriptor;
#[cfg(feature = "Metal_MTLSamplerDescriptor")]
unsafe impl ClassType for MTLSamplerDescriptor {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "Metal_MTLSamplerDescriptor")]
unsafe impl NSCopying for MTLSamplerDescriptor {}
#[cfg(feature = "Metal_MTLSamplerDescriptor")]
unsafe impl NSObjectProtocol for MTLSamplerDescriptor {}
extern_methods!(
#[cfg(feature = "Metal_MTLSamplerDescriptor")]
unsafe impl MTLSamplerDescriptor {
#[method(minFilter)]
pub fn minFilter(&self) -> MTLSamplerMinMagFilter;
#[method(setMinFilter:)]
pub fn setMinFilter(&self, min_filter: MTLSamplerMinMagFilter);
#[method(magFilter)]
pub fn magFilter(&self) -> MTLSamplerMinMagFilter;
#[method(setMagFilter:)]
pub fn setMagFilter(&self, mag_filter: MTLSamplerMinMagFilter);
#[method(mipFilter)]
pub fn mipFilter(&self) -> MTLSamplerMipFilter;
#[method(setMipFilter:)]
pub fn setMipFilter(&self, mip_filter: MTLSamplerMipFilter);
#[method(maxAnisotropy)]
pub fn maxAnisotropy(&self) -> NSUInteger;
#[method(setMaxAnisotropy:)]
pub fn setMaxAnisotropy(&self, max_anisotropy: NSUInteger);
#[method(sAddressMode)]
pub fn sAddressMode(&self) -> MTLSamplerAddressMode;
#[method(setSAddressMode:)]
pub fn setSAddressMode(&self, s_address_mode: MTLSamplerAddressMode);
#[method(tAddressMode)]
pub fn tAddressMode(&self) -> MTLSamplerAddressMode;
#[method(setTAddressMode:)]
pub fn setTAddressMode(&self, t_address_mode: MTLSamplerAddressMode);
#[method(rAddressMode)]
pub fn rAddressMode(&self) -> MTLSamplerAddressMode;
#[method(setRAddressMode:)]
pub fn setRAddressMode(&self, r_address_mode: MTLSamplerAddressMode);
#[method(borderColor)]
pub fn borderColor(&self) -> MTLSamplerBorderColor;
#[method(setBorderColor:)]
pub fn setBorderColor(&self, border_color: MTLSamplerBorderColor);
#[method(normalizedCoordinates)]
pub fn normalizedCoordinates(&self) -> bool;
#[method(setNormalizedCoordinates:)]
pub fn setNormalizedCoordinates(&self, normalized_coordinates: bool);
#[method(lodMinClamp)]
pub fn lodMinClamp(&self) -> c_float;
#[method(setLodMinClamp:)]
pub fn setLodMinClamp(&self, lod_min_clamp: c_float);
#[method(lodMaxClamp)]
pub fn lodMaxClamp(&self) -> c_float;
#[method(setLodMaxClamp:)]
pub fn setLodMaxClamp(&self, lod_max_clamp: c_float);
#[method(lodAverage)]
pub fn lodAverage(&self) -> bool;
#[method(setLodAverage:)]
pub fn setLodAverage(&self, lod_average: bool);
#[method(compareFunction)]
pub fn compareFunction(&self) -> MTLCompareFunction;
#[method(setCompareFunction:)]
pub fn setCompareFunction(&self, compare_function: MTLCompareFunction);
#[method(supportArgumentBuffers)]
pub fn supportArgumentBuffers(&self) -> bool;
#[method(setSupportArgumentBuffers:)]
pub fn setSupportArgumentBuffers(&self, support_argument_buffers: bool);
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other label)]
pub fn label(&self) -> Option<Id<NSString>>;
#[cfg(feature = "Foundation_NSString")]
#[method(setLabel:)]
pub fn setLabel(&self, label: Option<&NSString>);
}
);
extern_methods!(
#[cfg(feature = "Metal_MTLSamplerDescriptor")]
unsafe impl MTLSamplerDescriptor {
#[method_id(@__retain_semantics Init init)]
pub fn init(this: Allocated<Self>) -> Id<Self>;
#[method_id(@__retain_semantics New new)]
pub fn new() -> Id<Self>;
}
);
#[cfg(feature = "Metal_MTLSamplerDescriptor")]
impl DefaultId for MTLSamplerDescriptor {
#[inline]
fn default_id() -> Id<Self> {
Self::new()
}
}
extern_protocol!(
pub unsafe trait MTLSamplerState: NSObjectProtocol {
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other label)]
fn label(&self) -> Option<Id<NSString>>;
#[method_id(@__retain_semantics Other device)]
fn device(&self) -> Id<ProtocolObject<dyn MTLDevice>>;
#[method(gpuResourceID)]
unsafe fn gpuResourceID(&self) -> MTLResourceID;
}
unsafe impl ProtocolType for dyn MTLSamplerState {}
);