/* automatically generated by rust-bindgen 0.65.1 */

#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(clippy::missing_safety_doc)]

#[link(name = "native_display_manager")]
unsafe extern "C" {}

#[doc = " device rotation 0 degree"]
pub const NativeDisplayManager_Rotation_DISPLAY_MANAGER_ROTATION_0: NativeDisplayManager_Rotation =
    0;
#[doc = " device rotation 90 degrees"]
pub const NativeDisplayManager_Rotation_DISPLAY_MANAGER_ROTATION_90: NativeDisplayManager_Rotation =
    1;
#[doc = " device rotation 180 degrees"]
pub const NativeDisplayManager_Rotation_DISPLAY_MANAGER_ROTATION_180:
    NativeDisplayManager_Rotation = 2;
#[doc = " device rotation 270 degree"]
pub const NativeDisplayManager_Rotation_DISPLAY_MANAGER_ROTATION_270:
    NativeDisplayManager_Rotation = 3;
#[doc = " @brief Enumerates rotations.\n\n @since 12\n @version 1.0"]
pub type NativeDisplayManager_Rotation = u32;
#[doc = " device portrait show"]
pub const NativeDisplayManager_Orientation_DISPLAY_MANAGER_PORTRAIT:
    NativeDisplayManager_Orientation = 0;
#[doc = " device landscape show"]
pub const NativeDisplayManager_Orientation_DISPLAY_MANAGER_LANDSCAPE:
    NativeDisplayManager_Orientation = 1;
#[doc = " device portrait inverted show"]
pub const NativeDisplayManager_Orientation_DISPLAY_MANAGER_PORTRAIT_INVERTED:
    NativeDisplayManager_Orientation = 2;
#[doc = " device landscape inverted show"]
pub const NativeDisplayManager_Orientation_DISPLAY_MANAGER_LANDSCAPE_INVERTED:
    NativeDisplayManager_Orientation = 3;
#[doc = " device unknow show"]
pub const NativeDisplayManager_Orientation_DISPLAY_MANAGER_UNKNOWN:
    NativeDisplayManager_Orientation = 4;
#[doc = " @brief Enumerates orientations.\n\n @since 12\n @version 1.0"]
pub type NativeDisplayManager_Orientation = u32;
#[doc = " @error Operation is successful"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_OK: NativeDisplayManager_ErrorCode = 0;
#[doc = " @error Operation no permission"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_NO_PERMISSION:
    NativeDisplayManager_ErrorCode = 201;
#[doc = " @error Operation not system app"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_NOT_SYSTEM_APP:
    NativeDisplayManager_ErrorCode = 202;
#[doc = " @error Operation invalid param"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_INVALID_PARAM:
    NativeDisplayManager_ErrorCode = 401;
#[doc = " @error Operation device not supported"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_DEVICE_NOT_SUPPORTED:
    NativeDisplayManager_ErrorCode = 801;
#[doc = " @error Operation screen invalid"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_INVALID_SCREEN:
    NativeDisplayManager_ErrorCode = 1400001;
#[doc = " @error Operation invalid call"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_INVALID_CALL:
    NativeDisplayManager_ErrorCode = 1400002;
#[doc = " @error Operation system abnormal"]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL:
    NativeDisplayManager_ErrorCode = 1400003;
#[doc = " @error Operation illegal param.\n\n @since 20"]
#[cfg(feature = "api-20")]
pub const NativeDisplayManager_ErrorCode_DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM:
    NativeDisplayManager_ErrorCode = 1400004;
#[doc = " @brief Enumerates the result types of the display manager interface.\n\n @since 12\n @version 1.0"]
pub type NativeDisplayManager_ErrorCode = u32;
#[doc = " display mode unknown"]
pub const NativeDisplayManager_FoldDisplayMode_DISPLAY_MANAGER_FOLD_DISPLAY_MODE_UNKNOWN:
    NativeDisplayManager_FoldDisplayMode = 0;
