pub struct SCNGeometryElement { /* private fields */ }SCNGeometry only.Expand description
A geometry element describes how vertices from a geometry source are connected together.
See also Apple’s documentation
Implementations§
Source§impl SCNGeometryElement
SCNModelIO.
impl SCNGeometryElement
SCNModelIO.
pub unsafe fn geometryElementWithMDLSubmesh( mdl_sub_mesh: &MDLSubmesh, ) -> Retained<Self>
ModelIO and crate feature objc2-model-io and non-watchOS only.Source§impl SCNGeometryElement
impl SCNGeometryElement
Sourcepub unsafe fn geometryElementWithData_primitiveType_primitiveCount_bytesPerIndex(
data: Option<&NSData>,
primitive_type: SCNGeometryPrimitiveType,
primitive_count: NSInteger,
bytes_per_index: NSInteger,
) -> Retained<Self>
pub unsafe fn geometryElementWithData_primitiveType_primitiveCount_bytesPerIndex( data: Option<&NSData>, primitive_type: SCNGeometryPrimitiveType, primitive_count: NSInteger, bytes_per_index: NSInteger, ) -> Retained<Self>
Creates and returns a geometry element from the given data and data format info.
Parameter data: The data that contains element indices. You can pass nil to use an implicit vertex ordering (0,1,2,…).
Parameter primitiveType: The primitive type, as listed in the SCNGeometryPrimitiveType enumeration.
Parameter primitiveCount: The number of primitives in the data.
Parameter bytesPerIndex: The number of bytes that represent a single index value in the data.
Sourcepub unsafe fn geometryElementWithData_primitiveType_primitiveCount_indicesChannelCount_interleavedIndicesChannels_bytesPerIndex(
data: Option<&NSData>,
primitive_type: SCNGeometryPrimitiveType,
primitive_count: NSInteger,
indices_channel_count: NSInteger,
interleaved_indices_channels: bool,
bytes_per_index: NSInteger,
) -> Retained<Self>
pub unsafe fn geometryElementWithData_primitiveType_primitiveCount_indicesChannelCount_interleavedIndicesChannels_bytesPerIndex( data: Option<&NSData>, primitive_type: SCNGeometryPrimitiveType, primitive_count: NSInteger, indices_channel_count: NSInteger, interleaved_indices_channels: bool, bytes_per_index: NSInteger, ) -> Retained<Self>
Parameter data: The data that contains element indices. You can pass nil to use an implicit vertex ordering (0,1,2,…).
Parameter primitiveType: The primitive type, as listed in the SCNGeometryPrimitiveType enumeration.
Parameter primitiveCount: The number of primitives in the data.
Parameter indicesChannelCount: The number of channels for the vertex indices.
Parameter interleavedIndicesChannels: Whether the channels are interleaved.
Parameter bytesPerIndex: The number of bytes that represent a single index value in the data.
Sourcepub unsafe fn geometryElementWithBuffer_primitiveType_primitiveCount_bytesPerIndex(
buffer: &ProtocolObject<dyn MTLBuffer>,
primitive_type: SCNGeometryPrimitiveType,
primitive_count: NSInteger,
bytes_per_index: NSInteger,
) -> Retained<Self>
Available on crate feature objc2-metal and non-watchOS only.
pub unsafe fn geometryElementWithBuffer_primitiveType_primitiveCount_bytesPerIndex( buffer: &ProtocolObject<dyn MTLBuffer>, primitive_type: SCNGeometryPrimitiveType, primitive_count: NSInteger, bytes_per_index: NSInteger, ) -> Retained<Self>
objc2-metal and non-watchOS only.Creates and returns a geometry element from the given Metal buffer and parameters.
Parameter buffer: The buffer that contains element indices.
Parameter primitiveType: The primitive type, as listed in the SCNGeometryPrimitiveType enumeration.
Parameter primitiveCount: The number of primitives in the data.
Parameter bytesPerIndex: The number of bytes that represent a single index value in the data.
§Safety
buffermay need to be synchronized.buffermay be unretained, you must ensure it is kept alive while in use.buffercontents should be of the correct type.
Sourcepub unsafe fn geometryElementWithBuffer_primitiveType_primitiveCount_indicesChannelCount_interleavedIndicesChannels_bytesPerIndex(
buffer: &ProtocolObject<dyn MTLBuffer>,
primitive_type: SCNGeometryPrimitiveType,
primitive_count: NSInteger,
indices_channel_count: NSInteger,
interleaved_indices_channels: bool,
bytes_per_index: NSInteger,
) -> Retained<Self>
Available on crate feature objc2-metal and non-watchOS only.
pub unsafe fn geometryElementWithBuffer_primitiveType_primitiveCount_indicesChannelCount_interleavedIndicesChannels_bytesPerIndex( buffer: &ProtocolObject<dyn MTLBuffer>, primitive_type: SCNGeometryPrimitiveType, primitive_count: NSInteger, indices_channel_count: NSInteger, interleaved_indices_channels: bool, bytes_per_index: NSInteger, ) -> Retained<Self>
objc2-metal and non-watchOS only.§Safety
buffermay need to be synchronized.buffermay be unretained, you must ensure it is kept alive while in use.buffercontents should be of the correct type.
Sourcepub unsafe fn primitiveType(&self) -> SCNGeometryPrimitiveType
pub unsafe fn primitiveType(&self) -> SCNGeometryPrimitiveType
The type of the geometry element. Possible values are listed in the SCNGeometryPrimitiveType enumeration.
Sourcepub unsafe fn primitiveCount(&self) -> NSInteger
pub unsafe fn primitiveCount(&self) -> NSInteger
The number of primitives in the data.
Sourcepub unsafe fn hasInterleavedIndicesChannels(&self) -> bool
pub unsafe fn hasInterleavedIndicesChannels(&self) -> bool
Determines whether the channels are interleaved.
Sourcepub unsafe fn indicesChannelCount(&self) -> NSInteger
pub unsafe fn indicesChannelCount(&self) -> NSInteger
The number of channels in the geometry element.
Sourcepub unsafe fn bytesPerIndex(&self) -> NSInteger
pub unsafe fn bytesPerIndex(&self) -> NSInteger
The number of bytes that represent an index value
Sourcepub unsafe fn primitiveRange(&self) -> NSRange
pub unsafe fn primitiveRange(&self) -> NSRange
Specifies the subrange of primitives to render within NSMakeRange(0, primitiveCount). Defaults to NSMakeRange(NSNotFound, 0).
When the location of the range is set to NSNotFound, the entire geometry element is rendered.
Sourcepub unsafe fn setPrimitiveRange(&self, primitive_range: NSRange)
pub unsafe fn setPrimitiveRange(&self, primitive_range: NSRange)
Setter for primitiveRange.
Sourcepub unsafe fn pointSize(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn pointSize(&self) -> CGFloat
objc2-core-foundation only.Specifies the size of the point in local space. Defaults to 1
Sourcepub unsafe fn setPointSize(&self, point_size: CGFloat)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setPointSize(&self, point_size: CGFloat)
objc2-core-foundation only.Setter for pointSize.
Sourcepub unsafe fn minimumPointScreenSpaceRadius(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn minimumPointScreenSpaceRadius(&self) -> CGFloat
objc2-core-foundation only.Specifies the minimum size in screen-space (in pixel). Defaults to 1
Sourcepub unsafe fn setMinimumPointScreenSpaceRadius(
&self,
minimum_point_screen_space_radius: CGFloat,
)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setMinimumPointScreenSpaceRadius( &self, minimum_point_screen_space_radius: CGFloat, )
objc2-core-foundation only.Setter for minimumPointScreenSpaceRadius.
Sourcepub unsafe fn maximumPointScreenSpaceRadius(&self) -> CGFloat
Available on crate feature objc2-core-foundation only.
pub unsafe fn maximumPointScreenSpaceRadius(&self) -> CGFloat
objc2-core-foundation only.Specifies the maximum size in screen-space (in pixel). Defaults to 1
Sourcepub unsafe fn setMaximumPointScreenSpaceRadius(
&self,
maximum_point_screen_space_radius: CGFloat,
)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setMaximumPointScreenSpaceRadius( &self, maximum_point_screen_space_radius: CGFloat, )
objc2-core-foundation only.Setter for maximumPointScreenSpaceRadius.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AnyObject> for SCNGeometryElement
impl AsRef<AnyObject> for SCNGeometryElement
Source§impl AsRef<NSObject> for SCNGeometryElement
impl AsRef<NSObject> for SCNGeometryElement
Source§impl AsRef<SCNGeometryElement> for SCNGeometryElement
impl AsRef<SCNGeometryElement> for SCNGeometryElement
Source§impl Borrow<AnyObject> for SCNGeometryElement
impl Borrow<AnyObject> for SCNGeometryElement
Source§impl Borrow<NSObject> for SCNGeometryElement
impl Borrow<NSObject> for SCNGeometryElement
Source§impl ClassType for SCNGeometryElement
impl ClassType for SCNGeometryElement
Source§const NAME: &'static str = "SCNGeometryElement"
const NAME: &'static str = "SCNGeometryElement"
Source§type ThreadKind = <<SCNGeometryElement as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<SCNGeometryElement as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for SCNGeometryElement
impl Debug for SCNGeometryElement
Source§impl Deref for SCNGeometryElement
impl Deref for SCNGeometryElement
Source§impl Hash for SCNGeometryElement
impl Hash for SCNGeometryElement
Source§impl Message for SCNGeometryElement
impl Message for SCNGeometryElement
Source§impl NSCoding for SCNGeometryElement
impl NSCoding for SCNGeometryElement
Source§impl NSObjectProtocol for SCNGeometryElement
impl NSObjectProtocol for SCNGeometryElement
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref