//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-core-foundation")]
use objc2_core_foundation::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uibarstyle?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIBarStyle(pub NSInteger);
impl UIBarStyle {
    #[doc(alias = "UIBarStyleDefault")]
    pub const Default: Self = Self(0);
    #[doc(alias = "UIBarStyleBlack")]
    pub const Black: Self = Self(1);
    #[doc(alias = "UIBarStyleBlackOpaque")]
    #[deprecated = "Use UIBarStyleBlack instead."]
    pub const BlackOpaque: Self = Self(1);
    #[doc(alias = "UIBarStyleBlackTranslucent")]
    #[deprecated = "Use UIBarStyleBlack and set the translucent property to YES instead."]
    pub const BlackTranslucent: Self = Self(2);
}

unsafe impl Encode for UIBarStyle {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIBarStyle {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiuserinterfacesizeclass?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIUserInterfaceSizeClass(pub NSInteger);
impl UIUserInterfaceSizeClass {
    #[doc(alias = "UIUserInterfaceSizeClassUnspecified")]
    pub const Unspecified: Self = Self(0);
    #[doc(alias = "UIUserInterfaceSizeClassCompact")]
    pub const Compact: Self = Self(1);
    #[doc(alias = "UIUserInterfaceSizeClassRegular")]
    pub const Regular: Self = Self(2);
}

unsafe impl Encode for UIUserInterfaceSizeClass {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIUserInterfaceSizeClass {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiuserinterfacestyle?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIUserInterfaceStyle(pub NSInteger);
impl UIUserInterfaceStyle {
    #[doc(alias = "UIUserInterfaceStyleUnspecified")]
    pub const Unspecified: Self = Self(0);
    #[doc(alias = "UIUserInterfaceStyleLight")]
    pub const Light: Self = Self(1);
    #[doc(alias = "UIUserInterfaceStyleDark")]
    pub const Dark: Self = Self(2);
}

unsafe impl Encode for UIUserInterfaceStyle {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIUserInterfaceStyle {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiuserinterfacelayoutdirection?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIUserInterfaceLayoutDirection(pub NSInteger);
impl UIUserInterfaceLayoutDirection {
    #[doc(alias = "UIUserInterfaceLayoutDirectionLeftToRight")]
    pub const LeftToRight: Self = Self(0);
    #[doc(alias = "UIUserInterfaceLayoutDirectionRightToLeft")]
    pub const RightToLeft: Self = Self(1);
}

unsafe impl Encode for UIUserInterfaceLayoutDirection {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIUserInterfaceLayoutDirection {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uitraitenvironmentlayoutdirection?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UITraitEnvironmentLayoutDirection(pub NSInteger);
impl UITraitEnvironmentLayoutDirection {
    #[doc(alias = "UITraitEnvironmentLayoutDirectionUnspecified")]
    pub const Unspecified: Self = Self(-1);
    #[doc(alias = "UITraitEnvironmentLayoutDirectionLeftToRight")]
    pub const LeftToRight: Self = Self(UIUserInterfaceLayoutDirection::LeftToRight.0);
    #[doc(alias = "UITraitEnvironmentLayoutDirectionRightToLeft")]
    pub const RightToLeft: Self = Self(UIUserInterfaceLayoutDirection::RightToLeft.0);
}

unsafe impl Encode for UITraitEnvironmentLayoutDirection {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UITraitEnvironmentLayoutDirection {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uidisplaygamut?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIDisplayGamut(pub NSInteger);
impl UIDisplayGamut {
    #[doc(alias = "UIDisplayGamutUnspecified")]
    pub const Unspecified: Self = Self(-1);
    #[doc(alias = "UIDisplayGamutSRGB")]
    pub const SRGB: Self = Self(0);
    #[doc(alias = "UIDisplayGamutP3")]
    pub const P3: Self = Self(1);
}

unsafe impl Encode for UIDisplayGamut {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIDisplayGamut {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiaccessibilitycontrast?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIAccessibilityContrast(pub NSInteger);
impl UIAccessibilityContrast {
    #[doc(alias = "UIAccessibilityContrastUnspecified")]
    pub const Unspecified: Self = Self(-1);
    #[doc(alias = "UIAccessibilityContrastNormal")]
    pub const Normal: Self = Self(0);
    #[doc(alias = "UIAccessibilityContrastHigh")]
    pub const High: Self = Self(1);
}

unsafe impl Encode for UIAccessibilityContrast {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIAccessibilityContrast {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uilegibilityweight?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UILegibilityWeight(pub NSInteger);
impl UILegibilityWeight {
    #[doc(alias = "UILegibilityWeightUnspecified")]
    pub const Unspecified: Self = Self(-1);
    #[doc(alias = "UILegibilityWeightRegular")]
    pub const Regular: Self = Self(0);
    #[doc(alias = "UILegibilityWeightBold")]
    pub const Bold: Self = Self(1);
}

unsafe impl Encode for UILegibilityWeight {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UILegibilityWeight {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiuserinterfacelevel?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIUserInterfaceLevel(pub NSInteger);
impl UIUserInterfaceLevel {
    #[doc(alias = "UIUserInterfaceLevelUnspecified")]
    pub const Unspecified: Self = Self(-1);
    #[doc(alias = "UIUserInterfaceLevelBase")]
    pub const Base: Self = Self(0);
    #[doc(alias = "UIUserInterfaceLevelElevated")]
    pub const Elevated: Self = Self(1);
}

unsafe impl Encode for UIUserInterfaceLevel {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIUserInterfaceLevel {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiuserinterfaceactiveappearance?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIUserInterfaceActiveAppearance(pub NSInteger);
impl UIUserInterfaceActiveAppearance {
    #[doc(alias = "UIUserInterfaceActiveAppearanceUnspecified")]
    pub const Unspecified: Self = Self(-1);
    #[doc(alias = "UIUserInterfaceActiveAppearanceInactive")]
    pub const Inactive: Self = Self(0);
    #[doc(alias = "UIUserInterfaceActiveAppearanceActive")]
    pub const Active: Self = Self(1);
}

unsafe impl Encode for UIUserInterfaceActiveAppearance {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIUserInterfaceActiveAppearance {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uinstoolbaritempresentationsize?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UINSToolbarItemPresentationSize(pub NSInteger);
impl UINSToolbarItemPresentationSize {
    #[doc(alias = "UINSToolbarItemPresentationSizeUnspecified")]
    pub const Unspecified: Self = Self(-1);
    #[doc(alias = "UINSToolbarItemPresentationSizeRegular")]
    pub const Regular: Self = Self(0);
    #[doc(alias = "UINSToolbarItemPresentationSizeSmall")]
    pub const Small: Self = Self(1);
    #[doc(alias = "UINSToolbarItemPresentationSizeLarge")]
    pub const Large: Self = Self(3);
}

unsafe impl Encode for UINSToolbarItemPresentationSize {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UINSToolbarItemPresentationSize {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uiimagedynamicrange?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIImageDynamicRange(pub NSInteger);
impl UIImageDynamicRange {
    /// Do not specify a preferred dynamic range.
    #[doc(alias = "UIImageDynamicRangeUnspecified")]
    pub const Unspecified: Self = Self(-1);
    /// Restrict the image content dynamic range to the standard range.
    #[doc(alias = "UIImageDynamicRangeStandard")]
    pub const Standard: Self = Self(0);
    /// Allow image content to use some extended range. This is appropriate for mixing content with standard and high dynamic ranges.
    #[doc(alias = "UIImageDynamicRangeConstrainedHigh")]
    pub const ConstrainedHigh: Self = Self(1);
    /// Allow image content to use unrestricted extended range.
    #[doc(alias = "UIImageDynamicRangeHigh")]
    pub const High: Self = Self(2);
}

unsafe impl Encode for UIImageDynamicRange {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIImageDynamicRange {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/uikit/uihdrheadroomusagelimit?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIHDRHeadroomUsageLimit(pub NSInteger);
impl UIHDRHeadroomUsageLimit {
    /// Headroom usage limits are not defined
    #[doc(alias = "UIHDRHeadroomUsageLimitUnspecified")]
    pub const Unspecified: Self = Self(-1);
    /// Headroom usage limits are in effect, HDR headroom usage should be restricted
    #[doc(alias = "UIHDRHeadroomUsageLimitActive")]
    pub const Active: Self = Self(0);
    /// Headroom usage limits are disabled, HDR headroom usage is unrestricted.
    #[doc(alias = "UIHDRHeadroomUsageLimitInactive")]
    pub const Inactive: Self = Self(1);
}

unsafe impl Encode for UIHDRHeadroomUsageLimit {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UIHDRHeadroomUsageLimit {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// UIColorSystemColors.
#[cfg(feature = "UIColor")]
impl UIColor {
    extern_methods!(
        #[unsafe(method(systemRedColor))]
        #[unsafe(method_family = none)]
        pub fn systemRedColor() -> Retained<UIColor>;

        #[unsafe(method(systemGreenColor))]
        #[unsafe(method_family = none)]
        pub fn systemGreenColor() -> Retained<UIColor>;

        #[unsafe(method(systemBlueColor))]
        #[unsafe(method_family = none)]
        pub fn systemBlueColor() -> Retained<UIColor>;

        #[unsafe(method(systemOrangeColor))]
        #[unsafe(method_family = none)]
        pub fn systemOrangeColor() -> Retained<UIColor>;

        #[unsafe(method(systemYellowColor))]
        #[unsafe(method_family = none)]
        pub fn systemYellowColor() -> Retained<UIColor>;

        #[unsafe(method(systemPinkColor))]
        #[unsafe(method_family = none)]
        pub fn systemPinkColor() -> Retained<UIColor>;

        #[unsafe(method(systemPurpleColor))]
        #[unsafe(method_family = none)]
        pub fn systemPurpleColor() -> Retained<UIColor>;

        #[unsafe(method(systemTealColor))]
        #[unsafe(method_family = none)]
        pub fn systemTealColor() -> Retained<UIColor>;

        #[unsafe(method(systemIndigoColor))]
        #[unsafe(method_family = none)]
        pub fn systemIndigoColor() -> Retained<UIColor>;

        #[unsafe(method(systemBrownColor))]
        #[unsafe(method_family = none)]
        pub fn systemBrownColor() -> Retained<UIColor>;

        #[unsafe(method(systemMintColor))]
        #[unsafe(method_family = none)]
        pub fn systemMintColor() -> Retained<UIColor>;

        #[unsafe(method(systemCyanColor))]
        #[unsafe(method_family = none)]
        pub fn systemCyanColor() -> Retained<UIColor>;

        #[unsafe(method(systemGrayColor))]
        #[unsafe(method_family = none)]
        pub fn systemGrayColor() -> Retained<UIColor>;

        #[unsafe(method(systemGray2Color))]
        #[unsafe(method_family = none)]
        pub fn systemGray2Color() -> Retained<UIColor>;

        #[unsafe(method(systemGray3Color))]
        #[unsafe(method_family = none)]
        pub fn systemGray3Color() -> Retained<UIColor>;

        #[unsafe(method(systemGray4Color))]
        #[unsafe(method_family = none)]
        pub fn systemGray4Color() -> Retained<UIColor>;

        #[unsafe(method(systemGray5Color))]
        #[unsafe(method_family = none)]
        pub fn systemGray5Color() -> Retained<UIColor>;

        #[unsafe(method(systemGray6Color))]
        #[unsafe(method_family = none)]
        pub fn systemGray6Color() -> Retained<UIColor>;

        #[unsafe(method(tintColor))]
        #[unsafe(method_family = none)]
        pub fn tintColor() -> Retained<UIColor>;

        #[unsafe(method(labelColor))]
        #[unsafe(method_family = none)]
        pub fn labelColor() -> Retained<UIColor>;

        #[unsafe(method(secondaryLabelColor))]
        #[unsafe(method_family = none)]
        pub fn secondaryLabelColor() -> Retained<UIColor>;

        #[unsafe(method(tertiaryLabelColor))]
        #[unsafe(method_family = none)]
        pub fn tertiaryLabelColor() -> Retained<UIColor>;

        #[unsafe(method(quaternaryLabelColor))]
        #[unsafe(method_family = none)]
        pub fn quaternaryLabelColor() -> Retained<UIColor>;

        #[unsafe(method(linkColor))]
        #[unsafe(method_family = none)]
        pub fn linkColor() -> Retained<UIColor>;

        #[unsafe(method(placeholderTextColor))]
        #[unsafe(method_family = none)]
        pub fn placeholderTextColor() -> Retained<UIColor>;

        #[unsafe(method(separatorColor))]
        #[unsafe(method_family = none)]
        pub fn separatorColor() -> Retained<UIColor>;

        #[unsafe(method(opaqueSeparatorColor))]
        #[unsafe(method_family = none)]
        pub fn opaqueSeparatorColor() -> Retained<UIColor>;

        #[unsafe(method(systemBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn systemBackgroundColor() -> Retained<UIColor>;

        #[unsafe(method(secondarySystemBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn secondarySystemBackgroundColor() -> Retained<UIColor>;

        #[unsafe(method(tertiarySystemBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn tertiarySystemBackgroundColor() -> Retained<UIColor>;

        #[unsafe(method(systemGroupedBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn systemGroupedBackgroundColor() -> Retained<UIColor>;

        #[unsafe(method(secondarySystemGroupedBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn secondarySystemGroupedBackgroundColor() -> Retained<UIColor>;

        #[unsafe(method(tertiarySystemGroupedBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn tertiarySystemGroupedBackgroundColor() -> Retained<UIColor>;

        #[unsafe(method(systemFillColor))]
        #[unsafe(method_family = none)]
        pub fn systemFillColor() -> Retained<UIColor>;

        #[unsafe(method(secondarySystemFillColor))]
        #[unsafe(method_family = none)]
        pub fn secondarySystemFillColor() -> Retained<UIColor>;

        #[unsafe(method(tertiarySystemFillColor))]
        #[unsafe(method_family = none)]
        pub fn tertiarySystemFillColor() -> Retained<UIColor>;

        #[unsafe(method(quaternarySystemFillColor))]
        #[unsafe(method_family = none)]
        pub fn quaternarySystemFillColor() -> Retained<UIColor>;

        #[unsafe(method(lightTextColor))]
        #[unsafe(method_family = none)]
        pub fn lightTextColor() -> Retained<UIColor>;

        #[unsafe(method(darkTextColor))]
        #[unsafe(method_family = none)]
        pub fn darkTextColor() -> Retained<UIColor>;

        #[deprecated]
        #[unsafe(method(groupTableViewBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn groupTableViewBackgroundColor() -> Retained<UIColor>;

        #[deprecated]
        #[unsafe(method(viewFlipsideBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn viewFlipsideBackgroundColor() -> Retained<UIColor>;

        #[deprecated]
        #[unsafe(method(scrollViewTexturedBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn scrollViewTexturedBackgroundColor() -> Retained<UIColor>;

        #[deprecated]
        #[unsafe(method(underPageBackgroundColor))]
        #[unsafe(method_family = none)]
        pub fn underPageBackgroundColor() -> Retained<UIColor>;
    );
}

/// UIFontSystemFonts.
#[cfg(feature = "UIFont")]
impl UIFont {
    extern_methods!(
        #[cfg(feature = "objc2-core-foundation")]
        #[unsafe(method(labelFontSize))]
        #[unsafe(method_family = none)]
        pub fn labelFontSize() -> CGFloat;

        #[cfg(feature = "objc2-core-foundation")]
        #[unsafe(method(buttonFontSize))]
        #[unsafe(method_family = none)]
        pub fn buttonFontSize() -> CGFloat;

        #[cfg(feature = "objc2-core-foundation")]
        #[unsafe(method(smallSystemFontSize))]
        #[unsafe(method_family = none)]
        pub fn smallSystemFontSize() -> CGFloat;

        #[cfg(feature = "objc2-core-foundation")]
        #[unsafe(method(systemFontSize))]
        #[unsafe(method_family = none)]
        pub fn systemFontSize() -> CGFloat;

        #[cfg(feature = "objc2-core-foundation")]
        #[unsafe(method(defaultFontSize))]
        #[unsafe(method_family = none)]
        pub fn defaultFontSize() -> CGFloat;

        #[cfg(feature = "objc2-core-foundation")]
        #[unsafe(method(systemMinimumFontSize))]
        #[unsafe(method_family = none)]
        pub fn systemMinimumFontSize() -> CGFloat;
    );
}