#[doc = " display mode full"]
pub const NativeDisplayManager_FoldDisplayMode_DISPLAY_MANAGER_FOLD_DISPLAY_MODE_FULL:
    NativeDisplayManager_FoldDisplayMode = 1;
#[doc = " display mode main"]
pub const NativeDisplayManager_FoldDisplayMode_DISPLAY_MANAGER_FOLD_DISPLAY_MODE_MAIN:
    NativeDisplayManager_FoldDisplayMode = 2;
#[doc = " display mode sub"]
pub const NativeDisplayManager_FoldDisplayMode_DISPLAY_MANAGER_FOLD_DISPLAY_MODE_SUB:
    NativeDisplayManager_FoldDisplayMode = 3;
#[doc = " display mode coordination"]
pub const NativeDisplayManager_FoldDisplayMode_DISPLAY_MANAGER_FOLD_DISPLAY_MODE_COORDINATION:
    NativeDisplayManager_FoldDisplayMode = 4;
#[doc = " @brief Enumerates the fold display mode.\n\n @since 12\n @version 1.0"]
pub type NativeDisplayManager_FoldDisplayMode = u32;
#[doc = " @brief Defines the display rect data structure.\n\n @since 12\n @version 1.0"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NativeDisplayManager_Rect {
    pub left: i32,
    pub top: i32,
    pub width: u32,
    pub height: u32,
}
#[doc = " @brief Defines the display waterfallDisplayAreaRects data structure.\n\n @since 12\n @version 1.0"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NativeDisplayManager_WaterfallDisplayAreaRects {
    pub left: NativeDisplayManager_Rect,
    pub top: NativeDisplayManager_Rect,
    pub right: NativeDisplayManager_Rect,
    pub bottom: NativeDisplayManager_Rect,
}
#[doc = " @brief Defines the display cutout info data structure.\n\n @since 12\n @version 1.0"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NativeDisplayManager_CutoutInfo {
    pub boundingRectsLength: i32,
    pub boundingRects: *mut NativeDisplayManager_Rect,
    pub waterfallDisplayAreaRects: NativeDisplayManager_WaterfallDisplayAreaRects,
}
#[doc = " display state unknown"]
#[cfg(feature = "api-14")]
pub const NativeDisplayManager_DisplayState_DISPLAY_MANAGER_DISPLAY_STATE_UNKNOWN:
    NativeDisplayManager_DisplayState = 0;
#[doc = " display state off"]
#[cfg(feature = "api-14")]
pub const NativeDisplayManager_DisplayState_DISPLAY_MANAGER_DISPLAY_STATE_OFF:
    NativeDisplayManager_DisplayState = 1;
#[doc = " display state on"]
#[cfg(feature = "api-14")]
pub const NativeDisplayManager_DisplayState_DISPLAY_MANAGER_DISPLAY_STATE_ON:
    NativeDisplayManager_DisplayState = 2;
#[doc = " display state doze"]
#[cfg(feature = "api-14")]
pub const NativeDisplayManager_DisplayState_DISPLAY_MANAGER_DISPLAY_STATE_DOZE:
    NativeDisplayManager_DisplayState = 3;
#[doc = " display state doze suspend"]
#[cfg(feature = "api-14")]
pub const NativeDisplayManager_DisplayState_DISPLAY_MANAGER_DISPLAY_STATE_DOZE_SUSPEND:
    NativeDisplayManager_DisplayState = 4;
#[doc = " display state vr"]
#[cfg(feature = "api-14")]
pub const NativeDisplayManager_DisplayState_DISPLAY_MANAGER_DISPLAY_STATE_VR:
    NativeDisplayManager_DisplayState = 5;
#[doc = " display state on suspend"]
#[cfg(feature = "api-14")]
pub const NativeDisplayManager_DisplayState_DISPLAY_MANAGER_DISPLAY_STATE_ON_SUSPEND:
    NativeDisplayManager_DisplayState = 6;
