use super::*;
use crate::abi;
use crate::resolve;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum DynamicTypeSize {
XSmall = 0,
Small = 1,
Medium = 2,
Large = 3,
XLarge = 4,
XxLarge = 5,
XxxLarge = 6,
Accessibility1 = 7,
Accessibility2 = 8,
Accessibility3 = 9,
Accessibility4 = 10,
Accessibility5 = 11,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum LayoutDirection {
LeftToRight = 0,
RightToLeft = 1,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Prominence {
Standard = 0,
Increased = 1,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TextSelectionAffinity {
Automatic = 0,
Upstream = 1,
Downstream = 2,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum TouchBarItemPresence {
Required = 0,
Default = 1,
Optional = 2,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Visibility {
Automatic = 0,
Visible = 1,
Hidden = 2,
}
pub fn color_scheme(view: &ViewHandle, value: ColorScheme) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::color_scheme_ma());
let mut arg = vec![0u8; abi::type_bytes(meta)];
abi::inject_enum_tag(&mut arg, meta, value as u32);
opaque_modifier(
resolve::color_scheme_mod_fn(),
resolve::color_scheme_oret(),
view,
&[arg.as_mut_ptr() as u64],
[0.0; 4],
)
}
}
pub fn dynamic_type_size(view: &ViewHandle, value: DynamicTypeSize) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::dynamic_type_size_ma());
let mut arg = vec![0u8; abi::type_bytes(meta)];
abi::inject_enum_tag(&mut arg, meta, value as u32);
opaque_modifier(
resolve::dynamic_type_size_fn(),
resolve::dynamic_type_size_oret(),
view,
&[arg.as_mut_ptr() as u64],
[0.0; 4],
)
}
}
pub fn header_prominence(view: &ViewHandle, value: Prominence) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::prominence_ma());
let mut arg = vec![0u8; abi::type_bytes(meta)];
abi::inject_enum_tag(&mut arg, meta, value as u32);
opaque_modifier(
resolve::header_prominence_fn(),
resolve::header_prominence_oret(),
view,
&[arg.as_mut_ptr() as u64],
[0.0; 4],
)
}
}
pub fn labels_visibility(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::labels_visibility_fn(),
resolve::labels_visibility_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn menu_indicator(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::menu_indicator_fn(),
resolve::menu_indicator_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn persistent_system_overlays(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::persistent_system_overlays_fn(),
resolve::persistent_system_overlays_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn pointer_visibility(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::pointer_visibility_fn(),
resolve::pointer_visibility_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn presentation_drag_indicator(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::presentation_drag_indicator_fn(),
resolve::presentation_drag_indicator_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn scroll_content_background(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::scroll_content_background_fn(),
resolve::scroll_content_background_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn slider_thumb_visibility(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::slider_thumb_visibility_fn(),
resolve::slider_thumb_visibility_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn table_column_headers(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::table_column_headers_fn(),
resolve::table_column_headers_oret(),
view,
&[arg],
[0.0; 4],
)
}
}
pub fn text_selection_affinity(view: &ViewHandle, value: TextSelectionAffinity) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::text_selection_affinity_ma());
let mut arg = vec![0u8; abi::type_bytes(meta)];
abi::inject_enum_tag(&mut arg, meta, value as u32);
opaque_modifier(
resolve::text_selection_affinity_fn(),
resolve::text_selection_affinity_oret(),
view,
&[arg.as_mut_ptr() as u64],
[0.0; 4],
)
}
}
pub fn writing_tools_affordance_visibility(view: &ViewHandle, value: Visibility) -> ViewHandle {
unsafe {
let meta = abi::metadata0(resolve::visibility_ma());
let arg = abi::enum_argument(meta, value as u32);
opaque_modifier(
resolve::writing_tools_affordance_visibility_fn(),
resolve::writing_tools_affordance_visibility_oret(),
view,
&[arg],
[0.0; 4],
)
}
}