1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#ifndef OHOS_ROSEN_DM_COMMON_H 17e0dac50fSopenharmony_ci#define OHOS_ROSEN_DM_COMMON_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <refbase.h> 20e0dac50fSopenharmony_ci#include <string> 21e0dac50fSopenharmony_ci#include <map> 22e0dac50fSopenharmony_ci 23e0dac50fSopenharmony_cinamespace OHOS { 24e0dac50fSopenharmony_cinamespace Rosen { 25e0dac50fSopenharmony_ciusing DisplayId = uint64_t; 26e0dac50fSopenharmony_ciusing ScreenId = uint64_t; 27e0dac50fSopenharmony_ci 28e0dac50fSopenharmony_cinamespace { 29e0dac50fSopenharmony_ciconstexpr DisplayId DISPLAY_ID_INVALID = -1ULL; 30e0dac50fSopenharmony_ciconstexpr ScreenId SCREEN_ID_INVALID = -1ULL; 31e0dac50fSopenharmony_ciconstexpr ScreenId ERROR_ID_NOT_SYSTEM_APP = -202ULL; 32e0dac50fSopenharmony_ciconstexpr int DOT_PER_INCH = 160; 33e0dac50fSopenharmony_ciconst static std::string DEFAULT_SCREEN_NAME = "buildIn"; 34e0dac50fSopenharmony_ciconstexpr int DOT_PER_INCH_MAXIMUM_VALUE = 1000; 35e0dac50fSopenharmony_ciconstexpr int DOT_PER_INCH_MINIMUM_VALUE = 80; 36e0dac50fSopenharmony_ciconstexpr uint32_t BASELINE_DENSITY = 160; 37e0dac50fSopenharmony_ciconstexpr float INCH_TO_MM = 25.4f; 38e0dac50fSopenharmony_ci} 39e0dac50fSopenharmony_ci 40e0dac50fSopenharmony_ci/** 41e0dac50fSopenharmony_ci * @struct HookInfo. 42e0dac50fSopenharmony_ci * 43e0dac50fSopenharmony_ci * @brief hook diaplayinfo deepending on the window size. 44e0dac50fSopenharmony_ci */ 45e0dac50fSopenharmony_cistruct DMHookInfo { 46e0dac50fSopenharmony_ci uint32_t width_; 47e0dac50fSopenharmony_ci uint32_t height_; 48e0dac50fSopenharmony_ci float_t density_; 49e0dac50fSopenharmony_ci uint32_t rotation_; 50e0dac50fSopenharmony_ci bool enableHookRotation_; 51e0dac50fSopenharmony_ci}; 52e0dac50fSopenharmony_ci 53e0dac50fSopenharmony_ci/** 54e0dac50fSopenharmony_ci * @brief Power state change reason. 55e0dac50fSopenharmony_ci */ 56e0dac50fSopenharmony_cienum class PowerStateChangeReason : uint32_t { 57e0dac50fSopenharmony_ci POWER_BUTTON = 0, 58e0dac50fSopenharmony_ci STATE_CHANGE_REASON_INIT = 0, 59e0dac50fSopenharmony_ci STATE_CHANGE_REASON_TIMEOUT = 1, 60e0dac50fSopenharmony_ci STATE_CHANGE_REASON_RUNNING_LOCK = 2, 61e0dac50fSopenharmony_ci STATE_CHANGE_REASON_BATTERY = 3, 62e0dac50fSopenharmony_ci STATE_CHANGE_REASON_THERMAL = 4, 63e0dac50fSopenharmony_ci STATE_CHANGE_REASON_WORK = 5, 64e0dac50fSopenharmony_ci STATE_CHANGE_REASON_SYSTEM = 6, 65e0dac50fSopenharmony_ci STATE_CHANGE_REASON_APPLICATION = 10, 66e0dac50fSopenharmony_ci STATE_CHANGE_REASON_SETTINGS = 11, 67e0dac50fSopenharmony_ci STATE_CHANGE_REASON_HARD_KEY = 12, 68e0dac50fSopenharmony_ci STATE_CHANGE_REASON_TOUCH = 13, 69e0dac50fSopenharmony_ci STATE_CHANGE_REASON_CABLE = 14, 70e0dac50fSopenharmony_ci STATE_CHANGE_REASON_SENSOR = 15, 71e0dac50fSopenharmony_ci STATE_CHANGE_REASON_LID = 16, 72e0dac50fSopenharmony_ci STATE_CHANGE_REASON_CAMERA = 17, 73e0dac50fSopenharmony_ci STATE_CHANGE_REASON_ACCESS = 18, 74e0dac50fSopenharmony_ci STATE_CHANGE_REASON_RESET = 19, 75e0dac50fSopenharmony_ci STATE_CHANGE_REASON_POWER_KEY = 20, 76e0dac50fSopenharmony_ci STATE_CHANGE_REASON_KEYBOARD = 21, 77e0dac50fSopenharmony_ci STATE_CHANGE_REASON_MOUSE = 22, 78e0dac50fSopenharmony_ci STATE_CHANGE_REASON_DOUBLE_CLICK = 23, 79e0dac50fSopenharmony_ci STATE_CHANGE_REASON_COLLABORATION = 24, 80e0dac50fSopenharmony_ci STATE_CHANGE_REASON_SWITCH = 25, 81e0dac50fSopenharmony_ci STATE_CHANGE_REASON_PRE_BRIGHT = 26, 82e0dac50fSopenharmony_ci STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_SUCCESS = 27, 83e0dac50fSopenharmony_ci STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_ON = 28, 84e0dac50fSopenharmony_ci STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_OFF = 29, 85e0dac50fSopenharmony_ci STATE_CHANGE_REASON_DISPLAY_SWITCH = 30, 86e0dac50fSopenharmony_ci STATE_CHANGE_REASON_PROXIMITY = 32, 87e0dac50fSopenharmony_ci STATE_CHANGE_REASON_AOD_SLIDING = 40, 88e0dac50fSopenharmony_ci STATE_CHANGE_REASON_PEN = 41, 89e0dac50fSopenharmony_ci STATE_CHANGE_REASON_SHUT_DOWN = 42, 90e0dac50fSopenharmony_ci STATE_CHANGE_REASON_REMOTE = 100, 91e0dac50fSopenharmony_ci STATE_CHANGE_REASON_UNKNOWN = 1000, 92e0dac50fSopenharmony_ci}; 93e0dac50fSopenharmony_ci 94e0dac50fSopenharmony_ci/** 95e0dac50fSopenharmony_ci * @brief Enumerates the state of the screen power. 96e0dac50fSopenharmony_ci */ 97e0dac50fSopenharmony_cienum class ScreenPowerState : uint32_t { 98e0dac50fSopenharmony_ci POWER_ON, 99e0dac50fSopenharmony_ci POWER_STAND_BY, 100e0dac50fSopenharmony_ci POWER_SUSPEND, 101e0dac50fSopenharmony_ci POWER_OFF, 102e0dac50fSopenharmony_ci POWER_BUTT, 103e0dac50fSopenharmony_ci INVALID_STATE, 104e0dac50fSopenharmony_ci}; 105e0dac50fSopenharmony_ci 106e0dac50fSopenharmony_cienum class ScreenPropertyChangeType : uint32_t { 107e0dac50fSopenharmony_ci UNSPECIFIED = 0, 108e0dac50fSopenharmony_ci /* Screen connection. */ 109e0dac50fSopenharmony_ci ROTATION_BEGIN, 110e0dac50fSopenharmony_ci /* Screen disconnection. */ 111e0dac50fSopenharmony_ci ROTATION_END, 112e0dac50fSopenharmony_ci /* Only update screen rotation property info to DMS. */ 113e0dac50fSopenharmony_ci ROTATION_UPDATE_PROPERTY_ONLY, 114e0dac50fSopenharmony_ci}; 115e0dac50fSopenharmony_ci 116e0dac50fSopenharmony_ci/** 117e0dac50fSopenharmony_ci * @brief Enumerates the state of the display. 118e0dac50fSopenharmony_ci */ 119e0dac50fSopenharmony_cienum class DisplayState : uint32_t { 120e0dac50fSopenharmony_ci UNKNOWN, 121e0dac50fSopenharmony_ci OFF, 122e0dac50fSopenharmony_ci ON, 123e0dac50fSopenharmony_ci DOZE, 124e0dac50fSopenharmony_ci DOZE_SUSPEND, 125e0dac50fSopenharmony_ci VR, 126e0dac50fSopenharmony_ci ON_SUSPEND, 127e0dac50fSopenharmony_ci}; 128e0dac50fSopenharmony_ci 129e0dac50fSopenharmony_ci/** 130e0dac50fSopenharmony_ci * @brief Enumerates display events. 131e0dac50fSopenharmony_ci */ 132e0dac50fSopenharmony_cienum class DisplayEvent : uint32_t { 133e0dac50fSopenharmony_ci UNLOCK, 134e0dac50fSopenharmony_ci KEYGUARD_DRAWN, 135e0dac50fSopenharmony_ci SCREEN_LOCK_SUSPEND, 136e0dac50fSopenharmony_ci SCREEN_LOCK_OFF, 137e0dac50fSopenharmony_ci SCREEN_LOCK_FINGERPRINT, 138e0dac50fSopenharmony_ci}; 139e0dac50fSopenharmony_ci 140e0dac50fSopenharmony_ci/** 141e0dac50fSopenharmony_ci * @brief Enumerates DMError. 142e0dac50fSopenharmony_ci */ 143e0dac50fSopenharmony_cienum class DMError : int32_t { 144e0dac50fSopenharmony_ci DM_OK = 0, 145e0dac50fSopenharmony_ci DM_ERROR_INIT_DMS_PROXY_LOCKED = 100, 146e0dac50fSopenharmony_ci DM_ERROR_IPC_FAILED = 101, 147e0dac50fSopenharmony_ci DM_ERROR_REMOTE_CREATE_FAILED = 110, 148e0dac50fSopenharmony_ci DM_ERROR_NULLPTR = 120, 149e0dac50fSopenharmony_ci DM_ERROR_INVALID_PARAM = 130, 150e0dac50fSopenharmony_ci DM_ERROR_WRITE_INTERFACE_TOKEN_FAILED = 140, 151e0dac50fSopenharmony_ci DM_ERROR_DEATH_RECIPIENT = 150, 152e0dac50fSopenharmony_ci DM_ERROR_INVALID_MODE_ID = 160, 153e0dac50fSopenharmony_ci DM_ERROR_WRITE_DATA_FAILED = 170, 154e0dac50fSopenharmony_ci DM_ERROR_RENDER_SERVICE_FAILED = 180, 155e0dac50fSopenharmony_ci DM_ERROR_UNREGISTER_AGENT_FAILED = 190, 156e0dac50fSopenharmony_ci DM_ERROR_INVALID_CALLING = 200, 157e0dac50fSopenharmony_ci DM_ERROR_INVALID_PERMISSION = 201, 158e0dac50fSopenharmony_ci DM_ERROR_NOT_SYSTEM_APP = 202, 159e0dac50fSopenharmony_ci DM_ERROR_DEVICE_NOT_SUPPORT = 801, 160e0dac50fSopenharmony_ci DM_ERROR_UNKNOWN = -1, 161e0dac50fSopenharmony_ci}; 162e0dac50fSopenharmony_ci 163e0dac50fSopenharmony_ci/** 164e0dac50fSopenharmony_ci * @brief Enumerates DM error codes. 165e0dac50fSopenharmony_ci */ 166e0dac50fSopenharmony_cienum class DmErrorCode : int32_t { 167e0dac50fSopenharmony_ci DM_OK = 0, 168e0dac50fSopenharmony_ci DM_ERROR_NO_PERMISSION = 201, 169e0dac50fSopenharmony_ci DM_ERROR_NOT_SYSTEM_APP = 202, 170e0dac50fSopenharmony_ci DM_ERROR_INVALID_PARAM = 401, 171e0dac50fSopenharmony_ci DM_ERROR_DEVICE_NOT_SUPPORT = 801, 172e0dac50fSopenharmony_ci DM_ERROR_INVALID_SCREEN = 1400001, 173e0dac50fSopenharmony_ci DM_ERROR_INVALID_CALLING = 1400002, 174e0dac50fSopenharmony_ci DM_ERROR_SYSTEM_INNORMAL = 1400003, 175e0dac50fSopenharmony_ci}; 176e0dac50fSopenharmony_ci 177e0dac50fSopenharmony_ci/** 178e0dac50fSopenharmony_ci * @brief Constructs the mapping of the DM errors to the DM error codes. 179e0dac50fSopenharmony_ci */ 180e0dac50fSopenharmony_ciconst std::map<DMError, DmErrorCode> DM_JS_TO_ERROR_CODE_MAP { 181e0dac50fSopenharmony_ci {DMError::DM_OK, DmErrorCode::DM_OK }, 182e0dac50fSopenharmony_ci {DMError::DM_ERROR_INVALID_PERMISSION, DmErrorCode::DM_ERROR_NO_PERMISSION }, 183e0dac50fSopenharmony_ci {DMError::DM_ERROR_INIT_DMS_PROXY_LOCKED, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 184e0dac50fSopenharmony_ci {DMError::DM_ERROR_IPC_FAILED, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 185e0dac50fSopenharmony_ci {DMError::DM_ERROR_REMOTE_CREATE_FAILED, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 186e0dac50fSopenharmony_ci {DMError::DM_ERROR_NULLPTR, DmErrorCode::DM_ERROR_INVALID_SCREEN }, 187e0dac50fSopenharmony_ci {DMError::DM_ERROR_INVALID_PARAM, DmErrorCode::DM_ERROR_INVALID_PARAM }, 188e0dac50fSopenharmony_ci {DMError::DM_ERROR_WRITE_INTERFACE_TOKEN_FAILED, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 189e0dac50fSopenharmony_ci {DMError::DM_ERROR_DEATH_RECIPIENT, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 190e0dac50fSopenharmony_ci {DMError::DM_ERROR_INVALID_MODE_ID, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 191e0dac50fSopenharmony_ci {DMError::DM_ERROR_WRITE_DATA_FAILED, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 192e0dac50fSopenharmony_ci {DMError::DM_ERROR_RENDER_SERVICE_FAILED, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 193e0dac50fSopenharmony_ci {DMError::DM_ERROR_UNREGISTER_AGENT_FAILED, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 194e0dac50fSopenharmony_ci {DMError::DM_ERROR_INVALID_CALLING, DmErrorCode::DM_ERROR_INVALID_CALLING }, 195e0dac50fSopenharmony_ci {DMError::DM_ERROR_NOT_SYSTEM_APP, DmErrorCode::DM_ERROR_NOT_SYSTEM_APP }, 196e0dac50fSopenharmony_ci {DMError::DM_ERROR_UNKNOWN, DmErrorCode::DM_ERROR_SYSTEM_INNORMAL }, 197e0dac50fSopenharmony_ci {DMError::DM_ERROR_DEVICE_NOT_SUPPORT, DmErrorCode::DM_ERROR_DEVICE_NOT_SUPPORT }, 198e0dac50fSopenharmony_ci}; 199e0dac50fSopenharmony_ci 200e0dac50fSopenharmony_ciusing DisplayStateCallback = std::function<void(DisplayState)>; 201e0dac50fSopenharmony_ci 202e0dac50fSopenharmony_ci/** 203e0dac50fSopenharmony_ci * @brief Enumerates display power events. 204e0dac50fSopenharmony_ci */ 205e0dac50fSopenharmony_cienum class DisplayPowerEvent : uint32_t { 206e0dac50fSopenharmony_ci WAKE_UP, 207e0dac50fSopenharmony_ci SLEEP, 208e0dac50fSopenharmony_ci DISPLAY_ON, 209e0dac50fSopenharmony_ci DISPLAY_OFF, 210e0dac50fSopenharmony_ci DESKTOP_READY, 211e0dac50fSopenharmony_ci DOZE, 212e0dac50fSopenharmony_ci DOZE_SUSPEND, 213e0dac50fSopenharmony_ci DISPLAY_OFF_CANCELED, 214e0dac50fSopenharmony_ci}; 215e0dac50fSopenharmony_ci 216e0dac50fSopenharmony_ci/** 217e0dac50fSopenharmony_ci * @brief Enumerates event status. 218e0dac50fSopenharmony_ci */ 219e0dac50fSopenharmony_cienum class EventStatus : uint32_t { 220e0dac50fSopenharmony_ci BEGIN, 221e0dac50fSopenharmony_ci END, 222e0dac50fSopenharmony_ci}; 223e0dac50fSopenharmony_ci 224e0dac50fSopenharmony_ciclass IDisplayPowerEventListener : public RefBase { 225e0dac50fSopenharmony_cipublic: 226e0dac50fSopenharmony_ci /** 227e0dac50fSopenharmony_ci * @brief Notify when display power event status changed. 228e0dac50fSopenharmony_ci */ 229e0dac50fSopenharmony_ci virtual void OnDisplayPowerEvent(DisplayPowerEvent event, EventStatus status) = 0; 230e0dac50fSopenharmony_ci}; 231e0dac50fSopenharmony_ci 232e0dac50fSopenharmony_ci/** 233e0dac50fSopenharmony_ci * @brief Enumerates screen change events. 234e0dac50fSopenharmony_ci */ 235e0dac50fSopenharmony_cienum class ScreenChangeEvent : uint32_t { 236e0dac50fSopenharmony_ci UPDATE_ORIENTATION, 237e0dac50fSopenharmony_ci UPDATE_ROTATION, 238e0dac50fSopenharmony_ci CHANGE_MODE, 239e0dac50fSopenharmony_ci VIRTUAL_PIXEL_RATIO_CHANGED, 240e0dac50fSopenharmony_ci SCREEN_SWITCH_CHANGE, 241e0dac50fSopenharmony_ci UNKNOWN, 242e0dac50fSopenharmony_ci}; 243e0dac50fSopenharmony_ci 244e0dac50fSopenharmony_ci/** 245e0dac50fSopenharmony_ci * @brief Enumerates screen group change events. 246e0dac50fSopenharmony_ci */ 247e0dac50fSopenharmony_cienum class ScreenGroupChangeEvent : uint32_t { 248e0dac50fSopenharmony_ci ADD_TO_GROUP, 249e0dac50fSopenharmony_ci REMOVE_FROM_GROUP, 250e0dac50fSopenharmony_ci CHANGE_GROUP, 251e0dac50fSopenharmony_ci}; 252e0dac50fSopenharmony_ci 253e0dac50fSopenharmony_ci/** 254e0dac50fSopenharmony_ci * @brief Enumerates rotations. 255e0dac50fSopenharmony_ci */ 256e0dac50fSopenharmony_cienum class Rotation : uint32_t { 257e0dac50fSopenharmony_ci ROTATION_0, 258e0dac50fSopenharmony_ci ROTATION_90, 259e0dac50fSopenharmony_ci ROTATION_180, 260e0dac50fSopenharmony_ci ROTATION_270, 261e0dac50fSopenharmony_ci}; 262e0dac50fSopenharmony_ci 263e0dac50fSopenharmony_ci/** 264e0dac50fSopenharmony_ci * @brief Enumerates orientations. 265e0dac50fSopenharmony_ci */ 266e0dac50fSopenharmony_cienum class Orientation : uint32_t { 267e0dac50fSopenharmony_ci BEGIN = 0, 268e0dac50fSopenharmony_ci UNSPECIFIED = BEGIN, 269e0dac50fSopenharmony_ci VERTICAL = 1, 270e0dac50fSopenharmony_ci HORIZONTAL = 2, 271e0dac50fSopenharmony_ci REVERSE_VERTICAL = 3, 272e0dac50fSopenharmony_ci REVERSE_HORIZONTAL = 4, 273e0dac50fSopenharmony_ci SENSOR = 5, 274e0dac50fSopenharmony_ci SENSOR_VERTICAL = 6, 275e0dac50fSopenharmony_ci SENSOR_HORIZONTAL = 7, 276e0dac50fSopenharmony_ci AUTO_ROTATION_RESTRICTED = 8, 277e0dac50fSopenharmony_ci AUTO_ROTATION_PORTRAIT_RESTRICTED = 9, 278e0dac50fSopenharmony_ci AUTO_ROTATION_LANDSCAPE_RESTRICTED = 10, 279e0dac50fSopenharmony_ci LOCKED = 11, 280e0dac50fSopenharmony_ci FOLLOW_RECENT = 12, 281e0dac50fSopenharmony_ci AUTO_ROTATION_UNSPECIFIED = 13, 282e0dac50fSopenharmony_ci USER_ROTATION_PORTRAIT = 14, 283e0dac50fSopenharmony_ci USER_ROTATION_LANDSCAPE = 15, 284e0dac50fSopenharmony_ci USER_ROTATION_PORTRAIT_INVERTED = 16, 285e0dac50fSopenharmony_ci USER_ROTATION_LANDSCAPE_INVERTED = 17, 286e0dac50fSopenharmony_ci FOLLOW_DESKTOP = 18, 287e0dac50fSopenharmony_ci END = FOLLOW_DESKTOP, 288e0dac50fSopenharmony_ci}; 289e0dac50fSopenharmony_ci 290e0dac50fSopenharmony_ci/** 291e0dac50fSopenharmony_ci * @brief Enumerates display orientations. 292e0dac50fSopenharmony_ci */ 293e0dac50fSopenharmony_cienum class DisplayOrientation : uint32_t { 294e0dac50fSopenharmony_ci PORTRAIT = 0, 295e0dac50fSopenharmony_ci LANDSCAPE, 296e0dac50fSopenharmony_ci PORTRAIT_INVERTED, 297e0dac50fSopenharmony_ci LANDSCAPE_INVERTED, 298e0dac50fSopenharmony_ci UNKNOWN, 299e0dac50fSopenharmony_ci}; 300e0dac50fSopenharmony_ci 301e0dac50fSopenharmony_ci/** 302e0dac50fSopenharmony_ci * @brief Enumerates display change events. 303e0dac50fSopenharmony_ci */ 304e0dac50fSopenharmony_cienum class DisplayChangeEvent : uint32_t { 305e0dac50fSopenharmony_ci UPDATE_ORIENTATION, 306e0dac50fSopenharmony_ci UPDATE_ROTATION, 307e0dac50fSopenharmony_ci DISPLAY_SIZE_CHANGED, 308e0dac50fSopenharmony_ci DISPLAY_FREEZED, 309e0dac50fSopenharmony_ci DISPLAY_UNFREEZED, 310e0dac50fSopenharmony_ci DISPLAY_VIRTUAL_PIXEL_RATIO_CHANGED, 311e0dac50fSopenharmony_ci UPDATE_ORIENTATION_FROM_WINDOW, 312e0dac50fSopenharmony_ci UPDATE_ROTATION_FROM_WINDOW, 313e0dac50fSopenharmony_ci UPDATE_REFRESHRATE, 314e0dac50fSopenharmony_ci UNKNOWN, 315e0dac50fSopenharmony_ci}; 316e0dac50fSopenharmony_ci 317e0dac50fSopenharmony_ci/** 318e0dac50fSopenharmony_ci * @brief Enumerates display state change type. 319e0dac50fSopenharmony_ci */ 320e0dac50fSopenharmony_cienum class DisplayStateChangeType : uint32_t { 321e0dac50fSopenharmony_ci BEFORE_SUSPEND, 322e0dac50fSopenharmony_ci BEFORE_UNLOCK, 323e0dac50fSopenharmony_ci UPDATE_ROTATION, 324e0dac50fSopenharmony_ci UPDATE_ROTATION_FROM_WINDOW, 325e0dac50fSopenharmony_ci SIZE_CHANGE, 326e0dac50fSopenharmony_ci CREATE, 327e0dac50fSopenharmony_ci DESTROY, 328e0dac50fSopenharmony_ci FREEZE, 329e0dac50fSopenharmony_ci UNFREEZE, 330e0dac50fSopenharmony_ci VIRTUAL_PIXEL_RATIO_CHANGE, 331e0dac50fSopenharmony_ci DISPLAY_COMPRESS, 332e0dac50fSopenharmony_ci UPDATE_SCALE, 333e0dac50fSopenharmony_ci UNKNOWN, 334e0dac50fSopenharmony_ci}; 335e0dac50fSopenharmony_ci 336e0dac50fSopenharmony_ci/** 337e0dac50fSopenharmony_ci * @brief Enumerates screen source mode. 338e0dac50fSopenharmony_ci */ 339e0dac50fSopenharmony_cienum class ScreenSourceMode: uint32_t { 340e0dac50fSopenharmony_ci SCREEN_MAIN = 0, 341e0dac50fSopenharmony_ci SCREEN_MIRROR = 1, 342e0dac50fSopenharmony_ci SCREEN_EXTEND = 2, 343e0dac50fSopenharmony_ci SCREEN_ALONE = 3, 344e0dac50fSopenharmony_ci SCREEN_UNIQUE = 4, 345e0dac50fSopenharmony_ci}; 346e0dac50fSopenharmony_ci 347e0dac50fSopenharmony_ci/** 348e0dac50fSopenharmony_ci * @brief Enumerates the fold status. 349e0dac50fSopenharmony_ci */ 350e0dac50fSopenharmony_cienum class FoldStatus: uint32_t { 351e0dac50fSopenharmony_ci UNKNOWN = 0, 352e0dac50fSopenharmony_ci EXPAND = 1, 353e0dac50fSopenharmony_ci FOLDED = 2, 354e0dac50fSopenharmony_ci HALF_FOLD = 3, 355e0dac50fSopenharmony_ci}; 356e0dac50fSopenharmony_ci 357e0dac50fSopenharmony_ci/** 358e0dac50fSopenharmony_ci * @brief Enumerates the fold display mode. 359e0dac50fSopenharmony_ci */ 360e0dac50fSopenharmony_cienum class FoldDisplayMode: uint32_t { 361e0dac50fSopenharmony_ci UNKNOWN = 0, 362e0dac50fSopenharmony_ci FULL = 1, 363e0dac50fSopenharmony_ci MAIN = 2, 364e0dac50fSopenharmony_ci SUB = 3, 365e0dac50fSopenharmony_ci COORDINATION = 4, 366e0dac50fSopenharmony_ci}; 367e0dac50fSopenharmony_ci 368e0dac50fSopenharmony_cienum class DisplayType : uint32_t { 369e0dac50fSopenharmony_ci DEFAULT = 0, 370e0dac50fSopenharmony_ci}; 371e0dac50fSopenharmony_ci 372e0dac50fSopenharmony_cienum class ScreenCombination : uint32_t { 373e0dac50fSopenharmony_ci SCREEN_ALONE, 374e0dac50fSopenharmony_ci SCREEN_EXPAND, 375e0dac50fSopenharmony_ci SCREEN_MIRROR, 376e0dac50fSopenharmony_ci SCREEN_UNIQUE, 377e0dac50fSopenharmony_ci SCREEN_EXTEND, 378e0dac50fSopenharmony_ci SCREEN_MAIN, 379e0dac50fSopenharmony_ci}; 380e0dac50fSopenharmony_ci 381e0dac50fSopenharmony_cienum class MultiScreenMode : uint32_t { 382e0dac50fSopenharmony_ci SCREEN_MIRROR = 0, 383e0dac50fSopenharmony_ci SCREEN_EXTEND = 1, 384e0dac50fSopenharmony_ci}; 385e0dac50fSopenharmony_ci 386e0dac50fSopenharmony_cistruct Point { 387e0dac50fSopenharmony_ci int32_t posX_; 388e0dac50fSopenharmony_ci int32_t posY_; 389e0dac50fSopenharmony_ci Point() : posX_(0), posY_(0) {}; 390e0dac50fSopenharmony_ci Point(int32_t posX, int32_t posY) : posX_(posX), posY_(posY) {}; 391e0dac50fSopenharmony_ci}; 392e0dac50fSopenharmony_ci 393e0dac50fSopenharmony_cistruct SupportedScreenModes : public RefBase { 394e0dac50fSopenharmony_ci uint32_t id_; 395e0dac50fSopenharmony_ci uint32_t width_; 396e0dac50fSopenharmony_ci uint32_t height_; 397e0dac50fSopenharmony_ci uint32_t refreshRate_; 398e0dac50fSopenharmony_ci}; 399e0dac50fSopenharmony_ci 400e0dac50fSopenharmony_cistruct ExpandOption { 401e0dac50fSopenharmony_ci ScreenId screenId_; 402e0dac50fSopenharmony_ci uint32_t startX_; 403e0dac50fSopenharmony_ci uint32_t startY_; 404e0dac50fSopenharmony_ci}; 405e0dac50fSopenharmony_ci 406e0dac50fSopenharmony_cistruct MultiScreenPositionOptions { 407e0dac50fSopenharmony_ci ScreenId screenId_; 408e0dac50fSopenharmony_ci uint32_t startX_; 409e0dac50fSopenharmony_ci uint32_t startY_; 410e0dac50fSopenharmony_ci}; 411e0dac50fSopenharmony_ci 412e0dac50fSopenharmony_ci/** 413e0dac50fSopenharmony_ci * @brief fold display physical resolution 414e0dac50fSopenharmony_ci */ 415e0dac50fSopenharmony_cistruct DisplayPhysicalResolution { 416e0dac50fSopenharmony_ci FoldDisplayMode foldDisplayMode_; 417e0dac50fSopenharmony_ci uint32_t physicalWidth_; 418e0dac50fSopenharmony_ci uint32_t physicalHeight_; 419e0dac50fSopenharmony_ci}; 420e0dac50fSopenharmony_ci 421e0dac50fSopenharmony_ci/** 422e0dac50fSopenharmony_ci * @brief scrollable param 423e0dac50fSopenharmony_ci */ 424e0dac50fSopenharmony_cistruct ScrollableParam { 425e0dac50fSopenharmony_ci std::string velocityScale_; 426e0dac50fSopenharmony_ci std::string friction_; 427e0dac50fSopenharmony_ci}; 428e0dac50fSopenharmony_ci 429e0dac50fSopenharmony_ci/** 430e0dac50fSopenharmony_ci * @brief displayRect 431e0dac50fSopenharmony_ci */ 432e0dac50fSopenharmony_cistruct DMRect { 433e0dac50fSopenharmony_ci int32_t posX_; 434e0dac50fSopenharmony_ci int32_t posY_; 435e0dac50fSopenharmony_ci uint32_t width_; 436e0dac50fSopenharmony_ci uint32_t height_; 437e0dac50fSopenharmony_ci 438e0dac50fSopenharmony_ci bool operator==(const DMRect& a) const 439e0dac50fSopenharmony_ci { 440e0dac50fSopenharmony_ci return (posX_ == a.posX_ && posY_ == a.posY_ && width_ == a.width_ && height_ == a.height_); 441e0dac50fSopenharmony_ci } 442e0dac50fSopenharmony_ci 443e0dac50fSopenharmony_ci bool operator!=(const DMRect& a) const 444e0dac50fSopenharmony_ci { 445e0dac50fSopenharmony_ci return !this->operator==(a); 446e0dac50fSopenharmony_ci } 447e0dac50fSopenharmony_ci 448e0dac50fSopenharmony_ci bool IsUninitializedRect() const 449e0dac50fSopenharmony_ci { 450e0dac50fSopenharmony_ci return (posX_ == 0 && posY_ == 0 && width_ == 0 && height_ == 0); 451e0dac50fSopenharmony_ci } 452e0dac50fSopenharmony_ci 453e0dac50fSopenharmony_ci bool IsInsideOf(const DMRect& a) const 454e0dac50fSopenharmony_ci { 455e0dac50fSopenharmony_ci return (posX_ >= a.posX_ && posY_ >= a.posY_ && 456e0dac50fSopenharmony_ci posX_ + width_ <= a.posX_ + a.width_ && posY_ + height_ <= a.posY_ + a.height_); 457e0dac50fSopenharmony_ci } 458e0dac50fSopenharmony_ci static DMRect NONE() 459e0dac50fSopenharmony_ci { 460e0dac50fSopenharmony_ci return {0, 0, 0, 0}; 461e0dac50fSopenharmony_ci } 462e0dac50fSopenharmony_ci}; 463e0dac50fSopenharmony_ci} 464e0dac50fSopenharmony_ci} 465e0dac50fSopenharmony_ci#endif // OHOS_ROSEN_DM_COMMON_H 466