#[doc = " @brief Enumerates of the display state.\n\n @since 14\n @version 1.0"]
#[cfg(feature = "api-14")]
pub type NativeDisplayManager_DisplayState = u32;
#[doc = " display is not in use"]
#[cfg(feature = "api-20")]
pub const NativeDisplayManager_SourceMode_DISPLAY_SOURCE_MODE_NONE:
    NativeDisplayManager_SourceMode = 0;
#[doc = " display is in main mode"]
#[cfg(feature = "api-20")]
pub const NativeDisplayManager_SourceMode_DISPLAY_SOURCE_MODE_MAIN:
    NativeDisplayManager_SourceMode = 1;
#[doc = " display is in mirror mode"]
#[cfg(feature = "api-20")]
pub const NativeDisplayManager_SourceMode_DISPLAY_SOURCE_MODE_MIRROR:
    NativeDisplayManager_SourceMode = 2;
#[doc = " display is in extend mode"]
#[cfg(feature = "api-20")]
pub const NativeDisplayManager_SourceMode_DISPLAY_SOURCE_MODE_EXTEND:
    NativeDisplayManager_SourceMode = 3;
#[doc = " display stands alone"]
#[cfg(feature = "api-20")]
pub const NativeDisplayManager_SourceMode_DISPLAY_SOURCE_MODE_ALONE:
    NativeDisplayManager_SourceMode = 4;
