use crate::{arc, av, ca, cg, cv, define_obj_type, ns, objc};
define_obj_type!(
#[doc(alias = "AVPlayerLayer")]
pub PlayerLayer(ca::Layer),
AV_PLAYER_LAYER
);
impl PlayerLayer {
#[objc::msg_send(playerLayerWithPlayer:)]
pub fn with_player(player: Option<&av::Player>) -> arc::R<Self>;
#[objc::msg_send(player)]
pub fn player(&self) -> Option<arc::R<av::Player>>;
#[objc::msg_send(setPlayer:)]
pub fn set_player(&mut self, val: Option<&av::Player>);
#[objc::msg_send(videoGravity)]
pub fn video_gravity(&self) -> arc::R<av::LayerVideoGravity>;
#[objc::msg_send(setVideoGravity:)]
pub fn set_video_gravity(&mut self, val: &av::LayerVideoGravity);
#[objc::msg_send(isReadyForDisplay)]
pub fn is_ready_for_display(&self) -> bool;
#[objc::msg_send(videoRect)]
pub fn video_rect(&self) -> cg::Rect;
#[objc::msg_send(pixelBufferAttributes)]
pub fn pixel_buf_attrs(&self) -> Option<arc::R<ns::Dictionary<ns::String, ns::Id>>>;
#[objc::msg_send(copyDisplayedPixelBuffer)]
pub fn displayed_pixel_buf(&self) -> Option<arc::Retained<cv::PixelBuf>>;
}
#[link(name = "av", kind = "static")]
unsafe extern "C" {
static AV_PLAYER_LAYER: &'static objc::Class<PlayerLayer>;
}
#[cfg(test)]
mod tests {
use crate::av;
#[test]
fn basics() {
let layer = av::PlayerLayer::new();
assert!(layer.player().is_none());
assert!(layer.pixel_buf_attrs().is_none());
assert!(layer.displayed_pixel_buf().is_none());
assert!(!layer.is_ready_for_display());
assert_eq!(
&layer.video_gravity(),
av::LayerVideoGravity::resize_aspect()
)
}
}