use std::ops::Deref;
use core_graphics::base::CGFloat;
use objc::runtime::{Class, Object};
use objc::{class, msg_send, sel, sel_impl};
use objc_id::ShareId;
use crate::foundation::{id, nil, NSArray, NSString, NO, YES};
#[derive(Clone, Debug)]
pub struct Font(pub ShareId<Object>);
impl Default for Font {
fn default() -> Self {
Font(unsafe {
let cls = class!(NSFont);
let default_size: id = msg_send![cls, labelFontSize];
ShareId::from_ptr(msg_send![cls, labelFontOfSize: default_size])
})
}
}
impl Font {
pub fn system(size: f64) -> Self {
let size = size as CGFloat;
Font(unsafe { ShareId::from_ptr(msg_send![class!(NSFont), systemFontOfSize: size]) })
}
pub fn bold_system(size: f64) -> Self {
let size = size as CGFloat;
Font(unsafe { ShareId::from_ptr(msg_send![class!(NSFont), boldSystemFontOfSize: size]) })
}
}
impl Deref for Font {
type Target = Object;
fn deref(&self) -> &Object {
&*self.0
}
}
impl AsRef<Font> for Font {
#[inline]
fn as_ref(&self) -> &Font {
self
}
}