#[doc = " @brief Enumerates of the display source mode.\n\n @since 20\n @version 1.0"]
#[cfg(feature = "api-20")]
pub type NativeDisplayManager_SourceMode = u32;
#[doc = " @brief Defines the display hdr structure.\n\n @since 14\n @version 1.0"]
#[cfg(feature = "api-14")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NativeDisplayManager_DisplayHdrFormat {
    #[doc = " hdrFormat length"]
    pub hdrFormatLength: u32,
    #[doc = " hdrFormat pointer"]
    pub hdrFormats: *mut u32,
}
#[doc = " @brief Defines the display color space structure.\n\n @since 14\n @version 1.0"]
#[cfg(feature = "api-14")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NativeDisplayManager_DisplayColorSpace {
    #[doc = " color space length"]
    pub colorSpaceLength: u32,
    #[doc = " color space pointer"]
    pub colorSpaces: *mut u32,
}
#[doc = " @brief Defines the display structure.\n\n @since 14\n @version 1.0"]
#[cfg(feature = "api-14")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NativeDisplayManager_DisplayInfo {
    #[doc = " display id"]
    pub id: u32,
    #[doc = " display name"]
    pub name: [::std::os::raw::c_char; 33usize],
    #[doc = " display is alive"]
    pub isAlive: bool,
    #[doc = " display width"]
    pub width: i32,
    #[doc = " display height"]
    pub height: i32,
    #[doc = " display physical width"]
    pub physicalWidth: i32,
    #[doc = " display physical height"]
    pub physicalHeight: i32,
    #[doc = " display refresh rate"]
    pub refreshRate: u32,
    #[doc = " display available width"]
    pub availableWidth: u32,
    #[doc = " display available height"]
    pub availableHeight: u32,
    #[doc = " display density dpi"]
    pub densityDPI: f32,
    #[doc = " display density pixels"]
    pub densityPixels: f32,
    #[doc = " display scale density"]
    pub scaledDensity: f32,
    #[doc = " display xdpi"]
    pub xDPI: f32,
    #[doc = " display ydpi"]
    pub yDPI: f32,
    #[doc = " display rotation"]
    pub rotation: NativeDisplayManager_Rotation,
    #[doc = " display state"]
    pub state: NativeDisplayManager_DisplayState,
    #[doc = " display orientation"]
    pub orientation: NativeDisplayManager_Orientation,
    #[doc = " display hdr format"]
    pub hdrFormat: *mut NativeDisplayManager_DisplayHdrFormat,
    #[doc = " display color space"]
    pub colorSpace: *mut NativeDisplayManager_DisplayColorSpace,
}
#[doc = " @brief Defines the displays structure.\n\n @since 14\n @version 1.0"]
#[cfg(feature = "api-14")]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NativeDisplayManager_DisplaysInfo {
    #[doc = " displays length"]
    pub displaysLength: u32,
    #[doc = " displays pointer"]
    pub displaysInfo: *mut NativeDisplayManager_DisplayInfo,
}
extern "C" {
    #[doc = " @brief Obtain the default display Id.\n\n @param displayId Indicates the pointer to an <b>uint64_t</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayId(
        displayId: *mut u64,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display width.\n\n @param displayWidth Indicates the pointer to an <b>int32_t</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayWidth(
        displayWidth: *mut i32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display height.\n\n @param displayHeight Indicates the pointer to an <b>int32_t</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayHeight(
        displayHeight: *mut i32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display rotation.\n\n @param displayRotation Indicates the pointer to an <b>NativeDisplayManager_Rotation</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayRotation(
        displayRotation: *mut NativeDisplayManager_Rotation,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display orientation.\n\n @param displayOrientation Indicates the pointer to an <b>NativeDisplayManager_Orientation</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayOrientation(
        displayOrientation: *mut NativeDisplayManager_Orientation,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display virtualPixels.\n\n @param virtualPixels Indicates the pointer to an <b>float</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayVirtualPixelRatio(
        virtualPixels: *mut f32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display refreshRate.\n\n @param refreshRate Indicates the pointer to an <b>uint32_t</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayRefreshRate(
        refreshRate: *mut u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display densityDpi.\n\n @param densityDpi Indicates the pointer to an <b>int32_t</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayDensityDpi(
        densityDpi: *mut i32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display densityPixels.\n\n @param densityPixels Indicates the pointer to an <b>float</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayDensityPixels(
        densityPixels: *mut f32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display scaledDensity.\n\n @param scaledDensity Indicates the pointer to an <b>float</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayScaledDensity(
        scaledDensity: *mut f32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display xDpi.\n\n @param xDpi Indicates the pointer to an <b>float</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayDensityXdpi(
        xDpi: *mut f32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Obtain the default display yDpi.\n\n @param yDpi Indicates the pointer to an <b>float</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetDefaultDisplayDensityYdpi(
        yDpi: *mut f32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Create the cutout info of the device.\n\n @param cutoutInfo Indicates the pointer to an <b>NativeDisplayManager_CutoutInfo</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_CreateDefaultDisplayCutoutInfo(
        cutoutInfo: *mut *mut NativeDisplayManager_CutoutInfo,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Destroy an <b>NativeDisplayManager_CutoutInfo</b> object and reclaims the memory occupied by the object.\n\n @param cutoutInfo Indicates the pointer to an <b>NativeDisplayManager_CutoutInfo</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n @since 12"]
    pub fn OH_NativeDisplayManager_DestroyDefaultDisplayCutoutInfo(
        cutoutInfo: *mut NativeDisplayManager_CutoutInfo,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Check whether the device is foldable.\n\n @return { bool } true means the device is foldable.\n @since 12"]
    pub fn OH_NativeDisplayManager_IsFoldable() -> bool;
}
extern "C" {
    #[doc = " @brief Get the display mode of the foldable device.\n\n @param displayMode Indicates the pointer to an <b>NativeDisplayManager_FoldDisplayMode</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_DEVICE_NOT_SUPPORTED } device not support.\n @since 12"]
    pub fn OH_NativeDisplayManager_GetFoldDisplayMode(
        displayMode: *mut NativeDisplayManager_FoldDisplayMode,
    ) -> NativeDisplayManager_ErrorCode;
}
#[doc = " @brief the callback function type when display change.\n\n @param displayId change display id.\n @since 12"]
pub type OH_NativeDisplayManager_DisplayChangeCallback =
    ::std::option::Option<unsafe extern "C" fn(displayId: u64)>;
extern "C" {
    #[doc = " @brief Register the callback for display change listener.\n\n @param displayChangeCallback display change callback.\n @param listenerIndex Indicates the pointer to an <b>uint32_t</b> object. used in unregister call.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_RegisterDisplayChangeListener(
        displayChangeCallback: OH_NativeDisplayManager_DisplayChangeCallback,
        listenerIndex: *mut u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Unregister the callback for display changes listener.\n\n @param listenerIndex display changed listener index.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_UnregisterDisplayChangeListener(
        listenerIndex: u32,
    ) -> NativeDisplayManager_ErrorCode;
}
#[doc = " @brief the callback function type when display fold change.\n\n @param displayMode current fold display mode.\n @since 12"]
pub type OH_NativeDisplayManager_FoldDisplayModeChangeCallback =
    ::std::option::Option<unsafe extern "C" fn(displayMode: NativeDisplayManager_FoldDisplayMode)>;
extern "C" {
    #[doc = " @brief Register the callback for display mode change listener.\n\n @param displayModeChangeCallback display mode change callback.\n @param listenerIndex Indicates the pointer to an <b>uint32_t</b> object. used in unregister call.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_DEVICE_NOT_SUPPORTED } device not support.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_RegisterFoldDisplayModeChangeListener(
        displayModeChangeCallback: OH_NativeDisplayManager_FoldDisplayModeChangeCallback,
        listenerIndex: *mut u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Unregister the callback for display mode change listener.\n\n @param listenerIndex display mode change listener index.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_DEVICE_NOT_SUPPORTED } device not support.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 12"]
    pub fn OH_NativeDisplayManager_UnregisterFoldDisplayModeChangeListener(
        listenerIndex: u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Create all displays.\n\n @param allDisplays Output parameter for all displays information.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful.\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_NativeDisplayManager_CreateAllDisplays(
        allDisplays: *mut *mut NativeDisplayManager_DisplaysInfo,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Destroy all displays.\n\n @param allDisplays all displays to be free.\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_NativeDisplayManager_DestroyAllDisplays(
        allDisplays: *mut NativeDisplayManager_DisplaysInfo,
    );
}
extern "C" {
    #[doc = " @brief Create display information by display id.\n\n @param displayId The display id.\n @param displayInfo The pointer to the display information.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful.\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_NativeDisplayManager_CreateDisplayById(
        displayId: u32,
        displayInfo: *mut *mut NativeDisplayManager_DisplayInfo,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Destroy the display information.\n\n @param displayInfo the target display to be free.\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_NativeDisplayManager_DestroyDisplay(
        displayInfo: *mut NativeDisplayManager_DisplayInfo,
    );
}
extern "C" {
    #[doc = " @brief Create a primary display.\n\n @param displayInfo The information of the created display.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful.\n         { @link DISPLAY_MANAGER_ERROR_INVALID_PARAM } If Parameter error.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 14"]
    #[cfg(feature = "api-14")]
    pub fn OH_NativeDisplayManager_CreatePrimaryDisplay(
        displayInfo: *mut *mut NativeDisplayManager_DisplayInfo,
    ) -> NativeDisplayManager_ErrorCode;
}
#[doc = " @brief the callback function type when available area change.\n\n @param displayId The changed display id.\n @since 20"]
#[cfg(feature = "api-20")]
pub type OH_NativeDisplayManager_AvailableAreaChangeCallback =
    ::std::option::Option<unsafe extern "C" fn(displayId: u64)>;
extern "C" {
    #[doc = " @brief Register the callback for available area change listener.\n\n @param availableAreaChangeCallback Available area change callback.\n @param listenerIndex Indicates the pointer to an <b>uint32_t</b> object. used in unregister call.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM } If Parameter illegal.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_RegisterAvailableAreaChangeListener(
        availableAreaChangeCallback: OH_NativeDisplayManager_AvailableAreaChangeCallback,
        listenerIndex: *mut u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Unregister the callback for available area changes listener.\n\n @param listenerIndex The display changed listener index.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM } If Parameter illegal.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_UnregisterAvailableAreaChangeListener(
        listenerIndex: u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Create the available area.\n\n @param displayId The display id.\n @param availableArea Indicates the pointer to an <b>NativeDisplayManager_Rect</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_DEVICE_NOT_SUPPORTED } device not support.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_CreateAvailableArea(
        displayId: u64,
        availableArea: *mut *mut NativeDisplayManager_Rect,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Destroy an <b>NativeDisplayManager_Rect</b> object and reclaims the memory occupied by the object.\n\n @param availableArea Indicates the pointer to an <b>NativeDisplayManager_Rect</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM } If Parameter illegal.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_DestroyAvailableArea(
        availableArea: *mut NativeDisplayManager_Rect,
    ) -> NativeDisplayManager_ErrorCode;
}
#[doc = " @brief the callback function type when display connect.\n\n @param displayId The added display id.\n @since 20"]
#[cfg(feature = "api-20")]
pub type OH_NativeDisplayManager_DisplayAddCallback =
    ::std::option::Option<unsafe extern "C" fn(displayId: u64)>;
extern "C" {
    #[doc = " @brief Register the callback for display connect listener.\n\n @param displayAddCallback display add callback.\n @param listenerIndex Indicates the pointer to an <b>uint32_t</b> object. used in unregister call.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM } If Parameter illegal.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_RegisterDisplayAddListener(
        displayAddCallback: OH_NativeDisplayManager_DisplayAddCallback,
        listenerIndex: *mut u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Unregister the callback for display connect listener.\n\n @param listenerIndex The display add listener index.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM } If Parameter illegal.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_UnregisterDisplayAddListener(
        listenerIndex: u32,
    ) -> NativeDisplayManager_ErrorCode;
}
#[doc = " @brief the callback function type when display disconnect.\n\n @param displayId The removed display id.\n @since 20"]
#[cfg(feature = "api-20")]
pub type OH_NativeDisplayManager_DisplayRemoveCallback =
    ::std::option::Option<unsafe extern "C" fn(displayId: u64)>;
extern "C" {
    #[doc = " @brief Register the callback for display disconnect listener.\n\n @param displayRemoveCallback display remove callback.\n @param listenerIndex Indicates the pointer to an <b>uint32_t</b> object. used in unregister call.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM } If Parameter illegal.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_RegisterDisplayRemoveListener(
        displayRemoveCallback: OH_NativeDisplayManager_DisplayRemoveCallback,
        listenerIndex: *mut u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Unregister the callback for display disconnect listener.\n\n @param listenerIndex The display remove listener index.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_ILLEGAL_PARAM } If Parameter illegal.\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_UnregisterDisplayRemoveListener(
        listenerIndex: u32,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Get the source mode of the device.\n\n @param displayId The display id.\n @param sourceMode Indicates the pointer to an <b>NativeDisplayManager_SourceMode</b> object.\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_GetDisplaySourceMode(
        displayId: u64,
        sourceMode: *mut NativeDisplayManager_SourceMode,
    ) -> NativeDisplayManager_ErrorCode;
}
extern "C" {
    #[doc = " @brief Get the position of the device.\n\n @param displayId The display id.\n @param x The x-coordinate of the screen's top-left corner relative to the primary screen's origin (in px).\n @param y The y-coordinate of the screen's top-left corner relative to the primary screen's origin (in px).\n @return { @link DISPLAY_MANAGER_OK } If the operation is successful\n         { @link DISPLAY_MANAGER_ERROR_SYSTEM_ABNORMAL } If display manager service works abnormally.\n @since 20"]
    #[cfg(feature = "api-20")]
    pub fn OH_NativeDisplayManager_GetDisplayPosition(
        displayId: u64,
        x: *mut i32,
        y: *mut i32,
    ) -> NativeDisplayManager_ErrorCode;
}
